def control_service(self, service, action): """ remotely start/stop/restart/status a service, using CLIENT_SCRIPT """ from options import VERBOSE if service not in ('londiste', 'ticker', 'pgbouncer'): raise Exception, "Error: unknown service '%s'" % service args = [action, service] if service in ('londiste', 'ticker') and not self.replication: raise Exception, "Error: no replication in your setup" if service == 'pgbouncer': bargs = args + [self.pgbouncer_port] out = utils.run_client_script(self.host, bargs, self.use_sudo) if (action == 'status' or VERBOSE) and out: print out return if service == 'londiste': l = londiste.londiste(self.replication, self.section, self.dbname, self.dated_dbname, self.tmpdir, clean = True) for t, host in l.tickers(): targs = [ action, 'ticker', os.path.basename( t.get_config_filename() ) ] out = utils.run_client_script(host, targs, self.use_sudo) if (action == 'status' or VERBOSE) and out: print out for p, host in l.providers(): pargs = args + [ p, os.path.basename( l.get_config_filename(p) ) ] out = utils.run_client_script(host, pargs, self.use_sudo) if (action == 'status' or VERBOSE) and out: print out return if service == 'ticker': l = londiste.londiste(self.replication, self.section, self.dbname, self.dated_dbname, self.tmpdir, clean = True) for t, host in l.tickers(): targs = args + [ os.path.basename( t.get_config_filename() ) ] out = utils.run_client_script(self.host, targs, self.use_sudo) if (action == 'status' or VERBOSE) and out: print out return
def prepare_then_run_londiste(self): """ prepare .ini files for all concerned providers """ if self.replication: l = londiste.londiste(self.replication, self.section, self.dbname, self.dated_dbname, self.tmpdir, clean=True) # first the tickers for t, host in l.tickers(): filename = t.write() if filename: t.start(host, filename, self.use_sudo) yield t.section, filename # now the londiste daemons for p, host in l.providers(): filename = l.write(p) l.start(p, host, filename, self.use_sudo) yield p, filename return
def get_nodata_tables(self): """ return a list of tables to avoid restoring """ if self.replication and self.dated_dbname: l = londiste.londiste(self.replication, self.section, self.dbname, self.dated_dbname, self.tmpdir) return l.get_nodata_tables() return
def prepare_then_run_londiste(self): """ prepare .ini files for all concerned providers """ if self.replication: l = londiste.londiste(self.replication, self.section, self.dbname, self.dated_dbname, self.tmpdir, clean = True) # first the tickers for t, host in l.tickers(): filename = t.write() if filename: t.start(host, filename, self.use_sudo) yield t.section, filename # now the londiste daemons for p, host in l.providers(): filename = l.write(p) l.start(p, host, filename, self.use_sudo) yield p, filename return
def control_service(self, service, action): """ remotely start/stop/restart/status a service, using CLIENT_SCRIPT """ from options import VERBOSE if service not in ('londiste', 'ticker', 'pgbouncer'): raise Exception, "Error: unknown service '%s'" % service args = [action, service] if service in ('londiste', 'ticker') and not self.replication: raise Exception, "Error: no replication in your setup" if service == 'pgbouncer': bargs = args + [self.pgbouncer_port] out = utils.run_client_script(self.host, bargs, self.use_sudo) if (action == 'status' or VERBOSE) and out: print out return if service == 'londiste': l = londiste.londiste(self.replication, self.section, self.dbname, self.dated_dbname, self.tmpdir, clean=True) for t, host in l.tickers(): targs = [ action, 'ticker', os.path.basename(t.get_config_filename()) ] out = utils.run_client_script(host, targs, self.use_sudo) if (action == 'status' or VERBOSE) and out: print out for p, host in l.providers(): pargs = args + [p, os.path.basename(l.get_config_filename(p))] out = utils.run_client_script(host, pargs, self.use_sudo) if (action == 'status' or VERBOSE) and out: print out return if service == 'ticker': l = londiste.londiste(self.replication, self.section, self.dbname, self.dated_dbname, self.tmpdir, clean=True) for t, host in l.tickers(): targs = args + [os.path.basename(t.get_config_filename())] out = utils.run_client_script(self.host, targs, self.use_sudo) if (action == 'status' or VERBOSE) and out: print out return