def get(self, account, rse=None): """ get the current local limits for an account on a specific RSE .. :quickref: LocalAccountLimits; Get local account limits. :param account: The account name. :param rse: The rse name. :resheader Content-Type: application/json :status 200: OK. :status 401: Invalid auth token. :status 404: RSE not found. :status 406: Not Acceptable. :returns: JSON dict containing informations about the requested user. """ try: if rse: limits = get_local_account_limit(account=account, rse=rse, vo=request.environ.get('vo')) else: limits = get_local_account_limits(account=account, vo=request.environ.get('vo')) except RSENotFound as error: return generate_http_error_flask(404, error) return Response(render_json(**limits), content_type="application/json")
def GET(self, account, rse=None): """ get the current limits for an account on a specific RSE HTTP Success: 200 OK HTTP Error: 404 Not Found 406 Not Acceptable 500 InternalError :param X-Rucio-Account: Account identifier. :param X-Rucio-Auth-Token: as an 32 character hex string. :param account: The account name. :param rse: The rse name. :returns: JSON dict containing informations about the requested user. """ header('Content-Type', 'application/json') try: if rse: limits = get_local_account_limit(account=account, rse=rse, vo=ctx.env.get('vo')) else: limits = get_local_account_limits(account=account, vo=ctx.env.get('vo')) except RSENotFound as error: raise generate_http_error(404, 'RSENotFound', error.args[0]) return render_json(**limits)
def get(self, account, rse=None): """ --- summary: Get local limit description: Get the current local limits for an account on a specific RSE. tags: - Account parameters: - name: account in: path description: The account identifier. schema: type: string style: simple - name: rse in: path description: The rse identifier. schema: type: string style: simple responses: 200: description: OK content: application/json: schema: description: Json object with rse identifiers as keys and account limits in bytes as values. type: object 401: description: Invalid Auth Token 404: description: RSE not found 406: description: Not Acceptable """ try: if rse: limits = get_local_account_limit(account=account, rse=rse, vo=request.environ.get('vo')) else: limits = get_local_account_limits(account=account, vo=request.environ.get('vo')) except RSENotFound as error: return generate_http_error_flask(404, error) return Response(render_json(**limits), content_type="application/json")
def test_api_account_limit(self): """ ACCOUNT_LIMIT (API): Test external representation of account limits """ # Add mock account limits rse_expr = '{}|{}'.format(self.rse_name, self.rse2_name) api_acc_lim.set_local_account_limit(self.account_name, self.rse_name, 10000, issuer='root', **self.vo) api_acc_lim.set_global_account_limit(self.account_name, rse_expr, 20000, issuer='root', **self.vo) out = api_acc_lim.get_local_account_limits(self.account_name, **self.vo) assert_in(self.rse_name, out) assert_not_in(self.rse_id, out) out = api_acc_lim.get_local_account_limit(self.account_name, self.rse_name, **self.vo) assert_in(self.rse_name, out) assert_not_in(self.rse_id, out) out = api_acc_lim.get_global_account_limits(self.account_name, **self.vo) assert_in(rse_expr, out) if self.multi_vo: assert_not_in('vo={}&({})'.format(self.vo['vo'], rse_expr), out) out = api_acc_lim.get_global_account_limit(self.account_name, rse_expr, **self.vo) assert_in(rse_expr, out) if self.multi_vo: assert_not_in('vo={}&({})'.format(self.vo['vo'], rse_expr), out) out = api_acc_lim.get_local_account_usage(self.account_name, self.rse_name, issuer='root', **self.vo) out = list(out) assert_not_equal(0, len(out)) assert_in(self.rse_id, [usage['rse_id'] for usage in out if 'rse_id' in usage]) for usage in out: if 'rse_id' in usage: assert_in('rse', usage) if usage['rse_id'] == self.rse_id: assert_equal(self.rse_name, usage["rse"]) out = api_acc_lim.get_global_account_usage(self.account_name, rse_expr, issuer='root', **self.vo) out = list(out) assert_not_equal(0, len(out)) assert_in(rse_expr, [usage['rse_expression'] for usage in out if 'rse_expression' in usage])
def test_api_account_limit(self): """ ACCOUNT_LIMIT (API): Test external representation of account limits """ # Add mock account limits rse_expr = '{}|{}'.format(self.rse_name, self.rse2_name) api_acc_lim.set_local_account_limit(self.account_name, self.rse_name, 10000, issuer='root', **self.vo) api_acc_lim.set_global_account_limit(self.account_name, rse_expr, 20000, issuer='root', **self.vo) out = api_acc_lim.get_local_account_limits(self.account_name, **self.vo) assert self.rse_name in out assert self.rse_id not in out out = api_acc_lim.get_local_account_limit(self.account_name, self.rse_name, **self.vo) assert self.rse_name in out assert self.rse_id not in out out = api_acc_lim.get_global_account_limits(self.account_name, **self.vo) assert rse_expr in out if self.multi_vo: assert 'vo={}&({})'.format(self.vo['vo'], rse_expr) not in out out = api_acc_lim.get_global_account_limit(self.account_name, rse_expr, **self.vo) assert rse_expr in out if self.multi_vo: assert 'vo={}&({})'.format(self.vo['vo'], rse_expr) not in out out = api_acc_lim.get_local_account_usage(self.account_name, self.rse_name, issuer='root', **self.vo) out = list(out) assert 0 != len(out) assert self.rse_id in [usage['rse_id'] for usage in out if 'rse_id' in usage] for usage in out: if 'rse_id' in usage: assert 'rse' in usage if usage['rse_id'] == self.rse_id: assert self.rse_name == usage["rse"] out = api_acc_lim.get_global_account_usage(self.account_name, rse_expr, issuer='root', **self.vo) out = list(out) assert 0 != len(out) assert rse_expr in [usage['rse_expression'] for usage in out if 'rse_expression' in usage]