From 1e1a8bfbc608f7f144c7fbdfc7e7bb1281dd149e Mon Sep 17 00:00:00 2001 From: Huang Haibin Date: Wed, 17 Oct 2018 10:55:13 +0800 Subject: Add TOSCA templates to support SRIOV-NIC Change-Id: Id3c05ac7675f29d61ff9fb0a887c88f2df3ac106 Issue-ID: INT-536 Signed-off-by: Huang Haibin --- tosca/vCPE/README.md | 1 + tosca/vCPE/generate_csar.sh | 7 +- tosca/vCPE/infra/MainServiceTemplate_sriov.yaml | 759 ++++++++++++++++++++++ tosca/vCPE/vbng/MainServiceTemplate_sriov.yaml | 444 +++++++++++++ tosca/vCPE/vbrgemu/MainServiceTemplate_sriov.yaml | 293 +++++++++ tosca/vCPE/vgmux/MainServiceTemplate_sriov.yaml | 389 +++++++++++ tosca/vCPE/vgw/MainServiceTemplate_sriov.yaml | 380 +++++++++++ 7 files changed, 2272 insertions(+), 1 deletion(-) create mode 100644 tosca/vCPE/infra/MainServiceTemplate_sriov.yaml create mode 100644 tosca/vCPE/vbng/MainServiceTemplate_sriov.yaml create mode 100644 tosca/vCPE/vbrgemu/MainServiceTemplate_sriov.yaml create mode 100644 tosca/vCPE/vgmux/MainServiceTemplate_sriov.yaml create mode 100644 tosca/vCPE/vgw/MainServiceTemplate_sriov.yaml diff --git a/tosca/vCPE/README.md b/tosca/vCPE/README.md index f4f7e9cc..8be51f26 100644 --- a/tosca/vCPE/README.md +++ b/tosca/vCPE/README.md @@ -3,6 +3,7 @@ 5 VNFs are here for the ONAP vCPE use case. These VNFD are transformed manually from vCPE heat template. Please run ./generate_csar.sh to create the csar package files for these 5 VNFS. CSAR package file is just a zip formatted file. +If you want to use sriov-nic, please run ./generate_csar.sh sriov to create the csar package files for sriov. ## pending issues to DM Please search for "TODO" in the corresponding VNFD to find the pending things. diff --git a/tosca/vCPE/generate_csar.sh b/tosca/vCPE/generate_csar.sh index 21ba3a62..36541e62 100755 --- a/tosca/vCPE/generate_csar.sh +++ b/tosca/vCPE/generate_csar.sh @@ -28,7 +28,12 @@ for dir in $DIRS; do # prepare temporary csar build subdirectory cd $ROOT_DIR/$dir mkdir $ROOT_DIR/$dir/tmp - cp MainServiceTemplate.mf MainServiceTemplate.yaml tmp/ + cp MainServiceTemplate.mf tmp/ + if [ $1 ] && [ $1 == "sriov" ]; then + cp MainServiceTemplate_sriov.yaml tmp/MainServiceTemplate.yaml + else + cp MainServiceTemplate.yaml tmp/ + fi cp -r $ROOT_DIR/Artifacts tmp/ cp -r $ROOT_DIR/Definitions tmp/ cp -r $ROOT_DIR/TOSCA-Metadata tmp/ diff --git a/tosca/vCPE/infra/MainServiceTemplate_sriov.yaml b/tosca/vCPE/infra/MainServiceTemplate_sriov.yaml new file mode 100644 index 00000000..22c3ad9e --- /dev/null +++ b/tosca/vCPE/infra/MainServiceTemplate_sriov.yaml @@ -0,0 +1,759 @@ +tosca_definitions_version: tosca_simple_yaml_1_0 +metadata: + template_name: vCPE_infra + template_version: "1.0" + template_author: onap +description: vCPE_infra + +imports: + - onap_dm.yaml + +node_types: + onap.vcpe_infra: + derived_from: tosca.nodes.nfv.VNF + properties: + descriptor_id: + type: string + constraints: [ valid_values: [ b1bb0ce7-1111-4fa7-95ed-4840d70a1177 ] ] + default: b1bb0ce7-1111-4fa7-95ed-4840d70a1177 + provider: + type: string + constraints: [ valid_values: [ onap ] ] + default: onap + product_name: + type: string + constraints: [ valid_values: [ vcpe_infra ] ] + default: vcpe_infra + software_version: + type: string + constraints: [ valid_values: [ '1.0' ] ] + default: '1.0' + descriptor_version: + type: string + constraints: [ valid_values: [ '1.0' ] ] + default: '1.0' + flavour_id: + type: string + constraints: [ valid_values: [ simple ] ] #only one and only allowed one DF in this example + default: simple + flavour_description: + type: string + default: simple + vnfm_info: + type: list + entry_schema: + type: string + default: ['gvnfm'] + +topology_template: +# substitution_mappings: +# node_type: onap.vcpe_infra +# requirements: +# virtual_link: [ Cp_vaaa_public, virtual_link ] # expose as external CP +# virtual_link: [ Cp_vaaa_onap_private, virtual_link ] # expose as external CP +# virtual_link: [ Cp_vdns_public, virtual_link ] +# virtual_link: [ Cp_vdns_onap_private, virtual_link ] +# virtual_link: [ Cp_vdhcp_public, virtual_link ] +# virtual_link: [ Cp_vdhcp_onap_private, virtual_link ] +# virtual_link: [ Cp_vweb_public, virtual_link ] +# virtual_link: [ Cp_vweb_onap_private, virtual_link ] + + inputs: + vcpe_image_name: + type: string + description: image name for vcpe in openstack glance + default: ubuntu_16.04 + public_net_id: + type: string + description: public network id used during onap installation + default: external + onap_private_net_id: + type: string + description: onap OAM network id + default: oam_onap + onap_private_net_cidr: + type: string + description: oanp OAM network cidr + default: 10.0.0.0/16 + mr_ip_addr: + type: string + description: message router ip that for vDHCP configuration + default: 10.0.11.1 + dcae_collector_ip: + type: string + description: dcae collector ip + default: 10.0.4.102 + dcae_collector_port: + type: integer + description: dcae collector port + default: 8080 + nexus_artifact_repo: + type: string + description: Root URL for the Nexus repository for Maven artifacts + default: https://nexus.onap.org + demo_artifacts_version: + type: string + description: artifacts version used in demo vnfs + default: 1.2.0 + install_script_version: + type: string + description: install script version number + default: 1.2.0-SNAPSHOT + cloud_env: + type: string + description: cloud environment(openstack or rackspace) + default: openstack + pub_key: + type: string + description: ssh public key + default: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGx6SKrAuCz1V8KGevZueksLdWoPWJP6z3r29Z7TmPVEOjM+7PIPeSs2BVRx3rnHZBAlasMrZ+fJBS25ts9vfC+ItezQah/hr9vrkmwxCR54Lb84poW+sToPeF6i5eZY7W+jWJfLaFSFx9d2vp4zes/fOlT3NvYCXbn/3QdryQoGl7VFI8oemZypVcikZXElJeeKgAVdSwnrzuqtO/tmbXcAeSbYvVjki8ywYcsWMVMYWUWhh+1BAB6kXnTsIWqzrq0Pfvy+81WDwtiqsqmd93HY8hE0scBrXFBZzQS/AYfIFBlEuFNdLczchntjbZ0n7dmDXk8zHtCZYNk7kwb8k/ + cpe_signal_net_id: + type: string + description: cpe signal net name + default: zdfw1cpe01_private + cpe_signal_net_cidr: + type: string + description: cpe signal net cidr + default: 10.4.0.0/24 + cpe_public_net_id: + type: string + description: cpe public net name + default: zdfw1cpe01_public + cpe_public_net_cidr: + type: string + description: cpe public net cidr + default: 10.2.0.0/24 + vdhcp_name_0: + type: string + description: vdu vdhcp_0 name + default: zdcpe1cpe01dhcp01 + vdhcp_private_ip_0: + type: string + description: ip of vdhcp port to cpe signal net + default: 10.4.0.1 + vdhcp_private_ip_1: + type: string + description: ip of vdhcp port to onap oam net + default: 10.0.101.1 + vaaa_name_0: + type: string + description: vdu vaaa_0 name + default: zdcpe1cpe01aaa01 + vaaa_private_ip_0: + type: string + description: ip of vaaa port to cpe signal net + default: 10.4.0.4 + vaaa_private_ip_1: + type: string + description: ip of vaaa port to onap oam net + default: 10.0.101.2 + vdns_name_0: + type: string + description: vdu vdns_0 name + default: zdcpe1cpe01dns01 + vdns_private_ip_0: + type: string + description: ip of vdns port to cpe public net + default: 10.2.0.1 + vdns_private_ip_1: + type: string + description: ip of vdns port to onap oam net + default: 10.0.101.3 + vweb_name_0: + type: string + description: vdu vweb_0 name + default: zdcpe1cpe01web01 + vweb_private_ip_0: + type: string + description: ip of vweb port to cpe public net + default: 10.2.0.10 + vweb_private_ip_1: + type: string + description: ip of vweb port to onap oam net + default: 10.0.101.40 + vnf_id: + type: string + description: The VNF ID is provided by ONAP + default: vCPE_Infrastructure_demo_app + vf_module_id: + type: string + description: The vCPE Module ID is provided by ONAP + default: vCPE_Intrastructure + + node_templates: + #onap public net +# VL_public: +# type: tosca.nodes.nfv.VnfVirtualLink +# properties: +# connectivity_type: +# layer_protocol: ipv4 +# vl_profile: +# max_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# min_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# networkName: { get_input: public_net_id } +# +# #onap oam net +# VL_onap_private: +# type: tosca.nodes.nfv.VnfVirtualLink +# properties: +# connectivity_type: +# layer_protocol: ipv4 +# vl_profile: +# max_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# min_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# networkName: { get_input: onap_private_net_id } +# cidr: { get_input: onap_private_net_cidr } + + #cpe signal network + VL_cpe_signal: + type: tosca.nodes.nfv.VnfVirtualLink + properties: + connectivity_type: + layer_protocol: ipv4 + vl_profile: + max_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + min_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + networkName: { get_input: cpe_signal_net_id} + cidr: { get_input: cpe_signal_net_cidr } + dhcpEnabled: false + + #cpe public network + VL_cpe_public: + type: tosca.nodes.nfv.VnfVirtualLink + properties: + connectivity_type: + layer_protocol: ipv4 + vl_profile: + max_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + min_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + networkName: { get_input: cpe_public_net_id} + cidr: { get_input: cpe_public_net_cidr } + dhcpEnabled: false + + # vaaa related + Cp_vaaa_public: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + requirements: + - virtual_binding: VDU_vaaa_0 +# - virtual_link: VL_public + + Cp_vaaa_onap_private: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vaaa_private_ip_1 } + requirements: + - virtual_binding: VDU_vaaa_0 +# - virtual_link: VL_onap_private + + Cp_vaaa_cpe_signal: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vaaa_private_ip_0 } + requirements: + - virtual_binding: VDU_vaaa_0 + - virtual_link: VL_cpe_signal + + VirtualStorage_root_all: + # this indicate the VDU root storage size + type: tosca.nodes.nfv.Vdu.VirtualStorage + properties: + type_of_storage: root + size_of_storage: 40 GB + + VDU_vaaa_0: + type: tosca.nodes.nfv.Vdu.Compute + properties: + name: { get_input: vaaa_name_0 } + description: vaaa + configurable_properties: + additional_vnfc_configurable_properties: {} + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 1 + watchdog: none + inject_files: #TODO SDC Bug + source_path: ../Artifacts/keys/authorized_keys #SSH authorized_keys + dest_path: /home/ubuntu/.ssh/authorized_keys + meta_data: + vnf_id: { get_input: vnf_id } + vf_module_id: { get_input: vf_module_id } + dcae_collector_ip: { get_input: dcae_collector_ip } + dcae_collector_port: { get_input: dcae_collector_port } + cpe_signal_net_ipaddr: { get_input: vaaa_private_ip_0 } + oam_ipaddr: { get_input: vaaa_private_ip_1 } + oam_cidr: { get_input: oam_private_net_cidr } + cpe_signal_net_cidr: { get_input: cpe_signal_net_cidr } + demo_artifacts_version: { get_input: demo_artifacts_version } + install_script_version: { get_input: install_script_version } + cloud_env: { get_input: cloud_env } + nexus_artifact_repo: { get_input: nexus_artifact_repo } + user_data: | + #!/bin/bash + METADATA=`curl -s http://169.254.169.254/openstack/2012-08-10/meta_data.json` + apt-get -y install jq + + get_metadata () { + echo $METADATA | jq -r ".meta.$1" + } + + # Create configuration files + mkdir /opt/config + echo "$(get_metadata dcae_collector_ip)" > /opt/config/dcae_collector_ip.txt + echo "$(get_metadata dcae_collector_port)" > /opt/config/dcae_collector_port.txt + echo "$(get_metadata cpe_signal_net_ipaddr)" > /opt/config/cpe_signal_net_ipaddr.txt + echo "$(get_metadata oam_ipaddr)" > /opt/config/oam_ipaddr.txt + echo "$(get_metadata oam_cidr)" > /opt/config/oam_cidr.txt + echo "$(get_metadata cpe_signal_net_cidr)" > /opt/config/cpe_signal_net_cidr.txt + echo "$(get_metadata demo_artifacts_version)" > /opt/config/demo_artifacts_version.txt + echo "$(get_metadata install_script_version)" > /opt/config/install_script_version.txt + echo "$(get_metadata cloud_env)" > /opt/config/cloud_env.txt + echo "$(get_metadata nexus_artifact_repo)" > /opt/config/nexus_artifact_repo.txt + + # Download and run install script + apt-get -y install unzip + INSTALL_SCRIPT_VERSION=$(get_metadata install_script_version) + NEXUS_ARTIFACT_REPO=$(get_metadata nexus_artifact_repo) + if [[ "${INSTALL_SCRIPT_VERSION}" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi + curl -k -L "${NEXUS_ARTIFACT_REPO}/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.vcpe&a=vcpe-scripts&e=zip&v=${INSTALL_SCRIPT_VERSION}" -o /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip + unzip -j /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip -d /opt v_aaa_install.sh + cd /opt + chmod +x v_aaa_install.sh + ./v_aaa_install.sh + capabilities: + virtual_compute: + properties: + #TODO add local disk size + virtual_memory: + virtual_mem_size: 4096 MB + virtual_cpu: + num_virtual_cpu: 2 + requirements: + - virtual_storage: VirtualStorage_root_all + artifacts: + sw_image: #TODO need to put glance image name here + #file: { get_input: vcpe_image_name } + file: ../Artifacts/images/ubuntu_16.04 + type: tosca.artifacts.nfv.SwImage + + # vdns related + Cp_vdns_public: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + requirements: + - virtual_binding: VDU_vdns_0 +# - virtual_link: VL_public + + Cp_vdns_onap_private: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vdns_private_ip_1 } + requirements: + - virtual_binding: VDU_vdns_0 + #- virtual_link: VL_onap_private + + Cp_vdns_cpe_public: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vdns_private_ip_0 } + requirements: + - virtual_binding: VDU_vdns_0 + - virtual_link: VL_cpe_public + + VDU_vdns_0: + type: tosca.nodes.nfv.Vdu.Compute + properties: + name: { get_input: vdns_name_0 } + description: vdns + configurable_properties: + additional_vnfc_configurable_properties: {} + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 1 + watchdog: none + inject_files: # TODO SDC Bug + source_path: ../Artifacts/keys/authorized_keys #SSH authorized_keys + dest_path: /home/ubuntu/.ssh/authorized_keys + meta_data: + vnf_id: { get_input: vnf_id } + vf_module_id: { get_input: vf_module_id } + oam_ipaddr: { get_input: vdns_private_ip_1 } + cpe_public_net_ipaddr: { get_input: vdns_private_ip_0 } + oam_cidr: { get_input: oam_private_net_cidr } + cpe_public_net_cidr: { get_input: cpe_public_net_cidr } + demo_artifacts_version: { get_input: demo_artifacts_version } + install_script_version: { get_input: install_script_version } + cloud_env: { get_input: cloud_env } + nexus_artifact_repo: { get_input: nexus_artifact_repo } + user_data: | + #!/bin/bash + METADATA=`curl -s http://169.254.169.254/openstack/2012-08-10/meta_data.json` + apt-get -y install jq + + get_metadata () { + echo $METADATA | jq -r ".meta.$1" + } + + # Create configuration files + mkdir /opt/config + echo "$(get_metadata oam_ipaddr)" > /opt/config/oam_ipaddr.txt + echo "$(get_metadata cpe_public_net_ipaddr)" > /opt/config/cpe_public_net_ipaddr.txt + echo "$(get_metadata onap_cidr)" > /opt/config/oam_cidr.txt + echo "$(get_metadata cpe_public_net_cidr)" > /opt/config/cpe_public_net_cidr.txt + echo "$(get_metadata demo_artifacts_version)" > /opt/config/demo_artifacts_version.txt + echo "$(get_metadata install_script_version)" > /opt/config/install_script_version.txt + echo "$(get_metadata cloud_env)" > /opt/config/cloud_env.txt + echo "$(get_metadata nexus_artifact_repo)" > /opt/config/nexus_artifact_repo.txt + + # Download and run install script + apt-get -y install unzip + INSTALL_SCRIPT_VERSION=$(get_metadata install_script_version) + NEXUS_ARTIFACT_REPO=$(get_metadata nexus_artifact_repo) + if [[ "${INSTALL_SCRIPT_VERSION}" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi + curl -k -L "${NEXUS_ARTIFACT_REPO}/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.vcpe&a=vcpe-scripts&e=zip&v=${INSTALL_SCRIPT_VERSION}" -o /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip + unzip -j /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip -d /opt v_dns_install.sh + cd /opt + chmod +x v_dns_install.sh + ./v_dns_install.sh + capabilities: + virtual_compute: + properties: + #TODO add local disk size + virtual_memory: + virtual_mem_size: 4096 MB + virtual_cpu: + num_virtual_cpu: 2 + requirements: + - virtual_storage: VirtualStorage_root_all + artifacts: + sw_image: #TODO need to put glance image name here + #file: { get_input: vcpe_image_name } + file: ../Artifacts/images/ubuntu_16.04 + type: tosca.artifacts.nfv.SwImage + + # vdhcp related + Cp_vdhcp_public: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + requirements: + - virtual_binding: VDU_vdhcp_0 +# - virtual_link: VL_public + + Cp_vdhcp_onap_private: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vdhcp_private_ip_1 } + requirements: + - virtual_binding: VDU_vdhcp_0 +# - virtual_link: VL_onap_private + + Cp_vdhcp_cpe_signal: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vdhcp_private_ip_0 } + requirements: + - virtual_binding: VDU_vdhcp_0 + - virtual_link: VL_cpe_signal + + VDU_vdhcp_0: + type: tosca.nodes.nfv.Vdu.Compute + properties: + name: { get_input: vdhcp_name_0 } + description: vdhcp + configurable_properties: + additional_vnfc_configurable_properties: {} + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 1 + watchdog: none + inject_files: #SDC Bug + source_path: ../Artifacts/keys/authorized_keys #SSH authorized_keys + dest_path: /home/ubuntu/.ssh/authorized_keys + meta_data: + vnf_id: { get_input: vnf_id } + vf_module_id: { get_input: vf_module_id } + oam_ipaddr: { get_input: vdhcp_private_ip_1 } + cpe_signal_ipaddr: { get_input: vdhcp_private_ip_0 } + oam_cidr: { get_input: oam_private_net_cidr } + cpe_signal_net_cidr: { get_input: cpe_signal_net_cidr } + mr_ip_addr: { get_input: mr_ip_addr } + mr_ip_port: { get_input: mr_ip_port } + demo_artifacts_version: { get_input: demo_artifacts_version } + install_script_version: { get_input: install_script_version } + cloud_env: { get_input: cloud_env } + nexus_artifact_repo: { get_input: nexus_artifact_repo } + user_data: | + #!/bin/bash + METADATA=`curl -s http://169.254.169.254/openstack/2012-08-10/meta_data.json` + apt-get -y install jq + + get_metadata () { + echo $METADATA | jq -r ".meta.$1" + } + + # Create configuration files + mkdir /opt/config + echo "$(get_metadata oam_ipaddr)" > /opt/config/oam_ipaddr.txt + echo "$(get_metadata cpe_signal_ipaddr)" > /opt/config/cpe_signal_ipaddr.txt + echo "$(get_metadata onap_cidr)" > /opt/config/oam_cidr.txt + echo "$(get_metadata cpe_signal_net_cidr)" > /opt/config/cpe_signal_net_cidr.txt + echo "$(get_metadata mr_ip_addr)" > /opt/config/mr_ip_addr.txt + echo "$(get_metadata mr_ip_port)" > /opt/config/mr_ip_port.txt + echo "$(get_metadata demo_artifacts_version)" > /opt/config/demo_artifacts_version.txt + echo "$(get_metadata install_script_version)" > /opt/config/install_script_version.txt + echo "$(get_metadata cloud_env)" > /opt/config/cloud_env.txt + echo "$(get_metadata nexus_artifact_repo)" > /opt/config/nexus_artifact_repo.txt + + # Download and run install script + apt-get -y install unzip + INSTALL_SCRIPT_VERSION=$(get_metadata install_script_version) + NEXUS_ARTIFACT_REPO=$(get_metadata nexus_artifact_repo) + if [[ "${INSTALL_SCRIPT_VERSION}" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi + curl -k -L "${NEXUS_ARTIFACT_REPO}/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.vcpe&a=vcpe-scripts&e=zip&v=${INSTALL_SCRIPT_VERSION}" -o /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip + unzip -j /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip -d /opt v_dhcp_install.sh + cd /opt + chmod +x v_dhcp_install.sh + ./v_dhcp_install.sh + capabilities: + virtual_compute: + properties: + #TODO add local disk size + virtual_memory: + virtual_mem_size: 4096 MB + virtual_cpu: + num_virtual_cpu: 2 + requirements: + - virtual_storage: VirtualStorage_root_all + artifacts: + sw_image: #TODO need to put glance image name here + #file: { get_input: vcpe_image_name } + file: ../Artifacts/images/ubuntu_16.04 + type: tosca.artifacts.nfv.SwImage + + # vweb related + Cp_vweb_public: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + requirements: + - virtual_binding: VDU_vweb_0 +# - virtual_link: VL_public + + Cp_vweb_onap_private: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vweb_private_ip_1 } + requirements: + - virtual_binding: VDU_vweb_0 +# - virtual_link: VL_onap_private + + Cp_vweb_cpe_public: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vweb_private_ip_0 } + requirements: + - virtual_binding: VDU_vweb_0 + - virtual_link: VL_cpe_public + + VDU_vweb_0: + type: tosca.nodes.nfv.Vdu.Compute + properties: + name: { get_input: vweb_name_0 } + description: vweb + configurable_properties: + additional_vnfc_configurable_properties: {} + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 1 + watchdog: none + inject_files: # TODO SDC bug + source_path: ../Artifacts/keys/authorized_keys #SSH authorized_keys + dest_path: /home/ubuntu/.ssh/authorized_keys + meta_data: + vnf_id: { get_input: vnf_id } + vf_module_id: { get_input: vf_module_id } + oam_ipaddr: { get_input: vweb_private_ip_1 } + cpe_public_ipaddr: { get_input: vweb_private_ip_0 } + oam_cidr: { get_input: oam_private_net_cidr } + cpe_public_net_cidr: { get_input: cpe_public_net_cidr } + demo_artifacts_version: { get_input: demo_artifacts_version } + install_script_version: { get_input: install_script_version } + cloud_env: { get_input: cloud_env } + nexus_artifact_repo: { get_input: nexus_artifact_repo } + user_data: | + #!/bin/bash + METADATA=`curl -s http://169.254.169.254/openstack/2012-08-10/meta_data.json` + apt-get -y install jq + + get_metadata () { + echo $METADATA | jq -r ".meta.$1" + } + + # Create configuration files + mkdir /opt/config + echo "$(get_metadata oam_ipaddr)" > /opt/config/oam_ipaddr.txt + echo "$(get_metadata cpe_public_ipaddr)" > /opt/config/cpe_public_ipaddr.txt + echo "$(get_metadata onap_cidr)" > /opt/config/oam_cidr.txt + echo "$(get_metadata cpe_public_net_cidr)" > /opt/config/cpe_public_net_cidr.txt + echo "$(get_metadata demo_artifacts_version)" > /opt/config/demo_artifacts_version.txt + echo "$(get_metadata install_script_version)" > /opt/config/install_script_version.txt + echo "$(get_metadata cloud_env)" > /opt/config/cloud_env.txt + echo "$(get_metadata nexus_artifact_repo)" > /opt/config/nexus_artifact_repo.txt + + # Download and run install script + apt-get -y install unzip + INSTALL_SCRIPT_VERSION=$(get_metadata install_script_version) + NEXUS_ARTIFACT_REPO=$(get_metadata nexus_artifact_repo) + if [[ "${INSTALL_SCRIPT_VERSION}" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi + curl -k -L "${NEXUS_ARTIFACT_REPO}/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.vcpe&a=vcpe-scripts&e=zip&v=${INSTALL_SCRIPT_VERSION}" -o /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip + unzip -j /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip -d /opt v_web_install.sh + cd /opt + chmod +x v_web_install.sh + ./v_web_install.sh + capabilities: + virtual_compute: + properties: + #TODO add local disk size + virtual_memory: + virtual_mem_size: 4096 MB + virtual_cpu: + num_virtual_cpu: 2 + requirements: + - virtual_storage: VirtualStorage_root_all + artifacts: + sw_image: #TODO need to put glance image name here + #file: { get_input: vcpe_image_name } + file: ../Artifacts/images/ubuntu_16.04 + type: tosca.artifacts.nfv.SwImage + diff --git a/tosca/vCPE/vbng/MainServiceTemplate_sriov.yaml b/tosca/vCPE/vbng/MainServiceTemplate_sriov.yaml new file mode 100644 index 00000000..3e5f726b --- /dev/null +++ b/tosca/vCPE/vbng/MainServiceTemplate_sriov.yaml @@ -0,0 +1,444 @@ +tosca_definitions_version: tosca_simple_yaml_1_0 +metadata: + template_name: vCPE_vbng + template_version: "1.0" + template_author: onap +description: vCPE_vbng + +imports: + - onap_dm.yaml + +node_types: + onap.vcpe_vbng: + derived_from: tosca.nodes.nfv.VNF + properties: + descriptor_id: + type: string + constraints: [ valid_values: [ b1bb0ce7-5555-4fa7-95ed-4840d70a1177 ] ] + default: b1bb0ce7-5555-4fa7-95ed-4840d70a1177 + provider: + type: string + constraints: [ valid_values: [ onap ] ] + default: onap + product_name: + type: string + constraints: [ valid_values: [ vcpe_vbng ] ] + default: vcpe_vbng + software_version: + type: string + constraints: [ valid_values: [ '1.0' ] ] + default: '1.0' + descriptor_version: + type: string + constraints: [ valid_values: [ '1.0' ] ] + default: '1.0' + flavour_id: + type: string + constraints: [ valid_values: [ simple ] ] #only one and only allowed one DF in this example + default: simple + flavour_description: + type: string + default: simple + vnfm_info: + type: list + entry_schema: + type: string + default: ['gvnfm'] + +topology_template: +# substitution_mappings: +# node_type: onap.vcpe_vbng +# requirements: +# virtual_link: [ Cp_vbng_public, virtual_link ] # expose as external CP +# virtual_link: [ Cp_vbng_onap_private, virtual_link ] # expose as external CP + + inputs: + vcpe_image_name: + type: string + description: image name for vcpe in openstack glance + default: ubuntu_16.04 + public_net_id: + type: string + description: public network id used during onap installation + onap_private_net_id: + type: string + description: onap OAM network id + onap_private_net_cidr: + type: string + description: oanp OAM network cidr + default: 10.0.0.0/16 + brgemu_bng_private_net_id: + type: string + description: Private network that connects vBRG to vBNG + default: zdfw1bngin01_private + brgemu_bng_private_net_cidr: + type: string + description: The CIDR of the input side of vBNG private network + default: 10.3.0.0/24 + bng_gmux_private_net_id: + type: string + description: Private network that connects vBNG to vGMUX + default: zdfw1bngmux01_private + bng_gmux_private_net_cidr: + type: string + description: The CIDR of the input side of vGMUX private network + default: 10.1.0.0/24 + cpe_signal_net_id: + type: string + description: Private network that connects vCPE elements with vCPE infrastructure elements + default: zdfw1cpe01_private + cpe_signal_private_net_cidr: + type: string + description: The CIDR of the vAAA private network + default: 10.4.0.0/24 + vbng_private_ip_0: + type: string + description: Private IP address that is assigned to the vBNG IN + default: 10.3.0.1 + vbng_private_ip_1: + type: string + description: Private IP address that is assigned to the vBNG to communicate with ONAP components + default: 10.0.101.10 + vbng_private_ip_2: + type: string + description: Private IP address that is assigned to the vBNG in the CPE_SIGNAL network + default: 10.4.0.3 + vbng_private_ip_3: + type: string + description: Private IP address that is assigned to the vBNG to vGMUX port + default: 10.1.0.10 + vbng_name_0: + type: string + description: Name of the vBNG + default: zdcpe1cpe01bng01 + vnf_id: + type: string + description: The VNF ID is provided by ONAP + default: vCPE_Infrastructure_Metro_vBNG_demo_app + vf_module_id: + type: string + description: The vCPE Module ID is provided by ONAP + default: vCPE_Intrastructure_Metro_vBNG + dcae_collector_ip: + type: string + description: dcae collector ip + default: 10.0.4.102 + dcae_collector_port: + type: integer + description: dcae collector port + default: 8080 + pub_key: + type: string + description: ssh public key + default: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGx6SKrAuCz1V8KGevZueksLdWoPWJP6z3r29Z7TmPVEOjM+7PIPeSs2BVRx3rnHZBAlasMrZ+fJBS25ts9vfC+ItezQah/hr9vrkmwxCR54Lb84poW+sToPeF6i5eZY7W+jWJfLaFSFx9d2vp4zes/fOlT3NvYCXbn/3QdryQoGl7VFI8oemZypVcikZXElJeeKgAVdSwnrzuqtO/tmbXcAeSbYvVjki8ywYcsWMVMYWUWhh+1BAB6kXnTsIWqzrq0Pfvy+81WDwtiqsqmd93HY8hE0scBrXFBZzQS/AYfIFBlEuFNdLczchntjbZ0n7dmDXk8zHtCZYNk7kwb8k/ + nexus_artifact_repo: + type: string + description: Root URL for the Nexus repository for Maven artifacts + default: https://nexus.onap.org + demo_artifacts_version: + type: string + description: artifacts version used in demo vnfs + default: 1.2.0 + install_script_version: + type: string + description: install script version number + default: 1.2.0-SNAPSHOT + cloud_env: + type: string + description: cloud environment(openstack or rackspace) + default: openstack + sdnc_ip_addr: + type: string + description: IP address of the SDNC + default: 10.0.7.1 + + node_templates: + #onap public net +# VL_public: +# type: tosca.nodes.nfv.VnfVirtualLink +# properties: +# connectivity_type: +# layer_protocol: ipv4 +# vl_profile: +# max_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# min_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# networkName: { get_input: public_net_id } +# +# #onap oam net +# VL_onap_private: +# type: tosca.nodes.nfv.VnfVirtualLink +# properties: +# connectivity_type: +# layer_protocol: ipv4 +# vl_profile: +# max_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# min_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# networkName: { get_input: onap_private_net_id } +# cidr: { get_input: onap_private_net_cidr } + + #Private network that connects vBRG to vBNG + VL_brgemu_bng_private_net: + type: tosca.nodes.nfv.VnfVirtualLink + properties: + connectivity_type: + layer_protocol: ipv4 + vl_profile: + max_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + min_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + networkName: { get_input: brgemu_bng_private_net_id} + cidr: { get_input: brgemu_bng_private_net_cidr } + dhcpEnabled: false + physicalNetwork: "physnet1" + + #cpe signal network + VL_cpe_signal: + type: tosca.nodes.nfv.VnfVirtualLink + properties: + connectivity_type: + layer_protocol: ipv4 + vl_profile: + max_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + min_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + networkName: { get_input: cpe_signal_net_id} + cidr: { get_input: cpe_signal_private_net_cidr } + dhcpEnabled: false + + #Private network that connects vBNG to vGMUX + VL_bng_gmux_private_net: + type: tosca.nodes.nfv.VnfVirtualLink + properties: + connectivity_type: + layer_protocol: ipv4 + vl_profile: + max_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + min_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + networkName: { get_input: bng_gmux_private_net_id} + cidr: { get_input: bng_gmux_private_net_cidr } + dhcpEnabled: false + physicalNetwork: "physnet1" + + # vbng related + Cp_vbng_public: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + requirements: + - virtual_binding: VDU_vbng_0 + #- virtual_link: VL_public + + Cp_vbng_onap_private: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vbng_private_ip_1 } + requirements: + - virtual_binding: VDU_vbng_0 + #- virtual_link: VL_onap_private + + Cp_vbng_brgemu_bng_private_net: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vbng_private_ip_0 } + vnic_type: "direct" + virtual_network_interface_requirements: + - name: "sriov-support" + support_mandatory: true + network_interface_requirements: + interfaceType: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "SR-IOV"}' + nic_io_requirements: + pciVendorId: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1234"}' + pciDeviceId: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "5678"}' + pciNumDevices: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1"}' + requirements: + - virtual_binding: VDU_vbng_0 + - virtual_link: VL_brgemu_bng_private_net + + Cp_vbng_cpe_signal: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vbng_private_ip_2 } + requirements: + - virtual_binding: VDU_vbng_0 + - virtual_link: VL_cpe_signal + + Cp_vbng_bng_gmux_private_net: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vbng_private_ip_3 } + vnic_type: "direct" + virtual_network_interface_requirements: + - name: "sriov-support" + support_mandatory: true + network_interface_requirements: + interfaceType: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "SR-IOV"}' + nic_io_requirements: + pciVendorId: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1234"}' + pciDeviceId: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "5678"}' + pciNumDevices: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1"}' + requirements: + - virtual_binding: VDU_vbng_0 + - virtual_link: VL_bng_gmux_private_net + + VirtualStorage_root_all: + # this indicate the VDU root storage size + type: tosca.nodes.nfv.Vdu.VirtualStorage + properties: + type_of_storage: root + size_of_storage: 40 GB + + VDU_vbng_0: + type: tosca.nodes.nfv.Vdu.Compute + properties: + name: { get_input: vbng_name_0 } + description: vbng + configurable_properties: + additional_vnfc_configurable_properties: {} + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 1 + watchdog: none + inject_files: #TODO SDC bug + source_path: ../Artifacts/keys/authorized_keys #SSH authorized_keys + dest_path: /home/ubuntu/.ssh/authorized_keys + meta_data: + vnf_id: { get_input: vnf_id } + vf_module_id: { get_input: vf_module_id } + + brgemu_bng_net_ipaddr: { get_input: vbng_private_ip_0 } + cpe_signal_net_ipaddr: { get_input: vbng_private_ip_2 } + bng_gmux_net_ipaddr: { get_input: vbng_private_ip_3 } + oam_ipaddr: { get_input: vbng_private_ip_1 } + oam_cidr: { get_input: oam_private_net_cidr } + bng_gmux_cidr: { get_input: bng_gmux_private_net_cidr } + cpe_signal_cidr: { get_input: cpe_signal_private_net_cidr } + brgemu_bng_cidr: { get_input: brgemu_bng_private_net_cidr } + dcae_collector_ip: { get_input: dcae_collector_ip } + dcae_collector_port: { get_input: dcae_collector_port } + demo_artifacts_version: { get_input: demo_artifacts_version } + install_script_version: { get_input: install_script_version } + sdnc_ip: { get_input: sdnc_ip } + cloud_env: { get_input: cloud_env } + nexus_artifact_repo: { get_input: nexus_artifact_repo } + user_data: | + #!/bin/bash + METADATA=`curl -s http://169.254.169.254/openstack/2012-08-10/meta_data.json` + apt-get -y install jq + + get_metadata () { + echo $METADATA | jq -r ".meta.$1" + } + + # Create configuration files + mkdir /opt/config + echo "$(get_metadata brgemu_bng_net_ipaddr)" > /opt/config/brgemu_bng_net_ipaddr.txt + echo "$(get_metadata cpe_signal_net_ipaddr)" > /opt/config/cpe_signal_net_ipaddr.txt + echo "$(get_metadata bng_gmux_net_ipaddr)" > /opt/config/bng_gmux_net_ipaddr.txt + echo "$(get_metadata oam_ipaddr)" > /opt/config/oam_ipaddr.txt + echo "$(get_metadata oam_cidr)" > /opt/config/oam_cidr.txt + echo "$(get_metadata bng_gmux_cidr)" > /opt/config/bng_gmux_net_cidr.txt + echo "$(get_metadata cpe_signal_cidr)" > /opt/config/cpe_signal_net_cidr.txt + echo "$(get_metadata brgemu_bng_cidr)" > /opt/config/brgemu_bng_net_cidr.txt + echo "$(get_metadata dcae_collector_ip)" > /opt/config/dcae_collector_ip.txt + echo "$(get_metadata dcae_collector_port)" > /opt/config/dcae_collector_port.txt + echo "$(get_metadata demo_artifacts_version)" > /opt/config/demo_artifacts_version.txt + echo "$(get_metadata install_script_version)" > /opt/config/install_script_version.txt + echo "$(get_metadata cloud_env)" > /opt/config/cloud_env.txt + echo "$(get_metadata sdnc_ip)" > /opt/config/sdnc_ip.txt + echo "$(get_metadata nexus_artifact_repo)" > /opt/config/nexus_artifact_repo.txt + + # Download and run install script + apt-get -y install unzip + INSTALL_SCRIPT_VERSION=$(get_metadata install_script_version) + NEXUS_ARTIFACT_REPO=$(get_metadata nexus_artifact_repo) + if [[ "${INSTALL_SCRIPT_VERSION}" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi + curl -k -L "${NEXUS_ARTIFACT_REPO}/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.vcpe&a=vcpe-scripts&e=zip&v=${INSTALL_SCRIPT_VERSION}" -o /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip + unzip -j /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip -d /opt v_bng_install.sh + cd /opt + chmod +x v_bng_install.sh + ./v_bng_install.sh + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 4096 MB + # HPA requirements + vdu_memory_requirements: + memoryPageSize: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "2 MB"}' + numberOfPages: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1024"}' + virtual_cpu: + num_virtual_cpu: 2 + cpu_architecture: generic + requirements: + - virtual_storage: VirtualStorage_root_all + artifacts: + sw_image: #TODO need to put glance image name here + #file: { get_input: vcpe_image_name } + file: ../Artifacts/images/ubuntu_16.04 + type: tosca.artifacts.nfv.SwImage diff --git a/tosca/vCPE/vbrgemu/MainServiceTemplate_sriov.yaml b/tosca/vCPE/vbrgemu/MainServiceTemplate_sriov.yaml new file mode 100644 index 00000000..b936821b --- /dev/null +++ b/tosca/vCPE/vbrgemu/MainServiceTemplate_sriov.yaml @@ -0,0 +1,293 @@ +tosca_definitions_version: tosca_simple_yaml_1_0 +metadata: + template_name: vCPE_vbrgemu + template_version: "1.0" + template_author: onap +description: vCPE_vbrgemu + +imports: + - onap_dm.yaml + +node_types: + onap.vcpe_vbrgemu: + derived_from: tosca.nodes.nfv.VNF + properties: + descriptor_id: + type: string + constraints: [ valid_values: [ b1bb0ce7-4444-4fa7-95ed-4840d70a1177 ] ] + default: b1bb0ce7-4444-4fa7-95ed-4840d70a1177 + provider: + type: string + constraints: [ valid_values: [ onap ] ] + default: onap + product_name: + type: string + constraints: [ valid_values: [ vcpe_vbrgemu ] ] + default: vcpe_vbrgemu + software_version: + type: string + constraints: [ valid_values: [ '1.0' ] ] + default: '1.0' + descriptor_version: + type: string + constraints: [ valid_values: [ '1.0' ] ] + default: '1.0' + flavour_id: + type: string + constraints: [ valid_values: [ simple ] ] #only one and only allowed one DF in this example + default: simple + flavour_description: + type: string + default: simple + vnfm_info: + type: list + entry_schema: + type: string + default: ['gvnfm'] + +topology_template: +# substitution_mappings: +# node_type: onap.vcpe_vbrgemu +# requirements: +# virtual_link: [ Cp_vbrgemu_public, virtual_link ] # expose as external CP + + inputs: + vcpe_image_name: + type: string + description: image name for vcpe in openstack glance + default: ubuntu_16.04 + public_net_id: + type: string + description: public network id used during onap installation + onap_private_net_id: + type: string + description: onap OAM network id + onap_private_net_cidr: + type: string + description: oanp OAM network cidr + default: 10.0.0.0/16 + vbrgemu_bng_private_net_id: + type: string + description: Private network that connects vBRGEMU to vBNG + default: zdfw1bngin01_private + vbrgemu_bng_private_net_cidr: + type: string + description: The CIDR of the input side of vBNG private network + default: 10.3.0.0/24 + vbrgemu_private_ip_0: + type: string + description: Private IP address towards the BRGEMU-BNG network + default: 10.3.0.4 + vbrgemu_name_0: + type: string + description: Name of the vBRGEMU + default: zdcpe1cpe01brgemu01 + vnf_id: + type: string + description: The VNF ID is provided by ONAP + default: vCPE_Infrastructure_BGREMU_demo_app + vf_module_id: + type: string + description: The vCPE Module ID is provided by ONAP + default: vCPE_Customer_BRGEMU + pub_key: + type: string + description: ssh public key + default: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGx6SKrAuCz1V8KGevZueksLdWoPWJP6z3r29Z7TmPVEOjM+7PIPeSs2BVRx3rnHZBAlasMrZ+fJBS25ts9vfC+ItezQah/hr9vrkmwxCR54Lb84poW+sToPeF6i5eZY7W+jWJfLaFSFx9d2vp4zes/fOlT3NvYCXbn/3QdryQoGl7VFI8oemZypVcikZXElJeeKgAVdSwnrzuqtO/tmbXcAeSbYvVjki8ywYcsWMVMYWUWhh+1BAB6kXnTsIWqzrq0Pfvy+81WDwtiqsqmd93HY8hE0scBrXFBZzQS/AYfIFBlEuFNdLczchntjbZ0n7dmDXk8zHtCZYNk7kwb8k/ + install_script_version: + type: string + description: install script version number + default: 1.2.0-SNAPSHOT + nexus_artifact_repo: + type: string + description: Root URL for the Nexus repository for Maven artifacts + default: https://nexus.onap.org + demo_artifacts_version: + type: string + description: artifacts version used in demo vnfs + default: 1.2.0 + cloud_env: + type: string + description: cloud environment(openstack or rackspace) + default: openstack + sdnc_ip: + type: string + description: SDNC ip address used to set NAT + default: 10.0.7.1 + compile_state: + type: string + description: State to compile code or not (done, auto or build) + default: auto + + node_templates: + #onap public net +# VL_public: +# type: tosca.nodes.nfv.VnfVirtualLink +# properties: +# connectivity_type: +# layer_protocol: ipv4 +# vl_profile: +# max_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# min_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# networkName: { get_input: public_net_id } +# +# #onap oam net +# VL_onap_private: +# type: tosca.nodes.nfv.VnfVirtualLink +# properties: +# connectivity_type: +# layer_protocol: ipv4 +# vl_profile: +# max_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# min_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# networkName: { get_input: onap_private_net_id } +# cidr: { get_input: onap_private_net_cidr } + + #Private network that connects vBRGEMU to vBNG + VL_vbrgemu_bng_private_net: + type: tosca.nodes.nfv.VnfVirtualLink + properties: + connectivity_type: + layer_protocol: ipv4 + vl_profile: + max_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + min_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + networkName: { get_input: vbrgemu_bng_private_net_id} + cidr: { get_input: vbrgemu_bng_private_net_cidr } + dhcpEnabled: false + physicalNetwork: "physnet1" + + # vbrgemu related + Cp_vbrgemu_public: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + requirements: + - virtual_binding: VDU_vbrgemu_0 + #- virtual_link: VL_public + + Cp_vbrgemu_vbrgemu_bng_private_net: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vbrgemu_private_ip_0 } + vnic_type: "direct" + virtual_network_interface_requirements: + - name: "sriov-support" + support_mandatory: true + network_interface_requirements: + interfaceType: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "SR-IOV"}' + nic_io_requirements: + pciVendorId: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1234"}' + pciDeviceId: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "5678"}' + pciNumDevices: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1"}' + requirements: + - virtual_binding: VDU_vbrgemu_0 + - virtual_link: VL_vbrgemu_bng_private_net + + VirtualStorage_root_all: + # this indicate the VDU root storage size + type: tosca.nodes.nfv.Vdu.VirtualStorage + properties: + type_of_storage: root + size_of_storage: 40 GB + + VDU_vbrgemu_0: + type: tosca.nodes.nfv.Vdu.Compute + properties: + name: { get_input: vbrgemu_name_0 } + description: vbrgemu + configurable_properties: + additional_vnfc_configurable_properties: {} + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 1 + watchdog: none + inject_files: #TODO SDC bug + source_path: ../Artifacts/keys/authorized_keys #SSH authorized_keys + dest_path: /home/ubuntu/.ssh/authorized_keys + meta_data: + vnf_id: { get_input: vnf_id } + vf_module_id: { get_input: vf_module_id } + vbrgemu_bng_private_net_cidr: { get_input: vbrgemu_bng_private_net_cidr } + demo_artifacts_version: { get_input: demo_artifacts_version } + install_script_version: { get_input: install_script_version } + sdnc_ip: { get_input: sdnc_ip } + cloud_env: { get_input: cloud_env } + nexus_artifact_repo: { get_input: nexus_artifact_repo } + user_data: | + #!/bin/bash + METADATA=`curl -s http://169.254.169.254/openstack/2012-08-10/meta_data.json` + apt-get -y install jq + + get_metadata () { + echo $METADATA | jq -r ".meta.$1" + } + + # Create configuration files + mkdir /opt/config + echo "$(get_metadata vbrgemu_bng_private_net_cidr)" > /opt/config/brgemu_bng_private_net_cidr.txt + echo "$(get_metadata demo_artifacts_version)" > /opt/config/demo_artifacts_version.txt + echo "$(get_metadata install_script_version)" > /opt/config/install_script_version.txt + echo "$(get_metadata cloud_env)" > /opt/config/cloud_env.txt + echo "$(get_metadata sdnc_ip)" > /opt/config/sdnc_ip.txt + echo "$(get_metadata nexus_artifact_repo)" > /opt/config/nexus_artifact_repo.txt + + # Download and run install script + apt-get -y install unzip + INSTALL_SCRIPT_VERSION=$(get_metadata install_script_version) + NEXUS_ARTIFACT_REPO=$(get_metadata nexus_artifact_repo) + if [[ "${INSTALL_SCRIPT_VERSION}" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi + curl -k -L "${NEXUS_ARTIFACT_REPO}/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.vcpe&a=vcpe-scripts&e=zip&v=${INSTALL_SCRIPT_VERSION}" -o /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip + unzip -j /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip -d /opt v_brgemu_install.sh + cd /opt + chmod +x v_brgemu_install.sh + ./v_brgemu_install.sh + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 4096 MB + # HPA requirements + vdu_memory_requirements: + memoryPageSize: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "2 MB"}' + numberOfPages: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1024"}' + virtual_cpu: + num_virtual_cpu: 2 + cpu_architecture: generic + requirements: + - virtual_storage: VirtualStorage_root_all + artifacts: + sw_image: #TODO need to put glance image name here + #file: { get_input: vcpe_image_name } + file: ../Artifacats/images/ubuntu_16.04 + type: tosca.artifacts.nfv.SwImage diff --git a/tosca/vCPE/vgmux/MainServiceTemplate_sriov.yaml b/tosca/vCPE/vgmux/MainServiceTemplate_sriov.yaml new file mode 100644 index 00000000..e96dc2b2 --- /dev/null +++ b/tosca/vCPE/vgmux/MainServiceTemplate_sriov.yaml @@ -0,0 +1,389 @@ +tosca_definitions_version: tosca_simple_yaml_1_0 +metadata: + template_name: vCPE_vgmux + template_version: "1.0" + template_author: onap +description: vCPE_vgmux + +imports: + - onap_dm.yaml + +node_types: + onap.vcpe_vgmux: + derived_from: tosca.nodes.nfv.VNF + properties: + descriptor_id: + type: string + constraints: [ valid_values: [ b1bb0ce7-3333-4fa7-95ed-4840d70a1177 ] ] + default: b1bb0ce7-3333-4fa7-95ed-4840d70a1177 + provider: + type: string + constraints: [ valid_values: [ onap ] ] + default: onap + product_name: + type: string + constraints: [ valid_values: [ vcpe_vgmux ] ] + default: vcpe_vgmux + software_version: + type: string + constraints: [ valid_values: [ '1.0' ] ] + default: '1.0' + descriptor_version: + type: string + constraints: [ valid_values: [ '1.0' ] ] + default: '1.0' + flavour_id: + type: string + constraints: [ valid_values: [ simple ] ] #only one and only allowed one DF in this example + default: simple + flavour_description: + type: string + default: simple + vnfm_info: + type: list + entry_schema: + type: string + default: ['gvnfm'] + +topology_template: +# substitution_mappings: +# node_type: onap.vcpe_vgmux +# requirements: +# virtual_link: [ Cp_vgmux_public, virtual_link ] # expose as external CP +# virtual_link: [ Cp_vgmux_onap_private, virtual_link ] # expose as external CP + + inputs: + vcpe_image_name: + type: string + description: image name for vcpe in openstack glance + default: ubuntu_16.04 + public_net_id: + type: string + description: public network id used during onap installation + onap_private_net_id: + type: string + description: onap OAM network id + onap_private_net_cidr: + type: string + description: oanp OAM network cidr + default: 10.0.0.0/16 + bng_gmux_private_net_id: + type: string + description: Private network that connects vBNG to vGMUX + default: zdfw1bngmux01_private + bng_gmux_private_net_cidr: + type: string + description: The CIDR of the vBNG-vGMUX private network + default: 10.1.0.0/24 + mux_gw_private_net_id: + type: string + description: Private network that connects vGMUX to vGWs + default: zdfw1muxgw01_private + mux_gw_private_net_cidr: + type: string + description: The CIDR of the vGMUX private network + default: 10.5.0.0/24 + brgemu_bng_private_net_cidr: + type: string + description: The CIDR of the vBRG-vBNG private network + default: 10.3.0.0/24 + vgmux_private_ip_0: + type: string + description: Private IP address that is assigned to the vGMUX to communicate with the vBNG + default: 10.1.0.20 + vgmux_private_ip_1: + type: string + description: Private IP address that is assigned to the vGMUX to communicate with ONAP components + default: 10.0.101.20 + vgmux_private_ip_2: + type: string + description: Private IP address that is assigned to the vGMUX to communicate with vGWs + default: 10.5.0.20 + vgmux_name_0: + type: string + description: Name of the vGMUX + default: zdcpe1cpe01mux01 + vnf_id: + type: string + description: The VNF ID is provided by ONAP + default: vCPE_Infrastructure_vGMUX_demo_app + vf_module_id: + type: string + description: The vCPE Module ID is provided by ONAP + default: vCPE_Intrastructure_Metro_vGMUX + bng_gmux_private_ip: + type: string + description: Private IP address that is assigned to the vBNG to communicate with the vGMUX + default: 10.1.0.10 + dcae_collector_ip: + type: string + description: dcae collector ip + default: 10.0.4.102 + dcae_collector_port: + type: integer + description: dcae collector port + default: 8080 + pub_key: + type: string + description: ssh public key + default: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGx6SKrAuCz1V8KGevZueksLdWoPWJP6z3r29Z7TmPVEOjM+7PIPeSs2BVRx3rnHZBAlasMrZ+fJBS25ts9vfC+ItezQah/hr9vrkmwxCR54Lb84poW+sToPeF6i5eZY7W+jWJfLaFSFx9d2vp4zes/fOlT3NvYCXbn/3QdryQoGl7VFI8oemZypVcikZXElJeeKgAVdSwnrzuqtO/tmbXcAeSbYvVjki8ywYcsWMVMYWUWhh+1BAB6kXnTsIWqzrq0Pfvy+81WDwtiqsqmd93HY8hE0scBrXFBZzQS/AYfIFBlEuFNdLczchntjbZ0n7dmDXk8zHtCZYNk7kwb8k/ + install_script_version: + type: string + description: install script version number + default: 1.2.0-SNAPSHOT + nexus_artifact_repo: + type: string + description: Root URL for the Nexus repository for Maven artifacts + default: https://nexus.onap.org + cloud_env: + type: string + description: cloud environment(openstack or rackspace) + default: openstack + + node_templates: + #onap public net +# VL_public: +# type: tosca.nodes.nfv.VnfVirtualLink +# properties: +# connectivity_type: +# layer_protocol: ipv4 +# vl_profile: +# max_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# min_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# networkName: { get_input: public_net_id } +# +# #onap oam net +# VL_onap_private: +# type: tosca.nodes.nfv.VnfVirtualLink +# properties: +# connectivity_type: +# layer_protocol: ipv4 +# vl_profile: +# max_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# min_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# networkName: { get_input: onap_private_net_id } +# cidr: { get_input: onap_private_net_cidr } + + #Private network that connects vBNG to vGMUX + VL_bng_gmux_private_net: + type: tosca.nodes.nfv.VnfVirtualLink + properties: + connectivity_type: + layer_protocol: ipv4 + vl_profile: + max_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + min_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + networkName: { get_input: bng_gmux_private_net_id} + cidr: { get_input: bng_gmux_private_net_cidr } + dhcpEnabled: false + physicalNetwork: "physnet1" + + #Private network that connects vGMUX to vGWs + VL_mux_gw_private_net: + type: tosca.nodes.nfv.VnfVirtualLink + properties: + connectivity_type: + layer_protocol: ipv4 + vl_profile: + max_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + min_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + networkName: { get_input: mux_gw_private_net_id} + cidr: { get_input: mux_gw_private_net_cidr } + dhcpEnabled: false + physicalNetwork: "physnet1" + + # vgmux related + Cp_vgmux_public: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + requirements: + - virtual_binding: VDU_vgmux_0 + #- virtual_link: VL_public + + Cp_vgmux_onap_private: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vgmux_private_ip_1 } + requirements: + - virtual_binding: VDU_vgmux_0 + #- virtual_link: VL_onap_private + + Cp_vgmux_bng_gmux_private_net: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vgmux_private_ip_0 } + vnic_type: "direct" + virtual_network_interface_requirements: + - name: "sriov-support" + support_mandatory: true + network_interface_requirements: + interfaceType: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "SR-IOV"}' + nic_io_requirements: + pciVendorId: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1234"}' + pciDeviceId: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "5678"}' + pciNumDevices: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1"}' + requirements: + - virtual_binding: VDU_vgmux_0 + - virtual_link: VL_bng_gmux_private_net + + Cp_vgmux_mux_gw_private_net: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vgmux_private_ip_2 } + vnic_type: "direct" + virtual_network_interface_requirements: + - name: "sriov-support" + support_mandatory: true + network_interface_requirements: + interfaceType: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "SR-IOV"}' + nic_io_requirements: + pciVendorId: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1234"}' + pciDeviceId: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "5678"}' + pciNumDevices: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1"}' + requirements: + - virtual_binding: VDU_vgmux_0 + - virtual_link: VL_mux_gw_private_net + + VirtualStorage_root_all: + # this indicate the VDU root storage size + type: tosca.nodes.nfv.Vdu.VirtualStorage + properties: + type_of_storage: root + size_of_storage: 40 GB + + VDU_vgmux_0: + type: tosca.nodes.nfv.Vdu.Compute + properties: + name: { get_input: vgmux_name_0 } + description: vgmux + configurable_properties: + additional_vnfc_configurable_properties: {} + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 1 + watchdog: none + inject_files: #TODO SDC bug + source_path: ../Artifacts/keys/authorized_keys #SSH authorized_keys + dest_path: /home/ubuntu/.ssh/authorized_keys + meta_data: + vnf_id: { get_input: vnf_id } + vf_module_id: { get_input: vf_module_id } + mux_to_bng_net_ipaddr: { get_input: vgmux_private_ip_0 } + oam_ipaddr: { get_input: vgmux_private_ip_1 } + mux_gw_net_ipaddr: { get_input: vgmux_private_ip_2 } + bng_to_mux_net_ipaddr: { get_input: bng_gmux_private_ip } + bng_mux_net_cidr: { get_input: bng_gmux_private_net_cidr } + oam_cidr: { get_input: oam_private_net_cidr } + mux_gw_net_cidr: { get_input: mux_gw_private_net_cidr } + brg_bng_net_cidr: { get_input: brgemu_bng_private_net_cidr } + install_script_version: { get_input: install_script_version } + cloud_env: { get_input: cloud_env } + nexus_artifact_repo: { get_input: nexus_artifact_repo } + user_data: | + #!/bin/bash + METADATA=`curl -s http://169.254.169.254/openstack/2012-08-10/meta_data.json` + apt-get -y install jq + + get_metadata () { + echo $METADATA | jq -r ".meta.$1" + } + + # Create configuration files + mkdir /opt/config + echo "$(get_metadata mux_to_bng_net_ipaddr)" > /opt/config/mux_to_bng_net_ipaddr.txt + echo "$(get_metadata oam_ipaddr)" > /opt/config/oam_ipaddr.txt + echo "$(get_metadata mux_gw_net_ipaddr)" > /opt/config/mux_gw_net_ipaddr.txt + echo "$(get_metadata bng_to_mux_net_ipaddr)" > /opt/config/bng_to_mux_net_ipaddr.txt + echo "$(get_metadata bng_mux_net_cidr)" > /opt/config/bng_mux_net_cidr.txt + echo "$(get_metadata oam_cidr)" > /opt/config/oam_cidr.txt + echo "$(get_metadata mux_gw_net_cidr)" > /opt/config/mux_gw_net_cidr.txt + echo "$(get_metadata brg_bng_net_cidr)" > /opt/config/brg_bng_net_cidr.txt + echo "$(get_metadata install_script_version)" > /opt/config/install_script_version.txt + echo "$(get_metadata cloud_env)" > /opt/config/cloud_env.txt + echo "$(get_metadata nexus_artifact_repo)" > /opt/config/nexus_artifact_repo.txt + + # Download and run install script + apt-get -y install unzip + INSTALL_SCRIPT_VERSION=$(get_metadata install_script_version) + NEXUS_ARTIFACT_REPO=$(get_metadata nexus_artifact_repo) + if [[ "${INSTALL_SCRIPT_VERSION}" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi + curl -k -L "${NEXUS_ARTIFACT_REPO}/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.vcpe&a=vcpe-scripts&e=zip&v=${INSTALL_SCRIPT_VERSION}" -o /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip + unzip -j /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip -d /opt v_gmux_install.sh + cd /opt + chmod +x v_gmux_install.sh + ./v_gmux_install.sh + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 4096 MB + # HPA requirements + vdu_memory_requirements: + memoryPageSize: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "2 MB"}' + numberOfPages: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1024"}' + virtual_cpu: + num_virtual_cpu: 2 + cpu_architecture: generic + requirements: + - virtual_storage: VirtualStorage_root_all + artifacts: + sw_image: #TODO need to put glance image name here + #file: { get_input: vcpe_image_name } + file: ../Artifacts/images/ubuntu_16.04 + type: tosca.artifacts.nfv.SwImage + diff --git a/tosca/vCPE/vgw/MainServiceTemplate_sriov.yaml b/tosca/vCPE/vgw/MainServiceTemplate_sriov.yaml new file mode 100644 index 00000000..f8a6adda --- /dev/null +++ b/tosca/vCPE/vgw/MainServiceTemplate_sriov.yaml @@ -0,0 +1,380 @@ +tosca_definitions_version: tosca_simple_yaml_1_0 +metadata: + template_name: vCPE_vgw + template_version: "1.0" + template_author: onap +description: vCPE_vgw + +imports: + - onap_dm.yaml + +node_types: + onap.vcpe_vgw: + derived_from: tosca.nodes.nfv.VNF + properties: + descriptor_id: + type: string + constraints: [ valid_values: [ b1bb0ce7-2222-4fa7-95ed-4840d70a1177 ] ] + default: b1bb0ce7-2222-4fa7-95ed-4840d70a1177 + provider: + type: string + constraints: [ valid_values: [ onap ] ] + default: onap + product_name: + type: string + constraints: [ valid_values: [ vcpe_vgw ] ] + default: vcpe_vgw + software_version: + type: string + constraints: [ valid_values: [ '1.0' ] ] + default: '1.0' + descriptor_version: + type: string + constraints: [ valid_values: [ '1.0' ] ] + default: '1.0' + flavour_id: + type: string + constraints: [ valid_values: [ simple ] ] #only one and only allowed one DF in this example + default: simple + flavour_description: + type: string + default: simple + vnfm_info: + type: list + entry_schema: + type: string + default: ['gvnfm'] + +topology_template: + #substitution_mappings: + # node_type: onap.vcpe_vgw + # requirements: + # virtual_link: [ Cp_vgw_public, virtual_link ] # expose as external CP + # virtual_link: [ Cp_vgw_onap_private, virtual_link ] # expose as external CP + + inputs: + vcpe_image_name: + type: string + description: image name for vcpe in openstack glance + default: ubuntu_16.04 + public_net_id: + type: string + description: public network id used during onap installation + onap_private_net_id: + type: string + description: onap OAM network id + onap_private_net_cidr: + type: string + description: oanp OAM network cidr + default: 10.0.0.0/16 + mux_gw_private_net_id: + type: string + description: Private network that connects vGMUX to vGWs + default: zdfw1muxgw01_private + mux_gw_private_net_cidr: + type: string + description: he CIDR of the vGMUX private network + default: 10.5.0.0/24 + cpe_public_net_id: + type: string + description: cpe public net name + default: zdfw1cpe01_public + cpe_public_net_cidr: + type: string + description: cpe public net cidr + default: 10.2.0.0/24 + vgw_private_ip_0: + type: string + description: Private IP address that is assigned to the vGW to communicate with vGMUX + default: 10.5.0.21 + vgw_private_ip_1: + type: string + description: Private IP address that is assigned to the vGW to communicate with ONAP components + default: 10.0.101.30 + vgw_private_ip_2: + type: string + description: Private IP address that is assigned to the vGW to communicate with vCPE public network + default: 10.2.0.3 + vgw_name_0: + type: string + description: Name of the vGW + default: zdcpe1cpe01gw01 + dcae_collector_ip: + type: string + description: dcae collector ip + default: 10.0.4.102 + dcae_collector_port: + type: integer + description: dcae collector port + default: 8080 + pub_key: + type: string + description: ssh public key + default: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGx6SKrAuCz1V8KGevZueksLdWoPWJP6z3r29Z7TmPVEOjM+7PIPeSs2BVRx3rnHZBAlasMrZ+fJBS25ts9vfC+ItezQah/hr9vrkmwxCR54Lb84poW+sToPeF6i5eZY7W+jWJfLaFSFx9d2vp4zes/fOlT3NvYCXbn/3QdryQoGl7VFI8oemZypVcikZXElJeeKgAVdSwnrzuqtO/tmbXcAeSbYvVjki8ywYcsWMVMYWUWhh+1BAB6kXnTsIWqzrq0Pfvy+81WDwtiqsqmd93HY8hE0scBrXFBZzQS/AYfIFBlEuFNdLczchntjbZ0n7dmDXk8zHtCZYNk7kwb8k/ + nexus_artifact_repo: + type: string + description: Root URL for the Nexus repository for Maven artifacts + default: https://nexus.onap.org + demo_artifacts_version: + type: string + description: artifacts version used in demo vnfs + default: 1.2.0 + install_script_version: + type: string + description: install script version number + default: 1.2.0-SNAPSHOT + cloud_env: + type: string + description: cloud environment(openstack or rackspace) + default: openstack + mux_ip_addr: + type: string + description: IP address of vGMUX + default: 10.5.0.20 + vg_vgmux_tunnel_vni: + type: integer + description: vni value of vG-vGMUX vxlan tunnel + default: 100 + vnf_id: + type: string + description: The VNF ID is provided by ONAP + default: vCPE_Infrastructure_GW_demo_app + vf_module_id: + type: string + description: The vCPE Module ID is provided by ONAP + default: vCPE_Customer_GW + + node_templates: + #onap public net +# VL_public: +# type: tosca.nodes.nfv.VnfVirtualLink +# properties: +# connectivity_type: +# layer_protocol: ipv4 +# vl_profile: +# max_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# min_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# networkName: { get_input: public_net_id } +# +# #onap oam net +# VL_onap_private: +# type: tosca.nodes.nfv.VnfVirtualLink +# properties: +# connectivity_type: +# layer_protocol: ipv4 +# vl_profile: +# max_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# min_bit_rate_requirements: +# root: 10000000 +# leaf: 10000000 +# networkName: { get_input: onap_private_net_id } +# cidr: { get_input: onap_private_net_cidr } + + #Private network that connects vGMUX to vGWs + VL_mux_gw_private_net: + type: tosca.nodes.nfv.VnfVirtualLink + properties: + connectivity_type: + layer_protocol: ipv4 + vl_profile: + max_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + min_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + networkName: { get_input: mux_gw_private_net_id} + cidr: { get_input: mux_gw_private_net_cidr } + dhcpEnabled: false + physicalNetwork: "physnet1" + + #cpe public network + VL_cpe_public: + type: tosca.nodes.nfv.VnfVirtualLink + properties: + connectivity_type: + layer_protocol: ipv4 + vl_profile: + max_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + min_bit_rate_requirements: + root: 10000000 + leaf: 10000000 + networkName: { get_input: cpe_public_net_id} + cidr: { get_input: cpe_public_net_cidr } + dhcpEnabled: false + + # vgw related + Cp_vgw_public: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + requirements: + - virtual_binding: VDU_vgw_0 + #- virtual_link: VL_public + + Cp_vgw_onap_private: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vgw_private_ip_1 } + requirements: + - virtual_binding: VDU_vgw_0 + #- virtual_link: VL_onap_private + + Cp_vgw_mux_gw_private_net: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vgw_private_ip_0 } + vnic_type: "direct" + virtual_network_interface_requirements: + - name: "sriov-support" + support_mandatory: true + network_interface_requirements: + interfaceType: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "SR-IOV"}' + nic_io_requirements: + pciVendorId: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1234"}' + pciDeviceId: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "5678"}' + pciNumDevices: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1"}' + requirements: + - virtual_binding: VDU_vgw_0 + - virtual_link: VL_mux_gw_private_net + + Cp_vgw_cpe_public: + type: tosca.nodes.nfv.VduCp + properties: + layer_protocol: [ipv4] + trunk_mode: false + protocol_data: + - asscociated_layer_protocol: ipv4 + address_data: + address_type: ip_address + l3_address_data: + ip_address_assignment: false + floating_ip_activated: false + fixed_ip_address: + - { get_input: vgw_private_ip_2 } + requirements: + - virtual_binding: VDU_vgw_0 + - virtual_link: VL_cpe_public + + VirtualStorage_root_all: + # this indicate the VDU root storage size + type: tosca.nodes.nfv.Vdu.VirtualStorage + properties: + type_of_storage: root + size_of_storage: 40 GB + + VDU_vgw_0: + type: tosca.nodes.nfv.Vdu.Compute + properties: + name: { get_input: vgw_name_0 } + description: vgw + configurable_properties: + additional_vnfc_configurable_properties: {} + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 1 + watchdog: none + inject_files: # TODO SDC BUG + source_path: ../Artifacts/keys/authorized_keys #SSH authorized_keys + dest_path: /home/ubuntu/.ssh/authorized_keys + meta_data: + vnf_id: { get_input: vnf_id } + vf_module_id: { get_input: vf_module_id } + mux_gw_private_net_ipaddr: { get_input: vgw_private_ip_0 } + oam_ipaddr: { get_input: vgw_private_ip_1 } + oam_cidr: { get_input: oam_private_net_cidr } + cpe_public_net_cidr: { get_input: cpe_public_net_cidr } + mux_gw_private_net_cidr: { get_input: mux_gw_private_net_cidr } + mux_ip_addr: { get_input: mux_ip_addr } + vg_vgmux_tunnel_vni: { get_input: vg_vgmux_tunnel_vni } + install_script_version: { get_input: install_script_version } + cloud_env: { get_input: cloud_env } + nexus_artifact_repo: { get_input: nexus_artifact_repo } + user_data: | + #!/bin/bash + METADATA=`curl -s http://169.254.169.254/openstack/2012-08-10/meta_data.json` + apt-get -y install jq + + get_metadata () { + echo $METADATA | jq -r ".meta.$1" + } + + # Create configuration files + mkdir /opt/config + echo "$(get_metadata oam_ipaddr)" > /opt/config/oam_ipaddr.txt + echo "$(get_metadata oam_cidr)" > /opt/config/oam_cidr.txt + echo "$(get_metadata cpe_public_net_cidr)" > /opt/config/cpe_public_net_cidr.txt + echo "$(get_metadata mux_gw_private_net_ipaddr)" > /opt/config/mux_gw_private_net_ipaddr.txt + echo "$(get_metadata mux_gw_private_net_cidr)" > /opt/config/mux_gw_private_net_cidr.txt + echo "$(get_metadata install_script_version)" > /opt/config/install_script_version.txt + echo "$(get_metadata cloud_env)" > /opt/config/cloud_env.txt + echo "$(get_metadata mux_ip_addr)" > /opt/config/mux_ip_addr.txt + echo "$(get_metadata vg_vgmux_tunnel_vni)" > /opt/config/vg_vgmux_tunnel_vni.txt + echo "$(get_metadata nexus_artifact_repo)" > /opt/config/nexus_artifact_repo.txt + + # Download and run install script + apt-get -y install unzip + INSTALL_SCRIPT_VERSION=$(get_metadata install_script_version) + NEXUS_ARTIFACT_REPO=$(get_metadata nexus_artifact_repo) + if [[ "${INSTALL_SCRIPT_VERSION}" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi + curl -k -L "${NEXUS_ARTIFACT_REPO}/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.vcpe&a=vcpe-scripts&e=zip&v=${INSTALL_SCRIPT_VERSION}" -o /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip + unzip -j /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip -d /opt v_gw_install.sh + cd /opt + chmod +x v_gw_install.sh + ./v_gw_install.sh + capabilities: + virtual_compute: + properties: + #TODO add local disk size + virtual_memory: + virtual_mem_size: 4096 MB + # HPA requirements + vdu_memory_requirements: + memoryPageSize: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "2 MB"}' + numberOfPages: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "1024"}' + virtual_cpu: + num_virtual_cpu: 2 + cpu_architecture: generic + requirements: + - virtual_storage: VirtualStorage_root_all + artifacts: + sw_image: #TODO need to put glance image name here + #file: { get_input: vcpe_image_name } + file: ../Artifacts/images/ubuntu_16.04 + type: tosca.artifacts.nfv.SwImage -- cgit 1.2.3-korg