diff options
-rw-r--r-- | boot/dcae2_install.sh | 26 | ||||
-rw-r--r-- | heat/vCPE/vgmux/base_vcpe_vgmux.env | 1 | ||||
-rw-r--r-- | heat/vCPE/vgmux/base_vcpe_vgmux.yaml | 6 | ||||
-rw-r--r-- | vnfs/vCPE/scripts/v_gmux_install.sh | 110 | ||||
-rw-r--r-- | vnfs/vCPE/vpp-ves-agent-for-vgmux/src/patches/vCPE-vG-MUX-libevel-fixup.patch | 120 |
5 files changed, 191 insertions, 72 deletions
diff --git a/boot/dcae2_install.sh b/boot/dcae2_install.sh index 5868607b..21587467 100644 --- a/boot/dcae2_install.sh +++ b/boot/dcae2_install.sh @@ -1,5 +1,7 @@ #!/bin/bash +set -ex + # Read configuration files NEXUS_REPO=$(cat /opt/config/nexus_repo.txt) ARTIFACTS_VERSION=$(cat /opt/config/artifacts_version.txt) @@ -52,7 +54,7 @@ fi echo "deb http://ppa.launchpad.net/openjdk-r/ppa/ubuntu $(lsb_release -c -s) main" >> /etc/apt/sources.list.d/java.list echo "deb-src http://ppa.launchpad.net/openjdk-r/ppa/ubuntu $(lsb_release -c -s) main" >> /etc/apt/sources.list.d/java.list apt-get update -apt-get install --allow-unauthenticated -y apt-transport-https ca-certificates wget make openjdk-8-jdk git ntp ntpdate +apt-get install --allow-unauthenticated -y apt-transport-https ca-certificates wget make openjdk-8-jdk git ntp ntpdate python python-pip # Download scripts from Nexus curl -k $NEXUS_REPO/org.onap.demo/boot/$ARTIFACTS_VERSION/dcae2_vm_init.sh -o /opt/dcae2_vm_init.sh @@ -68,7 +70,7 @@ apt-get update apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual apt-get install -y --allow-unauthenticated docker-engine -mkdir /opt/docker +mkdir -p /opt/docker curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose chmod +x /opt/docker/docker-compose @@ -117,16 +119,16 @@ wget https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcae # Rename network interface in openstack Ubuntu 16.04 images. Then, reboot the VM to pick up changes -if [[ $CLOUD_ENV != "rackspace" ]] -then - sed -i "s/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=\"net.ifnames=0 biosdevname=0\"/g" /etc/default/grub - grub-mkconfig -o /boot/grub/grub.cfg - sed -i "s/ens[0-9]*/eth0/g" /etc/network/interfaces.d/*.cfg - sed -i "s/ens[0-9]*/eth0/g" /etc/udev/rules.d/70-persistent-net.rules - echo 'network: {config: disabled}' >> /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg - echo "APT::Periodic::Unattended-Upgrade \"0\";" >> /etc/apt/apt.conf.d/10periodic - reboot -fi +#if [[ $CLOUD_ENV != "rackspace" ]] +#then +# sed -i "s/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=\"net.ifnames=0 biosdevname=0\"/g" /etc/default/grub +# grub-mkconfig -o /boot/grub/grub.cfg +# sed -i "s/ens[0-9]*/eth0/g" /etc/network/interfaces.d/*.cfg +# sed -i "s/ens[0-9]*/eth0/g" /etc/udev/rules.d/70-persistent-net.rules +# echo 'network: {config: disabled}' >> /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg +# echo "APT::Periodic::Unattended-Upgrade \"0\";" >> /etc/apt/apt.conf.d/10periodic +# reboot +#fi # Run docker containers cd /opt diff --git a/heat/vCPE/vgmux/base_vcpe_vgmux.env b/heat/vCPE/vgmux/base_vcpe_vgmux.env index aad4784b..e81afa70 100644 --- a/heat/vCPE/vgmux/base_vcpe_vgmux.env +++ b/heat/vCPE/vgmux/base_vcpe_vgmux.env @@ -32,3 +32,4 @@ hc2vpp_source_repo_branch: stable/1704 vpp_patch_url: https://git.onap.org/demo/plain/vnfs/vCPE/vpp-ves-agent-for-vgmux/src/patches/Vpp-Add-VES-agent-for-vG-MUX.patch hc2vpp_patch_url: https://git.onap.org/demo/plain/vnfs/vCPE/vpp-ves-agent-for-vgmux/src/patches/Hc2vpp-Add-VES-agent-for-vG-MUX.patch + libevel_patch_url: https://git.onap.org/demo/plain/vnfs/vCPE/vpp-ves-agent-for-vgmux/src/patches/vCPE-vG-MUX-libevel-fixup.patch diff --git a/heat/vCPE/vgmux/base_vcpe_vgmux.yaml b/heat/vCPE/vgmux/base_vcpe_vgmux.yaml index 4f12c64e..ecdb1b1b 100644 --- a/heat/vCPE/vgmux/base_vcpe_vgmux.yaml +++ b/heat/vCPE/vgmux/base_vcpe_vgmux.yaml @@ -165,6 +165,10 @@ parameters: type: string label: Honeycomb Patch URL description: URL for Honeycomb patch for vG-MUX + libevel_patch_url: + type: string + label: libevel Patch URL + description: URL for libevel patch for vG-MUX ############# # # @@ -245,6 +249,7 @@ resources: __hc2vpp_source_repo_branch__ : { get_param: hc2vpp_source_repo_branch } __vpp_patch_url__ : { get_param: vpp_patch_url } __hc2vpp_patch_url__ : { get_param: hc2vpp_patch_url } + __libevel_patch_url__ : { get_param: libevel_patch_url } template: | #!/bin/bash @@ -267,6 +272,7 @@ resources: echo "__hc2vpp_source_repo_url__" > /opt/config/hc2vpp_source_repo_url.txt echo "__hc2vpp_source_repo_branch__" > /opt/config/hc2vpp_source_repo_branch.txt echo "__hc2vpp_patch_url__" > /opt/config/hc2vpp_patch_url.txt + echo "__libevel_patch_url__" > /opt/config/libevel_patch_url.txt # Download and run install script curl -k __repo_url_blob__/org.onap.demo/vnfs/vcpe/__install_script_version__/v_gmux_install.sh -o /opt/v_gmux_install.sh diff --git a/vnfs/vCPE/scripts/v_gmux_install.sh b/vnfs/vCPE/scripts/v_gmux_install.sh index b52179d6..8aa23069 100644 --- a/vnfs/vCPE/scripts/v_gmux_install.sh +++ b/vnfs/vCPE/scripts/v_gmux_install.sh @@ -10,6 +10,7 @@ VPP_PATCH_URL=$(cat /opt/config/vpp_patch_url.txt) HC2VPP_SOURCE_REPO_URL=$(cat /opt/config/hc2vpp_source_repo_url.txt) HC2VPP_SOURCE_REPO_BRANCH=$(cat /opt/config/hc2vpp_source_repo_branch.txt) HC2VPP_PATCH_URL=$(cat /opt/config/hc2vpp_patch_url.txt) +LIBEVEL_PATCH_URL=$(cat /opt/config/libevel_patch_url.txt) CLOUD_ENV=$(cat /opt/config/cloud_env.txt) # Convert Network CIDR to Netmask @@ -31,15 +32,6 @@ then MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1) - IP=$(cat /opt/config/bng_mux_net_ipaddr.txt) - BITS=$(cat /opt/config/bng_mux_net_cidr.txt | cut -d"/" -f2) - NETMASK=$(cdr2mask $BITS) - echo "auto eth1" >> /etc/network/interfaces - echo "iface eth1 inet static" >> /etc/network/interfaces - echo " address $IP" >> /etc/network/interfaces - echo " netmask $NETMASK" >> /etc/network/interfaces - echo " mtu $MTU" >> /etc/network/interfaces - IP=$(cat /opt/config/oam_ipaddr.txt) BITS=$(cat /opt/config/oam_cidr.txt | cut -d"/" -f2) NETMASK=$(cdr2mask $BITS) @@ -49,18 +41,7 @@ then echo " netmask $NETMASK" >> /etc/network/interfaces echo " mtu $MTU" >> /etc/network/interfaces - IP=$(cat /opt/config/mux_gw_net_ipaddr.txt) - BITS=$(cat /opt/config/mux_gw_net_cidr.txt | cut -d"/" -f2) - NETMASK=$(cdr2mask $BITS) - echo "auto eth3" >> /etc/network/interfaces - echo "iface eth3 inet static" >> /etc/network/interfaces - echo " address $IP" >> /etc/network/interfaces - echo " netmask $NETMASK" >> /etc/network/interfaces - echo " mtu $MTU" >> /etc/network/interfaces - - ifup eth1 ifup eth2 - ifup eth3 fi # Download required dependencies @@ -71,7 +52,7 @@ apt-get install --allow-unauthenticated -y wget openjdk-8-jdk apt-transport-http sleep 1 # Install the tools required for download codes -apt-get install -y expect git patch make +apt-get install -y expect git patch make linux-image-extra-`uname -r` #Download and build the VPP codes cd /opt @@ -91,7 +72,10 @@ expect -c " cd /opt apt-get install -y libcurl4-openssl-dev git clone http://gerrit.onap.org/r/demo -cd demo/vnfs/VES5.0/evel/evel-library/bldjobs +wget -O vCPE-vG-MUX-libevel-fixup.patch ${LIBEVEL_PATCH_URL} +cd demo +patch -p1 < ../vCPE-vG-MUX-libevel-fixup.patch +cd vnfs/VES5.0/evel/evel-library/bldjobs make cp ../libs/x86_64/libevel.so /usr/lib ldconfig @@ -212,11 +196,11 @@ cpu { EOF cat > /etc/vpp/setup.gate << EOF -set int state GigabitEthernet0/8/0 up -set int ip address GigabitEthernet0/8/0 10.1.0.20/24 +set int state GigabitEthernet0/4/0 up +set int ip address GigabitEthernet0/4/0 10.1.0.20/24 -set int state GigabitEthernet0/9/0 up -set int ip address GigabitEthernet0/9/0 10.5.0.20/24 +set int state GigabitEthernet0/6/0 up +set int ip address GigabitEthernet0/6/0 10.5.0.20/24 create vxlan tunnel src 10.5.0.20 dst 10.5.0.21 vni 100 EOF @@ -338,7 +322,13 @@ EOF cd hc2vpp patch -p1 < ../Hc2vpp-Add-VES-agent-for-vG-MUX.patch -mvn clean install +p_version_snap=$(cat ves/ves-impl/pom.xml | grep -A 1 "jvpp-ves" | tail -1) +p_version_snap=$(echo "${p_version%<*}") +p_version_snap=$(echo "${p_version#*>}") +p_version=$(echo "${p_version_snap%-*}") +mkdir -p ~/.m2/repository/io/fd/vpp/jvpp-ves/${p_version_snap} +mvn install:install-file -Dfile=/usr/share/java/jvpp-ves-${p_version}.jar -DgroupId=io.fd.vpp -DartifactId=jvpp-ves -Dversion=${p_version_snap} -Dpackaging=jar +mvn clean install -nsu -DskipTests=true l_version=$(cat pom.xml | grep "<version>" | head -1) l_version=$(echo "${l_version%<*}") l_version=$(echo "${l_version#*>}") @@ -398,37 +388,37 @@ VPP_SETUP_GATE=/etc/vpp/setup.gate # write_startup_scripts() { - local cmd=${2} - local is_add=${1} + local cmd=\${2} + local is_add=\${1} - if [[ ${is_add} == add ]] ;then + if [[ \${is_add} == add ]] ;then while read -r line do - if [[ ${line} == ${cmd} ]] ;then + if [[ \${line} == \${cmd} ]] ;then return 0 fi - done < ${VPP_SETUP_GATE} + done < \${VPP_SETUP_GATE} - echo "${cmd}" >> ${VPP_SETUP_GATE} + echo "\${cmd}" >> \${VPP_SETUP_GATE} else while read -r line do - if [[ ${line} == ${cmd} ]] ;then - sed -i "/${line}/d" ${VPP_SETUP_GATE} + if [[ \${line} == \${cmd} ]] ;then + sed -i "/\${line}/d" \${VPP_SETUP_GATE} return 0 fi - done < ${VPP_SETUP_GATE} + done < \${VPP_SETUP_GATE} fi } # Saves the VES agent configuration to the startup script. # # Get the current VES agent configuration from the bash command: -# $vppctl show ves agent +# \$vppctl show ves agent # Server Addr Server Port Interval Enabled # 127.0.0.1 8080 10 True # Set the VES agent configuration with the bash command: -# $vppctl set ves agent server 127.0.0.1 port 8080 intval 10 +# \$vppctl set ves agent server 127.0.0.1 port 8080 intval 10 # save_ves_config() { @@ -436,23 +426,23 @@ save_ves_config() local port="" local intval="" - local ves_config=`vppctl show ves agent | head -2 | tail -1` - if [ "${ves_config}" != "" ] ;then - server=`echo ${ves_config} | awk '{ print $1 }'` - port=`echo ${ves_config} | awk '{ print $2 }'` - intval=`echo ${ves_config} | awk '{ print $3 }'` - write_startup_scripts add "set ves agent server ${server} port ${port} intval ${intval}" + local ves_config=\`vppctl show ves agent | head -2 | tail -1\` + if [ "\${ves_config}" != "" ] ;then + server=\`echo \${ves_config} | awk '{ print \$1 }'\` + port=\`echo \${ves_config} | awk '{ print \$2 }'\` + intval=\`echo \${ves_config} | awk '{ print \$3 }'\` + write_startup_scripts add "set ves agent server \${server} port \${port} intval \${intval}" fi } # Save the VxLAN Tunnel Configuration to the startup script. # # Get the current VxLAN tunnel configuration with bash command: -# $vppctl show vxlan tunnel +# \$vppctl show vxlan tunnel # [0] src 10.3.0.2 dst 10.1.0.20 vni 100 sw_if_index 1 encap_fib_index 0 fib_entry_index 7 decap_next l2 # [1] src 10.5.0.20 dst 10.5.0.21 vni 100 sw_if_index 2 encap_fib_index 0 fib_entry_index 8 decap_next l2 # Set the VxLAN Tunnel with the bash command: -# $vppctl create vxlan tunnel src 10.3.0.2 dst 10.1.0.20 vni 100 +# \$vppctl create vxlan tunnel src 10.3.0.2 dst 10.1.0.20 vni 100 # vxlan_tunnel0 save_vxlan_tunnel() { @@ -462,12 +452,12 @@ save_vxlan_tunnel() vppctl show vxlan tunnel | while read line do - if [ "${line}" != "" ] ;then - src=`echo ${line} | awk '{ print $3 }'` - dst=`echo ${line} | awk '{ print $5 }'` - vni=`echo ${line} | awk '{ print $7 }'` + if [ "\${line}" != "" ] ;then + src=\`echo \${line} | awk '{ print \$3 }'\` + dst=\`echo \${line} | awk '{ print \$5 }'\` + vni=\`echo \${line} | awk '{ print \$7 }'\` - write_startup_scripts add "create vxlan tunnel src ${src} dst ${dst} vni ${vni}" + write_startup_scripts add "create vxlan tunnel src \${src} dst \${dst} vni \${vni}" fi done } @@ -475,14 +465,14 @@ save_vxlan_tunnel() # Save the VxLAN tunnel L2 xconnect configuration to the startup script. # # Get the Current L2 Address configuration with bash command: -# $vppctl show int addr +# \$vppctl show int addr # local0 (dn): # vxlan_tunnel0 (up): # l2 xconnect vxlan_tunnel1 # vxlan_tunnel1 (up): # l2 xconnect vxlan_tunnel0 # Save the VxLAN tunnel L2 xconnect configuration with bash command: -# $vppctl set interface l2 xconnect vxlan_tunnel0 vxlan_tunnel1 +# \$vppctl set interface l2 xconnect vxlan_tunnel0 vxlan_tunnel1 # save_vxlan_xconnect() { @@ -491,17 +481,17 @@ save_vxlan_xconnect() vppctl show int addr | while read line do - if [[ ${line} == vxlan_tunnel* ]] ;then + if [[ \${line} == vxlan_tunnel* ]] ;then read next - while [[ ${next} != l2* ]] || [[ ${next} == "" ]] + while [[ \${next} != l2* ]] || [[ \${next} == "" ]] do - line=`echo ${next}` + line=\`echo \${next}\` read next done - if [[ ${next} == l2* ]] ;then - ingress=`echo ${line} | awk '{ print $1 }'` - egress=`echo ${next} | awk '{ print $3 }'` - write_startup_scripts add "set interface l2 xconnect ${ingress} ${egress}" + if [[ \${next} == l2* ]] ;then + ingress=\`echo \${line} | awk '{ print \$1 }'\` + egress=\`echo \${next} | awk '{ print \$3 }'\` + write_startup_scripts add "set interface l2 xconnect \${ingress} \${egress}" fi fi done diff --git a/vnfs/vCPE/vpp-ves-agent-for-vgmux/src/patches/vCPE-vG-MUX-libevel-fixup.patch b/vnfs/vCPE/vpp-ves-agent-for-vgmux/src/patches/vCPE-vG-MUX-libevel-fixup.patch new file mode 100644 index 00000000..639a7c6e --- /dev/null +++ b/vnfs/vCPE/vpp-ves-agent-for-vgmux/src/patches/vCPE-vG-MUX-libevel-fixup.patch @@ -0,0 +1,120 @@ +diff --git a/vnfs/VES5.0/evel/evel-library/code/evel_library/evel_event.c b/vnfs/VES5.0/evel/evel-library/code/evel_library/evel_event.c +index ced29b2..892e4b6 100644 +--- a/vnfs/VES5.0/evel/evel-library/code/evel_library/evel_event.c ++++ b/vnfs/VES5.0/evel/evel-library/code/evel_library/evel_event.c +@@ -166,7 +166,8 @@ void evel_init_header(EVENT_HEADER * const header,const char *const eventname) + header->last_epoch_microsec = tv.tv_usec + 1000000 * tv.tv_sec; + header->priority = EVEL_PRIORITY_NORMAL; + header->reporting_entity_name = strdup(openstack_vm_name()); +- header->source_name = strdup(openstack_vm_name()); ++ /* header->source_name = strdup(openstack_vm_name()); */ ++ header->source_name = strdup(openstack_vnf_id()); /* vCPE quick hack */ + header->sequence = event_sequence; + header->start_epoch_microsec = header->last_epoch_microsec; + header->major_version = EVEL_HEADER_MAJOR_VERSION; +@@ -180,7 +181,8 @@ void evel_init_header(EVENT_HEADER * const header,const char *const eventname) + evel_init_option_string(&header->nfcnaming_code); + evel_init_option_string(&header->nfnaming_code); + evel_force_option_string(&header->reporting_entity_id, openstack_vm_uuid()); +- evel_force_option_string(&header->source_id, openstack_vm_uuid()); ++ /* evel_force_option_string(&header->source_id, openstack_vm_uuid()); */ ++ evel_force_option_string(&header->source_id, openstack_vnf_id()); /* vCPE quick hack */ + evel_init_option_intheader(&header->internal_field); + + EVEL_EXIT(); +@@ -215,7 +217,8 @@ void evel_init_header_nameid(EVENT_HEADER * const header,const char *const event + header->last_epoch_microsec = tv.tv_usec + 1000000 * tv.tv_sec; + header->priority = EVEL_PRIORITY_NORMAL; + header->reporting_entity_name = strdup(openstack_vm_name()); +- header->source_name = strdup(openstack_vm_name()); ++ /* header->source_name = strdup(openstack_vm_name()); */ ++ header->source_name = strdup(openstack_vnf_id()); /* vCPE quick hack */ + header->sequence = event_sequence; + header->start_epoch_microsec = header->last_epoch_microsec; + header->major_version = EVEL_HEADER_MAJOR_VERSION; +@@ -229,7 +232,8 @@ void evel_init_header_nameid(EVENT_HEADER * const header,const char *const event + evel_init_option_string(&header->nfcnaming_code); + evel_init_option_string(&header->nfnaming_code); + evel_force_option_string(&header->reporting_entity_id, openstack_vm_uuid()); +- evel_force_option_string(&header->source_id, openstack_vm_uuid()); ++ /* evel_force_option_string(&header->source_id, openstack_vm_uuid()); */ ++ evel_force_option_string(&header->source_id, openstack_vnf_id()); /* vCPE quick hack */ + evel_init_option_intheader(&header->internal_field); + + EVEL_EXIT(); +diff --git a/vnfs/VES5.0/evel/evel-library/code/evel_library/metadata.c b/vnfs/VES5.0/evel/evel-library/code/evel_library/metadata.c +index 11fef1b..d82f282 100644 +--- a/vnfs/VES5.0/evel/evel-library/code/evel_library/metadata.c ++++ b/vnfs/VES5.0/evel/evel-library/code/evel_library/metadata.c +@@ -59,6 +59,11 @@ static char vm_uuid[MAX_METADATA_STRING+1] = {0}; + static char vm_name[MAX_METADATA_STRING+1] = {0}; + + /**************************************************************************//** ++ * ID of the VNF extracted from the OpenStack metadata service. ++ *****************************************************************************/ ++static char vnf_id[MAX_METADATA_STRING+1] = {0}; ++ ++/**************************************************************************//** + * How many metadata elements we allow for in the retrieved JSON. + *****************************************************************************/ + static const int MAX_METADATA_TOKENS = 128; +@@ -289,6 +294,19 @@ EVEL_ERR_CODES openstack_metadata(int verbosity) + { + EVEL_DEBUG("VM Name: %s", vm_name); + } ++ if (json_get_string(rx_chunk.memory, ++ tokens, ++ json_token_count, ++ "vnf_id", ++ vnf_id) != EVEL_SUCCESS) ++ { ++ rc = EVEL_BAD_METADATA; ++ EVEL_ERROR("Failed to extract VNF ID from OpenStack metadata"); ++ } ++ else ++ { ++ EVEL_DEBUG("VNF Id: %s", vnf_id); ++ } + } + + exit_label: +@@ -318,6 +336,9 @@ void openstack_metadata_initialize() + strncpy(vm_name, + "Dummy VM name - No Metadata available", + MAX_METADATA_STRING); ++ strncpy(vnf_id, ++ "Dummy VNF ID - No Metadata available", ++ MAX_METADATA_STRING); + } + + /**************************************************************************//** +@@ -590,3 +611,13 @@ const char *openstack_vm_uuid() + { + return vm_uuid; + } ++ ++/**************************************************************************//** ++ * Get the VM UUID provided by the metadata service. ++ * ++ * @returns VM UUID ++ *****************************************************************************/ ++const char *openstack_vnf_id() ++{ ++ return vnf_id; ++} +diff --git a/vnfs/VES5.0/evel/evel-library/code/evel_library/metadata.h b/vnfs/VES5.0/evel/evel-library/code/evel_library/metadata.h +index 1ee4409..b9ed21c 100644 +--- a/vnfs/VES5.0/evel/evel-library/code/evel_library/metadata.h ++++ b/vnfs/VES5.0/evel/evel-library/code/evel_library/metadata.h +@@ -55,4 +55,11 @@ const char *openstack_vm_name(); + *****************************************************************************/ + const char *openstack_vm_uuid(); + ++/**************************************************************************//** ++ * Get the VNF ID provided by the metadata service. ++ * ++ * @returns VNF ID ++ *****************************************************************************/ ++const char *openstack_vnf_id(); ++ + #endif |