Пример #1
0
    def getHardwareProfiles(self, **kwargs):
        tagspec = []

        if 'tag' in kwargs and kwargs['tag']:
            tagspec.extend(parse_tag_query_string(kwargs['tag']))

        try:
            if 'name' in kwargs and kwargs['name']:
                options = make_options_from_query_string(
                    kwargs['include'] if 'include' in kwargs else None,
                    ['resourceadapter'])

                hardwareProfiles = TortugaObjectList([
                    HardwareProfileManager().getHardwareProfile(
                        cherrypy.request.db,
                        kwargs['name'],
                        optionDict=options)
                ])
            else:
                hardwareProfiles = \
                    HardwareProfileManager().getHardwareProfileList(
                        cherrypy.request.db, tags=tagspec)

            response = {
                'hardwareprofiles': hardwareProfiles.getCleanDict(),
            }
        except Exception as ex:  # pylint: disable=broad-except
            self.getLogger().exception(
                'hardware profile WS API getHardwareProfiles() failed')

            self.handleException(ex)

            response = self.errorResponse(str(ex))

        return self.formatResponse(response)
Пример #2
0
    def getSoftwareProfiles(self, **kwargs):
        """
        TODO: implement support for optionDict through query string
        """

        try:
            tags = {}

            if 'tag' in kwargs and kwargs['tag']:
                tags.update(dict(parse_tag_query_string(kwargs['tag'])))

            if 'name' in kwargs and kwargs['name']:
                default_options = [
                    'components',
                    'partitions',
                    'hardwareprofiles',
                    'tags',
                ]

                options = make_options_from_query_string(
                    kwargs['include'] if 'include' in kwargs else None,
                    default_options)

                softwareProfiles = TortugaObjectList([
                    self._softwareProfileManager.getSoftwareProfile(
                        cherrypy.request.db,
                        kwargs['name'],
                        optionDict=options)
                ])
            else:
                softwareProfiles = \
                    self._softwareProfileManager.getSoftwareProfileList(
                        cherrypy.request.db, tags=tags)

            response = {
                'softwareprofiles': softwareProfiles.getCleanDict(),
            }
        except Exception as ex:
            self.handleException(ex)

            http_status = 404 \
                if isinstance(ex, SoftwareProfileNotFound) else 400

            response = self.errorResponse(str(ex), http_status=http_status)

        return self.formatResponse(response)
Пример #3
0
    def kitsAction(self, **kwargs):
        """
        Return list of all available kits.
        """

        response = None

        try:
            name = kwargs.get('name')
            version = kwargs.get('version')
            iteration = kwargs.get('iteration')

            if cherrypy.request.method == 'DELETE':
                KitManager().deleteKit(
                    cherrypy.request.db, name, version, iteration)
            else:
                # GET method
                if name:
                    # get kit by name
                    kitList = TortugaObjectList(
                        [self.getKit(name,
                                     version=version,
                                     iteration=iteration)]
                    )
                else:
                    # get all kits
                    kitList = KitManager().getKitList(cherrypy.request.db)

                response = {'kits': kitList.getCleanDict()}
        except KitNotFound as ex:
            self.handleException(ex)
            code = self.getTortugaStatusCode(ex)
            response = self.notFoundErrorResponse(str(ex), code)
        except Exception as ex:
            self.getLogger().error('%s' % ex)
            self.handleException(ex)
            response = self.errorResponse(str(ex))

        return self.formatResponse(response)
Пример #4
0
    def getNetworkList(self, **kwargs):
        """
        Return list of all available networks
        """

        try:
            if 'address' in kwargs and 'netmask' in kwargs:
                networkList = TortugaObjectList(
                    [self.app.network_api.getNetwork(
                        cherrypy.request.db,
                        kwargs['address'], kwargs['netmask'])])
            else:
                networkList = self.app.network_api.getNetworkList(
                    cherrypy.request.db
                )

            response = {'networks': networkList.getCleanDict()}
        except Exception as ex:
            self._logger.error(str(ex))
            self.handleException(ex)
            response = self.errorResponse(str(ex))

        return self.formatResponse(response)