|
|
|
|
|
Sharedlib
Action : was.sharedlib (Category : was, Name : sharedlib, By : kikonf)
Complete Name : was.sharedlib.by.kikonf Version : 5.0 License : Modified BSD License Purpose of the was category : Easy to customize. This category use in background the wsadmin command in jython mode (through AdminConfig, AdminControl and AdminTask), to drive WebSphere Application Server ® configuration. You can use it to manage the whole WebSphere ® architecture. Purpose of this sharedlib plugin : Creates a shared library The following shows the main Source Code File for the Action : was.sharedlib 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.was.tools import *
class Sharedlib(wasAction):
def extract(self, scope_attrs=None, name=None, prefix=None, **keywords):
scope_id, scope_attrs, scope=self.getScope(scope_attrs=scope_attrs, indent=self.getIndent())
self.verbose(scope_attrs, name=name, prefix=prefix)
indent=self.getIndent() + 3*' '
from os import path
verbose('Library listing.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
shs=getStartByNameAsDict(split( AdminConfig.getid(self.getScopeCP() + '/Library:/') ))
for shname in shs.keys():
if not(prefix!=None and name!=None and shname==prefix + '_' + name
or prefix==None and name!=None and name==shname \
or prefix!=None and name==None and shname.startswith(prefix) \
or prefix==None and name==None):continue
sharedlibs=getShowAsDict(AdminConfig.show(shs[shname]))
verbose('Library:' + shname + ' retreived.', level=self.getVerbose(), ifLevel=2, indent=indent)
cps=sharedlibs['classPath']
cps=cps.split(';')
sharedlib_node=self.newTop() #-- because in extract mode, each call returns a new blank top node.
desc=None
if sharedlibs.has_key('description') and sharedlibs['description']!=None:desc=sharedlibs['description'][1:-1]
if desc==DESIGN_NOTICE:desc==None
_name=shname
if prefix!=None:_name=shname.split(prefix + '_')[1]
sharedlib_node.setAttrs(name=_name, desc=desc)
mkNodeScope(sharedlib_node, scope_attrs, isUnique=True) #-- creates a scope node.
classpath_node=sharedlib_node.newNode('classpath')
for cp in cps:
classpath_node.addText(cp)
def remove(self, no_name, no_name_no_prefix):
sharedlib_node = self.getTop()
sharedlib_attrs = sharedlib_node.getAttrs()
scope_id, scope_attrs, scope=self.getScope(parent_node=sharedlib_node, indent=self.getIndent()) #-- Retreives scope
indent=self.getIndent() + 3*' '
# no_name/no_name_no_prefix
prefix=sharedlib_attrs.prefix
name=sharedlib_attrs.name
if no_name or no_name_no_prefix:name=None
if no_name_no_prefix:prefix=None
self.verbose(scope_attrs, name=name, prefix=prefix)
indent=self.getIndent() + 3*' '
self.rmvSharedLib(name=name, prefix=sharedlib_attrs.prefix, indent=indent)
def inject(self):
self_funct='inject'
sharedlib_node = self.getTop()
sharedlib_attrs = sharedlib_node.getAttrs()
scope_id, scope_attrs, scope=self.getScope(parent_node=sharedlib_node, indent=self.getIndent()) #-- Retreives scope
self.verbose(scope_attrs, name=sharedlib_attrs.name, prefix=sharedlib_attrs.prefix)
indent=self.getIndent() + 3*' '
self.rmvSharedLib(name=sharedlib_attrs.name, prefix=sharedlib_attrs.prefix, indent=indent) # remove first
#-- name
if sharedlib_attrs.prefix==None:name=sharedlib_attrs.name
else:name=sharedlib_attrs.prefix + '_' + sharedlib_attrs.name
if not sharedlib_node.hasNode('classpath'):raise xception.kikonfActionSystemException(self, self_funct, 'Tag Classptah is required !')
cps=sharedlib_node.getNode('classpath')[0].getText()
if len(cps)==0:raise xception.kikonfActionSystemException(self, self_funct, 'Classptah is required !')
elif len(cps)==1:classpath=cps[0]
else:classpath=';'.join(cps)
if sharedlib_attrs.desc!=None:desc=sharedlib_attrs.desc
else:desc=DESIGN_NOTICE
verbose('Library:' + name + ' creating.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
AdminConfig.create("Library", scope_id, 'name', name], ['classPath', classpath], ['description', desc)
verbose('Library:' + name + ' created.', level=self.getVerbose(), ifLevel=3, indent=indent)
def rmvSharedLib(self, name, prefix=None, indent=None):
scope_id, scope_attrs, scope=self.getScope()
verbose('Library retreiving.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
shs=getStartByNameAsDict(split( AdminConfig.getid(self.getScopeCP() + '/Library:/') ))
for shname in shs.keys():
if prefix!=None and shname.startswith(prefix) \
or prefix==None and name!=None and name==shname \
or prefix==None and name==None:
verbose('Library:' + shname + ' removing.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
AdminConfig.remove(shs[shname])
verbose('Library:' + shname + ' removed.', level=self.getVerbose(), ifLevel=3, indent=indent, logFile=self.getLogFile())
def verbose(self, scope_attrs, name=None, prefix=None):
scope=str(scope_attrs).replace("'", '')[1:-1]
if name!=None:verbose('Libraries:' + name + ', at scope:' + scope + '.', level=self.getVerbose(), ifLevel=2, indent=self.getIndent())
elif prefix!=None:verbose('Libraries under prefix:' + prefix + ', at scope:' + scope + '.', level=self.getVerbose(), ifLevel=2, indent=self.getIndent())
else:verbose('Libraries at scope:' + scope + '.', level=self.getVerbose(), ifLevel=2, indent=self.getIndent())
Trademarks :
|