def post(self, rule_id): """ Move a replication rule. .. :quickref: MoveRule; move 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() rse_expression = param_get(parameters, 'rse_expression') rule_id = param_get(parameters, 'rule_id', default=rule_id) try: rule_ids = move_replication_rule( rule_id=rule_id, rse_expression=rse_expression, issuer=request.environ.get('issuer'), vo=request.environ.get('vo')) 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): """ Move 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: params = loads(json_data) rule_id = params['rule_id'] rse_expression = params['rse_expression'] except ValueError: raise generate_http_error(400, 'ValueError', 'Cannot decode json parameter list') try: rule_ids = move_replication_rule(rule_id=rule_id, rse_expression=rse_expression, issuer=ctx.env.get('issuer'), vo=ctx.env.get('vo')) 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): """ Move a replication rule. .. :quickref: MoveRule; move 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: params = loads(json_data) rule_id = params['rule_id'] rse_expression = params['rse_expression'] except ValueError: return generate_http_error_flask( 400, 'ValueError', 'Cannot decode json parameter list') try: rule_ids = move_replication_rule( rule_id=rule_id, rse_expression=rse_expression, issuer=request.environ.get('issuer')) 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)
def post(self, rule_id): """ --- summary: Move 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: - rse_expression properties: rse_expression: description: The new rse expression. type: string rule_id: description: The rule_id of the rule to moves. If specified, overrides the `rule_id` parameter. type: string activity: description: The `activity` of the moved rule. type: string source_replica_expression: description: The `source_replica_expression` of the moved rule. type: string 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() rse_expression = param_get(parameters, 'rse_expression') rule_id = param_get(parameters, 'rule_id', default=rule_id) override = param_get(parameters, 'override', default={}) # For backwards-compatibility, deprecate in the future. activity = param_get(parameters, 'activity', default=None) if activity and 'activity' not in override: override['activity'] = activity source_replica_expression = param_get(parameters, 'source_replica_expression', default=None) if source_replica_expression and 'source_replica_expression' not in override: override['source_replica_expression'] = source_replica_expression try: rule_ids = move_replication_rule( rule_id=rule_id, rse_expression=rse_expression, override=override, issuer=request.environ.get('issuer'), vo=request.environ.get('vo')) 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)