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







Sync

print

Action : was.sync   (Category : was, Name : sync, By : kikonf)
Complete Name : was.sync.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 sync plugin : Syncronize one node

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

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 Sync(wasAction):
    
    def run(self):
        self_funct='run'
        import time

        sync_node=self.getTop()        
        sync_attrs=sync_node.getAttrs()
        
        if not sync_node.hasNode('scopes'):raise xception.kikonfActionSystemException(self, self_funct, 'Node scopes is required !')
        scopes_node=sync_node.getNode('scopes')[0]
        if not scopes_node.hasNode('scope'):raise xception.kikonfActionSystemException(self, self_funct, 'Node scopes/scope is required !')
        scope_nodes=scopes_node.getNode('scope')
        self.verbose(scope_nodes)
        indent=self.getIndent() + 3*' '
        
        if sync_node.hasNode('watch_dog'):
            watch_dog_attrs=sync_node.getNode('watch_dog')[0].getAttrs()
            loop=watch_dog_attrs.loop
            sleep=watch_dog_attrs.sleep
            do_raise=watch_dog_attrs.do_raise
        else:
            loop=10
            sleep=5
            do_raise

        for scope_node in scope_nodes:
            scope_attrs=scope_node.getAttrs()
            if scope_attrs.node==None:raise xception.kikonfActionSystemException(self, self_funct, 'Attribute: node is requiered for tag: scopes/scope, with value:' + str(scope_node.getdAttrs) + ' !')

            verbose('Node MBean retreiving.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
            ns = AdminControl.completeObjectName('type=NodeSync,node=' + scope_attrs.node + ',*')
            
            verbose('Node MBean invoking sync.', level=self.getVerbose(), ifLevel=4, indent=indent, logFile=self.getLogFile())
            AdminControl.invoke(ns, 'sync')            
            verbose('Synchronization invoked on node:' + scope_attrs.node + '.', level=self.getVerbose(), ifLevel=2, indent=indent)
            

            # - Node
            if sync_attrs.wait_node=='true':
                is_sync='false'
                verbose('Waiting for Node:' + scope_attrs.node + ' is ready.', level=self.getVerbose(), ifLevel=2, indent=indent)
                try:
                    verbose('First check: Calling isNodeSynchronized.', level=self.getVerbose(), ifLevel=2, indent=indent + 3*' ')
                    is_sync=AdminControl.invoke(ns, 'isNodeSynchronized')
                except:
                    if self.getVerbose()>=5:
                        import sys
                        etype, evalue=sys.exc_info()[:2]
                        print etype, evalue

                i=0
                while (is_sync=='false') and i < loop:
                    verbose('Passe:' + str(i) + ', Sleeping:' + str(sleep) + ' on loop:' + str(loop) + '.', level=self.getVerbose(), ifLevel=2, indent=indent + 3*' ')
                    time.sleep(sleep)
                    
                    verbose('Invoking isNodeSynchronized.', level=self.getVerbose(), ifLevel=4, indent=indent + 3*' ', logFile=self.getLogFile())
                    try:
                        is_sync=AdminControl.invoke(ns, 'isNodeSynchronized')
                    except:
                        if self.getVerbose()>=5:
                            import sys
                            etype, evalue=sys.exc_info()[:2]
                            print etype, evalue
                    i+=1
            
                if is_sync=='false':
                    mes='Unable to get ready for Node:' + scope_attrs.node + ' !'
                    if do_raise=='true':raise xception.kikonfActionSystemException(self, self_funct, mes)
                    else:print mes
            
            # - Application
            if sync_attrs.wait_application!=None:
                is_sync='false'
                verbose('Waiting for Application:' + sync_attrs.wait_application + ' ready:', level=self.getVerbose(), ifLevel=2, indent=indent)
                try:
                    verbose('First check: Calling isAppReady.', level=self.getVerbose(), ifLevel=2, indent=indent + 3*' ')
                    is_sync=AdminApp.isAppReady(sync_attrs.wait_application, 'true')
                except:
                    if self.getVerbose()>=5:
                        import sys
                        etype, evalue=sys.exc_info()[:2]
                        print etype, evalue

                i=0    
                while (is_sync=='false') and i < loop:
                    
                    verbose('Passe:' + str(i) + ', Sleeping:' + str(sleep) + ' on loop:' + str(loop) + '.', level=self.getVerbose(), ifLevel=2, indent=indent + 3*' ')
                    time.sleep(sleep)
                    
                    verbose('Calling isAppReady.', level=self.getVerbose(), ifLevel=4, indent=indent + 3*' ', logFile=self.getLogFile())
                    try:
                        is_sync=AdminApp.isAppReady(sync_attrs.wait_application, 'true')
                    except:
                        if self.getVerbose()>=5:
                            import sys
                            etype, evalue=sys.exc_info()[:2]
                            print etype, evalue
                    i+=1
            
                if is_sync=='false':
                    mes='Unable to get ready for Application:' + sync_attrs.wait_application + ' !'
                    if do_raise=='true':raise xception.kikonfActionSystemException(self, self_funct, mes)
                    else:print mes

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