CiscoDevNet / ydk-gen

Generate model-driven APIs from YANG models
http://ciscodevnet.github.io/ydk-gen/
Apache License 2.0
135 stars 74 forks source link

YCodeError Cisco_IOS_XR_ipv4_bgp_oper module on ydk-py 0.8.3 #1033

Closed arynair closed 1 year ago

arynair commented 3 years ago

Issue tracker is ONLY used for reporting bugs. Please use the YDK Community for any support issues.

Expected Behavior

The YDK should be able to read all BGP data (top level container) without breaking.

Current Behavior

The script breaks after read with YcodeError

Steps to Reproduce

using docker command for environment ( as per documentation for ydk-pyt 0.8.3) docker run -it ydkdev/ydk-py

ydk 0.8.3 ydk-models-cisco-ios-xe 16.9.3 ydk-models-cisco-ios-xr 6.6.2 ydk-models-cisco-nx-os 9.2.3 ydk-models-ietf 0.1.5.post2 ydk-models-openconfig 0.1.6.post1 ydk-service-gnmi 0.4.0.post1

Your Script

from ydk.providers import NetconfServiceProvider
from ydk.services import CRUDService
import logging
from ydk.models.cisco_ios_xr import Cisco_IOS_XR_ipv4_bgp_oper as xr_ipv4_bgp_oper

#logging
log = logging.getLogger('ydk')
log.setLevel(logging.INFO)
handler = logging.StreamHandler()
log.addHandler(handler)

def bgp_oper_main(device_netconf
        bgp_oper_obj = xr_ipv4_bgp_oper.Bgp()
        bgp_oper_instance_list_obj = xr_ipv4_bgp_oper.Bgp.Instances.Instance()
        bgp_oper_instance_list_obj.instance_name = 'default'
        bgp_oper_obj.instances.instance.append(bgp_oper_instance_list_obj)
        crud_service.read(device_netconf,bgp_oper_obj)

if __name__ == "__main__":

    #creating a CRUD(Create Read, Update , Delete) instance over Netconf. Refer ydk-py documentation for details.    
    crud_service = CRUDService()
    device_netconf=NetconfServiceProvider(address=ssh_ip,
                                                    port=port,
                                                    username=username,
                                                    password=password,
                                                    protocol='ssh')
    bgp_oper_main(device_netconf)

Logs

Enable logging and post the logs below


Executing CRUD read operation on [Cisco-IOS-XR-ipv4-bgp-oper:bgp]
Executing 'get' RPC on [Cisco-IOS-XR-ipv4-bgp-oper:bgp]
============= Sending RPC to device =============
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><get xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <filter><bgp xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-ipv4-bgp-oper">
  <instances>
    <instance>
      <instance-name>default</instance-name>
    </instance>
  </instances>
</bgp></filter>
</get>
</rpc>
Executing CRUD read operation on [Cisco-IOS-XR-ipv4-bgp-oper:bgp]
Executing 'get' RPC on [Cisco-IOS-XR-ipv4-bgp-oper:bgp]
============= Sending RPC to device =============
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><get xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <filter><bgp xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-ipv4-bgp-oper">
  <instances>
    <instance>
      <instance-name>default</instance-name>
    </instance>
  </instances>
</bgp></filter>
</get>
</rpc>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><get xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <filter><bgp xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-ipv4-bgp-oper">
  <instances>
    <instance>
      <instance-name>default</instance-name>
    </instance>
  </instances>
</bgp></filter>
</get>
</rpc>

reply:  ---------------------> snipped
        </update-inbound-filter-process>
            <rt-entries>
              <rt-entry>
                <route-target-lower-bytes>143785</route-target-lower-bytes>
                <route-target-upper-bytes>1</route-target-upper-bytes>
                <af-name>all-address-family</af-name>
                <request-id>0</request-id>
                <rt>
                  <route-target>RT:12713:1</route-target>
                </rt>
                <afs>IPv4 Unicast</afs>
              </rt-entry>
            </rt-entries>
            <update-inbound-error-process>
              <update-error-handling-basic-ebgp>true</update-error-handling-basic-ebgp>
              <update-error-handling-basic-ibgp>true</update-error-handling-basic-ibgp>
              <update-error-handling-extended-ebgp>false</update-error-handling-extended-ebgp>
              <update-error-handling-extended-ibgp>false</update-error-handling-extended-ibgp>
              <update-malformed-message-count>0</update-malformed-message-count>
              <update-malformed-neighbor-count>0</update-malformed-neighbor-count>
              <last-update-malformed-timestamp>
                <seconds>0</seconds>
                <nanoseconds>0</nanoseconds>
              </last-update-malformed-timestamp>
              <last-update-malformed-age>0</last-update-malformed-age>
            </update-inbound-error-process>
            <rpki-summary>
              <servers>0</servers>
              <ipv4roa-nets>0</ipv4roa-nets>
              <ipv4roa-paths>0</ipv4roa-paths>
              <ipv6roa-nets>0</ipv6roa-nets>
              <ipv6roa-paths>0</ipv6roa-paths>
            </rpki-summary>
            <rt-hash-table-entries>
              <rt-hash-table-entry>
                <imp-exp>0</imp-exp>
                <af-name>ipv4-unicast</af-name>
                <rt-hash>2069</rt-hash>
                <route-target-hash-value>2069</route-target-hash-value>
                <rt>
                  <route-target>RT:12713:1</route-target>
                </rt>
              </rt-hash-table-entry>
            </rt-hash-table-entries>
          </instance-active>
        </instance>
      </instances>
    </bgp>
  </data>
</rpc-reply>

Couldn't fetch child entity remote-nh-table in parent /Cisco-IOS-XR-ipv4-bgp-oper:bgp/instances/instance[instance-name='default']/instance-active/vrfs/vrf[vrf-name='TEST-VRF']/afs/af[af-name='ipv4-unicast']!
Traceback (most recent call last):
  File "assurance_master.py", line 331, in <module>
    bgp_oper_main(device_netconf ,device_input)
  File "assurance_master.py", line 112, in bgp_oper_main
    crud_service.read(device_netconf,bgp_oper_obj)
  File "/usr/local/lib/python3.5/dist-packages/ydk/services/crud_service.py", line 65, in read
    read_top_entity = self._crud.read(provider, top_filters)
  File "/usr/lib/python3.5/contextlib.py", line 77, in __exit__
    self.gen.throw(type, value, traceback)
  File "/usr/local/lib/python3.5/dist-packages/ydk/errors/error_handler.py", line 82, in handle_runtime_error
    _raise(_exc)
  File "/usr/local/lib/python3.5/dist-packages/ydk/errors/error_handler.py", line 54, in _raise
    exec("raise exc from None")
  File "<string>", line 1, in <module>
ydk.errors.YCoreError:  Couldn't fetch child entity 'remote-nh-table' in parent /Cisco-IOS-XR-ipv4-bgp-oper:bgp/instances/instance[instance-name='default']/instance-active/vrfs/vrf[vrf-name='TEST-VRF']/afs/af[af-name='ipv4-unicast']

System Information

as generated by docker image

ygorelik commented 3 years ago

Could you please attach full log file.