Create test case about nfv tosca 19/15419/3
authorshangxdy <shang.xiaodong@zte.com.cn>
Sun, 12 Jun 2016 14:45:41 +0000 (22:45 +0800)
committershangxdy <shang.xiaodong@zte.com.cn>
Mon, 13 Jun 2016 02:04:56 +0000 (10:04 +0800)
As a developer;
I want to known the availability of current nfv tosca
definitions about node types, capabilities types and
relationship types.
So i create some test cases to validate it.

JIRA: PARSER-34

Change-Id: Id57e38c066eea1d2090a816f5129aa95de464d32
Signed-off-by: shangxdy <shang.xiaodong@zte.com.cn>
docs/parser_docs/tosca2heat/examples/Simple_RNC.yaml
docs/parser_docs/tosca2heat/examples/Simple_RNC_definition.yaml
tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/Definitions/rnc_definition.yaml [new file with mode: 0644]
tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/Definitions/vRNC.yaml [new file with mode: 0644]
tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/README.txt [new file with mode: 0644]
tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/TOSCA-Metadata/TOSCA.meta [new file with mode: 0644]

index e22a1c8..76fd002 100644 (file)
@@ -1,4 +1,3 @@
-#
 ##    Licensed under the Apache License, Version 2.0 (the "License"); you may
 ##    not use this file except in compliance with the License. You may obtain
 ##    a copy of the License at
@@ -11,7 +10,6 @@
 ##    License for the specific language governing permissions and limitations
 ##    under the License.
 
-# Required TOSCA Definitions version string
 tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
 
 metadata:
@@ -22,12 +20,12 @@ metadata:
 # Optional description of the definitions inside the file.
 description: >
   TOSCA simple profile for RNC
-    1, Compute Node MM, CM, DM, LB...
+    1. Compute Node MM, CM, DM, LB...
       1.1 MM: MaintainModule;
       1.2 CM: Control Module;
       1.3 DM: Data Module;
       1.4 LB: LineCard Module
-    2, Network Node VL and CP
+    2. Network Node VL and CP
 
 imports:
   - Simple_RNC_definition.yaml
@@ -79,7 +77,7 @@ topology_template:
   substitution_mappings:
     node_type: rnc.nodes.VNF
     properties:
-      vnfmtype: TDS-CDMA
+      vnfmtype: UMTS
     requirements:
       virtualLink_VNFM: [ MM_Port_CTRL, virtualLink ]
       virtualLink_EMS: [ MM_Port_EMS, virtualLink ]
@@ -305,7 +303,7 @@ topology_template:
         order: 0
         is_default: true
       requirements:
-        - virtualbinding: MM_Active
+        - virtualBinding: MM_Active
         - virtualLink: EMS_Net
 
     MM_Port_CTRL:
@@ -314,7 +312,7 @@ topology_template:
         order: 1
         is_default: false
       requirements:
-        - virtualbinding: MM_Active
+        - virtualBinding: MM_Active
         - virtualLink: CTRL_Net
 
     MM_Port_EXTERMEDIA:
@@ -323,7 +321,7 @@ topology_template:
         order: 2
         is_default: false
       requirements:
-        - virtualbinding: MM_Active
+        - virtualBinding: MM_Active
         - virtualLink: EXTERMEDIA_Net
 
     CM_Port_CTRL:
@@ -332,7 +330,7 @@ topology_template:
         order: 0
         is_default: true
       requirements:
-        - virtualbinding: CM_Active
+        - virtualBinding: CM_Active
         - virtualLink: CTRL_Net
 
     CM_Port_INTERMEDIA:
@@ -341,7 +339,7 @@ topology_template:
         order: 1
         is_default: false
       requirements:
-        - virtualbinding: CM_Active
+        - virtualBinding: CM_Active
         - virtualLink: INTERMEDIA_Net
 
     DM_Port_CTRL:
@@ -350,7 +348,7 @@ topology_template:
         order: 0
         is_default: true
       requirements:
-        - virtualbinding: DM
+        - virtualBinding: DM
         - virtualLink: CTRL_Net
 
     DM_Port_INTERMEDIA:
@@ -359,7 +357,7 @@ topology_template:
         order: 1
         is_default: false
       requirements:
-        - virtualbinding: DM
+        - virtualBinding: DM
         - virtualLink: INTERMEDIA_Net
 
     LB_Port_CTRL:
@@ -368,7 +366,7 @@ topology_template:
         order: 0
         is_default: true
       requirements:
-        - virtualbinding: LB
+        - virtualBinding: LB
         - virtualLink: CTRL_Net
 
     LB_Port_INTERMEDIA:
@@ -377,7 +375,7 @@ topology_template:
         order: 1
         is_default: false
       requirements:
-        - virtualbinding: LB
+        - virtualBinding: LB
         - virtualLink: INTERMEDIA_Net
 
     LB_Port_EXTERMEDIA:
@@ -386,7 +384,7 @@ topology_template:
         order: 2
         is_default: false
       requirements:
-        - virtualbinding: LB
+        - virtualBinding: LB
         - virtualLink: EXTERMEDIA_Net
 
   # definition of the relationship templates of the topology
@@ -400,19 +398,19 @@ topology_template:
   outputs:
     private_ip_of_MM:
       description: The private IP address of the MM.
-      value: { get_attribute: [ MM_Active, ip_address ] }
+      value: { get_attribute: [ MM_Active, private_address ] }
 
     private_ip_of_CM:
       description: The private IP address of the CM.
-      value: { get_attribute: [ CM_Active, ip_address ] }
+      value: { get_attribute: [ CM_Active, private_address ] }
 
     private_ip_of_DM:
       description: The private IP address of the DM.
-      value: { get_attribute: [ DM, ip_address ] }
+      value: { get_attribute: [ DM, private_address ] }
 
     private_ip_of_LB:
       description: The private IP address of the LB.
-      value: { get_attribute: [ LB, ip_address ] }
+      value: { get_attribute: [ LB, private_address ] }
 
   # definition of logical groups of node templates within the topology
   # To be continue about this section
@@ -423,7 +421,7 @@ topology_template:
          Logical component grouping for anti affinity placement,
          MM_Acitve, MM_Passive, CM_Acitve, CM_Passive, LB must host
          on different host to reduce the impact to each other.
-      members: [ MM_Acitve, MM_Passive, CM_Acitve, CM_Passive, LB ]
+      members: [ MM_Active, MM_Passive, CM_Active, CM_Passive, LB ]
       policies:
         type: tosca.policy.placement.Antilocate
 
@@ -432,19 +430,19 @@ topology_template:
       description: >
         Logical component grouping for affinity placement,
         CM and DM will be host on the same host to get high performence
-      members: [ CM, DM ]
+      members: [ CM_Active, DM ]
       policies:
         type: tosca.policy.placement.Antilocate
 
   policies:
     - AnitAffinityPolicy:
         type: tosca.policies.Placement.Antilocate
-        description: Apply anti-locate placement policy to group 
+        description: Apply anti-locate placement policy to group
         targets: [ AnitAffinityServerGroup ]
-    
+
     - AffinityPolicy:
         type: tosca.policies.Placement.Colocate
-        description: Apply anti-locate placement policy to group 
+        description: Apply anti-locate placement policy to group
         targets: [ AffinityServerGroup ]
 
   #  ServerGroupScaling_DM: # added future
index b3dfd55..7478d98 100644 (file)
@@ -1,4 +1,3 @@
-#
 ##    Licensed under the Apache License, Version 2.0 (the "License"); you may
 ##    not use this file except in compliance with the License. You may obtain
 ##    a copy of the License at
 ##    License for the specific language governing permissions and limitations
 ##    under the License.
 
-# Required TOSCA Definitions version string
 tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
 
-metadata:
-  template_name: tosca_simple_profile_for_nfv_vRNC
-  template_author: opnfv_parser_project_from_zte
-  template_version: tosca_simple_profile_for_nfv_1_0
+#metadata:
+#  template_name: tosca_simple_profile_for_nfv_vRNC
+#  template_author: opnfv_parser_project_from_zte
+#  template_version: tosca_simple_profile_for_nfv_1_0
 
 # Optional description of the definitions inside the file.
 description: >
   NFV TOSCA simple profile for RNC types
-    1, Compute Node MM, CM, DM, LB...
+    1. Compute Node MM, CM, DM, LB...
        1.1 MM: MaintainModule;
        1.2 CM: Control Module;
        1.3 DM: Data Module;
        1.4 LB: LineCard Module.
-    2, Network Node VL and CP
+    2. Network Node VL and CP
 
-# The import section shall be ignored if the value of tosca_definitions_version 
+# The import section shall be ignored if the value of tosca_definitions_version
 # is tosca_simple_profile_for_nfv_1_0_0, otherwise will be needed.
 #imports:
 #  - TOSCA_nfv_definition_1_0.yaml
@@ -41,7 +39,7 @@ node_types:
     properties:
       vnftype:
         type: string
-        description: type of the vnf
+        description: type of the RNC
         default:  UMTS
         required: false
         constraints:
@@ -50,15 +48,15 @@ node_types:
       - virtualLink_VNFM:
           capability: tosca.capabilities.nfv.VirtualLinkable
           relationship: tosca.relationships.nfv.VirtualLinksTo
-          node: tosca.nodes.nfv.VL
+          node: rnc.nodes.VL
       - virtualLink_EMS:
           capability: tosca.capabilities.nfv.VirtualLinkable
           relationship: tosca.relationships.nfv.VirtualLinksTo
-          node: tosca.nodes.nfv.VL
+          node: rnc.nodes.VL
       - virtualLink_TRAFFIC:
           capability: tosca.capabilities.nfv.VirtualLinkable
           relationship: tosca.relationships.nfv.VirtualLinksTo
-          node: tosca.nodes.nfv.VL
+          node: rnc.nodes.VL
 
   rnc.nodes.compute.MM:
     derived_from: tosca.nodes.nfv.VDU
diff --git a/tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/Definitions/rnc_definition.yaml b/tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/Definitions/rnc_definition.yaml
new file mode 100644 (file)
index 0000000..c9d0901
--- /dev/null
@@ -0,0 +1,157 @@
+##    Licensed under the Apache License, Version 2.0 (the "License"); you may
+##    not use this file except in compliance with the License. You may obtain
+##    a copy of the License at
+##
+##         http://www.apache.org/licenses/LICENSE-2.0
+##
+##    Unless required by applicable law or agreed to in writing, software
+##    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+##    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+##    License for the specific language governing permissions and limitations
+##    under the License.
+
+tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
+
+#metadata:
+#  template_name: tosca_simple_profile_for_nfv_vRNC
+#  template_author: opnfv_parser_project_from_zte
+#  template_version: tosca_simple_profile_for_nfv_1_0
+
+# Optional description of the definitions inside the file.
+description: >
+  NFV TOSCA simple profile for RNC types
+    1. Compute Node MM, CM, DM, LB...
+       1.1 MM: MaintainModule;
+       1.2 CM: Control Module;
+       1.3 DM: Data Module;
+       1.4 LB: LineCard Module.
+    2. Network Node VL and CP
+
+# The import section shall be ignored if the value of tosca_definitions_version
+# is tosca_simple_profile_for_nfv_1_0_0, otherwise will be needed.
+
+# list of node type definitions
+node_types:
+  rnc.nodes.VNF:
+    derived_from: tosca.nodes.nfv.VNF
+    properties:
+      vnftype:
+        type: string
+        description: type of the RNC
+        default:  UMTS
+        required: false
+        constraints:
+          - valid_values: [ TDS-CDMA, UMTS, CDMA ]
+    requirements:
+      - virtualLink_VNFM:
+          capability: tosca.capabilities.nfv.VirtualLinkable
+          relationship: tosca.relationships.nfv.VirtualLinksTo
+          node: rnc.nodes.VL
+      - virtualLink_EMS:
+          capability: tosca.capabilities.nfv.VirtualLinkable
+          relationship: tosca.relationships.nfv.VirtualLinksTo
+          node: rnc.nodes.VL
+      - virtualLink_TRAFFIC:
+          capability: tosca.capabilities.nfv.VirtualLinkable
+          relationship: tosca.relationships.nfv.VirtualLinksTo
+          node: rnc.nodes.VL
+
+  rnc.nodes.compute.MM:
+    derived_from: tosca.nodes.nfv.VDU
+    properties:
+      activestatus:
+        type: integer
+        description: 1 for active or 0 for passive
+        constraints:
+            - valid_values: [ 0, 1 ]
+      id:
+        type: string
+        defaule: MM
+        description: >
+          A identifier of this VDU within the scope of the VNFD,
+          including version functional description and other
+          identification information.
+
+  rnc.nodes.compute.CM:
+    derived_from: tosca.nodes.nfv.VDU
+    properties:
+      activestatus:
+        type: integer
+        description: 1 for active or 0 for passive
+        constraints:
+          - valid_values: [ 0, 1 ]
+
+  rnc.nodes.compute.DM:
+    derived_from: tosca.nodes.nfv.VDU
+
+  rnc.nodes.compute.LB:
+    derived_from: tosca.nodes.nfv.VDU
+
+  rnc.nodes.BlockStorage:
+    derived_from: tosca.nodes.BlockStorage
+
+  rnc.nodes.VL:
+    derived_from: tosca.nodes.nfv.VL
+
+  rnc.nodes.CP:
+    derived_from: tosca.nodes.nfv.CP
+
+  rnc.nodes.CP.MM:
+    derived_from: tosca.nodes.nfv.CP
+    # It's ok here because of the weakly validation.
+
+  rnc.nodes.CP.CM:
+    derived_from: tosca.nodes.nfv.CP
+    requirements:
+      - virtualLink:
+          capability: tosca.capabilities.nfv.VirtualLinkable
+          relationship: tosca.relationships.nfv.VirtualLinksTo
+          node: rnc.nodes.VL
+      - virtualBinding:
+          capability: tosca.capabilities.nfv.VirtualBindable
+          relationship: tosca.relationships.nfv.VirtualBindsTo
+          node: rnc.nodes.compute.CM
+
+  rnc.nodes.CP.DM:
+    derived_from: tosca.nodes.nfv.CP
+    requirements:
+      - virtualLink:
+          capability: tosca.capabilities.nfv.VirtualLinkable
+          relationship: tosca.relationships.nfv.VirtualLinksTo
+          node: rnc.nodes.VL
+      - virtualBinding:
+          capability: tosca.capabilities.nfv.VirtualBindable
+          relationship: tosca.relationships.nfv.VirtualBindsTo
+          node: rnc.nodes.compute.DM
+
+  rnc.nodes.CP.LB:
+    derived_from: tosca.nodes.nfv.CP
+    requirements:
+      - virtualLink:
+          capability: tosca.capabilities.nfv.VirtualLinkable
+          relationship: tosca.relationships.nfv.VirtualLinksTo
+          node: rnc.nodes.VL
+      - virtualBinding:
+          capability: tosca.capabilities.nfv.VirtualBindable
+          relationship: tosca.relationships.nfv.VirtualBindsTo
+          node: rnc.nodes.compute.LB
+
+# list of capability type definitions
+capability_types:
+  rnc.capabilities.Container:
+    derived_from: tosca.capabilities.Container
+    properties:
+      swap:
+        type: scalar-unit.size
+        description: swap info
+        required: false
+        default: 0
+        constraints:
+            - greater_or_equal: 0 MB
+      iops:
+        type: integer
+        description: IOPS for disk
+        required: false
+        default: 0
+        constraints:
+          - greater_than: 0
diff --git a/tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/Definitions/vRNC.yaml b/tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/Definitions/vRNC.yaml
new file mode 100644 (file)
index 0000000..2617b4d
--- /dev/null
@@ -0,0 +1,455 @@
+##    Licensed under the Apache License, Version 2.0 (the "License"); you may
+##    not use this file except in compliance with the License. You may obtain
+##    a copy of the License at
+##
+##         http://www.apache.org/licenses/LICENSE-2.0
+##
+##    Unless required by applicable law or agreed to in writing, software
+##    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+##    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+##    License for the specific language governing permissions and limitations
+##    under the License.
+
+tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
+
+metadata:
+  template_name: tosca_simple_profile_for_nfv_vRNC
+  template_author: opnfv_parser_project_from_zte
+  template_version: tosca_simple_profile_for_nfv_1_0
+
+# Optional description of the definitions inside the file.
+description: >
+  TOSCA simple profile for RNC
+    1. Compute Node MM, CM, DM, LB...
+      1.1 MM: MaintainModule;
+      1.2 CM: Control Module;
+      1.3 DM: Data Module;
+      1.4 LB: LineCard Module
+    2. Network Node VL and CP
+
+imports:
+  - rnc_definition.yaml
+
+# list of YAML alias anchors (or macros)
+dsl_definitions:
+  compute_props_os_DEF: &compute_props_os_DEF
+    architecture: x86_64
+    type: Linux
+    distribution: Ubuntu
+    version: 14.10
+
+  compute_props_host_MM: &compute_props_host_MM
+    disk_size: 20 GB
+    num_cpus: 2
+    mem_size: 1024 MB
+
+  compute_props_host_CM: &compute_props_host_CM
+    disk_size: 0 GB
+    num_cpus: 2
+    mem_size: 1024 MB
+
+  compute_props_host_DM: &compute_props_host_DM
+    disk_size: 0 GB
+    num_cpus: 2
+    mem_size: 1024 MB
+
+  compute_props_host_LB: &compute_props_host_LB
+    disk_size: 0 GB
+    num_cpus: 2
+    mem_size: 1024 MB
+
+# topology template definition of the cloud application or service
+topology_template:
+  # a description of the topology template
+  description: >
+    simple RNC template
+
+  inputs:
+    mm_storage_size:
+      type: integer
+      default: 20 GB
+      description: mm additional block storage size
+      constraints:
+        - in_range: [ 1, 200 ]
+
+  substitution_mappings:
+    node_type: rnc.nodes.VNF
+    properties:
+      vnfmtype: UMTS
+    requirements:
+      virtualLink_VNFM: [ MM_Port_CTRL, virtualLink ]
+      virtualLink_EMS: [ MM_Port_EMS, virtualLink ]
+      virtualLink_TRAFFIC: [ LB_Port_EXTERMEDIA, virtualLink ]
+
+  # definition of the node templates of the topology
+  node_templates:
+    MM_Active:
+      type: rnc.nodes.compute.MM
+      properties:
+        activestatus: 1
+        id: MM_Active
+      capabilities:
+        os:
+          properties: *compute_props_os_DEF
+        host:
+          properties: *compute_props_host_MM
+      requirements:
+        - local_storage:
+            node: MM_BlockStorage
+            relationship: Storage_attachesto
+        - high_availability: MM_Passive
+      artifacts:
+        #the VM image of MM
+        vm_image: mm.image
+      interfaces:
+        Standard:
+          create:
+            implementation: mm_install.sh
+          configure:
+            implementation: mm_active_configure.sh
+
+    MM_Passive:
+      type: rnc.nodes.compute.MM
+      properties:
+        activestatus: 0
+        id: MM_Passive
+      capabilities:
+        os:
+          properties: *compute_props_os_DEF
+        host:
+          properties: *compute_props_host_MM
+      requirements:
+        - local_storage:
+            node: MM_BlockStorage
+            relationship: Storage_attachesto
+        - high_availability: MM_Active
+      artifacts:
+        #the VM image of MM
+        vm_image: mm.image
+      interfaces:
+        Standard:
+          create:
+            implementation: mm_install.sh
+          configure:
+            implementation: mm_passvie_configure.sh
+
+    CM_Active:
+      type: rnc.nodes.compute.CM
+      properties:
+        activestatus: 1
+      capabilities:
+        os:
+          properties: *compute_props_os_DEF
+        host:
+          properties: *compute_props_host_CM
+        scalable:
+          properties:
+            min_instances: 1
+            max_instances: 126
+            default_instances: 1
+      requirements:
+        - high_availability: CM_Passive
+      artifacts:
+        #the VM image of CM
+        vm_image: cm.image
+      interfaces:
+        Standard:
+          create:
+            implementation: cm_install.sh
+          configure:
+            implementation: cm_active_configure.sh
+
+    CM_Passive:
+      type: rnc.nodes.compute.CM
+      properties:
+        activestatus: 0
+      capabilities:
+        os:
+          properties: *compute_props_os_DEF
+        host:
+          properties: *compute_props_host_CM
+        scalable:
+          properties:
+            min_instances: 1
+            max_instances: 126
+            default_instances: 1
+      requirements:
+        - high_availability: CM_Active
+      artifacts:
+        #the VM image of CM
+        vm_image: mm.image
+      interfaces:
+        Standard:
+          create:
+            implementation: cm_install.sh
+          configure:
+            implementation: cm_passvie_configure.sh
+
+    DM:
+      type: rnc.nodes.compute.DM
+      capabilities:
+        os:
+          properties: *compute_props_os_DEF
+        host:
+          properties: *compute_props_host_DM
+        scalable:
+          properties:
+            min_instances: 1
+            max_instances: 120
+            default_instances: 1
+      artifacts:
+        vm_image: dm.image
+      interfaces:
+        Standard:
+          create:
+            implementation: dm_install.sh
+          configure:
+            implementation: dm_configure.sh
+
+    LB:
+      type: rnc.nodes.compute.LB
+      capabilities:
+        os:
+          properties: *compute_props_os_DEF
+        host:
+          properties: *compute_props_host_LB
+        scalable:
+          properties:
+            min_instances: 1
+            max_instances: 20
+            default_instances: 1
+      artifacts:
+        #the VM image of LB
+        vm_image: lb.image
+      interfaces:
+        Standard:
+          create:
+            implementation: lb_install.sh
+          configure:
+            implementation: lb_configure.sh
+
+    MM_BlockStorage:
+      type: rnc.nodes.BlockStorage
+      properties:
+        size: { get_input: mm_storage_size }
+      interfaces:
+        Configure:
+          post_configure_target:
+            implementation: default_script.sh
+
+    CTRL_Net:
+      type: rnc.nodes.VL
+      properties:
+        vendor: ZTE
+        cidr: "128.0.0.0/8"
+        network_name: Ctrl_Net
+        network_type: vlan
+        segmentation_id: 110
+        dhcp_enabled: false
+
+    INTERMEDIA_Net:
+      type: rnc.nodes.VL
+      properties:
+        vendor: ZTE
+        cidr: 10.0.0.0/8
+        start_ip: 10.1.0.1
+        end_ip: 10.1.2.254
+        network_name: InterMedia_Net
+        network_type: vlan
+        segmentation_id: 111
+        dhcp_enabled: false
+
+    EXTERMEDIA_Net:
+      type: rnc.nodes.VL
+      properties:
+        vendor: ZTE
+        cidr: 172.1.0.0/16
+        start_ip: 172.1.0.2
+        end_ip: 172.1.2.254
+        gateway_ip: 172.1.0.1
+        network_name: ExterMdedia_Net
+        network_type: vlan
+        segmentation_id: 100
+        dhcp_enabled: false
+
+    EMS_Net:
+      type: rnc.nodes.VL
+      properties:
+        vendor: ZTE
+        cidr: 129.0.0.0/24
+        start_ip: 129.0.0.2
+        end_ip: 129.0.0.64
+        gateway_ip: 129.0.0.1
+        network_name: Ems_Net
+        network_type: vlan
+        segmentation_id: 101
+        dhcp_enabled: false
+
+    MM_Port_EMS:
+      type: rnc.nodes.CP.MM
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualBinding: MM_Active
+        - virtualLink: EMS_Net
+
+    MM_Port_EMS:
+      type: rnc.nodes.CP.MM
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualBinding: MM_Active
+        - virtualLink: EMS_Net
+
+    MM_Port_CTRL:
+      type: rnc.nodes.CP.MM
+      properties:
+        order: 1
+        is_default: false
+      requirements:
+        - virtualBinding: MM_Active
+        - virtualLink: CTRL_Net
+
+    MM_Port_EXTERMEDIA:
+      type: rnc.nodes.CP.MM
+      properties:
+        order: 2
+        is_default: false
+      requirements:
+        - virtualBinding: MM_Active
+        - virtualLink: EXTERMEDIA_Net
+
+    CM_Port_CTRL:
+      type: rnc.nodes.CP.CM
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualBinding: CM_Active
+        - virtualLink: CTRL_Net
+
+    CM_Port_INTERMEDIA:
+      type: rnc.nodes.CP.CM
+      properties:
+        order: 1
+        is_default: false
+      requirements:
+        - virtualBinding: CM_Active
+        - virtualLink: INTERMEDIA_Net
+
+    DM_Port_CTRL:
+      type: rnc.nodes.CP.DM
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualBinding: DM
+        - virtualLink: CTRL_Net
+
+    DM_Port_INTERMEDIA:
+      type: rnc.nodes.CP.DM
+      properties:
+        order: 1
+        is_default: false
+      requirements:
+        - virtualBinding: DM
+        - virtualLink: INTERMEDIA_Net
+
+    LB_Port_CTRL:
+      type: rnc.nodes.CP.LB
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualBinding: LB
+        - virtualLink: CTRL_Net
+
+    LB_Port_INTERMEDIA:
+      type: rnc.nodes.CP.LB
+      properties:
+        order: 1
+        is_default: false
+      requirements:
+        - virtualBinding: LB
+        - virtualLink: INTERMEDIA_Net
+
+    LB_Port_EXTERMEDIA:
+      type: rnc.nodes.CP.LB
+      properties:
+        order: 2
+        is_default: false
+      requirements:
+        - virtualBinding: LB
+        - virtualLink: EXTERMEDIA_Net
+
+  # definition of the relationship templates of the topology
+  relationship_templates:
+    Storage_attachesto:
+      type: tosca.relationships.AttachesTo
+      properties:
+        location: /data_location
+
+  # definition of output parameters for the topology template
+  outputs:
+    private_ip_of_MM:
+      description: The private IP address of the MM.
+      value: { get_attribute: [ MM_Active, private_address ] }
+
+    private_ip_of_CM:
+      description: The private IP address of the CM.
+      value: { get_attribute: [ CM_Active, private_address ] }
+
+    private_ip_of_DM:
+      description: The private IP address of the DM.
+      value: { get_attribute: [ DM, private_address ] }
+
+    private_ip_of_LB:
+      description: The private IP address of the LB.
+      value: { get_attribute: [ LB, private_address ] }
+
+  # definition of logical groups of node templates within the topology
+  # To be continue about this section
+  groups:
+    AnitAffinityServerGroup:
+      type: tosca.groups.Root
+      description: >
+         Logical component grouping for anti affinity placement,
+         MM_Acitve, MM_Passive, CM_Acitve, CM_Passive, LB must host
+         on different host to reduce the impact to each other.
+      members: [ MM_Active, MM_Passive, CM_Active, CM_Passive, LB ]
+
+    AffinityServerGroup:
+      type: tosca.groups.Root
+      description: >
+        Logical component grouping for affinity placement,
+        CM and DM will be host on the same host to get high performence
+      members: [ CM_Active, DM ]
+
+  policies:
+    - AnitAffinityPolicy:
+        type: tosca.policies.Placement.Antilocate
+        description: Apply anti-locate placement policy to group
+        targets: [ AnitAffinityServerGroup ]
+
+    - AffinityPolicy:
+        type: tosca.policies.Placement.Colocate
+        description: Apply anti-locate placement policy to group
+        targets: [ AffinityServerGroup ]
+
+  #  ServerGroupScaling_DM: # added future
+  #    members: [ DM, ]# only one, will be error
+  #    policies:
+  #      - name: MyScaleUpPolicy
+  #      - type: tosca.policy.scale.up | tosca.policy.scale.down
+  #      - rule: fn.utilizaton [ DM ], greater_than: 80
+  #      - trigger: script_dm
+
+  #  ServerGroupScaling_LB: # added future
+  #    members: [ LB, ] # only one, will be error
+  #    policies:
+  #      - name: MyScaleUpPolicy
+  #      - type: tosca.policy.scale.up | tosca.policy.scale.down
+  #      - rule: fn.utilizaton [ LB ], greater_than: 80
+  #      - trigger: script_lb
diff --git a/tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/README.txt b/tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/README.txt
new file mode 100644 (file)
index 0000000..9ea77a4
--- /dev/null
@@ -0,0 +1,22 @@
+README:
+
+This CSAR contains all definitions that are required for deploying a simple
+vRNC(virtual Radio Network Controller) on a cloud.
+
+Entry information for processing through an orchestrator is contained in file
+TOSCA-Metadata/TOSCA.meta. This file provides high-level information such as
+CSAR version or creator of the CSAR. Furthermore, it provides pointers to the
+various TOSCA definitions files that contain the real details.
+The entry 'Entry-Definitions' points to the definitions file which holds the
+service template for the workload.
+'Entry-Definitions' is optional. An orchestrator can also process the contents
+like this:
+1) Read in and process each definitions file.
+2) For each definitions file:
+  2.1) Read in all * type definitions (node types, capability types, etc.) and
+       store them in an internal map
+3) Verify and build dependencies (e.g. inheritance) between all type definitions
+   previously read in. Orchestrator built-in types (e.g. TOSCA base types) are
+   also considered in this step.
+4) Process the actual service template (the file with a node_templates section).
+   Validate using previously obtained type information.
\ No newline at end of file
diff --git a/tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/TOSCA-Metadata/TOSCA.meta b/tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/TOSCA-Metadata/TOSCA.meta
new file mode 100644 (file)
index 0000000..45f9ab2
--- /dev/null
@@ -0,0 +1,4 @@
+TOSCA-Meta-File-Version: 1.0
+CSAR-Version: 1.1
+Created-By: shang.xiaodog@zte.com.cn
+Entry-Definitions: Definitions/vRNC.yaml
\ No newline at end of file