Ejemplo n.º 1
0
    from urllib.parse import parse_qsl

LOGGER = getLogger("rucio.rule")
SH = StreamHandler()
SH.setLevel(DEBUG)
LOGGER.addHandler(SH)

URLS = insert_scope_name((
    '/(.+)/locks',
    'ReplicaLocks',
    '/(.+)/reduce',
    'ReduceRule',
    '/(.+)/move',
    'MoveRule',
    '%s/history',
    'RuleHistoryFull',
    '/(.+)/history',
    'RuleHistory',
    '/(.+)/analysis',
    'RuleAnalysis',
    '/',
    'AllRule',
    '/(.+)',
    'Rule',
))


class Rule:
    """ REST APIs for replication rules. """
    @check_accept_header_wrapper(['application/json'])
    def GET(self, rule_id):
        """ get rule information for given rule id.
Ejemplo n.º 2
0
    '/accounts/(.+)/usage/global/(.+)', 'AGlobalUsage',
    '/accounts/(.+)/usage/', 'ALocalUsage', '/accounts/(.+)/usage/(.+)',
    'ALocalUsage', '/accounts/(.+)', 'AAccountParameter', '/accounts/?$',
    'AAccount'
]

URLS += [
    '/accountlimits/local/(.+)/(.+)',
    'ALLocalAccountLimit',
    '/accountlimits/global/(.+)/(.+)',
    'ALGlobalAccountLimit',
    '/accountlimits/(.+)/(.+)',
    'ALLocalAccountLimit',
]

URLS += insert_scope_name(('/archives%s/files', 'AVArchive'))

URLS += [
    '/config/(.+)/(.+)/(.*)', 'COptionSet', '/config/(.+)/(.+)',
    'COptionGetDel', '/config/(.+)', 'CSection', '/config', 'CConfig'
]

URLS += insert_scope_name((
    '/dids/(.*)/$',
    'DScope',
    '/dids/(.*)/guid',
    'DGUIDLookup',
    '/dids/(.*)/dids/search',
    'DSearch',
    '/dids%s/files',
    'DFiles',
Ejemplo n.º 3
0
from rucio.core.rse import get_rses_with_attribute_value, get_rse_name
from rucio.db.sqla.constants import RequestState
from rucio.web.rest.common import rucio_loadhook, RucioController, exception_wrapper, check_accept_header_wrapper
from rucio.web.rest.utils import generate_http_error

try:
    from urlparse import parse_qs
except ImportError:
    from urllib.parse import parse_qs

LOGGER = getLogger("rucio.request")
SH = StreamHandler()
SH.setLevel(DEBUG)
LOGGER.addHandler(SH)

URLS = insert_scope_name(('%s/(.+)', 'RequestGet', '/list', 'RequestsGet'))


class RequestGet(RucioController):
    """ REST API to get requests. """
    @exception_wrapper
    @check_accept_header_wrapper(['application/json'])
    def GET(self, scope, name, rse):
        """
        List request for given DID to a destination RSE.

        HTTP Success:
            200 OK

        HTTP Error:
            401 Unauthorized
Ejemplo n.º 4
0
from rucio.web.rest.utils import generate_http_error
from six import string_types
from web import application, ctx, Created, data, header, InternalError, loadhook, OK, unloadhook

try:
    from urllib import unquote
    from urlparse import parse_qs
except ImportError:
    from urllib.parse import unquote
    from urllib.parse import parse_qs

URLS = insert_scope_name(
    ('/list/?$', 'ListReplicas', '/?$', 'Replicas', '/suspicious/?$',
     'SuspiciousReplicas', '/bad/states/?$', 'BadReplicasStates',
     '/bad/summary/?$', 'BadReplicasSummary', '/bad/dids/?$', 'BadDIDs',
     '/bad/pfns/?$', 'BadPFNs', '/rse/(.*)/?$', 'ReplicasRSE', '/bad/?$',
     'BadReplicas', '/dids/?$', 'ReplicasDIDs', '%s/datasets$',
     'DatasetReplicas', '/datasets_bulk/?$', 'DatasetReplicasBulk',
     '%s/datasets_vp$', 'DatasetReplicasVP', '%s/?$', 'Replicas',
     '/tombstone/?$', 'Tombstone'))


class Replicas(RucioController):
    @check_accept_header_wrapper(
        ['application/x-json-stream', 'application/metalink4+xml'])
    def GET(self, scope, name):
        """
        List all replicas for data identifiers.

        HTTP Success:
            200 OK
Ejemplo n.º 5
0
from rucio.common.schema import insert_scope_name
from rucio.core.replica_sorter import site_selector, sort_replicas
from rucio.web.rest.common import RucioController, check_accept_header_wrapper
from rucio.web.rest.utils import generate_http_error

try:
    from urlparse import parse_qs
except ImportError:
    from urllib.parse import parse_qs

LOGGER = getLogger("rucio.rucio")
SH = StreamHandler()
SH.setLevel(DEBUG)
LOGGER.addHandler(SH)

URLS = insert_scope_name(
    ('%s/metalink?$', 'MetaLinkRedirector', '%s/?$', 'HeaderRedirector'))


class MetaLinkRedirector(RucioController):
    @check_accept_header_wrapper(['application/metalink4+xml'])
    def GET(self, scope, name):
        """
        Metalink redirect

        HTTP Success:
            200 OK

        HTTP Error:
            401 Unauthorized
            500 InternalError
            404 Notfound
Ejemplo n.º 6
0
URLS = insert_scope_name((
    '/(.*)/$',
    'Scope',
    '/(.*)/guid',
    'GUIDLookup',
    '/(.*)/dids/search',
    'Search',
    '/(.*)/dids/search_extended',
    'SearchExtended',
    '%s/files',
    'Files',
    '%s/dids/history',
    'AttachmentHistory',
    '%s/dids',
    'Attachment',
    '%s/meta/(.*)',
    'SingleMeta',
    '%s/meta',
    'Meta',
    '%s/status',
    'DIDs',
    '%s/rules',
    'Rules',
    '%s/parents',
    'Parents',
    '%s/associated_rules',
    'AssociatedRules',
    '%s/did_meta',
    'DidMeta',
    '/(.*)/(.*)/(.*)/(.*)/(.*)/sample',
    'Sample',
    '',
    'BulkDIDS',
    '/attachments',
    'Attachments',
    '/new',
    'NewDIDs',
    '/resurrect',
    'Resurrect',
    '%s/follow',
    'Follow',
    '/bulkmeta',
    'BulkMeta',
    '%s',
    'DIDs',
))
Ejemplo n.º 7
0
from __future__ import print_function
from json import dumps
from logging import getLogger, StreamHandler, DEBUG
from traceback import format_exc
from web import application, ctx, loadhook, header, InternalError

from rucio.api.did import list_archive_content
from rucio.common.schema import insert_scope_name
from rucio.web.rest.common import rucio_loadhook, RucioController, check_accept_header_wrapper

LOGGER, SH = getLogger("rucio.meta"), StreamHandler()
SH.setLevel(DEBUG)
LOGGER.addHandler(SH)

URLS = insert_scope_name(('%s/files', 'Archive'))


class Archive(RucioController):
    """ REST APIs for archive. """
    @check_accept_header_wrapper(['application/x-json-stream'])
    def GET(self, scope, name):
        """
        List archive content keys.

        HTTP Success:
            200 Success
        HTTP Error:
            406 Not Acceptable
        """
        header('Content-Type', 'application/x-json-stream')
Ejemplo n.º 8
0
from rucio.common.schema import insert_scope_name
from rucio.common.utils import render_json
from rucio.web.rest.common import rucio_loadhook, check_accept_header_wrapper
from rucio.web.rest.utils import generate_http_error

try:
    from urlparse import parse_qs
except ImportError:
    from urllib.parse import parse_qs

LOGGER = getLogger("rucio.lock")
SH = StreamHandler()
SH.setLevel(DEBUG)
LOGGER.addHandler(SH)

URLS = insert_scope_name(('%s', 'LockByScopeName', '/(.*)', 'LockByRSE'))


class LockByRSE(object):
    """ REST APIs for dataset locks. """
    @check_accept_header_wrapper(['application/x-json-stream'])
    def GET(self, rse):
        """ get locks for a given rse.

        HTTP Success:
            200 OK

        HTTP Error:
            404 Not Found
            406 Not Acceptable
            500 InternalError