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







Websrv

print

Action : was.websrv   (Category : was, Name : websrv, By : kikonf)
Complete Name : was.websrv.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 websrv plugin : Creates a WebSphere Configuration for a WebServer

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

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 Websrv(wasAction):

    def extract(self, scope_attrs=None, **keywords):
        self_funct='extract'
        self.verbose(scope_attrs)
        if scope_attrs['node']==None or scope_attrs['server']==None:raise xception.kikonfActionSystemException(self, self_funct, 'Scope: Attributes "node" and "server" are required !')        
        self.verbose(scope_attrs)
        indent=self.getIndent() + 3*' '

        verbose('WebServer listing.', level=self.getVerbose(), ifLevel=4, indent=indent)        
        ws=getStartByNameAsDict(split( AdminConfig.list('WebServer', AdminConfig.getid('/Node:' + scope_attrs['node'])) ))
        
        for wname in ws.keys():
            if wname==scope_attrs['server']:
                webservers=getShowAsDict(AdminConfig.show(ws[wname]))
                verbose('WebServer:' + wname + ' listed.', level=self.getVerbose(), ifLevel=3, indent=indent)        
            
                websrv_node=self.newTop() # because in extract, this return a blank cache node.
                websrv_node.setAttrs()   # feeding it with attributes.
                mkNodeScope(websrv_node, scope_attrs, isUnique=True)            ## tag: scope

                self.extWebSrv(websrv_node, webservers, indent=indent)

    def remove(self, no_name, no_name_no_prefix):
        self_funct='inject'
        websrv_node = self.getTop()
        websrv_attrs = websrv_node.getAttrs()
        if not websrv_node.hasNode('scope'):raise xception.kikonfActionSystemException(self, self_funct, 'Node scope is required !') 
        scope_attrs=websrv_node.getNode('scope')[0].getAttrs()
        self.verbose(scope_attrs)
        indent=self.getIndent() + 3*' '
    
        self.rmvWebsrv(scope_attrs, indent=indent)
        
    def inject(self):
        self_funct='inject'
        websrv_node = self.getTop()
        websrv_attrs = websrv_node.getAttrs()
        if not websrv_node.hasNode('scope'):raise xception.kikonfActionSystemException(self, self_funct, 'Node scope is required !') 
        scope_attrs=websrv_node.getNode('scope')[0].getAttrs()
        self.verbose(scope_attrs)
        indent=self.getIndent() + 3*' '

        # - remove first.
        self.rmvWebsrv(scope_attrs, indent=indent)
        
        # Specified paths
        if websrv_node.hasNode('files'):
            files_attrs=jvm_node.getNode('files')[0].getdAttrs()
            if websrv_attrs.conf_path!=None or websrv_attrs.log_path!=None:raise xception.kikonfActionSystemException(self, self_funct, 'Tag:websrv, if tag:files is guiven Attributes:conf_path and log_path cannot be guiven !' )
            
            conf_file=files_attrs.conf_file
            access_file=files_attrs.access_file
            error_file=files_attrs.error_file

            plg_conf_file=files_attrs.plg_conf_file
            plg_key_file=files_attrs.plg_key_file
            plg_log_file=files_attrs.plg_log_file

        # Generic paths
        else:
            if websrv_attrs.conf_path==None or websrv_attrs.log_path==None:raise xception.kikonfActionSystemException(self, self_funct, 'Tag:websrv, both Attributes:conf_path and log_path are required if tag: files is not guiven ! Your values conf_path:' + websrv_attrs.conf_path + ', log_path:' + websrv_attrs.log_path + '.' )
            
            conf_file=websrv_attrs.conf_path + '/httpd.conf'
            access_file=websrv_attrs.log_path + '/access_log'
            error_file=websrv_attrs.log_path + '/error_log'

            plg_conf_file=websrv_attrs.conf_path + '/plugin-cfg.xml'
            plg_key_file=websrv_attrs.conf_path + '/plugin-key.kdb'
            plg_log_file=websrv_attrs.log_path + '/http_plugin.log'
        
        
        # - create Webserver
        cmdvalues=[]
        cmdvalues.append(['name', scope_attrs.server])
        srvcfgs=[]
        cmdvalues.append(['serverConfig', srvcfgs])
        srvcfgs.append(['webInstallRoot', self.getCAttr('software_ihs_home')])
        srvcfgs.append(['configurationFile', conf_file]) # was6:configurationFilename: ATTENTION!
        srvcfgs.append(['accessLogfile', access_file])   # was6:logFilenameAccess
        srvcfgs.append(['errorLogfile', error_file])     # was6:logFilenameError
        srvcfgs.append(['webAppMapping', 'NONE'])        # was6:absent
        verbose('WebServer:' + scope_attrs.server +' creating.', level=self.getVerbose(), ifLevel=4, indent=indent)        
        cmdvalues=trsToAdminTask(cmdvalues)
        ws=AdminTask.createWebServer(scope_attrs.node, cmdvalues)
        verbose('WebServer:' + scope_attrs.server +' created.', level=self.getVerbose(), ifLevel=3, indent=indent)        

        # - create plugin
        cmdvalues=[]
        cmdvalues.append(['PluginInstallRoot', self.getCAttr('software_ihs_home') + '/Plugin'])
        cmdvalues.append(['RemoteConfigFilename', plg_conf_file])
        cmdvalues.append(['RemoteKeyRingFilename', plg_key_file])
        cmdvalues.append(['LogFilename', plg_log_file])
        cmp=split(AdminConfig.showAttribute(ws, 'components'))[0]
        pps=split(AdminConfig.showAttribute(cmp, 'pluginProperties'))[0]
        verbose('pluginProperties modifying.', level=self.getVerbose(), ifLevel=4, indent=indent)        
        AdminConfig.modify(pps, cmdvalues)
        verbose('pluginProperties modified.', level=self.getVerbose(), ifLevel=3, indent=indent)        
        
    def rmvWebsrv(self, scope_attrs, indent=None):
        self_funct='rmvWebsrv'

        sv=AdminConfig.getid('/Cell:' + self.getCell() + '/Node:' + scope_attrs.node + '/Server:' + scope_attrs.server + '/')
        if sv=='':return        
        server_type=AdminConfig.showAttribute(sv, 'serverType')
        if server_type!='WEB_SERVER':raise xception.kikonfActionSystemException(self, self_funct, 'Wrong Server type found:' + server_type + ', expected Server type:WEB_SERVER ! Wont remove.') 
        
        verbose('WebServer:' + scope_attrs.server + ' removing.', level=self.getVerbose(), ifLevel=4, indent=indent)        
        AdminConfig.remove(sv)
        verbose('WebServer:' + scope_attrs.server + ' removed.', level=self.getVerbose(), ifLevel=3, indent=indent)        

    def extWebSrv(self, parent_node, webservers, indent=None):
        from os import path
        if path.normpath(webservers['webserverInstallRoot'])!=path.normpath(self.getCAttr('software_ihs_home')):
            print indent + ' Found WebServer:' + webservers['name'] + ' supporting an unknown binary root:' + webservers['webserverInstallRoot'] + '. Known binary root is:' + self.getCAttr('software_ihs_home') + '. Skipped.'
        attrs={}
        
        # - retreive webserver
        attrs['conf_file']=path.normpath(webservers['configurationFilename'])
        attrs['access_file']=path.normpath(webservers['logFilenameAccess'])
        attrs['error_file']=path.normpath(webservers['logFilenameError'])

        # - retreive plugin
        plugin_props=getShowAsDict(AdminConfig.show(split(webservers['pluginProperties'])[0]))
        attrs['plg_conf_file']=path.normpath(plugin_props['RemoteConfigFilename'])
        attrs['plg_key_file']=path.normpath(plugin_props['RemoteKeyRingFilename'])
        attrs['plg_log_file']=path.normpath(plugin_props['LogFilename'])
        
        parent_node.newNode('files', **attrs)

    def verbose(self, scope_attrs):
        scope=str(scope_attrs).replace("'", '')[1:-1]
        
        verbose('WebServers at scope:' + scope + '.', level=self.getVerbose(), ifLevel=2, indent=self.getIndent())
							
(Source: <KIKONF_INSTALLATION_DIR>/plugins/actions/was/websrv/by/kikonf/websrv.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