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