3361N/A<?
xml version="1.0" encoding="UTF-8" standalone="no"?>
3361N/A ! The contents of this file are subject to the terms of the 3361N/A ! Common Development and Distribution License, Version 1.0 only 3361N/A ! (the "License"). You may not use this file except in compliance 3361N/A ! You can obtain a copy of the license at 3361N/A ! See the License for the specific language governing permissions 3361N/A ! and limitations under the License. 3361N/A ! When distributing Covered Code, include this CDDL HEADER in each 3361N/A ! file and include the License file at 3361N/A ! add the following below this CDDL HEADER, with the fields enclosed 3361N/A ! by brackets "[]" replaced with your own identifying information: 3361N/A ! Portions Copyright [yyyy] [name of copyright owner] 5065N/A ! Portions Copyright 2008-2010 Sun Microsystems, Inc. 3379N/A <
function name="createWebcontainer" scope="local">
3361N/A This function creates a default webcontainer instance
3379N/A <
function-
arg-
def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
3379N/A </
function-
arg-
description>
3379N/A <
function-
arg-
property name="type" value="hostname"/>
3379N/A <
function-
arg-
def name="wcPath" type="optional" default="'%s' % WC_DIRECTORY">
3379N/A Pathname to installation root
3379N/A </
function-
arg-
description>
3379N/A <
function-
arg-
property name="type" value="filepath"/>
3392N/A <!-- Copy webcontainer zip archive to remote host --> 3392N/A 'Copy webcontainer %s to host %s' % (WC_ZIPNAME,location)
3392N/A <
call function="'copyFile'">
3392N/A { 'location' : STAXServiceMachine,
3392N/A 'srcfile' : '%s/%s' % (WC_ZIPPATH,WC_ZIPNAME),
3392N/A 'destfile' : '%s/%s' % (wcPath,WC_ZIPNAME),
3361N/A <!-- Unzip webcontainer into temporary folder --> 3379N/A 'Extract temporary webcontainer zip archive to %s %s.' % (location, wcPath)
3361N/A <
call function="'unZipFile'">
3392N/A 'zipfile' : '%s/%s' % (wcPath,WC_ZIPNAME),
3392N/A 'unzipdir' : '%s' % wcPath }
3585N/A <!-- generate SSL certificate --> 4978N/A <!-- Check if 'webcontainer Certificate' file exists --> 3889N/A <
call function="'GetEntry'">
3889N/A 'location' : STAXServiceMachine,
4978N/A <!-- 'WCCertificate' file does not exist so generate it --> 4978N/A <!-- working arround sunwebserver migrate-jks-certs issue 6393534 4978N/A by, making the alias be 'cn=sunwebserver' --> 4978N/A <
call function="'runCommand'">
4978N/A { 'name' : 'Generate a Certificate',
4978N/A 'location' : STAXServiceMachine,
4978N/A 'arguments' : '-genkey -alias %s -keyalg rsa \
4978N/A -dname "cn=%s,O=Sun Microsystems,C=US" \
4978N/A -storepass "changeit" -keypass "changeit" \
5105N/A -storetype JKS ' % (WC_TYPE, WC_TYPE, TMPDIR),
4978N/A <!-- copying cert File over --> 3585N/A <
call function="'copyFile'">
3585N/A { 'location' : STAXServiceMachine,
4978N/A <
if expr="WC_TYPE == 'tomcat'">
4978N/A <!-- chmod +x all the .sh file in tomcat bin directory --> 4978N/A <
stafcmd name="'make tomcat shell scripts executable'">
4978N/A <
location>'%s' % mylocation</
location>
4978N/A (wcPath, WC_TYPE, WC_VERSION)</
request>
4978N/A shFilesResult=" ".join(STAFResult)
4978N/A <
message>'shFilesResult=%s' % shFilesResult</
message>
4978N/A <
process name="'chmod +x tomcat\'s shell scripts'">
4978N/A <
location>'%s' % mylocation</
location>
4978N/A <
command mode="'shell'">'chmod +x %s' % shFilesResult</
command>
4978N/A <!-- configure webcontainer's PORTs --> 4978N/A 'Configure webcontainer ports HTTP %s / HTTPS %s' % (WC_PORT, WC_SSL_PORT)
4978N/A <
stafcmd name="'get tomcat configuration file'">
4978N/A <
location>'%s' % mylocation</
location>
4978N/A (wcPath, WC_TYPE, WC_VERSION)</
request>
4978N/A # update the HTTP / HTTPS ports
4978N/A SSL_CONNECTOR = '<Service name="Catalina">\n \
4978N/A SSLEnabled="true" maxThreads="150" scheme="https" secure="true" \
4978N/A clientAuth="false" sslProtocol="SSL" \
4978N/A keystorePass="changeit" />' % \
5105N/A (WC_SSL_PORT, wcPath, WC_TYPE)
4978N/A <
call function="'copyFile'">
4978N/A 'remotehost' : '%s' % STAF_REMOTE_HOSTNAME
5065N/A <
call function="'copyFile'">
5065N/A 'remotehost' : '%s' % STAF_REMOTE_HOSTNAME
4978N/A <
elseif expr="WC_TYPE == 'glassfish'">
4978N/A <!-- configure webcontainer's PORTs --> 4978N/A 'Configure webcontainer ports HTTP %s / HTTPS %s' % (WC_PORT, WC_SSL_PORT)
4978N/A # create a glassfish batch command file
4978N/A "delete-http-listener http-listener-1",
4978N/A "delete-http-listener http-listener-2",
4978N/A "create-http-listener -e --enabled=true --listenerport %s --listeneraddress %s --defaultvs server httpListener" % (WC_PORT, STAF_REMOTE_HOSTNAME),
4978N/A "create-http-listener -e --enabled=true --listenerport %s --listeneraddress %s --defaultvs server httpsListener" % (WC_SSL_PORT, STAF_REMOTE_HOSTNAME),
4978N/A "create-ssl --type http-listener --certname %s httpsListener" % WC_TYPE
4978N/A # FIXME - had to resort to workarround that somce create-http-listener didn't work when in the batchfile
4978N/A # batch only the delete-jvm-options / create-jvm-options, the rest is done one asadmin cmdline at a time
4978N/A <
call function="'copyFile'">
4978N/A 'remotehost' : '%s' % STAF_REMOTE_HOSTNAME
4978N/A <
message>'Starting glassfish to enable administration'</
message>
4978N/A STAFCmdEnv=['PATH=%
s/
bin:/bin:/
usr/
bin' % JAVA_HOME, 'JAVA_HOME=%s' % JAVA_HOME]
4978N/A <
call function="'runCommand'">
4978N/A { 'location' : STAF_REMOTE_HOSTNAME,
4978N/A 'arguments' : 'start-domain',
4978N/A <
message>'Configuring glassfish ports and certificate'</
message>
4978N/A STAFCmdEnv=['PATH=%
s/
bin:/bin:/
usr/
bin' % JAVA_HOME, 'JAVA_HOME=%s' % JAVA_HOME]
4978N/A STAFCmdArgs=' '.join(['multimode',
4978N/A <
call function="'runCommand'">
4978N/A { 'location' : STAF_REMOTE_HOSTNAME,
4978N/A 'failed configuring glassfish with STAXResult=[%s]' % STAXResult
4978N/A <
iterate var="cfgItem" in="asadminCmds[2:]">
4978N/A <
message> 'configure with cfgItem=%s' % cfgItem </
message>
4978N/A <
call function="'runCommand'">
4978N/A 'failed configuring glassfish with STAXResult=[%s]' % STAXResult
4978N/A <
message>'Stopping glassfish '</
message>
4978N/A 'JAVA_HOME=%s' % JAVA_HOME]
4978N/A <
call function="'runCommand'">
4978N/A 'arguments' : 'stop-domain',
4978N/A <
elseif expr="WC_TYPE == 'sunwebserver'">
4978N/A <!-- generate a statefile --> 4978N/A 'location' : STAF_REMOTE_HOSTNAME,
4978N/A print 'sunwebserver as user : %s' % wcUser
4978N/A <
call function="'runCommand'">
4978N/A { 'location' : STAF_REMOTE_HOSTNAME,
4978N/A 'name' : 'getting SunWebserver ID',
4978N/A sunWebserverID = STAXResult[0][1]
4978N/A 'currentInstallDirectory = %s/%s-%s' % (wcPath, WC_TYPE, WC_VERSION),
4978N/A 'SELECTED_COMPONENTS = admincli,svrcore,devsupport',
4978N/A 'ADMIN_HOST = %s' % STAF_REMOTE_HOSTNAME,
4978N/A 'ADMIN_SSL_PORT = 8989', #FIXME need to define a new port
4978N/A 'WEB_SERVERNAME = %s' % STAF_REMOTE_HOSTNAME,
4978N/A 'SIXTYFOURBIT_INSTALL = false', # FIXME we could figure out this with a call to java -d 64
4978N/A 'CONFIG_NAME = %s ' % STAF_REMOTE_HOSTNAME,
4978N/A 'SKIP_INSTANCE_CREATION = ',
4978N/A print 'sunwebserver install statefile %s' % '\n'.join(stateFileList)
4978N/A STAFCmdArgs = '--silent %s' % silentFilePath
4978N/A <
call function="'copyFile'">
4978N/A { 'location' : STAXServiceMachine,
4978N/A 'destfile' : '%s' % silentFilePath,
4978N/A 'remotehost' : STAF_REMOTE_HOSTNAME,
4978N/A <
call function="'runCommand'">
4978N/A { 'location' : STAF_REMOTE_HOSTNAME,
4978N/A 'name' : 'Setup SunWebserver silent mode',
4978N/A <
message>'Failed to setup the %s-%s, backing setup log' % (WC_TYPE, WC_VERSION)</
message>
4978N/A <
call function="'runSTAFCommand'">
4978N/A { 'name' : 'backup webapps WEB-INF files',
4978N/A 'location' : STAF_REMOTE_HOSTNAME,
4978N/A 'arguments' : 'DIRECTORY %s TODIRECTORY %s TOMACHINE %s RECURSE' % (srcDir, destDir, STAXServiceMachine)
4978N/A <
message>'Failed to backup %s-%s setup log file' % (WC_TYPE, WC_VERSION)</
message>
4978N/A <!-- create a wadm passwordfile --> 4978N/A wadmPwdFile = open(wadmPwdFilename,'w')
4978N/A <
call function="'copyFile'">
4978N/A { 'location' : STAXServiceMachine,
4978N/A 'srcfile' : '%s' % wadmPwdFilename,
4978N/A 'destfile' : '%s' % wadmDestPwdFilename,
4978N/A <!-- migrate the JKS keystore --> 4978N/A STAFCmdArgs = ' '.join(['migrate-jks-keycert',
4978N/A '--user=admin', '--password-file=%s' % wadmDestPwdFilename,
4978N/A '--host=%s' % STAF_REMOTE_HOSTNAME,
4978N/A '--config=%s' % STAF_REMOTE_HOSTNAME,
4978N/A '--key-password=changeit', '--keystore-password=changeit'])
4978N/A <
call function="'runCommand'">
4978N/A { 'location' : STAF_REMOTE_HOSTNAME,
4978N/A 'name' : 'Migrate the keystore',
4978N/A STAFCmdArgs = ' '.join(['list-certs',
4978N/A '--user=admin', '--password-file=%s' % wadmDestPwdFilename,
4978N/A '--host=%s' % STAF_REMOTE_HOSTNAME,
4978N/A '--config=%s' % STAF_REMOTE_HOSTNAME])
4978N/A <
call function="'runCommand'">
4978N/A { 'location' : STAF_REMOTE_HOSTNAME,
4978N/A 'name' : 'Migrate the keystore',
4978N/A <!-- create SSL listener --> 4978N/A STAFCmdArgs = ' '.join(['create-http-listener', '--user=admin',
4978N/A '--password-file=%s' % wadmDestPwdFilename,
4978N/A '--host=%s' % STAF_REMOTE_HOSTNAME,
4978N/A '--config=%s' % STAF_REMOTE_HOSTNAME,
4978N/A '--server-name=%s-%s' % (WC_TYPE,WC_VERSION),
4978N/A '--description=SSL-listener',
4978N/A '--listener-port=%s' % WC_SSL_PORT,
4978N/A '--default-virtual-server-name=%s' % STAF_REMOTE_HOSTNAME,
4978N/A <
call function="'runCommand'">
4978N/A { 'location' : STAF_REMOTE_HOSTNAME,
4978N/A 'name' : 'Create SSL dedicated http-listener',
4978N/A # there's a known issue with the keystore migration from JKS see : 6393534
4978N/A # hence cert alias like following don't work : "CN=sunwebserver,O=Sun Microsystems,C=US"
4978N/A # apparently from the cmdline this works :
4978N/A #
bin/
wadm set-ssl-prop --user=admin server-cert-nickname="CN=sunwebserver\,O=Sun Microsystems\,C=US"
4978N/A #certNickName="cn=%s" % (WC_TYPE)
4978N/A certNickName=r'"cn=%s\,O=Sun Microsystems\,C=US"' % (WC_TYPE)
4978N/A print 'certNickName used in set-ssl-prop cmdline = [%s]' % certNickName
4978N/A STAFCmdArgs = ' '.join(['set-ssl-prop',
4978N/A '--user=admin', '--password-file=%s' % wadmDestPwdFilename,
4978N/A '--host=%s' % STAF_REMOTE_HOSTNAME,
4978N/A '--config=%s' % STAF_REMOTE_HOSTNAME,
4978N/A '--http-listener=ssl-listener-1',
4978N/A 'max-client-auth-data=1048576',
4978N/A 'tls-rollback-detection=true',
4978N/A STAFCmdArgs = r'%s server-cert-nickname=%s' % (STAFCmdArgs, certNickName)
4978N/A <
call function="'runCommand'">
4978N/A { 'location' : STAF_REMOTE_HOSTNAME,
4978N/A 'name' : 'set the SSL handling for the SSL dedicated http-listener',
4978N/A STAFCmdArgs = ' '.join(['deploy-config',
4978N/A '--user=admin', '--password-file=%s' % wadmDestPwdFilename,
4978N/A '--host=%s' % STAF_REMOTE_HOSTNAME,
4978N/A <
call function="'runCommand'">
4978N/A { 'location' : STAF_REMOTE_HOSTNAME,
4978N/A <
message>'backing up the webcontainer config'</
message>
4978N/A elif WC_TYPE == 'glassfish':
4978N/A srcDir =
os.path.join(WC_DIRECTORY, 'glassfishv3', 'glassfish', 'domains', 'domain1', 'config')
4978N/A elif WC_TYPE == 'sunwebserver':
4978N/A srcDir =
os.path.join(wcPath, '%s-%s' % (WC_TYPE, WC_VERSION), 'https-%s' % STAF_REMOTE_HOSTNAME, 'config')
4978N/A <
call function="'runSTAFCommand'">
4978N/A { 'name' : 'backup webcontainers log files',
4978N/A 'location' : STAF_REMOTE_HOSTNAME,
4978N/A 'arguments' : 'DIRECTORY %s TODIRECTORY %s TOMACHINE %s RECURSE' % (srcDir, destDir, STAXServiceMachine)
4978N/A <
message>'Failed to backup webcontainer log file'</
message>
3361N/A <
catch exception="'TestExceptionResultFailed'" typevar="eType" var="eInfo">
3361N/A <
message>'caught %s with %s' % (eType,eInfo)</
message>
3379N/A 'Remove temporary webcontainer zip archive from %s %s' % (location,wcPath)
3361N/A <
call function="'deleteFolder'">
3379N/A 'foldername' : '%s' % wcPath }
3379N/A <
function name="deployWebApplicationWAR" scope="local">
3361N/A This function deploys a Web Application War file
3379N/A <
function-
arg-
def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
3361N/A </
function-
arg-
description>
3361N/A <
function-
arg-
property name="type" value="hostname"/>
3379N/A <
function-
arg-
def name="wcPath" type="optional" default="'%s' % WC_DIRECTORY">
3379N/A Pathname to installation root
3379N/A </
function-
arg-
description>
3379N/A <
function-
arg-
property name="type" value="filepath"/>
3379N/A <
function-
arg-
def name="warFilePath" type="required" default="''">
3361N/A Web application war file path
3361N/A </
function-
arg-
description>
3361N/A <
function-
arg-
property name="type" value="filepath"/>
3379N/A <
function-
arg-
def name="destWarFileName" type="optional" default="'dsml.war'">
3361N/A Web application war destination file path
3361N/A </
function-
arg-
description>
3361N/A <
function-
arg-
property name="type" value="filepath"/>
4978N/A 'setup: deploy web application %s to auto deploy webapp directory' % (warFilePath)
4978N/A # create the autodeploy webapp path
4978N/A destWarFilePath =
os.path.join(wcPath, 'apache-%s-%s' % (WC_TYPE, WC_VERSION), 'webapps', destWarFileName)
4978N/A elif WC_TYPE == 'glassfish':
4978N/A 'domains', 'domain1', 'autodeploy', destWarFileName)
4978N/A elif WC_TYPE == 'sunwebserver':
4978N/A destWarFilePath =
os.path.join(wcPath, '%s-%s' % (WC_TYPE, WC_VERSION), 'https-%s' % STAF_REMOTE_HOSTNAME, 'auto-deploy', destWarFileName)
4978N/A 'autodeploy directory %s' % destWarFilePath
3361N/A <
call function="'copyFile'">
3379N/A { 'location' : STAXServiceMachine,
3361N/A 'srcfile' : '%s' % warFilePath,
4978N/A 'destfile' : '%s' % destWarFilePath,
3379N/A <
function name="stopWebcontainerWithScript" scope="local">
3361N/A This function stops a webcontainer
3379N/A <
function-
arg-
def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
3361N/A </
function-
arg-
description>
3361N/A <
function-
arg-
property name="type" value="hostname"/>
3379N/A <
function-
arg-
def name="wcPath" type="optional" default="'%s' % WC_DIRECTORY">
3361N/A Pathname to installation root
3361N/A </
function-
arg-
description>
3361N/A <
function-
arg-
property name="type" value="filepath"/>
4978N/A STAFCmdEnv=['CATALINA_HOME=%s' % CATALINA_HOME,
4978N/A 'JAVA_HOME=%s' % JAVA_HOME]
4978N/A elif WC_TYPE == 'glassfish':
4978N/A 'JAVA_HOME=%s' % JAVA_HOME]
4978N/A elif WC_TYPE == 'sunwebserver':
4978N/A wcBinPath =
os.path.join(wcPath, '%s-%s' % (WC_TYPE, WC_VERSION), 'https-%s' % STAF_REMOTE_HOSTNAME, 'bin')
4978N/A 'JAVA_HOME=%s' % JAVA_HOME]
3361N/A <
call function="'runCommand'">
4978N/A srcDir =
os.path.join(WC_DIRECTORY, 'apache-%s-%s' % (WC_TYPE, WC_VERSION), 'webapps', 'dsml', 'WEB-INF')
4978N/A elif WC_TYPE == 'glassfish':
4978N/A 'domain1', 'applications', 'dsml', 'WEB-INF')
4978N/A elif WC_TYPE == 'sunwebserver':
4978N/A srcDir =
os.path.join(WC_DIRECTORY, '%s-%s' % (WC_TYPE, WC_VERSION), 'https-%s' % STAF_REMOTE_HOSTNAME,
4978N/A 'generated', STAF_REMOTE_HOSTNAME, 'dsml', 'WEB-INF')
4978N/A <
call function="'runSTAFCommand'">
4978N/A { 'name' : 'backup webapps WEB-INF files',
4978N/A 'location' : STAF_REMOTE_HOSTNAME,
4978N/A 'arguments' : 'DIRECTORY %s TODIRECTORY %s TOMACHINE %s RECURSE' % (srcDir, destDir, STAXServiceMachine)
4978N/A <
message>'Failed to backup webcontainer log file'</
message>
4978N/A <
message>'backing up the webcontainer logs'</
message>
4978N/A elif WC_TYPE == 'glassfish':
4978N/A srcDir =
os.path.join(WC_DIRECTORY, 'glassfishv3', 'glassfish', 'domains', 'domain1', 'logs')
4978N/A elif WC_TYPE == 'sunwebserver':
4978N/A srcDir =
os.path.join(wcPath, '%s-%s' % (WC_TYPE, WC_VERSION), 'https-%s' % STAF_REMOTE_HOSTNAME, 'logs')
4978N/A <
call function="'runSTAFCommand'">
4978N/A { 'name' : 'backup webcontainers log files',
4978N/A 'location' : STAF_REMOTE_HOSTNAME,
4978N/A 'arguments' : 'DIRECTORY %s TODIRECTORY %s TOMACHINE %s RECURSE' % (srcDir, destDir, STAXServiceMachine)
4978N/A <
message>'Failed to backup webcontainer log file'</
message>
3379N/A <
function name="startWebcontainerWithScript" scope="local">
3379N/A This function start a webcontainer
3379N/A <
function-
arg-
def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
3361N/A </
function-
arg-
description>
3361N/A <
function-
arg-
property name="type" value="hostname"/>
4978N/A <
function-
arg-
def name="wcPath" type="optional" default="'%s' % WC_DIRECTORY">
3361N/A Pathname to installation root
3361N/A </
function-
arg-
description>
3361N/A <
function-
arg-
property name="type" value="filepath"/>
4978N/A STAFCmdEnv=['CATALINA_HOME=%s' % CATALINA_HOME,
4978N/A 'JAVA_HOME=%s' % JAVA_HOME]
4978N/A elif WC_TYPE == 'glassfish':
4978N/A 'JAVA_HOME=%s' % JAVA_HOME]
4978N/A STAFCmdArgs = 'start-domain'
4978N/A elif WC_TYPE == 'sunwebserver':
4978N/A wcBinPath =
os.path.join(wcPath, '%s-%s' % (WC_TYPE,WC_VERSION), 'https-%s' % STAF_REMOTE_HOSTNAME, 'bin')
4978N/A 'JAVA_HOME=%s' % JAVA_HOME]
4865N/A <!-- On Windows 2003, startup command return 1 and 2008 returns 0 --> 4865N/A winVersion = is_windows_platform(location)
3361N/A <
call function="'runCommand'">
3379N/A <
function name="removeWebcontainer" scope="local">
3361N/A This function removes the webcontainer instance
3379N/A <
function-
arg-
def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
3379N/A </
function-
arg-
description>
3379N/A <
function-
arg-
property name="type" value="hostname"/>
3379N/A <
function-
arg-
def name="wcPath" type="optional" default="'%s' % WC_DIRECTORY">
3379N/A Pathname to installation root
3379N/A </
function-
arg-
description>
3379N/A <
function-
arg-
property name="type" value="filepath"/>
3361N/A <!-- Remove webcontainer directory --> 3379N/A 'Remove webcontainer from %s %s.' % (location,wcPath)
4978N/A <
if expr="WC_TYPE == 'tomcat'">
4978N/A <
call function="'deleteFolder'">
4978N/A <
elseif expr="WC_TYPE == 'glassfish'">
4978N/A <
call function="'deleteFolder'">
4978N/A <
elseif expr="WC_TYPE == 'sunwebserver'">
4978N/A STAFCmdEnv=['PATH=%
s/
bin:/bin:/
usr/
bin' % JAVA_HOME, 'JAVA_HOME=%s' % JAVA_HOME]
4978N/A <
call function="'runCommand'">
4978N/A <
call function="'deleteFolder'">
4978N/A 'foldername' : '%s/%s-%s' % (wcPath, WC_TYPE, WC_VERSION) }
3361N/A <
catch exception="'TestExceptionResultFailed'" typevar="eType" var="eInfo">
3361N/A <
message>'caught %s with %s' % (eType,eInfo)</
message>
3379N/A 'Remove temporary webcontainer zip archive from %s %s' % (location,wcPath)
4978N/A <
if expr="WC_TYPE == 'tomcat'">
4978N/A <
call function="'deleteFolder'">
4978N/A <
elseif expr="WC_TYPE == 'glassfish'">
4978N/A <
call function="'deleteFolder'">
4978N/A <
elseif expr="WC_TYPE == 'sunwebserver'">
4978N/A <
call function="'deleteFolder'">
4978N/A 'foldername' : '%s/%s-%s' % (wcPath, WC_TYPE, WC_VERSION) }