Support costum datatype in capability 63/38963/1
authorshangxdy <shang.xiaodong@zte.com.cn>
Wed, 9 Aug 2017 08:36:33 +0000 (16:36 +0800)
committershangxdy <shang.xiaodong@zte.com.cn>
Wed, 9 Aug 2017 08:36:33 +0000 (16:36 +0800)
Support custom datatype definition in property for capability,
a scenario if following:

VDU:
   type: tosca.nodes.nfv.VDU.Compute
   capabilities:
      virtual_compute:
           properties:
              virtual_memory:
                  virtual_mem_size: 24G
              requested_additional_capabilities: {}
              virtual_cpu:
                  num_virtual_cpu: 4
node_types:
  tosca.nodes.nfv.VDU.Compute:
    derived_from: tosca.nodes.Root
    capabilities:
      virtual_compute:
        type: tosca.capabilities.nfv.VirtualCompute

capability_types:
  tosca.capabilities.nfv.VirtualCompute:
    derived_from: tosca.capabilities.Root
    properties:
      virtual_memory:
        type: tosca.datatypes.nfv.VirtualMemory
      requested_additional_capabilities:
        entry_schema:
          type: tosca.datatypes.nfv.RequestedAdditionalCapability
        required: false
        type: map
      virtual_cpu:
        type: tosca.datatypes.nfv.VirtualCpu

This patch will be submitted to Openstack.

JIAR: PARSER-135

Change-Id: I7b5e3e909e0950de26b37123938fe719004d5417
Signed-off-by: shangxdy <shang.xiaodong@zte.com.cn>
tosca2heat/tosca-parser/toscaparser/capabilities.py
tosca2heat/tosca-parser/toscaparser/entity_template.py

index c23ef72..1708fd8 100644 (file)
@@ -16,10 +16,11 @@ from toscaparser.properties import Property
 class Capability(object):
     '''TOSCA built-in capabilities type.'''
 
-    def __init__(self, name, properties, definition):
+    def __init__(self, name, properties, definition, custom_def):
         self.name = name
         self._properties = properties
         self.definition = definition
+        self.custom_def = custom_def
 
     def get_properties_objects(self):
         '''Return a list of property objects.'''
@@ -30,7 +31,8 @@ class Capability(object):
                 props_def = self.definition.get_properties_def()
                 if props_def and name in props_def:
                     properties.append(Property(name, value,
-                                               props_def[name].schema))
+                                               props_def[name].schema,
+                                               self.custom_def))
         return properties
 
     def get_properties(self):
index cc3d620..d454ac0 100644 (file)
@@ -164,7 +164,7 @@ class EntityTemplate(object):
                     if 'properties' in props and props['properties']:
                         properties.update(props['properties'])
 
-                    cap = Capability(name, properties, c)
+                    cap = Capability(name, properties, c, self.custom_def)
                     capability.append(cap)
         return capability