Ejemplo n.º 1
0
    def getStatus(self, db_session: Session, session: str, startMessage: int,
                  getNodes: bool) -> AddHostStatus:
        """
        Raises:
            NotFound
        """
        with self._addHostLock:
            nodeList = self._nodeDbApi.getNodesByAddHostSession(
                db_session, session) if getNodes else TortugaObjectList()

            # Lock and copy for data consistency
            if not self._sessions.exists(session):
                raise NotFound('Invalid add host session ID [%s]' % (session))

            session = self._sessions.get(session)

            status_copy = AddHostStatus()

            # Copy simple data
            status = AddHostStatus.getFromDict(session['status'])
            for key in status.getKeys():
                status_copy.set(key, status.get(key))

            # Get slice of status messages
            messages = status.getMessageList()[startMessage:]

            status_copy.setMessageList(messages)

            if nodeList:
                status_copy.getNodeList().extend(nodeList)

            return status_copy
Ejemplo n.º 2
0
    def getStatus(self, session=None, startMessage=0, getNodes=False):
        """
        Get the status of addhost...if session is non-none get info for that
        session only.  Startmessage controls the number of removed from
        the start of the server side message list.  If getNodes is true
        also include the nodes for this session.

        Returns:
            AddHostStatus object
        Throws:
            TortugaException
        """

        url = self._buildUrl('v1/addhost/%s/status' % (session))

        # Add query parameters
        url += '?startMessage={0}&getNodes={1}'.format(
            startMessage, str(getNodes))

        try:
            _, responseDict = self.sendSessionRequest(url)

            return AddHostStatus.getFromDict(responseDict.get("addhoststatus"))
        except TortugaException:
            raise
        except Exception as ex:
            raise TortugaException(exception=ex)
Ejemplo n.º 3
0
    def update_session(self, session_id: str, running: Optional[bool] = None):
        self.getLogger().debug(
            'Updating add host session [%s] (status: running=%s)' %
            (session_id, str(running)))

        with self._addHostLock:
            session = self._sessions.get(session_id)
            status = AddHostStatus.getFromDict(session['status'])
            session['status'] = status.getCleanDict()
            self._sessions.set(session_id, session)
Ejemplo n.º 4
0
    def createNewSession(self) -> str:
        self.getLogger().debug('createNewSession()')

        with self._addHostLock:
            # Create new add nodes session
            session_id = str(uuid.uuid4())

            self._sessions.set(session_id,
                               {'status': AddHostStatus().getCleanDict()})

            return session_id
Ejemplo n.º 5
0
    def createNewSession(self) -> str:
        self.getLogger().debug('createNewSession()')

        with self._addHostLock:
            # Create new add nodes session
            session_id = str(uuid.uuid4())

            self._sessions[session_id] = {
                'status': AddHostStatus(),
            }

            return session_id
Ejemplo n.º 6
0
    def updateStatus(self, addHostSession: str, msg: str) -> None:
        self._addHostLock.acquire()

        try:
            if not self._sessions.exists(addHostSession):
                self.getLogger().warning(
                    'updateStatus(): unknown session ID [%s]' %
                    (addHostSession))

                return

            addHostStatus = AddHostStatus.getFromDict(
                self._sessions.get(addHostSession)['status'])

            addHostStatus.getMessageList().append(msg)
        finally:
            self._addHostLock.release()
Ejemplo n.º 7
0
    def getStatus(self, session, startMessage, getNodes):
        """
        Raises:
            NotFound
        """

        statusCopy = AddHostStatus()

        self._addHostLock.acquire()

        try:
            if getNodes and session is not None and \
                    self._nodeDbApi is not None:
                nodeList = self._nodeDbApi.getNodesByAddHostSession(session)
            else:
                nodeList = TortugaObjectList()

            # Lock and copy for data consistency
            if session not in self._sessions:
                raise NotFound('Invalid add host session ID [%s]' % (session))

            sessionDict = self._sessions.get(session)

            # Copy simple data
            for key in sessionDict['status'].getKeys():
                statusCopy.set(key, sessionDict['status'].get(key))

            # Get slice of status messages
            messages = sessionDict['status'].getMessageList()[startMessage:]

            statusCopy.setMessageList(messages)

            statusCopy.getNodeList().extend(nodeList)

            return statusCopy
        finally:
            self._addHostLock.release()