cle_clock
Home > wikikonf >  was/actions/by kikonf > custservice







Custservice

print

Action : was.custservice   (Category : was, Name : custservice, By : kikonf)
Complete Name : was.custservice.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 custservice plugin : Creates a new Custom Service into the target Server

The following shows the main Source Code File for the Action : was.custservice

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 Custservice(wasAction):
    
    def extract(self, scope_attrs=None, name=None, **keywords):
        self_funct='extract'
        scope_id, scope_attrs, scope=self.getScope(scope_attrs=scope_attrs, indent=self.getIndent())
        self.verbose(scope_attrs, name=name)
        indent=self.getIndent() + 3*' '

        verbose('CustomService listing.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
        cs=split(AdminConfig.list('CustomService', scope_id))                
        for c in cs:
            custom_services=getShowAsDict(AdminConfig.show(c))
            cname=custom_services['displayName']

            if name!=None and name==cname \
            or name==None:             
                verbose('CustomService:' + cname + ' listed.', level=self.getVerbose(), ifLevel=3, indent=indent, logFile=self.getLogFile())
                
                attrs={}
                attrs['name']=cname
                attrs['enable']=custom_services['enable']
                attrs['class']=custom_services['classname']
                attrs['classpath']=custom_services['classpath']
                
                if custom_services.has_key('description') and custom_services['description']!=None:attrs['desc']=custom_services['description'][1:-1]
                else:attrs['desc']=None
                if attrs['desc']==DESIGN_NOTICE:attrs['desc']=None

                custsrv_node=self.newTop() #-- because in extract mode, each call returns a new blank top node.
                custsrv_node.setAttrs(**attrs) #-- creates a scope node.

                mkNodeScope(custsrv_node, scope_attrs) #-- creates a scope node.

                ps=split(custom_services['properties'])
                if len(ps)>0:properties_node=custsrv_node.newNode('properties')  
                for p in ps:
                    properties=getShowAsDict(AdminConfig.show(p))
                    attrs={}
                    attrs['name']=properties['name']
                    attrs['required']=properties['required']
                    attrs['value']=properties['value']
                    
                    if properties.has_key('description') and properties['description']!=None:attrs['desc']=properties['description'][1:-1]
                    else:attrs['desc']=None
                    if attrs['desc']==DESIGN_NOTICE:attrs['desc']=None
                    
                    verbose('Property:' + properties['name'] + ' listed.', level=self.getVerbose(), ifLevel=3, indent=indent + 3*' ')
                    properties_node.newNode('property', **attrs)    

    def remove(self, no_name, no_name_no_prefix):
        custservice_node = self.getTop()        
        custservice_attrs = custservice_node.getAttrs()
        scope_id, scope_attrs, scope=self.getScope(parent_node=custservice_node, indent=self.getIndent()) #-- Retreives scope
        
        # no_name/no_name_no_prefix
        name=custservice_attrs.name
        if no_name or no_name_no_prefix:name=None
        self.verbose(scope_attrs, name=name)
        indent=self.getIndent() + 3*' '
        
        self.rmvCustService(name=name, indent=indent)
        
    def inject(self):
        self_funct='inject'
        custservice_node = self.getTop()        
        custservice_attrs = custservice_node.getAttrs()
        scope_id, scope_attrs, scope=self.getScope(parent_node=custservice_node, indent=self.getIndent()) #-- Retreives scope
        
        self.verbose(scope_attrs, name=custservice_attrs.name)
        indent=self.getIndent() + 3*' '
        
        self.rmvCustService(custservice_attrs.name, indent=indent) #-- remove first

        cmdvalues=[]        
        cmdvalues.append(['displayName', custservice_attrs.name])
        cmdvalues.append(['enable', custservice_attrs.enable])
        cmdvalues.append(['classname', getattr(custservice_attrs, 'class')])
        cmdvalues.append(['classpath', custservice_attrs.classpath])
        
        if custservice_attrs.desc!=None:cmdvalues.append(['description', custservice_attrs.desc])
        else:cmdvalues.append(['description', DESIGN_NOTICE])

        # Creates
        verbose('CustomService:' + custservice_attrs.name + ' creating.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
        custservice=AdminConfig.create('CustomService', scope_id, cmdvalues)
        verbose('CustomService:' + custservice_attrs.name + ' created.', level=self.getVerbose(), ifLevel=3, indent=indent, logFile=self.getLogFile())
        
        #-- properties
        if custservice_node.hasNode('properties'):
            properties_node=custservice_node.getNode('properties')[0]
            self.runProps(properties_node, custservice, indent=indent + 3*' ')

    def runProps(self, properties_node, custservice, indent=None):
        scope_id, scope_attrs, scope=self.getScope()
                
        ps=properties_node.getNodes()
        for property_node in ps:
            property_attrs=property_node.getAttrs()

            cmdvalues=[]
            cmdvalues.append(['name', property_attrs.name])  
            cmdvalues.append(['required', property_attrs.required])
            cmdvalues.append(['value', property_attrs.value])
            
            if property_attrs.desc!=None:cmdvalues.append(['description', property_attrs.desc])
            else:cmdvalues.append(['description', DESIGN_NOTICE]) 

            verbose('Property creating.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
            propid=AdminConfig.create("Property", custservice, cmdvalues)
            verbose('Property:' + property_attrs.name + ' created.', level=self.getVerbose(), ifLevel=3, indent=indent, logFile=self.getLogFile())

    def rmvCustService(self, name=None, indent=None):
        scope_id, scope_attrs, scope=self.getScope()
        
        verbose('CustomService listing.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
        cs=split(AdminConfig.list('CustomService', scope_id))
        cname=None
        
        for c in cs:
            if name!=None:
                cname=AdminConfig.showAttribute(c, 'displayName')
            if name!=None and name==cname \
            or name==None:
                verbose('CustomServicee:' + cname + ' removing.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
                AdminConfig.remove(c)
                verbose('CustomService:' + cname + ' removed.', level=self.getVerbose(), ifLevel=3, indent=indent, logFile=self.getLogFile())

    def verbose(self, scope_attrs, name=None):
        scope=str(scope_attrs).replace("'", '')[1:-1]

        if name!=None:verbose('CustomService:' + name + ', at scope:' + scope + '.', level=self.getVerbose(), ifLevel=2, indent=self.getIndent())
        else:verbose('CustomServices at scope:' + scope + '.', level=self.getVerbose(), ifLevel=2, indent=self.getIndent())
							
(Source: <KIKONF_INSTALLATION_DIR>/plugins/actions/was/custservice/by/kikonf/custservice.py)


  • Line 1 to 3 say something , say something , say something
  • Line 10 to 17 say something , say something , say something , say something , say something
  • Line 20 to 25 say something



Trademarks :
  • "IBM", "WebSphere", "WebSphere Aplication Server", "WAS" are registred trademarks of International Business Machines Corporation.
  • "Java" and "JVM" are a registred trademarks of Oracle and/or its affiliates.
  • Other names may be trademarks of their respective owners.

Copyright © 2011 - Patrick Placidoux, Hélène Malamoud