#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
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
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
#
#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
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
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)
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
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')
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
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
done
fi
virsh -c $VIRSHURL define --file bootstrap
+ virsh -c $VIRSHURL autostart bootstrap
+
rm -f bootstrap
sleep 60
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 \
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 `
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
'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
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)