*** Settings ***
Documentation Perform complex operations on netconf.
...
-... Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+... Copyright (c) 2015,2017 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,
... This library encapsulates a bunch of somewhat complex and commonly used
... netconf operations into reusable keywords to make writing netconf
... test suites easier.
+...
+... TODO: RemoteBash.robot contains logic which could be reused here.
Library Collections
Library DateTime
Library RequestsLibrary
Resource SSHKeywords.robot
Resource TemplatedRequests.robot
Resource Utils.robot
+Resource RemoteBash.robot
*** Variables ***
${TESTTOOL_DEFAULT_JAVA_OPTIONS} -Xmx1G -XX:MaxPermSize=256M -Dorg.apache.sshd.registerBouncyCastle=false
[Documentation] Setup the environment for the other keywords of this Resource to work properly.
${tmp}= BuiltIn.Create_Dictionary
BuiltIn.Set_Suite_Variable ${NetconfKeywords__mounted_device_types} ${tmp}
- BuiltIn.Run_Keyword_If ${create_session_for_templated_requests} TemplatedRequests.Create_Default_Session
+ BuiltIn.Run_Keyword_If ${create_session_for_templated_requests} TemplatedRequests.Create_Default_Session timeout=2
NexusKeywords.Initialize_Artifact_Deployment_And_Usage
Configure_Device_In_Netconf
[Arguments] ${device_name} ${device_type}=default ${device_port}=${FIRST_TESTTOOL_PORT} ${device_address}=${TOOLS_SYSTEM_IP} ${device_user}=admin ${device_password}=topsecret
- ... ${session}=default
+ ... ${device_key}=device-key ${session}=default ${schema_directory}=/tmp/schema ${http_timeout}=${EMPTY} ${http_method}=put
[Documentation] Tell Netconf about the specified device so it can add it into its configuration.
- ${template_as_string}= BuiltIn.Set_Variable {'DEVICE_IP': '${device_address}', 'DEVICE_NAME': '${device_name}', 'DEVICE_PORT': '${device_port}', 'DEVICE_USER': '${device_user}', 'DEVICE_PASSWORD': '${device_password}'}
- TemplatedRequests.Put_As_Xml_Templated ${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${device_type} ${template_as_string} session=${session}
+ ${mapping}= BuiltIn.Create_dictionary DEVICE_IP=${device_address} DEVICE_NAME=${device_name} DEVICE_PORT=${device_port} DEVICE_USER=${device_user} DEVICE_PASSWORD=${device_password}
+ ... DEVICE_KEY=${device_key} SCHEMA_DIRECTORY=${schema_directory}
+ # TODO: Is it possible to use &{kwargs} as a mapping directly?
+ Run Keyword if '${http_method}'=='post' TemplatedRequests.Post_As_Xml_Templated folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${device_type} mapping=${mapping} session=${session} http_timeout=${http_timeout}
+ ... ELSE TemplatedRequests.Put_As_Xml_Templated folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${device_type} mapping=${mapping} session=${session} http_timeout=${http_timeout}
Collections.Set_To_Dictionary ${NetconfKeywords__mounted_device_types} ${device_name} ${device_type}
Count_Netconf_Connectors_For_Device
Builtin.Should_Contain ${device_status} "netconf-node-topology:connection-status": "connected"
Wait_Device_Connected
- [Arguments] ${device_name} ${timeout}=10s ${period}=1s ${session}=default
+ [Arguments] ${device_name} ${timeout}=20s ${period}=1s ${session}=default
[Documentation] 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.
BuiltIn.Wait_Until_Keyword_Succeeds ${timeout} ${period} Check_Device_Connected ${device_name} session=${session}
Remove_Device_From_Netconf
- [Arguments] ${device_name} ${session}=default
+ [Arguments] ${device_name} ${session}=default ${location}=location
[Documentation] Tell Netconf to deconfigure the specified device
${device_type}= Collections.Pop_From_Dictionary ${NetconfKeywords__mounted_device_types} ${device_name}
${template_as_string}= BuiltIn.Set_Variable {'DEVICE_NAME': '${device_name}'}
- TemplatedRequests.Delete_Templated ${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${device_type} ${template_as_string} session=${session}
+ TemplatedRequests.Delete_Templated ${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${device_type} ${template_as_string} session=${session} location=${location}
Wait_Device_Fully_Removed
[Arguments] ${device_name} ${timeout}=10s ${period}=1s ${session}=default
Stop_Testtool
[Documentation] Stop testtool and download its log.
- Utils.Write_Bare_Ctrl_C
+ RemoteBash.Write_Bare_Ctrl_C
SSHLibrary.Read_Until_Prompt
# TODO: Unify with play.py and pcc-mock handling.
# TODO: Maybe this keyword's content shall be moved into SSHUtils and named somewhat like