Exemple #1
0
class SshRebooter(object):
    r"""
    @summary: Reboots a target using SSH.
    boot the SshProcess.
    create one process per target.
    """
    def __init__(self, target, defaultCommand=None):
        if not isinstance(target, BaseSshTarget):
            raise InvalidTargetError(target)
        self._target = target
        self._defaultCommand = defaultCommand
        self._sendBufferTimeout = target.sendBufferTimeout()
        self._qRx = Queue()
        self._qTx = Queue()
        self._synchroniser = Synchroniser()
        self._sendMutex = Semaphore(1)
        self._threads = {"rx":None}
        self._close = False
        self._process = None
        self._startLock = Semaphore(1)
    def _start(self):
        with self._startLock:
            self._synchroniser.checkDestroyed()
            if self._process!=None:
                return
            try:
                sem = Semaphore(0)
                self._process = bootstrapSshProcess(self._target, self._qRx, self._qTx, sem)
                sem.acquire()
                #    Now start the read thread:
                t = threading.Thread(target=self._rx)
                t.setName("SSHRebooter_%(T)s"%{"T":self._target.uId()})
                t.setDaemon(True)
                t.start()
                self._threads["rx"] = t
            except Exception, _e:
                #    Cleanup.
                self.terminate()
Exemple #2
0
 def __init__(self, target, defaultCommand=None):
     if not isinstance(target, BaseSshTarget):
         raise InvalidTargetError(target)
     self._target = target
     self._defaultCommand = defaultCommand
     self._sendBufferTimeout = target.sendBufferTimeout()
     self._qRx = Queue()
     self._qTx = Queue()
     self._synchroniser = Synchroniser()
     self._sendMutex = Semaphore(1)
     self._threads = {"rx":None}
     self._close = False
     self._process = None
     self._startLock = Semaphore(1)