def PUT(self, account): """ update a parameter for a given account name HTTP Success: 200 OK HTTP Error: 401 Unauthorized 404 Not Found 500 InternalError """ json_data = data().decode() try: parameter = loads(json_data) except ValueError: raise generate_http_error( 400, 'ValueError', 'cannot decode json parameter dictionary') for key, value in parameter.items(): try: update_account(account, key=key, value=value, issuer=ctx.env.get('issuer'), vo=ctx.env.get('vo')) except ValueError: raise generate_http_error(400, 'ValueError', 'Unknown value %s' % value) except AccessDenied as error: raise generate_http_error(401, 'AccessDenied', error.args[0]) except AccountNotFound as error: raise generate_http_error(404, 'AccountNotFound', error.args[0]) except Exception as error: raise InternalError(error) raise OK()
def DELETE(self, rse, qos_policy): """ Delete QoS policy from an RSE. :param rse: the RSE name. :param qos_policy: the QoS policy. """ header('Content-Type', 'application/json') try: delete_qos_policy(rse=rse, qos_policy=qos_policy, issuer=ctx.env.get('issuer'), vo=ctx.env.get('vo')) except RSENotFound as error: raise generate_http_error(404, 'RSENotFound', error.args[0]) except RucioException as error: raise generate_http_error(500, error.__class__.__name__, error.args[0]) except Exception as error: print(format_exc()) raise InternalError(error) raise OK()
def PUT(self, rse): """ Update RSE limits. HTTP Success: 200 Updated HTTP Error: 400 Bad Request 401 Unauthorized 404 Not Found 409 Conflict 500 Internal Error :param rse: The RSE name. """ header('Content-Type', 'application/json') json_data = data().decode() try: parameter = loads(json_data) except ValueError: raise generate_http_error( 400, 'ValueError', 'Cannot decode json parameter dictionary') try: set_rse_limits(rse=rse, issuer=ctx.env.get('issuer'), **parameter) except AccessDenied as error: raise generate_http_error(401, 'AccessDenied', error.args[0]) except RSENotFound as error: raise generate_http_error(404, 'RSENotFound', error.args[0]) except RucioException as error: raise generate_http_error(500, error.__class__.__name__, error.args[0]) except Exception as error: print(format_exc()) raise InternalError(error) raise OK()
def DELETE(self): """ Delete file replicas at a given RSE. HTTP Success: 200 Ok HTTP Error: 401 Unauthorized 409 Conflict 500 Internal Error """ json_data = data() try: parameters = parse_response(json_data) except ValueError: raise generate_http_error(400, 'ValueError', 'Cannot decode json parameter list') try: delete_replicas(rse=parameters['rse'], files=parameters['files'], issuer=ctx.env.get('issuer'), vo=ctx.env.get('vo'), ignore_availability=parameters.get('ignore_availability', False)) except AccessDenied as error: raise generate_http_error(401, 'AccessDenied', error.args[0]) except RSENotFound as error: raise generate_http_error(404, 'RSENotFound', error.args[0]) except ResourceTemporaryUnavailable as error: raise generate_http_error(503, 'ResourceTemporaryUnavailable', error.args[0]) except ReplicaNotFound as error: raise generate_http_error(404, 'ReplicaNotFound', error.args[0]) except RucioException as error: raise generate_http_error(500, error.__class__.__name__, error.args[0]) except Exception as error: print(format_exc()) raise InternalError(error) raise OK()
HTTP Error: 401 Unauthorized 404 Not Found 500 InternalError :param rse: RSE name. """ try: del_rse(rse=rse, issuer=ctx.env.get('issuer')) except RSENotFound, error: raise generate_http_error(404, 'RSENotFound', error.args[0][0]) except AccessDenied, error: raise generate_http_error(401, 'AccessDenied', error.args[0][0]) raise OK() class Attributes(object): """ Create, update, get and disable RSE attribute.""" def POST(self, rse, key): """ create rse with given RSE name. HTTP Success: 201 Created HTTP Error: 400 Bad request 401 Unauthorized 500 Internal Error
class Rule: """ REST APIs for replication rules. """ def GET(self, rule_id): """ get rule information for given rule id. HTTP Success: 200 OK HTTP Error: 401 Unauthorized 404 Not Found 500 InternalError :returns: JSON dict containing informations about the requested user. """ header('Content-Type', 'application/json') try: estimate_ttc = False json_data = data() params = loads(json_data) if 'estimate_ttc' in params: estimate_ttc = params['estimate_ttc'] except ValueError: estimate_ttc = False try: rule = get_replication_rule(rule_id, estimate_ttc=estimate_ttc) except RuleNotFound as error: raise generate_http_error(404, 'RuleNotFound', error.args[0][0]) except RucioException as error: raise generate_http_error(500, error.__class__.__name__, error.args[0]) except Exception as error: raise InternalError(error) return render_json(**rule) def PUT(self, rule_id): """ Update the replication rules locked flag . HTTP Success: 200 OK HTTP Error: 401 Unauthorized 404 Not Found 500 InternalError """ json_data = data() try: params = loads(json_data) options = params['options'] update_replication_rule(rule_id=rule_id, options=options, issuer=ctx.env.get('issuer')) except AccessDenied as error: raise generate_http_error(401, 'AccessDenied', error.args[0][0]) except RuleNotFound as error: raise generate_http_error(404, 'RuleNotFound', error.args[0][0]) except AccountNotFound as error: raise generate_http_error(404, 'AccountNotFound', error.args[0][0]) except ScratchDiskLifetimeConflict as error: raise generate_http_error(409, 'ScratchDiskLifetimeConflict', error.args[0]) except ValueError: raise generate_http_error(400, 'ValueError', 'Cannot decode json parameter list') except UnsupportedOperation as error: raise generate_http_error(409, 'UnsupportedOperation', error.args[0]) except RucioException as error: raise generate_http_error(500, error.__class__.__name__, error.args[0]) raise OK() def DELETE(self, rule_id): """ Delete a new replication rule. HTTP Success: 200 OK HTTP Error: 401 Unauthorized 404 Not Found 500 Internal Error """ json_data = data() try: purge_replicas = None params = loads(json_data) if 'purge_replicas' in params: purge_replicas = params['purge_replicas'] except ValueError: raise generate_http_error(400, 'ValueError', 'Cannot decode json parameter list') try: delete_replication_rule(rule_id=rule_id, purge_replicas=purge_replicas, issuer=ctx.env.get('issuer')) except AccessDenied as error: raise generate_http_error(401, 'AccessDenied', error.args[0][0]) except UnsupportedOperation as error: raise generate_http_error(401, 'UnsupportedOperation', error.args[0][0]) except RuleNotFound as error: raise generate_http_error(404, 'RuleNotFound', error.args[0][0]) except Exception, error: raise InternalError(error) raise OK()