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