def query_resources(self, request):
"""Find and return the resources that answer the client's query.
Args:
request (Request): QueryResources request.
Returns:
ResourcesReply. a reply containing matching resources.
"""
desc = ResourceDescriptor.decode(request.message.descriptors)
self.logger.debug("Looking for resources with description %r", desc)
# query for resources that are usable and match the descriptors
query = (Q(is_usable=True, **desc.properties))
matches = desc.type.objects.filter(query)
if matches.count() == 0:
raise ResourceDoesNotExistError("No existing resource meets "
"the requirements: %r" % desc)
query_result = [resource for resource in matches]
return ResourcesReply(resources=query_result)
评论列表
文章目录