Merge "Add filters to client Python APIs"

This commit is contained in:
Jenkins
2017-01-03 05:50:09 +00:00
committed by Gerrit Code Review
4 changed files with 42 additions and 5 deletions

View File

@@ -67,7 +67,8 @@ class ActionManager(base.ResourceManager):
return [self.resource_class(self, resource_data)
for resource_data in base.extract_json(resp, 'actions')]
def list(self, marker='', limit=None, sort_keys='', sort_dirs=''):
def list(self, marker='', limit=None, sort_keys='', sort_dirs='',
**filters):
qparams = {}
if marker:
@@ -82,6 +83,9 @@ class ActionManager(base.ResourceManager):
if sort_dirs:
qparams['sort_dirs'] = sort_dirs
for name, val in filters.items():
qparams[name] = val
query_string = ("?%s" % urlparse.urlencode(list(qparams.items()))
if qparams else "")

View File

@@ -70,7 +70,7 @@ class ExecutionManager(base.ResourceManager):
return self._update('/executions/%s' % id, data)
def list(self, task=None, marker='', limit=None, sort_keys='',
sort_dirs=''):
sort_dirs='', **filters):
qparams = {}
if task:
@@ -88,6 +88,9 @@ class ExecutionManager(base.ResourceManager):
if sort_dirs:
qparams['sort_dirs'] = sort_dirs
for name, val in filters.items():
qparams[name] = val
query_string = ("?%s" % urlparse.urlencode(list(qparams.items()))
if qparams else "")

View File

@@ -14,9 +14,12 @@
# limitations under the License.
import json
import six
from mistralclient.api import base
urlparse = six.moves.urllib.parse
class Task(base.Resource):
resource_name = 'Task'
@@ -25,13 +28,36 @@ class Task(base.Resource):
class TaskManager(base.ResourceManager):
resource_class = Task
def list(self, workflow_execution_id=None):
def list(self, workflow_execution_id=None, marker='', limit=None,
sort_keys='', sort_dirs='', **filters):
url = '/tasks'
if workflow_execution_id:
url = '/executions/%s/tasks' % workflow_execution_id
return self._list(url, response_key='tasks')
url += '%s'
qparams = {}
if marker:
qparams['marker'] = marker
if limit:
qparams['limit'] = limit
if sort_keys:
qparams['sort_keys'] = sort_keys
if sort_dirs:
qparams['sort_dirs'] = sort_dirs
for name, val in filters.items():
qparams[name] = val
query_string = ("?%s" % urlparse.urlencode(list(qparams.items()))
if qparams else "")
return self._list(url % query_string, response_key='tasks')
def get(self, id):
self._ensure_not_empty(id=id)

View File

@@ -72,7 +72,8 @@ class WorkflowManager(base.ResourceManager):
return [self.resource_class(self, resource_data)
for resource_data in base.extract_json(resp, 'workflows')]
def list(self, marker='', limit=None, sort_keys='', sort_dirs=''):
def list(self, marker='', limit=None, sort_keys='', sort_dirs='',
**filters):
qparams = {}
if marker:
@@ -87,6 +88,9 @@ class WorkflowManager(base.ResourceManager):
if sort_dirs:
qparams['sort_dirs'] = sort_dirs
for name, val in filters.items():
qparams[name] = val
query_string = ("?%s" % urlparse.urlencode(list(qparams.items()))
if qparams else "")