Tuesday 26 February 2013

Exalogic Virtual Tea Break Snippets - Wrapping the Exalogic iaas cli

Having worked with the Exalogic Command Line for a while I decided to wrap some of the common functions in a simplified bash script. This saves me creating the keys, connecting and identifying the appropriate Ids. Instead I can simply specify the Name and the script will do the rest of the work. This initial version has just a few commands in it but as I add more the blog entry will expand, as will the script, and document the new functionality.


Commands

All the Command below will work against the whole vDC unless they are restricted to an Account by using the -a option or a vServer by using the -v option. For all actions the script requires a User and password to be passed.

--list-vservers

This command will work through all the Accounts on a given vDC and display the vServers that are available within that Account. Issuing the command in it's simplest form, below, will display the following:

[root@ec1-vm ~]# ./SimplifiedCli.sh -u root -p password --list-vservers
JAVA_HOME is not defined using /usr/java/latest
GlobalResources|LB-2
GlobalResources|nis-vserver-s
GlobalResources|JOI28GB
GlobalResources|nis-vserver-m
GlobalResources|dns
GlobalResources|LB-1

Andrew|VS002
Andrew|VS003

UliAccount|test-vm
UliAccount|sc-tvm
UliAccount|uliAdmin
UliAccount|otd-tvm
UliAccount|nis-tvm
UliAccount|wcdb-vm
UliAccount|lvm-tvm
UliAccount|sc-vm1
UliAccount|wc-vm1
UliAccount|sc-vm3
UliAccount|sc-vm2
UliAccount|wc-vm2

FAPoc|FA-DB
FAPoc|FA-01
FAPoc|OTD01
FAPoc|FA-02
FAPoc|FA-IDM
FAPoc|FA-03
Users can also specify that a Verbose format be used (--verbose) which will print the full set of information available for the given vServers as below.

[root@ec1-vm ~]# ./SimplifiedCli.sh -u root -p password --list-vservers --verbose -a Andrew
JAVA_HOME is not defined using /usr/java/latest
Andrew|VS002|VSRV-616bdf32-2a92-44e4-a9ea-862d0b97c0bb|VS002|Created By CreateAsset.sh|RUNNING|VNET-52a60524-d7e6-4e3f-8204-8cf8bb798ddb,VNET-1b2402d7-9010-45db-a887-4b955377584d|10.242.96.72,172.17.0.40|TMPL-a06a1406-cf5a-479d-a3ea-7c8657bb4013|ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrGYXTkLFoahLbmc4AfCCGqjfwERUubU+TyBk5jyMq46L0eqILhQuRKBRwGp1YbvlEbeFFgQkoR11wJCw7L5wZCNXE99dY1Iya7cst68TgajMlRAunlyD7owGC2ICvTsR3aqzdOtZ6xdXPB6OEYkTI+HLBAKAdZsPdQdb6oI3eKiNzX0FcJHFT68WNuOiaD0aALV1Ct81tkAkDpLNRlag9Pt|2006|true
Andrew|VS003|VSRV-5ab971c4-1bad-4cee-8575-7e80a68ef0b3|VS003|Created By CreateAsset.sh|RUNNING|VNET-1b2402d7-9010-45db-a887-4b955377584d,VNET-52a60524-d7e6-4e3f-8204-8cf8bb798ddb|172.17.0.36,10.242.96.75|TMPL-a06a1406-cf5a-479d-a3ea-7c8657bb4013|ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrGYXTkLFoahLbmc4AfCCGqjfwERUubU+TyBk5jyMq46L0eqILhQuRKBRwGp1YbvlEbeFFgQkoR11wJCw7L5wZCNXE99dY1Iya7cst68TgajMlRAunlyD7owGC2ICvTsR3aqzdOtZ6xdXPB6OEYkTI+HLBAKAdZsPdQdb6oI3eKiNzX0FcJHFT68WNuOiaD0aALV1Ct81tkAkDpLNRlag9Pt|2006|true

--status-vservers

Issuing the status command will cause the script to loop through the vServers within the vDC Accounts and simply display the current status of the vServer.

[root@ec1-vm ~]# ./SimplifiedCli.sh -u root -p password --status-vservers
JAVA_HOME is not defined using /usr/java/latest
GlobalResources|LB-2|RUNNING
GlobalResources|nis-vserver-s|RUNNING
GlobalResources|JOI28GB|SHUTDOWN
GlobalResources|nis-vserver-m|RUNNING
GlobalResources|dns|RUNNING
GlobalResources|LB-1|RUNNING

Andrew|VS002|RUNNING
Andrew|VS003|RUNNING

UliAccount|test-vm|RUNNING
UliAccount|sc-tvm|SHUTDOWNDETACHED
UliAccount|uliAdmin|RUNNING
UliAccount|otd-tvm|RUNNING
UliAccount|nis-tvm|RUNNING
UliAccount|wcdb-vm|RUNNING
UliAccount|lvm-tvm|RUNNING
UliAccount|sc-vm1|RUNNING
UliAccount|wc-vm1|RUNNING
UliAccount|sc-vm3|RUNNING
UliAccount|sc-vm2|RUNNING
UliAccount|wc-vm2|RUNNING

FAPoc|FA-DB|RUNNING
FAPoc|FA-01|SHUTDOWNDETACHED
FAPoc|OTD01|SHUTDOWNDETACHED
FAPoc|FA-02|SHUTDOWNDETACHED
FAPoc|FA-IDM|RUNNING
FAPoc|FA-03|SHUTDOWNDETACHED

--stop-vservers

The stop-vservers will use the cli to force a shutdown of the vservers. By default this will loop through all vServers in the vDC an stop them on an Account by Account basis.

--start-vservers

The start-vservers will use the cli to force a shutdown of the vservers. By default this will loop through all vServers in the vDC an start them on an Account by Account basis.

--list-distgroups

This command will work through all the Accounts on a given vDC and display the Distribution Groups that are available within that Account. Issuing the command in it's simplest form, below, will display the following:
[root@ec1-vm ~]# ./SimplifiedCli.sh -u root -p password -url https://localhost --list-distgroups
JAVA_HOME is not defined using /usr/java/latest
GlobalResources|NIS-GROUP|

Andrew|test|

UliAccount|uliCA1|

--list-vnets

This command will work through all the Accounts on a given vDC and display the Networks that are available within that Account. Issuing the command in it's simplest form, below, will display the following:
[root@ec1-vm ~]# ./SimplifiedCli.sh -u root -p password -url https://localhost --list-vnets
JAVA_HOME is not defined using /usr/java/latest
GlobalResources|EoIB1-client-access|10.242.96.0/21
GlobalResources|IPoIB-default|192.168.48.0/21
GlobalResources|IPoIB-vserver-shared-storage|172.17.0.0/16

Andrew|IPoIB-default|192.168.48.0/21
Andrew|EoIB1-client-access|10.242.96.0/21
Andrew|VN002|192.168.2.0/24
Andrew|VN003|192.168.4.0/24
Andrew|IPoIB-vserver-shared-storage|172.17.0.0/16
Andrew|VN004|192.168.5.0/24
Andrew|EoIB-external-mgmt|10.242.80.0/21
Andrew|VN001|192.168.3.0/24

UliAccount|EoIB1-client-access|10.242.96.0/21
UliAccount|wc-privat|192.168.0.32/28
UliAccount|EoIB-external-mgmt|10.242.80.0/21
UliAccount|IPoIB-vserver-shared-storage|172.17.0.0/16
UliAccount|IPoIB-default|192.168.48.0/21

FAPoc|IPoIB-priv-fa|192.168.0.0/28
FAPoc|IPoIB-vserver-shared-storage|172.17.0.0/16
FAPoc|EoIB1-client-access|10.242.96.0/21

--list-volumes

This command will work through all the Accounts on a given vDC and display the Volumes that are available within that Account. Issuing the command in it's simplest form, below, will display the following:
[root@ec1-vm ~]# ./SimplifiedCli.sh -u root -p password -url https://localhost --list-volumes
JAVA_HOME is not defined using /usr/java/latest

Andrew|VOL666|6.0

UliAccount|resizedVolume|4.0
UliAccount|SPMSVol1|16.0
UliAccount|db-u01|20.0
UliAccount|lvmVol1|16.0
UliAccount|adminVolume|32.0

--list-templates

This command will work through all the Accounts on a given vDC and display the Templates that are available within that Account. Issuing the command in it's simplest form, below, will display the following:
[root@ec1-vm ~]# ./SimplifiedCli.sh -u root -p password -url https://localhost --list-templates
JAVA_HOME is not defined using /usr/java/latest
GlobalResources|NavstarDefaultTemplate
GlobalResources|NavstarDefaultTemplate

Andrew|NavstarDefaultTemplate
Andrew|Navstar40GBTemplate

UliAccount|NavstarDefaultTemplate
UliAccount|LVM-CBT-v1_1
UliAccount|NavstarSingleImageLVMTemplate
UliAccount|scTestTemplate2
UliAccount|WebCenter_Template
UliAccount|scTestTemplate
UliAccount|scTestTemplate3

FAPoc|NavstarDefaultTemplate
FAPoc|FA-Testing-Template

Script

Usage

usage: ./SimplifiedCli.sh [-a <Account Name>] [-v <vServer Name>] -u <Account User> -p <Account Password> [--verbose] <Command>
 -a <Account Name> Name of the Account that contains the Specified vServer.
 -u <Account User> User that is allowed to access the specified account the default is root
 -p <Account Password> password of the specified user
 -v <vServer Name> vServer to be templatised or cloned.
 -h This message.

Commands

 --list-vservers
 List all the vServers in the specified Account. If no Account is specified then it
 will loop through all Accounts within the vDC listing the vServers. To successfully
 achieve this the mandatory Username and Password must have access to all the accounts.
 If --verbose is also specified the all available vServer information will be listed.

 --status-vservers
 List the status all the vServers in the specified Account. If no Account is specified then it
 will loop through all Accounts within the vDC listing the vServers. To successfully
 achieve this the mandatory Username and Password must have access to all the accounts.

 --start-vservers
 Start all or the named -v vServer(s) in the specified Account. If no Account is specified
 then it will loop through all Accounts within the vDC starting the vServers.

 --stop-vservers
 Stop all or the named -v vServer(s) in the specified Account. If no Account is specified
 then it will loop through all Accounts within the vDC stoping the vServers.

Download


#!/bin/bash

################################################################################
#
#  Exalogic EL X2-2 2.0.0.4 (Linux x86-64) Configuration Script.
#
#  HEADER START
# 
#  THIS SCRIPT IS PROVIDED ON AN �AS IS� BASIS, WITHOUT WARRANTY OF ANY KIND, 
#  EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT 
#  THE COVERED SCRIPT IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR 
#  PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE 
#  OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE 
#  DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER 
#  CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION.
#  NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS 
#  DISCLAIMER.
#
#  When distributing this Code, include this HEADER in each file.
#  If applicable, add the following below this this HEADER, with the fields
#  enclosed by brackets "[]" replaced with your own identifying information:
#       Portions Copyright [yyyy] [name of copyright owner]
# 
#  HEADER END
# 
# 
#       Copyright 2011 Andrew Hopkinson, Oracle Corporation UK Ltd.
#
################################################################################

export OCCLI=/opt/sun/occli/bin
export IAAS_HOME=/opt/oracle/iaas/cli
export IAAS_BASE_URL=https://localhost
export BASE_IAAS_ACCESS_KEY_FILE=iaas_access.key
export BASE_KEY_NAME=cli.asset.create
export BASE_KEY_FILE=iaas_access.pub
export RUN_DATE=`date +"%Y%m%d-%H%M"`
#CloudUser used to create vServers & Volumes
export IAAS_USER=root
export IAAS_PASSWORD_FILE=root.pwd
export INPUT_FILE=CreateAssets.in

export ACCOUNTS_FILE=accounts.out
export VOLUMES_FILE=volumes.out
export DISTGRPS_FILE=distgrp.out
export VNETS_FILE=vnets.out
export VSERVER_TYPES_FILE=vstype.out
export VSERVER_FILE=vserver.out
export VSERVER_TEMPLATES=template.out
export NETWORK_STATIC_IPS=staticips.out
export KEY_PAIRS=keypairs.out



function getAccounts() {
 accountsArray=( $($IAAS_HOME/bin/akm-describe-accounts --sep "|" | sed 's/ /_/g') )
}

function getVServers() {
 vserversArray=( $($IAAS_HOME/bin/iaas-describe-vservers --sep "|" | sed 's/ /_/g') )
}

function getNetworks() {
 vnetsArray=( $($IAAS_HOME/bin/iaas-describe-vnets --sep "|" | sed 's/ /_/g') )
}

function getDistributionGroups() {
 distGrpsArray=( $($IAAS_HOME/bin/iaas-describe-distribution-groups --sep "|" | sed 's/ /_/g') )
}

function getTemplates() {
 templatesArray=( $($IAAS_HOME/bin/iaas-describe-server-templates --sep "|" | sed 's/ /_/g') )
}

function getVolumes() {
 volumesArray=( $($IAAS_HOME/bin/iaas-describe-volumes --sep "|" | sed 's/ /_/g') )
}



function connectToAccount() {
 # Set run specific key information
 export IAAS_ACCESS_KEY_FILE=$ACCOUNT_NAME"."$RUN_DATE"."$BASE_IAAS_ACCESS_KEY_FILE
 export KEY_NAME=$ACCOUNT_NAME"."$RUN_DATE"."$BASE_KEY_NAME
 export KEY_FILE=$ACCOUNT_NAME"."$RUN_DATE"."$BASE_KEY_FILE
 #echo "IAAS_ACCESS_KEY_FILE=$IAAS_ACCESS_KEY_FILE"
 #echo "KEY_NAME=$KEY_NAME"
 #echo "KEY_FILE=$KEY_FILE"
 #echo "Found Account $line"
 AK=`$IAAS_HOME/bin/akm-create-access-key --account $ACCOUNT_ID --access-key-file $IAAS_ACCESS_KEY_FILE`
 KEYPAIR=`$IAAS_HOME/bin/iaas-create-key-pair --key-name $KEY_NAME --key-file $KEY_FILE`
 #echo "Connected to $ACCOUNT_NAME"
}

function disconnectFromAccount() {
  $IAAS_HOME/bin/iaas-delete-key-pair --key-name $KEY_NAME --access-key-file $IAAS_ACCESS_KEY_FILE
  $IAAS_HOME/bin/akm-delete-access-key $AK
  rm -f $KEY_FILE $IAAS_ACCESS_KEY_FILE
}

#############################################################
##
## stopVServers
## ============
##
## Stop one or more vServers running within the currently
## connected Account. If a specific vServer Name is passed in
## $VSERVER as specified on the command line using -v then 
## this will be the one stopped. If no VSERVER is specified
## then all vServers in the Account will be stopped.
##
#############################################################

function stopVServers() {
 getVServers
 VSERVER_IDS=""
 VSERVER_NAMES=""
 for vserver in "${vserversArray[@]}"
 do
  VSERVER_ID=${vserver%%|*}
  vserver=${vserver#*|}
  VSERVER_NAME=${vserver%%|*}
  if [[ "$VSERVER" == "" || "$VSERVER" == "$VSERVER_NAME" ]]
  then
   if [[ "$VSERVER_IDS" == "" ]]
   then
    VSERVER_IDS=$VSERVER_ID
    VSERVER_NAMES=$VSERVER_NAME
   else
    VSERVER_IDS=$VSERVER_IDS","$VSERVER_ID
    VSERVER_NAMES=$VSERVER_NAMES","$VSERVER_NAME
   fi
  fi
 done
 if [[ "$VSERVER_IDS" != "" ]]
 then
  echo "Stopping vServer(s) [$VSERVER_NAMES]"
  $IAAS_HOME/bin/iaas-stop-vservers --vserver-ids $VSERVER_IDS --force
 else
  echo "No vServers to stop"
 fi
}

#############################################################
##
## startVServers
## =============
##
## Start one or more vServers stopped within the currently
## connected Account. If a specific vServer Name is passed in
## $VSERVER as specified on the command line using -v then 
## this will be the one started. If no VSERVER is specified
## then all vServers in the Account will be started.
##
#############################################################

function startVServers() {
 getVServers
 VSERVER_IDS=""
 VSERVER_NAMES=""
 for vserver in "${vserversArray[@]}"
 do
  VSERVER_ID=${vserver%%|*}
  vserver=${vserver#*|}
  VSERVER_NAME=${vserver%%|*}
  if [[ "$VSERVER" == "" || "$VSERVER" == "$VSERVER_NAME" ]]
  then
   if [[ "$VSERVER_IDS" == "" ]]
   then
    VSERVER_IDS=$VSERVER_ID
    VSERVER_NAMES=$VSERVER_NAME
   else
    VSERVER_IDS=$VSERVER_IDS","$VSERVER_ID
    VSERVER_NAMES=$VSERVER_NAMES","$VSERVER_NAME
   fi
  fi
 done
 if [[ "$VSERVER_IDS" != "" ]]
 then
  echo "Starting vServer(s) [$VSERVER_NAMES]"
  $IAAS_HOME/bin/iaas-start-vservers --vserver-ids $VSERVER_IDS
 else
  echo "No vServers to start"
 fi
}

#############################################################
##
## listVServers
## ============
##
## List the vServers running on the specified Account is 
## the verbose flag is set then all vServer details will be 
## displayed otherwise simple the Acc and Name.
##
#############################################################

function listVServers() {
 getVServers
 for vserver in "${vserversArray[@]}"
 do
  VSERVER_ID=${vserver%%|*}
  vserver=${vserver#*|}
  VSERVER_NAME=${vserver%%|*}
  if [[ "$VSERVER" == "" || "$VSERVER" == "$VSERVER_NAME" ]]
  then
   if [[ "$VERBOSE" == "true" ]]
   then
    echo "$ACCOUNT_NAME|$VSERVER_NAME|$VSERVER_ID|"$(echo $vserver | sed 's/_/ /g')
   else
    echo "$ACCOUNT_NAME|$VSERVER_NAME"
   fi
  fi
 done
}

#############################################################
##
## listVServerStatus
## =================
##
## List the Status of the vServers within an Account.
##
#############################################################

function listVServerStatus() {
 getVServers
 for vserver in "${vserversArray[@]}"
 do
  VSERVER_ID=${vserver%%|*}
  vserver=${vserver#*|}
  VSERVER_NAME=${vserver%%|*}
  vserver=${vserver#*|}
  VSERVER_DESC=${vserver%%|*}
  vserver=${vserver#*|}
  VSERVER_STATUS=${vserver%%|*}
  if [[ "$VSERVER" == "" || "$VSERVER" == "$VSERVER_NAME" ]]
  then
   echo "$ACCOUNT_NAME|$VSERVER_NAME|$VSERVER_STATUS"
  fi
 done
}

#############################################################
##
## listVNets
## =========
##
## List the Networks within an Account.
##
#############################################################

function listVNets() {
 getNetworks
 for vnet in "${vnetsArray[@]}"
 do
  VNET_ID=${vnet%%|*}
  vnet=${vnet#*|}
  VNET_NAME=${vnet%%|*}
  vnet=${vnet#*|}
  if [[ "$VERBOSE" == "true" ]]
  then
   echo "$ACCOUNT_NAME|$VNET_NAME|$VNET_ID|"$(echo $vnet | sed 's/_/ /g')
  else
   VNET_DESC=${vnet%%|*}
   vnet=${vnet#*|}
   VNET_STATUS=${vnet%%|*}
   vnet=${vnet#*|}
   VNET_IP=${vnet%%|*}
   echo "$ACCOUNT_NAME|$VNET_NAME|$VNET_IP"
  fi
 done
}

#############################################################
##
## listDistributionGroups
## ======================
##
## List the Distribution Groups within an Account.
##
#############################################################

function listDistributionGroups() {
 getDistributionGroups
 for distGrp in "${distGrpsArray[@]}"
 do
  DG_ID=${distGrp%%|*}
  distGrp=${distGrp#*|}
  DG_NAME=${distGrp%%|*}
  distGrp=${distGrp#*|}
  if [[ "$VERBOSE" == "true" ]]
  then
   echo "$ACCOUNT_NAME|$DG_NAME|$DG_ID|"$(echo $distGrp | sed 's/_/ /g')
  else
   DG_DESC=${distGrp%%|*}
   distGrp=${distGrp#*|}
   DG_STATUS=${distGrp%%|*}
   echo "$ACCOUNT_NAME|$DG_NAME|$VNET_IP"
  fi
 done
}

#############################################################
##
## listTemplates
## =============
##
## List the Templates within an Account.
##
#############################################################

function listTemplates() {
 getTemplates
 for template in "${templatesArray[@]}"
 do
  TEMPLATE_ID=${template%%|*}
  template=${template#*|}
  TEMPLATE_NAME=${template%%|*}
  template=${template#*|}
  if [[ "$VERBOSE" == "true" ]]
  then
   echo "$ACCOUNT_NAME|$TEMPLATE_NAME|$TEMPLATE_ID|"$(echo $template | sed 's/_/ /g')
  else
   TEMPLATE_DESC=${template%%|*}
   template=${template#*|}
   TEMPLATE_STATUS=${template%%|*}
   echo "$ACCOUNT_NAME|$TEMPLATE_NAME"
  fi
 done
}

#############################################################
##
## listVolumes
## ===========
##
## List the Volumes within an Account.
##
#############################################################

function listVolumes() {
 getVolumes
 for volume in "${volumesArray[@]}"
 do
  VOLUME_ID=${volume%%|*}
  volume=${volume#*|}
  VOLUME_NAME=${volume%%|*}
  volume=${volume#*|}
  if [[ "$VERBOSE" == "true" ]]
  then
   echo "$ACCOUNT_NAME|$VOLUME_NAME|$VOLUME_ID|"$(echo $volume | sed 's/_/ /g')
  else
   VOLUME_DESC=${volume%%|*}
   volume=${volume#*|}
   VOLUME_STATUS=${volume%%|*}
   volume=${volume#*|}
   VOLUME_SIZE=${volume%%|*}
   echo "$ACCOUNT_NAME|$VOLUME_NAME|$VOLUME_SIZE"
  fi
 done
}



#############################################################
##
## usage
## =====
##
## Show usage.
##
#############################################################

function usage() {
 echo ""
 echo >&2 "usage: $0 [-a <Account Name>] [-v <vServer Name>] -u <Account User> -p <Account Password> [--verbose] <Command>"
 echo >&2 "          -a <Account Name> Name of the Account that contains the Specified vServer."
 echo >&2 "          -u <Account User> User that is allowed to access the specified account the default is root"
 echo >&2 "          -p <Account Password> password of the specified user"
 echo >&2 "          -v <vServer Name> vServer to be templatised or cloned."
 echo >&2 "          -url <IAAS Base URL> URL to access the EMOC interface the default is https://localhost."
 echo >&2 "          -h This message."
 echo >&2 " "
 echo >&2 "Commands "
 echo >&2 " "
 echo >&2 "          --list-vservers"
 echo >&2 "                List all the vServers in the specified Account. If no Account is specified then it"
 echo >&2 "                will loop through all Accounts within the vDC listing the vServers. To successfully"
 echo >&2 "                achieve this the mandatory Username and Password must have access to all the accounts."
 echo >&2 "                If --verbose is also specified the all available vServer information will be listed."
 echo >&2 " "
 echo >&2 "          --status-vservers"
 echo >&2 "                List the status all the vServers in the specified Account. If no Account is specified then it"
 echo >&2 "                will loop through all Accounts within the vDC listing the vServers. To successfully"
 echo >&2 "                achieve this the mandatory Username and Password must have access to all the accounts."
 echo >&2 " "
 echo >&2 "          --start-vservers"
 echo >&2 "                Start all or the named -v vServer(s) in the specified Account. If no Account is specified"
 echo >&2 "                then it will loop through all Accounts within the vDC starting the vServers."
 echo >&2 " "
 echo >&2 "          --stop-vservers"
 echo >&2 "                Stop all or the named -v vServer(s) in the specified Account. If no Account is specified"
 echo >&2 "                then it will loop through all Accounts within the vDC stoping the vServers."
 echo >&2 " "
 echo >&2 "          --list-vnets"
 echo >&2 "                List all the vNets in the specified Account. If no Account is specified then it"
 echo >&2 "                will loop through all Accounts within the vDC listing the vNets. To successfully"
 echo >&2 "                achieve this the mandatory Username and Password must have access to all the accounts."
 echo >&2 "                If --verbose is also specified the all available vNet information will be listed."
 echo >&2 " "
 echo >&2 "          --list-distgroups"
 echo >&2 "                List all the Distribution Groups in the specified Account. If no Account is specified then it"
 echo >&2 "                will loop through all Accounts within the vDC listing the Distribution Groups. To successfully"
 echo >&2 "                achieve this the mandatory Username and Password must have access to all the accounts."
 echo >&2 "                If --verbose is also specified the all available Distribution Group information will be listed."
 echo >&2 " "
 echo >&2 "          --list-volumes"
 echo >&2 "                List all the Volumes in the specified Account. If no Account is specified then it"
 echo >&2 "                will loop through all Accounts within the vDC listing the Volumes. To successfully"
 echo >&2 "                achieve this the mandatory Username and Password must have access to all the accounts."
 echo >&2 "                If --verbose is also specified the all available Volumes information will be listed."
 echo >&2 " "
 echo >&2 "          --list-templates"
 echo >&2 "                List all the Templates in the specified Account. If no Account is specified then it"
 echo >&2 "                will loop through all Accounts within the vDC listing the Templates. To successfully"
 echo >&2 "                achieve this the mandatory Username and Password must have access to all the accounts."
 echo >&2 "                If --verbose is also specified the all available Template information will be listed."
 echo""
 exit 1
}

###############################################################
##
## Simple start for the script that will extract the parameters
## and call the appriate start function.
##
###############################################################

export ACCOUNT_USER="root"
export ACCOUNT_PASSWORD="welcome1"
export SYSTEMIMGDIR=/mnt/elsystem

while [ $# -gt 0 ]
do
 case "$1" in 
  -a) ACCOUNT="$2"; shift;;
  -v) VSERVER="$2"; shift;;
  -u) ACCOUNT_USER="$2"; shift;;
  -p) ACCOUNT_PASSWORD="$2"; shift;;
  -url) IAAS_BASE_URL="$2"; shift;;
  --verbose) VERBOSE=true;;
  --list-vservers) LIST_VSERVERS=true;;  
  --stop-vservers) STOP_VSERVERS=true;;  
  --start-vservers) START_VSERVERS=true;;  
  --status-vservers) STATUS_VSERVERS=true;;  
  --list-vnets) LIST_VNETS=true;;  
  --list-distgroups) LIST_DISTGRPS=true;;  
  --list-templates) LIST_TEMPLATES=true;;  
  --list-volumes) LIST_VOLUMES=true;;  
  *) usage;;
  *) break;;
 esac
 shift
done

IAAS_USER=$ACCOUNT_USER
echo "$ACCOUNT_PASSWORD" > $IAAS_PASSWORD_FILE



# Check if the JAVA_HOME is set
if [[ "$JAVA_HOME" == "" ]]
then
 export JAVA_HOME=/usr/java/latest
 echo "JAVA_HOME is not defined using $JAVA_HOME"
fi

getAccounts

for account in "${accountsArray[@]}"
do
 ACCOUNT_ID=${account%%|*}
 account=${account#*|}
 ACCOUNT_NAME=${account%%|*}
 if [[ ("$ACCOUNT" == "" || "$ACCOUNT" == "$ACCOUNT_NAME") && "$ACCOUNT_ID" == ACC-* ]]
 then
  connectToAccount
  if [[ "$STOP_VSERVERS" == "true" ]]
  then
   stopVServers
  elif [[ "$START_VSERVERS" == "true" ]]
  then
   startVServers
  elif [[ "$LIST_VSERVERS" == "true" ]]
  then
   listVServers
  elif [[ "$STATUS_VSERVERS" == "true" ]]
  then
   listVServerStatus
  elif [[ "$LIST_VNETS" == "true" ]]
  then
   listVNets
  elif [[ "$LIST_DISTGRPS" == "true" ]]
  then
   listDistributionGroups
  elif [[ "$LIST_TEMPLATES" == "true" ]]
  then
   listTemplates
  elif [[ "$LIST_VOLUMES" == "true" ]]
  then
   listVolumes
  fi
  disconnectFromAccount
 fi
done



No comments:

Post a Comment