| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- from java.util import HashMap
- from java.util import HashSet
- from java.util import ArrayList
- from java.io import FileInputStream
- from com.bea.wli.sb.util import Refs
- from com.bea.wli.config.customization import Customization
- from com.bea.wli.sb.management.importexport import ALSBImportOperation
- import sys
- #=======================================================================================
- # Entry function to deploy project configuration and resources
- # into a ALSB domain
- #=======================================================================================
- def importToALSBDomain():
- try:
- SessionMBean = None
- print 'Attempting to import :', importJar, "on ALSB Admin Server"
- theBytes = readBinaryFile(importJar)
- print 'Read file', importJar
- sessionName = createSessionName()
- print 'Created session', sessionName
- SessionMBean = getSessionManagementMBean(sessionName)
- print 'SessionMBean started session'
- ALSBConfigurationMBean = findService(String("ALSBConfiguration.").concat(sessionName), "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")
- print "ALSBConfiguration MBean found", ALSBConfigurationMBean
- ALSBConfigurationMBean.uploadJarFile(theBytes)
- print 'Jar Uploaded'
- if project == "None":
- print 'No project specified, additive deployment performed'
- alsbJarInfo = ALSBConfigurationMBean.getImportJarInfo()
- alsbImportPlan = alsbJarInfo.getDefaultImportPlan()
- alsbImportPlan.setPassphrase(passphrase)
- alsbImportPlan.setPreserveExistingEnvValues(true)
- importResult = ALSBConfigurationMBean.importUploaded(alsbImportPlan)
- SessionMBean.activateSession(sessionName, "Complete import without customization using wlst")
- else:
- print 'ALSB project', project, 'will get overlaid'
- alsbJarInfo = ALSBConfigurationMBean.getImportJarInfo()
- alsbImportPlan = alsbJarInfo.getDefaultImportPlan()
- alsbImportPlan.setPassphrase(passphrase)
- operationMap=HashMap()
- operationMap = alsbImportPlan.getOperations()
- print
- print 'Default importPlan'
- printOpMap(operationMap)
- set = operationMap.entrySet()
- alsbImportPlan.setPreserveExistingEnvValues(true)
- #boolean
- abort = false
- #list of created ref
- createdRef = ArrayList()
- for entry in set:
- ref = entry.getKey()
- op = entry.getValue()
- #set different logic based on the resource type
- type = ref.getTypeId
- if type == Refs.SERVICE_ACCOUNT_TYPE or type == Refs.SERVICE_PROVIDER_TYPE:
- if op.getOperation() == ALSBImportOperation.Operation.Create:
- print 'Unable to import a service account or a service provider on a target system', ref
- abort = true
- # elif op.getOperation() == ALSBImportOperation.Operation.Create:
- else:
- #keep the list of created resources
- print 'ref: ',ref
- createdRef.add(ref)
- if abort == true :
- print 'This jar must be imported manually to resolve the service account and service provider dependencies'
- SessionMBean.discardSession(sessionName)
- raise
- print
- print 'Modified importPlan'
- printOpMap(operationMap)
- importResult = ALSBConfigurationMBean.importUploaded(alsbImportPlan)
- printDiagMap(importResult.getImportDiagnostics())
- if importResult.getFailed().isEmpty() == false:
- print 'One or more resources could not be imported properly'
- raise
- #customize if a customization file is specified
- #affects only the created resources
- if customFile != "None" :
- print 'Loading customization File', customFile
- print 'Customization applied to the created resources only', createdRef
- iStream = FileInputStream(customFile)
- customizationList = Customization.fromXML(iStream)
- filteredCustomizationList = ArrayList()
- setRef = HashSet(createdRef)
- # apply a filter to all the customizations to narrow the target to the created resources
- for customization in customizationList:
- print customization
- newcustomization = customization.clone(setRef)
- filteredCustomizationList.add(newcustomization)
- ALSBConfigurationMBean.customize(filteredCustomizationList)
- SessionMBean.activateSession(sessionName, "Complete import with customization using wlst")
- print "Deployment of : " + importJar + " successful"
- except:
- print "Unexpected error:", sys.exc_info()[0]
- if SessionMBean != None:
- SessionMBean.discardSession(sessionName)
- raise
- #=======================================================================================
- # Utility function to print the list of operations
- #=======================================================================================
- def printOpMap(map):
- set = map.entrySet()
- for entry in set:
- op = entry.getValue()
- print op.getOperation(),
- ref = entry.getKey()
- print ref
- print
- #=======================================================================================
- # Utility function to print the diagnostics
- #=======================================================================================
- def printDiagMap(map):
- set = map.entrySet()
- for entry in set:
- diag = entry.getValue().toString()
- print diag
- print
- #=======================================================================================
- # Utility function to read a binary file
- #=======================================================================================
- def readBinaryFile(fileName):
- file = open(fileName, 'rb')
- bytes = file.read()
- return bytes
- #=======================================================================================
- # Utility function to create an arbitrary session name
- #=======================================================================================
- def createSessionName():
- sessionName = String("SessionScript"+Long(System.currentTimeMillis()).toString())
- return sessionName
- #=======================================================================================
- # Utility function to load a session MBeans
- #=======================================================================================
- def getSessionManagementMBean(sessionName):
- SessionMBean = findService("SessionManagement", "com.bea.wli.sb.management.configuration.SessionManagementMBean")
- SessionMBean.createSession(sessionName)
- return SessionMBean
- # IMPORT script init
- try:
- # import the service bus configuration
- wlsUser = '<%= @wlsUser %>'
- password = '<%= @password %>'
- machine = '<%= @address %>'
- portNumber = '<%= @port %>'
- importJar = '<%= @artifact %>'
- customFile = '<%= @customFile %>'
- passphrase = "osb"
- project = '<%= @project %>'
- connect(wlsUser,password,'t3://'+machine+':'+portNumber)
- domainRuntime()
- importToALSBDomain()
- except:
- print "Unexpected error: ", sys.exc_info()[0]
- dumpStack()
- raise
|