Created
September 18, 2014 11:55
-
-
Save DemkaAge/8b3c63f2d0683e5ceb02 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
import os | |
import time | |
from java.io import BufferedReader | |
from java.io import InputStreamReader | |
from java.lang import ProcessBuilder | |
from java.lang import System | |
def exists(appName): | |
appId = AdminConfig.getid("/Deployment:" + appName + "/") | |
return len(appId) > 0 | |
#endDef | |
def installEarFile(nodeName, serverName, appName,fileName): | |
print "---------------------------------------------------------------" | |
print " AdminApplication: Deploy application with -deployejb option" | |
print " Application name: " + appName | |
print " Ear file to deploy: " + fileName | |
print " Node name: " + nodeName | |
print " Server name: " + serverName | |
print "---------------------------------------------------------------" | |
opts = ["-appname", appName, "-node", nodeName, "-server", serverName, | |
"-deployejb -defaultbinding.virtual.host default_host -usedefaultbindings -deployws"] | |
#opts += mapRolesToUsers(server, app) | |
#opts += mapRunAsRolesToUsers(server, app) | |
AdminApp.install(fileName, opts) | |
#AdminApp.edit(appName, getEjbEnvMaps(server, app)) | |
AdminConfig.save() | |
return 1 #succeed | |
#endDef | |
def startApplicationOnSingleServer(cellName, nodeName, serverName, appName): | |
print "---------------------------------------------------------------" | |
print " AdminApplication: Start an application on a single server " | |
print " Application name: " + appName | |
print " Node name: " + nodeName | |
print " Server name: " + serverName | |
print " Cell name: " + cellName | |
print "---------------------------------------------------------------" | |
print " Query server for app status." | |
# Query server | |
result = AdminApp.isAppReady(appName) | |
counter = 0 | |
while (result == "false"): | |
counter = counter +1 | |
#TimeOut | |
if counter >=20: | |
print " TimeOut. App not ready. Please run manual." | |
return -1 | |
### Wait 5 seconds before checking again | |
time.sleep(5) | |
result = AdminApp.isAppReady(appName) | |
print " Try count " + str(counter) | |
print " Application is ready." | |
# Query application MBean on specific process | |
runningApp = AdminControl.queryNames("type=Application,name="+appName+",cell="+cellName+",node="+nodeName+",process="+serverName+",*") | |
if(len(runningApp) <= 0): | |
print " Starting application..." | |
# Query application manager mbean | |
appManager = AdminControl.queryNames( | |
"cell=" + cellName + ",node=" + nodeName + ",type=ApplicationManager,process=" + serverName + ",*") | |
AdminControl.invoke(appManager, "startApplication", appName) | |
return 1 # succeed | |
#endDef | |
print "---------------------------Welcome-----------------------------" | |
artifactDirectory = sys.argv[0] | |
serverName = sys.argv[1] | |
nodeName = sys.argv[2] | |
cellName = sys.argv[3] | |
for file in os.listdir(artifactDirectory): | |
if file.endswith(".ear"): | |
artifact = file | |
splitName = os.path.splitext(artifact) | |
appName = splitName[0] | |
extension = splitName[1] | |
print " Artifact directory: " + artifactDirectory | |
print " Artifact: " + artifact | |
print " ServerName: " + serverName | |
print " NodeName: " + nodeName | |
print " CellName: " + cellName | |
print " AppName: " + appName | |
print " Extension: " + extension | |
print "---------------------------------------------------------------" | |
if exists(appName): | |
print " App exists. Updating..." | |
#AdminApp.uninstall(appName) | |
opts = ["-operation update -contents", artifactDirectory + "/" + artifact] | |
AdminApp.update(appName,"app",opts) | |
AdminConfig.save() | |
else: | |
print " App not exists. Installing..." | |
installEarFile(nodeName, serverName,appName,artifactDirectory + "/" + artifact) | |
startApplicationOnSingleServer(cellName,nodeName,serverName,appName) | |
print "---------------------------END----------------------------------" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment