def GET(self, scope, name): """ List dataset replicas for a DID (scope:name) using the Virtual Placement service. NOTICE: This is an RnD function and might change or go away at any time. HTTP Success: 200 OK HTTP Error: 401 Unauthorized 406 Not Acceptable 500 InternalError :returns: If VP exists a list of dicts of sites, otherwise nothing """ header('Content-Type', 'application/x-json-stream') deep = False if ctx.query: try: params = loads(unquote(ctx.query[1:])) except ValueError: params = parse_qs(ctx.query[1:]) if 'deep' in params: deep = params['deep'][0] try: for row in list_dataset_replicas_vp(scope=scope, name=name, deep=deep, vo=ctx.env.get('vo')): yield dumps(row, cls=APIEncoder) + '\n' 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)
def generate(_deep, vo): for row in list_dataset_replicas_vp(scope=scope, name=name, deep=_deep, vo=vo): yield dumps(row, cls=APIEncoder) + '\n'