Merge "Auto Generated INFO.yaml file"
[joid.git] / ci / 03-maasdeploy.sh
index db85cbb..73b789f 100755 (executable)
@@ -56,21 +56,21 @@ echo_info "Installing and upgrading required packages"
 sudo apt-get update -y || true
 sudo apt-get install software-properties-common -y
 
-if [ "$snapinstall" -eq 0 ]; then
+if [ "$snapinstall" -eq "0" ]; then
     sudo apt-add-repository ppa:juju/stable -y
     sudo apt-add-repository ppa:maas/stable -y
 fi
 if [ "bionic" != "$opnfvdistro" ]; then
-        sudo apt-add-repository cloud-archive:pike -y
+        sudo apt-add-repository cloud-archive:queens -y
     if [ "aarch64" == "$NODE_ARCTYPE" ]; then
-        sudo add-apt-repository ppa:ubuntu-cloud-archive/pike-staging -y
+        sudo add-apt-repository ppa:ubuntu-cloud-archive/queens-staging -y
     fi
 fi
 
 sudo apt-get update -y || true
 #sudo apt-get dist-upgrade -y
 
-if [ "$snapinstall" -eq 1 ]; then
+if [ "$snapinstall" -eq "1" ]; then
     sudo apt-get install bridge-utils openssh-server bzr git virtinst qemu-kvm libvirt-bin \
              maas maas-region-controller juju python-pip python-psutil python-openstackclient \
              python-congressclient gsutil pastebinit python-jinja2 sshpass \
@@ -209,7 +209,6 @@ sudo virsh pool-define-as default --type dir --target /var/lib/libvirt/images/ |
 sudo virsh pool-start default || true
 sudo virsh pool-autostart default || true
 
-# In case of virtual install set network
 if [ "$virtinstall" -eq 1 ]; then
     sudo virsh net-dumpxml default > default-net-org.xml
     sed -i '/dhcp/d' default-net-org.xml
@@ -217,7 +216,18 @@ if [ "$virtinstall" -eq 1 ]; then
     sudo virsh net-destroy default
     sudo virsh net-define default-net-org.xml
     sudo virsh net-start default
+    sudo virsh net-autostart default || true
     rm -f default-net-org.xml
+else
+    # As we use kvm so setup network on admin network
+    ADMIN_BR=`cat labconfig.json | jq '.opnfv.spaces[] | select(.type=="admin")'.bridge | cut -d \" -f 2 `
+    sed -i "s@brAdm@$ADMIN_BR@" net.xml
+    sudo virsh net-destroy default || true
+    sudo virsh net-undefine default || true
+    sudo virsh net-define net.xml || true
+    sudo virsh net-autostart default || true
+    sudo virsh net-start default || true
+    sudo virsh net-autostart default || true
 fi
 
 #
@@ -230,29 +240,38 @@ if [ $(pip list --format=columns | grep google-api-python-client | wc -l) == 1 ]
     sudo pip uninstall google-api-python-client
 fi
 
-if [ "$snapinstall" -eq 0 ]; then
-    maasuser=maas
+if [ "$snapinstall" -eq "0" ]; then
+    if [ ! -e ~maas/.ssh/id_rsa.pub ]; then
+        if [ ! -e $HOME/id_rsa_maas.pub ]; then
+            [ -e $HOME/id_rsa_maas ] && rm -f $HOME/id_rsa_maas
+            sudo su - $USER -c "echo |ssh-keygen -t rsa -f $HOME/id_rsa_maas"
+        fi
+        sudo -u maas mkdir ~maas/.ssh/ || true
+        sudo cp $HOME/id_rsa_maas ~maas/.ssh/id_rsa
+        sudo cp $HOME/id_rsa_maas.pub ~maas/.ssh/id_rsa.pub
+        sudo chown maas:maas ~maas/.ssh/id_rsa
+        sudo chown maas:maas ~maas/.ssh/id_rsa.pub
+        sudo cat ~maas/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
+    fi
 else
-    maasuser=root
-fi
-
-if [ ! -e ~$maasuser/.ssh/id_rsa.pub ]; then
-    if [ ! -e $HOME/id_rsa_maas.pub ]; then
-        [ -e $HOME/id_rsa_maas ] && rm -f $HOME/id_rsa_maas
-        sudo su - $USER -c "echo |ssh-keygen -t rsa -f $HOME/id_rsa_maas"
+    if [ ! -e /root/.ssh/id_rsa.pub ]; then
+        if [ ! -e $HOME/id_rsa_maas.pub ]; then
+            [ -e $HOME/id_rsa_maas ] && rm -f $HOME/id_rsa_maas
+            sudo su - $USER -c "echo |ssh-keygen -t rsa -f $HOME/id_rsa_maas"
+        fi
+        sudo -u root mkdir /root/.ssh/ || true
+        sudo cp $HOME/id_rsa_maas /root/.ssh/id_rsa
+        sudo cp $HOME/id_rsa_maas.pub /root/.ssh/id_rsa.pub
+        sudo chown root:root /root/.ssh/id_rsa
+        sudo chown root:root /root/.ssh/id_rsa.pub
+        sudo cat /root/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
     fi
-    sudo -u $maasuser mkdir ~$maasuser/.ssh/ || true
-    sudo cp $HOME/id_rsa_maas ~$maasuser/.ssh/id_rsa
-    sudo cp $HOME/id_rsa_maas.pub ~$maasuser/.ssh/id_rsa.pub
-    sudo chown $maasuser:$maasuser ~$maasuser/.ssh/id_rsa
-    sudo chown $maasuser:$maasuser ~$maasuser/.ssh/id_rsa.pub
 fi
 
 # Ensure virsh can connect without ssh auth
-sudo cat ~$maasuser/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
 sudo cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
 
-if [ "$snapinstall" -eq 1 ]; then
+if [ "$snapinstall" -eq "1" ]; then
     sudo maas init --mode all --maas-url http://$MAAS_IP:5240/MAAS --admin-username $PROFILE \
                    --admin-password $PROFILE --admin-email ubuntu@ubuntu.com || true
     API_KEY=`sudo maas apikey --username=$PROFILE`
@@ -273,6 +292,7 @@ configuremaas(){
     maas $PROFILE maas set-config name=upstream_dns value=$MY_UPSTREAM_DNS || true
     maas $PROFILE maas set-config name='maas_name' value=$MAAS_NAME || true
     maas $PROFILE maas set-config name='ntp_server' value='ntp.ubuntu.com' || true
+    maas $PROFILE domain update 0 name=$MAAS_NAME  || true
     maas $PROFILE sshkeys create "key=$SSH_KEY" || true
 
     for tag in bootstrap compute control storage
@@ -284,6 +304,10 @@ configuremaas(){
     maas $PROFILE tags create name='opnfv-dpdk' comment='OPNFV DPDK enablement' \
          kernel_opts='hugepagesz=2M hugepages=1024 hugepagesz=1G hugepages=20 default_hugepagesz=1G intel_iommu=on' || true
 
+    #maas $PROFILE package-repositories create name="Ubuntu  Proposed new" \
+    #     url="http://archive.ubuntu.com/ubuntu" components="main" \
+    #     distributions="xenial-proposed" arches=amd64,i386
+
     #create the required spaces.
     maas $PROFILE space update 0 name=default || true
     for space in admin-api internal-api public-api \
@@ -297,11 +321,19 @@ configuremaas(){
     maas $PROFILE boot-source update $SOURCE_ID \
          url=$URL keyring_filename=$KEYRING_FILE || true
 
+    maas $PROFILE boot-source-selections create 1 \
+         os="ubuntu" release="xenial" arches="amd64" \
+         labels="*" || true
+    maas $PROFILE boot-source-selections create 1 \
+         os="ubuntu" release="bionic" arches="amd64" \
+         labels="*" || true
+
     if [ $NODE_ARCTYPE != "x86_64" ] ; then
-        maas $PROFILE boot-source-selection update 1 1 arches="$NODE_ARCHES"
+        maas $PROFILE boot-source-selection update 1 1 arches="$NODE_ARCHES" || true
+        maas $PROFILE boot-source-selection update 1 2 arches="$NODE_ARCHES" || true
     fi
 
-    if [ "$snapinstall" -eq 0 ]; then
+    if [ "$snapinstall" -eq "0" ]; then
         maas $PROFILE boot-resources import || true
     fi
 
@@ -452,9 +484,7 @@ addnodes(){
         VIRSHIP=""  # TODO: parse from $VIRSHURL if needed
     fi
 
-    if [ "$virtinstall" -eq 1 ]; then
-        netw=" --network bridge=virbr0,model=virtio"
-    elif ([ "$VIRSHHOST" != "" ]); then
+    if ([ "$VIRSHHOST" != "" ]); then
         # Get the bridge hosting the remote virsh
         brid=$(ssh $VIRSHHOST "ip a l | grep $VIRSHHOST | perl -pe 's/.* (.*)\$/\$1/g'")
         netw=" --network bridge=$brid,model=virtio"
@@ -463,7 +493,7 @@ addnodes(){
     else
         netw=""
 
-        brid=`brctl show | grep 8000 | cut -d "8" -f 1 |  tr "\n" " " | tr "    " " " | tr -s " "`
+        brid=`sudo 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 `
 
         for feature in $brid; do
@@ -571,7 +601,20 @@ addnodes(){
         done
     fi
 
-    maas $PROFILE pods create type=virsh power_address="$VIRSHURL" power_user=$USER
+     # Iterate to avoid "Conflict error" issue
+     for ii in 1 2 3 4 5 6 7 8 9 10
+     do
+       echo "Try $ii"
+       maas $PROFILE pods create type=virsh power_address="$VIRSHURL" power_user=$USER > /tmp/deploy.out 2>&1 || true
+       cat /tmp/deploy.out
+       if ! fgrep -q 'Conflict' /tmp/deploy.out
+       then
+         break
+       else
+         continue
+       fi
+     done
+
 
     # Make sure nodes are added into MAAS and none of them is in commissioning state
     i=0