From bb600a64bb9105dbe0bc3b971067c193a29861d2 Mon Sep 17 00:00:00 2001 From: shangxdy Date: Fri, 18 Dec 2015 16:27:00 +0800 Subject: Define a TOSCA template for a vRNC(new) 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 --- docs/documentation-example.rst | 8 +- docs/index.rst | 2 + .../simple_rnc_definition/Simple_RNC.yaml | 419 +++++++++++++++++++++ .../Simple_RNC_definition.yaml | 264 +++++++++++++ 4 files changed, 690 insertions(+), 3 deletions(-) create mode 100644 docs/tosca2heat/simple_rnc_definition/Simple_RNC.yaml create mode 100644 docs/tosca2heat/simple_rnc_definition/Simple_RNC_definition.yaml diff --git a/docs/documentation-example.rst b/docs/documentation-example.rst index ebd80e4..8264732 100644 --- a/docs/documentation-example.rst +++ b/docs/documentation-example.rst @@ -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 diff --git a/docs/index.rst b/docs/index.rst index 4e10cf3..aa376d8 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -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 index 0000000..9f99c57 --- /dev/null +++ b/docs/tosca2heat/simple_rnc_definition/Simple_RNC.yaml @@ -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 index 0000000..921da0d --- /dev/null +++ b/docs/tosca2heat/simple_rnc_definition/Simple_RNC_definition.yaml @@ -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 -- cgit 1.2.3-korg