Example #1
0
    def _do_launch_build(self):
        script = "bash ./nepi-build.sh"
        if self._master_passphrase:
            script = "NEPI_MASTER_PASSPHRASE=%s %s" % (
                server.shell_escape(self._master_passphrase),
                script
            )
        (out,err),proc = rspawn.remote_spawn(
            script,
            pidfile = 'build-pid',
            home = self.home_path,
            stdin = '/dev/null',
            stdout = 'buildlog',
            stderr = rspawn.STDOUT,
            
            host = self.node.hostname,
            port = None,
            user = self.node.slicename,
            agent = None,
            ident_key = self.node.ident_path,
            server_key = self.node.server_key,
            hostip = self.node.hostip,
            )
        
        if proc.wait():
            if self.check_bad_host(out, err):
                self.node.blacklist()
            raise RuntimeError, "Failed to set up build slave %s: %s %s" % (self.home_path, out,err,)
        
        
        pid = ppid = None
        delay = 1.0
        for i in xrange(5):
            pidtuple = rspawn.remote_check_pid(
                os.path.join(self.home_path,'build-pid'),
                host = self.node.hostip,
                port = None,
                user = self.node.slicename,
                agent = None,
                ident_key = self.node.ident_path,
                server_key = self.node.server_key,
                hostip = self.node.hostip
                )
            
            if pidtuple:
                pid, ppid = pidtuple
                self._build_pid, self._build_ppid = pidtuple
                break
            else:
                time.sleep(delay)
                delay = min(30,delay*1.2)
        else:
            raise RuntimeError, "Failed to set up build slave %s: cannot get pid" % (self.home_path,)

        self._logger.info("Deploying %s at %s", self, self.node.hostname)
Example #2
0
    def _do_launch_build(self):
        script = "bash ./nepi-build.sh"
        if self._master_passphrase:
            script = "NEPI_MASTER_PASSPHRASE=%s %s" % (server.shell_escape(
                self._master_passphrase), script)
        (out, err), proc = rspawn.remote_spawn(
            script,
            pidfile='build-pid',
            home=self.home_path,
            stdin='/dev/null',
            stdout='buildlog',
            stderr=rspawn.STDOUT,
            host=self.node.hostname,
            port=None,
            user=self.node.slicename,
            agent=None,
            ident_key=self.node.ident_path,
            server_key=self.node.server_key,
            hostip=self.node.hostip,
        )

        if proc.wait():
            if self.check_bad_host(out, err):
                self.node.blacklist()
            raise RuntimeError, "Failed to set up build slave %s: %s %s" % (
                self.home_path,
                out,
                err,
            )

        pid = ppid = None
        delay = 1.0
        for i in xrange(5):
            pidtuple = rspawn.remote_check_pid(os.path.join(
                self.home_path, 'build-pid'),
                                               host=self.node.hostip,
                                               port=None,
                                               user=self.node.slicename,
                                               agent=None,
                                               ident_key=self.node.ident_path,
                                               server_key=self.node.server_key,
                                               hostip=self.node.hostip)

            if pidtuple:
                pid, ppid = pidtuple
                self._build_pid, self._build_ppid = pidtuple
                break
            else:
                time.sleep(delay)
                delay = min(30, delay * 1.2)
        else:
            raise RuntimeError, "Failed to set up build slave %s: cannot get pid" % (
                self.home_path, )

        self._logger.info("Deploying %s at %s", self, self.node.hostname)
Example #3
0
    def checkpid(self):
        # Get PID/PPID
        # NOTE: wait a bit for the pidfile to be created
        if self._started and not self._pid or not self._ppid:
            pidtuple = rspawn.remote_check_pid(os.path.join(
                self.home_path, 'pid'),
                                               host=self.node.hostname,
                                               port=None,
                                               user=self.node.slicename,
                                               agent=None,
                                               ident_key=self.node.ident_path,
                                               server_key=self.node.server_key)

            if pidtuple:
                self._pid, self._ppid = pidtuple
Example #4
0
 def checkpid(self):            
     # Get PID/PPID
     # NOTE: wait a bit for the pidfile to be created
     if self._started and not self._pid or not self._ppid:
         pidtuple = rspawn.remote_check_pid(
             os.path.join(self.home_path,'pid'),
             host = self.node.hostname,
             port = None,
             user = self.node.slicename,
             agent = None,
             ident_key = self.node.ident_path,
             server_key = self.node.server_key
             )
         
         if pidtuple:
             self._pid, self._ppid = pidtuple
Example #5
0
    def checkpid(self):
        local = self.local()

        if not local:
            raise RuntimeError, "Lost reference to local interface"

        # Get PID/PPID
        # NOTE: wait a bit for the pidfile to be created
        if self._started and not self._pid or not self._ppid:
            pidtuple = rspawn.remote_check_pid(
                os.path.join(self.home_path, 'pid'),
                host=local.node.hostname,
                port=None,
                user=local.node.slicename,
                agent=None,
                ident_key=local.node.ident_path,
                server_key=local.node.server_key)

            if pidtuple:
                self._pid, self._ppid = pidtuple
Example #6
0
 def checkpid(self):            
     local = self.local()
     
     if not local:
         raise RuntimeError, "Lost reference to local interface"
     
     # Get PID/PPID
     # NOTE: wait a bit for the pidfile to be created
     if self._started and not self._pid or not self._ppid:
         pidtuple = rspawn.remote_check_pid(
             os.path.join(self.home_path,'pid'),
             host = local.node.hostname,
             port = None,
             user = local.node.slicename,
             agent = None,
             ident_key = local.node.ident_path,
             server_key = local.node.server_key
             )
         
         if pidtuple:
             self._pid, self._ppid = pidtuple