From 22a84bad2e15472fe3ea181aca35e7c48afb054f Mon Sep 17 00:00:00 2001 From: narindergupta Date: Thu, 17 Aug 2017 10:38:42 -0500 Subject: [PATCH] adding th elong option as command line. Change-Id: Ibe20b737a0ea9a6afc27ae490d8ff1ce6f61a5c0 Signed-off-by: Narinder Gupta --- ci/03-maasdeploy.sh | 1 + ci/cleanvm.sh | 4 - ci/deploy.sh | 249 +++++++++++++++++++++++++++++++++------------------- 3 files changed, 162 insertions(+), 92 deletions(-) diff --git a/ci/03-maasdeploy.sh b/ci/03-maasdeploy.sh index d74214bf..e741cd87 100755 --- a/ci/03-maasdeploy.sh +++ b/ci/03-maasdeploy.sh @@ -384,6 +384,7 @@ addnodes(){ do maas $PROFILE machine delete $m done + maas $PROFILE pod delete 1 || true # if we have a virshurl configuration we use it, else we use local VIRSHURL=$(cat labconfig.json | jq -r '.opnfv.virshurl') diff --git a/ci/cleanvm.sh b/ci/cleanvm.sh index a2609bd8..8d6fe88d 100755 --- a/ci/cleanvm.sh +++ b/ci/cleanvm.sh @@ -6,10 +6,6 @@ source tools.sh echo_info "Cleanup Started..." -#use the below commands if you needs to delete the virtual machine -# also along with environment destroy. -./clean.sh - vm_list=$(sudo virsh list --all) for vm in node1-control node2-compute node3-control node4-control \ diff --git a/ci/deploy.sh b/ci/deploy.sh index b013b33c..3985896e 100755 --- a/ci/deploy.sh +++ b/ci/deploy.sh @@ -11,73 +11,121 @@ opnfvsdn=nosdn opnfvtype=noha openstack=ocata opnfvlab=default +opnfvlabfile= opnfvrel=e opnfvfeature=none opnfvdistro=xenial opnfvarch=amd64 opnfvmodel=openstack virtinstall=0 +maasinstall=0 jujuver=`juju --version` -read_config() { - opnfvrel=`grep release: deploy.yaml | cut -d ":" -f2` - openstack=`grep openstack: deploy.yaml | cut -d ":" -f2` - opnfvtype=`grep type: deploy.yaml | cut -d ":" -f2` - opnfvlab=`grep lab: deploy.yaml | cut -d ":" -f2` - opnfvsdn=`grep sdn: deploy.yaml | cut -d ":" -f2` +usage() { echo "Usage: $0 + [-s|--sdn ] + [-t|--type ] + [-o|--openstack ] + [-l|--lab ] + [-f|--feature ] + [-d|--distro ] + [-a|--arch ] + [-m|--model ] + [-i|--virtinstall <0|1>] + [--maasinstall <0|1>] + [--labfile ] + [-r|--release ]" 1>&2 exit 1; } -usage() { echo "Usage: $0 [-s ] - [-t ] - [-o ] - [-l ] - [-f ] - [-d ] - [-a ] - [-m ] - [-i <0|1>] - [-r ]" 1>&2 exit 1; } - -while getopts ":s:t:o:l:h:r:f:d:a:m:i:" opt; do - case "${opt}" in - s) - opnfvsdn=${OPTARG} - ;; - t) - opnfvtype=${OPTARG} - ;; - o) - openstack=${OPTARG} - ;; - l) - opnfvlab=${OPTARG} - ;; - r) - opnfvrel=${OPTARG} - ;; - f) - opnfvfeature=${OPTARG} - ;; - d) - opnfvdistro=${OPTARG} - ;; - a) - opnfvarch=${OPTARG} - ;; - m) - opnfvmodel=${OPTARG} - ;; - i) - virtinstall=${OPTARG} - ;; - h) - usage - ;; - *) - ;; - esac -done +#A string with command options +options=$@ + +# An array with all the arguments +arguments=($options) + +# Loop index +index=0 + +for argument in $options + do + # Incrementing index + index=`expr $index + 1` + + # The conditions + case $argument in + -h|--help ) + usage; + ;; + -s|--sdn ) + if ([ "arguments[index]" != "" ]); then + opnfvsdn=${arguments[index]} + fi; + ;; + -t|--type ) + if ([ "arguments[index]" != "" ]); then + opnfvtype=${arguments[index]} + fi; + ;; + -o|--openstack ) + if ([ "arguments[index]" != "" ]); then + openstack=${arguments[index]} + fi; + ;; + + -l|--lab ) + if ([ "arguments[index]" != "" ]); then + opnfvlab=${arguments[index]} + fi; + ;; + + -r|--release ) + if ([ "arguments[index]" != "" ]); then + opnfvrel=${arguments[index]} + fi; + ;; + + -f|--feature ) + if ([ "arguments[index]" != "" ]); then + opnfvfeature=${arguments[index]} + fi; + ;; + + -d|--distro ) + if ([ "arguments[index]" != "" ]); then + opnfdistro=${arguments[index]} + fi; + ;; + + -a|--arch ) + if ([ "arguments[index]" != "" ]); then + opnfvarch=${arguments[index]} + fi; + ;; + + -m|--model ) + if ([ "arguments[index]" != "" ]); then + opnfvmodel=${arguments[index]} + fi; + ;; + + -i|--virtinstall ) + if ([ "arguments[index]" != "" ]); then + virtinstall=${arguments[index]} + fi; + ;; + --maasinstall ) + if ([ "arguments[index]" != "" ]); then + maasinstall=${arguments[index]} + fi; + ;; + --labfile ) + if ([ "arguments[index]" != "" ]); then + labfile=${arguments[index]} + fi; + ;; + esac + done + #by default maas creates two VMs in case of three more VM needed. createresource() { @@ -123,46 +171,73 @@ createresource() { #copy the files and create extra resources needed for HA deployment # in case of default VM labs. deploy() { - if [[ "$jujuver" > "2" ]]; then - if [ ! -f ./labconfig.yaml ] && [ -e ~/joid_config/labconfig.yaml ]; then - cp ~/joid_config/labconfig.yaml ./labconfig.yaml + if [ ! -f ./labconfig.yaml ] && [ -e ~/joid_config/labconfig.yaml ]; then + cp ~/joid_config/labconfig.yaml ./labconfig.yaml + if [ ! -f ./deployconfig.yaml ] && [ -e ~/joid_config/deployconfig.yaml ]; then + cp ~/joid_config/deployconfig.yaml ./deployconfig.yaml + else + python genDeploymentConfig.py -l labconfig.yaml > deployconfig.yaml + fi + else + if [ -e ./labconfig.yaml ]; then if [ ! -f ./deployconfig.yaml ] && [ -e ~/joid_config/deployconfig.yaml ]; then cp ~/joid_config/deployconfig.yaml ./deployconfig.yaml else python genDeploymentConfig.py -l labconfig.yaml > deployconfig.yaml fi else - if [ -e ./labconfig.yaml ]; then - if [ ! -f ./deployconfig.yaml ] && [ -e ~/joid_config/deployconfig.yaml ]; then - cp ~/joid_config/deployconfig.yaml ./deployconfig.yaml + echo_error "MAAS not deployed please deploy MAAS first." + fi + fi + + #create json file which is missing in case of new deployment after maas and git tree cloned freshly. + python -c 'import sys, yaml, json; json.dump(yaml.load(sys.stdin), sys.stdout, indent=4)' < labconfig.yaml > labconfig.json + python -c 'import sys, yaml, json; json.dump(yaml.load(sys.stdin), sys.stdout, indent=4)' < deployconfig.yaml > deployconfig.json + + # Install MAAS and expecting the labconfig.yaml at local directory. + + if [ "$maasinstall" -eq 1 ]; then + ./clean.sh || true + PROFILE=${PROFILE:-ubuntu} + MAAS_IP=$(grep " ip_address" deployconfig.yaml | cut -d ':' -f 2 | sed -e 's/ //') + API_SERVER="http://$MAAS_IP:5240/MAAS/api/2.0" + API_KEY=`sudo maas-region apikey --username=ubuntu` + maas login $PROFILE $API_SERVER $API_KEY + + # make sure there is no machine entry in maas + for m in $(maas $PROFILE machines read | jq -r '.[].system_id') + do + maas $PROFILE machine delete $m || true + done + maas $PROFILE pod delete 1 || true + + ./cleanvm.sh || true + + if [ "$virtinstall" -eq 1 ]; then + ./00-maasdeploy.sh virtual + else + if [ -z "$labfile" ]; then + if [ ! -e ./labconfig.yaml ]; then + echo_error "Labconfig file must be specified when using custom" else - python genDeploymentConfig.py -l labconfig.yaml > deployconfig.yaml + echo_warning "Labconfig was not specified, using ./labconfig.yaml instead" + fi + elif [ ! -e "$labfile" ]; then + 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 + echo_error "Unable to download labconfig" + exit 1 fi else - echo_error "MAAS not deployed please deploy MAAS first." + echo_info "Using $labfile to setup deployment" + cp $labfile ./labconfig.yaml fi - fi - - #create json file which is missing in case of new deployment after maas and git tree cloned freshly. - python -c 'import sys, yaml, json; json.dump(yaml.load(sys.stdin), sys.stdout, indent=4)' < labconfig.yaml > labconfig.json - python -c 'import sys, yaml, json; json.dump(yaml.load(sys.stdin), sys.stdout, indent=4)' < deployconfig.yaml > deployconfig.json - else - if [ ! -f ./environments.yaml ] && [ -e ~/.juju/environments.yaml ]; then - cp ~/.juju/environments.yaml ./environments.yaml - elif [ ! -f ./environments.yaml ] && [ -e ~/joid_config/environments.yaml ]; then - cp ~/joid_config/environments.yaml ./environments.yaml + ./00-maasdeploy.sh custom fi - #copy the script which needs to get deployed as part of ofnfv release - echo_info "Deploying now..." - echo " " >> environments.yaml - echo " enable-os-refresh-update: false" >> environments.yaml - echo " enable-os-upgrade: false" >> environments.yaml - echo " admin-secret: admin" >> environments.yaml - echo " default-series: $opnfvdistro" >> environments.yaml - cp environments.yaml ~/.juju/ - cp environments.yaml ~/joid_config/ fi if [[ "$opnfvtype" = "ha" && "$opnfvlab" = "default" ]]; then @@ -172,11 +247,9 @@ deploy() { #bootstrap the node ./01-bootstrap.sh - if [[ "$jujuver" > "2" ]]; then - juju model-config default-series=$opnfvdistro enable-os-refresh-update=false enable-os-upgrade=false - fi + juju model-config default-series=$opnfvdistro enable-os-refresh-update=false enable-os-upgrade=false - #case default deploy the opnfv platform: + # case default deploy the opnfv platform: ./02-deploybundle.sh $opnfvtype $openstack $opnfvlab $opnfvsdn $opnfvfeature $opnfvdistro $opnfvmodel } @@ -211,6 +284,7 @@ check_status() { echo_info "Deployment finishing..." } + # In the case of a virtual deployment if [ "$virtinstall" -eq 1 ]; then ./clean.sh || true @@ -223,7 +297,6 @@ check_status executing echo_info "Deployment finished" - echo_info "Configuring public access" # translate bundle.yaml to json -- 2.16.6