-
Notifications
You must be signed in to change notification settings - Fork 78
YDK attempting to send Commit command when 'writable-running' in capabilities #915
Copy link
Copy link
Closed
Description
Issue tracker is ONLY used for reporting bugs. Please use the YDK Community for any support issues.
Expected Behavior
Command is sent to OS 16.7.1 ASR920 using netconf-yang and change is saved into writable running config. No commit message is sent requiring candidate support
Current Behavior
Command is sent to OS 16.7.1 ASR920 using netconf-yang and then a 'commit' rpc is sent, returning an error 'candidate support required'
Steps to Reproduce
- Create netconf session
- getconfig for interface using CRUDService
- make change to Native structure Cisco_XE
- send update command with CRUDService to update change
Your Script
#Setting basics for interface first
native = Cisco_IOS_XE_native.Native()
gigabitethernet = native.Interface.GigabitEthernet()
gigabitethernet.description = 'TESTING 1'
#Append interface config back to native object
native.interface.gigabitethernet.append(gigabitethernet)
#native object containing interface config is sent to __set_data
( response_list, return_data ) = self.__set_data( host_dict, native )
#Handle response
...
def __set_data( self, host_dict, set_filter ):
pref = "[YDKUtilXE][__set_data] "
self.log.info( pref + "called" )
netconf = NetconfServiceProvider(
address = host_dict["ip_address"],
port = host_dict["netconf_port"],
username = host_dict["ssh_login"],
password = host_dict["ssh_password"],
timeout = host_dict["ssh_timeout"] * 1000, # convert from seconds to microseconds
protocol = host_dict["access_method"],
)
crud_service = CRUDService()
self.log.info( pref + 'loading with filter: ' + dump.object( set_filter ) )
response_list = None
result = None
try:
result = crud_service.update( netconf, set_filter )
#Handle result and error
...
Logs
Enable logging and post the logs below
00:30:13 - ydk - DEBUG - Trace: Received message (session ):
<?xml version="1.0" encoding="UTF-8"?>
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>urn:ietf:params:netconf:base:1.0</capability>
<capability>urn:ietf:params:netconf:base:1.1</capability>
<capability>urn:ietf:params:netconf:capability:writable-running:1.0</capability>
<capability>urn:ietf:params:netconf:capability:xpath:1.0</capability>
<capability>urn:ietf:params:netconf:capability:validate:1.0</capability>
<capability>urn:ietf:params:netconf:capability:validate:1.1</capability>
<capability>urn:ietf:params:netconf:capability:rollback-on-error:1.0</capability>
<capability>urn:ietf:params:netconf:capability:notification:1.0</capability>
<capability>urn:ietf:params:netconf:capability:interleave:1.0</capability>
<capability>urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-tagged</capability>
<capability>urn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=49fc51c24e918d18edbf5558be6d76d1</capability>
<capability>http://tail-f.com/ns/netconf/actions/1.0</capability>
<capability>http://tail-f.com/ns/netconf/extensions</capability>
<capability>http://cisco.com/ns/cisco-xe-ietf-ip-deviation?module=cisco-xe-ietf-ip-deviation&revision=2016-08-10</capability>
<capability>http://cisco.com/ns/cisco-xe-ietf-ipv4-unicast-routing-deviation?module=cisco-xe-ietf-ipv4-unicast-routing-deviation&revision=2015-09-11</capability>
<capability>http://cisco.com/ns/cisco-xe-ietf-ipv6-unicast-routing-deviation?module=cisco-xe-ietf-ipv6-unicast-routing-deviation&revision=2015-09-11</capability>
<capability>http://cisco.com/ns/cisco-xe-ietf-ospf-deviation?module=cisco-xe-ietf-ospf-deviation&revision=2015-09-11</capability>
<capability>http://cisco.com/ns/cisco-xe-ietf-routing-deviation?module=cisco-xe-ietf-routing-deviation&revision=2016-07-09</capability>
<capability>http://cisco.com/ns/cisco-xe-openconfig-acl-deviation?module=cisco-xe-openconfig-acl-deviation&revision=2017-08-25</capability>
<capability>http://cisco.com/ns/mpls-static/devs?module=common-mpls-static-devs&revision=2015-09-11</capability>
<capability>http://cisco.com/ns/nvo/devs?module=nvo-devs&revision=2015-09-11</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-aaa?module=Cisco-IOS-XE-aaa&revision=2017-09-05</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-acl?module=Cisco-IOS-XE-acl&revision=2017-08-01</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-arp?module=Cisco-IOS-XE-arp&revision=2017-01-16</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-bfd?module=Cisco-IOS-XE-bfd&revision=2017-08-23</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-bfd-oper?module=Cisco-IOS-XE-bfd-oper&revision=2017-02-07</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-bgp?module=Cisco-IOS-XE-bgp&revision=2017-09-18</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-bridge-domain?module=Cisco-IOS-XE-bridge-domain&revision=2017-02-07</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-call-home?module=Cisco-IOS-XE-call-home&revision=2017-02-07</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-cdp?module=Cisco-IOS-XE-cdp&revision=2017-08-16</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-cdp-oper?module=Cisco-IOS-XE-cdp-oper&revision=2017-09-21</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-cef?module=Cisco-IOS-XE-cef&revision=2017-05-19&features=asr1k-dpi</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-common-types?module=Cisco-IOS-XE-common-types&revision=2017-05-05</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-crypto?module=Cisco-IOS-XE-crypto&revision=2017-08-16</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-diffserv-target-oper?module=Cisco-IOS-XE-diffserv-target-oper&revision=2017-02-09&features=target-inline-policy-config</capability>
<capability>http://
00:30:13 - ydk - INFO - ============= Requesting YANG 1.1 capabilities =============
...
00:30:18 - ydk - DEBUG - Encoding the subtree filter request using path API DataNode
00:30:18 - ydk - DEBUG - ydk::path::Codec: Encoding data node '/' to XML formated string
00:30:18 - ydk - DEBUG - ydk::path::Codec: Encoding data node '/Cisco-IOS-XE-native:native' to XML formated string
00:30:18 - ydk - DEBUG - Getting new modules for 'ietf-netconf:edit-config'
00:30:18 - ydk - DEBUG - Loading module 'ietf-netconf', revision ''
00:30:18 - ydk - DEBUG - The module 'ietf-netconf' schema has already been populated in YDK repository
00:30:18 - ydk - DEBUG - Populating schemas for path 'target/running'
00:30:18 - ydk - DEBUG - Looking to populate schemas for 'target/running'
00:30:18 - ydk - DEBUG - Getting new modules for 'target/running'
00:30:18 - ydk - DEBUG - Creating node 'target/running' with value ''
00:30:18 - ydk - DEBUG - Current path: /ietf-netconf:edit-config
00:30:18 - ydk - DEBUG - Top container path: ietf-netconf:edit-config
00:30:18 - ydk - DEBUG - Looking to populate schemas for 'target'
00:30:18 - ydk - DEBUG - Getting new modules for 'target'
00:30:18 - ydk - DEBUG - Getting child schema with path 'target' in /ietf-netconf:edit-config
00:30:18 - ydk - DEBUG - Getting data nodes with path 'target'
00:30:18 - ydk - DEBUG - Creating new data path 'target' in 'edit-config'
00:30:18 - ydk - DEBUG - Creating new data path 'running' with value '' in 'target'
00:30:18 - ydk - DEBUG - Populating schemas for path 'config'
00:30:18 - ydk - DEBUG - Looking to populate schemas for 'config'
00:30:18 - ydk - DEBUG - Getting new modules for 'config'
00:30:18 - ydk - DEBUG - Populating schemas for value '<native xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-native" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" nc:operation="merge">
...
00:30:18 - ydk - DEBUG - Netconf SSH Client: sending rpc
00:30:18 - ydk - DEBUG - Trace: Writing message (session 1206856):
<?xml version="1.0"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="2">
<edit-config>
<target>
<running/>
</target>
<config>
<native xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-native" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" nc:operation="merge">
<interface>
<GigabitEthernet>
<name>0/0/0</name>
<description>TESTING 1</description>
</GigabitEthernet>
</interface>
</native>
</config>
</edit-config>
</rpc>
00:30:18 - ydk - DEBUG - Netconf SSH Client: receiving rpc
00:30:18 - ydk - DEBUG - Trace: Received message (session 1206856):
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="2"><ok/></rpc-reply>
00:30:18 - ydk - DEBUG - Netconf SSH Client: processing reply
00:30:18 - ydk - INFO - ============= Reply RPC received from device =============
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="2">
<ok/>
</rpc-reply>
00:30:18 - ydk - INFO - Executing 'commit' RPC
00:30:18 - ydk - DEBUG - Getting new modules for 'ietf-netconf:commit'
00:30:18 - ydk - DEBUG - Loading module 'ietf-netconf', revision ''
00:30:18 - ydk - DEBUG - The module 'ietf-netconf' schema has already been populated in YDK repository
00:30:18 - ydk - DEBUG - Getting new modules for 'ydk:create'
00:30:18 - ydk - DEBUG - Loading module 'ydk', revision ''
00:30:18 - ydk - DEBUG - The module 'ydk' schema has already been populated in YDK repository
00:30:18 - ydk - DEBUG - Getting new modules for 'ydk:read'
00:30:18 - ydk - DEBUG - Loading module 'ydk', revision ''
00:30:18 - ydk - DEBUG - The module 'ydk' schema has already been populated in YDK repository
00:30:18 - ydk - DEBUG - Getting new modules for 'ydk:update'
00:30:18 - ydk - DEBUG - Loading module 'ydk', revision ''
00:30:18 - ydk - DEBUG - The module 'ydk' schema has already been populated in YDK repository
00:30:18 - ydk - DEBUG - ydk::path::Codec: Encoding data node '/ietf-netconf:commit' to XML formated string
00:30:18 - ydk - INFO - ============= Generated RPC to send to device =============
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><commit xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/>
</rpc>
00:30:18 - ydk - DEBUG - Trace: Missing message-id in rpc.
00:30:18 - ydk - DEBUG - Netconf SSH Client: sending rpc
00:30:18 - ydk - ERROR - Connection error occurred: RPC requires :candidate capability, but the session does not support it.
00:30:18 - ydk - ERROR - Could not send payload <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><commit xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/>
</rpc>
00:30:18 - flask.app - DEBUG - [YDKUtilXE][__set_data] failed to write via ydk crud_service+netconf: Could not send payload
00:30:18 - flask.app - DEBUG - ydk_util returned return_code [408] message [Failed to write via ydk crud_service+netconf to [172.24.0.5]: Could not send payload]:
00:30:18 - flask.app - INFO - ydk_util returned data:
{}
00:30:18 - flask.app - ERROR - returning error: [408] [Failed to write via ydk crud_service+netconf to [172.24.0.5]: Could not send payload] - []
System Information
Python 3.7
Debian Buster
AMD64
lib versions:
ncclient==0.6.2
py==1.8.0
pyang==1.6
ydk==0.8.2
ydk-models-cisco-ios-xe==16.7.1
ydk-models-cisco-ios-xr==6.4.1
ydk-models-ietf==0.1.5.post2
ydk-models-openconfig==0.1.6.post1
Reactions are currently unavailable