Exemple #1
0
def start():
    for service in settings['services']:
        name = service['name']
        type = service['type']
        service_class = misc.get_rto_by_name(service['class'])

        if type == 'TCPListener':
            address = misc.get_address_from_string(service['address'])
            worker_processes = service['worker_processes']
            worker_threads = int(service['worker_threads'])
            svc = service_class(name, address, worker_processes,
                                    worker_threads)
        elif type == 'ScheduledTask':
            interval = int(service['interval'])
            svc = service_class(name, interval)

        # add parameters
        if 'parameters' in service:
            svc.parameters = service['parameters']

        services.services_list.append(svc)

    # start services
    for service in services:
        service.start()
Exemple #2
0
def start():
    for service in settings['services']:
        name = service['name']
        type = service['type']
        service_class = misc.get_rto_by_name(service['class'])

        if type == 'TCPListener':
            address = misc.get_address_from_string(service['address'])
            worker_processes = service['worker_processes']
            worker_threads = int(service['worker_threads'])
            svc = service_class(name, address, worker_processes,
                                worker_threads)
        elif type == 'ScheduledTask':
            interval = int(service['interval'])
            svc = service_class(name, interval)

        # add parameters
        if 'parameters' in service:
            svc.parameters = service['parameters']

        services.services_list.append(svc)

    # start services
    for service in services:
        service.start()
Exemple #3
0
    def start(self):
        def event_notify(a, b, c):
            if b == db.DB_EVENT_REP_MASTER:
                self.master = self.local_site
                # notify sub-processes
                services.notify(('NEW_MASTER', self.local_site))
                self.broadcast(MgtMessage('REP_NEW_MASTER', self.local_site))
                logger.info('REP: Node elected as new MASTER')
            elif b == db.DB_EVENT_REP_STARTUPDONE:
                self.client_startup_done = True
                logger.info('REP: Replication client startup is finished')

        self.env.set_event_notify(event_notify)

        #if hasattr(db, 'DB_REP_CONF_BULK'):
        #    self.env.rep_set_config(db.DB_REP_CONF_BULK, 1)
        self.env.repmgr_set_local_site(*self.local_site.address)
        self.env.rep_set_priority(self.config['priority'])
        #self.env.rep_set_nsites(self.config['nsites'])
        if 'ack_policy' in self.config and \
                hasattr(db, self.config['ack_policy']):
            self.env.repmgr_set_ack_policy(
                getattr(db, self.config['ack_policy']))

        if 'site_address' in self.config:
            # join an existing site
            site_address = misc.get_address_from_string(
                self.config['site_address'])
            self.join_site(site_address)

        # start replication manager
        self.env.repmgr_start(self.config['worker_threads'], self.role)
Exemple #4
0
    def __init__(self, env, config):
        self.env = env
        self.client_startup_done = False
        self.config = config

        address = misc.get_address_from_string(self.config['address'])
        if 'management' in services:
            mgt_address = services['management'].addr
        else:
            mgt_address = None
        if 'main' in services:
            req_address = services['main'].addr
        else:
            req_address = None
        self.local_site = Site(address, mgt_address, req_address)

        if self.config['priority'] == 0:
            self.role = db.DB_REP_CLIENT
        else:
            role = self.config.get('role', 'CLIENT')
            self.role = getattr(db, 'DB_REP_%s' % role)

        if self.role == db.DB_REP_ELECTION:
            logger.info(
                'REP: Starting replication manager and calling for election')
        elif self.role == db.DB_REP_CLIENT:
            logger.info('REP: Starting replication manager as a client')
        elif self.role == db.DB_REP_MASTER:
            logger.info('REP: Starting replication manager as MASTER')

        if self.role == db.DB_REP_MASTER:
            self.master = self.local_site
Exemple #5
0
        elif opt in ('-u', '--uninstall'):
            command = 'UNINSTALL'
        elif opt in ('-l', '--reload'):
            command = 'RELOAD'
            data = arg
        elif opt in ('-t', '--siteinfo'):
            command = 'SITE_INFO'
else:
    usage()

if not command or (command != 'DB_RECOVER' and not address):
    usage()

try:
    if address:
        address = misc.get_address_from_string(address)
except:
    sys.exit('Invalid server address...')

if sys.version_info[0] == 2:
    # python 2.6
    input_ = raw_input
else:
    # python 3
    input_ = input

# construct request object
if command in ('DB_BACKUP', 'DB_RESTORE', 'PACKAGE', 'INSTALL', 'UNINSTALL'):
    if not (file):
        usage()
    msg = management.MgtMessage(command, file)
        elif opt in ('-u', '--uninstall'):
            command = 'UNINSTALL'
        elif opt in ('-l', '--reload'):
            command = 'RELOAD'
            data = arg
        elif opt in ('-t', '--siteinfo'):
            command = 'SITE_INFO'
else:
    usage()

if not command or (command != 'DB_RECOVER' and not address):
    usage()

try:
    if address:
        address = misc.get_address_from_string(address)
except:
    sys.exit('Invalid server address...')

if sys.version_info[0] == 2:
    # python 2.6
    input_ = raw_input
else:
    # python 3
    input_ = input

# construct request object
if command in ('DB_BACKUP', 'DB_RESTORE', 'PACKAGE', 'INSTALL', 'UNINSTALL'):
    if not(file):
        usage()
    msg = management.MgtMessage(command, file)
Exemple #7
0
class Invalid(object):
    name = os.name
    address = get_address_from_string('localhost:80')