Continue the subject about automation of a process of IBM BPM administration what has been initiated here.
Now I publish the shell script for exporting of a snapshot for offline installation.
#!/bin/sh
# V.Litvinov 2013
# Change this to your data
HOSTNAME=host <hostname of Process Center server/use DMserver for cluster>
PORT=8880 <SOAP port>
USER=admin
PASSWORD=password
DM_HOME=/opt/ibm/BPM80/profiles/ProcCtr01 <PC_PROFILE_HOME (use DM profile for custer)>
EXP_FOLDER=/ibm/export <Export folder>
echo
echo "***************************************************************"
echo "* INTERACTIVE SCRIPT FOR IBM BPM OFFLINE INSTALLATION OF PAs *"
echo "* (Export Part) *"
echo "***************************************************************"
echo
echo Wait, please........
echo
# Reading Information about PAs using wasadmin
$DM_HOME/bin/wsadmin.sh -lang jython -conntype SOAP -port $PORT -host $HOSTNAME -user $USER -password $PASSWORD -c "print AdminTask.BPMListProcessApplications('[]')" > PAPP.log
# Creating List of PAs (except Toolkits)
declare -a ARRAY
exec 10<PAPP.log
let count=0
while read LINE <&10; do
if [ -n "$LINE" ]
then
if [[ ${LINE:0:7} = 'Acronym' ]]
then
ARRAY[$count]=${LINE:9}
((count++))
fi
if [[ ${LINE:0:13} = 'Toolkit: true' ]]
then
ARRAY[$count-1]=''
count=$count-1
fi
fi
done
exec 10>&-
# Changing of working PA
echo LIST OF YOUR PROCESS APPLICATIONS
echo =================================
for (( i=0;i<$count;i++ )); do
echo $i ' ' ${ARRAY[${i}]}
done
echo =================================
echo -n "Enter the number of PA > "
read pa
PANAME=${ARRAY[${pa}]}
echo "You changed PA $PANAME"
# Reading Information about Snapshots using wasadmin
$DM_HOME/bin/wsadmin.sh -lang jython -conntype SOAP -port $PORT -host $HOSTNAME -user $USER -password $PASSWORD -c "print AdminTask.BPMShowProcessApplication('[-containerAcronym ${ARRAY[${pa}]}]')" > $PANAME.log
# Creating List of Snapshots of the current PA
unset ARRAY
exec 11<$PANAME.log
let count=0
while read LINE <&11; do
if [ -n "$LINE" ]
then
if [[ ${LINE:0:7} = 'Acronym' ]]
then
ARRAY[$count]=${LINE:9}
((count++))
fi
if [[ ${LINE:0:22} = 'State: State[Archived]' ]]
then
ARRAY[$count-1]=''
count=$count-1
fi
fi
done
exec 11>&-
echo
echo LIST OF SNAPSHOTS
echo =================================
for (( i=1;i<$count;i++ )); do
echo $i ' ' ${ARRAY[${i}]}
done
echo =================================
echo -n "Enter the number of Snapshot > "
read pa
SNNAME=${ARRAY[${pa}]}
echo "You changed Snapshot $SNNAME of PA $PANAME"
# Reading Information about Servers using wasadmin
$DM_HOME/bin/wsadmin.sh -lang jython -conntype SOAP -port $PORT -host $HOSTNAME -user $USER -password $PASSWORD -c "print AdminTask.BPMListServers('[]')" > SERVERS.log
# Creating List of Snapshots of the current PA
unset ARRAY
exec 12<SERVERS.log
let count=0
while read LINE <&12; do
if [ -n "$LINE" ]
then
if [[ ${LINE:0:6} = 'Name: ' ]]
then
ARRAY[$count]=${LINE:6}
((count++))
fi
if [[ ${LINE:0:14} = 'URL: corbaname' ]]
then
ARRAY[$count-1]=''
count=$count-1
fi
fi
done
exec 12>&-
echo
echo LIST OF SERVERS
echo =================================
for (( i=0;i<$count;i++ )); do
echo $i ' ' ${ARRAY[${i}]}
done
echo =================================
echo -n "Enter the number of Server > "
read pa
SERVNAME=${ARRAY[${pa}]}
echo "You changed Snapshot $SNNAME of PA $PANAME for installation on $SERVNAME"
# Creating Offline Package using wasadmin
$DM_HOME/bin/wsadmin.sh -lang jython -conntype SOAP -port $PORT -host $HOSTNAME -user $USER -password $PASSWORD -c "AdminTask.BPMCreateOfflinePackage ('[-containerAcronym $PANAME -containerSnapshotAcronym $SNNAME -containerTrackAcronym Main -serverName $SERVNAME]')" > BPMCreateOfflinePackage.log
# Verifing the result of BPMCreateOfflinePackage
unset ARRAY
exec 13<BPMCreateOfflinePackage.log
let count=0
bpmc="BPMCreateOfflinePackage not passed. See logs"
while read LINE <&13; do
if [ -n "$LINE" ]
then
if [[ ${LINE:1:31} = 'BPMCreateOfflinePackage passed.' ]]
then
bpmc="BPMCreateOfflinePackage passed successfully"
fi
ARRAY[$count]=${LINE}
((count++))
fi
done
exec 13>&-
echo
echo RESULT OF BPMCreateOfflinePackage
echo =================================
echo $bpmc
echo
if [[ ${bpmc:0:45} = 'BPMCreateOfflinePackage not passed. See logs' ]]
then
for (( i=0;i<$count;i++ )); do
echo ${ARRAY[${i}]}
done
fi
# Extracting Offline Package using wasadmin
$DM_HOME/bin/wsadmin.sh -lang jython -conntype SOAP -port $PORT -host $HOSTNAME -user $USER -password $PASSWORD -c "AdminTask.BPMExtractOfflinePackage ('[-containerAcronym $PANAME -containerSnapshotAcronym $SNNAME -containerTrackAcronym Main -serverName $SERVNAME -outputFile $EXP_FOLDER/$PANAME$SNNAME.zip]')" > BPMExtractOfflinePackage.log
# Verifing the result of BPMExtractOfflinePackage
unset ARRAY
exec 14<BPMExtractOfflinePackage.log
let count=0
bpmc="BPMExtractOfflinePackage not passed. See logs"
while read LINE <&14; do
if [ -n "$LINE" ]
then
if [[ ${LINE:1:32} = 'BPMExtractOfflinePackage passed.' ]]
then
bpmc="BPMExtractOfflinePackage passed successfully"
fi
ARRAY[$count]=${LINE}
((count++))
fi
done
exec 14>&-
echo
echo RESULT OF BPMExtractOfflinePackage
echo ==================================
echo $bpmc
echo
if [[ ${bpmc:0:45} = 'BPMExtractOfflinePackage not passed. See logs' ]]
then
for (( i=0;i<$count;i++ )); do
echo ${ARRAY[${i}]}
done
fi
echo
echo -n "Press Enter for exit > "
read
# Deleting of temporary files
rm BPMCreateOfflinePackage.log
rm BPMExtractOfflinePackage.log
rm SERVERS.log
rm PAPP.log
rm $PANAME.log
After starting of the script you'll see this dialog (for example):
admin@devserver:~> ./export.sh
*********************************************************************
* INTERACTIVE SCRIPT FOR IBM BPM OFFLINE INSTALLATION OF PAs *
*********************************************************************
Wait, please........
LIST OF YOUR PROCESS APPLICATIONS
=================================
0 PATEST
1 TSET
2 KGB
3 GTP
4 AFS
5 RPT
6 SDT
7 UATR
=================================
Enter the number of PA > 2
You changed PA KGB
LIST OF SNAPSHOTS
=================================
1 1.17.07
2 1.18.00
3 1.18.01
4 1.18.02
5 1.18.03
=================================
Enter the number of Snapshot > 5
You changed Snapshot 1.18.03 of PA KGB
LIST OF SERVERS
=================================
0 testserver
1 prodserver
=================================
Enter the number of Server > 1
You changed Snapshot 1.18.03 of PA KGB for installation on testserver
RESULT OF BPMCreateOfflinePackage
=================================
BPMCreateOfflinePackage passed successfully
RESULT OF BPMCreateOfflinePackage
=================================
BPMExtractOfflinePackage passed successfully
Press Enter for exit >
Enjoy!
Now I publish the shell script for exporting of a snapshot for offline installation.
#!/bin/sh
# V.Litvinov 2013
# Change this to your data
HOSTNAME=host <hostname of Process Center server/use DMserver for cluster>
PORT=8880 <SOAP port>
USER=admin
PASSWORD=password
DM_HOME=/opt/ibm/BPM80/profiles/ProcCtr01 <PC_PROFILE_HOME (use DM profile for custer)>
EXP_FOLDER=/ibm/export <Export folder>
echo
echo "***************************************************************"
echo "* INTERACTIVE SCRIPT FOR IBM BPM OFFLINE INSTALLATION OF PAs *"
echo "* (Export Part) *"
echo "***************************************************************"
echo
echo Wait, please........
echo
# Reading Information about PAs using wasadmin
$DM_HOME/bin/wsadmin.sh -lang jython -conntype SOAP -port $PORT -host $HOSTNAME -user $USER -password $PASSWORD -c "print AdminTask.BPMListProcessApplications('[]')" > PAPP.log
# Creating List of PAs (except Toolkits)
declare -a ARRAY
exec 10<PAPP.log
let count=0
while read LINE <&10; do
if [ -n "$LINE" ]
then
if [[ ${LINE:0:7} = 'Acronym' ]]
then
ARRAY[$count]=${LINE:9}
((count++))
fi
if [[ ${LINE:0:13} = 'Toolkit: true' ]]
then
ARRAY[$count-1]=''
count=$count-1
fi
fi
done
exec 10>&-
# Changing of working PA
echo LIST OF YOUR PROCESS APPLICATIONS
echo =================================
for (( i=0;i<$count;i++ )); do
echo $i ' ' ${ARRAY[${i}]}
done
echo =================================
echo -n "Enter the number of PA > "
read pa
PANAME=${ARRAY[${pa}]}
echo "You changed PA $PANAME"
# Reading Information about Snapshots using wasadmin
$DM_HOME/bin/wsadmin.sh -lang jython -conntype SOAP -port $PORT -host $HOSTNAME -user $USER -password $PASSWORD -c "print AdminTask.BPMShowProcessApplication('[-containerAcronym ${ARRAY[${pa}]}]')" > $PANAME.log
# Creating List of Snapshots of the current PA
unset ARRAY
exec 11<$PANAME.log
let count=0
while read LINE <&11; do
if [ -n "$LINE" ]
then
if [[ ${LINE:0:7} = 'Acronym' ]]
then
ARRAY[$count]=${LINE:9}
((count++))
fi
if [[ ${LINE:0:22} = 'State: State[Archived]' ]]
then
ARRAY[$count-1]=''
count=$count-1
fi
fi
done
exec 11>&-
echo
echo LIST OF SNAPSHOTS
echo =================================
for (( i=1;i<$count;i++ )); do
echo $i ' ' ${ARRAY[${i}]}
done
echo =================================
echo -n "Enter the number of Snapshot > "
read pa
SNNAME=${ARRAY[${pa}]}
echo "You changed Snapshot $SNNAME of PA $PANAME"
# Reading Information about Servers using wasadmin
$DM_HOME/bin/wsadmin.sh -lang jython -conntype SOAP -port $PORT -host $HOSTNAME -user $USER -password $PASSWORD -c "print AdminTask.BPMListServers('[]')" > SERVERS.log
# Creating List of Snapshots of the current PA
unset ARRAY
exec 12<SERVERS.log
let count=0
while read LINE <&12; do
if [ -n "$LINE" ]
then
if [[ ${LINE:0:6} = 'Name: ' ]]
then
ARRAY[$count]=${LINE:6}
((count++))
fi
if [[ ${LINE:0:14} = 'URL: corbaname' ]]
then
ARRAY[$count-1]=''
count=$count-1
fi
fi
done
exec 12>&-
echo
echo LIST OF SERVERS
echo =================================
for (( i=0;i<$count;i++ )); do
echo $i ' ' ${ARRAY[${i}]}
done
echo =================================
echo -n "Enter the number of Server > "
read pa
SERVNAME=${ARRAY[${pa}]}
echo "You changed Snapshot $SNNAME of PA $PANAME for installation on $SERVNAME"
# Creating Offline Package using wasadmin
$DM_HOME/bin/wsadmin.sh -lang jython -conntype SOAP -port $PORT -host $HOSTNAME -user $USER -password $PASSWORD -c "AdminTask.BPMCreateOfflinePackage ('[-containerAcronym $PANAME -containerSnapshotAcronym $SNNAME -containerTrackAcronym Main -serverName $SERVNAME]')" > BPMCreateOfflinePackage.log
# Verifing the result of BPMCreateOfflinePackage
unset ARRAY
exec 13<BPMCreateOfflinePackage.log
let count=0
bpmc="BPMCreateOfflinePackage not passed. See logs"
while read LINE <&13; do
if [ -n "$LINE" ]
then
if [[ ${LINE:1:31} = 'BPMCreateOfflinePackage passed.' ]]
then
bpmc="BPMCreateOfflinePackage passed successfully"
fi
ARRAY[$count]=${LINE}
((count++))
fi
done
exec 13>&-
echo
echo RESULT OF BPMCreateOfflinePackage
echo =================================
echo $bpmc
echo
if [[ ${bpmc:0:45} = 'BPMCreateOfflinePackage not passed. See logs' ]]
then
for (( i=0;i<$count;i++ )); do
echo ${ARRAY[${i}]}
done
fi
# Extracting Offline Package using wasadmin
$DM_HOME/bin/wsadmin.sh -lang jython -conntype SOAP -port $PORT -host $HOSTNAME -user $USER -password $PASSWORD -c "AdminTask.BPMExtractOfflinePackage ('[-containerAcronym $PANAME -containerSnapshotAcronym $SNNAME -containerTrackAcronym Main -serverName $SERVNAME -outputFile $EXP_FOLDER/$PANAME$SNNAME.zip]')" > BPMExtractOfflinePackage.log
# Verifing the result of BPMExtractOfflinePackage
unset ARRAY
exec 14<BPMExtractOfflinePackage.log
let count=0
bpmc="BPMExtractOfflinePackage not passed. See logs"
while read LINE <&14; do
if [ -n "$LINE" ]
then
if [[ ${LINE:1:32} = 'BPMExtractOfflinePackage passed.' ]]
then
bpmc="BPMExtractOfflinePackage passed successfully"
fi
ARRAY[$count]=${LINE}
((count++))
fi
done
exec 14>&-
echo
echo RESULT OF BPMExtractOfflinePackage
echo ==================================
echo $bpmc
echo
if [[ ${bpmc:0:45} = 'BPMExtractOfflinePackage not passed. See logs' ]]
then
for (( i=0;i<$count;i++ )); do
echo ${ARRAY[${i}]}
done
fi
echo
echo -n "Press Enter for exit > "
read
# Deleting of temporary files
rm BPMCreateOfflinePackage.log
rm BPMExtractOfflinePackage.log
rm SERVERS.log
rm PAPP.log
rm $PANAME.log
After starting of the script you'll see this dialog (for example):
admin@devserver:~> ./export.sh
*********************************************************************
* INTERACTIVE SCRIPT FOR IBM BPM OFFLINE INSTALLATION OF PAs *
*********************************************************************
Wait, please........
LIST OF YOUR PROCESS APPLICATIONS
=================================
0 PATEST
1 TSET
2 KGB
3 GTP
4 AFS
5 RPT
6 SDT
7 UATR
=================================
Enter the number of PA > 2
You changed PA KGB
LIST OF SNAPSHOTS
=================================
1 1.17.07
2 1.18.00
3 1.18.01
4 1.18.02
5 1.18.03
=================================
Enter the number of Snapshot > 5
You changed Snapshot 1.18.03 of PA KGB
LIST OF SERVERS
=================================
0 testserver
1 prodserver
=================================
Enter the number of Server > 1
You changed Snapshot 1.18.03 of PA KGB for installation on testserver
RESULT OF BPMCreateOfflinePackage
=================================
BPMCreateOfflinePackage passed successfully
RESULT OF BPMCreateOfflinePackage
=================================
BPMExtractOfflinePackage passed successfully
Press Enter for exit >
Enjoy!
No comments:
Post a Comment