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()
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)
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
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)
class Invalid(object): name = os.name address = get_address_from_string('localhost:80')