cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
778
Views
3
Helpful
3
Replies

INVALID_HIERARCHY_PARENT error

gwoythal
Cisco Employee
Cisco Employee

Hi there,

Hi there,

I am trying to use Python to print out the result of a CRUD read in xml format. The following works perfectly:

from ydk.models.cisco_ios_xr import Cisco_IOS_XR_l2vpn_oper as L2VpnOper

def get_xconnect(provider, crud):

    base_obj = L2VpnOper.L2Vpn.Xconnects.Xconnect()

    base_data = crud.read(provider, base_obj)

When I change the value of “base_obj” to the following, a proper read request is sent but I get a timeout (possibly because the resulting object has too much information to populate in the allotted time – is this the case?):

def get_xconnect(provider, crud):

    base_obj = L2VpnOper.L2VpnForwarding.Nodes.Node()

    base_data = crud.read(provider, base_obj)

output:

READ operation initiated

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:a18cbaf9-c8b9-4af9-b775-08ee13c96a62">

  <get>

    <filter type="subtree">

      <l2vpn-forwarding xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-l2vpn-oper">

        <nodes>

          <node/>

        </nodes>

      </l2vpn-forwarding>

    </filter>

  </get>

</rpc>

after some time …

READ operation completed

Traceback (most recent call last):

. . .

. . .

  File "/auto/cafy_dev/cafykit/exec/lib/python3.4/site-packages/ncclient/operations/rpc.py", line 345, in _request

    raise TimeoutExpiredError('ncclient timed out while waiting for an rpc reply.')

ncclient.operations.errors.TimeoutExpiredError: ncclient timed out while waiting for an rpc reply.

I then tried to initialize “base_obj” to a child class of L2VpnForwarding.Nodes.Node to see if the timeout would still occur, but got an INVALID_HIERARCHY_PARENT error instead.

def get_xconnect(provider, crud):

    base_obj = L2VpnOper.L2VpnForwarding.Nodes.Node.L2FibBridgeDomains.L2FibBridgeDomain()

    base_data = crud.read(provider, base_obj)

output:

READ operation initiated

YPYErrorCode.INVALID_HIERARCHY_PARENT

READ operation completed

Traceback (most recent call last):

  File "mpls_te_demo.py", line 588, in <module>

    get_xconnect_output = get_xconnect(provider, crud)

  File "mpls_te_demo.py", line 466, in get_xconnect

    base_data = crud.read(provider, base_obj)

  File "/auto/cafy_dev/cafykit/exec/lib/python3.4/site-packages/ydk/services/crud_service.py", line 150, in read

    payload = self._execute_crud_operation_on_provider(provider, read_filter, 'READ', only_config)

  File "/auto/cafy_dev/cafykit/exec/lib/python3.4/site-packages/ydk/services/crud_service.py", line 166, in _execute_crud_operation_on_provider

    only_config

  File "/auto/cafy_dev/cafykit/exec/lib/python3.4/site-packages/ydk/providers/netconf_provider.py", line 88, in encode

    return self.sp_instance.encode(entity, operation, only_config)

  File "/auto/cafy_dev/cafykit/exec/lib/python3.4/site-packages/ydk/providers/_provider_plugin.py", line 114, in encode

    root = self._encode_read_request(root, entity, operation, only_config)

  File "/auto/cafy_dev/cafykit/exec/lib/python3.4/site-packages/ydk/providers/_provider_plugin.py", line 457, in _encode_read_request

    root = self._create_preamble(entity, root)

  File "/auto/cafy_dev/cafykit/exec/lib/python3.4/site-packages/ydk/providers/_provider_plugin.py", line 494, in _create_preamble

    parent_meta_tuple_list = self._get_parent_tuple_list(entity, entity._meta_info())

  File "/auto/cafy_dev/cafykit/exec/lib/python3.4/site-packages/ydk/providers/_provider_plugin.py", line 590, in _get_parent_tuple_list

    self._raise_parent_hierarchy_error()

  File "/auto/cafy_dev/cafykit/exec/lib/python3.4/site-packages/ydk/providers/_provider_plugin.py", line 520, in _raise_parent_hierarchy_error

    raise YPYServiceProviderError(error_code=YPYErrorCode.INVALID_HIERARCHY_PARENT)

ydk.errors.YPYServiceProviderError: Parent is not set.                     Parent Hierarchy cannot be determined

This has happened with every child class of L2VpnForwarding.Nodes.Node I have tried. I copied straight from the YDK documentation, so I know the class names are correct.

How to deal with this INVALID_HIERARCHY_PARENT error? What’s wrong?

3 Replies 3

saalvare
Cisco Employee
Cisco Employee

You can specify your timeout (default 60s) for the NETCONF service provider.  For instance:

    provider = NetconfServiceProvider(address=10.0.0.1,

                                      port=830,

                                      username='admin',

                                      password='admin',

                                      protocol='ssh',

                                      timeout=120)

Thank you Santiago, this is very helpful for the timeout issue. Any idea about the INVALID_HIERARCHY_PARENT error discussed below it?

ydk.errors.YPYServiceProviderError: Parent is not set.                     Parent Hierarchy cannot be determined

It seems like it complains about missing key value for L2VpnOper.L2VpnForwarding.Nodes.Node. Maybe an issue related to #399.

A related discussion could be found here.

And as suggested in the issue and the discussion, you might need to instantiate L2VpnForwarding.Nodes.Node and append base_obj to the corresponding attribute for this object.