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
-#first parameter should be custom and second should be either
-# absolute location of file (including file name) or url of the
-# file to download.
+
+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
#
#
# Get labconfig and generate deployconfig.yaml
-echo_info "Parsing lab configuration file"
+
case "$labname" in
- intelpod[569]|orangepod[12]|cengnpod[12] )
- array=(${labname//pod/ })
- cp ../labconfig/${array[0]}/pod${array[1]}/labconfig.yaml .
- python genDeploymentConfig.py -l labconfig.yaml > deployconfig.yaml
- ;;
- 'attvirpod1' )
- cp ../labconfig/att/virpod1/labconfig.yaml .
- python genDeploymentConfig.py -l labconfig.yaml > deployconfig.yaml
- ;;
'custom')
+ # Deployment with a custom labconfig file
labfile=$2
- if [ -e $labfile ]; then
- cp $labfile ./labconfig.yaml || true
- else
- wget $labconfigfile -t 3 -T 10 -O ./labconfig.yaml || true
+ if [ -z "$labfile" ]; then
+ if [ ! -e ./labconfig.yaml ]; then
+ # no labconfig file was specified and no ci/labconfig.yaml is present
+ echo_error "Labconfig file must be specified when using custom"
+ usage 1
+ else
+ # no labconfig file was specified and but a (backup) ci/labconfig.yaml found
+ echo_warning "Labconfig was not specified, using ./labconfig.yaml instead"
+ # no action needed, ./labconfig.yaml already present
+ fi
+ elif [ ! -e "$labfile" ]; then
+ # labconfig file was specified but does not exist on disk
+ echo_warning "Labconfig not found locally, trying download"
+
+ wget $labfile -t 3 -T 10 -O ./labconfig.yaml || true
count=`wc -l labconfig.yaml | cut -d " " -f 1`
if [ $count -lt 10 ]; then
- rm -rf labconfig.yaml
+ echo_error "Unable to download labconfig"
+ exit 1
fi
- fi
- if [ ! -e ./labconfig.yaml ]; then
- virtinstall=1
- labname="default"
- cp ../labconfig/default/labconfig.yaml ./
- cp ../labconfig/default/deployconfig.yaml ./
else
- python genDeploymentConfig.py -l labconfig.yaml > deployconfig.yaml
- labname=`grep "maas_name" deployconfig.yaml | cut -d ':' -f 2 | sed -e 's/ //'`
+ echo_info "Using $labfile to setup deployment"
+ cp $labfile ./labconfig.yaml
fi
+
+ python genDeploymentConfig.py -l labconfig.yaml > deployconfig.yaml
+ labname=`grep "maas_name" deployconfig.yaml | cut -d ':' -f 2 | sed -e 's/ //'`
;;
- * )
- virtinstall=1
- labname="default"
+ 'virtual'|'')
+ # Virtual deployment using a default labconfig file
+ echo_info "Using default labconfig for virtual install"
cp ../labconfig/default/labconfig.yaml ./
python genDeploymentConfig.py -l labconfig.yaml > deployconfig.yaml
+ labname="default"
+ virtinstall=1
+ ;;
+ * )
+ # Unknown argument
+ echo_error "Unknown script argument: $labname"
+ usage 1
;;
esac
if [ "$virtinstall" -eq 1 ]; then
netw=" --network bridge=virbr0,model=virtio"
- elif ([ $VIRSHHOST != "" ]); then
+ elif ([ "$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"
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
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