Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
    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
Esempio n. 4
0
    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
Esempio n. 5
0
    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
Esempio n. 6
0
    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