cancel
Showing results for 
Search instead for 
Did you mean: 
cancel

Error when delete config

haoywang
Cisco Employee
Cisco Employee

Hi Experts

I found two errors when try to delete config:

1.

When I tried to delete a neighbor in router BGP, an error occured:

File "/Users/Muyiwhy/Documents/workspace/ydk_bgp/backend/util.py", line 56, in delete

    crud.delete(provider, object)

  File "/Users/Muyiwhy/virtualenv/ydk_new/lib/python2.7/site-packages/ydk/services/crud_service.py", line 87, in delete

    self._execute_crud_operation_on_provider(provider, entity, 'DELETE', False)

  File "/Users/Muyiwhy/virtualenv/ydk_new/lib/python2.7/site-packages/ydk/services/crud_service.py", line 166, in _execute_crud_operation_on_provider

    only_config

  File "/Users/Muyiwhy/virtualenv/ydk_new/lib/python2.7/site-packages/ydk/providers/netconf_provider.py", line 88, in encode

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

  File "/Users/Muyiwhy/virtualenv/ydk_new/lib/python2.7/site-packages/ydk/providers/_provider_plugin.py", line 112, in encode

    root = self._encode_edit_request(root, entity, operation)

  File "/Users/Muyiwhy/virtualenv/ydk_new/lib/python2.7/site-packages/ydk/providers/_provider_plugin.py", line 432, in _encode_edit_request

    root = self._create_preamble(entity, root)

  File "/Users/Muyiwhy/virtualenv/ydk_new/lib/python2.7/site-packages/ydk/providers/_provider_plugin.py", line 496, in _create_preamble

    return self._encode_parents_of_root(root, parent_meta_tuple_list, parent_ns)

  File "/Users/Muyiwhy/virtualenv/ydk_new/lib/python2.7/site-packages/ydk/providers/_provider_plugin.py", line 506, in _encode_parents_of_root

    root = self._encode_items(root, parent, meta_info)

  File "/Users/Muyiwhy/virtualenv/ydk_new/lib/python2.7/site-packages/ydk/providers/_provider_plugin.py", line 542, in _encode_items

    self._encode_empty(root, entity, member)

  File "/Users/Muyiwhy/virtualenv/ydk_new/lib/python2.7/site-packages/ydk/providers/_provider_plugin.py", line 546, in _encode_empty

    entity_ns = entity.i_meta.namespaces

AttributeError: '_MetaInfoClass' object has no attribute 'namespaces'

I've tried XRV6.1.2 with YDK6.1.2 and XRV6.1.3 with YDK6.2.1. The error come up in both enviroment.

I change the code in _provider_plugin.py line 546 to

 

def _encode_empty(self, root, entity, member):
    try:
        entity_ns = entity.i_meta.namespaces

    except:
        entity_ns = None
    empty_ns = _yang_ns._namespaces[member.module_name]
    NSMAP = {}
    if entity_ns is not None and entity_ns != empty_ns:
        NSMAP[None] = empty_ns

    member_elem = etree.SubElement(root, member.name, nsmap=NSMAP)


and the error disappered. I'm not sure if there are any risk in this.

2.

When I try to delete a community-set, an error occured:

File "/Users/Muyiwhy/Documents/workspace/ydk_bgp/backend/util.py", line 56, in delete

    crud.delete(provider, object)

  File "/Users/Muyiwhy/virtualenv/ydk_new/lib/python2.7/site-packages/ydk/services/crud_service.py", line 86, in delete

    MetaService.normalize_meta(provider._get_capabilities(), entity)

  File "/Users/Muyiwhy/virtualenv/ydk_new/lib/python2.7/site-packages/ydk/services/meta_service.py", line 67, in normalize_meta

    deviation_tables = MetaService.get_active_deviation_tables(capabilities, entity)

  File "/Users/Muyiwhy/virtualenv/ydk_new/lib/python2.7/site-packages/ydk/services/meta_service.py", line 87, in get_active_deviation_tables

    module = importlib.import_module('ydk.models._deviate._%s' % pname)

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module

    __import__(name)

This error only happend in XRV6.1.3 with YDK6.2.1, didn't happend in XRV6.1.2 with YDK6.1.2.

I change the code in meta_service.py line 87 to

  def get_active_deviation_tables(cls, capabilities, entity):

   """ Return active deviation tables

        Args:
            cls: First argument for class method
            capabilities: List of capabilities get from provider
            enttiy: An instance of YDk object

        Returns:
            deviation_tables: A dictionary for deviation tables

    """
   active_pmodule_names = _get_active_deviation_module_names(capabilities, entity)

    deviation_tables = {}

   for pname in active_pmodule_names:

       try:

            module = importlib.import_module('ydk.models._deviate._%s' % pname)

            deviation_table = getattr(module, '_deviation_table')

            deviation_tables[pname] = deviation_table

       except:

           continue

    return deviation_tables

and the error disappered.


Is there a way to solve these error without changing the source code?

4 REPLIES 4

xiaoqinz
Enthusiast
Enthusiast

Hi Haoyu,

For the first error, I think it is a bug(maybe a typo, see here), sorry about that.

For the second error:

    This error only happend in XRV6.1.3 with YDK6.2.1, didn't happend in XRV6.1.2 with YDK6.1.2.


I guess YDK6.2.1(I guess you are referring to this pypi package) is missing deviation models advertised in XRV6.1.3, maybe a better way to solve this issue is to generate and install a Python package for XRV6.1.3 with a profile file specific for this device(for example 6.2.1 profile file is for XRV6.2.1, and it uses YANG models published for XRV6.2.1, and is used to generate YDK6.2.1). Once you have a 6.1.3 profile, you could follow steps in ydk-gen repository, generate package then install package for 6.1.3(maybe in a different environment):


ydk-gen $ ./generate.py --bundle profiles/bundle/cisco-ios-xr_6_1_3.json

ydk-gen $ pip install gen-api/python/cisco_ios_xr-bundle/dist/ydk*.gz

Let me know if it works for two errors above.



Thanks for your response. I will test the solution and see if it works for us.

Thanks for your response. I will test the solution and see if it works for us.

Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: