|
|
|
Jms
Action : wls.jms (Category : wls, Name : jms, By : kikonf)
Complete Name : wls.jms.by.kikonf Version : 4.0 License : Modified BSD License Purpose of the wls category : Easy to customize. This category use in background the wlst command in jython mode, to drive WebLogic Server ® configuration. You can use it to manage the whole WebLogic ® architecture. Purpose of this jms plugin : Creates JMS QCFS and Queues The following shows the main Source Code File for the Action : wls.jms Toggle lines ## Copyright (c) 2008, Patrick Germain Placidoux ## All rights reserved. ## ## This file is part of Kikonf Public Software. ## ## Kikonf Public Software is released under the modified BSD License, ## which should accompany it or any part of it in the file "COPYING". ## If you do not have this file you can access the license ## through the WWW at http://www.kikonf.org/license/bsd/license.txt. ## ## Home: http://www.kikonf.org ## Contact: kikonf@gmx.com from actions.wls.tools import * class Jms(wlsAction): def extract(self, scope_attrs=None, prefix=None, **keywords): self_funct='extract' scope_cp, scope_attrs, scope=self.getScope(scope_attrs=scope_attrs, indent=self.getIndent()) self.verbose(scope_attrs, prefix=prefix) indent=self.getIndent() + 3*' ' verbose('JMSSystemResource listing.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile()) cmo=cd('/') rscs=cmo.getJMSSystemResources() for rsc in rscs: rname=rsc.getName() if prefix!=None and rname.startswith(prefix) \ or prefix==None and name!=None and rname==name \ or prefix==None and name==None: if not checkTarget(rsc, scope):continue # - module verbose('JMSSystemResource' + rname + ' retreived.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile()) cmo=cd('/JMSSystemResources/' + rname) # - Sub Deployments sbs=cmo.getSubDeployments() if len(sbs)>1: verbose('JMSSystemResource:' + rname + ', more than one Sub Deployment instances found. Skipped !', level=self.getVerbose(), ifLevel=3, indent=indent, logFile=self.getLogFile()) continue sb=sbs[0] # - JMSserver srv=sb.getTargets()[0] if srv==None: verbose('JMSSystemResource/SubDeployment:' + rname + '/' + sb.getName() + ', no target JMS server found. Skipped !', level=self.getVerbose(), ifLevel=3, indent=indent, logFile=self.getLogFile()) continue srv=srv.getName() verbose('JMSserver:' + srv + ' retreived.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile()) desc=cmo.getNotes() if desc==DESIGN_NOTICE:desc=None jms_node=self.newTop() #-- because in extract mode, each call returns a new blank top node. _name=rname if prefix!=None:_name=rname.split(prefix + '_')[1] jms_node.setAttrs(name=_name, srv=srv, create_srv='false', prefix=prefix, desc=desc) mkNodeScope(jms_node, scope_attrs, isUnique=True) #-- creates a scope node. cmo=cd('/JMSSystemResources/'+ rname + '/JMSResource/' + rname) # - qcfs qcfs=cmo.getConnectionFactories() if len(qcfs)>0: verbose('ConnectionFactories:', level=self.getVerbose(), ifLevel=4, indent=indent + 3*' ', logFile=self.getLogFile()) qcfs_node=jms_node.newNode('qcfs') for qcf in qcfs: desc=qcf.getNotes() if desc==DESIGN_NOTICE:desc=None attrs={ 'name':qcf.getName(), 'jndi_name':qcf.getJNDIName(), 'desc':desc } verbose('ConnectionFactory:' + attrs['name'] + ' retreived.', level=self.getVerbose(), ifLevel=4, indent=indent + 3*' ', logFile=self.getLogFile()) if prefix!=None and attrs['name'].startswith(prefix):attrs['name']=attrs['name'].split(prefix + '_')[1] qcfs_node.newNode('qcf', **attrs) # - queues queues=cmo.getQueues() if len(queues)>0: verbose('Queues:', level=self.getVerbose(), ifLevel=4, indent=indent + 3*' ', logFile=self.getLogFile()) queues_node=jms_node.newNode('queues') for q in queues: desc=qcf.getNotes() if desc==DESIGN_NOTICE:desc=None attrs={ 'name':qcf.getName(), 'jndi_name':qcf.getJNDIName(), 'desc':desc, 'expiry':q.getIncompleteWorkExpirationTime() } verbose('Queue:' + attrs['name'] + ' retreived.', level=self.getVerbose(), ifLevel=4, indent=indent + 3*' ', logFile=self.getLogFile()) if prefix!=None and attrs['name'].startswith(prefix):attrs['name']=attrs['name'].split(prefix + '_')[1] queues_node.newNode('queue', **attrs) def remove(self, no_name, no_name_no_prefix): jms_node=self.getTop() jms_attrs = jms_node.getAttrs() scope_cp, scope_attrs, scope=self.getScope(parent_node=jms_node, indent=self.getIndent()) self.verbose(scope_attrs, prefix=jms_attrs.prefix) indent=self.getIndent() + 3*' ' self.rmvJMSmodule(name=jms_attrs.name, prefix=jms_attrs.prefix, indent=indent) if jms_attrs.create_srv=='true':self.rmvJMSserver(jms_attrs.srv, indent=indent) def inject(self): self_funct='inject' jms_node = self.getTop() jms_attrs = jms_node.getAttrs() scope_cp, scope_attrs, scope=self.getScope(parent_node=jms_node, indent=self.getIndent()) self.verbose(scope_attrs, prefix=jms_attrs.prefix) indent=self.getIndent() + 3*' ' #-- Removing first self.rmvJMSmodule(name=jms_attrs.name, prefix=jms_attrs.prefix, indent=indent) if jms_attrs.create_srv=='true':self.rmvJMSserver(jms_attrs.srv, indent=indent) cmo=cd('/') tg=getMBean(scope_cp) # - srv if jms_attrs.create_srv=='true':jmsrv=cmo.createJMSServer(jms_attrs.srv) else:jmsrv=cmo.lookupJMSServer(jms_attrs.srv) if jmsrv==None:raise xception.kikonfActionSystemException(self, self_funct, 'The JMS server:' + jms_attrs.srv + ', do not exist ! Advice: Use the Attribute "create_srv" to force its creation !' ) jmsrv.addTarget(tg) # - module if jms_attrs.prefix!=None:mname=jms_attrs.prefix + '_' + jms_attrs.name else:mname=jms_attrs.name jmsysrsc = cmo.createJMSSystemResource(mname) # -- desc if jms_attrs.desc==None:desc=DESIGN_NOTICE else:desc=jms_attrs.desc jmsysrsc.setNotes(desc) # -- target jmsysrsc.addTarget(tg) sbname=mname + '_sb' sb = jmsysrsc.createSubDeployment(sbname) # -- desc sb.setNotes(DESIGN_NOTICE) # -- target sb.addTarget(jmsrv) jmsrsc = jmsysrsc.getJMSResource() # - qcfs verbose('ConnectionFactories:', level=self.getVerbose(), ifLevel=3, indent=indent, logFile=self.getLogFile()) if jms_node.hasNode('qcfs'): for qcf_node in jms_node.getNode('qcfs')[0].getNodes(): qcf_attrs = qcf_node.getAttrs() if jms_attrs.prefix!=None:qcf_name=jms_attrs.prefix + '_' + qcf_attrs.name else:qcf_name=qcf_attrs.name verbose('ConnectionFactory:' + qcf_name + ' creating.', level=self.getVerbose(), ifLevel=4, indent=indent + 3*' ', logFile=self.getLogFile()) qcf = jmsrsc.createConnectionFactory(qcf_name) # -- desc if qcf_attrs.desc==None:desc=DESIGN_NOTICE else:desc=qcf_attrs.desc sb.setNotes(desc) qcf.setJNDIName(qcf_attrs.jndi_name) qcf.setSubDeploymentName(sbname) verbose('ConnectionFactory:' + qcf_name + ' created.', level=self.getVerbose(), ifLevel=3, indent=indent + 3*' ', logFile=self.getLogFile()) # - queues verbose('Queues:', level=self.getVerbose(), ifLevel=3, indent=indent, logFile=self.getLogFile()) if jms_node.hasNode('queues'): for queue_node in jms_node.getNode('queues')[0].getNodes(): queue_attrs = queue_node.getAttrs() if jms_attrs.prefix!=None:qname=jms_attrs.prefix + '_' + queue_attrs.name else:qname=queue_attrs.name verbose('ConnectionFactory:' + qname + ' creating.', level=self.getVerbose(), ifLevel=3, indent=indent + 3*' ', logFile=self.getLogFile()) q = jmsrsc.createQueue(qname) # -- desc if queue_attrs.desc==None:desc=DESIGN_NOTICE else:desc=queue_attrs.desc sb.setNotes(desc) q.setJNDIName(queue_attrs.jndi_name) q.setSubDeploymentName(sbname) verbose('ConnectionFactory:' + qname + ' created.', level=self.getVerbose(), ifLevel=3, indent=indent + 3*' ', logFile=self.getLogFile()) def rmvJMSmodule(self, name=None, prefix=None, indent=None): scope_cp, scope_attrs, scope=self.getScope() verbose('JMSSystemResource listing.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile()) cmo=cd('/') rscs=cmo.getJMSSystemResources() for rsc in rscs: rname=rsc.getName() if prefix!=None and rname.startswith(prefix) \ or prefix==None and name!=None and rname==name \ or prefix==None and name==None: if not checkTarget(rsc, scope):continue verbose('JMSSystemResource:' + rname + ' removing.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile()) cmo.destroyJMSSystemResource(rsc) verbose('JMSSystemResource:' + rname + ' removed.', level=self.getVerbose(), ifLevel=3, indent=indent, logFile=self.getLogFile()) def rmvJMSserver(self, name, indent=None): scope_cp, scope_attrs, scope=self.getScope() verbose('JMSserver listing.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile()) cmo=cd('/') srv=cmo.lookupJMSServer(name) srv=cmo.lookupJMSServer('myjmserver') if srv!=None: verbose('JMSServer:' + name + ' removing.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile()) cmo.destroyJMSServer(srv) verbose('JMSServer:' + name + ' removed.', level=self.getVerbose(), ifLevel=3, indent=indent, logFile=self.getLogFile()) def verbose(self, scope_attrs, name=None, prefix=None, logFile=None): scope=str(scope_attrs).replace("'", '')[1:-1] if prefix==None:verbose('MQQueueConnectionFactories,MQQueues,WMQActivationSpecs at scope:' + scope + '.', level=self.getVerbose(), ifLevel=2, indent=self.getIndent()) else:verbose('MQQueueConnectionFactory,MQQueue,WMQActivationSpecs under prefix:' + prefix + ', at scope:' + scope + '.', level=self.getVerbose(), ifLevel=2, indent=self.getIndent())
Trademarks :
|