|
|
|
|
|
Session
Action : was.session (Category : was, Name : session, By : kikonf)
Complete Name : was.session.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 session plugin : Tune a Session Manager The following shows the main Source Code File for the Action : was.session 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 Session(wasAction):
def extract(self, scope_attrs=None, **keywords):
self_funct='extract'
self.verbose(scope_attrs)
dct={'server': None, 'node': None, 'application': None, 'war': None}
dct.update(scope_attrs)
scope_attrs=dct
scope_id, scope_attrs, scope=self.getScope(scope_attrs=scope_attrs, indent=self.getIndent())
indent=self.getIndent() + 3*' '
if scope_attrs.has_key('application') and scope_attrs['application']!=None:
verbose('deployedObject retreiving.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
dep=AdminConfig.showAttribute(scope_id, 'deployedObject')
if scope_attrs['war']==None:
cfgs=split(AdminConfig.showAttribute(dep, 'configs'))
if len(cfgs)==0:
xception.kikonfActionInformation(self, self_funct, 'Application:' + scope_attrs['application'] + ' has no specific Session Management definition.').warn(self.getVerbose())
return
else:
mods=split(AdminConfig.showAttribute(dep, 'modules'))
uris=[]
found=False
for mod in mods:
uri=AdminConfig.showAttribute(mod, 'uri')
uris.append(uri)
if uri==scope_attrs['war']:
found=True
break
if not found:raise xception.kikonfActionSystemException(self, self_funct, 'Web Module:' + scope_attrs['war'] + ', of Application:' + scope_attrs['application'] + ' not found ! Found uris are:' + str(uris) + '.')
cfgs=split(AdminConfig.showAttribute(mod, "configs"))
if len(cfgs)==0:
xception.kikonfActionInformation(self, self_funct, 'Web Module:' + scope_attrs['war'] + ', of Application:' + scope_attrs['application'] + ' has no specific Session Management definition.').warn(self.getVerbose())
return
sm=AdminConfig.showAttribute(cfgs[0], "sessionManagement")
else:
verbose('WebContainer listing.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
wc = AdminConfig.list('WebContainer', scope_id)
verbose('SessionManager listing.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
sm = AdminConfig.list('SessionManager', wc)
sessmgrs=getShowAsDict(AdminConfig.show(sm))
verbose('sessionManagement retreived.', level=self.getVerbose(), ifLevel=2, indent=self.getIndent())
session_node=self.newTop() #-- because in extract mode, each call returns a new blank top node.
attrs={
'enable':sessmgrs['enable'],
'do_cookies':sessmgrs['enableCookies'], # Tag: session
'do_ssl_tracking':sessmgrs['enableSSLTracking'],
'do_security':sessmgrs['enableSecurityIntegration'],
'do_url_rewriting':sessmgrs['enableUrlRewriting'],
'max_wait':sessmgrs['maxWaitTime']
}
session_node.setAttrs(**attrs)
mkNodeScope(session_node, scope_attrs, isUnique=True) #-- creates a scope node.
# Tag: tuning
tunings=getShowAsDict(AdminConfig.show(AdminConfig.showAttribute(sm, 'tuningParams')))
attrs={
'allow_overflow':tunings['allowOverflow'],
'invalidation_timeout':tunings['invalidationTimeout'],
'max_in_memory':tunings['maxInMemorySessionCount'],
'schedule_invalidation':tunings['scheduleInvalidation']
}
session_node.newNode('tuning', **attrs)
# Tag: cookie
cookies=getShowAsDict(AdminConfig.show(AdminConfig.showAttribute(sm, 'defaultCookieSettings')))
attrs={
'name':cookies['name'],
'path':cookies['path'],
'maximum_age':cookies['maximumAge'],
'secure':cookies['secure']
}
session_node.newNode('cookie', **attrs)
def inject(self):
self_funct='inject'
session_node = self.getTop()
session_attrs = session_node.getAttrs()
scope_id, scope_attrs, scope=self.getScope(parent_node=session_node, indent=self.getIndent()) #-- Retreives scope
self.verbose(scope_attrs)
indent=self.getIndent() + 3*' '
if scope_attrs['application']!=None:
dep=AdminConfig.showAttribute(scope_id, 'deployedObject')
if scope_attrs['war']==None:
cfgs=split(AdminConfig.showAttribute(dep, 'configs'))
else:
mods=split(AdminConfig.showAttribute(dep, 'modules'))
uris=[]
found=False
for mod in mods:
uri=AdminConfig.showAttribute(mod, 'uri')
uris.append(uri)
if uri==scope_attrs['war']:
found=True
break
if not found:raise xception.kikonfActionSystemException(self, self_funct, 'Web Module:' + scope_attrs['war'] + ', of Application:' + scope_attrs['application'] + ' not found ! Found uris:' + str(uris) + '.')
cfgs=split(AdminConfig.showAttribute(mod, 'configs'))
# Destroy previous
for cfg in cfgs:AdminConfig.remove(cfg)
else:
verbose('WebContainer listing.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
wc = AdminConfig.list('WebContainer', scope_id)
verbose('SessionManager listing.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
sm = AdminConfig.list('SessionManager', wc)
cmdvalues=[] # Tag: session
if scope_attrs['server']==None:
cmdvalues.append(['enable', session_attrs.enable])
cmdvalues.append(['enableCookies', session_attrs.do_cookies])
cmdvalues.append(['enableProtocolSwitchRewriting', 'false'])
cmdvalues.append(['enableSSLTracking', session_attrs.do_ssl_tracking])
cmdvalues.append(['enableSecurityIntegration', session_attrs.do_security])
cmdvalues.append(['enableUrlRewriting', session_attrs.do_url_rewriting])
cmdvalues.append(['maxWaitTime', session_attrs.max_wait])
cmdvalues.append(['sessionPersistenceMode', 'NONE'])
tps=[] # Tag: tuning
cmdvalues.append(['tuningParams', tps])
if not session_node.hasNode('tuning'):raise xception.kikonfActionSystemException(self, self_funct, 'Tag: tuning is required ! Advice: at least add a dummy "<tuning/>" tag into your action file.')
tuning_node=session_node.getNode('tuning')[0]
tuning_attrs = tuning_node.getAttrs()
tps.append(['allowOverflow', tuning_attrs.allow_overflow])
tps.append(['invalidationTimeout', tuning_attrs.invalidation_timeout])
tps.append(['maxInMemorySessionCount', tuning_attrs.max_in_memory])
tps.append(['scheduleInvalidation', tuning_attrs.schedule_invalidation])
cks=[] # Tag: Cookie
cmdvalues.append(['defaultCookieSettings', cks])
if not session_node.hasNode('cookie'):raise xception.kikonfActionSystemException(self, self_funct, 'Tag: cookie is required ! Advice: at least add a dummy "<cookie/>" tag into your action file.')
cookie_node=session_node.getNode('cookie')[0]
cookie_attrs = cookie_node.getAttrs()
cks.append(['name', cookie_attrs.name])
cks.append(['path', cookie_attrs.path])
cks.append(['maximumAge', cookie_attrs.maximum_age])
cks.append(['secure', cookie_attrs.secure])
# Creating
verbose('sessionManagement modifying.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
if scope_attrs['war']!=None:
cfgs=split(AdminConfig.showAttribute(mod, "configs"))
for config in cfgs:AdminConfig.remove(config)
AdminConfig.create('ApplicationConfig', mod, 'sessionManagement', cmdvalues, 'configs')
elif scope_attrs['application']!=None:
cfgs=split(AdminConfig.showAttribute(dep, 'configs'))
for config in cfgs:AdminConfig.remove(config)
AdminConfig.create('ApplicationConfig', dep, 'sessionManagement', cmdvalues, 'configs')
else:
AdminConfig.modify(sm, cmdvalues)
verbose('sessionManagement modified.', level=self.getVerbose(), ifLevel=3, indent=indent)
def verbose(self, scope_attrs):
scope=str(scope_attrs).replace("'", '')[1:-1]
verbose('Session at scope:' + scope + '.', level=self.getVerbose(), ifLevel=2, indent=self.getIndent())
Trademarks :
|