Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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])
Esempio n. 4
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
Esempio n. 5
0
    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])
Esempio n. 6
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])
Esempio n. 7
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
Esempio n. 8
0
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
Esempio n. 9
0
 def is_port_listening(self):
     try:
         initdv2.wait_sock(self.sock)
         return True
     except:
         return False
Esempio n. 10
0
 def is_running(cls):
     try:
         initdv2.wait_sock(cls.sock)
         return True
     except:
         return False
Esempio n. 11
0
 def is_running(self):
     try:
         initdv2.wait_sock(self.sock)
         return True
     except:
         return False
Esempio n. 12
0
	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])
Esempio n. 13
0
 def is_port_listening(self):
     try:
         initdv2.wait_sock(self.sock)
         return True
     except:
         return False
Esempio n. 14
0
 def is_running(cls):
     try:
         initdv2.wait_sock(cls.sock)
         return True
     except:
         return False
Esempio n. 15
0
 def is_running(self):
     try:
         initdv2.wait_sock(self.sock)
         return True
     except:
         return False