Exemplo n.º 1
0
    def getStatus(self, session: str, startMessage: int,
                  getNodes: bool) -> AddHostStatus:
        """
        Raises:
            NotFound
        """
        with self._addHostLock:
            nodeList = self._nodeDbApi.getNodesByAddHostSession(session) \
                if getNodes else 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)

            statusCopy = AddHostStatus()

            # 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)

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

            return statusCopy
Exemplo n.º 2
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
Exemplo n.º 3
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
Exemplo n.º 4
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()