def post(self, rule_id): """ Reduce a replication rule. .. :quickref: ReduceRule; reduce rule :status 200: Rule found. :status 401: Invalid Auth Token. :status 404: no rule found for id. :status 409: Rule replace failed. :returns: List of rule ids """ parameters = json_parameters() copies = param_get(parameters, 'copies') exclude_expression = param_get(parameters, 'exclude_expression', default=None) try: rule_ids = reduce_replication_rule( rule_id=rule_id, copies=copies, exclude_expression=exclude_expression, issuer=request.environ.get('issuer'), vo=request.environ.get('vo')) # TODO: Add all other error cases here except RuleReplaceFailed as error: return generate_http_error_flask(409, error) except RuleNotFound as error: return generate_http_error_flask(404, error) return Response(dumps(rule_ids), status=201)
def post(self, rule_id): """ --- summary: Reduce a replication rule tags: - Rule parameters: - name: rule_id in: path description: The id of the replication rule. schema: type: string style: simple requestBody: content: 'application/json': schema: type: object required: - copies properties: copies: description: Number of copies to keep. type: integer responses: 200: description: OK content: application/json: schema: type: array items: type: string description: Rule id. 401: description: Invalid Auth Token 404: description: No rule found for the given id 409: description: Rule replace failed. """ parameters = json_parameters() copies = param_get(parameters, 'copies') exclude_expression = param_get(parameters, 'exclude_expression', default=None) try: rule_ids = reduce_replication_rule( rule_id=rule_id, copies=copies, exclude_expression=exclude_expression, issuer=request.environ.get('issuer'), vo=request.environ.get('vo')) # TODO: Add all other error cases here except RuleReplaceFailed as error: return generate_http_error_flask(409, error) except RuleNotFound as error: return generate_http_error_flask(404, error) return Response(dumps(rule_ids), status=201)
def POST(self, rule_id): """ Reduce a replication rule. HTTP Success: 201 Created HTTP Error: 400 Bad Request 401 Unauthorized 404 Not Found 409 Conflict 500 Internal Error """ json_data = data() try: exclude_expression = None params = loads(json_data) copies = params['copies'] if 'exclude_expression' in params: exclude_expression = params['exclude_expression'] except ValueError: raise generate_http_error(400, 'ValueError', 'Cannot decode json parameter list') try: rule_ids = reduce_replication_rule( rule_id=rule_id, copies=copies, exclude_expression=exclude_expression, issuer=ctx.env.get('issuer'), vo=ctx.env.get('vo')) # TODO: Add all other error cases here except RuleReplaceFailed as error: raise generate_http_error(409, 'RuleReplaceFailed', error.args[0]) except RuleNotFound as error: raise generate_http_error(404, 'RuleNotFound', error.args[0]) except RucioException as error: raise generate_http_error(500, error.__class__.__name__, error.args[0]) except Exception as error: print(error) print(format_exc()) raise InternalError(error) raise Created(dumps(rule_ids))
def post(self, rule_id): """ Reduce a replication rule. .. :quickref: ReduceRule; reduce rule :status 200: Rule found. :status 401: Invalid Auth Token. :status 404: no rule found for id. :status 409: Rule replace failed. :returns: List of rule ids """ json_data = request.data try: exclude_expression = None params = loads(json_data) copies = params['copies'] if 'exclude_expression' in params: exclude_expression = params['exclude_expression'] except ValueError: return generate_http_error_flask( 400, 'ValueError', 'Cannot decode json parameter list') try: rule_ids = reduce_replication_rule( rule_id=rule_id, copies=copies, exclude_expression=exclude_expression, issuer=request.environ.get('issuer')) # TODO: Add all other error cases here except RuleReplaceFailed as error: return generate_http_error_flask(409, 'RuleReplaceFailed', error.args[0]) except RuleNotFound as error: return generate_http_error_flask(404, 'RuleNotFound', error.args[0]) except RucioException as error: return generate_http_error_flask(500, error.__class__.__name__, error.args[0]) except Exception as error: print(error) print(format_exc()) return error, 500 return Response(dumps(rule_ids), status=201)