Revert "modfiied to adjust timings as it seems download the container image is slow...
[joid.git] / ci / 03-maasdeploy.sh
index a162bfb..668eab9 100755 (executable)
@@ -2,7 +2,25 @@
 #placeholder for deployment script.
 set -ex
 
-source tools.sh
+source common/tools.sh
+
+
+usage() {
+  # no xtrace output
+  { set +x; } 2> /dev/null
+
+  echo "OPNFV JOID deployer of the MAAS (Metal as a Service) infrastructure."
+  echo "Usage: $0 custom <path_to_labconfig>"
+  echo "       $0 virtual"
+  exit ${1-0}
+}
+
+# Print usage help message if requested
+if [ "$1" == "help" ] || [ "$1" == "-h" ] || [ "$1" == "--help" ]
+then
+    usage;
+fi
+
 
 virtinstall=0
 labname=$1
@@ -12,11 +30,13 @@ if [ ! -e $HOME/.ssh/id_rsa ]; then
 fi
 
 NODE_ARCTYPE=`arch`
+CPU_MODEL="host"
 
 if  [ "ppc64le" == "$NODE_ARCTYPE" ]; then
     NODE_ARCHES="ppc64el"
 elif [ "aarch64" == "$NODE_ARCTYPE" ]; then
     NODE_ARCHES="arm64"
+    CPU_MODEL="host-passthrough"
 else
     NODE_ARCHES="amd64"
 fi
@@ -43,22 +63,6 @@ sudo apt-get install bridge-utils openssh-server bzr git virtinst qemu-kvm libvi
 sudo -H pip install --upgrade pip
 
 
-usage() {
-  # no xtrace output
-  { set +x; } 2> /dev/null
-
-  echo "OPNFV JOID deployer of the MAAS (Metal as a Service) infrastructure."
-  echo "Usage: $0 custom <path_to_labconfig>"
-  echo "       $0 virtual"
-  exit ${1-0}
-}
-
-if [ "$1" == "help" ] || [ "$1" == "-h" ] || [ "$1" == "--help" ]
-then
-    usage;
-fi
-
-
 #
 # Config preparation
 #
@@ -253,9 +257,9 @@ configuremaas(){
 
     #create the required spaces.
     maas $PROFILE space update 0 name=default || true
-    for space in unused admin-api internal-api public-api \
+    for space in admin-api internal-api public-api \
                  storage-access storage-cluster admin \
-                 tenant-data tenant-api tenant-public oam-space
+                 tenant-data tenant-api tenant-public  os-api
     do
         echo_info "Creating the space $space"
         maas $PROFILE spaces create name=$space || true
@@ -279,7 +283,7 @@ configuremaas(){
 setupspacenetwork(){
 
     #get space, subnet and vlan and create accordingly.
-    #for type in pxe admin data storage external floating public; do
+    #for type in admin osapi data storage external floating public; do
     nettypes=`cat labconfig.json | jq '.opnfv.spaces[]'.type | cut -d \" -f 2`
     for type in $nettypes; do
         config_done=0
@@ -333,13 +337,13 @@ setupspacenetwork(){
             fi
         fi
         case "$type" in
-            'pxe')             JUJU_SPACE="oam-space";     DHCP='enabled' ;;
             'admin')           JUJU_SPACE="internal-api";  DHCP='enabled' ;;
             'data')            JUJU_SPACE="tenant-data";   DHCP='' ;;
             'public')          JUJU_SPACE="public-api";    DHCP='' ;;
             'storage')         JUJU_SPACE="storage-cluster";   DHCP='' ;;
             'storageaccess')   JUJU_SPACE="storage-data";  DHCP='' ;;
             'floating')        JUJU_SPACE="tenant-public"; DHCP='' ;;
+            'osapi')           JUJU_SPACE="os-api";        DHCP='' ;;
             *)                 JUJU_SPACE='default';       DHCP='OFF'; echo_info "      >>> Unknown SPACE" ;;
         esac
         JUJU_SPACE_ID=$(maas $PROFILE spaces read | jq -r ".[] |  select(.name==\"$JUJU_SPACE\")".id)
@@ -350,7 +354,7 @@ setupspacenetwork(){
                 maas $PROFILE vlan update $NET_FABRIC_ID $JUJU_VLAN_VID space=$JUJU_SPACE_ID
             fi
         fi
-        if ([ $type == "admin" ] || [ $type == "pxe" ]); then
+        if ([ $type == "admin" ]); then
             # If we have a network, we create it
             if ([ $NET_FABRIC_ID ]); then
                 # Set ranges
@@ -382,6 +386,8 @@ addnodes(){
     do
         maas $PROFILE machine delete $m
     done
+    podno=$(maas $PROFILE pods read | jq -r ".[]".id)
+    maas $PROFILE pod delete $podno || true
 
     # if we have a virshurl configuration we use it, else we use local
     VIRSHURL=$(cat labconfig.json | jq -r '.opnfv.virshurl')
@@ -407,10 +413,9 @@ addnodes(){
 
         brid=`brctl show | grep 8000 | cut -d "8" -f 1 |  tr "\n" " " | tr "    " " " | tr -s " "`
         ADMIN_BR=`cat labconfig.json | jq '.opnfv.spaces[] | select(.type=="admin")'.bridge | cut -d \" -f 2 `
-        PXE_BR=`cat labconfig.json | jq '.opnfv.spaces[] | select(.type=="admin")'.bridge | cut -d \" -f 2 `
 
         for feature in $brid; do
-            if ([ "$feature" == "$ADMIN_BR" ] || [ "$feature" == "$PXE_BR" ]); then
+            if ([ "$feature" == "$ADMIN_BR" ]); then
                 netw=$netw" --network bridge="$feature",model=virtio"
             else
                 netw=$netw
@@ -430,7 +435,7 @@ addnodes(){
 
     echo_info "Creating and adding bootstrap node"
 
-    virt-install --connect $VIRSHURL --name bootstrap --ram 4098 --cpu host --vcpus 2 \
+    virt-install --connect $VIRSHURL --name bootstrap --ram 4098 --cpu $CPU_MODEL --vcpus 2 \
                  --disk size=20,format=qcow2,bus=virtio,cache=directsync,io=native,pool=default \
                  $netw --boot network,hd,menu=off --noautoconsole \
                  --print-xml | tee bootstrap
@@ -445,6 +450,8 @@ addnodes(){
         done
     fi
     virsh -c $VIRSHURL define --file bootstrap
+    virsh -c $VIRSHURL autostart bootstrap
+
     rm -f bootstrap
 
     sleep 60
@@ -465,12 +472,14 @@ addnodes(){
            units=$(($units - 1));
            NODE_NAME=`cat labconfig.json | jq ".lab.racks[].nodes[$units].name" | cut -d \" -f 2 `
 
-            virt-install --connect $VIRSHURL --name $NODE_NAME --ram 8192 --cpu host --vcpus 4 \
+            virt-install --connect $VIRSHURL --name $NODE_NAME --ram 8192 --cpu $CPU_MODEL --vcpus 4 \
                      --disk size=120,format=qcow2,bus=virtio,cache=directsync,io=native,pool=default \
                      $netw $netw --boot network,hd,menu=off --noautoconsole --print-xml | tee $NODE_NAME
 
             nodemac=`grep  "mac address" $NODE_NAME | head -1 | cut -d '"' -f 2`
             virsh -c $VIRSHURL define --file $NODE_NAME
+            virsh -c $VIRSHURL autostart $NODE_NAME
+
             rm -f $NODE_NAME
             maas $PROFILE machines create autodetect_nodegroup='yes' name=$NODE_NAME \
                 tags='control compute' hostname=$NODE_NAME power_type='virsh' mac_addresses=$nodemac \
@@ -487,8 +496,6 @@ addnodes(){
             units=$(($units - 1));
             NODE_NAME=`cat labconfig.json | jq ".lab.racks[].nodes[$units].name" | cut -d \" -f 2 `
             MAC_ADDRESS=`cat labconfig.json | jq ".lab.racks[].nodes[$units].nics[] | select(.spaces[]==\"admin\").mac"[0] | cut -d \" -f 2 `
-            MAC_ADDRESS_PXE=`cat labconfig.json | jq ".lab.racks[].nodes[$units].nics[] | select(.spaces[]==\"pxe\").mac"[0] | cut -d \" -f 2 `
-            #MAC_ADDRESS1=`cat labconfig.json | jq ".lab.racks[].nodes[$units].nics[] | select(.spaces[]==\"floating\").mac"[0] | cut -d \" -f 2 `
             POWER_TYPE=`cat labconfig.json | jq ".lab.racks[].nodes[$units].power.type" | cut -d \" -f 2 `
             POWER_IP=`cat labconfig.json |  jq ".lab.racks[].nodes[$units].power.address" | cut -d \" -f 2 `
             POWER_USER=`cat labconfig.json |  jq ".lab.racks[].nodes[$units].power.user" | cut -d \" -f 2 `
@@ -506,17 +513,10 @@ addnodes(){
             NODE_ARC="$NODE_ARCHES/generic"
 
             echo_info "Creating node $NODE_NAME"
-            if ([ $MAC_ADDRESS_PXE ] && ["$MAC_ADDRESS_PXE" != "null" ]); then
-                maas $PROFILE machines create autodetect_nodegroup='yes' name=$NODE_NAME \
-                    hostname=$NODE_NAME power_type=$POWER_TYPE power_parameters_power_address=$POWER_IP \
-                    power_parameters_power_user=$POWER_USER power_parameters_power_pass=$POWER_PASS \
-                    mac_addresses=$MAC_ADDRESS_PXE architecture=$NODE_ARC
-            else
-                maas $PROFILE machines create autodetect_nodegroup='yes' name=$NODE_NAME \
-                    hostname=$NODE_NAME power_type=$POWER_TYPE power_parameters_power_address=$POWER_IP \
-                    power_parameters_power_user=$POWER_USER power_parameters_power_pass=$POWER_PASS \
-                    mac_addresses=$MAC_ADDRESS architecture=$NODE_ARC
-            fi
+            maas $PROFILE machines create autodetect_nodegroup='yes' name=$NODE_NAME \
+                hostname=$NODE_NAME power_type=$POWER_TYPE power_parameters_power_address=$POWER_IP \
+                power_parameters_power_user=$POWER_USER power_parameters_power_pass=$POWER_PASS \
+                mac_addresses=$MAC_ADDRESS architecture=$NODE_ARC
         done
     fi
 
@@ -618,6 +618,7 @@ if [ -e ./labconfig.json ]; then
                 'data')     IF_MODE='AUTO' ;;
                 'public')   IF_MODE='AUTO' ;;
                 'storage')  IF_MODE='AUTO' ;;
+                'osapi')    IF_MODE='AUTO' ;;
                 'floating') IF_MODE='link_up' ;;
                 *) SUBNET_CIDR='null'; IF_MODE='null'; echo_info "      >>> Unknown SPACE" ;;
             esac
@@ -636,8 +637,12 @@ if [ -e ./labconfig.json ]; then
             if ([ $IF_VLAN ] && [ "$IF_VLAN" != "null" ]); then
                 echo_info "      >>> Configuring VLAN $IF_VLAN"
                 VLANID=$(maas $PROFILE subnets read | jq ".[].vlan | select(.vid==$IF_VLAN)".id)
-                FABRICID=$(maas $PROFILE subnets read | jq ".[].vlan | select(.vid==$IF_VLAN)".fabric_id)
-                INTERFACE=$(maas $PROFILE interfaces read $NODE_SYS_ID | jq ".[] | select(.vlan.fabric_id==$FABRICID)".id)
+                if ([ $VLANID ] && [ "$VLANID" != "null" ]); then
+                    FABRICID=$(maas $PROFILE subnets read | jq ".[].vlan | select(.vid==$IF_VLAN)".fabric_id)
+                    if ([ $FABRICID ] && [ "$FABRICID" != "null" ]); then
+                        INTERFACE=$(maas $PROFILE interfaces read $NODE_SYS_ID | jq ".[] | select(.vlan.fabric_id==$FABRICID)".id)
+                    fi
+                fi
                 if [[ -z $INTERFACE ]]; then
                     # parent interface is not set because it does not have a SUBNET_CIDR
                     PARENT_VLANID=$(maas $PROFILE fabrics read | jq ".[].vlans[] | select(.fabric_id==$FABRICID and .name==\"untagged\")".id)