Skip to content

YDK attempting to send Commit command when 'writable-running' in capabilities #915

@Victorb1030

Description

@Victorb1030

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&amp;also-supported=report-all-tagged</capability>
<capability>urn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&amp;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&amp;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&amp;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&amp;revision=2015-09-11</capability>
<capability>http://cisco.com/ns/cisco-xe-ietf-ospf-deviation?module=cisco-xe-ietf-ospf-deviation&amp;revision=2015-09-11</capability>
<capability>http://cisco.com/ns/cisco-xe-ietf-routing-deviation?module=cisco-xe-ietf-routing-deviation&amp;revision=2016-07-09</capability>
<capability>http://cisco.com/ns/cisco-xe-openconfig-acl-deviation?module=cisco-xe-openconfig-acl-deviation&amp;revision=2017-08-25</capability>
<capability>http://cisco.com/ns/mpls-static/devs?module=common-mpls-static-devs&amp;revision=2015-09-11</capability>
<capability>http://cisco.com/ns/nvo/devs?module=nvo-devs&amp;revision=2015-09-11</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-aaa?module=Cisco-IOS-XE-aaa&amp;revision=2017-09-05</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-acl?module=Cisco-IOS-XE-acl&amp;revision=2017-08-01</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-arp?module=Cisco-IOS-XE-arp&amp;revision=2017-01-16</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-bfd?module=Cisco-IOS-XE-bfd&amp;revision=2017-08-23</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-bfd-oper?module=Cisco-IOS-XE-bfd-oper&amp;revision=2017-02-07</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-bgp?module=Cisco-IOS-XE-bgp&amp;revision=2017-09-18</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-bridge-domain?module=Cisco-IOS-XE-bridge-domain&amp;revision=2017-02-07</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-call-home?module=Cisco-IOS-XE-call-home&amp;revision=2017-02-07</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-cdp?module=Cisco-IOS-XE-cdp&amp;revision=2017-08-16</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-cdp-oper?module=Cisco-IOS-XE-cdp-oper&amp;revision=2017-09-21</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-cef?module=Cisco-IOS-XE-cef&amp;revision=2017-05-19&amp;features=asr1k-dpi</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-common-types?module=Cisco-IOS-XE-common-types&amp;revision=2017-05-05</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-crypto?module=Cisco-IOS-XE-crypto&amp;revision=2017-08-16</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XE-diffserv-target-oper?module=Cisco-IOS-XE-diffserv-target-oper&amp;revision=2017-02-09&amp;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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions