X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=ci%2F03-maasdeploy.sh;h=f66d0cbd44e264121d53a8bf35613200077d9fe6;hb=c21e199a328c1d52232c213d2b243016cca46812;hp=04066c9bcea2804a545a010795e13b80bc1721a0;hpb=a35b7cea80b694c3d7b44ac74e3929ee775c76ce;p=joid.git diff --git a/ci/03-maasdeploy.sh b/ci/03-maasdeploy.sh index 04066c9b..f66d0cbd 100755 --- a/ci/03-maasdeploy.sh +++ b/ci/03-maasdeploy.sh @@ -12,7 +12,7 @@ fi #install the packages needed sudo apt-add-repository ppa:juju/stable -y sudo apt-add-repository ppa:maas/stable -y -sudo apt-add-repository cloud-archive:newton -y +sudo apt-add-repository cloud-archive:ocata -y sudo apt-get update -y #sudo apt-get dist-upgrade -y sudo apt-get install bridge-utils openssh-server bzr git virtinst qemu-kvm libvirt-bin juju \ @@ -92,7 +92,7 @@ SUBNETDATA_CIDR=`cat labconfig.json | jq '.opnfv.spaces[] | select(.type=="data" SUBNETPUB_CIDR=`cat labconfig.json | jq '.opnfv.spaces[] | select(.type=="public")'.cidr | cut -d \" -f 2 ` SUBNETSTOR_CIDR=`cat labconfig.json | jq '.opnfv.spaces[] | select(.type=="storage")'.cidr | cut -d \" -f 2 ` SUBNETFLOAT_CIDR=`cat labconfig.json | jq '.opnfv.spaces[] | select(.type=="floating")'.cidr | cut -d \" -f 2 ` -VLAN_TAG="untagged" +VLAN_UNTTAGED="untagged" # In the case of a virtual deployment get deployconfig.yaml if [ "$virtinstall" -eq 1 ]; then @@ -222,8 +222,8 @@ configuremaas(){ #maas $PROFILE boot-source update $SOURCE_ID \ # url=$URL keyring_filename=$KEYRING_FILE || true - #maas $PROFILE boot-resources import || true - #sleep 60 + maas $PROFILE boot-resources import || true + sleep 10 while [ "$(maas $PROFILE boot-resources is-importing)" == "true" ]; do @@ -231,6 +231,74 @@ configuremaas(){ done } +deleteexistingnetw(){ + NETID_LIST=$(maas $PROFILE subnets read | jq ".[].id") + for NETID in $NETW; do + maas $PROFILE subnet delete $NETID_LIST + done +} + +setopnfvfabrics(){ + # Based on first node we get the fabric mapping + NODE_0_MAC_LIST=$(cat labconfig.json | jq --raw-output ".lab.racks[0].nodes[0].nics[] ".mac[] | sort -u) + FAB_ID=1 + for MAC in $NODE_0_MAC_LIST; do + # Create a new fabric + FABRIC_ID=$(maas $PROFILE fabrics create name=opnfv$FAB_ID| jq --raw-output ".id") + # Get the spaces attached to a mac + IF_SPACES=$(cat labconfig.json | jq --raw-output ".lab.racks[0].nodes[$NODE_ID].nics[] | select(.mac[] | contains(\"$MAC\")) ".spaces[]) + # Create the network attached to a space + for SPACE in $IF_SPACES; do + # First check if this space have a vlan + SP_VLAN=$(cat labconfig.json | jq --raw-output ".opnfv.spaces[] | select(.type==\"$SPACE\")".vlan) + # Create it if needed + if ([ $SP_VLAN ] && [ "$SP_VLAN" != "null" ]); then + maas $PROFILE vlans create $FABRIC_ID vid=$SP_VLAN + VID="vid=$SP_VLAN" + else + SP_VLAN=$VLAN_UNTTAGED + VID="" + fi + # Create the network + case "$SPACE" in + 'admin') SUBNET_CIDR=$SUBNET_CIDR; JUJU_SPACE="admin"; DHCP='enabled' ;; + 'data') SUBNET_CIDR=$SUBNETDATA_CIDR; JUJU_SPACE="tenant-data"; DHCP='' ;; + 'public') SUBNET_CIDR=$SUBNETPUB_CIDR; JUJU_SPACE="public-api"; DHCP='' ;; + 'storage') SUBNET_CIDR=$SUBNETSTOR_CIDR; JUJU_SPACE="tenant-api"; DHCP='' ;; + 'floating') SUBNET_CIDR=$SUBNETFLOAT_CIDR; JUJU_SPACE="tenant-public"; DHCP='' ;; + *) JUJU_SPACE='null'; DHCP='OFF'; echo " >>> Unknown SPACE" ;; + esac + # If we have a network, we create it + if ([ $SUBNET_CIDR ] && [ "$SUBNET_CIDR" != "null" ]); then + maas $PROFILE subnets create fabric=$FABRIC_ID cidr=$SUBNET_CIDR $VID + # Add the Gateway + GW=$(cat labconfig.json | jq ".opnfv.spaces[] | select(.type==\"$SPACE\")".gateway | cut -d \" -f 2) + if ([ $GW ] && [ "$GW" != "null" ]); then + maas $PROFILE subnet update $SUBNET_CIDR gateway_ip=$GW || true + fi + # Set ranges + SUBNET_PREFIX=${SUBNET_CIDR::-5} + IP_RES_RANGE_LOW="$SUBNET_PREFIX.1" + IP_RES_RANGE_HIGH="$SUBNET_PREFIX.39" + IP_DYNAMIC_RANGE_LOW="$SUBNET_PREFIX.40" + IP_DYNAMIC_RANGE_HIGH="$SUBNET_PREFIX.150" + maas $PROFILE ipranges create type=reserved \ + start_ip=$IP_RES_RANGE_LOW end_ip=$IP_RES_RANGE_HIGH \ + comment='This is a reserved range' || true + maas $PROFILE ipranges create type=dynamic \ + start_ip=$IP_DYNAMIC_RANGE_LOW end_ip=$IP_DYNAMIC_RANGE_HIGH \ + comment='This is a reserved dynamic range' || true + # Set DHCP + if [ $DHCP ]; then + PRIMARY_RACK_CONTROLLER=$(maas $PROFILE rack-controllers read | jq -r '.[0].system_id') + maas $PROFILE vlan update $FABRIC_ID $SP_VLAN dhcp_on=True primary_rack=$PRIMARY_RACK_CONTROLLER || true + fi + fi + done + FAB_ID=$((FAB_ID+1)) + done +} + enablesubnetanddhcp(){ TEMP_CIDR=$1 enabledhcp=$2 @@ -270,7 +338,7 @@ enablesubnetanddhcp(){ SPACEID=$(maas $PROFILE space read internal-api | jq '.id') maas $PROFILE subnet update $TEMP_CIDR space=$SPACEID || true if [ "$enabledhcp" == "true" ]; then - maas $PROFILE vlan update $FABRIC_ID $VLAN_TAG dhcp_on=True primary_rack=$PRIMARY_RACK_CONTROLLER || true + maas $PROFILE vlan update $FABRIC_ID $VLAN_UNTTAGED dhcp_on=True primary_rack=$PRIMARY_RACK_CONTROLLER || true fi elif [ "$space" == "data" ]; then MY_GATEWAY=`cat labconfig.json | jq '.opnfv.spaces[] | select(.type=="data")'.gateway | cut -d \" -f 2 ` @@ -281,7 +349,7 @@ enablesubnetanddhcp(){ SPACEID=$(maas $PROFILE space read admin-api | jq '.id') maas $PROFILE subnet update $TEMP_CIDR space=$SPACEID || true if [ "$enabledhcp" == "true" ]; then - maas $PROFILE vlan update $FABRIC_ID $VLAN_TAG dhcp_on=True primary_rack=$PRIMARY_RACK_CONTROLLER || true + maas $PROFILE vlan update $FABRIC_ID $VLAN_UNTTAGED dhcp_on=True primary_rack=$PRIMARY_RACK_CONTROLLER || true fi elif [ "$space" == "public" ]; then MY_GATEWAY=`cat labconfig.json | jq '.opnfv.spaces[] | select(.type=="data")'.public | cut -d \" -f 2 ` @@ -292,7 +360,7 @@ enablesubnetanddhcp(){ SPACEID=$(maas $PROFILE space read public-api | jq '.id') maas $PROFILE subnet update $TEMP_CIDR space=$SPACEID || true if [ "$enabledhcp" == "true" ]; then - maas $PROFILE vlan update $FABRIC_ID $VLAN_TAG dhcp_on=True primary_rack=$PRIMARY_RACK_CONTROLLER || true + maas $PROFILE vlan update $FABRIC_ID $VLAN_UNTTAGED dhcp_on=True primary_rack=$PRIMARY_RACK_CONTROLLER || true fi elif [ "$space" == "storage" ]; then MY_GATEWAY=`cat labconfig.json | jq '.opnfv.spaces[] | select(.type=="data")'.storage | cut -d \" -f 2 ` @@ -303,7 +371,7 @@ enablesubnetanddhcp(){ SPACEID=$(maas $PROFILE space read storage-data | jq '.id') maas $PROFILE subnet update $TEMP_CIDR space=$SPACEID || true if [ "$enabledhcp" == "true" ]; then - maas $PROFILE vlan update $FABRIC_ID $VLAN_TAG dhcp_on=True primary_rack=$PRIMARY_RACK_CONTROLLER || true + maas $PROFILE vlan update $FABRIC_ID $VLAN_UNTTAGED dhcp_on=True primary_rack=$PRIMARY_RACK_CONTROLLER || true fi fi } @@ -336,7 +404,7 @@ addnodes(){ fi sudo virt-install --connect qemu:///system --name bootstrap --ram 4098 --cpu host --vcpus 2 --video \ - cirrus --arch x86_64 --disk size=20,format=qcow2,bus=virtio,io=native,pool=default \ + cirrus --arch x86_64 --disk size=20,format=qcow2,bus=virtio,cache=directsync,io=native,pool=default \ $netw --boot network,hd,menu=off --noautoconsole \ --vnc --print-xml | tee bootstrap @@ -369,7 +437,7 @@ addnodes(){ NODE_NAME=`cat labconfig.json | jq ".lab.racks[].nodes[$units].name" | cut -d \" -f 2 ` sudo virt-install --connect qemu:///system --name $NODE_NAME --ram 8192 --cpu host --vcpus 4 \ - --disk size=120,format=qcow2,bus=virtio,io=native,pool=default \ + --disk size=120,format=qcow2,bus=virtio,cache=directsync,io=native,pool=default \ $netw $netw --boot network,hd,menu=off --noautoconsole --vnc --print-xml | tee $NODE_NAME nodemac=`grep "mac address" $NODE_NAME | head -1 | cut -d '"' -f 2` @@ -559,7 +627,7 @@ if [ -e ./labconfig.json ]; then echo ">>> Configuring node $NODE_NAME [$NODE_ID][$NODE_SYS_ID]" # Recover the network interfaces list and configure each one # with sorting the list, we have hardware interface first, than the vlan interfaces - IF_LIST=$(cat labconfig.json | jq --raw-output ".lab.racks[0].nodes[$NODE_ID].nics[] ".ifname | sort -u) + IF_LIST=$(cat labconfig.json | jq --raw-output ".lab.racks[0].nodes[$NODE_ID].nics[] ".ifname ) for IF_NAME in $IF_LIST; do # get the space of the interface IF_SPACE=$(cat labconfig.json | jq --raw-output ".lab.racks[0].nodes[$NODE_ID].nics[] | select(.ifname==\"$IF_NAME\") ".spaces[]) @@ -579,7 +647,18 @@ if [ -e ./labconfig.json ]; then IF_VLAN = ${IF_NAME##*.}; fi # in case of interface renaming - IF_NEWNAME=$(cat labconfig.json | jq --raw-output ".lab.racks[0].nodes[$NODE_ID].nics[] | select(.ifname==\"$IF_NAME\") ".rename) + IF_NEWNAME=$IF_NAME + + if ([ $IF_NEWNAME ] && [ "$IF_NEWNAME" != "null" ]); then + # rename interface if needed + IF_MACLOWER=$( cat labconfig.json | jq ".lab.racks[0].nodes[$NODE_ID].nics[] | select(.ifname==\"$IF_NEWNAME\")".mac[0]) + IF_MAC=(${IF_MACLOWER,,}) + IF_ID=$( maas ubuntu interfaces read $NODE_SYS_ID | jq ".[] | select(.mac_address==$IF_MAC)".id) + if ([ $IF_ID ] && [ "$IF_ID" != "null" ]); then + maas $PROFILE interface update $NODE_SYS_ID $IF_ID name=$IF_NEWNAME + IF_NAME=$IF_NEWNAME + fi + fi # In case of a VLAN interface if ([ $IF_VLAN ] && [ "$IF_VLAN" != "null" ]); then @@ -603,10 +682,6 @@ if [ -e ./labconfig.json ]; then INTERFACE=$(maas $PROFILE interfaces read $NODE_SYS_ID | jq ".[] | select(.vlan.fabric_id==$FABRICID)".id) fi maas $PROFILE interfaces create-vlan $NODE_SYS_ID vlan=$VLANID parent=$INTERFACE || true - elif ([ $IF_NEWNAME ] && [ "$IF_NEWNAME" != "null" ]); then - # rename interface if needed - maas $PROFILE interface update $NODE_SYS_ID $IF_NAME name=$IF_NEWNAME - IF_NAME=$IF_NEWNAME fi # Configure the interface if ([ $SUBNET_CIDR ] && [ "$SUBNET_CIDR" != "null" ]); then