| #!/bin/sh |
| # |
| # Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved. |
| # |
| # This program and the accompanying materials are made available under the |
| # terms of the Eclipse Public License v. 2.0, which is available at |
| # http://www.eclipse.org/legal/epl-2.0. |
| # |
| # This Source Code may also be made available under the following Secondary |
| # Licenses when the conditions for such availability set forth in the |
| # Eclipse Public License v. 2.0 are satisfied: GNU General Public License, |
| # version 2 with the GNU Classpath Exception, which is available at |
| # https://www.gnu.org/software/classpath/license.html. |
| # |
| # SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 |
| # |
| |
| # This script helps setup services for running PaaS native, kvm or ovm tests. |
| # setup.sh -r -d <templates-dir> -s jee,javadb,mysql,oracle,apachemodjk,otd,lb native|kvm|ovm2|ovm3 |
| # Examples: |
| # 1) Plain native setup |
| # setup.sh native |
| # 2) Native with lb service |
| # setup.sh -s lb native |
| # 3) KVM with jee service |
| # setup.sh -t /kvm/images -s jee kvm |
| # 4) KVM with jee,javadb,apachemodjk services |
| # setup.sh -t /kvm/images -s jee,javadb,apachemodjk kvm |
| # 5) OVM with jee service |
| # setup.sh -t /ovm/templates -s jee -p pool1 ovm2 |
| # 6) OVM with jee,otd services |
| # setup.sh -t /ovm/templates -s jee,otd -p pool1 ovm2 |
| # 7) Recreate domain1 before setting up |
| # setup.sh -r native |
| # Author: Yamini K B |
| # Date : 8-FEB-2012 |
| |
| GF_HOME=${GF_HOME:-$S1AS_HOME} |
| USAGE="Usage: $(basename $0) -r -d <templates-dir> -s jee,javadb,mysql,oracle,apachemodjk,otd,lb native|kvm|ovm2|ovm3" |
| |
| [ -z "$GF_HOME" ] && echo "Please set GF_HOME or S1AS_HOME" && exit 1; |
| |
| [ $# -lt 1 ] && echo $USAGE && exit 1; |
| |
| log () |
| { |
| echo "\033[33;33m$1\033[0m" |
| } |
| |
| err () |
| { |
| echo "\033[33;31m$1\033[0m" |
| } |
| |
| setup_native () |
| { |
| log "Configuring NATIVE mode...." |
| $A start-domain --debug |
| $A create-ims-config-native |
| |
| IFS_TMP=$IFS |
| IFS="," |
| for s in $SERVICES |
| do |
| case $s in |
| "lb") log "Creating template for lb service..." |
| $A create-template --indexes ServiceType=LB,VirtualizationType=Native LBNative |
| ;; |
| *) err "Ignoring unknown service $s" |
| ;; |
| esac |
| done |
| IFS=$IFS_TMP |
| |
| $A stop-domain |
| log "Successfully configured NATIVE mode...." |
| } |
| |
| setup_kvm () |
| { |
| log "Configuring KVM...." |
| log "Removing stale files..." |
| rm -f /tmp/helloworld?.xml |
| #rm -rf ~/virt/* |
| rm -rf ~/virt/disks/* |
| |
| $A start-domain --debug |
| $A create-ims-config-libvirt kvm |
| $A set virtualizations.libvirt-virtualization.kvm.template-cache-size=0 |
| $A create-jvm-options -Dorg.glassfish.paas.orchestrator.parallel-provisioning=true |
| $A restart-domain --debug |
| $A create-server-pool --virtualization kvm --subnet 192.168.122.0/24 --portName "virbr0" cloud |
| |
| $A create-machine --serverPool cloud --networkName localhost local |
| $A create-machine-user --serverPool cloud --machine local --userId 1000 --groupId 1000 $USER |
| |
| IFS_TMP=$IFS |
| IFS="," |
| for s in $SERVICES |
| do |
| case $s in |
| "jee") log "Creating template for jee service..." |
| $A create-template --virtualization kvm --files $templates_dir/glassfish.img,$templates_dir/glassfish.xml --indexes ServiceType=JavaEE,VirtualizationType=libvirt glassfish |
| $A create-template-user --virtualization kvm --template glassfish cloud |
| ;; |
| "javadb") log "Creating template for javadb service..." |
| $A create-template --virtualization kvm --files $templates_dir/glassfish.img,$templates_dir/glassfish.xml --indexes ServiceType=Database,VirtualizationType=libvirt javadb |
| $A create-template-user --virtualization kvm --template javadb cloud |
| ;; |
| "mysql") log "Creating template for mysql service..." |
| $A create-template --virtualization kvm --files $templates_dir/MySQL.img,$templates_dir/MySQL.xml --indexes ServiceType=Database,VirtualizationType=libvirt MySQL |
| $A create-template-user --virtualization kvm --template MySQL mysqluser |
| ;; |
| "oracle") log "Creating template for oracle service..." |
| $A create-template --virtualization kvm --files $templates_dir/oracledb.img,$templates_dir/oracledb.xml --indexes ServiceType=Database,VirtualizationType=libvirt oracledb |
| $A create-template-user --virtualization kvm --template oracledb shalinikvm |
| ;; |
| "apachemodjk") log "Creating template for apachemodjk service..." |
| $A create-template --virtualization kvm --files $templates_dir/apache.img,$templates_dir/apache.xml --indexes ServiceType=LB,VirtualizationType=libvirt apachemodjk |
| $A create-template-user --virtualization kvm --template apachemodjk cloud |
| ;; |
| *) err "Ignoring unknown service $s" |
| ;; |
| esac |
| done |
| IFS=$IFS_TMP |
| |
| #copying of the template into ~/virt/templates takes about 2 min. |
| log "Copying of template(s) into ~/virt/templates in progress..." |
| sleep 100 |
| ls -l ~/virt/templates/glassfish |
| |
| $A stop-domain |
| log "Successfully configured KVM...." |
| } |
| |
| setup_init () |
| { |
| log "OVM init ...." |
| [ -z "$POOL" ] && err "Please specify pool name using -p <pool> option." && exit 3; |
| [ -z "$CONNECTION_STRING" ] && echo "Please specify connection string using -c <string> option." && exit 1; |
| [ -z "$SUBNET" ] && echo "Please specify subnet using -n <subnet> option." && exit 1; |
| |
| # Parse the old style connection string into variables we can use with the |
| # new commands. At some point we should probably allow these to be |
| # specified via CLI options, but for now this keeps us compatible with |
| # current uses of this script. |
| |
| # Connection string looks like: |
| # http://adminUser:adminPassword@hostName:port/foo/bar;rootUser:rootPassword |
| # Convert most delimeters into colons so it looks like |
| # http://adminUser:adminPassword:hostName:port/foo/bar:rootUser:rootPassword |
| # Then pick out the fields |
| _S=`echo "$CONNECTION_STRING" | tr -s "@;" ":"` |
| # Parse out fields |
| PROTOCOL=`echo $_S | cut -f 1 -d :` |
| OVMUSER=`echo $_S | cut -f 2 -d : | sed -e "s|//||"` |
| OVMPASSWORD=`echo $_S | cut -f 3 -d :` |
| OVMHOST=`echo $_S | cut -f 4 -d :` |
| OVMPORT=`echo $_S | cut -f 5 -d :` |
| POOLUSER=`echo $_S | cut -f 6 -d :` |
| POOLPASSWORD=`echo $_S | cut -f 7 -d :` |
| OVMURL="$PROTOCOL://$OVMHOST:$OVMPORT" |
| |
| log "Parsed $CONNECTION_STRING into: " |
| log "OVMUSER=$OVMUSER" |
| log "OVMPASSWORD=$OVMPASSWORD" |
| log "OVMHOST=$OVMHOST" |
| log "OVMPORT=$OVMPORT" |
| log "POOLUSER=$POOLUSER" |
| log "POOLPASSWORD=$POOLPASSWORD" |
| log "OVMURL=$OVMURL" |
| |
| $A start-domain domain1 |
| $A set configs.config.server-config.network-config.protocols.protocol.admin-listener.http.request-timeout-seconds=-1 |
| $A create-jvm-options -Dorg.glassfish.paas.orchestrator.parallel-provisioning=true |
| } |
| |
| setup_ovm3 () |
| { |
| log "Configuring OVM 3.0 ...." |
| setup_init |
| |
| OVMVERSION=3.0 |
| VIRTTYPE=OVM30 |
| |
| setup_ovm |
| log "Successfully configured OVM 3.0 ...." |
| } |
| |
| setup_ovm2 () |
| { |
| log "Configuring OVM 2.2 ...." |
| setup_init |
| |
| OVMVERSION=2.2 |
| VIRTTYPE=OVM |
| |
| setup_ovm |
| log "Successfully configured OVM 2.2 ...." |
| } |
| |
| setup_ovm () |
| { |
| _PFILE=/tmp/p$$.txt |
| trap 'rm -f $_PFILE' 0 1 15 |
| |
| # Need to pass passwords vi asadmin password file |
| echo "AS_ADMIN_OVMPASSWORD=$OVMPASSWORD" > $_PFILE |
| echo "AS_ADMIN_IAASPASSWORD=$POOLPASSWORD" >> $_PFILE |
| |
| set -x |
| $A --passwordfile $_PFILE create-ims-config-ovm --connectionstring $OVMURL --ovmversion $OVMVERSION --ovmuser $OVMUSER ovm |
| $A create-server-pool --subnet $SUBNET --portname $BRIDGE --virtualization ovm $POOL |
| $A --passwordfile $_PFILE create-server-pool-user --virtualization ovm --serverpool $POOL $POOLUSER |
| set +x |
| |
| rm $_PFILE |
| |
| IFS_TMP=$IFS |
| IFS="," |
| for s in $SERVICES |
| do |
| case $s in |
| "jee") log "Creating template for jee service..." |
| touch $templates_dir/glassfish.tgz |
| $A create-template --files $templates_dir/glassfish.tgz --indexes ServiceType=JavaEE,VirtualizationType=$VIRTTYPE glassfish |
| $A create-template-user --virtualization ovm --template glassfish glassfish |
| ;; |
| "oracle") log "Creating template for oracle service..." |
| touch $templates_dir/ORACLEDB.tgz |
| $A create-template --files $templates_dir/ORACLEDB.tgz --indexes ServiceType=Database,VirtualizationType=$VIRTTYPE ORACLE_DATABASE |
| $A create-template-user --virtualization ovm --template ORACLE_DATABASE oracle |
| ;; |
| "derby") log "Creating template for derby service..." |
| touch $templates_dir/DERBY_DATABASE.tgz |
| $A create-template --files $templates_dir/DERBY_DATABASE.tgz --indexes ServiceType=Database,VirtualizationType=$VIRTTYPE DERBY_DATABASE |
| $A create-template-user --virtualization ovm --template DERBY_DATABASE glassfish |
| ;; |
| "otd") log "Creating template for otd service..." |
| touch $templates_dir/OTD_LARGE.tgz |
| $A create-template --files $templates_dir/OTD_LARGE.tgz --properties vendor-name=otd --indexes ServiceType=LB,VirtualizationType=$VIRTTYPE otd-new |
| $A create-template-user --virtualization ovm --template otd-new cloud |
| ;; |
| *) err "Ignoring unknown service $s" |
| ;; |
| esac |
| done |
| IFS=$IFS_TMP |
| |
| $A stop-domain |
| } |
| |
| log "GlassFish is at $GF_HOME" |
| |
| A=$GF_HOME/bin/asadmin |
| BRIDGE="xenbr0" |
| |
| while getopts rd:s:c:n:p:b: opt |
| do |
| case ${opt} in |
| r) log "Recreating domain1..." |
| $A stop-domain domain1 |
| $A delete-domain domain1 |
| $A create-domain --adminport 4848 --nopassword domain1 |
| ;; |
| s) SERVICES=$OPTARG |
| ;; |
| d) |
| if [ -d "$OPTARG" ] # Check if dir exists |
| then |
| templates_dir=$OPTARG |
| else |
| err "Directory \"$OPTARG\" does not exist." |
| exit 2 |
| fi |
| ;; |
| c) CONNECTION_STRING=$OPTARG |
| ;; |
| n) SUBNET=$OPTARG |
| ;; |
| p) POOL=$OPTARG |
| ;; |
| b) BRIDGE=$OPTARG |
| ;; |
| \?) echo $USAGE |
| exit 2;; |
| esac |
| done |
| |
| shift $(($OPTIND - 1)) |
| |
| case "$1" in |
| "native") setup_native |
| ;; |
| "kvm") setup_kvm |
| ;; |
| "ovm2") setup_ovm2 |
| ;; |
| "ovm3") setup_ovm3 |
| ;; |
| *) echo $USAGE |
| exit 2;; |
| esac |
| |
| exit 0 |