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