diff options
Diffstat (limited to 'geo-replication/syncdaemon/gsyncd.py')
| -rw-r--r-- | geo-replication/syncdaemon/gsyncd.py | 25 | 
1 files changed, 15 insertions, 10 deletions
diff --git a/geo-replication/syncdaemon/gsyncd.py b/geo-replication/syncdaemon/gsyncd.py index b9ee5aec8c7..32e4eb7828d 100644 --- a/geo-replication/syncdaemon/gsyncd.py +++ b/geo-replication/syncdaemon/gsyncd.py @@ -27,12 +27,13 @@ from ipaddr import IPAddress, IPNetwork  from gconf import gconf  from syncdutils import FreeObject, norm, grabpidfile, finalize -from syncdutils import log_raise_exception, privileged, update_file +from syncdutils import log_raise_exception, privileged  from syncdutils import GsyncdError, select, set_term_handler  from configinterface import GConffile, upgrade_config_file  import resource  from monitor import monitor  from changelogagent import agent, Changelog +from gsyncdstatus import set_monitor_status, GeorepStatus  class GLogger(Logger): @@ -267,7 +268,7 @@ def main_i():      op.add_option('--socketdir', metavar='DIR')      op.add_option('--state-socket-unencoded', metavar='SOCKF',                    type=str, action='callback', callback=store_abs) -    op.add_option('--checkpoint', metavar='LABEL', default='') +    op.add_option('--checkpoint', metavar='LABEL', default='0')      # tunables for failover/failback mechanism:      # None   - gsyncd behaves as normal @@ -315,6 +316,8 @@ def main_i():                    action='callback', callback=store_local)      op.add_option('--delete', dest='delete', action='callback',                    callback=store_local_curry(True)) +    op.add_option('--status-get', dest='status_get', action='callback', +                  callback=store_local_curry(True))      op.add_option('--debug', dest="go_daemon", action='callback',                    callback=lambda *a: (store_local_curry('dont')(*a),                                         setattr( @@ -583,15 +586,8 @@ def main_i():              GLogger._gsyncd_loginit(log_file=gconf.log_file, label='conf')              if confdata.op == 'set':                  logging.info('checkpoint %s set' % confdata.val) -                gcnf.delete('checkpoint_completed') -                gcnf.delete('checkpoint_target')              elif confdata.op == 'del':                  logging.info('checkpoint info was reset') -                # if it is removing 'checkpoint' then we need -                # to remove 'checkpoint_completed' and 'checkpoint_target' too -                gcnf.delete('checkpoint_completed') -                gcnf.delete('checkpoint_target') -          except IOError:              if sys.exc_info()[1].errno == ENOENT:                  # directory of log path is not present, @@ -607,7 +603,7 @@ def main_i():      create = rconf.get('create')      if create:          if getattr(gconf, 'state_file', None): -            update_file(gconf.state_file, lambda f: f.write(create + '\n')) +            set_monitor_status(gconf.state_file, create)          return      go_daemon = rconf['go_daemon'] @@ -615,6 +611,15 @@ def main_i():      be_agent = rconf.get('agent')      rscs, local, remote = makersc(args) + +    status_get = rconf.get('status_get') +    if status_get: +        for brick in gconf.path: +            brick_status = GeorepStatus(gconf.state_file, brick) +            checkpoint_time = int(getattr(gconf, "checkpoint", "0")) +            brick_status.print_status(checkpoint_time=checkpoint_time) +        return +      if not be_monitor and isinstance(remote, resource.SSH) and \         go_daemon == 'should':          go_daemon = 'postconn'  | 
