Create translation test code for vRNC 95/20595/2
authorshangxdy <shang.xiaodong@zte.com.cn>
Tue, 23 Aug 2016 08:20:54 +0000 (16:20 +0800)
committerxiaodong shang <shang.xiaodong@zte.com.cn>
Wed, 7 Sep 2016 16:09:23 +0000 (16:09 +0000)
Create translation test code from tosca to hot about vRNC definition.

JIRA:PARSER-50

Change-Id: I04d5e776b40a856f95548f5d751aeb51220856eb
Signed-off-by: shangxdy <shang.xiaodong@zte.com.cn>
(cherry picked from commit 9f460d7068d86dc1320e858ab1d756c88283e6f6)

tosca2heat/heat-translator/translator/tests/data/hot_output/hot_vRNC.yaml [new file with mode: 0644]
tosca2heat/heat-translator/translator/tests/data/vRNC/Definitions/rnc_definition.yaml [new file with mode: 0644]
tosca2heat/heat-translator/translator/tests/data/vRNC/Definitions/vRNC.yaml [new file with mode: 0644]
tosca2heat/heat-translator/translator/tests/data/vRNC/README.txt [new file with mode: 0644]
tosca2heat/heat-translator/translator/tests/data/vRNC/TOSCA-Metadata/TOSCA.meta [new file with mode: 0644]
tosca2heat/heat-translator/translator/tests/test_tosca_hot_translation.py
tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/Definitions/rnc_definition.yaml
tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/Definitions/vRNC.yaml

diff --git a/tosca2heat/heat-translator/translator/tests/data/hot_output/hot_vRNC.yaml b/tosca2heat/heat-translator/translator/tests/data/hot_output/hot_vRNC.yaml
new file mode 100644 (file)
index 0000000..26864a6
--- /dev/null
@@ -0,0 +1,505 @@
+heat_template_version: 2013-05-23
+
+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
+
+parameters:
+  mm_storage_size:
+    type: number
+    description: mm additional block storage size
+    default: 1
+    constraints:
+    - range:
+        max: 200
+        min: 1
+  vendor:
+    type: string
+    description: name of the vendor who generate this VNF
+    default: opnfv_parser_project
+  id:
+    type: string
+    description: ID of this VNF
+    default: UMTS
+  version:
+    type: string
+    description: version of the software for this VNF
+    default: 1.0
+
+resources:
+
+  MM_Active_Host:
+    type: OS::Nova::Server
+    properties:
+      flavor: m1.tiny
+      user_data_format: SOFTWARE_CONFIG
+      image: cirros-0.3.2-x86_64-uec
+      networks:
+      - port: { get_resource: MM_Active_Port_EMS }
+      - port: { get_resource: MM_Active_Port_EXTERMEDIA }
+      - port: { get_resource: MM_Active_Port_CTRL }
+      - port: { get_resource: MM_Active_Port_INTERMEDIA }
+
+  MM_Active_create_config:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config:
+        get_file: ./Scripts/MM/mm_install.sh
+
+  MM_Active_create_deploy:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      config:
+        get_resource: MM_Active_create_config
+      server:
+        get_resource: MM_Active_Host
+
+  MM_Active_configure_config:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config:
+        get_file: ./Scripts/MM/mm_active_configure.sh
+
+  MM_Active_configure_deploy:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      config:
+        get_resource: MM_Active_configure_config
+      server:
+        get_resource: MM_Active_Host
+    depends_on:
+    - MM_Active_create_deploy
+
+  MM_Passive_Host:
+    type: OS::Nova::Server
+    properties:
+      flavor: m1.tiny
+      user_data_format: SOFTWARE_CONFIG
+      image: cirros-0.3.2-x86_64-uec
+      networks:
+      - port: { get_resource: MM_Passive_Port_EMS }
+      - port: { get_resource: MM_Passive_Port_EXTERMEDIA }
+      - port: { get_resource: MM_Passive_Port_CTRL }
+      - port: { get_resource: MM_Passive_Port_INTERMEDIA }
+    depends_on:
+    - MM_Active_Host
+
+  MM_Passive_create_config:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config:
+        get_file: ./Scripts/MM/mm_install.sh
+
+  MM_Passive_create_deploy:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      config:
+        get_resource: MM_Passive_create_config
+      server:
+        get_resource: MM_Passive_Host
+
+  MM_Passive_configure_config:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config:
+        get_file: ./Scripts/MM/mm_passive_configure.sh
+
+  MM_Passive_configure_deploy:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      config:
+        get_resource: MM_Passive_configure_config
+      server:
+        get_resource: MM_Passive_Host
+    depends_on:
+    - MM_Passive_create_deploy
+
+  MM_BlockStorage:
+    type: OS::Cinder::Volume
+    properties:
+      size:
+        get_param: mm_storage_size
+
+  CM_Active_Host:
+    type: OS::Nova::Server
+    properties:
+      flavor: m1.tiny
+      user_data_format: SOFTWARE_CONFIG
+      image: cirros-0.3.2-x86_64-uec
+      networks:
+      - port: { get_resource: CM_Active_Port_CTRL }
+      - port: { get_resource: CM_Active_Port_INTERMEDIA }
+
+  CM_Active_create_config:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config:
+        get_file: ./Scripts/CM/cm_install.sh
+
+  CM_Active_create_deploy:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      config:
+        get_resource: CM_Active_create_config
+      server:
+        get_resource: CM_Active_Host
+
+  CM_Active_configure_config:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config:
+        get_file: ./Scripts/CM/cm_active_configure.sh
+
+  CM_Active_configure_deploy:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      config:
+        get_resource: CM_Active_configure_config
+      server:
+        get_resource: CM_Active_Host
+    depends_on:
+    - CM_Active_create_deploy
+
+  CM_Passive_Host:
+    type: OS::Nova::Server
+    properties:
+      flavor: m1.tiny
+      user_data_format: SOFTWARE_CONFIG
+      image: cirros-0.3.2-x86_64-uec
+      networks:
+      - port: { get_resource: CM_Passive_Port_CTRL }
+      - port: { get_resource: CM_Passive_Port_INTERMEDIA }
+    depends_on:
+    - CM_Active_Host
+
+  CM_Passive_create_config:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config:
+        get_file: ./Scripts/CM/cm_install.sh
+
+  CM_Passive_create_deploy:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      config:
+        get_resource: CM_Passive_create_config
+      server:
+        get_resource: CM_Passive_Host
+
+  CM_Passive_configure_config:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config:
+        get_file: ./Scripts/CM/cm_passive_configure.sh
+
+  CM_Passive_configure_deploy:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      config:
+        get_resource: CM_Passive_configure_config
+      server:
+        get_resource: CM_Passive_Host
+    depends_on:
+    - CM_Passive_create_deploy
+
+  DM_Host:
+    type: OS::Nova::Server
+    properties:
+      flavor: m1.tiny
+      user_data_format: SOFTWARE_CONFIG
+      image: cirros-0.3.2-x86_64-uec
+      networks:
+      - port: { get_resource: DM_Port_CTRL }
+      - port: { get_resource: DM_Port_INTERMEDIA }
+
+  DM_create_config:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config:
+        get_file: ./Scripts/DM/dm_install.sh
+
+  DM_create_deploy:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      config:
+        get_resource: DM_create_config
+      server:
+        get_resource: DM_Host
+
+  DM_configure_config:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config:
+        get_file: ./Scripts/DM/dm_configure.sh
+
+  DM_configure_deploy:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      config:
+        get_resource: DM_configure_config
+      server:
+        get_resource: DM_Host
+    depends_on:
+    - DM_create_deploy
+
+  LB_Host:
+    type: OS::Nova::Server
+    properties:
+      flavor: m1.tiny
+      user_data_format: SOFTWARE_CONFIG
+      image: cirros-0.3.2-x86_64-uec
+      networks:
+      - port: { get_resource: LB_Port_CTRL }
+      - port: { get_resource: LB_Port_INTERMEDIA }
+      - port: { get_resource: LB_Port_EXTERMEDIA }
+
+  LB_create_config:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config:
+        get_file: ./Scripts/LB/lb_install.sh
+
+  LB_create_deploy:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      config:
+        get_resource: LB_create_config
+      server:
+        get_resource: LB_Host
+
+  LB_configure_config:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config:
+        get_file: ./Scripts/LB/lb_configure.sh
+
+  LB_configure_deploy:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      config:
+        get_resource: LB_configure_config
+      server:
+        get_resource: LB_Host
+    depends_on:
+    - LB_create_deploy
+
+  EXTERMEDIA_Net:
+    type: OS::Neutron::Net
+    properties:
+      value_specs:
+        provider:network_type: vxlan
+        provider:segmentation_id: 100
+      name: ExterMdedia_Net
+
+  EMS_Net:
+    type: OS::Neutron::Net
+    properties:
+      value_specs:
+        provider:network_type: vxlan
+        provider:segmentation_id: 101
+      name: Ems_Net
+
+  INTERMEDIA_Net:
+    type: OS::Neutron::Net
+    properties:
+      value_specs:
+        provider:network_type: vxlan
+        provider:segmentation_id: 111
+      name: InterMedia_Net
+
+  CTRL_Net:
+    type: OS::Neutron::Net
+    properties:
+      value_specs:
+        provider:network_type: vxlan
+        provider:segmentation_id: 110
+      name: Ctrl_Net
+
+  EXTERMEDIA_Net_subnet:
+    type: OS::Neutron::Subnet
+    properties:
+      ip_version: 4
+      cidr: 172.1.0.0/16
+      gateway_ip: 172.1.0.1
+      network: { get_resource: EXTERMEDIA_Net }
+      allocation_pools:
+      - start: 172.1.0.2
+        end: 172.1.2.254
+
+  EMS_Net_subnet:
+    type: OS::Neutron::Subnet
+    properties:
+      ip_version: 4
+      cidr: 129.0.0.0/24
+      gateway_ip: 129.0.0.1
+      network: { get_resource: EMS_Net }
+      allocation_pools:
+      - start: 129.0.0.2
+        end: 129.0.0.64
+
+  INTERMEDIA_Net_subnet:
+    type: OS::Neutron::Subnet
+    properties:
+      ip_version: 4
+      cidr: 10.0.0.0/8
+      network: { get_resource: INTERMEDIA_Net }
+      allocation_pools:
+      - start: 10.1.0.1
+        end: 10.1.2.254
+
+  CTRL_Net_subnet:
+    type: OS::Neutron::Subnet
+    properties:
+      ip_version: 4
+      cidr: 128.0.0.0/8
+      network: { get_resource: CTRL_Net }
+
+  MM_Active_Port_EXTERMEDIA:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: EXTERMEDIA_Net }
+
+  MM_Active_Port_EMS:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: EMS_Net }
+
+  MM_Active_Port_INTERMEDIA:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: INTERMEDIA_Net }
+
+  MM_Active_Port_CTRL:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: CTRL_Net }
+
+  MM_Passive_Port_EXTERMEDIA:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: EXTERMEDIA_Net }
+
+  MM_Passive_Port_EMS:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: EMS_Net }
+
+  MM_Passive_Port_INTERMEDIA:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: INTERMEDIA_Net }
+
+  MM_Passive_Port_CTRL:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: CTRL_Net }
+
+  CM_Active_Port_INTERMEDIA:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: INTERMEDIA_Net }
+
+  CM_Active_Port_CTRL:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: CTRL_Net }
+
+  CM_Passive_Port_INTERMEDIA:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: INTERMEDIA_Net }
+
+  CM_Passive_Port_CTRL:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: CTRL_Net }
+
+  DM_Port_INTERMEDIA:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: INTERMEDIA_Net }
+
+  DM_Port_CTRL:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: CTRL_Net }
+
+  LB_Port_EXTERMEDIA:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: EXTERMEDIA_Net }
+
+  LB_Port_INTERMEDIA:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: INTERMEDIA_Net }
+
+  LB_Port_CTRL:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: CTRL_Net }
+
+  AntiAffinityPolicy:
+    type: OS::Nova::ServerGroup
+    properties:
+      name: AntiAffinityPolicy
+      policies:
+      - affinity
+
+  AffinityPolicy:
+    type: OS::Nova::ServerGroup
+    properties:
+      name: AffinityPolicy
+      policies:
+      - affinity
+
+outputs:
+
+  private_ip_of_MM:
+    description: The private IP address of the MM.
+    value:
+      get_attr:
+      - MM_Active_Host
+      - networks
+      - private
+      - 0
+
+  private_ip_of_CM:
+    description: The private IP address of the CM.
+    value:
+      get_attr:
+      - CM_Active_Host
+      - networks
+      - private
+      - 0
+
+  private_ip_of_DM:
+    description: The private IP address of the DM.
+    value:
+      get_attr:
+      - DM_Host
+      - networks
+      - private
+      - 0
+
+  private_ip_of_LB:
+    description: The private IP address of the LB.
+    value:
+      get_attr:
+      - LB_Host
+      - networks
+      - private
+      - 0
diff --git a/tosca2heat/heat-translator/translator/tests/data/vRNC/Definitions/rnc_definition.yaml b/tosca2heat/heat-translator/translator/tests/data/vRNC/Definitions/rnc_definition.yaml
new file mode 100644 (file)
index 0000000..62ed2ad
--- /dev/null
@@ -0,0 +1,160 @@
+##    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
+#  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
+        required: false
+        description: 1 for active or 0 for passive
+        constraints:
+            - valid_values: [ 0, 1 ]
+      id:
+        type: string
+        defaule: MM
+        required: false
+        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
+        required: false
+        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/heat-translator/translator/tests/data/vRNC/Definitions/vRNC.yaml b/tosca2heat/heat-translator/translator/tests/data/vRNC/Definitions/vRNC.yaml
new file mode 100644 (file)
index 0000000..bf57c70
--- /dev/null
@@ -0,0 +1,562 @@
+##    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
+  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: Cirros
+    version: 0.3.2
+
+  compute_props_host_MM: &compute_props_host_MM
+    disk_size: 1 GB
+    num_cpus: 1
+    mem_size: 512 MB
+
+  compute_props_host_CM: &compute_props_host_CM
+    disk_size: 0 GB
+    num_cpus: 1
+    mem_size: 512 MB
+
+  compute_props_host_DM: &compute_props_host_DM
+    disk_size: 0 GB
+    num_cpus: 1
+    mem_size: 512 MB
+
+  compute_props_host_LB: &compute_props_host_LB
+    disk_size: 0 GB
+    num_cpus: 1
+    mem_size: 512 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: 1
+      description: mm additional block storage size
+      constraints:
+        - in_range: [ 1, 200 ]
+    id:
+      type: string
+      description: ID of this VNF
+      default: UMTS
+    vendor:
+      type: string
+      description: name of the vendor who generate this VNF
+      default: opnfv_parser_project
+    version:
+      type: version
+      description: version of the software for this VNF
+      default: 1.0
+
+  substitution_mappings:
+    node_type: rnc.nodes.VNF
+    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: tosca.nodes.SoftwareComponent
+      properties:
+        component_version: 1.0
+      requirements:
+        - host: MM_Active_Host
+      interfaces:
+        Standard:
+          create:
+            implementation: ./Scripts/MM/mm_install.sh
+          configure:
+            implementation: ./Scripts/MM/mm_active_configure.sh
+
+    MM_Active_Host:
+      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
+      artifacts:
+        #the VM image of MM
+        vm_image: mm.image
+
+    MM_Passive:
+      type: tosca.nodes.SoftwareComponent
+      properties:
+        component_version: 1.0
+      requirements:
+        - host: MM_Passive_Host
+      interfaces:
+        Standard:
+          create:
+            implementation: ./Scripts/MM/mm_install.sh
+          configure:
+            implementation: ./Scripts/MM/mm_passive_configure.sh
+
+    MM_Passive_Host:
+      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_Host
+      artifacts:
+        #the VM image of MM
+        vm_image: mm.image
+
+    MM_BlockStorage:
+      type: rnc.nodes.BlockStorage
+      properties:
+        size: { get_input: mm_storage_size }
+      interfaces:
+        Configure:
+          post_configure_target:
+            implementation: ./Scripts/MM/storage_script.sh
+
+    CM_Active:
+      type: tosca.nodes.SoftwareComponent
+      properties:
+        component_version: 1.0
+      requirements:
+        - host: CM_Active_Host
+      interfaces:
+        Standard:
+          create:
+            implementation: ./Scripts/CM/cm_install.sh
+          configure:
+            implementation: ./Scripts/CM/cm_active_configure.sh
+
+    CM_Active_Host:
+      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: 12
+            default_instances: 1
+      artifacts:
+        #the VM image of CM
+        vm_image: cm.image
+
+    CM_Passive:
+      type: tosca.nodes.SoftwareComponent
+      properties:
+        component_version: 1.0
+      requirements:
+        - host: CM_Passive_Host
+      interfaces:
+        Standard:
+          create:
+            implementation: ./Scripts/CM/cm_install.sh
+          configure:
+            implementation: ./Scripts/CM/cm_passive_configure.sh
+
+    CM_Passive_Host:
+      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: 12
+            default_instances: 1
+      requirements:
+        - high_availability: CM_Active_Host
+      artifacts:
+        #the VM image of CM
+        vm_image: mm.image
+
+    DM:
+      type: tosca.nodes.SoftwareComponent
+      properties:
+        component_version: 1.0
+      requirements:
+        - host: DM_Host
+      interfaces:
+        Standard:
+          create:
+            implementation: ./Scripts/DM/dm_install.sh
+          configure:
+            implementation: ./Scripts/DM/dm_configure.sh
+
+    DM_Host:
+      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: 12
+            default_instances: 1
+      artifacts:
+        vm_image: dm.image
+
+    LB:
+      type: tosca.nodes.SoftwareComponent
+      properties:
+        component_version: 1.0
+      requirements:
+        - host: LB_Host
+      interfaces:
+        Standard:
+          create:
+            implementation: ./Scripts/LB/lb_install.sh
+          configure:
+            implementation: ./Scripts/LB/lb_configure.sh
+
+    LB_Host:
+      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: 2
+            default_instances: 1
+      artifacts:
+        #the VM image of LB
+        vm_image: lb.image
+
+    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_Active_Port_EMS:
+      type: rnc.nodes.CP.MM
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualBinding: MM_Active_Host
+        - virtualLink: EMS_Net
+
+    MM_Active_Port_EXTERMEDIA:
+      type: rnc.nodes.CP.MM
+      properties:
+        order: 1
+        is_default: true
+      requirements:
+        - virtualBinding: MM_Active_Host
+        - virtualLink: EXTERMEDIA_Net
+
+    MM_Active_Port_CTRL:
+      type: rnc.nodes.CP.MM
+      properties:
+        order: 2
+        is_default: false
+      requirements:
+        - virtualBinding: MM_Active_Host
+        - virtualLink: CTRL_Net
+
+    MM_Active_Port_INTERMEDIA:
+      type: rnc.nodes.CP.MM
+      properties:
+        order: 3
+        is_default: false
+      requirements:
+        - virtualBinding: MM_Active_Host
+        - virtualLink: INTERMEDIA_Net
+
+    MM_Passive_Port_EMS:
+      type: rnc.nodes.CP.MM
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualBinding: MM_Passive_Host
+        - virtualLink: EMS_Net
+
+    MM_Passive_Port_EXTERMEDIA:
+      type: rnc.nodes.CP.MM
+      properties:
+        order: 1
+        is_default: true
+      requirements:
+        - virtualBinding: MM_Passive_Host
+        - virtualLink: EXTERMEDIA_Net
+
+    MM_Passive_Port_CTRL:
+      type: rnc.nodes.CP.MM
+      properties:
+        order: 2
+        is_default: false
+      requirements:
+        - virtualBinding: MM_Passive_Host
+        - virtualLink: CTRL_Net
+
+    MM_Passive_Port_INTERMEDIA:
+      type: rnc.nodes.CP.MM
+      properties:
+        order: 3
+        is_default: false
+      requirements:
+        - virtualBinding: MM_Passive_Host
+        - virtualLink: INTERMEDIA_Net
+
+    CM_Active_Port_CTRL:
+      type: rnc.nodes.CP.CM
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualBinding: CM_Active_Host
+        - virtualLink: CTRL_Net
+
+    CM_Active_Port_INTERMEDIA:
+      type: rnc.nodes.CP.CM
+      properties:
+        order: 1
+        is_default: false
+      requirements:
+        - virtualBinding: CM_Active_Host
+        - virtualLink: INTERMEDIA_Net
+
+    CM_Passive_Port_CTRL:
+      type: rnc.nodes.CP.CM
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualBinding: CM_Passive_Host
+        - virtualLink: CTRL_Net
+
+    CM_Passive_Port_INTERMEDIA:
+      type: rnc.nodes.CP.CM
+      properties:
+        order: 1
+        is_default: false
+      requirements:
+        - virtualBinding: CM_Passive_Host
+        - virtualLink: INTERMEDIA_Net
+
+    DM_Port_CTRL:
+      type: rnc.nodes.CP.DM
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualBinding: DM_Host
+        - virtualLink: CTRL_Net
+
+    DM_Port_INTERMEDIA:
+      type: rnc.nodes.CP.DM
+      properties:
+        order: 1
+        is_default: false
+      requirements:
+        - virtualBinding: DM_Host
+        - virtualLink: INTERMEDIA_Net
+
+    LB_Port_CTRL:
+      type: rnc.nodes.CP.LB
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualBinding: LB_Host
+        - virtualLink: CTRL_Net
+
+    LB_Port_INTERMEDIA:
+      type: rnc.nodes.CP.LB
+      properties:
+        order: 1
+        is_default: false
+      requirements:
+        - virtualBinding: LB_Host
+        - virtualLink: INTERMEDIA_Net
+
+    LB_Port_EXTERMEDIA:
+      type: rnc.nodes.CP.LB
+      properties:
+        order: 2
+        is_default: false
+      requirements:
+        - virtualBinding: LB_Host
+        - 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_Host, private_address ] }
+
+    private_ip_of_CM:
+      description: The private IP address of the CM.
+      value: { get_attribute: [ CM_Active_Host, private_address ] }
+
+    private_ip_of_DM:
+      description: The private IP address of the DM.
+      value: { get_attribute: [ DM_Host, private_address ] }
+
+    private_ip_of_LB:
+      description: The private IP address of the LB.
+      value: { get_attribute: [ LB_Host, private_address ] }
+
+  # definition of logical groups of node templates within the topology
+  # To be continue about this section
+  groups:
+    AntiAffinityServerGroup:
+      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:
+    - AntiAffinityPolicy:
+        type: tosca.policies.Placement
+        # type: tosca.policies.Placement.Antilocate
+        # Current only placement in openstack community
+        description: Apply anti-locate placement policy to group
+        targets: [ AntiAffinityServerGroup ]
+
+    - AffinityPolicy:
+        type: tosca.policies.Placement
+        # type: tosca.policies.Placement.Colocate
+        # Current only placement in openstack community
+        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/heat-translator/translator/tests/data/vRNC/README.txt b/tosca2heat/heat-translator/translator/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/heat-translator/translator/tests/data/vRNC/TOSCA-Metadata/TOSCA.meta b/tosca2heat/heat-translator/translator/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
index 7a89827..3e69d7a 100644 (file)
@@ -460,6 +460,12 @@ class ToscaHotTranslationTest(TestCase):
         params = {}
         self._test_successful_translation(tosca_file, hot_file, params)
 
+    def test_hot_translate_nfv_vRNC(self):
+        tosca_file = "../tests/data/vRNC/Definitions/vRNC.yaml"
+        hot_file = '../tests/data/hot_output/hot_vRNC.yaml'
+        params = {}
+        self._test_successful_translation(tosca_file, hot_file, params)
+
     def test_hot_translate_policy(self):
         tosca_file = '../tests/data/tosca_policies.yaml'
         hot_file = '../tests/data/hot_output/hot_policies.yaml'
index 8c98fc9..62ed2ad 100644 (file)
@@ -14,7 +14,7 @@ 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_author: opnfv_parser_project
 #  template_version: tosca_simple_profile_for_nfv_1_0
 
 # Optional description of the definitions inside the file.
index a134e3c..15ca91b 100644 (file)
@@ -14,7 +14,7 @@ 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_author: opnfv_parser_project
   template_version: tosca_simple_profile_for_nfv_1_0
 
 # Optional description of the definitions inside the file.
@@ -40,23 +40,23 @@ dsl_definitions:
 
   compute_props_host_MM: &compute_props_host_MM
     disk_size: 1 GB
-    num_cpus: 2
-    mem_size: 64 MB
+    num_cpus: 1
+    mem_size: 512 MB
 
   compute_props_host_CM: &compute_props_host_CM
     disk_size: 0 GB
-    num_cpus: 2
-    mem_size: 64 MB
+    num_cpus: 1
+    mem_size: 512 MB
 
   compute_props_host_DM: &compute_props_host_DM
     disk_size: 0 GB
-    num_cpus: 2
-    mem_size: 64 MB
+    num_cpus: 1
+    mem_size: 512 MB
 
   compute_props_host_LB: &compute_props_host_LB
     disk_size: 0 GB
-    num_cpus: 2
-    mem_size: 64 MB
+    num_cpus: 1
+    mem_size: 512 MB
 
 # topology template definition of the cloud application or service
 topology_template:
@@ -78,7 +78,7 @@ topology_template:
     vendor:
       type: string
       description: name of the vendor who generate this VNF
-      default: ZTE
+      default: opnfv_parser_project
     version:
       type: version
       description: version of the software for this VNF
@@ -102,9 +102,9 @@ topology_template:
       interfaces:
         Standard:
           create:
-            implementation: mm_install.sh
+            implementation: ./Scripts/MM/mm_install.sh
           configure:
-            implementation: mm_active_configure.sh
+            implementation: ./Scripts/MM/mm_active_configure.sh
 
     MM_Active_Host:
       type: rnc.nodes.compute.MM
@@ -133,9 +133,9 @@ topology_template:
       interfaces:
         Standard:
           create:
-            implementation: mm_install.sh
+            implementation: ./Scripts/MM/mm_install.sh
           configure:
-            implementation: mm_passvie_configure.sh
+            implementation: ./Scripts/MM/mm_passvie_configure.sh
 
     MM_Passive_Host:
       type: rnc.nodes.compute.MM
@@ -151,11 +151,20 @@ topology_template:
         - local_storage:
             node: MM_BlockStorage
             relationship: Storage_attachesto
-        - high_availability: MM_Active
+        - high_availability: MM_Active_Host
       artifacts:
         #the VM image of MM
         vm_image: mm.image
 
+    MM_BlockStorage:
+      type: rnc.nodes.BlockStorage
+      properties:
+        size: { get_input: mm_storage_size }
+      interfaces:
+        Configure:
+          post_configure_target:
+            implementation: ./Scripts/MM/storage_script.sh
+
     CM_Active:
       type: tosca.nodes.SoftwareComponent
       properties:
@@ -165,9 +174,9 @@ topology_template:
       interfaces:
         Standard:
           create:
-            implementation: cm_install.sh
+            implementation: ./Scripts/CM/cm_install.sh
           configure:
-            implementation: cm_active_configure.sh
+            implementation: ./Scripts/CM/cm_active_configure.sh
 
     CM_Active_Host:
       type: rnc.nodes.compute.CM
@@ -196,9 +205,9 @@ topology_template:
       interfaces:
         Standard:
           create:
-            implementation: cm_install.sh
+            implementation: ./Scripts/CM/cm_install.sh
           configure:
-            implementation: cm_passvie_configure.sh
+            implementation: ./Scripts/CM/cm_passvie_configure.sh
 
     CM_Passive_Host:
       type: rnc.nodes.compute.CM
@@ -215,7 +224,7 @@ topology_template:
             max_instances: 12
             default_instances: 1
       requirements:
-        - high_availability: CM_Active
+        - high_availability: CM_Active_Host
       artifacts:
         #the VM image of CM
         vm_image: mm.image
@@ -229,9 +238,9 @@ topology_template:
       interfaces:
         Standard:
           create:
-            implementation: dm_install.sh
+            implementation: ./Scripts/DM/dm_install.sh
           configure:
-            implementation: dm_configure.sh
+            implementation: ./Scripts/DM/dm_configure.sh
 
     DM_Host:
       type: rnc.nodes.compute.DM
@@ -257,9 +266,9 @@ topology_template:
       interfaces:
         Standard:
           create:
-            implementation: lb_install.sh
+            implementation: ./Scripts/LB/lb_install.sh
           configure:
-            implementation: lb_configure.sh
+            implementation: ./Scripts/LB/lb_configure.sh
 
     LB_Host:
       type: rnc.nodes.compute.LB
@@ -277,15 +286,6 @@ topology_template:
         #the VM image of LB
         vm_image: lb.image
 
-    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:
@@ -386,7 +386,7 @@ topology_template:
         is_default: true
       requirements:
         - virtualBinding: MM_Passive_Host
-        - virtualLink: EMS_Net
+        - virtualLink: EXTERMEDIA_Net
 
     MM_Passive_Port_CTRL:
       type: rnc.nodes.CP.MM
@@ -404,7 +404,7 @@ topology_template:
         is_default: false
       requirements:
         - virtualBinding: MM_Passive_Host
-        - virtualLink: EXTERMEDIA_Net
+        - virtualLink: INTERMEDIA_Net
 
     CM_Active_Port_CTRL:
       type: rnc.nodes.CP.CM
@@ -515,7 +515,7 @@ topology_template:
   # definition of logical groups of node templates within the topology
   # To be continue about this section
   groups:
-    AnitAffinityServerGroup:
+    AntiAffinityServerGroup:
       type: tosca.groups.Root
       description: >
          Logical component grouping for anti affinity placement,
@@ -531,13 +531,17 @@ topology_template:
       members: [ CM_Active, DM ]
 
   policies:
-    - AnitAffinityPolicy:
+    - AntiAffinityPolicy:
+        # type: tosca.policies.Placement
         type: tosca.policies.Placement.Antilocate
+        # Current only placement in openstack community
         description: Apply anti-locate placement policy to group
-        targets: [ AnitAffinityServerGroup ]
+        targets: [ AntiAffinityServerGroup ]
 
     - AffinityPolicy:
+        #type: tosca.policies.Placement
         type: tosca.policies.Placement.Colocate
+        # Current only placement in openstack community
         description: Apply anti-locate placement policy to group
         targets: [ AffinityServerGroup ]