From 3186471145548ed0651180def2e233937a6ce034 Mon Sep 17 00:00:00 2001 From: Vahid Hashemian Date: Mon, 23 Mar 2015 12:42:09 -0700 Subject: [PATCH] Change name-value pairs to name-object pairs in the dictoinary Dictionary returning methods were recently created in Capability, CapabilityTypeDef and StatefuleEntityType classes that return name-value pairs. Update these methods and their references so name-object pairs are returned. Closes-Bug: #1434729 Change-Id: I4d9286e32cb27ffec545af9bd063e214af1197e7 --- translator/toscalib/capabilities.py | 16 +++++++------- .../toscalib/elements/capabilitytype.py | 10 ++++----- .../toscalib/elements/statefulentitytype.py | 8 +++---- translator/toscalib/entity_template.py | 9 ++++---- translator/toscalib/functions.py | 2 +- translator/toscalib/tests/test_toscadef.py | 2 +- translator/toscalib/tests/test_toscatpl.py | 22 ++++++++++--------- 7 files changed, 36 insertions(+), 33 deletions(-) diff --git a/translator/toscalib/capabilities.py b/translator/toscalib/capabilities.py index a202f9c0..518d9eb5 100644 --- a/translator/toscalib/capabilities.py +++ b/translator/toscalib/capabilities.py @@ -27,19 +27,19 @@ class Capability(object): props = self._properties if props: for name, value in props.items(): - for p in self.definition.get_properties_def_objects(): - if p.name == name: - properties.append(Property(name, value, p.schema)) - break + props_def = self.definition.get_properties_def() + if name in props_def: + properties.append(Property(name, value, + props_def[name].schema)) return properties def get_properties(self): - '''Return a dictionary of property name-value pairs.''' - return {prop.name: prop.value + '''Return a dictionary of property name-object pairs.''' + return {prop.name: prop for prop in self.get_properties_objects()} - def get_property(self, name): + def get_property_value(self, name): '''Return the value of a given property name.''' props = self.get_properties() if name in props: - return props[name] + return props[name].value diff --git a/translator/toscalib/elements/capabilitytype.py b/translator/toscalib/elements/capabilitytype.py index 50128faf..5340b39a 100644 --- a/translator/toscalib/elements/capabilitytype.py +++ b/translator/toscalib/elements/capabilitytype.py @@ -44,15 +44,15 @@ class CapabilityTypeDef(StatefulEntityType): return properties def get_properties_def(self): - '''Return a dictionary of property definition objects.''' - return {prop.name: prop.value + '''Return a dictionary of property definition name-object pairs.''' + return {prop.name: prop for prop in self.get_properties_def_objects()} - def get_property_def(self, name): - '''Return the definition of a given property.''' + def get_property_def_value(self, name): + '''Return the definition of a given property name.''' props_def = self.get_properties_def() if name in props_def: - return props_def[name] + return props_def[name].value def _get_parent_capabilities(self): capabilities = {} diff --git a/translator/toscalib/elements/statefulentitytype.py b/translator/toscalib/elements/statefulentitytype.py index 0f1e60d9..4f87ba59 100644 --- a/translator/toscalib/elements/statefulentitytype.py +++ b/translator/toscalib/elements/statefulentitytype.py @@ -51,15 +51,15 @@ class StatefulEntityType(EntityType): return properties def get_properties_def(self): - '''Return a dictionary of property definition objects.''' - return {prop.name: prop.value + '''Return a dictionary of property definition name-object pairs.''' + return {prop.name: prop for prop in self.get_properties_def_objects()} - def get_property_def(self, name): + def get_property_def_value(self, name): '''Return the property definition associated with a given name.''' props_def = self.get_properties_def() if name in props_def: - return props_def[name] + return props_def[name].value @property def attributes_def(self): diff --git a/translator/toscalib/entity_template.py b/translator/toscalib/entity_template.py index e1bf02f4..e62066cb 100644 --- a/translator/toscalib/entity_template.py +++ b/translator/toscalib/entity_template.py @@ -176,10 +176,11 @@ class EntityTemplate(object): properties = self.type_definition.get_value(self.PROPERTIES, self.entity_tpl) or {} for name, value in properties.items(): - for p in self.type_definition.get_properties_def_objects(): - if p.name == name: - prop = Property(name, value, p.schema, self.custom_def) - props.append(prop) + props_def = self.type_definition.get_properties_def() + if name in props_def: + prop = Property(name, value, + props_def[name].schema, self.custom_def) + props.append(prop) for p in self.type_definition.get_properties_def_objects(): if p.default is not None and p.name not in properties.keys(): prop = Property(p.name, p.default, p.schema, self.custom_def) diff --git a/translator/toscalib/functions.py b/translator/toscalib/functions.py index fbd82c35..94631ba1 100644 --- a/translator/toscalib/functions.py +++ b/translator/toscalib/functions.py @@ -261,7 +261,7 @@ class GetProperty(Function): property = None props = cap.get_properties() if property_name in props: - property = props[property_name] + property = props[property_name].value if not property: raise KeyError(_( "Property '{0}' not found in capability '{1}' of node" diff --git a/translator/toscalib/tests/test_toscadef.py b/translator/toscalib/tests/test_toscadef.py index 12df9c11..6614636a 100644 --- a/translator/toscalib/tests/test_toscadef.py +++ b/translator/toscalib/tests/test_toscadef.py @@ -93,7 +93,7 @@ class ToscaDefTest(TestCase): property_def = None for cap in caps: if cap.type == type: - property_def = cap.get_property_def(property) + property_def = cap.get_property_def_value(property) break return property_def diff --git a/translator/toscalib/tests/test_toscatpl.py b/translator/toscalib/tests/test_toscatpl.py index df25b91c..cb7cf555 100644 --- a/translator/toscalib/tests/test_toscatpl.py +++ b/translator/toscalib/tests/test_toscatpl.py @@ -109,22 +109,24 @@ class ToscaTemplateTest(TestCase): self.assertEqual(property.value, 4096) '''Test capability''' self.assertIn('os', [cap.name for cap in tpl.capabilities]) - os_properties_objects = None - os_properties = None - os_type_property = None + os_props_objs = None + os_props = None + os_type_prop = None for capability in tpl.capabilities: if capability.name == 'os': - os_properties_objects = \ + os_props_objs = \ capability.get_properties_objects() - os_properties = capability.get_properties() - os_type_property = capability.get_property('type') + os_props = capability.get_properties() + os_type_prop = capability.get_property_value('type') break self.assertEqual( ['Linux'], - [p.value for p in os_properties_objects - if p.name == 'type']) - self.assertEqual('Linux', os_properties['type']) - self.assertEqual('Linux', os_type_property) + [p.value for p in os_props_objs if p.name == 'type']) + self.assertEqual( + 'Linux', + os_props['type'].value if 'type' in os_props else '') + self.assertEqual('Linux', os_props['type'].value) + self.assertEqual('Linux', os_type_prop) def test_outputs(self): self.assertEqual(