X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=ci%2Fopenstack.sh;h=a7d91fb6ea7fe99e919ee6d83dca101402663164;hb=cad8852bf819f51f2e9602b11d4fc8b723623006;hp=4fdf1f9631d5faec207ad1feeb42ad55b03a6354;hpb=9e321798fa5422c102b9a8a7d3fef799b9745d65;p=joid.git diff --git a/ci/openstack.sh b/ci/openstack.sh index 4fdf1f96..a7d91fb6 100755 --- a/ci/openstack.sh +++ b/ci/openstack.sh @@ -1,5 +1,4 @@ #!/bin/bash -ex - ############################################################################## # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -7,6 +6,10 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +set -ex + +source common/tools.sh + #./openstack.sh "$opnfvsdn" "$opnfvlab" "$opnfvdistro" "$openstack" || true opnfvsdn=$1 @@ -14,8 +17,6 @@ opnfvlab=$2 opnfvdistro=$3 opnfvos=$4 -jujuver=`juju --version` - if [ -f ./deployconfig.yaml ];then EXTERNAL_NETWORK=`grep floating-ip-range deployconfig.yaml | cut -d ' ' -f 4 ` @@ -29,7 +30,6 @@ if [ -f ./deployconfig.yaml ];then EXTNET_NET=${EXTNET[3]} EXTNET_PORT=`grep "ext-port" deployconfig.yaml | cut -d ' ' -f 4 | sed -e 's/ //' | tr ',' ' '` ADMNET_GW=`grep "admNetgway" deployconfig.yaml | cut -d ' ' -f 4 | sed -e 's/ //' | tr ',' ' '` - API_FQDN=`grep "os-domain-name" deployconfig.yaml | cut -d ' ' -f 4 | sed -e 's/ //' | tr ',' ' '` fi # launch eth on computer nodes and remove default gw route @@ -47,59 +47,44 @@ update_gw_mac() { ## get gateway mac EXTNET_GW_MAC=$(juju ssh nova-compute/0 "arp -a ${EXTNET_GW} | grep -Eo '([0-9a-fA-F]{2})(([/\s:-][0-9a-fA-F]{2}){5})'") ## set external gateway mac in onos - if [[ "$jujuver" < "2" ]]; then - juju set onos-controller gateway-mac=$EXTNET_GW_MAC - else - juju config onos-controller gateway-mac=$EXTNET_GW_MAC - fi + juju config onos-controller gateway-mac=$EXTNET_GW_MAC } unitAddress() { - if [[ "$jujuver" < "2" ]]; then - juju status --format yaml | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"public-address\"]" 2> /dev/null - else - juju status --format yaml | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"applications\"][\"$1\"][\"units\"][\"$1/$2\"][\"public-address\"]" 2> /dev/null - fi + juju status --format yaml | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"applications\"][\"$1\"][\"units\"][\"$1/$2\"][\"public-address\"]" 2> /dev/null } unitMachine() { - if [[ "$jujuver" < "2" ]]; then - juju status --format yaml | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"machine\"]" 2> /dev/null - else - juju status --format yaml | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"applications\"][\"$1\"][\"units\"][\"$1/$2\"][\"machine\"]" 2> /dev/null - fi + juju status --format yaml | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"applications\"][\"$1\"][\"units\"][\"$1/$2\"][\"machine\"]" 2> /dev/null } keystoneIp() { if [ $(juju status keystone --format=short | grep " keystone"|wc -l) == 1 ];then unitAddress keystone 0 else - if [[ "$jujuver" < "2" ]]; then - juju get keystone | python -c "import yaml; import sys; print yaml.load(sys.stdin)['settings']['vip']['value']" | cut -d " " -f 1 - else - juju config keystone | python -c "import yaml; import sys; print yaml.load(sys.stdin)['settings']['vip']['value']" | cut -d " " -f 1 - fi + juju config keystone | python -c "import yaml; import sys; print yaml.load(sys.stdin)['settings']['vip']['value']" | cut -d " " -f 1 fi } # create external network and subnet in openstack create_openrc() { + echo_info "Creating the openrc (OpenStack client environment scripts)" + mkdir -m 0700 -p cloud keystoneIp=$(keystoneIp) - if [[ "$jujuver" < "2" ]]; then - adminPasswd=$(juju get keystone | grep admin-password -A 5 | grep value | awk '{print $2}' 2> /dev/null) - else - adminPasswd=$(juju config keystone | grep admin-password -A 5 | grep value | awk '{print $2}' 2> /dev/null) - fi + adminPasswd=$(juju config keystone | grep admin-password -A 5 | grep value | awk '{print $2}' 2> /dev/null) v3api=`juju config keystone preferred-api-version` if [[ "$v3api" == "3" ]]; then - configOpenrc admin $adminPasswd admin http://$keystoneIp:5000/v3 RegionOne > ~/joid_config/admin-openrc + configOpenrc admin $adminPasswd admin http://$keystoneIp:5000/v3 RegionOne publicURL > ~/joid_config/admin-openrc chmod 0600 ~/joid_config/admin-openrc source ~/joid_config/admin-openrc projectid=`openstack project show admin -c id -f value` - configOpenrc admin $adminPasswd admin http://$keystoneIp:5000/v3 RegionOne $projectid > ~/joid_config/admin-openrc + projectdomainid=`openstack domain show admin_domain -c id -f value` + userdomainid=`openstack user show admin -c domain_id -f value` + urlapi=`openstack catalog show keystone --format yaml | python -c "import yaml; import sys; print yaml.load(sys.stdin)['endpoints']" | grep public | cut -d " " -f 4` + configOpenrc admin $adminPasswd admin $urlapi RegionOne > ~/joid_config/admin-openrc else configOpenrc2 admin $adminPasswd admin http://$keystoneIp:5000/v2.0 RegionOne > ~/joid_config/admin-openrc chmod 0600 ~/joid_config/admin-openrc @@ -121,97 +106,26 @@ EOF configOpenrc() { cat <<-EOF -# unsetting v3 items in case set +#export OS_NO_CACHE='true' export OS_AUTH_URL=$4 -export OS_USERNAME=$1 -export OS_PASSWORD=$2 export OS_USER_DOMAIN_NAME=admin_domain export OS_PROJECT_DOMAIN_NAME=admin_domain -export OS_PROJECT_NAME=$3 +export OS_USERNAME=$1 export OS_TENANT_NAME=$3 -export OS_TENANT_ID=$6 -export OS_REGION_NAME=$5 +export OS_PROJECT_NAME=$3 +export OS_PASSWORD=$2 export OS_IDENTITY_API_VERSION=3 -# Swift needs this: -export OS_ENDPOINT_TYPE=publicURL -export OS_INTERFACE=public -export OS_AUTH_VERSION=3 +export OS_REGION_NAME=$5 +#export OS_INSECURE=true +#export OS_CASSL=~/joid_config/ca.pem EOF } -if [ "$API_FQDN" != "None" ]; then - # Push api fqdn local ip to all /etc/hosts - if [[ "$jujuver" < "2" ]]; then - API_FQDN=$(juju get keystone | python -c "import yaml; import sys;\ - print yaml.load(sys.stdin)['settings']['os-public-hostname']['value']") - else - API_FQDN=$(juju config keystone | python -c "import yaml; import sys;\ - print yaml.load(sys.stdin)['settings']['os-public-hostname']['value']") - fi - - - KEYSTONEIP=$(keystoneIp) - juju run --all "if grep $API_FQDN /etc/hosts > /dev/null; then \ - echo 'API FQDN already present'; \ - else \ - sudo sh -c 'echo $KEYSTONEIP $API_FQDN >> /etc/hosts'; \ - echo 'API FQDN injected'; \ - fi" - - # remove this enhancement for heat that does not manage endpoints - juju run --service=heat "cp /etc/hosts /tmp/hosts ; \ - grep -v $API_FQDN /tmp/hosts > /etc/hosts" - - #change in jumphost as well as below commands will run on jumphost - if grep $API_FQDN /etc/hosts; then - echo 'API FQDN already present' - else - sudo sh -c "echo $KEYSTONEIP $API_FQDN >> /etc/hosts" - echo 'API FQDN injected' - fi -fi - # Create an load openrc create_openrc . ~/joid_config/admin-openrc -echo "...... deploy public api proxy ......" - -if ([ "$opnfvlab" == "orangepod1" ] \ - || [ "$opnfvlab" == "intelpod6" ]) \ - && [ "$opnfvsdn" == "nosdn" ] \ - && [ "$API_FQDN" != "None" ]; then # only for first test phase - if [ -e ./labconfig.yaml ]; then - PUB_API_MASK=$(grep floating-ip-range ./labconfig.yaml |cut -d/ -f2) - PUB_API_NET=$(grep floating-ip-range ./labconfig.yaml |cut -d, -f4) - PUB_API_IP=$(grep public-api-ip ./labconfig.yaml |cut -d: -f2) - if grep "- type: public" ./labconfig.yaml; then - # The public network exists on MAAS, so we push the dns record to it - - # Recover maas ips and login to it - maas_ip=$(grep " ip_address" deployconfig.yaml | cut -d ':' -f 2 | sed -e 's/ //') - maas_pubip=$(grep floating-ip-range ./labconfig.yaml |cut -d, -f4 |perl -pe 's!^(.*)\.\d+/\d+$!$1.5!') - apikey=$(grep maas-oauth: environments.yaml | cut -d "'" -f 2) - maas login maas http://${maas_ip}/MAAS/api/1.0 ${apikey} - - # Configure maas to add the record - CLUSTER_UUID=$(maas ubuntu node-groups list | grep uuid | cut -d\" -f4) - PUBLIC_MAAS_IF=$(maas ubuntu node-group-interfaces list $cluster_uuid |\ - python -c "import yaml; import sys; cfg=yaml.load(sys.stdin); net_h={net['ip']:net['name'] for net in cfg}; print(net_h['$maas_pubip'])") - maas maas node-group-interface update ${CLUSTER_UUID} ${PUBLIC_MAAS_IF} static_ip_range_high=${PUB_API_IP} static_ip_range_low=${PUB_API_IP} - maas maas ipaddresses reserve network=${PUB_API_NET} requested_address=${PUB_API_IP} hostname=${API_FQDN} - dig ${PUB_API_IP} @${maas_ip} # just for log - fi - juju run --unit nodes/0 "sudo ip a a ${PUB_API_IP}/${PUB_API_MASK} dev br-ex" || true - juju run --unit nodes/0 "sudo ip l set dev br-ex up" || true - python genPublicAPIProxyBundle.py -l labconfig.yaml >> bundles.yaml - juju-deployer -vW -d -t 7200 -r 5 -c bundles.yaml $opnfvdistro-"$opnfvos" || true - fi -fi - -echo "...... deploy end public api proxy ......" - ## ## removing the swift API endpoint which is created by radosgw. ## one option is not to used radosgw and other one is remove endpoint. @@ -227,10 +141,16 @@ echo "...... deploy end public api proxy ......" ## Create external subnet Network ## +echo_info "Creating external network with neutron" + if [ "onos" == "$opnfvsdn" ]; then launch_eth neutron net-show ext-net > /dev/null 2>&1 || neutron net-create ext-net \ --router:external=True +elif [ "ocl" == "$opnfvsdn" ]; then + neutron net-show ext-net > /dev/null 2>&1 || neutron net-create ext-net \ + --router:external=True + else neutron net-show ext-net > /dev/null 2>&1 || neutron net-create ext-net \ --router:external=True \ @@ -242,6 +162,14 @@ neutron subnet-show ext-subnet > /dev/null 2>&1 || neutron subnet-create ext-net --name ext-subnet --allocation-pool start=$EXTNET_FIP,end=$EXTNET_LIP \ --disable-dhcp --gateway $EXTNET_GW $EXTNET_NET +# Ocl can push packets to the fabric network in order to reach a gateway if BGP/L3VPN hasn't been configured. +if [ "ocl" == "$opnfvsdn" ]; then + echo "Creating simple gateway functions on ocl vRouters" + juju run --application nova-compute "sudo \ + python /opt/contrail/utils/provision_vgw_interface.py \ + --oper create --interface vgw1 --subnets $EXTNET_NET --routes 0.0.0.0/24 --vrf default-domain:admin:ext-net:ext-net" +fi + #congress team is not updating and supporting charm anymore so defer it. # Create Congress datasources