In case of public api, we push a DNS record to maas 47/22247/2
authorDavid Blaisonneau <david.blaisonneau@orange.com>
Wed, 21 Sep 2016 16:29:28 +0000 (18:29 +0200)
committerDavid Blaisonneau <david.blaisonneau@orange.com>
Thu, 22 Sep 2016 09:39:22 +0000 (11:39 +0200)
Change-Id: I6f071db240778d8c49f0b129e2f8046b9e3cf71f
Signed-off-by: David Blaisonneau <david.blaisonneau@orange.com>
ci/openstack.sh
labconfig/intel/pod6/labconfig.yaml

index 5bee7d0..8efaac5 100755 (executable)
@@ -134,11 +134,32 @@ create_openrc
 
 echo "...... deploy public api proxy ......"
 
-if [ "$opnfvlab" == "orangepod1" ] && [ "$opnfvsdn" == "nosdn" ]; then # only for first test phase
+if ([ "$opnfvlab" == "orangepod1" ] \
+    || [ "$opnfvlab" == "intelpod6" ]) \
+    && [ "$opnfvsdn" == "nosdn" ] \
+    && [ "$API_FQDN" != "None" ]; then # only for first test phase
     if [ -e ./labconfig.yaml ]; then
-        PUB_API_NET=$(grep floating-ip-range ./labconfig.yaml |cut -d/ -f2)
+        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)
-        juju run --unit nodes/0 "sudo ip a a ${PUB_API_IP}/${PUB_API_NET} dev br-ex" || true
+        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
index 35a427e..251c860 100644 (file)
@@ -111,10 +111,11 @@ lab:
 #        address: 10.2.117.106
 #        user: root
 #        pass: root
-    floating-ip-range: 10.6.15.6,10.6.15.250,10.6.15.1,10.6.15.0/24
+    floating-ip-range: 10.6.15.7,10.6.15.250,10.6.15.1,10.6.15.0/24
     ext-port: "eth5"
     dns: 8.8.8.8
-    osdomainname:
+    public-api-ip: 10.6.15.6
+    osdomainname: api.maas
 opnfv:
   release: c
   distro: trusty