cmodfiied to add juju 2.0 support.
[joid.git] / ci / openstack.sh
index 08f1548..8efaac5 100755 (executable)
@@ -7,8 +7,12 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
-opnfvlab=$2
+#./openstack.sh "$opnfvsdn" "$opnfvlab" "$opnfvdistro" "$openstack" || true
+
 opnfvsdn=$1
+opnfvlab=$2
+opnfvdistro=$3
+opnfvos=$4
 
 if [ -f ./deployconfig.yaml ];then
     EXTERNAL_NETWORK=`grep floating-ip-range deployconfig.yaml | cut -d ' ' -f 4 `
@@ -110,8 +114,11 @@ if [ "$API_FQDN" != "None" ]; then
                         echo 'API FQDN injected'; \
                     fi"
 
-    #change in jumphost as well as below commands will run on jumphost
+    # 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
@@ -127,13 +134,36 @@ create_openrc
 
 echo "...... deploy public api proxy ......"
 
-if [ "$opnfvlab" == "orangepod1" ] && [ "$opnfvsdn" == "nosdn" ]; then # only for first test phase
-    PUB_API_NET=$(grep floating-ip-range ./labconfig.yaml |cut -d/ -f2)
-    PUB_API_IP=$(grep public-api-ip ./labconfig.yaml |cut -d: -f2)
-    juju run --unit nodes/0 "sudo ip a a ${PUB_API_IP}/${PUB_API_NET} 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-"$openstack" || true
+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" deployment.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 ......"
@@ -211,4 +241,3 @@ openstack congress datasource create keystone "keystone" \
   --config tenant_name=$OS_TENANT_NAME \
   --config password=$OS_PASSWORD \
   --config auth_url=http://$keystoneIp:5000/v2.0
-