def start(self): if not self.running: LOG.debug('Starting mysql-proxy') pid = os.fork() if pid == 0: os.setsid() pid = os.fork() if pid != 0: os._exit(0) os.chdir('/') os.umask(0) import resource # Resource usage information. maxfd = resource.getrlimit(resource.RLIMIT_NOFILE)[1] if (maxfd == resource.RLIM_INFINITY): maxfd = 1024 for fd in range(0, maxfd): try: os.close(fd) except OSError: pass os.open('/dev/null', os.O_RDWR) os.dup2(0, 1) os.dup2(0, 2) try: os.execl(self.bin_path, 'mysql-proxy', '--defaults-file=' + CONFIG_FILE_PATH) except Exception: os._exit(255) initdv2.wait_sock(self.sock)
def start(self): env = { 'RABBITMQ_PID_FILE': '/var/run/rabbitmq/pid', 'RABBITMQ_MNESIA_BASE': '/var/lib/rabbitmq/mnesia' } run_detached(RABBITMQ_SERVER, args=['-detached'], env=env) initdv2.wait_sock(self.socks[0])
def _start_stop_reload(self, action): ''' XXX: Temporary ugly hack (Ubuntu 1004 upstart problem - Job is already running)''' args = [self.initd_script] \ if isinstance(self.initd_script, basestring) \ else list(self.initd_script) args.append(action) # SCALARIZR-1851 debug { #env = os.environ.copy() #env['DEBIAN_SCRIPT_DEBUG'] = '1' # } out, err, returncode = system2(args, close_fds=True, preexec_fn=os.setsid, raise_exc=False) if returncode and ( \ 'Job is already running' not in err and \ 'percona' not in node.__node__['behavior']): raise InitdError("Popen failed with error: %s" % (err, )) if action == 'restart': if err and 'stop: Job has already been stopped: mysql' in err: return True else: LOG.debug('waiting for mysql process') wait_until(lambda: MYSQLD_PATH in system2( ('ps', '-G', DEFAULT_OWNER, '-o', 'command', '--no-headers' ))[0], timeout=10, sleep=1) if action == 'start' and linux.os.ubuntu and linux.os['version'] >= ( 10, 4): try: LOG.debug('waiting for mysql process') wait_until(lambda: MYSQLD_PATH in system2( ('ps', '-G', DEFAULT_OWNER, '-o', 'command', '--no-headers' ))[0], timeout=10, sleep=1) LOG.debug('waiting for debian-start finish') out = system2( 'ps axo pid,command --noheaders | grep /etc/mysql/debian-start', shell=True)[0].strip() if out: pid = out.split('\n')[0].split(' ')[0] wait_until(lambda: not os.path.exists('/proc/%s' % pid), sleep=1) except: self._start_stop_reload('restart') return True if self.socks and (action != "stop" and not (action == 'reload' and not self.running)): for sock in self.socks: wait_sock(sock) return True
def start(self): hostname = RABBIT_HOSTNAME_TPL % __node__['server_index'] nodename = NODE_HOSTNAME_TPL % hostname env = {'RABBITMQ_PID_FILE': '/var/run/rabbitmq/pid', 'RABBITMQ_MNESIA_BASE': '/var/lib/rabbitmq/mnesia', 'RABBITMQ_NODENAME': nodename} run_detached(RABBITMQ_SERVER, args=['-detached'], env=env) initdv2.wait_sock(self.socks[0])
def start(self): log.debug('Starting RabbitMQ service') hostname = RABBIT_HOSTNAME_TPL % __node__['server_index'] nodename = NODE_HOSTNAME_TPL % hostname env = { 'RABBITMQ_PID_FILE': '/var/run/rabbitmq/pid', 'RABBITMQ_MNESIA_BASE': '/var/lib/rabbitmq/mnesia', 'RABBITMQ_NODENAME': nodename } run_detached(__rabbitmq__['rabbitmq-server'], args=['-detached'], env=env) initdv2.wait_sock(self.socks[0])
def _start_stop_reload(self, action): ''' XXX: Temporary ugly hack (Ubuntu 1004 upstart problem - Job is already running)''' args = [self.initd_script] \ if isinstance(self.initd_script, basestring) \ else list(self.initd_script) args.append(action) out, err, returncode = system2(args, close_fds=True, preexec_fn=os.setsid, raise_exc=False) if returncode and ( \ 'Job is already running' not in err and \ 'percona' not in node.__node__['behavior']): raise InitdError("Popen failed with error: %s" % (err,)) if action == 'restart': if err and 'stop: Job has already been stopped: mysql' in err: return True else: LOG.debug('waiting for mysql process') wait_until(lambda: MYSQLD_PATH in system2(('ps', '-G', DEFAULT_OWNER, '-o', 'command', '--no-headers'))[0] , timeout=10, sleep=1) if action == 'start' and linux.os.ubuntu and linux.os['version'] >= (10, 4): try: LOG.debug('waiting for mysql process') wait_until(lambda: MYSQLD_PATH in system2(('ps', '-G', DEFAULT_OWNER, '-o', 'command', '--no-headers'))[0] , timeout=10, sleep=1) LOG.debug('waiting for debian-start finish') out = system2('ps axo pid,command --noheaders | grep /etc/mysql/debian-start', shell=True)[0].strip() if out: pid = out.split('\n')[0].split(' ')[0] wait_until(lambda: not os.path.exists('/proc/%s' % pid), sleep=1) except: self._start_stop_reload('restart') return True if self.socks and (action != "stop" and not (action == 'reload' and not self.running)): for sock in self.socks: wait_sock(sock) return True
class MysqlInitScript(initdv2.ParametrizedInitScript): socket_file = None cli = None sgt_pid_path = '/tmp/mysqld-sgt.pid' @lazy def __new__(cls, *args, **kws): obj = super(MysqlInitScript, cls).__new__(cls, *args, **kws) cls.__init__(obj) return obj def __init__(self): if 'gce' == node.__node__['platform'].name: self.ensure_pid_directory() self.mysql_cli = MySQLClient() if disttool.is_ubuntu() and disttool.version_info() >= (10, 4): initd_script = ('/usr/sbin/service', 'mysql') else: initd_script = firstmatched( os.path.exists, ('/etc/init.d/mysqld', '/etc/init.d/mysql')) pid_file = None try: out = system2("my_print_defaults mysqld", shell=True, silent=True) m = re.search("--pid[-_]file=(.*)", out[0], re.MULTILINE) if m: pid_file = m.group(1) m = re.search("--socket=(.*)", out[0], re.MULTILINE) if m: self.socket_file = m.group(1) except: pass initdv2.ParametrizedInitScript.__init__( self, SERVICE_NAME, initd_script, pid_file, socks=[initdv2.SockParam(MYSQL_DEFAULT_PORT, timeout=3600)]) def _start_stop_reload(self, action): ''' XXX: Temporary ugly hack (Ubuntu 1004 upstart problem - Job is already running)''' try: args = [self.initd_script] \ if isinstance(self.initd_script, basestring) \ else list(self.initd_script) args.append(action) out, err, returncode = system2(args, close_fds=True, preexec_fn=os.setsid) except PopenError, e: if 'Job is already running' not in str(e): raise InitdError("Popen failed with error %s" % (e, )) if action == 'restart': if err and 'stop: Job has already been stopped: mysql' in err: return True else: LOG.debug('waiting for mysql process') wait_until(lambda: MYSQLD_PATH in system2( ('ps', '-G', DEFAULT_OWNER, '-o', 'command', '--no-headers' ))[0], timeout=10, sleep=1) if action == 'start' and disttool.is_ubuntu( ) and disttool.version_info() >= (10, 4): try: LOG.debug('waiting for mysql process') wait_until(lambda: MYSQLD_PATH in system2( ('ps', '-G', DEFAULT_OWNER, '-o', 'command', '--no-headers' ))[0], timeout=10, sleep=1) LOG.debug('waiting for debian-start finish') out = system2( 'ps axo pid,command --noheaders | grep /etc/mysql/debian-start', shell=True)[0].strip() if out: pid = out.split('\n')[0].split(' ')[0] wait_until(lambda: not os.path.exists('/proc/%s' % pid), sleep=1) except: self._start_stop_reload('restart') return True if self.socks and (action != "stop" and not (action == 'reload' and not self.running)): for sock in self.socks: wait_sock(sock) return True
def is_port_listening(self): try: initdv2.wait_sock(self.sock) return True except: return False
def is_running(cls): try: initdv2.wait_sock(cls.sock) return True except: return False
def is_running(self): try: initdv2.wait_sock(self.sock) return True except: return False
def start(self): env = {'RABBITMQ_PID_FILE': '/var/run/rabbitmq/pid', 'RABBITMQ_MNESIA_BASE': '/var/lib/rabbitmq/mnesia'} run_detached(RABBITMQ_SERVER, args=['-detached'], env=env) initdv2.wait_sock(self.socks[0])