def get_all(self, marker=None, limit=None, sort_keys='created_at', sort_dirs='asc', fields=''): """Return a list of workflows. :param marker: Optional. Pagination marker for large data sets. :param limit: Optional. Maximum number of resources to return in a single result. Default value is None for backward compatibility. :param sort_keys: Optional. Columns to sort results by. Default: created_at. :param sort_dirs: Optional. Directions to sort corresponding to sort_keys, "asc" or "desc" can be choosed. Default: asc. :param fields: Optional. A specified list of fields of the resource to be returned. 'id' will be included automatically in fields if it's provided, since it will be used when constructing 'next' link. Where project_id is the same as the requester or project_id is different but the scope is public. """ LOG.info("Fetch workflows. marker=%s, limit=%s, sort_keys=%s, " "sort_dirs=%s, fields=%s", marker, limit, sort_keys, sort_dirs, fields) if fields and 'id' not in fields: fields.insert(0, 'id') rest_utils.validate_query_params(limit, sort_keys, sort_dirs) rest_utils.validate_fields(fields, Workflow.get_fields()) marker_obj = None if marker: marker_obj = db_api.get_workflow_definition_by_id(marker) db_workflows = db_api.get_workflow_definitions( limit=limit, marker=marker_obj, sort_keys=sort_keys, sort_dirs=sort_dirs, fields=fields ) workflows_list = [] for data in db_workflows: workflow_dict = (dict(zip(fields, data)) if fields else data.to_dict()) workflows_list.append(Workflow.from_dict(workflow_dict)) return Workflows.convert_with_links( workflows_list, limit, pecan.request.host_url, sort_keys=','.join(sort_keys), sort_dirs=','.join(sort_dirs), fields=','.join(fields) if fields else '' )
def get_all(self, marker=None, limit=None, sort_keys='created_at', sort_dirs='asc'): """Return all Executions. :param marker: Optional. Pagination marker for large data sets. :param limit: Optional. Maximum number of resources to return in a single result. Default value is None for backward compatibility. :param sort_keys: Optional. Columns to sort results by. Default: created_at, which is backward compatible. :param sort_dirs: Optional. Directions to sort corresponding to sort_keys, "asc" or "desc" can be chosen. Default: desc. The length of sort_dirs can be equal or less than that of sort_keys. """ LOG.info( "Fetch executions. marker=%s, limit=%s, sort_keys=%s, " "sort_dirs=%s", marker, limit, sort_keys, sort_dirs ) rest_utils.validate_query_params(limit, sort_keys, sort_dirs) marker_obj = None if marker: marker_obj = db_api.get_workflow_execution(marker) db_workflow_exs = db_api.get_workflow_executions( limit=limit, marker=marker_obj, sort_keys=sort_keys, sort_dirs=sort_dirs ) wf_executions = [ Execution.from_dict(db_model.to_dict()) for db_model in db_workflow_exs ] return Executions.convert_with_links( wf_executions, limit, pecan.request.host_url, sort_keys=','.join(sort_keys), sort_dirs=','.join(sort_dirs) )
def get_all(self, marker=None, limit=None, sort_keys='name', sort_dirs='asc'): """Return all actions. :param marker: Optional. Pagination marker for large data sets. :param limit: Optional. Maximum number of resources to return in a single result. Default value is None for backward compatibility. :param sort_keys: Optional. Columns to sort results by. Default: name. :param sort_dirs: Optional. Directions to sort corresponding to sort_keys, "asc" or "desc" can be choosed. Default: asc. Where project_id is the same as the requester or project_id is different but the scope is public. """ LOG.info( "Fetch actions. marker=%s, limit=%s, sort_keys=%s, " "sort_dirs=%s", marker, limit, sort_keys, sort_dirs) rest_utils.validate_query_params(limit, sort_keys, sort_dirs) marker_obj = None if marker: marker_obj = db_api.get_action_definition_by_id(marker) db_action_defs = db_api.get_action_definitions(limit=limit, marker=marker_obj, sort_keys=sort_keys, sort_dirs=sort_dirs) actions_list = [ Action.from_dict(db_model.to_dict()) for db_model in db_action_defs ] return Actions.convert_with_links(actions_list, limit, pecan.request.host_url, sort_keys=','.join(sort_keys), sort_dirs=','.join(sort_dirs))
def get_all(self, marker=None, limit=None, sort_keys='name', sort_dirs='asc'): """Return all actions. :param marker: Optional. Pagination marker for large data sets. :param limit: Optional. Maximum number of resources to return in a single result. Default value is None for backward compatibility. :param sort_keys: Optional. Columns to sort results by. Default: name. :param sort_dirs: Optional. Directions to sort corresponding to sort_keys, "asc" or "desc" can be choosed. Default: asc. Where project_id is the same as the requester or project_id is different but the scope is public. """ LOG.info("Fetch actions. marker=%s, limit=%s, sort_keys=%s, " "sort_dirs=%s", marker, limit, sort_keys, sort_dirs) rest_utils.validate_query_params(limit, sort_keys, sort_dirs) marker_obj = None if marker: marker_obj = db_api.get_action_definition_by_id(marker) db_action_defs = db_api.get_action_definitions( limit=limit, marker=marker_obj, sort_keys=sort_keys, sort_dirs=sort_dirs ) actions_list = [Action.from_dict(db_model.to_dict()) for db_model in db_action_defs] return Actions.convert_with_links( actions_list, limit, pecan.request.host_url, sort_keys=','.join(sort_keys), sort_dirs=','.join(sort_dirs) )
def get_all(self, marker=None, limit=None, sort_keys='created_at', sort_dirs='asc'): """Return all Executions. :param marker: Optional. Pagination marker for large data sets. :param limit: Optional. Maximum number of resources to return in a single result. Default value is None for backward compatibility. :param sort_keys: Optional. Columns to sort results by. Default: created_at, which is backward compatible. :param sort_dirs: Optional. Directions to sort corresponding to sort_keys, "asc" or "desc" can be chosen. Default: desc. The length of sort_dirs can be equal or less than that of sort_keys. """ LOG.info( "Fetch executions. marker=%s, limit=%s, sort_keys=%s, " "sort_dirs=%s", marker, limit, sort_keys, sort_dirs) rest_utils.validate_query_params(limit, sort_keys, sort_dirs) marker_obj = None if marker: marker_obj = db_api.get_workflow_execution(marker) db_workflow_exs = db_api.get_workflow_executions(limit=limit, marker=marker_obj, sort_keys=sort_keys, sort_dirs=sort_dirs) wf_executions = [ Execution.from_dict(db_model.to_dict()) for db_model in db_workflow_exs ] return Executions.convert_with_links(wf_executions, limit, pecan.request.host_url, sort_keys=','.join(sort_keys), sort_dirs=','.join(sort_dirs))
def get_all(self, marker=None, limit=None, sort_keys='name', sort_dirs='asc', fields='', created_at=None, name=None, scope=None, tags=None, updated_at=None, description=None, definition=None, is_system=None, input=None, namespace=''): """Return all actions. :param marker: Optional. Pagination marker for large data sets. :param limit: Optional. Maximum number of resources to return in a single result. Default value is None for backward compatibility. :param sort_keys: Optional. Columns to sort results by. Default: name. :param sort_dirs: Optional. Directions to sort corresponding to sort_keys, "asc" or "desc" can be chosen. Default: asc. :param fields: Optional. A specified list of fields of the resource to be returned. 'id' will be included automatically in fields if it's provided, since it will be used when constructing 'next' link. :param name: Optional. Keep only resources with a specific name. :param scope: Optional. Keep only resources with a specific scope. :param definition: Optional. Keep only resources with a specific definition. :param is_system: Optional. Keep only system actions or ad-hoc actions (if False). :param input: Optional. Keep only resources with a specific input. :param description: Optional. Keep only resources with a specific description. :param tags: Optional. Keep only resources containing specific tags. :param created_at: Optional. Keep only resources created at a specific time and date. :param updated_at: Optional. Keep only resources with specific latest update time and date. :param namespace: Optional. The namespace of the action. """ acl.enforce('actions:list', context.ctx()) filters = filter_utils.create_filters_from_request_params( created_at=created_at, name=name, scope=scope, tags=tags, updated_at=updated_at, description=description, definition=definition, is_system=is_system, input=input, namespace=namespace) LOG.debug( "Fetch actions. marker=%s, limit=%s, sort_keys=%s, " "sort_dirs=%s, filters=%s", marker, limit, sort_keys, sort_dirs, filters) sort_keys = ['name'] if sort_keys is None else sort_keys sort_dirs = ['asc'] if sort_dirs is None else sort_dirs fields = [] if fields is None else fields if fields and 'name' not in fields: fields.insert(0, 'name') rest_utils.validate_query_params(limit, sort_keys, sort_dirs) action_provider = action_service.get_system_action_provider() # Here we assume that the action search might involve DB operations # so we need to apply the regular retrying logic as everywhere else. action_descriptors = rest_utils.rest_retry_on_db_error( action_provider.find_all)(namespace=namespace, limit=limit, sort_fields=sort_keys, sort_dirs=sort_dirs, filters=filters) # We can't guarantee that at this point the collection of action # descriptors is properly filtered and sorted. # Apply filters. action_descriptors = filter( lambda a_d: filter_utils.match_filters(a_d, filters), action_descriptors) # Apply sorting. def compare_(a_d1, a_d2): # TODO(rakhmerov): Implement properly return 0 action_descriptors = sorted(action_descriptors, key=functools.cmp_to_key(compare_)) if limit and limit > 0: action_descriptors = action_descriptors[0:limit] action_resources = [ _action_descriptor_to_resource(a_d) for a_d in action_descriptors ] # TODO(rakhmerov): Fix pagination so that it doesn't work with # the 'id' field as a marker. We can't use IDs anymore. "name" # seems a good candidate for this. return resources.Actions.convert_with_links( action_resources, limit, pecan.request.application_url, sort_keys=','.join(sort_keys), sort_dirs=','.join(sort_dirs), **filters)
def get_all(self, marker=None, limit=None, sort_keys='created_at', sort_dirs='asc', fields=''): """Return a list of workflows. :param marker: Optional. Pagination marker for large data sets. :param limit: Optional. Maximum number of resources to return in a single result. Default value is None for backward compatibility. :param sort_keys: Optional. Columns to sort results by. Default: created_at. :param sort_dirs: Optional. Directions to sort corresponding to sort_keys, "asc" or "desc" can be choosed. Default: asc. :param fields: Optional. A specified list of fields of the resource to be returned. 'id' will be included automatically in fields if it's provided, since it will be used when constructing 'next' link. Where project_id is the same as the requester or project_id is different but the scope is public. """ LOG.info( "Fetch workflows. marker=%s, limit=%s, sort_keys=%s, " "sort_dirs=%s, fields=%s", marker, limit, sort_keys, sort_dirs, fields) if fields and 'id' not in fields: fields.insert(0, 'id') rest_utils.validate_query_params(limit, sort_keys, sort_dirs) rest_utils.validate_fields(fields, Workflow.get_fields()) marker_obj = None if marker: marker_obj = db_api.get_workflow_definition_by_id(marker) db_workflows = db_api.get_workflow_definitions(limit=limit, marker=marker_obj, sort_keys=sort_keys, sort_dirs=sort_dirs, fields=fields) workflows_list = [] for data in db_workflows: workflow_dict = (dict(zip(fields, data)) if fields else data.to_dict()) workflows_list.append(Workflow.from_dict(workflow_dict)) return Workflows.convert_with_links( workflows_list, limit, pecan.request.host_url, sort_keys=','.join(sort_keys), sort_dirs=','.join(sort_dirs), fields=','.join(fields) if fields else '')