import sys,java
from java.util import Properties
from java.io import FileInputStream
from org.python.modules import time
lineSep = java.lang.System.getProperty('line.separator')
def appinstall(appfile,apppath,cluster,map_modules_cluster,map_modules_vh,mapresref):
global AdminApp
global AdminConfig 
global AdminControl 
print " Getting Cell Name .."
cell = AdminControl.getCell()
print " Cell name is --> "+ cell
print "  ----------------------------------------------------------------------------------------- "
###############################################################################################
## checking for the existence of application , is application exists then updating it and if it does not exists then installing it 
application = AdminConfig.getid("/Deployment:"+appfile+"/")
if len(application) > 0:
print "  ----------------------------------------------------------------------------------------- " 
print "  Application ---> " +appfile+ " is installed  on cluster --> " + cluster
print "  ----------------------------------------------------------------------------------------- "
print " uninstalling application --> " + appfile 
AdminApp.uninstall(appfile)
print "  ----------------------------------------------------------------------------------------- "
print "application uninstalled .. "
AdminConfig.save()
print "  ----------------------------------------------------------------------------------------- "
print "  Installing App on cluster --> " + cluster 
print AdminApp.install(apppath , '[-appname '+appfile+' -cell '+cell+' -cluster '+cluster+' -MapModulesToServers '+map_modules_cluster+' -MapWebModToVH '+map_modules_vh+']')
print " ----------------------------------------------------------------------------- " 
print "  Application --> " +appfile+ " installed on cluster--> " +cluster
print " ----------------------------------------------------------------------------- "
print "  Saving Configuration " 
print " ----------------------------------------------------------------------------- "
AdminConfig.save()
print " ----------------------------------------------------------------------------- " 
application = AdminConfig.getid("/Deployment:"+appfile+"/")
if len(application) > 0:
print "  ----------------------------------------------------------------------------------------- "
print "  Application ---> " +appfile+ " is successfully installed  on cluster --> " + cluster
print "  ----------------------------------------------------------------------------------------- "
#####################Waiting for the application to expand and then starting the server################
print " Sleeping for 60 seconds after deploying application "
time.sleep(60)
app =  AdminApp.isAppReady(appfile)
while (app == 'false'):
app =  AdminApp.isAppReady(appfile)
if (app == 'true'):
print " Expansion of ear completed "
###########################Syncronizing Node######################
nodelist = AdminTask.listManagedNodes().split(lineSep)
for nodename in nodelist :
print "  Syncronizing node..........  "
####################Identifying the ConfigRepository MBean and assign it to variable######################
repo = AdminControl.completeObjectName('type=ConfigRepository,process=nodeagent,node='+ nodename +',*')
AdminControl.invoke(repo, 'refreshRepositoryEpoch')
sync =  AdminControl.completeObjectName('cell='+ cell +',node='+ nodename +',type=NodeSync,*')
AdminControl.invoke(sync , 'sync')
print "  ----------------------------------------------------------------------------------------- "
print " Full Resyncronization completed "
print "  
arglen=len(sys.argv)
num_exp_args=2
if (arglen != num_exp_args):
print "Three arguments are required. Two arguments should be a properties file."
print "  ----------------------------------------------------------------------------------------- "
sys.exit(-1)
propFile=sys.argv[1]
properties=Properties();
try:
properties.load(FileInputStream(propFile))
print "  ----------------------------------------------------------------------------------------- "
print "Succesfully read property file "+propFile
print "  ----------------------------------------------------------------------------------------- "
except:
print "Cannot read property file "+propFile
sys.exit(-1)
print "  ----------------------------------------------------------------------------------------- "
apppath = sys.argv[0]
cluster = str(properties.getProperty("ENV_CLUSTER_NAME"))
map_modules_cluster = str(properties.getProperty("ENV_PCS_MAP_MODULES_TO_SERVER"))
map_modules_vh = str(properties.getProperty("PCS_MAP_MODULES_TO_VIRTUAL_HOST"))
appfile = str(properties.getProperty("ENV_PCS_APP_NAME"))
mapresref = str(properties.getProperty("MAP_RESOURCE_REF"))
appinstall(appfile,apppath,cluster,map_modules_cluster,map_modules_vh,mapresref)
 
 
Thanks a lot for sharing your knowledge.
ReplyDeleteBest Regards,
Vamsi Krishna Kunasani
vamsi.kunasani@gmail.com
good one!!
ReplyDeleteWhat could be a valid value for the "mapresref"??
ReplyDeleteThnx
commendable doc '' We appreciate and are thankful for the same
ReplyDeleteGreat job! Do you only supply the property file as the argument?
ReplyDeleteyes . you need to supply 2 argument . one is the ear full path from where it will pick up the ear file to deploy and then the property file.
ReplyDeletecan u please post me the properties file as well..
ReplyDelete