Ejemplo n.º 1
0
    def rebootNode(self, nodespec: str, bSoftReset: Optional[bool] = True,
                   bReinstall: Optional[bool] = False) -> NoReturn:
        try:
            self._nodeManager.rebootNode(
                nodespec, bSoftReset=bSoftReset, bReinstall=bReinstall)
        except TortugaException:
            raise
        except Exception as ex:
            self.getLogger().exception(
                'Fatal error rebooting node(s) matching'
                ' nodespec [{0}]'.format(nodespec))

            raise TortugaException(exception=ex)
Ejemplo n.º 2
0
    def updateNodeStatus(self, session: Session, name: str,
                         state: Optional[str] = None,
                         bootFrom: Optional[int] = None):
        try:
            return self._nodeManager.updateNodeStatus(
                session, name, state, bootFrom)
        except TortugaException:
            raise
        except Exception as ex:
            self._logger.exception(
                'Fatal error updating status for node [{}]'.format(name))

            raise TortugaException(exception=ex)
Ejemplo n.º 3
0
    def createSoftwareProfile(self, session: Session,
                              swProfileSpec: SoftwareProfile,
                              settingsDict=None):
        try:
            self._softwareProfileManager.createSoftwareProfile(
                session, swProfileSpec, settingsDict)

        except TortugaException:
            raise

        except Exception as ex:
            self._logger.exception(str(ex))
            raise TortugaException(exception=ex)
Ejemplo n.º 4
0
    def get_profile_names(self, resadapter_name):
        url = 'resourceadapters/{0}/profile/'.format(resadapter_name)

        try:
            responseDict = self._client.get(url)

            return responseDict

        except TortugaException:
            raise

        except Exception as ex:
            raise TortugaException(exception=ex)
Ejemplo n.º 5
0
    def delete(self, resadapter_name, name):
        url = 'resourceadapters/{0}/profile/{1}'.format(resadapter_name, name)

        try:
            responseDict = self._client.delete(url)

            return responseDict

        except TortugaException:
            raise

        except Exception as ex:
            raise TortugaException(exception=ex)
Ejemplo n.º 6
0
    def update(self, resadapter_name, name, configuration):
        url = 'resourceadapters/{0}/profile/{1}'.format(resadapter_name, name)

        try:
            responseDict = self._client.put(url, configuration)

            return responseDict

        except TortugaException:
            raise

        except Exception as ex:
            raise TortugaException(exception=ex)
Ejemplo n.º 7
0
    def updateSoftwareProfile(self, softwareProfileObject):
        """
        Update the given Software Profile by calling WS API
        """

        url = 'v1/softwareProfiles/%s' % (softwareProfileObject.getId())

        postdata = json.dumps(softwareProfileObject.getCleanDict())

        try:
            self.sendSessionRequest(url, method='PUT', data=postdata)
        except Exception as ex:
            raise TortugaException(exception=ex)
Ejemplo n.º 8
0
    def getResourceAdapterList(self):
        url = 'resourceadapters/'

        try:
            responseDict = self.get(url)

            return responseDict

        except TortugaException:
            raise

        except Exception as ex:
            raise TortugaException(exception=ex)
Ejemplo n.º 9
0
    def shutdownNode(self, session: Session, nodespec: str,
                     bSoftShutdown: Optional[bool] = False) -> None:
        try:
            self._nodeManager.shutdownNode(
                session, nodespec, bSoftShutdown)
        except TortugaException:
            raise
        except Exception as ex:
            self._logger.exception(
                'Fatal error shutting down node(s) matching'
                ' nodespec [{0}]'.format(nodespec))

            raise TortugaException(exception=ex)
Ejemplo n.º 10
0
    def updateVolume(self, volume, shared):
        """Add a volume to the system"""

        url = 'san/volumes/%s/%s' % (volume, shared)

        try:
            self.put(url)

        except TortugaException:
            raise

        except Exception as ex:
            raise TortugaException(exception=ex)
Ejemplo n.º 11
0
    def getNode(self, session: Session, name: str,
                optionDict: Optional[OptionDict] = None):
        """Get node id by name"""
        try:
            return self._nodeManager.getNode(
                session, name, optionDict=optionDict)
        except TortugaException:
            raise
        except Exception as ex:
            self._logger.exception(
                'Fatal error retrieving node [{}]'.format(name))

            raise TortugaException(exception=ex)
Ejemplo n.º 12
0
    def addStorageVolume(self, nodeName: str, volume: str,
                         isDirect: Optional[str] = 'DEFAULT'):
        try:
            return self._nodeManager.addStorageVolume(
                nodeName, volume, isDirect)
        except TortugaException:
            raise
        except Exception as ex:
            self._logger.exception(
                'Fatal error adding storage volume to node [{}]'.format(
                    nodeName))

            raise TortugaException(exception=ex)
Ejemplo n.º 13
0
    def transferNode(self, nodespec: str, softwareProfileName: str,
                     bForce: Optional[bool] = False):
        try:
            return self._nodeManager.transferNode(
                nodespec, softwareProfileName, bForce=bForce)
        except TortugaException:
            raise
        except Exception as ex:
            self.getLogger().exception(
                'Fatal error transferring nodes matching nodespec'
                ' [{}]'.format(nodespec))

            raise TortugaException(exception=ex)
Ejemplo n.º 14
0
    def getProvisioningInfo(self, session: Session, nodeName: str):
        """ Get provisioning information for a node """
        try:
            return self._nodeManager.getProvisioningInfo(session, nodeName)

        except TortugaException:
            raise

        except Exception as ex:
            self._logger.exception(
                'Fatal error retrieving provisioning info for'
                ' node [{}]'.format(nodeName))
            raise TortugaException(exception=ex)
Ejemplo n.º 15
0
    def idleNode(self, nodespec):
        """idle node"""

        url = 'v1/nodes/%s/idle' % (nodespec)

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

            return responseDict
        except TortugaException:
            raise
        except Exception as ex:
            raise TortugaException(exception=ex)
Ejemplo n.º 16
0
    def deleteParameter(self, session: Session, name: str) -> None:
        """
        Delete parameter by name
        """

        try:
            ParameterManager().deleteParameter(session, name)
        except TortugaException:
            raise
        except Exception as ex:
            self._logger.exception('Error deleting parameter [%s]' % (name))

            raise TortugaException(exception=ex)
Ejemplo n.º 17
0
    def addVolume(self, storageAdapter, size, nameFormat='*', shared=False):
        """Add a volume to the system"""

        try:
            # The api only allows for the addition of persistent volumes
            return self._san.addVolume(
                storageAdapter, size, nameFormat, persistent=True,
                shared=shared)
        except TortugaException as ex:
            raise
        except Exception as ex:
            self.getLogger().exception('%s' % (ex))
            raise TortugaException(exception=ex)
Ejemplo n.º 18
0
def download(urlList, dest):
    """
    TODO: this should use a curl/wget download module

    """
    for url in urlList:
        i = url.rfind('/')

        destFile = dest + '/' + url[i + 1:]

        logger.debug(url + '->' + destFile)

        try:
            filein = urllib.request.urlopen(url)
        except urllib.error.URLError as ex:
            if ex.code == 404:
                raise FileNotFound('File not found at URL [%s]' % (url))

            raise TortugaException(exception=ex)
        except Exception as ex:
            raise TortugaException(exception=ex)

        fileout = open(destFile, "wb")

        while True:
            try:
                buf = filein.read(1024000)

                fileout.write(buf)
            except IOError as ex:
                raise TortugaException(exception=ex)

            if not bytes:
                break

        filein.close()
        fileout.close()
        logger.debug('Successfully dowloaded file [%s]' % (destFile))
Ejemplo n.º 19
0
    def deleteParameter(self, name):
        """
        Delete parameter by name
        """

        try:
            return ParameterManager().deleteParameter(name)
        except TortugaException:
            raise
        except Exception as ex:
            self.getLogger().exception('Error deleting parameter [%s]' %
                                       (name))

            raise TortugaException(exception=ex)
    def get(self, resadapter_name, name):
        """Get resource adapter configuration"""

        url = 'v1/resourceadapter/{0}/profile/{1}'.format(
            resadapter_name, name)

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

            return responseDict
        except TortugaException:
            raise
        except Exception as ex:
            raise TortugaException(exception=ex)
Ejemplo n.º 21
0
    def getNodesByNameFilter(self, session: Session, nodespec: str,
                             optionDict: Optional[OptionDict] = None) \
            -> TortugaObjectList:
        try:
            return self._nodeManager.getNodesByNameFilter(
                session, nodespec, optionDict=optionDict)
        except TortugaException:
            raise
        except Exception as ex:
            self._logger.exception(
                'Fatal error retrieving nodes by nodespec [{}]'.format(
                    nodespec))

            raise TortugaException(exception=ex)
Ejemplo n.º 22
0
    def getNodeByIp(self, session: Session, ip: str) -> Node:
        """
        Get a node by ip
        """

        try:
            return self._nodeManager.getNodeByIp(session, ip)
        except TortugaException:
            raise
        except Exception as ex:
            self._logger.exception(
                'Fatal error retrieving node by ip [{}]'.format(ip))

            raise TortugaException(exception=ex)
Ejemplo n.º 23
0
    def updateHardwareProfile(self, hardwareProfileObject):
        """
        Update the given Hardware Profile by calling WS API
        """

        url = 'v1/hardwareProfiles/%s' % (hardwareProfileObject.getId())

        try:
            (response, responseDict) = self.sendSessionRequest(
                url,
                method='PUT',
                data=json.dumps(hardwareProfileObject.getCleanDict()))
        except Exception as ex:
            raise TortugaException(exception=ex)
Ejemplo n.º 24
0
    def _updateNodeStatus(self,
                          name: str,
                          state: Optional[str] = None,
                          bootFrom: Optional[int] = None) -> NoReturn:
        try:
            # pylint: disable=protected-access
            self._nodeManager._updateNodeStatus(name, state, bootFrom)
        except TortugaException:
            raise
        except Exception as ex:
            self.getLogger().exception(
                'Fatal error updating status for node [{}]'.format(name))

            raise TortugaException(exception=ex)
Ejemplo n.º 25
0
    def deleteVolume(self, volume, force=False):         \
            # pylint: disable=unused-argument
        """Delete a volume from the system"""

        url = 'san/volumes/%s' % (volume)

        try:
            self.delete(url)

        except TortugaException:
            raise

        except Exception as ex:
            raise TortugaException(exception=ex)
Ejemplo n.º 26
0
    def getUsableNodes(self, softwareProfileName):
        url = 'softwareprofiles/%s/usable' % (
            urllib.parse.quote_plus(softwareProfileName))

        try:
            responseDict = self.get(url)

            return Node.getListFromDict(responseDict)

        except TortugaException as ex:
            raise

        except Exception as ex:
            raise TortugaException(exception=ex)
Ejemplo n.º 27
0
    def getNodesByAddHostSession(self, session: Session,
                                 addHostSession: str,
                                 optionDict: Optional[OptionDict] = None) \
            -> TortugaObjectList:
        try:
            return self._nodeManager.getNodesByAddHostSession(
                session, addHostSession, optionDict=optionDict)
        except TortugaException:
            raise
        except Exception as ex:
            self._logger.exception(
                'Fatal error retrieving nodes by add host session [{}]'.format(
                    addHostSession))

            raise TortugaException(exception=ex)
Ejemplo n.º 28
0
    def startupNode(self, nodespec, remainingNodeList=None, bootMethod='n'):
        """startup node"""

        # Turn 'nodeList' into something that can be passed in
        nodeString = '+'.join(remainingNodeList) if remainingNodeList else '+'

        url = 'v1/nodes/%s/startup/%s/boot/%s' % (nodespec, nodeString,
                                                  bootMethod)

        try:
            self.sendSessionRequest(url, method='PUT')
        except TortugaException:
            raise
        except Exception as ex:
            raise TortugaException(exception=ex)
Ejemplo n.º 29
0
    def migrateNode(self, nodeName, remainingNodeList, liveMigrate):
        """migrate node"""

        # Turn remainingNodeList into something that can be passed in
        remainingNodeString = str.join('+', remainingNodeList)

        url = 'v1/nodes/%s/migrate/%s/type/%s' % (
            nodeName, remainingNodeString, liveMigrate)

        try:
            self.sendSessionRequest(url)
        except TortugaException:
            raise
        except Exception as ex:
            raise TortugaException(exception=ex)
Ejemplo n.º 30
0
 def disableComponent(self, softwareProfileName, kitName, kitVersion,
                      kitIteration, compName, compVersion=None):
     try:
         return self._softwareProfileManager.disableComponent(
             softwareProfileName,
             kitName,
             kitVersion,
             kitIteration,
             compName,
             compVersion)
     except TortugaException as ex:
         raise
     except Exception as ex:
         self.getLogger().exception('%s' % ex)
         raise TortugaException(exception=ex)