Search code examples
webspherewarjythonwsadmin

IBM Websphere - wsadmin script for AutoDeployment


Can you please look into the below issue?

import time
node = AdminConfig.getid('/Node:node111/')
print node
print "sss" +AdminControl.queryNames('WebSphere:type=Server,*')
cell = AdminControl.getCell()
print " Cell name is --> "+ cell
warLoc='/home/test/PA_Test.war'
appName='PA_Test'
cellName=AdminControl.getCell()
print cellName
nodeName=AdminControl.getNode()
print "hello"
print " nodeName is --> "+ nodeName
appManager=AdminControl.queryNames('cell='+cellName+',node=node111,type=ApplicationManager,process=WebSphere_Portal,*')
print appManager
application = AdminConfig.getid("/Deployment:"+appName+"/")
print 'printing application name in next line'
print application
len(application)
print application
len(application)
var1 = len(application)
if var1:
   print "Application exists"
   print "before uninstall"
   AdminApp.uninstall('PA_Test')
   print "after uninstall"
   AdminConfig.save()
else:
   print "Application doesnot exist"
print "Before install"
print AdminApp.install(warLoc,'[-target default -usedefaultbindings -defaultbinding.virtual.host default_host]')
print "Done from My Side"
print "After install"
AdminConfig.save()
time.sleep(30)
AdminControl.invoke(appManager , 'startApplication',appName)
print "The script is completed."    

Below is the successful message:

 ADMA5016I: Installation of PA_Test.war154ed2178ed started.
 ADMA5058I: Application and module versions are validated with versions of deployment targets.
 ADMA5005I: The application PA_Test.war154ed2178ed is configured in the WebSphere Application Server repository.
 ADMA5005I: The application PA_Test.war154ed2178ed is configured in the WebSphere Application Server repository.
 ADMA5081I: The bootstrap address for client module is configured in the WebSphere Application Server repository.
 ADMA5053I: The library references for the installed optional package are created.
 ADMA5001I: The application binaries are saved in /opt/IBM/WebSphere/wp_profile/wstemp/Script154ed215c59/workspace/cells/inpudingpwmtst1Cell/applications/PA_Test.war154ed2178ed.ear/PA_Test.war154ed2178ed.ear

Now I am able to deploy the war but the file name is getting change to PA_Test.war154ed2178ed.ear but its should actually be PA_Test.ear. Can you please help how to change the current script?


Solution

  • Short answer:

    print AdminApp.install(warLoc, [
        '-appname', 'PA_Test.ear',
        '-target', 'default',
        '-usedefaultbindings',
        '-defaultbinding.virtual.host', 'default_host'
    ])
    

    Even shorter one: use WDR.

    You'll need an application manifest file PA_Test.wdra:

    PA_Test.ear pa.war
        target default
        usedefaultbindings
        defaultbinding.virtual.host default_host
    

    ... and Jython script to import this manifest:

    alreadyInstalled = 'PA_Test.ear' in AdminApp.list().splitlines()
    importApplicationManifest('PA_Test.wdra')
    save()
    sync()
    while AdminApp.isAppReady('PA_Test.ear') != 'true':
        time.sleep(10)
    if not alreadyInstalled:
        for appMgr in queryMBeans(type='ApplicationManager', process='WebSphere_Portal'):
            appMgr.startApplication('PA_Test.ear')
    

    Disclosure: I'm a contributor and maintainer of WDR