From 039fab688411d774f65d39d9422ccf35b1bbd600 Mon Sep 17 00:00:00 2001 From: Yan Gorelik Date: Wed, 12 Dec 2018 15:08:06 -0800 Subject: [PATCH] Resolved issue #839 --- sdk/python/core/tests/test_non_top_operations.py | 6 +++++- sdk/python/core/ydk/entity_utils/entity_utils.py | 15 ++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/sdk/python/core/tests/test_non_top_operations.py b/sdk/python/core/tests/test_non_top_operations.py index 518ba3f88..dc802407f 100644 --- a/sdk/python/core/tests/test_non_top_operations.py +++ b/sdk/python/core/tests/test_non_top_operations.py @@ -32,7 +32,11 @@ from ydk.ext.types import Empty, EncodingFormat from ydk.filters import YFilter -from ydk.models.ydktest.ydktest_sanity import Runner, ChildIdentity, YdkEnumTest +try: + from ydk.models.ydktest.ydktest_sanity import Runner, ChildIdentity, YdkEnumTest +except: + from ydk.models.ydktest.ydktest_sanity.runner.runner import Runner + from ydk.models.ydktest.ydktest_sanity.ydktest_sanity import ChildIdentity, YdkEnumTest class SanityTest(unittest.TestCase): diff --git a/sdk/python/core/ydk/entity_utils/entity_utils.py b/sdk/python/core/ydk/entity_utils/entity_utils.py index 284bb0b50..3a93d1e9e 100644 --- a/sdk/python/core/ydk/entity_utils/entity_utils.py +++ b/sdk/python/core/ydk/entity_utils/entity_utils.py @@ -72,11 +72,16 @@ def _datanode_to_entity(data_node): yang_ns = importlib.import_module('ydk.models.{}._yang_ns'.format(name)) entity_lookup = yang_ns.__dict__['ENTITY_LOOKUP'] if (module, container) in entity_lookup: -# print("name='{}', module='{}', container='{}', lookup='{}'".format(name, module, container, entity_lookup[(module, container)])) - module_name, class_name = entity_lookup[(module, container)].split('.', 1) -# print("module_name='{}', entity_class='{}'".format(mod, class_name)) - imported_module = importlib.import_module('ydk.models.{}.{}'.format(name, module_name)) - entity = getattr(imported_module, class_name)() + entity_entry = entity_lookup[(module, container)] + name_list = entity_entry.split('.') + class_name = name_list[-1] + module_name = entity_entry.split('.'+class_name)[0] + try: + imported_module = importlib.import_module('ydk.models.{}.{}'.format(name, module_name)) + entity = getattr(imported_module, class_name)() + except: + raise YModelError("Failed instantiate class '{}' from module '{}'".format(class_name, module_name)) + top_entity = entity.clone_ptr() get_entity_from_data_node(data_node, top_entity); return top_entity