def list_taskmodules(): """ Return a list of task module identifiers. """ taskmodules = get_available_taskmodules() g.audit_object.log({"success": True}) return send_result(taskmodules)
def set_periodic_task_api(): """ Create or replace an existing periodic task definition. :param id: ID of an existing periodic task definition that should be updated :param name: Name of the periodic task :param active: true if the periodic task should be active :param retry_if_failed: privacyIDEA will retry to execute the task if failed :param interval: Interval at which the periodic task should run (in cron syntax) :param nodes: Comma-separated list of nodes on which the periodic task should run :param taskmodule: Task module name of the task :param ordering: Ordering of the task, must be a number >= 0. :param options: A dictionary (possibly JSON) of periodic task options, mapping unicodes to unicodes :return: ID of the periodic task """ param = request.all_data ptask_id = getParam(param, "id", optional=True) if ptask_id is not None: ptask_id = int(ptask_id) name = getParam(param, "name", optional=False) active = is_true(getParam(param, "active", default=True)) retry_if_failed = is_true(getParam(param, "retry_if_failed", default=True)) interval = getParam(param, "interval", optional=False) node_string = getParam(param, "nodes", optional=False) if node_string.strip(): node_list = [node.strip() for node in node_string.split(",")] else: raise ParameterError(u"nodes: expected at least one node") taskmodule = getParam(param, "taskmodule", optional=False) if taskmodule not in get_available_taskmodules(): raise ParameterError("Unknown task module: {!r}".format(taskmodule)) ordering = int(getParam(param, "ordering", optional=False)) options = getParam(param, "options", optional=True) if options is None: options = {} elif not isinstance(options, dict): options = json.loads(options) if not isinstance(options, dict): raise ParameterError(u"options: expected dictionary, got {!r}".format(options)) result = set_periodic_task(name, interval, node_list, taskmodule, ordering, options, active, ptask_id, retry_if_failed) g.audit_object.log({"success": True, "info": result}) return send_result(result)
def set_periodic_task_api(): """ Create or replace an existing periodic task definition. :param id: ID of an existing periodic task definition that should be updated :param name: Name of the periodic task :param active: true if the periodic task should be active :param interval: Interval at which the periodic task should run (in cron syntax) :param nodes: Comma-separated list of nodes on which the periodic task should run :param taskmodule: Task module name of the task :param ordering: Ordering of the task, must be a number >= 0. :param options: A dictionary (possibly JSON) of periodic task options, mapping unicodes to unicodes :return: ID of the periodic task """ param = request.all_data ptask_id = getParam(param, "id", optional=True) if ptask_id is not None: ptask_id = int(ptask_id) name = getParam(param, "name", optional=False) active = is_true(getParam(param, "active", default=True)) interval = getParam(param, "interval", optional=False) node_string = getParam(param, "nodes", optional=False) if node_string.strip(): node_list = [node.strip() for node in node_string.split(",")] else: raise ParameterError(u"nodes: expected at least one node") taskmodule = getParam(param, "taskmodule", optional=False) if taskmodule not in get_available_taskmodules(): raise ParameterError("Unknown task module: {!r}".format(taskmodule)) ordering = int(getParam(param, "ordering", optional=False)) options = getParam(param, "options", optional=True) if options is None: options = {} elif not isinstance(options, dict): options = json.loads(options) if not isinstance(options, dict): raise ParameterError(u"options: expected dictionary, got {!r}".format(options)) result = set_periodic_task(name, interval, node_list, taskmodule, ordering, options, active, ptask_id) g.audit_object.log({"success": True, "info": result}) return send_result(result)