Adding support for query filtering to list() calls
Each of the list() methods now supports an extra parameter, search_opts, which is a dict that will contain search fields and values to limit the result sets. The changes here will also rely upon changes to the Sahara service to support query-style parameters. Change-Id: I26986cbc153c3f8ad74b52d91086afbdfbd93926 Implements: bp enable-result-filtering
This commit is contained in:
@@ -17,6 +17,7 @@ import json
|
||||
import logging
|
||||
|
||||
import six
|
||||
from six.moves.urllib import parse
|
||||
|
||||
from saharaclient.openstack.common.gettextutils import _
|
||||
|
||||
@@ -161,3 +162,12 @@ class APIException(Exception):
|
||||
self.error_code = error_code
|
||||
self.error_name = error_name
|
||||
self.error_message = error_message
|
||||
|
||||
|
||||
def get_query_string(search_opts):
|
||||
if search_opts:
|
||||
qparams = sorted(search_opts.items(), key=lambda x: x[0])
|
||||
query_string = "?%s" % parse.urlencode(qparams)
|
||||
else:
|
||||
query_string = ""
|
||||
return query_string
|
||||
@@ -60,8 +60,9 @@ class ClusterTemplateManager(base.ResourceManager):
|
||||
return self._update('/cluster-templates/%s' % cluster_template_id,
|
||||
data, 'cluster_template')
|
||||
|
||||
def list(self):
|
||||
return self._list('/cluster-templates', 'cluster_templates')
|
||||
def list(self, search_opts=None):
|
||||
query = base.get_query_string(search_opts)
|
||||
return self._list('/cluster-templates%s' % query, 'cluster_templates')
|
||||
|
||||
def get(self, cluster_template_id):
|
||||
return self._get('/cluster-templates/%s' % cluster_template_id,
|
||||
|
||||
@@ -64,8 +64,9 @@ class ClusterManager(base.ResourceManager):
|
||||
def scale(self, cluster_id, scale_object):
|
||||
return self._update('/clusters/%s' % cluster_id, scale_object)
|
||||
|
||||
def list(self):
|
||||
return self._list('/clusters', 'clusters')
|
||||
def list(self, search_opts=None):
|
||||
query = base.get_query_string(search_opts)
|
||||
return self._list('/clusters%s' % query, 'clusters')
|
||||
|
||||
def get(self, cluster_id):
|
||||
return self._get('/clusters/%s' % cluster_id, 'cluster')
|
||||
|
||||
@@ -37,8 +37,9 @@ class DataSourceManager(base.ResourceManager):
|
||||
password=credential_pass)
|
||||
return self._create('/data-sources', data, 'data_source')
|
||||
|
||||
def list(self):
|
||||
return self._list('/data-sources', 'data_sources')
|
||||
def list(self, search_opts=None):
|
||||
query = base.get_query_string(search_opts)
|
||||
return self._list('/data-sources%s' % query, 'data_sources')
|
||||
|
||||
def get(self, data_source_id):
|
||||
return self._get('/data-sources/%s' % data_source_id, 'data_source')
|
||||
|
||||
@@ -26,8 +26,9 @@ class Image(base.Resource):
|
||||
class ImageManager(base.ResourceManager):
|
||||
resource_class = Image
|
||||
|
||||
def list(self):
|
||||
return self._list('/images', 'images')
|
||||
def list(self, search_opts=None):
|
||||
query = base.get_query_string(search_opts)
|
||||
return self._list('/images%s' % query, 'images')
|
||||
|
||||
def get(self, id):
|
||||
return self._get('/images/%s' % id, 'image')
|
||||
|
||||
@@ -33,8 +33,9 @@ class JobBinariesManager(base.ResourceManager):
|
||||
|
||||
return self._create('/job-binaries', data, 'job_binary')
|
||||
|
||||
def list(self):
|
||||
return self._list('/job-binaries', 'binaries')
|
||||
def list(self, search_opts=None):
|
||||
query = base.get_query_string(search_opts)
|
||||
return self._list('/job-binaries%s' % query, 'binaries')
|
||||
|
||||
def get(self, job_binary_id):
|
||||
return self._get('/job-binaries/%s' % job_binary_id, 'job_binary')
|
||||
|
||||
@@ -27,8 +27,9 @@ class JobBinaryInternalsManager(base.ResourceManager):
|
||||
return self._update('/job-binary-internals/%s' % name, data,
|
||||
'job_binary_internal', dump_json=False)
|
||||
|
||||
def list(self):
|
||||
return self._list('/job-binary-internals', 'binaries')
|
||||
def list(self, search_opts=None):
|
||||
query = base.get_query_string(search_opts)
|
||||
return self._list('/job-binary-internals%s' % query, 'binaries')
|
||||
|
||||
def get(self, job_binary_id):
|
||||
return self._get('/job-binary-internals/%s' % job_binary_id,
|
||||
|
||||
@@ -23,8 +23,9 @@ class JobExecution(base.Resource):
|
||||
class JobExecutionsManager(base.ResourceManager):
|
||||
resource_class = JobExecution
|
||||
|
||||
def list(self):
|
||||
return self._list('/job-executions', 'job_executions')
|
||||
def list(self, search_opts=None):
|
||||
query = base.get_query_string(search_opts)
|
||||
return self._list('/job-executions%s' % query, 'job_executions')
|
||||
|
||||
def get(self, obj_id):
|
||||
return self._get('/job-executions/%s' % obj_id, 'job_execution')
|
||||
|
||||
@@ -34,8 +34,9 @@ class JobsManager(base.ResourceManager):
|
||||
|
||||
return self._create('/jobs', data, 'job')
|
||||
|
||||
def list(self):
|
||||
return self._list('/jobs', 'jobs')
|
||||
def list(self, search_opts=None):
|
||||
query = base.get_query_string(search_opts)
|
||||
return self._list('/jobs%s' % query, 'jobs')
|
||||
|
||||
def get(self, job_id):
|
||||
return self._get('/jobs/%s' % job_id, 'job')
|
||||
|
||||
@@ -93,8 +93,10 @@ class NodeGroupTemplateManager(base.ResourceManager):
|
||||
return self._update('/node-group-templates/%s' % ng_template_id, data,
|
||||
'node_group_template')
|
||||
|
||||
def list(self):
|
||||
return self._list('/node-group-templates', 'node_group_templates')
|
||||
def list(self, search_opts=None):
|
||||
query = base.get_query_string(search_opts)
|
||||
return self._list('/node-group-templates%s' % query,
|
||||
'node_group_templates')
|
||||
|
||||
def get(self, ng_template_id):
|
||||
return self._get('/node-group-templates/%s' % ng_template_id,
|
||||
|
||||
@@ -31,8 +31,9 @@ class Plugin(base.Resource):
|
||||
class PluginManager(base.ResourceManager):
|
||||
resource_class = Plugin
|
||||
|
||||
def list(self):
|
||||
return self._list('/plugins', 'plugins')
|
||||
def list(self, search_opts=None):
|
||||
query = base.get_query_string(search_opts)
|
||||
return self._list('/plugins%s' % query, 'plugins')
|
||||
|
||||
def get(self, plugin_name):
|
||||
return self._get('/plugins/%s' % plugin_name, 'plugin')
|
||||
|
||||
Reference in New Issue
Block a user