Define a TOSCA template for a vRNC(new) 37/4837/2
authorshangxdy <shang.xiaodong@zte.com.cn>
Fri, 18 Dec 2015 08:27:00 +0000 (16:27 +0800)
committershangxdy <shang.xiaodong@zte.com.cn>
Mon, 21 Dec 2015 06:56:48 +0000 (14:56 +0800)
Define a vRNC(an VNF of Radio Network Controller) by using TOSCA template.
Recheck for changed documents architecture.

JIRA:PARSER-7

Change-Id: I3164b262b2cf3e82f0afc6e3663331d886741c96
Signed-off-by: shangxdy <shang.xiaodong@zte.com.cn>
docs/documentation-example.rst
docs/index.rst
docs/tosca2heat/simple_rnc_definition/Simple_RNC.yaml [new file with mode: 0644]
docs/tosca2heat/simple_rnc_definition/Simple_RNC_definition.yaml [new file with mode: 0644]

index ebd80e4..8264732 100644 (file)
@@ -12,8 +12,8 @@ this is the directory structure of the docs/ directory that can be found in the
     ./documentation-example.rst
     ./index.rst
 
-To create your own documentation, Create any number of directories (depending on your need) and place in each of them an index.rst.
-This index file must refence your other rst files.
+To create your own documentation, Create any number of directories (depending on your need) and place
+in each of them an index.rst. This index file must refence your other rst files.
 
 * Here is an example index.rst
 
@@ -46,11 +46,13 @@ The Sphinx Build
 When you push documentation changes to gerrit a jenkins job will create html documentation.
 
 * Verify Jobs
+
 For verify jobs a link to the documentation will show up as a comment in gerrit for you to see the result.
 
 * Merge jobs
 
-Once you are happy with the look of your documentation you can submit the patchset the merge job will copy the output of each documentation directory to http://artifacts.opnfv.org/$project/docs/$name_of_your_folder/index.html
+Once you are happy with the look of your documentation you can submit the patchset the merge job will
+copy the output of each documentation directory to http://artifacts.opnfv.org/$project/docs/$name_of_your_folder/index.html
 
 Here are some quick examples of how to use rst markup
 
index 4e10cf3..aa376d8 100644 (file)
@@ -13,6 +13,8 @@ Contents:
    :maxdepth: 4
 
    documentation-example.rst
+   ./tosca2heat/simple_rnc_definition/Simple_RNC_definition.yaml
+   ./tosca2heat/simple_rnc_definition/Simple_RNC.yaml
 
 Indices and tables
 ==================
diff --git a/docs/tosca2heat/simple_rnc_definition/Simple_RNC.yaml b/docs/tosca2heat/simple_rnc_definition/Simple_RNC.yaml
new file mode 100644 (file)
index 0000000..9f99c57
--- /dev/null
@@ -0,0 +1,419 @@
+# Required TOSCA Definitions version string
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+metadata:
+  template_name: tosca_simple_profile_for_nfv
+  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:
+  - Simple_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: 80 GB
+    iops: 300
+    num_cpus: 8
+    mem_size: 8192 MB
+    swap: 512 MB
+
+  compute_props_host_CM: &compute_props_host_CM
+    disk_size: 0 GB
+    num_cpus: 8
+    mem_size: 8192 MB
+
+  compute_props_host_DM: &compute_props_host_DM
+    disk_size: 0 GB
+    num_cpus: 8
+    mem_size: 8192 MB
+
+  compute_props_host_LB: &compute_props_host_LB
+    disk_size: 0 GB
+    num_cpus: 4
+    mem_size: 8192 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: 40 GB
+      description: mm additional block storage size
+      constraints:
+          - valid_values: [ 10, 20, 40, 80 ]
+
+  substitution_mappings:
+    type: rnc.nodes.VNF
+    properties:
+      vnfmtype: RADIO
+
+  # definition of the node templates of the topology
+  node_templates:
+    MM_Active:
+      type: rnc.nodes.compute.MM
+      properties:
+        activestatus: 1
+      requirements:
+        - host: MM_Active_Host
+        - 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
+      requirements:
+        - host: MM_Passive_Host
+        - 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
+
+    MM_Active_Host:
+      type: rnc.nodes.compute.MM_Host
+      capabilities:
+        os:
+          properties: *compute_props_os_DEF
+        host:
+          properties: *compute_props_host_MM
+      requirements:
+        - local_storage:
+            node: MM_BlockStorage
+            relationship: Storage_attachesto
+      attributes:
+        ip_address: { get_attribute: [ SELF, private_address ] }
+
+    MM_Passive_Host:
+      type: rnc.nodes.compute.MM_Host
+      copy: MM_Active_Host
+
+    CM_Active:
+      type: rnc.nodes.compute.CM
+      properties:
+        activestatus: 1
+      requirements:
+        - host: CM_Active_Host
+        - 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
+      requirements:
+        - host: CM_Passive_Host
+        - 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
+
+    CM_Active_Host:
+      type: rnc.nodes.compute.CM_Host
+      capabilities:
+        os:
+          properties: *compute_props_os_DEF
+        host:
+          properties: *compute_props_host_CM
+        scalable:
+          properties:
+            min_instances: 1
+            max_instances: 126
+            default_instances: 1
+      attributes:
+        ip_address: { get_attribute: [ SELF, private_address ] }
+
+    CM_Passive_Host:
+      type: rnc.nodes.compute.MM_Host
+      copy: CM_Active_Host
+
+    DM:
+      type: rnc.nodes.compute.DM
+      requirements:
+        - host: DM_Host
+      artifacts:
+        vm_image: dm.image
+      interfaces:
+        Standard:
+          create:
+            implementation: dm_install.sh
+          configure:
+            implementation: dm_configure.sh
+
+    DM_Host:
+      type: rnc.nodes.compute.DM_Host
+      capabilities:
+        os:
+          properties: *compute_props_os_DEF
+        host:
+          properties: *compute_props_host_DM
+        scalable:
+          properties:
+            min_instances: 1
+            max_instances: 120
+            default_instances: 1
+      attributes:
+        ip_address: { get_attribute: [ SELF, private_address ] }
+
+    LB:
+      type: rnc.nodes.compute.LB
+      requirements:
+        - host: LB_Host
+      artifacts:
+        #the VM image of LB
+        vm_image: lb.image
+      interfaces:
+        Standard:
+          create:
+            implementation: lb_install.sh
+          configure:
+            implementation: lb_configure.sh
+
+    LB_Host:
+      type: rnc.nodes.compute.LB_Host
+      capabilities:
+        os:
+          properties: *compute_props_os_DEF
+        host:
+          properties: *compute_props_host_LB
+        scalable:
+          properties:
+            min_instances: 1
+            max_instances: 20
+            default_instances: 1
+      attributes:
+        ip_address: { get_attribute: [ SELF, private_address ] }
+
+    MM_BlockStorage:
+      type: rnc.nodes.BlockStorage
+      properties:
+        size: { get_input: mm_storage_size }
+      interfaces:
+        Configure:
+          post_configure_target:
+            implementation: default_script.sh
+
+    CTRL_NetWork:
+      type: rnc.nodes.VL
+      properties:
+        vendor: "zte"
+        cidr: "128.0.0.0/8"
+        network_name: net1
+        dhcp_enabled: false
+
+    INTERMEDIA_NetWork:
+      type: rnc.nodes.VL
+      properties:
+        vendor: "zte"
+        cidr: "10.0.0.0/8"
+        network_name: net3
+        dhcp_enabled: true
+
+    EXTERMEDIA_NetWork:
+      type: rnc.nodes.VL
+      properties:
+        vendor: "zte"
+        cidr: "172.1.0.0/20"
+        network_name: net2
+        dhcp_enabled: true
+
+    EMS_NetWork:
+      type: rnc.nodes.VL
+      properties:
+        vendor: "zte"
+        cidr: "129.0.0.0/8"
+        network_name: net2
+        dhcp_enabled: true
+
+    MM_Port_EMS:
+      type: rnc.nodes.CP
+      properties:
+        order: 1
+        is_default: true
+      requirements:
+        - virtualbinding: MM_Active
+        - virtualLink: EMS_NetWork
+
+    MM_Port_CTRL:
+      type: rnc.nodes.CP
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualbinding: MM_Active
+        - virtualLink: CTRL_NetWork
+
+    MM_Port_EXTERMEDIA:
+      type: rnc.nodes.CP
+      properties:
+        order: 2
+        is_default: true
+      requirements:
+        - virtualbinding: MM_Active
+        - virtualLink: EXTERMEDIA_NetWork
+
+    CM_Port_CTRL:
+      type: rnc.nodes.CP
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualbinding: CM_Active
+        - virtualLink: CTRL_NetWork
+
+    CM_Port_INTERMEDIA:
+      type: rnc.nodes.CP
+      properties:
+        order: 1
+        is_default: false
+      requirements:
+        - virtualbinding: CM_Active
+        - virtualLink: INTERMEDIA_NetWork
+
+    DM_Port_CTRL:
+      type: rnc.nodes.CP
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualbinding: DM
+        - virtualLink: CTRL_NetWork
+
+    DM_Port_INTERMEDIA:
+      type: rnc.nodes.CP
+      properties:
+        order: 1
+        is_default: false
+      requirements:
+        - virtualbinding: DM
+        - virtualLink: INTERMEDIA_NetWork
+
+    LB_Port_CTRL:
+      type: rnc.nodes.CP
+      properties:
+        order: 0
+        is_default: true
+      requirements:
+        - virtualbinding: LB
+        - virtualLink: CTRL_NetWork
+
+    LB_Port_INTERMEDIA:
+      type: rnc.nodes.CP
+      properties:
+        order: 1
+        is_default: false
+      requirements:
+        - virtualbinding: LB
+        - virtualLink: INTERMEDIA_NetWork
+
+    LB_Port_EXTERMEDIA:
+      type: rnc.nodes.CP
+      properties:
+        order: 2
+        is_default: false
+      requirements:
+        - virtualbinding: LB
+        - virtualLink: EXTERMEDIA_NetWork
+
+  # 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, ip_address ] }
+
+    private_ip_of_CM:
+      description: The private IP address of the CM.
+      value: { get_attribute: [ CM_Active_Host, ip_address ] }
+
+    private_ip_of_DM:
+      description: The private IP address of the DM.
+      value: { get_attribute: [ DM_Host, ip_address ] }
+
+    private_ip_of_LB:
+      description: The private IP address of the LB.
+      value: { get_attribute: [ LB_Host, ip_address ] }
+
+  # definition of logical groups of node templates within the topology
+  # To be continue about this section
+  groups:
+    ServerGroupAnitAffinity: #
+      description: Logical component grouping for placement
+      members: [ MM_Acitve, MM_Passive, CM_Acitve, CM_Passive, LB ]
+      policies:
+        type: tosca.policy.placement.Antilocate
+
+  #  ServerGroupAffinity: #
+  #    members: [ CM, DM ]
+  #    policies:
+  #      type: tosca.policy.placement.Antilocate
+
+  #  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/docs/tosca2heat/simple_rnc_definition/Simple_RNC_definition.yaml b/docs/tosca2heat/simple_rnc_definition/Simple_RNC_definition.yaml
new file mode 100644 (file)
index 0000000..921da0d
--- /dev/null
@@ -0,0 +1,264 @@
+# Required TOSCA Definitions version string
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+metadata:
+  template_name: tosca_simple_profile_for_nfv
+  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
+
+imports:
+  - TOSCA_nfv_definition_1_0.yaml
+
+# list of node type definitions
+node_types:
+  rnc.nodes.VNF:
+    derived_from: tosca.nodes.nfv.VNF
+    properties:
+      vnftype:
+        type: string
+        description: type of the vnf
+        default:  UMTS
+        required: false
+        constraints:
+          - valid_values: [ TD, UMTS ]
+    requirements:
+      - virtualLink_VNFM:
+          capability: tosca.capabilities.nfv.VirtualLinkable
+      - virtualLink_EMS:
+          capability: tosca.capabilities.nfv.VirtualLinkable
+      - virtualLink_TRAFFIC:
+          capability: tosca.capabilities.nfv.VirtualLinkable
+          
+  rnc.nodes.compute.MM:
+    derived_from: tosca.nodes.nfv.VDU
+    properties:
+      activestatus:
+        type: integer
+        description: active or passive
+        constraints:
+            # 1 active, 0 passive
+            - 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.
+    requirements:
+      - host:
+          capability: tosca.capabilities.Container
+          node: rnc.nodes.compute.MM_Host
+          relationship: tosca.relationships.HostedOn
+          
+  rnc.nodes.compute.MM_Host:
+    derived_from: tosca.nodes.Compute
+    capabilities:
+      binding:
+         type: tosca.capabilities.network.Bindable
+      os:
+         type: tosca.capabilities.OperatingSystem
+      scalable:
+         type: tosca.capabilities.Scalable
+      host:
+        type: rnc.capabilities.Container
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      storage:
+        type: tosca.capabilities.nfv.Storage
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+    attributes:
+      ip_address:
+        type: string
+
+  rnc.nodes.compute.CM:
+    derived_from: tosca.nodes.nfv.VDU
+    properties:
+      activestatus:
+        type: integer
+        description: 1 for active or 0 for passive
+        constraints:
+           # 1 active, 0 passive
+           - valid_values: [ 0, 1 ]
+    requirements:
+      - host:
+          capability: tosca.capabilities.Container
+          node: rnc.nodes.compute.CM_Host
+          relationship: tosca.relationships.HostedOn
+          
+  rnc.nodes.compute.CM_Host:
+    derived_from: tosca.nodes.Compute
+    capabilities:
+      binding:
+         type: tosca.capabilities.network.Bindable
+      os:
+         type: tosca.capabilities.OperatingSystem
+      scalable:
+         type: tosca.capabilities.Scalable
+      host:
+        type: rnc.capabilities.Container
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      cpu_extension:
+        type: tosca.capabilities.nfv.CPU_extension
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      memory_extension:
+        type: tosca.capabilities.nfv.Memory_extension
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      hypervisors:
+        type: tosca.capabilities.nfv.Hypervisors
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      PCIe:
+        type: tosca.capabilities.nfv.PCIe
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      interfaces:
+        type: tosca.capabilities.nfv.network.Interfaces
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      virtual_switches:
+        type: tosca.capabilities.nfv.network.Virtual_switches
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+    attributes:
+      ip_address:
+        type: string
+
+  rnc.nodes.compute.DM:
+    derived_from: tosca.nodes.nfv.VDU
+    requirements:
+      - host:
+          capability: tosca.capabilities.Container
+          node: rnc.nodes.compute.DM_Host
+          relationship: tosca.relationships.HostedOn
+
+  rnc.nodes.compute.DM_Host:
+    derived_from: tosca.nodes.Compute
+    capabilities:
+      binding:
+         type: tosca.capabilities.network.Bindable
+      os:
+         type: tosca.capabilities.OperatingSystem
+      scalable:
+         type: tosca.capabilities.Scalable
+      host:
+        type: rnc.capabilities.Container
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      cpu_extension:
+        type: tosca.capabilities.nfv.CPU_extension
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      memory_extension:
+        type: tosca.capabilities.nfv.Memory_extension
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      hypervisors:
+        type: tosca.capabilities.nfv.Hypervisors
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      PCIe:
+        type: tosca.capabilities.nfv.PCIe
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      interfaces:
+        type: tosca.capabilities.nfv.network.Interfaces
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      virtual_switches:
+        type: tosca.capabilities.nfv.network.Virtual_switches
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+    attributes:
+      ip_address:
+        type: string
+
+  rnc.nodes.compute.LB:
+    derived_from: tosca.nodes.nfv.VDU
+    requirements:
+      - host:
+          capability: tosca.capabilities.Container
+          node: rnc.nodes.compute.LB_Host
+          relationship: tosca.relationships.HostedOn
+
+  rnc.nodes.compute.LB_Host:
+    derived_from: tosca.nodes.Compute
+    capabilities:
+      binding:
+         type: tosca.capabilities.network.Bindable
+      os:
+         type: tosca.capabilities.OperatingSystem
+      scalable:
+         type: tosca.capabilities.Scalable
+      host:
+        type: rnc.capabilities.Container
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      interfaces:
+        type: tosca.capabilities.nfv.network.Interfaces
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+      virtual_switches:
+        type: tosca.capabilities.nfv.network.Virtual_switches
+        valid_source_types: [ tosca.nodes.SoftwareComponent ]
+    attributes:
+      ip_address:
+        type: string
+
+  rnc.nodes.BlockStorage:
+    derived_from: tosca.nodes.BlockStorage
+
+  rnc.nodes.VL:
+    derived_from: tosca.nodes.nfv.VL.ELAN
+    properties:
+      ip_version:
+        type: integer
+        required: false
+        default: 4
+        constraints:
+            - valid_values: [ 4, 6 ]
+      cidr:
+        type: string
+        required: false
+      network_name:
+        type: string
+        required: false
+      dhcp_enabled:
+        type: boolean
+        required: false
+        default: true
+        description: >
+          Indicates should DHCP service be enabled on the network or not.
+
+  rnc.nodes.CP:
+    derived_from: tosca.nodes.nfv.CP
+    properties:
+      ip_address:
+        type: string
+        required: false
+      order:
+        type: integer
+        required: true
+        default: 0
+        constraints:
+          - greater_or_equal: 0
+      is_default:
+        type: boolean
+        required: false
+        default: false
+
+# 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