From: Gary Wu Date: Tue, 11 Sep 2018 15:07:08 +0000 (+0000) Subject: Merge "update opt config variables for SO" X-Git-Tag: 1.3.0~45 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=5c52cfa2e1b6b5f29555d971bd3967804a127248;hp=40cbcf8ce3fc45331a4624a724dbf5ad5b25764a;p=demo.git Merge "update opt config variables for SO" --- diff --git a/boot/robot/integration_preload_parameters.py b/boot/robot/integration_preload_parameters.py index 1ab11f50..13e9621b 100644 --- a/boot/robot/integration_preload_parameters.py +++ b/boot/robot/integration_preload_parameters.py @@ -10,7 +10,7 @@ GLOBAL_PRELOAD_PARAMETERS = { "onap_private_net_cidr" : "10.0.0.0/8", "onap_sec_group" : "${GLOBAL_INJECTED_SEC_GROUP}", "dcae_collector_ip" : "${GLOBAL_INJECTED_DCAE_COLLECTOR_IP}", - "dcae_collector_port" : "8080", + "dcae_collector_port" : "8081", "public_net_id" : "${GLOBAL_INJECTED_PUBLIC_NET_ID}", "cloud_env" : "${GLOBAL_INJECTED_CLOUD_ENV}", "install_script_version" : "${GLOBAL_INJECTED_SCRIPT_VERSION}", diff --git a/heat/ONAP/cloud-config/aaf_install.sh b/heat/ONAP/cloud-config/aaf_install.sh index c2389d03..d358364e 100644 --- a/heat/ONAP/cloud-config/aaf_install.sh +++ b/heat/ONAP/cloud-config/aaf_install.sh @@ -6,6 +6,7 @@ export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort NEXUS_USERNAME=$(cat /opt/config/nexus_username.txt) NEXUS_PASSWD=$(cat /opt/config/nexus_password.txt) NEXUS_DOCKER_REPO=$(cat /opt/config/nexus_docker_repo.txt) +AAF_DOCKER_VERSION=$(cat /opt/config/docker_version.txt) HOSTNAME=`hostname -f` FQDN=aaf.api.simpledemo.onap.org HOST_IP=$(cat /opt/config/local_ip.txt) @@ -31,15 +32,14 @@ fi CASS_IP=`docker inspect aaf_cass | grep '"IPAddress' | head -1 | cut -d '"' -f 4` CASS_HOST="cass.aaf.osaaf.org:"$CASS_IP -docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_config:latest -docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_core:latest -docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_cm:latest -docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_fs:latest -docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_gui:latest -docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_hello:latest -docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_locate:latest -docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_oauth:latest -docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_service:latest +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_config:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_cm:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_fs:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_gui:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_hello:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_locate:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_oauth:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_service:$AAF_DOCKER_VERSION cd $CURRENT_DIR /bin/bash ./aaf_vm_init.sh diff --git a/heat/ONAP/cloud-config/aaf_vm_init.sh b/heat/ONAP/cloud-config/aaf_vm_init.sh index 59486e94..f2dd8781 100644 --- a/heat/ONAP/cloud-config/aaf_vm_init.sh +++ b/heat/ONAP/cloud-config/aaf_vm_init.sh @@ -2,6 +2,12 @@ CURRENT_DIR=$(pwd) +if [ ! -e /opt/authz/auth/docker/d.props ]; then + cp /opt/authz/auth/docker/d.props.init /opt/authz/auth/docker/d.props +fi +. /opt/authz/auth/docker/d.props + + NEXUS_USERNAME=$(cat /opt/config/nexus_username.txt) NEXUS_PASSWD=$(cat /opt/config/nexus_password.txt) if [ -e /opt/authz/auth/docker/d.props ]; then @@ -19,7 +25,7 @@ fi echo $NEXUS_DOCKER_REPO HOSTNAME=`hostname -f` FQDN=aaf.api.simpledemo.onap.org -HOST_IP=$(cat /opt/config/local_ip.txt) +HOST_IP=$(cat /opt/config/public_ip.txt) cd /opt/authz/auth/auth-cass/docker if [ "`docker container ls | grep aaf_cass`" = "" ]; then @@ -28,12 +34,6 @@ if [ "`docker container ls | grep aaf_cass`" = "" ]; then bash ./dinstall.sh fi -if [ ! -e /opt/authz/auth/docker/d.props ]; then - cp /opt/authz/auth/docker/d.props.init /opt/authz/auth/docker/d.props -fi - -VERSION=$(grep VERSION /opt/authz/auth/docker/d.props) -VERSION=${VERSION#VERSION=} CASS_IP=`docker inspect aaf_cass | grep '"IPAddress' | head -1 | cut -d '"' -f 4` CASS_HOST="cass.aaf.osaaf.org:"$CASS_IP if [ ! -e /opt/authz/auth/docker/cass.props ]; then @@ -42,20 +42,28 @@ fi sed -i "s/CASS_HOST=.*/CASS_HOST="$CASS_HOST"/g" /opt/authz/auth/docker/cass.props # TODO Pull from Config Dir -CADI_LATITUDE=37.781 -CADI_LONGITUDE=-122.261 +if [ "$LATITUDE" = "" ]; then + LATITUDE=37.781 + LONGITUDE=-122.261 + sed -i "s/LATITUDE=.*/LATITUDE=$LATITUDE/g" /opt/authz/auth/docker/d.props + sed -i "s/LONGITUDE=.*/LONGITUDE=$LONGITUDE/g" /opt/authz/auth/docker/d.props +fi sed -i "s/DOCKER_REPOSITORY=.*/DOCKER_REPOSITORY=$NEXUS_DOCKER_REPO/g" /opt/authz/auth/docker/d.props sed -i "s/VERSION=.*/VERSION=$VERSION/g" /opt/authz/auth/docker/d.props sed -i "s/HOSTNAME=.*/HOSTNAME=$HOSTNAME/g" /opt/authz/auth/docker/d.props sed -i "s/HOST_IP=.*/HOST_IP=$HOST_IP/g" /opt/authz/auth/docker/d.props -sed -i "s/LATITUDE=.*/LATITUDE=$CADI_LATITUDE/g" /opt/authz/auth/docker/d.props -sed -i "s/LONGITUDE=.*/LONGITUDE=$CADI_LONGITUDE/g" /opt/authz/auth/docker/d.props -SIGNER_P12="$CURRENT_DIR/sample_ca/aaf.signer.p12" -AAF_P12="$CURRENT_DIR/sample_ca/aaf.bootstrap.p12" +SIGNER_B64="$CURRENT_DIR/config/sample_ca/aaf.signer.b64" +SIGNER_P12="$CURRENT_DIR/config/sample_ca/aaf.signer.p12" +AAF_P12="$CURRENT_DIR/config/sample_ca/aaf.bootstrap.p12" P12_PASSWORD="something easy" +if [ ! -e "$SIGNER_P12" ]; then + mkdir -p "$CURRENT_DIR/config/sample_ca" + base64 -d $SIGNER_B64 > $SIGNER_P12 +fi + if [ ! -e "$AAF_P12" ]; then mkdir -p $CURRENT_DIR/sample_ca cd /opt/authz/conf/CA @@ -75,8 +83,8 @@ if [ -e "$AAF_P12" ]; then fi if [ -e "$SIGNER_P12" ]; then - if [ -e "/opt/config/cadi_x509_issuers.txt" ]; then - ISSUERS=$(cat "/opt/config/cadi_x509_issuers.txt")":" + if [ "$CADI_X509_ISSUERS" != "" ]; then + CADI_X509_ISSUERS="$CADI_X509_ISSUERS:" fi # Pick the REAL subject off the P12 SUBJECT=$(echo "$P12_PASSWORD" | openssl pkcs12 -info -clcerts -in $SIGNER_P12 -nokeys -passin stdin | grep subject) @@ -90,7 +98,7 @@ if [ -e "$SIGNER_P12" ]; then RSUBJECT="$S, $RSUBJECT" fi done - ISSUERS="$ISSUERS$RSUBJECT" + ISSUERS="$CADI_X509_ISSUERS$RSUBJECT" sed -i "s/CADI_X509_ISSUERS=.*/CADI_X509_ISSUERS=\"$ISSUERS\"/g" /opt/authz/auth/docker/d.props sed -i "s/AAF_SIGNER_P12=.*/AAF_SIGNER_P12=${SIGNER_P12//\//\\/}/g" /opt/authz/auth/docker/d.props sed -i "s/AAF_SIGNER_PASSWORD=.*/AAF_SIGNER_PASSWORD=\"$P12_PASSWORD\"/g" /opt/authz/auth/docker/d.props diff --git a/heat/ONAP/cloud-config/sample_ca/.gitignore b/heat/ONAP/cloud-config/sample_ca/.gitignore index 5f8bc015..cabb364e 100644 --- a/heat/ONAP/cloud-config/sample_ca/.gitignore +++ b/heat/ONAP/cloud-config/sample_ca/.gitignore @@ -1 +1,2 @@ +aaf.signer.p12 aaf.bootstrap.p12 diff --git a/heat/ONAP/cloud-config/sample_ca/aaf.signer.b64 b/heat/ONAP/cloud-config/sample_ca/aaf.signer.b64 new file mode 100644 index 00000000..e561a79a --- /dev/null +++ b/heat/ONAP/cloud-config/sample_ca/aaf.signer.b64 @@ -0,0 +1,50 @@ +MIILHgIBAzCCCuQGCSqGSIb3DQEHAaCCCtUEggrRMIIKzTCCBU8GCSqGSIb3DQEHBqCCBUAwggU8 +AgEAMIIFNQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQIFm99wNswitsCAggAgIIFCL9ry6qG +pcnYFQfHR0RaQhZswgrJOslFbI69lZcb8kNpnpl+o8BMkB+WYPGd1I3Nvxg9bBcCstyHaGdKcT3H +9VKukKq1lJ1cJdGyHgMFVAN/wDk63xOb6bLj0PdrMpwOnRGmZwVwzR2Kx+5qYolXTggdJ0vrsu2n +O68w7jzAKswP2JnSqZzR4kjccRdoBRBzGHwdEo1KJPGWYMabk/Pu1utU3PmPaWYucIJxpPWG8/3S +8smGPj8KxFLFs7UJZvVuIVFwTWpW1SMR2dfA5d6i/+M3UrskIeRFUHhTE+dEMduZQ7VsriHROsfc +vmuks3LdhfQpOcF/ZMUqqiHsCuy42tCEYKbvWzayWrr2jsNXTGHgI64wd8RSEHQKJxAUpSORLwIA +8lK0pwcHl5I4NChkdd4Pb3bpoDaKnlX3T6KoPy61Yu8VUtCtN8xaYA2LGrQJGVEO+3TKiYy27ISq +cDwDZfqvZC34GUfp7n5eMny0TSIyCKm+jZCpKenvESWmQZiWjL8Psj3KEr9PlAQ+cEslJ3tC0oQ9 +jn7WCc8JR+n0c6EckyFYqMcHIhvbheEwLSF7aQ29I4SmQR6WQJgTRJOBGzEHejmXgUTYaBtjoicj +4/BctsMrYoe/qgJwSK7kz+GFqxzzINgxYB/vXihHYvwx/PEzoIOH1ONH39d9OfH7TLyUKCB/SMlR +2dPTwlOgEjunqsS4rhjF0s2Ru/r1WgpJLefIAtAwJqDJ7J0nZFoQyNamC7qIzYlAxcNoqXnysrhE +PQrMvNa8PFhE1nq+fb06ZFzz/VDqvadYTPuI6CPeGtClZNbIFsgFfkFYUTVdxLns82Fe2lRprIr4 +FJfVGa6IkLxNEgb4TaZQSYyxx0Kb5IXfIzB9Z3h7cWBC529u5T2gs2wEU2HJVVueRiziXdPGc4Lm +0A0ThDVHQ9NR0ukhjQUfAdxCtUCtODXNr0jNyHlvtCrgAI2xMsdTzfoTCXPAGc8xcm7f6Q81ijRA +DDCRe3kp+PA2npg5Gaffp6IuMMQBCHPcoNrlWvBOtI4RomwEfcyJWGaSV6fezctzWBvYyMnS/QJo +C0bPkCiS9awkdc2OBEtN5B7srkJk2p1WsjZGStNbcv/LPpCiko7oOyn3YgZXtTVsQVGypKQYnoTQ +Lwd0+u5nvx38tfBL8Gd9psZbHz+2nBF3aZ7XDx/OGo45WHinb8t4DVoxBctMNRRbT7CfMVabAIm/ +Blw00NMSy3zzBNMXLJkWzJrbigLRiQUWEabDNxf60OhbTIuQ/4hUTnaYN8/vNaqbfqzN7bj6FEyO +l8gurmHtHMFVLCl29tmLkKJa1se7m/Zt8fHmzHOla5OTsoZmte+p3NO7v+tTry75c4xobmEweKS0 +bwaMqi/NlZ5Sd64bveJQv67U4qc/b6mCEyhcFrqHfXpTga/3Hh/oScZw60Uf6O0MDVJhjkClVQMd +8B1eyK8B1m0wNUtdtzGeFj02rIzfNQoZxo5iyMDuLy+d0JUEE0eDDEBYsDtE0t5oaDLe1IgVLYuo ++0r50bqK0NJ5QlNAygerEMuxisiYbRhVB/Fw4LgNNCO3E8YdNFOn09b5inafw0ISRkuqnn4jZC5Q +E2CDHUOEkdGwSit5uumhqqmJRJjOazNWq0eG0I0soUNQ1GOkbo7H7mqRsHEJ73MGfd3PD09dXdsl +HNTEZ9+UDa6BxbV4c1purAOpISMUi78tmaBXRdswggV2BgkqhkiG9w0BBwGgggVnBIIFYzCCBV8w +ggVbBgsqhkiG9w0BDAoBAqCCBO4wggTqMBwGCiqGSIb3DQEMAQMwDgQIUzKuwMkahNMCAggABIIE +yD3YEvqVSqXcIeZq/mv04CzaG922gC7uaS7DSWkVCqRHQlAXFD5T2FiAON205sPRaoX6/J0d6YQ7 +plrYQgf1uNy0aV+3fF0UNyBvceCWZI1wvDUliTmsWIIDFaKEXBtCyZZEWNldn++PXoeCN0ARFiGD +TC8BukruKiFnGNWTbnVqnoRLTeuPd24OfhjaZUJJv0U8/4mGguZGLeUxQwzSH9u3kXrF5Dq5rT8d +PTi4R+fkTlRnINn3p95zkkBvoNANO1v3P6XR4Lzmj6o7+nOMEjQtdAmspefQWirtjnMYQqjihgjY +cVpY2UCFRO5NRs8ZGwqbWEskrkPqDS27HrIqlCp1Pm24YiH7jztXXm/9wEr7cbqHcGhMYFGUpnZD +SulX+VXB3mKBqtCkgmXdCWbEy/iDHXdGCcQSZrp8gqSO/Zz4hNl4QB8hmOtF0kj3tAFQMVvqXpCf +XZQ9F64/AxeMLDPZlTb4v4eWzllwb8lo1cxLT6dD94Galae4Tfx30OdT8n1nnw2el9eNNXTQq+i5 +Tlqu5idJ5+JB4Sk7iQ5B81cEqlOfInke3tkKVzUtH46+oPr6dplR8fqYnBBdttOG6/8fcOttzs54 +RUqny8WKcGwUK2f2T88HwzmsiaRJzkFmzeOXXUy/z4/y1V4qbXBiZ0ADcRCIVkmzLZYBRSK0rm+P +Fqx3xlwkUBnsr1ebreNiz2UUbFKNsWLfDzsjb0zwenz73SpGcJzE7Rfdyizy7aibn5FAmlM7sgqy +cwNJ5JaMk88qW+jMD86jZypMVrINNQerNP82+VZmKzaH/XuEslSn4Vpjwlh1vqfGxkXTG4QyN0Jr +dCyDqOY+gfPr92AjMHgQ6cmSqXRWro6C3v0AGfiTHGxXWQ4w6hH1GtNj+t3yuIeiu4Woqn0IF5Fe +cP/pgN27UMlrAoNU5racJgUWIENBBiPmQ7wwyEPVcG7quudkTXr52Ob8R153YmRn5OMrzomP4wnA +BvVlbXn4hiea02tOCP66vZmb3L+S1ZNm/Hw+DBJA7PSDkv8gJTb1YB6EJHHT1ArlQ37KHRth9NA+ +kYz1X0nnSFKU0HeegXnwA6vGHRZTJC4/+VwsEa/Js0T7/Z0kAPifLse+bRH8MrKKJgzm+FwMvZvl +TvbkYqG2/wsfRmA1Uzvsgfs6vgww5MZnH5875BS7HuHKeGhzkeh42D1vLmzw5Y/es8/3MysQoqc/ +za12D6J0fDT1gLnK2pe/+NgEihLE3YGd1cc4ZHp60++L1vcl34kX60D8xS52zlItIkGDk10H9Bn8 +KtH11EZ+5tcN9o20qDMrLGPGRpwrNK47EipEb7xWrm4j6sK+CT2THxam4mkoPWxQPykzC3Iu/6ma +f37YGaX/rbDK4X7KPI3UhsciChIoCiQuAd5AT+0jON2c4zS796kZb/cxSSjx4o8DLHaw49TvqnGw +XN9+5Xf2hZtn86x6kd2WJ+RhtoglPMfZxuzVY4OffwqNBqocahCdGNuOMbFA+s/GA5rOyhtwuT5T +Gfo8W1hPMW1F18AA0ITRwVNLrrvophWnRMX8r2em0P9C8kWBxB9bu+r7LRxg6pm2dCkrUVq4VK+3 +1qFvB2GJ6rrk5Z4eiXrnuNNUN5cYKdw5A3xNKzFaMCMGCSqGSIb3DQEJFTEWBBQCiRlcVsnA4fcn +3jYAcvafhe14+jAzBgkqhkiG9w0BCRQxJh4kAGEAYQBmAF8AaQBuAHQAZQByAG0AZQBkAGkAYQB0 +AGUAXwA5MDEwITAJBgUrDgMCGgUABBSfSZRY3B152JG+O3Z9fUP7J9d4JwQIvPsWr/bYXtoCAggA diff --git a/heat/ONAP/cloud-config/sample_ca/aaf.signer.p12 b/heat/ONAP/cloud-config/sample_ca/aaf.signer.p12 deleted file mode 100644 index 8de21238..00000000 Binary files a/heat/ONAP/cloud-config/sample_ca/aaf.signer.p12 and /dev/null differ diff --git a/heat/ONAP/cloud-config/so_install.sh b/heat/ONAP/cloud-config/so_install.sh index 3a8f3fc2..36c7c8cb 100644 --- a/heat/ONAP/cloud-config/so_install.sh +++ b/heat/ONAP/cloud-config/so_install.sh @@ -1,7 +1,7 @@ #!/bin/bash # Read configuration files -OPENSTACK_API_KEY=$(cat /opt/config/openstack_api_key.txt) +#OPENSTACK_API_KEY=$(cat /opt/config/openstack_api_key.txt) GERRIT_BRANCH=$(cat /opt/config/gerrit_branch.txt) CODE_REPO=$(cat /opt/config/remote_repo.txt) HTTP_PROXY=$(cat /opt/config/http_proxy.txt) @@ -16,7 +16,7 @@ fi # Clone Gerrit repository and run docker containers. cd /opt git clone -b $GERRIT_BRANCH --single-branch $CODE_REPO test_lab -SO_ENCRYPTION_KEY=$(cat /opt/test_lab/encryption.key) -echo -n "$OPENSTACK_API_KEY" | openssl aes-128-ecb -e -K $SO_ENCRYPTION_KEY -nosalt | xxd -c 256 -p > /opt/config/api_key.txt +#SO_ENCRYPTION_KEY=$(cat /opt/test_lab/encryption.key) +#echo -n "$OPENSTACK_API_KEY" | openssl aes-128-ecb -e -K $SO_ENCRYPTION_KEY -nosalt | xxd -c 256 -p > /opt/config/api_key.txt ./so_vm_init.sh diff --git a/heat/ONAP/cloud-config/so_vm_init.sh b/heat/ONAP/cloud-config/so_vm_init.sh index fb19d1a3..1acf2eb0 100644 --- a/heat/ONAP/cloud-config/so_vm_init.sh +++ b/heat/ONAP/cloud-config/so_vm_init.sh @@ -5,7 +5,8 @@ NEXUS_PASSWD=$(cat /opt/config/nexus_password.txt) NEXUS_DOCKER_REPO=$(cat /opt/config/nexus_docker_repo.txt) DMAAP_TOPIC=$(cat /opt/config/dmaap_topic.txt) OPENSTACK_USERNAME=$(cat /opt/config/openstack_username.txt) -OPENSTACK_APIKEY=$(cat /opt/config/api_key.txt) +#OPENSTACK_APIKEY=$(cat /opt/config/api_key.txt) +OPENSTACK_APIKEY=$(cat /opt/config/openstack_api_key.txt) export MSO_DOCKER_IMAGE_VERSION=$(cat /opt/config/docker_version.txt) export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1) diff --git a/heat/ONAP/onap_openstack.env b/heat/ONAP/onap_openstack.env index b9fc2e6c..41c5e2e6 100644 --- a/heat/ONAP/onap_openstack.env +++ b/heat/ONAP/onap_openstack.env @@ -44,9 +44,7 @@ parameters: openstack_username: PUT YOUR OPENSTACK USERNAME HERE - openstack_api_key: PUT YOUR OPENSTACK PASSWORD HERE - - openstack_auth_method: password + openstack_api_key: PUT YOUR ENCRYPTED OPENSTACK PASSWORD HERE openstack_region: RegionOne @@ -146,8 +144,8 @@ parameters: cli_docker: "2.0.2" music_docker: "2.5.3" cassandra_music_docker: "3.0.0" - optf_has_docker: "1.1.1" - optf_osdf_docker: "1.1.1" + optf_has_docker: "1.2.1" + optf_osdf_docker: "1.2.1" aaf_docker: "2.1.2-SNAPSHOT" sms_docker: "2.0.0" nbi_docker: "2.0.0" diff --git a/heat/ONAP/onap_openstack.yaml b/heat/ONAP/onap_openstack.yaml index d258d71d..fba9bfb4 100644 --- a/heat/ONAP/onap_openstack.yaml +++ b/heat/ONAP/onap_openstack.yaml @@ -3,7 +3,7 @@ #==================LICENSE_START========================================== # # -# Copyright (c) 2017 AT&T Intellectual Property. All rights reserved. +# Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -121,13 +121,9 @@ parameters: type: string description: OpenStack username - openstack_auth_method: - type: string - description: OpenStack authentication method (password VS. api-key) - openstack_api_key: type: string - description: OpenStack password or API Key + description: Encrypted OpenStack password keystone_url: type: string @@ -2447,6 +2443,9 @@ resources: - path: /opt/aaf_vm_init.sh permissions: '0755' content: { get_file: cloud-config/aaf_vm_init.sh } + - path: /opt/config/sample_ca/aaf.signer.b64 + permissions: '0600' + content: { get_file: cloud-config/sample_ca/aaf.signer.b64 } - path: /etc/init.d/serv.sh permissions: '0755' content: @@ -2474,6 +2473,7 @@ resources: #!/bin/bash # Create configuration files + mkdir -p /opt/config/sample_ca echo "__docker_version__" > /opt/config/docker_version.txt echo "__aaf_repo__" > /opt/config/remote_repo.txt echo "__gerrit_branch__" > /opt/config/gerrit_branch.txt diff --git a/heat/ONAP/onap_openstack_template.env b/heat/ONAP/onap_openstack_template.env index af560124..13ed5071 100644 --- a/heat/ONAP/onap_openstack_template.env +++ b/heat/ONAP/onap_openstack_template.env @@ -44,9 +44,7 @@ parameters: openstack_username: PUT YOUR OPENSTACK USERNAME HERE - openstack_api_key: PUT YOUR OPENSTACK PASSWORD HERE - - openstack_auth_method: password + openstack_api_key: PUT YOUR ENCRYPTED OPENSTACK PASSWORD HERE openstack_region: RegionOne diff --git a/heat/ONAP/openstack_encrypted_key.sh b/heat/ONAP/openstack_encrypted_key.sh new file mode 100755 index 00000000..20910fa3 --- /dev/null +++ b/heat/ONAP/openstack_encrypted_key.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +usage () { + echo "Usage:" + echo " ./$(basename $0) your_openstack_password" + exit 1 +} + +if [ "$#" -ne 1 ]; then + echo "Wrong number of input parameters" + usage +fi + +SO_ENCRYPTION_KEY=aa3871669d893c7fb8abbcda31b88b4f +OPENSTACK_API_KEY=$1 + +echo -n "$OPENSTACK_API_KEY" | openssl aes-128-ecb -e -K $SO_ENCRYPTION_KEY -nosalt | xxd -c 256 -p diff --git a/tosca/vCPE/Artifacts/images/ubuntu_16.04 b/tosca/vCPE/Artifacts/images/ubuntu_16.04 new file mode 100644 index 00000000..e69de29b diff --git a/tosca/vCPE/Artifacts/keys/authorized_keys b/tosca/vCPE/Artifacts/keys/authorized_keys new file mode 100644 index 00000000..444ca79c --- /dev/null +++ b/tosca/vCPE/Artifacts/keys/authorized_keys @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGx6SKrAuCz1V8KGevZueksLdWoPWJP6z3r29Z7TmPVEOjM+7PIPeSs2BVRx3rnHZBAlasMrZ+fJBS25ts9vfC+ItezQah/hr9vrkmwxCR54Lb84poW+sToPeF6i5eZY7W+jWJfLaFSFx9d2vp4zes/fOlT3NvYCXbn/3QdryQoGl7VFI8oemZypVcikZXElJeeKgAVdSwnrzuqtO/tmbXcAeSbYvVjki8ywYcsWMVMYWUWhh+1BAB6kXnTsIWqzrq0Pfvy+81WDwtiqsqmd93HY8hE0scBrXFBZzQS/AYfIFBlEuFNdLczchntjbZ0n7dmDXk8zHtCZYNk7kwb8k/ diff --git a/tosca/vCPE/Artifacts/keys/id_rsa b/tosca/vCPE/Artifacts/keys/id_rsa new file mode 100644 index 00000000..60597577 --- /dev/null +++ b/tosca/vCPE/Artifacts/keys/id_rsa @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAxsekiqwLgs9VfChnr2bnpLC3VqD1iT+s969vWe05j1RDozPu +zyD3krNgVUcd65x2QQJWrDK2fnyQUtubbPb3wviLXs0Gof4a/b65JsMQkeeC2/OK +aFvrE6D3heouXmWO1vo1iXy2hUhcfXdr6eM3rP3zpU9zb2Al25/90Ha8kKBpe1RS +PKHpmcqVXIpGVxJSXnioAFXUsJ687qrTv7Zm13AHkm2L1Y5IvMsGHLFjFTGFlFoY +ftQQAepF507CFqs66tD378vvNVg8LYqrKpnfdx2PIRNLHAa1xQWc0EvwGHyBQZRL +hTXS3M3IZ7Y22dJ+3Zg15PMx7QmWDZO5MG/JPwIDAQABAoIBAE5KS1AiutXmezDP +aSb4TLvcrhj8hDhuT92txxmQCV+ePJWG2sPRpDCvXX246NvnX9vy49gmkSH4RY+c +1vZvvt2XrqzD65zZzB+sgpf1tA0DNdMTdKvtqASvHU4tEd4z+bJKEdP4vpp4CZWQ +93vC9ia4TsIJLNns8Hwz42+7lEEResKYZA2djGnzHl+83vR1dm0GGBD6BKR1C3Cx +HbEhqx42EV61+8nAweQNjWKxeAc2hg+H8o8qWJM1aKy0TnqW6kudOYRyYIpX0rJA +siE2HwvDA1mDd5M8ntZ/Cx0pnTc/cuZB8BQJ0jN1JXbrJGbWspBNXformw7isbyO +WIOjvEECgYEA84XKV3aPrTE2JBs5vzzs59NMPV+5frw+xzDyPxqK5Q7+jjVKDwxh +/WRatCaTdRxhOI905HfVsDYjrsPOpmF9MHsLxmBhwk8zBFOu/xtYr7zBNkJhmCsq +kZMdxf8bpu08E7kMQJ2MvT7OhM5HRlWIUR0jdja8Hz51Ro4oOb/po7kCgYEA0Pb5 +v12ZsaSHMF0r4l983PifNwYmI22iQIEtRT2DxgTkDKgBTjbRzqZmEhaADMAO48o9 +sIZy+KJ/a8G9fPQVwMgBID8zOHnWsrFmM3qkj5hhrAQdtq7OE71zgaP0tyE1TG4u +Zs3a7eSyuoildHHFqX88oXSYsTlfV8vn23UpwLcCgYEAwXiCuBger8dQL0FeEJwz +zz5k7MG3WoPuEEzHuPC6dp8CCDM4IlqBI1JuaX/YWQtyBgCbKsQ2BigNE1THQhJj +5ndrdHCwWjKX4pElj9HHFN+OVTBJ3x40VLGfzuUNsAH8X+L9Y/yHivZyFrrXj352 +rZLL0KhNrzjs7WAVf0QEOCkCgYBe2s1xnZZnueyX+qMyBfBTChST0Jm9WUXejAS1 +un+3gn7Wc+jrzRyd9pC8wzPrFb9sjWBFYjKMRI8cpfxS3SWGtgM01Rt2FnBr+vUO +hyxt9ljX0aJ/S4hGE6h7/6XU/yEHibhMeENZ24d5/w9D9WUpVJV8IMYzJHzwCKI9 +z0hdrwKBgQDMKvY3DBpZjhZe9YnOgdj4SRpNwaasUSf3a3SZYY1JyOZVUzeSSzoX +rYLfxBRDjkJ8Nnod+nR/JSRqYa/SJYEMZEZFsC+k/pvBiaP6tk694IlpLD/2MXN6 +14FUV5LH/rGSbZJMSfZ9yNX1XZDowH8nOu+qlmlU4lmgiOuityTmtw== +-----END RSA PRIVATE KEY----- diff --git a/tosca/vCPE/Artifacts/keys/id_rsa.pub b/tosca/vCPE/Artifacts/keys/id_rsa.pub new file mode 100644 index 00000000..444ca79c --- /dev/null +++ b/tosca/vCPE/Artifacts/keys/id_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGx6SKrAuCz1V8KGevZueksLdWoPWJP6z3r29Z7TmPVEOjM+7PIPeSs2BVRx3rnHZBAlasMrZ+fJBS25ts9vfC+ItezQah/hr9vrkmwxCR54Lb84poW+sToPeF6i5eZY7W+jWJfLaFSFx9d2vp4zes/fOlT3NvYCXbn/3QdryQoGl7VFI8oemZypVcikZXElJeeKgAVdSwnrzuqtO/tmbXcAeSbYvVjki8ywYcsWMVMYWUWhh+1BAB6kXnTsIWqzrq0Pfvy+81WDwtiqsqmd93HY8hE0scBrXFBZzQS/AYfIFBlEuFNdLczchntjbZ0n7dmDXk8zHtCZYNk7kwb8k/ diff --git a/tosca/vCPE/Definitions/onap_dm.yaml b/tosca/vCPE/Definitions/onap_dm.yaml new file mode 100644 index 00000000..0a3faba0 --- /dev/null +++ b/tosca/vCPE/Definitions/onap_dm.yaml @@ -0,0 +1,827 @@ +tosca_definitions_version: tosca_simple_yaml_1_0 +#Artifact Types +#Based on R2 Design-time Resource DM clean version v8 +artifact_types: + tosca.artifacts.nfv.SwImage: + derived_from: tosca.artifacts.Deployment.Image + +#Capabilities Type +#Based on R2 Design-time Resource DM clean version v21 +capability_types: + tosca.capabilities.nfv.VirtualBindable: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.Metric: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.VirtualCompute: + derived_from: tosca.capabilities.Root + properties: + logical_node: + type: tosca.datatypes.nfv.LogicalNodeData + required: false + compute_requirements: + type: map + entry_schema: + type: string + required: false + requested_additional_capabilities: + type: map + entry_schema: + type: tosca.datatypes.nfv.RequestedAdditionalCapability + required: false + virtual_memory: + type: tosca.datatypes.nfv.VirtualMemory + required: true + virtual_cpu: + type: tosca.datatypes.nfv.VirtualCpu + required: true + + tosca.capabilities.nfv.VirtualStorage: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.VirtualLinkable: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.ExtVirtualLinkable: + derived_from: tosca.capabilities.Root + +#Data Types +#Based on R2 Design-time Resource DM clean version v45 +data_types: + tosca.datatypes.nfv.L2AddressData: + derived_from: tosca.datatypes.Root + properties: + mac_address_assignment: + type: boolean + required: true + + tosca.datatypes.nfv.injectFile: + derived_from: tosca.datatypes.Root + properties: + source_path: + type: string + required: true + dest_path: + type: string + required: true + + tosca.datatypes.nfv.L3AddressData: + derived_from: tosca.datatypes.Root + properties: + ip_address_assignment: + type: boolean + required: true + floating_ip_activated: + type: boolean + required: true + ip_address_type: + type: string + required: false + constraints: + - valid_values: [ipv4, ipv6] + number_of_ip_address: + type: integer + required: false + fixed_ip_address: + type: list + entry_schema: + type: string + required: false + + tosca.datatypes.nfv.AddressData: + derived_from: tosca.datatypes.Root + properties: + address_type: + type: string + required: true + constraints: + - valid_values: [mac_address, ip_address] + l2_address_data: + type: tosca.datatypes.nfv.L2AddressData # empty in "GS NFV IFA011 V0.7.3" + required: false + l3_address_data: + type: tosca.datatypes.nfv.L3AddressData + required: false + + tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements: + derived_from: tosca.datatypes.Root + properties: + name: + type: string + required: false + description: + type: string + required: false + support_mandatory: + type: boolean + required: true + #TODO HPA + network_interface_requirements: + type: map + entry_schema: + type: string + required: true + nic_io_requirements: + type: tosca.datatypes.nfv.LogicalNodeData + required: false + + tosca.datatypes.nfv.ConnectivityType: + derived_from: tosca.datatypes.Root + properties: + layer_protocol: + type: string + required: true + constraints: + - valid_values: [ethernet, mpls, odu2, ipv4, ipv6, pseudo_wire ] + flow_pattern: + type: string + required: false + constraints: # not defined in IFA011 v2.4.1 and SOL001 v.6.0 + - valid_values: [Line, Tree, Mesh] + + tosca.datatypes.nfv.RequestedAdditionalCapability: + derived_from: tosca.datatypes.Root + properties: + #name: + # key of containing map + support_mandatory: + type: boolean + required: true + min_requested_additional_capability_version: + type: string + required: false + preferred_requested_additional_capability_version: + type: string + required: false + requested_additional_capability_name: + type: string + required: true + target_performance_parameters: + type: map + entry_schema: + type: string + required: true + + tosca.datatypes.nfv.VirtualMemory: + derived_from: tosca.datatypes.Root + properties: + virtual_mem_size: + type: scalar-unit.size # Number + required: true + virtual_mem_oversubscription_policy: + type: string + required: false + #TODO HPA + vdu_memory_requirements: + type: map + entry_schema: + type: string + required: false + numa_enabled: + type: boolean + required: false + + tosca.datatypes.nfv.VirtualCpu: + derived_from: tosca.datatypes.Root + properties: + cpu_architecture: + type: string + required: false + num_virtual_cpu: + type: integer + required: true + virtual_cpu_clock: + type: scalar-unit.frequency + required: false + virtual_cpu_oversubscription_policy: + type: string + required: false + #TODO HPA + vdu_cpu_requirements: + type: map + entry_schema: + type: string + required: false + virtual_cpu_pinning: + type: tosca.datatypes.nfv.VirtualCpuPinning + required: false + + tosca.datatypes.nfv.VirtualCpuPinning: + derived_from: tosca.datatypes.Root + properties: + cpu_pinning_policy: + type: string # CpuPinningPolicy + constraints: + - valid_values: [ static, dynamic ] + required: false + cpu_pinning_map: + type: map + entry_schema: + type: string + required: false + + tosca.datatypes.nfv.VnfcConfigurableProperties: + derived_from: tosca.datatypes.Root + properties: + additional_vnfc_configurable_properties: + type: map + entry_schema: + type: string + required: false + + tosca.datatypes.nfv.VduProfile: + derived_from: tosca.datatypes.Root + properties: + min_number_of_instances: + type: integer + required: true + max_number_of_instances: + type: integer + required: true + #localAffinityOrAntiAffinityRule: # not defined in SOL001 v.6.0 + # type: tosca.datatype.nfv.LocalAffinityOrAntiAffinityRule + # required: true + #affinityOrAntiAffinityGroupId: # not defined in SOL001 v.6.0 + # type: string + # required: true + watchdog: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0 + type: string + required: true + vmBootUpTimeOut: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0 + type: integer + required: false + + + tosca.datatypes.nfv.VlProfile: + derived_from: tosca.datatypes.Root + properties: + max_bit_rate_requirements: + type: tosca.datatypes.nfv.LinkBitRateRequirements + required: true + min_bit_rate_requirements: + type: tosca.datatypes.nfv.LinkBitRateRequirements + required: true + qos: + type: tosca.datatypes.nfv.Qos + required: false + initiationParameters: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0 + type: map + entry_schema: + type: string + required: false + cidr: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0 + type: string + required: false + networkName: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0 + type: string + required: false + startIp: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0 + type: string + required: false + endIp: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0 + type: string + required: false + gatewayIp: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0 + type: string + required: false + segmentationId: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0 + type: integer + required: false + physicalNetwork: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0 + type: string + required: false + networkType: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0 + type: string + required: false + constraints: + - valid_values: [VLAN, VXLAN] + dhcpEnabled: # not defined in IFA011 v2.4.1 and SOL001 v.6.0 + type: boolean + required: false + vlanTransparent: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0 + type: boolean + required: false + + tosca.datatypes.nfv.InstantiationLevel: + derived_from: tosca.datatypes.Root + properties: + description: + type: string + required: true + vdu_levels: + type: map # key: vduId + required: true + entry_schema: + type: tosca.datatypes.nfv.VduLevel + scale_info: + type: map # key: aspectId + required: false + entry_schema: + type: tosca.datatypes.nfv.ScaleInfo + + tosca.datatypes.nfv.VduLevel: + derived_from: tosca.datatypes.Root + properties: + number_of_instances: + type: integer + required: true + + tosca.datatypes.nfv.VnfLcmOperationsConfiguration: + derived_from: tosca.datatypes.Root + properties: + instantiate: + type: tosca.datatypes.nfv.VnfInstantiateOperationConfiguration + scale: + type: tosca.datatypes.nfv.VnfScaleOperationConfiguration + scale_to_level: + type: tosca.datatypes.nfv.VnfScaleToLevelOperationConfiguration + heal: + type: tosca.datatypes.nfv.VnfHealOperationConfiguration + terminate: + type: tosca.datatypes.nfv.VnfTerminateOperationConfiguration + operate: + type: tosca.datatypes.nfv.VnfOperateOperationConfiguration + + tosca.datatypes.nfv.VnfInstantiateOperationConfiguration: + derived_from: tosca.datatypes.Root + #properties: + #parameters: + #modeled as part of operation parameter list + + tosca.datatypes.nfv.VnfScaleOperationConfiguration: + derived_from: tosca.datatypes.Root + properties: + #parameters: + #modeled as part of the operation parameter list + scaling_by_more_than_one_step_supported: + type: boolean + + tosca.datatypes.nfv.VnfScaleToLevelOperationConfiguration: + derived_from: tosca.datatypes.Root + properties: + #parameters: + #modeled as part of the operation parameter list + arbitrary_target_levels_supported: + type: boolean + + tosca.datatypes.nfv.VnfHealOperationConfiguration: + derived_from: tosca.datatypes.Root + properties: + #parameters: + #modeled as part of the operation parameter list + causes: + type: list + entry_schema: + type: string + + tosca.datatypes.nfv.VnfTerminateOperationConfiguration: + derived_from: tosca.datatypes.Root + properties: + min_graceful_termination_timeout: + type: integer + max_recommended_graceful_termination_timeout: + type: integer + + tosca.datatypes.nfv.VnfOperateOperationConfiguration: + derived_from: tosca.datatypes.Root + properties: + min_graceful_termination_timeout: + type: integer + max_recommended_graceful_termination_timeout: + type: integer + + tosca.datatypes.nfv.ScaleInfo: + derived_from: tosca.datatypes.Root + properties: + scaleLevel: + type: integer + required: true + + tosca.datatypes.nfv.ScaleAspect: + derived_from: tosca.datatypes.Root + properties: + name: + type: string + required: true + description: + type: string + required: true + associated_group: + type: string #Identifier + required: false + max_scale_level: + type: integer #PositiveInteger + required: true + + tosca.datatypes.nfv.LinkBitRateRequirements: + derived_from: tosca.datatypes.Root + properties: + root: + type: integer + required: true + leaf: + type: integer + required: true + + tosca.datatypes.nfv.Qos: + derived_from: tosca.datatypes.Root + properties: + latency: + type: integer #Number [ms] + required: true + packet_delay_variation: + type: integer #Number [ms] + required: true + packet_loss_ratio: + type: float + constraints: + - in_range: [ 0.0, 1.0 ] + required: false + + tosca.datatypes.nfv.CpProtocolData: + derived_from: tosca.datatypes.Root + properties: + asscociated_layer_protocol: + type: string + constraints: + - valid_values: [ethernet, mpls, odu2, ipv4, ipv6, pseudo-wire ] + required: true + address_data: + type: tosca.datatypes.nfv.AddressData + required: false + + tosca.datatypes.nfv.VnfConfigurableProperties: + derived_from: tosca.datatypes.Root + properties: + is_autoscale_enabled: + type: boolean + required: false + is_autoheal_enabled: + type: boolean + required: false + additional_configurable_properties: + type: tosca.datatypes.nfv.VnfAdditionalConfigurableProperties + required: false + + tosca.datatypes.nfv.VnfAdditionalConfigurableProperties: + derived_from: tosca.datatypes.Root + + tosca.datatypes.nfv.VnfInfoModifiableAttributes: + derived_from: tosca.datatypes.Root + properties: + extensions: + type: tosca.datatypes.nfv.VnfInfoModifiableAttributesExtensions + required: false + metadata: + type: tosca.datatypes.nfv.VnfInfoModifiableAttributesMetadata + required: false + + tosca.datatypes.nfv.VnfInfoModifiableAttributesExtensions: + derived_from: tosca.datatypes.Root + + tosca.datatypes.nfv.VnfInfoModifiableAttributesMetadata: + derived_from: tosca.datatypes.Root + + tosca.datatypes.nfv.LogicalNodeData: + derived_from: tosca.datatypes.Root + properties: + #TODO HPA + logical_node_requirements: + type: map # not defined in SOL001 v.6.0 + entry_schema: + type: string + required: false + +#Interface Types +#Based on R2 Design-time Resource DM clean version v10 +interface_types: + tosca.interfaces.nfv.vnf.lifecycle.Nfv: + derived_from: tosca.interfaces.Root + instantiate: + description: Invoked upon receipt of an Instantiate VNF request + instantiate_start: + description: Invoked before instantiate + instantiate_end: + description: Invoked after instantiate + terminate: + description: Invoked upon receipt Terminate VNF request + terminate_start: + description: Invoked before terminate + terminate_end: + description: Invoked after terminate + modify_information: + description: Invoked upon receipt of a Modify VNF Information request + modify_information_start: + description: Invoked before modify_information + modify_information_end: + description: Invoked after modify_information + change_flavour: + description: Invoked upon receipt of a Change VNF Flavour request + change_flavour_start: + description: Invoked before change_flavour + change_flavour_end: + description: Invoked after change_flavour + change_external_connectivity: + description: Invoked upon receipt of a Change External VNF Connectivity request + change_external_connectivity_start: + description: Invoked before change_external_connectivity + change_external_connectivity_end: + description: Invoked after change_external_connectivity + operate: + description: Invoked upon receipt of an Operate VNF request + operate_start: + description: Invoked before operate + operate_end: + description: Invoked after operate + heal: + description: Invoked upon receipt of a Heal VNF request + heal_start: + description: Invoked before heal + heal_end: + description: Invoked after heal + scale: + description: Invoked upon receipt of a Scale VNF request + scale_start: + description: Invoked before scale + scale_end: + description: Invoked after scale + scale_to_level: + description: Invoked upon receipt of a Scale VNF to Level request + scale_to_level_start: + description: Invoked before scale_to_level + scale_to_level_end: + description: Invoked after scale_to_level + # indicator_changed: + # description: On receiving a VNF indicator value change notification + +#Node Types +#Based on R2 Design-time Resource DM clean version v36 +node_types: + tosca.nodes.nfv.Vdu.Compute: + derived_from: tosca.nodes.Root + properties: + name: + type: string + required: true + description: + type: string + required: true + boot_order: + type: list # explicit index (boot index) not necessary, contrary to IFA011 + entry_schema: + type: string + required: false + nfvi_constraints: + type: list + entry_schema: + type: string + required: false + configurable_properties: + type: map + entry_schema: + type: tosca.datatypes.nfv.VnfcConfigurableProperties + required: true + vdu_profile: + type: tosca.datatypes.nfv.VduProfile + required: true + inject_files: #Aligned with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v0.6.0 + #type: list + #entry_schema: + #TODO workaround of SDC bug + type: tosca.datatypes.nfv.injectFile + required: false + meta_data: #metadata attached to the VM or container + type: map + entry_schema: + type: string + required: false + user_data: #cloudinit userdata script support + type: string + required: false + #attributes: NOT DEFINED IN ONAP IM and SOL001 + #private_address: + # status: deprecated + #public_address: + # status: deprecated + #networks: + # status: deprecated + #ports: + # status: deprecated + capabilities: + virtual_compute: + type: tosca.capabilities.nfv.VirtualCompute + virtual_binding: + type: tosca.capabilities.nfv.VirtualBindable + occurrences: [1, UNBOUNDED] + monitoring_parameter: + type: tosca.capabilities.nfv.Metric + occurrences: [0, UNBOUNDED] + requirements: + - virtual_storage: + capability: tosca.capabilities.nfv.VirtualStorage + relationship: tosca.relationships.nfv.Vdu.AttachedTo + node: tosca.nodes.nfv.Vdu.VirtualStorage + occurrences: [ 0, UNBOUNDED ] + #artifacts: + # - sw_image: + # file: + # type: tosca.artifacts.nfv.SwImage + + tosca.nodes.nfv.Vdu.VirtualStorage: + derived_from: tosca.nodes.Root + properties: + #id: + # node name + type_of_storage: + type: string + constraints: + - valid_values: [volume, object, root, block] + required: true + size_of_storage: + type: scalar-unit.size + required: true + #TODO HPA + vdu_storage_requirements: + type: map + entry_schema: + type: string + required: false + rdma_enabled: + type: boolean + required: false + capabilities: + virtual_storage: + type: tosca.capabilities.nfv.VirtualStorage + #artifacts: + # - sw_image: + # file: + # type: tosca.artifacts.Deployment.Image + + tosca.nodes.nfv.Cp: + derived_from: tosca.nodes.Root + properties: + layer_protocol: + type: list + entry_schema: + constraints: + - valid_values: [ethernet, mpls, odu2, ipv4, ipv6, pseudo_wire ] + type: string + required: true + role: #Name in ETSI NFV IFA011 v0.7.3 cpRole + type: string + constraints: + - valid_values: [ root, leaf ] + required: false + description: + type: string + required: false + protocol_data: + type: list + entry_schema: + type: tosca.datatypes.nfv.CpProtocolData + required: true + trunk_mode: + type: boolean + required: true + allowedAddressData: # Aligned with ONAP R2 Im.not defined in IFA011 v2.4.1 and SOL001 v0.6.0 + type: tosca.datatypes.nfv.AddressData + required: false + + tosca.nodes.nfv.VduCp: + derived_from: tosca.nodes.nfv.Cp + properties: + bitrate_requirement: + type: integer + required: false + vnic_name: # Aligned with ONAP R2 Im.not defined in IFA011 v2.4.1 and SOL001 v0.6.0 + type: string + required: false + vnic_order: # Aligned with ONAP R2 Im. not defined in IFA011 v2.4.1 and SOL001 v0.6.0 + type: integer + required: false + vnic_type: # Aligned with ONAP R2 Im. not defined in IFA011 v2.4.1 and SOL001 v0.6.0 + type: string + constraints: + - valid_values: [normal, macvtap, direct, baremetal, direct-physical, virtio-forwarder] + required: false + virtual_network_interface_requirements: + type: list + entry_schema: + type: tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements + required: false + #order: + # type: integer + # required: false + # constraints: + # - greater_or_equal: 0 + requirements: + - virtual_link: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + node: tosca.nodes.nfv.VnfVirtualLink + - virtual_binding: + capability: tosca.capabilities.nfv.VirtualBindable + relationship: tosca.relationships.nfv.VirtualBindsTo + node: tosca.nodes.nfv.Vdu.Compute + + tosca.nodes.nfv.VnfVirtualLink: + derived_from: tosca.nodes.Root + properties: + connectivity_type: + type: tosca.datatypes.nfv.ConnectivityType + required: true + description: + type: string + required: false + test_access: + type: list + entry_schema: + type: string + required: false + vl_profile: + type: tosca.datatypes.nfv.VlProfile + required: true + capabilities: + monitoring_parameter: + type: tosca.capabilities.nfv.Metric + occurrences: [0, UNBOUNDED] + virtual_linkable: + type: tosca.capabilities.nfv.VirtualLinkable + + tosca.nodes.nfv.VNF: + derived_from: tosca.nodes.Root + properties: + descriptor_id: # instead of vnfd_id + type: string # GUID + required: true + descriptor_version: # instead of vnfd_version + type: string + required: true + provider: # instead of vnf_provider + type: string + required: true + product_name: # instead of vnf_product_name + type: string + required: true + software_version: # instead of vnf_software_version + type: string + required: true + product_info_name: # instead of vnf_product_info_name + type: string + required: false + product_info_description: # instead of vnf_product_info_description + type: string + required: false + vnfm_info: + type: list + entry_schema: + type: string + required: true + localization_languages: + type: list + entry_schema: + type: string + required: false + default_localization_language: + type: string + required: false + configurable_properties: + type: tosca.datatypes.nfv.VnfConfigurableProperties + required: false + modifiable_attributes: + type: tosca.datatypes.nfv.VnfInfoModifiableAttributes + required: false # true in IFA011, but all of members are false + flavour_id: + type: string + required: true + flavour_description: + type: string + required: true + #capabilities: + # monitoring_parameter: + # modelled as ad hoc capabilities in the VNF node template + requirements: + - virtual_link: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + node: tosca.nodes.nfv.VnfVirtualLink + occurrences: [ 0, UNBOUNDED ] + interfaces: + Nfv: + type: tosca.interfaces.nfv.vnf.lifecycle.Nfv + +#Relationship Types +#Based on R2 Design-time Resource DM clean version v4 +relationship_types: + tosca.relationships.nfv.VirtualBindsTo: + derived_from: tosca.relationships.DependsOn + valid_target_types: [ tosca.capabilities.nfv.VirtualBindable] + + tosca.relationships.nfv.VirtualLinksTo: + derived_from: tosca.relationships.DependsOn + valid_target_types: [ tosca.capabilities.nfv.VirtualLinkable] + + tosca.relationships.nfv.Vdu.AttachedTo: + derived_from: tosca.relationships.DependsOn + valid_target_types: [ tosca.capabilities.nfv.VirtualStorage] diff --git a/tosca/vCPE/README.md b/tosca/vCPE/README.md new file mode 100644 index 00000000..f4f7e9cc --- /dev/null +++ b/tosca/vCPE/README.md @@ -0,0 +1,15 @@ +# vCPE_tosca + +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. + +## pending issues to DM +Please search for "TODO" in the corresponding VNFD to find the pending things. +- HPA detailed format +- Need to remove all the VirtualLink definition. Those VirtualLink(network) should be created in SDC during service design time and have them connected to the VduCp(port). +- Update to the latest heat template. + +## References: +- [vCPE use case](https://wiki.onap.org/pages/viewpage.action?pageId=3246168) +- [vCPE usage tutorial for A release](https://wiki.onap.org/display/DW/vCPE+Use+Case+Tutorial%3A+Design+and+Deploy+based+on+ONAP+Amsterdam+Release) Based on heat. diff --git a/tosca/vCPE/TOSCA-Metadata/TOSCA.meta b/tosca/vCPE/TOSCA-Metadata/TOSCA.meta new file mode 100644 index 00000000..4eaf1932 --- /dev/null +++ b/tosca/vCPE/TOSCA-Metadata/TOSCA.meta @@ -0,0 +1,4 @@ +TOSCA-Meta-File-Version: 1.0 +CSAR-Version: 1.1 +Created-By: ONAP +Entry-Definitions: Definitions/MainServiceTemplate.yaml diff --git a/tosca/vCPE/generate_csar.sh b/tosca/vCPE/generate_csar.sh new file mode 100755 index 00000000..21ba3a62 --- /dev/null +++ b/tosca/vCPE/generate_csar.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +#******************************************************************************* +# Copyright (c) 2018 Intel Corp and/or its affiliates. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + + +ROOT_DIR=`dirname $(readlink -f $0)` +DEST=`pwd` +PREFIX="vcpe_" + +DIRS="infra vbrgemu vbng vgmux vgw" + +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 -r $ROOT_DIR/Artifacts tmp/ + cp -r $ROOT_DIR/Definitions tmp/ + cp -r $ROOT_DIR/TOSCA-Metadata tmp/ + cp MainServiceTemplate.yaml tmp/Definitions + cd $ROOT_DIR/$dir/tmp + + # create the csar file + zip -r $ROOT_DIR/$dir/$dir.csar Artifacts/ TOSCA-Metadata/ Definitions/ MainServiceTemplate.mf MainServiceTemplate.yaml + rm -f $DEST/$dir.csar + mv $ROOT_DIR/$dir/$dir.csar $DEST/ + + # clean up temporary csar build subdirectory + cd $ROOT_DIR/$dir + rm -r $ROOT_DIR/$dir/tmp +done diff --git a/tosca/vCPE/infra/MainServiceTemplate.mf b/tosca/vCPE/infra/MainServiceTemplate.mf new file mode 100644 index 00000000..affc460c --- /dev/null +++ b/tosca/vCPE/infra/MainServiceTemplate.mf @@ -0,0 +1,8 @@ +metadata: + vnf_product_name: vcpe_infra + vnf_provider_id: ONAP + vnf_package_version: 1.0 + vnf_release_data_time: 2018.05.06T13:00+08:00 + +source: MainServiceTemplate.yaml + diff --git a/tosca/vCPE/infra/MainServiceTemplate.yaml b/tosca/vCPE/infra/MainServiceTemplate.yaml new file mode 100644 index 00000000..22c3ad9e --- /dev/null +++ b/tosca/vCPE/infra/MainServiceTemplate.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.mf b/tosca/vCPE/vbng/MainServiceTemplate.mf new file mode 100644 index 00000000..d2e31ef4 --- /dev/null +++ b/tosca/vCPE/vbng/MainServiceTemplate.mf @@ -0,0 +1,8 @@ +metadata: + vnf_product_name: vcpe_vbng + vnf_provider_id: ONAP + vnf_package_version: 1.0 + vnf_release_data_time: 2018.05.06T13:00+08:00 + +source: MainServiceTemplate.yaml + diff --git a/tosca/vCPE/vbng/MainServiceTemplate.yaml b/tosca/vCPE/vbng/MainServiceTemplate.yaml new file mode 100644 index 00000000..b192bd69 --- /dev/null +++ b/tosca/vCPE/vbng/MainServiceTemplate.yaml @@ -0,0 +1,438 @@ +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 + 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 + 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 + + #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 + + # 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 } + virtual_network_interface_requirements: + - name: dpdk support + support_mandatory: true + # TODO HPA + network_interface_requirements: + #dataProcessingAccelerationLibrary: dpdk_2.2 + interfaceType: virtio + 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 } + virtual_network_interface_requirements: + - name: dpdk support + support_mandatory: true + # TODO HPA + network_interface_requirements: + #dataProcessingAccelerationLibrary: dpdk_2.2 + interfaceType: virtio + 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: '{"schema-version": "0", "schema-location": "", "platform-id": "generic", "mandatory": true, "configuration-value": "2 MB"}' + numberOfPages: '{"schema-version": "0","schema-location": "","platform-id": "generic","mandatory": true,"configuration-value": 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.mf b/tosca/vCPE/vbrgemu/MainServiceTemplate.mf new file mode 100644 index 00000000..22f13e9f --- /dev/null +++ b/tosca/vCPE/vbrgemu/MainServiceTemplate.mf @@ -0,0 +1,8 @@ +metadata: + vnf_product_name: vcpe_vbrgemu + vnf_provider_id: ONAP + vnf_package_version: 1.0 + vnf_release_data_time: 2018.05.06T13:00+08:00 + +source: MainServiceTemplate.yaml + diff --git a/tosca/vCPE/vbrgemu/MainServiceTemplate.yaml b/tosca/vCPE/vbrgemu/MainServiceTemplate.yaml new file mode 100644 index 00000000..a895b571 --- /dev/null +++ b/tosca/vCPE/vbrgemu/MainServiceTemplate.yaml @@ -0,0 +1,291 @@ +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 + 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 + 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 + + # 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 } + virtual_network_interface_requirements: + - name: dpdk support + support_mandatory: true + # TODO HPA + network_interface_requirements: + #dataProcessingAccelerationLibrary: dpdk_2.2 + interfaceType: virtio + 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: '{"schema-version": "0", "schema-location": "", "platform-id": "generic", "mandatory": true, "configuration-value": "2 MB"}' + numberOfPages: '{"schema-version": "0","schema-location": "","platform-id": "generic","mandatory": true,"configuration-value": 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/vgmux/MainServiceTemplate.mf b/tosca/vCPE/vgmux/MainServiceTemplate.mf new file mode 100644 index 00000000..4feca011 --- /dev/null +++ b/tosca/vCPE/vgmux/MainServiceTemplate.mf @@ -0,0 +1,8 @@ +metadata: + vnf_product_name: vcpe_vgmux + vnf_provider_id: ONAP + vnf_package_version: 1.0 + vnf_release_data_time: 2018.05.06T13:00+08:00 + +source: MainServiceTemplate.yaml + diff --git a/tosca/vCPE/vgmux/MainServiceTemplate.yaml b/tosca/vCPE/vgmux/MainServiceTemplate.yaml new file mode 100644 index 00000000..b6515872 --- /dev/null +++ b/tosca/vCPE/vgmux/MainServiceTemplate.yaml @@ -0,0 +1,383 @@ +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 + 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 + 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 + + #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 + + # 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 } + virtual_network_interface_requirements: + - name: dpdk support + support_mandatory: true + #TODO HPA + network_interface_requirements: + #dataProcessingAccelerationLibrary: dpdk_2.2 + interfaceType: virtio + 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 } + virtual_network_interface_requirements: + - name: dpdk support + support_mandatory: true + #TODO HPA + network_interface_requirements: + #dataProcessingAccelerationLibrary: dpdk_2.2 + interfaceType: virtio + 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: '{"schema-version": "0", "schema-location": "", "platform-id": "generic", "mandatory": true, "configuration-value": "2 MB"}' + numberOfPages: '{"schema-version": "0","schema-location": "","platform-id": "generic","mandatory": true,"configuration-value": 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.mf b/tosca/vCPE/vgw/MainServiceTemplate.mf new file mode 100644 index 00000000..fc41919b --- /dev/null +++ b/tosca/vCPE/vgw/MainServiceTemplate.mf @@ -0,0 +1,8 @@ +metadata: + vnf_product_name: vcpe_vgw + vnf_provider_id: ONAP + vnf_package_version: 1.0 + vnf_release_data_time: 2018.05.06T13:00+08:00 + +source: MainServiceTemplate.yaml + diff --git a/tosca/vCPE/vgw/MainServiceTemplate.yaml b/tosca/vCPE/vgw/MainServiceTemplate.yaml new file mode 100644 index 00000000..420dc933 --- /dev/null +++ b/tosca/vCPE/vgw/MainServiceTemplate.yaml @@ -0,0 +1,378 @@ +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 + 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 + 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 + + #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 } + virtual_network_interface_requirements: + - name: dpdk support + support_mandatory: true + #TODO HPA + network_interface_requirements: + #dataProcessingAccelerationLibrary: dpdk_2.2 + interfaceType: virtio + 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: '{"schema-version": "0", "schema-location": "", "platform-id": "generic", "mandatory": true, "configuration-value": "2 MB"}' + numberOfPages: '{"schema-version": "0","schema-location": "","platform-id": "generic","mandatory": true,"configuration-value": 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/vnfs/VESreporting_vFW5.0/vpp_measurement_reporter.c b/vnfs/VESreporting_vFW5.0/vpp_measurement_reporter.c index 4cc4ab85..6f6a7c04 100644 --- a/vnfs/VESreporting_vFW5.0/vpp_measurement_reporter.c +++ b/vnfs/VESreporting_vFW5.0/vpp_measurement_reporter.c @@ -188,23 +188,29 @@ int main(int argc, char** argv) /* Initialize */ /**************************************************************************/ if(evel_initialize(fqdn, /* FQDN */ - port, /* Port */ - NULL, /* optional path */ - NULL, /* optional topic */ - 100, /* Ring Buffer size */ - 0, /* HTTPS? */ - NULL, /* cert file */ - NULL, /* key file */ - NULL, /* ca info */ - NULL, /* ca file */ - 0, /* verify peer */ - 0, /* verify host */ - "", /* Username */ - "", /* Password */ - NULL, /* Source ip */ - EVEL_SOURCE_VIRTUAL_MACHINE, /* Source type */ - "vFirewall", /* Role */ - 1)) /* Verbosity */ + port, /* Port */ + "", /* Backup FQDN */ + 5555, /* Backup Port */ + NULL, /* optional path */ + NULL, /* optional topic */ + 100, /* Ring Buffer size */ + 0, /* HTTPS? */ + 0, /* Active mode */ + NULL, /* cert file */ + NULL, /* key file */ + NULL, /* ca info */ + NULL, /* ca file */ + 0, /* verify peer */ + 0, /* verify host */ + "", /* Username */ + "", /* Password */ + "", /* Backup Username */ + "", /* Backup Password */ + NULL, /* Source ip */ + NULL, /* Backup Source IP */ + EVEL_SOURCE_VIRTUAL_MACHINE, /* Source type */ + "vFirewall", /* Role */ + 1)) /* Verbosity */ { fprintf(stderr, "\nFailed to initialize the EVEL library!!!\n"); exit(-1); diff --git a/vnfs/VESreporting_vLB5.0/vpp_measurement_reporter.c b/vnfs/VESreporting_vLB5.0/vpp_measurement_reporter.c index 14ca2944..7e83d1e8 100644 --- a/vnfs/VESreporting_vLB5.0/vpp_measurement_reporter.c +++ b/vnfs/VESreporting_vLB5.0/vpp_measurement_reporter.c @@ -136,23 +136,29 @@ int main(int argc, char** argv) /* Initialize */ /**************************************************************************/ if(evel_initialize(fqdn, /* FQDN */ - port, /* Port */ - NULL, /* optional path */ - NULL, /* optional topic */ - 100, /* Ring buffer size */ - 0, /* HTTPS? */ - NULL, /* cert file */ - NULL, /* key file */ - NULL, /* ca info */ - NULL, /* ca file */ - 0, /* verify peer */ - 0, /* verify host */ - "", /* Username */ - "", /* Password */ - NULL, /* Source IP */ - EVEL_SOURCE_VIRTUAL_MACHINE, /* Source type */ - "vLoadBalancer", /* Role */ - 1)) /* Verbosity */ + port, /* Port */ + "", /* Backup FQDN */ + 5566, /* Backup Port */ + NULL, /* optional path */ + NULL, /* optional topic */ + 100, /* Ring Buffer size */ + 0, /* HTTPS? */ + 0, /* Active mode */ + NULL, /* cert file */ + NULL, /* key file */ + NULL, /* ca info */ + NULL, /* ca file */ + 0, /* verify peer */ + 0, /* verify host */ + "", /* Username */ + "", /* Password */ + "", /* Backup Username */ + "", /* Backup Password */ + NULL, /* Source ip */ + NULL, /* Backup Source IP */ + EVEL_SOURCE_VIRTUAL_MACHINE, /* Source type */ + "vLoadBalancer", /* Role */ + 1)) /* Verbosity */ { fprintf(stderr, "\nFailed to initialize the EVEL library!!!\n"); exit(-1);