rucio-clients 38.4.0__py3-none-any.whl → 38.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rucio-clients might be problematic. Click here for more details.
- rucio/cli/bin_legacy/rucio.py +12 -7
- rucio/cli/bin_legacy/rucio_admin.py +9 -2
- rucio/cli/replica.py +6 -2
- rucio/cli/rule.py +0 -1
- rucio/cli/scope.py +9 -0
- rucio/cli/utils.py +11 -0
- rucio/client/downloadclient.py +3 -1
- rucio/client/scopeclient.py +40 -1
- rucio/common/didtype.py +18 -11
- rucio/vcsversion.py +3 -3
- {rucio_clients-38.4.0.data → rucio_clients-38.5.0.data}/data/etc/rucio.cfg.template +2 -3
- {rucio_clients-38.4.0.dist-info → rucio_clients-38.5.0.dist-info}/METADATA +1 -1
- {rucio_clients-38.4.0.dist-info → rucio_clients-38.5.0.dist-info}/RECORD +23 -23
- {rucio_clients-38.4.0.data → rucio_clients-38.5.0.data}/data/etc/rse-accounts.cfg.template +0 -0
- {rucio_clients-38.4.0.data → rucio_clients-38.5.0.data}/data/etc/rucio.cfg.atlas.client.template +0 -0
- {rucio_clients-38.4.0.data → rucio_clients-38.5.0.data}/data/requirements.client.txt +0 -0
- {rucio_clients-38.4.0.data → rucio_clients-38.5.0.data}/data/rucio_client/merge_rucio_configs.py +0 -0
- {rucio_clients-38.4.0.data → rucio_clients-38.5.0.data}/scripts/rucio +0 -0
- {rucio_clients-38.4.0.data → rucio_clients-38.5.0.data}/scripts/rucio-admin +0 -0
- {rucio_clients-38.4.0.dist-info → rucio_clients-38.5.0.dist-info}/WHEEL +0 -0
- {rucio_clients-38.4.0.dist-info → rucio_clients-38.5.0.dist-info}/licenses/AUTHORS.rst +0 -0
- {rucio_clients-38.4.0.dist-info → rucio_clients-38.5.0.dist-info}/licenses/LICENSE +0 -0
- {rucio_clients-38.4.0.dist-info → rucio_clients-38.5.0.dist-info}/top_level.txt +0 -0
rucio/cli/bin_legacy/rucio.py
CHANGED
|
@@ -36,7 +36,7 @@ from tabulate import tabulate
|
|
|
36
36
|
|
|
37
37
|
# rucio module has the same name as this executable module, so this rule fails. pylint: disable=no-name-in-module
|
|
38
38
|
from rucio import version
|
|
39
|
-
from rucio.cli.utils import exception_handler, get_client, setup_gfal2_logger, signal_handler
|
|
39
|
+
from rucio.cli.utils import exception_handler, get_client, scope_exists, setup_gfal2_logger, signal_handler
|
|
40
40
|
from rucio.client.richclient import MAX_TRACEBACK_WIDTH, MIN_CONSOLE_WIDTH, CLITheme, generate_table, get_cli_config, get_pager, print_output, setup_rich_logger
|
|
41
41
|
from rucio.common.client import detect_client_location
|
|
42
42
|
from rucio.common.config import config_get, config_get_float
|
|
@@ -48,7 +48,6 @@ from rucio.common.exception import (
|
|
|
48
48
|
InvalidType,
|
|
49
49
|
RSENotFound,
|
|
50
50
|
RucioException,
|
|
51
|
-
ScopeNotFound,
|
|
52
51
|
UnsupportedOperation,
|
|
53
52
|
)
|
|
54
53
|
from rucio.common.extra import import_extras
|
|
@@ -459,8 +458,7 @@ def list_dids(args, client, logger, console, spinner):
|
|
|
459
458
|
scope = args.did[0]
|
|
460
459
|
name = '*'
|
|
461
460
|
|
|
462
|
-
|
|
463
|
-
raise ScopeNotFound
|
|
461
|
+
scope_exists(client, scope)
|
|
464
462
|
|
|
465
463
|
if args.recursive and '*' in name:
|
|
466
464
|
raise InputValidationError('Option recursive cannot be used with wildcards.')
|
|
@@ -522,12 +520,19 @@ def list_scopes(args, client, logger, console, spinner):
|
|
|
522
520
|
scopes = client.list_scopes()
|
|
523
521
|
if (cli_config == 'rich') and (not args.csv):
|
|
524
522
|
scopes = [[scope] for scope in sorted(scopes)]
|
|
525
|
-
table = generate_table(scopes, headers=['SCOPE'], col_alignments=['left'])
|
|
523
|
+
table = generate_table(scopes, headers=['SCOPE', 'ACCOUNT'], col_alignments=['left'])
|
|
526
524
|
spinner.stop()
|
|
527
525
|
print_output(table, console=console, no_pager=args.no_pager)
|
|
528
526
|
else:
|
|
529
|
-
|
|
530
|
-
|
|
527
|
+
if isinstance(scopes[0], str): # TODO: Backwards compatibility - remove in v40 issue #8125
|
|
528
|
+
for scope in scopes:
|
|
529
|
+
print(scope)
|
|
530
|
+
elif args.csv:
|
|
531
|
+
for scope in scopes:
|
|
532
|
+
print(scope['scope'])
|
|
533
|
+
else:
|
|
534
|
+
scopes = [[s['scope'], s['account']] for s in scopes]
|
|
535
|
+
print(tabulate(scopes, tablefmt=tablefmt, headers=['SCOPE', 'ACCOUNT'], disable_numparse=True))
|
|
531
536
|
return SUCCESS
|
|
532
537
|
|
|
533
538
|
|
|
@@ -780,8 +780,15 @@ def list_scopes(args, client, logger, console, spinner):
|
|
|
780
780
|
spinner.stop()
|
|
781
781
|
print_output(table, console=console, no_pager=args.no_pager)
|
|
782
782
|
else:
|
|
783
|
-
|
|
784
|
-
|
|
783
|
+
if isinstance(scopes[0], str): # TODO: Backwards compatibility - remove in v40 issue #8125
|
|
784
|
+
for scope in scopes:
|
|
785
|
+
print(scope)
|
|
786
|
+
elif args.csv:
|
|
787
|
+
for scope in scopes:
|
|
788
|
+
print(scope['scope'])
|
|
789
|
+
else:
|
|
790
|
+
scopes = [[s['scope'], s['account']] for s in scopes]
|
|
791
|
+
print(tabulate(scopes, tablefmt=tablefmt, headers=['SCOPE', 'ACCOUNT'], disable_numparse=True))
|
|
785
792
|
return SUCCESS
|
|
786
793
|
|
|
787
794
|
|
rucio/cli/replica.py
CHANGED
|
@@ -129,11 +129,15 @@ def update_bad(ctx, replicas, reason, as_file, collection, lfn, scope, rse):
|
|
|
129
129
|
"""Mark a replica bad"""
|
|
130
130
|
args = {"reason": reason, "allow_collection": collection, "scope": scope, "rse": rse}
|
|
131
131
|
if as_file:
|
|
132
|
-
|
|
132
|
+
if len(replicas) != 1:
|
|
133
|
+
raise ValueError("Exactly one positional argument expected in case as-file")
|
|
134
|
+
args["inputfile"] = replicas[0]
|
|
133
135
|
elif lfn:
|
|
134
136
|
if (scope is None) or (rse is None):
|
|
135
137
|
raise ValueError("Scope and RSE are required when using LFNs")
|
|
136
|
-
|
|
138
|
+
if len(replicas) != 1:
|
|
139
|
+
raise ValueError("Exactly one positional argument expected in case of LFN list")
|
|
140
|
+
args["lfns"] = replicas[0]
|
|
137
141
|
else:
|
|
138
142
|
args["listbadfiles"] = replicas
|
|
139
143
|
declare_bad_file_replicas(Arguments(args), ctx.obj.client, ctx.obj.logger, ctx.obj.console, ctx.obj.spinner)
|
rucio/cli/rule.py
CHANGED
|
@@ -118,7 +118,6 @@ def move(ctx, rule_id, rses, activity, source_rses):
|
|
|
118
118
|
@click.option("--account", help="The account owning the rule")
|
|
119
119
|
@click.option("--stuck", is_flag=True, default=False, help="Set state to STUCK.")
|
|
120
120
|
@click.option('--suspend', is_flag=True, default=None, help='Set state to SUSPENDED.')
|
|
121
|
-
@click.option("--activity", help="Activity of the rule.")
|
|
122
121
|
@click.option("--cancel-requests", is_flag=True, default=False, help="Cancel requests when setting rules to stuck.")
|
|
123
122
|
@click.option("--priority", help="Priority of the requests of the rule.")
|
|
124
123
|
@click.option("--child-rule-id", help='Child rule id of the rule. Use "None" to remove an existing parent/child relationship.')
|
rucio/cli/scope.py
CHANGED
|
@@ -39,3 +39,12 @@ def add_(ctx, account, scope_name):
|
|
|
39
39
|
def list_(ctx: click.Context, account: str, csv: bool):
|
|
40
40
|
"""List existing scopes"""
|
|
41
41
|
list_scopes(Arguments({"no_pager": ctx.obj.no_pager, "account": account, "csv": csv}), ctx.obj.client, ctx.obj.logger, ctx.obj.console, ctx.obj.spinner)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@scope.command("update")
|
|
45
|
+
@click.argument('scope-name')
|
|
46
|
+
@click.option('-a', '--account', help="New account to associate with the scope", required=True)
|
|
47
|
+
@click.pass_context
|
|
48
|
+
def update(ctx: click.Context, scope_name: str, account: str):
|
|
49
|
+
"""Update the ownership of a [SCOPE-NAME]"""
|
|
50
|
+
ctx.obj.client.update_scope_ownership(account=account, scope=scope_name)
|
rucio/cli/utils.py
CHANGED
|
@@ -41,6 +41,7 @@ from rucio.common.exception import (
|
|
|
41
41
|
RSENotFound,
|
|
42
42
|
RucioException,
|
|
43
43
|
RuleNotFound,
|
|
44
|
+
ScopeNotFound,
|
|
44
45
|
UnsupportedOperation,
|
|
45
46
|
)
|
|
46
47
|
from rucio.common.utils import setup_logger
|
|
@@ -260,3 +261,13 @@ class JSONType(click.ParamType):
|
|
|
260
261
|
return json.loads(value)
|
|
261
262
|
except json.JSONDecodeError as e:
|
|
262
263
|
self.fail(f"Invalid JSON: {e}", param, ctx)
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
def scope_exists(client: 'Client', scope: str) -> None:
|
|
267
|
+
possible_scopes = client.list_scopes()
|
|
268
|
+
if isinstance(possible_scopes[0], str): # type: ignore #TODO Backwards Compat - Remove in v40, #8125
|
|
269
|
+
scopes = possible_scopes
|
|
270
|
+
else:
|
|
271
|
+
scopes = [s['scope'] for s in possible_scopes] # type: ignore
|
|
272
|
+
if scope not in scopes: # type: ignore - handled by the if isinstance
|
|
273
|
+
raise ScopeNotFound
|
rucio/client/downloadclient.py
CHANGED
|
@@ -1856,7 +1856,9 @@ class DownloadClient:
|
|
|
1856
1856
|
did_name = did[1]
|
|
1857
1857
|
elif len(did) == 1:
|
|
1858
1858
|
if self.extract_scope_convention == 'belleii':
|
|
1859
|
-
scopes =
|
|
1859
|
+
scopes = self.client.list_scopes()
|
|
1860
|
+
if not isinstance(scopes, list):
|
|
1861
|
+
scopes = [scope['scope'] for scope in scopes]
|
|
1860
1862
|
did_scope, did_name = extract_scope(did[0], scopes)
|
|
1861
1863
|
else:
|
|
1862
1864
|
did = did_str.split('.')
|
rucio/client/scopeclient.py
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
from json import loads
|
|
16
|
+
from typing import TYPE_CHECKING, Any, Literal, Union
|
|
16
17
|
from urllib.parse import quote_plus
|
|
17
18
|
|
|
18
19
|
from requests.status_codes import codes
|
|
@@ -21,6 +22,9 @@ from rucio.client.baseclient import BaseClient, choice
|
|
|
21
22
|
from rucio.common.constants import HTTPMethod
|
|
22
23
|
from rucio.common.utils import build_url
|
|
23
24
|
|
|
25
|
+
if TYPE_CHECKING:
|
|
26
|
+
from collections.abc import Iterator
|
|
27
|
+
|
|
24
28
|
|
|
25
29
|
class ScopeClient(BaseClient):
|
|
26
30
|
|
|
@@ -64,7 +68,7 @@ class ScopeClient(BaseClient):
|
|
|
64
68
|
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
|
65
69
|
raise exc_cls(exc_msg)
|
|
66
70
|
|
|
67
|
-
def list_scopes(self) -> list[str]:
|
|
71
|
+
def list_scopes(self) -> "Union[list[str], Iterator[dict[Literal['scope', 'account'], Any]]]":
|
|
68
72
|
"""
|
|
69
73
|
Sends the request to list all scopes.
|
|
70
74
|
|
|
@@ -83,6 +87,41 @@ class ScopeClient(BaseClient):
|
|
|
83
87
|
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
|
84
88
|
raise exc_cls(exc_msg)
|
|
85
89
|
|
|
90
|
+
def update_scope_ownership(self, account: str, scope: str) -> bool:
|
|
91
|
+
"""
|
|
92
|
+
Change the ownership of a scope
|
|
93
|
+
|
|
94
|
+
Parameters
|
|
95
|
+
----------
|
|
96
|
+
account :
|
|
97
|
+
New account to assign as scope owner
|
|
98
|
+
scope :
|
|
99
|
+
Scope to change ownership of
|
|
100
|
+
|
|
101
|
+
Returns
|
|
102
|
+
-------
|
|
103
|
+
bool
|
|
104
|
+
True if the operation was successful
|
|
105
|
+
|
|
106
|
+
Raises
|
|
107
|
+
------
|
|
108
|
+
AccountNotFound
|
|
109
|
+
If account doesn't exist.
|
|
110
|
+
ScopeNotFound
|
|
111
|
+
If scope doesn't exist.
|
|
112
|
+
CannotAuthenticate, AccessDenied
|
|
113
|
+
Insufficient permission/incorrect credentials to change ownership.
|
|
114
|
+
"""
|
|
115
|
+
|
|
116
|
+
path = '/'.join(['scopes', account, scope])
|
|
117
|
+
url = build_url(choice(self.list_hosts), path=path)
|
|
118
|
+
r = self._send_request(url, method=HTTPMethod.PUT)
|
|
119
|
+
if r.status_code == codes.ok:
|
|
120
|
+
return True
|
|
121
|
+
else:
|
|
122
|
+
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
|
123
|
+
raise exc_cls(exc_msg)
|
|
124
|
+
|
|
86
125
|
def list_scopes_for_account(self, account: str) -> list[str]:
|
|
87
126
|
"""
|
|
88
127
|
Sends the request to list all scopes for a rucio account.
|
rucio/common/didtype.py
CHANGED
|
@@ -15,10 +15,12 @@
|
|
|
15
15
|
"""
|
|
16
16
|
DID type to represent a DID and to simplify operations on it
|
|
17
17
|
"""
|
|
18
|
-
|
|
18
|
+
import logging
|
|
19
|
+
from configparser import NoSectionError
|
|
19
20
|
from typing import Any, Union
|
|
20
21
|
|
|
21
|
-
from rucio.common.exception import DIDError
|
|
22
|
+
from rucio.common.exception import ConfigNotFound, DIDError, InvalidAlgorithmName
|
|
23
|
+
from rucio.common.utils import extract_scope
|
|
22
24
|
|
|
23
25
|
|
|
24
26
|
class DID:
|
|
@@ -126,15 +128,20 @@ class DID:
|
|
|
126
128
|
Construct the DID from a string.
|
|
127
129
|
:param did: string containing the DID information
|
|
128
130
|
"""
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
131
|
+
try:
|
|
132
|
+
self.scope, self.name = extract_scope(did)
|
|
133
|
+
except (ImportError, InvalidAlgorithmName, ConfigNotFound, NoSectionError) as e: # Only use when the policy can not be found
|
|
134
|
+
logging.debug("Failure using extract_scope policy for '%s': %s - Using fallback." % (did, type(e).__name__))
|
|
135
|
+
did_parts = did.split(DID.SCOPE_SEPARATOR, 1)
|
|
136
|
+
if len(did_parts) == 1:
|
|
137
|
+
self.name = did
|
|
138
|
+
self._update_implicit_scope()
|
|
139
|
+
if not self.has_scope():
|
|
140
|
+
error = f"Could not parse scope from did string {did} - fallback policy expects only one '{DID.SCOPE_SEPARATOR}'"
|
|
141
|
+
raise DIDError(error)
|
|
142
|
+
else:
|
|
143
|
+
self.scope = did_parts[0]
|
|
144
|
+
self.name = did_parts[1]
|
|
138
145
|
|
|
139
146
|
def _did_from_dict(self, did: dict[str, str]) -> None:
|
|
140
147
|
"""
|
rucio/vcsversion.py
CHANGED
|
@@ -4,8 +4,8 @@ This file is automatically generated; Do not edit it. :)
|
|
|
4
4
|
'''
|
|
5
5
|
VERSION_INFO = {
|
|
6
6
|
'final': True,
|
|
7
|
-
'version': '38.
|
|
7
|
+
'version': '38.5.0',
|
|
8
8
|
'branch_nick': 'release-38-LTS',
|
|
9
|
-
'revision_id': '
|
|
10
|
-
'revno':
|
|
9
|
+
'revision_id': '430fd3dd8f4dc5103e1e932c9515421e1c515c3e',
|
|
10
|
+
'revno': 14073
|
|
11
11
|
}
|
|
@@ -121,8 +121,8 @@ usercert = /opt/rucio/tools/x509up
|
|
|
121
121
|
|
|
122
122
|
[messaging-fts3]
|
|
123
123
|
port = 61123
|
|
124
|
-
ssl_key_file = /
|
|
125
|
-
ssl_cert_file = /
|
|
124
|
+
ssl_key_file = /etc/grid-security/hostkey.pem
|
|
125
|
+
ssl_cert_file = /etc/grid-security/hostcert.pem
|
|
126
126
|
destination = /topic/transfer.fts_monitoring_queue_state
|
|
127
127
|
brokers = dashb-test-mb.cern.ch
|
|
128
128
|
voname = atlas
|
|
@@ -199,7 +199,6 @@ account = cache_mb
|
|
|
199
199
|
cacert = /opt/rucio/etc/web/ca.crt
|
|
200
200
|
#cacert = /etc/pki/tls/certs/CERN-bundle.pem
|
|
201
201
|
usercert = /opt/rucio/etc/web/usercert.pem
|
|
202
|
-
#usercert = /home/mario/.ssh/usercert_with_key.pem
|
|
203
202
|
|
|
204
203
|
[nagios]
|
|
205
204
|
proxy = /opt/rucio/etc/ddmadmin.proxy.nagios
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
rucio/__init__.py,sha256=Y7cPPlHVQPFyN8bSPFC0W3WViEdONr5g_qwBub5rufE,660
|
|
2
2
|
rucio/alembicrevision.py,sha256=9tnjQLFkTpUEcZqcw-ojWpt4Wbg-5OtMJ0CfjPc0wX8,690
|
|
3
|
-
rucio/vcsversion.py,sha256=
|
|
3
|
+
rucio/vcsversion.py,sha256=gIawRqhnsUg9YGwak_xzJdzx3efjPERJHG5ap15AKF4,248
|
|
4
4
|
rucio/version.py,sha256=IwsNb1QQk0D092QQbR2K9wBPF2Akny1RGs-ZZziUohE,1519
|
|
5
5
|
rucio/cli/__init__.py,sha256=GIkHmxgE3xdvWSf-7ZnvVaJmbs7NokaSjbFzsrXOG9o,662
|
|
6
6
|
rucio/cli/account.py,sha256=2Fe-iEaTfLxqlW5mDJsJPwD-Etm4VqaMowTSA67hZIo,9458
|
|
@@ -10,16 +10,16 @@ rucio/cli/did.py,sha256=viwJC07AvEneC6_E307Q9nybWti-iYalwphNOpfQXLE,9041
|
|
|
10
10
|
rucio/cli/download.py,sha256=kIB_n45egqBp4inVFmUXdofFAmlPkdAgxLTpPlG4WLM,6241
|
|
11
11
|
rucio/cli/lifetime_exception.py,sha256=joi9HdaiYP_g3115IR_ImX7oFlEg1xbSaK-IzmoIVcY,1498
|
|
12
12
|
rucio/cli/opendata.py,sha256=UfUGDolu-d7hzlH26uhXk5YcD4HcF-R891GH11mwlLU,7329
|
|
13
|
-
rucio/cli/replica.py,sha256=
|
|
13
|
+
rucio/cli/replica.py,sha256=qFsOyJjJM5GY-BctVcDCQpja7cNLcBZpBNd4S-SvaFw,8907
|
|
14
14
|
rucio/cli/rse.py,sha256=J2IjCGUzvv9U0swFcU0ykZ1pYweHqTlXwmpGfSI-VgE,11490
|
|
15
|
-
rucio/cli/rule.py,sha256=
|
|
16
|
-
rucio/cli/scope.py,sha256=
|
|
15
|
+
rucio/cli/rule.py,sha256=3f-RP--CLdx5RrdIbgYYqvptb_oyZgAh1IVwmP5U83E,9032
|
|
16
|
+
rucio/cli/scope.py,sha256=uQFbjXDsPWv10fMd2jx9JauopkH7bKfILtzY4QF5I40,2060
|
|
17
17
|
rucio/cli/subscription.py,sha256=kx1ox3OkWqdwfdflhdsv00XSYI6nnUZCp97YBZa4Aw4,4269
|
|
18
18
|
rucio/cli/upload.py,sha256=29gJGfb7jsiA6-UwPCSg1kGZu-OJ-bdxUZr27S2mJEM,3237
|
|
19
|
-
rucio/cli/utils.py,sha256=
|
|
19
|
+
rucio/cli/utils.py,sha256=tCRTQxXIONkEarpA74NofHYh7HhKvQRC9ZtRc7C5vn8,11522
|
|
20
20
|
rucio/cli/bin_legacy/__init__.py,sha256=Q91iipvMQ0VzNMuYcYQfDujZ0vL-hrB4Kmd0YrgtHGQ,618
|
|
21
|
-
rucio/cli/bin_legacy/rucio.py,sha256=
|
|
22
|
-
rucio/cli/bin_legacy/rucio_admin.py,sha256=
|
|
21
|
+
rucio/cli/bin_legacy/rucio.py,sha256=6Md-5metJcOi3DVQRePwJpm_oZGtPN-jAy1FtKd91l8,141174
|
|
22
|
+
rucio/cli/bin_legacy/rucio_admin.py,sha256=G0tQPe83otuTdIDjQb3whi2zsrplE5R9lddEX9yISNo,141436
|
|
23
23
|
rucio/client/__init__.py,sha256=0-jkSlrJf-eqbN4swA5a07eaWd6_6JXPQPLXMs4A3iI,660
|
|
24
24
|
rucio/client/accountclient.py,sha256=yimP_88XbHOpMnyEG6kT2i0x8x4ILpq8EeVs0O_o-as,19148
|
|
25
25
|
rucio/client/accountlimitclient.py,sha256=RwWfyddIT6iZt8PDHRSqrOvgI7-GGZiz1kE4m1zGOtQ,6997
|
|
@@ -29,7 +29,7 @@ rucio/client/configclient.py,sha256=cy1yXDmtiNqlZrytF7GK9Pi5DB4-PO9VaiJn7ITLJi4,
|
|
|
29
29
|
rucio/client/credentialclient.py,sha256=9dvF6cAgf9hOTYuX-igzQOPdmMVCbjt97v4f7_yH_nE,2270
|
|
30
30
|
rucio/client/didclient.py,sha256=E9HusPPeQn4nhMrCtm0VsZtYlTAwAf5c9paSYuzPMjU,34969
|
|
31
31
|
rucio/client/diracclient.py,sha256=E5yGTkNdtBT5iYOAm81pT5lHHkEf0VSs40g1TB9VWwE,4521
|
|
32
|
-
rucio/client/downloadclient.py,sha256=
|
|
32
|
+
rucio/client/downloadclient.py,sha256=Rs9x_s-kgiSuYtTHNX195Po6niPO3s25aOfHNVFYpEw,91781
|
|
33
33
|
rucio/client/exportclient.py,sha256=pCgjm-SbcZk5RZp2iOzAESdMeBeyVNYzQ1oModCvLfk,3366
|
|
34
34
|
rucio/client/importclient.py,sha256=9CHlLmgH59HBfm7zBe1TKiqNTmGar8SeIYiNZdkCFXU,1616
|
|
35
35
|
rucio/client/lifetimeclient.py,sha256=96MLiMv8ff1zMUnNe8OT6a12cUWIouG-dq4wBDUX-Jw,6037
|
|
@@ -42,7 +42,7 @@ rucio/client/requestclient.py,sha256=7N0RaZfuVegD40oQkekwn_UylVi3GljHAkxDezMMOs4
|
|
|
42
42
|
rucio/client/richclient.py,sha256=ArTHvnx0eJxRysfpBxnx0zaDI8ixgnfA_8vAegZQC2Y,10243
|
|
43
43
|
rucio/client/rseclient.py,sha256=zrXXMRIIENC6WmMPhNw4_JK_8XqqINt5TdB9ZYOQVus,32242
|
|
44
44
|
rucio/client/ruleclient.py,sha256=nFXZ2wC8UgbSTD0es7XHuY6szIDHCHDdZNAwABmgDts,13808
|
|
45
|
-
rucio/client/scopeclient.py,sha256=
|
|
45
|
+
rucio/client/scopeclient.py,sha256=4_v2CJskpTwKrqLbECPqrXJvGtcuoURAVc8shoDmLkw,4822
|
|
46
46
|
rucio/client/subscriptionclient.py,sha256=B8oEQa_Dwh3gvydEYjEZXmSkjZY2EdbL7VZ0JXEDN1w,9513
|
|
47
47
|
rucio/client/touchclient.py,sha256=LZXC2xI4QmmTTW4D1339sNXP1VwOKtxS-K7AaQwSlf4,2873
|
|
48
48
|
rucio/client/uploadclient.py,sha256=pXsgzdQXDC8hcyA2lHvHkyrz1gCNsOADJuqS-gfLTFQ,72217
|
|
@@ -54,7 +54,7 @@ rucio/common/client.py,sha256=vHJ1gnHRBiXC2ZPfSgYPlsdJi0DbvwWDdHHMEOVgBvU,3129
|
|
|
54
54
|
rucio/common/config.py,sha256=69AhxgP9SXXrlaTqlOCQiaiqGqHLhSfhRFasroGfDdc,24402
|
|
55
55
|
rucio/common/constants.py,sha256=IdxXRvIltiJWz5qxxqpXZC1xum458-czxuot3PCtRXU,8535
|
|
56
56
|
rucio/common/constraints.py,sha256=MrdiAwKyoaZGfspUWX_53XS2790nXMSMg1JYmTO_ciQ,726
|
|
57
|
-
rucio/common/didtype.py,sha256=
|
|
57
|
+
rucio/common/didtype.py,sha256=gk9Ewoh4wkeguouUNjAm-eS1PSDdPnkgxPXwKd4hm4U,8585
|
|
58
58
|
rucio/common/exception.py,sha256=kXltk7Zujf55L3h3v6iP0yfHXJIphbS7H67OS610Aig,37248
|
|
59
59
|
rucio/common/extra.py,sha256=IE01275vTJobyNiYbptU9NmsUl2Ga_92FSoOODV8Qfk,1054
|
|
60
60
|
rucio/common/logging.py,sha256=_G1QDFpPLghz2VXOjdhC7j-TtZBxmPJsyJtztW7mf68,15874
|
|
@@ -90,16 +90,16 @@ rucio/rse/protocols/ssh.py,sha256=pHPAQx2bPNkMrtqbCqDfq7OXoy7XphQ-i2Stzdvnf1k,17
|
|
|
90
90
|
rucio/rse/protocols/storm.py,sha256=Z4fzklxG-x70A0Lugg1jE1RicwCSeF27iz0MXO-4to0,7864
|
|
91
91
|
rucio/rse/protocols/webdav.py,sha256=axO_a4Z4nO6hlSAU1kUICXwUH-D0MrBYvdH3cHlFJuY,24978
|
|
92
92
|
rucio/rse/protocols/xrootd.py,sha256=oJHueVR44dcW5nkg8jCbr9PetV9UIti3C0tka_m7yIk,12604
|
|
93
|
-
rucio_clients-38.
|
|
94
|
-
rucio_clients-38.
|
|
95
|
-
rucio_clients-38.
|
|
96
|
-
rucio_clients-38.
|
|
97
|
-
rucio_clients-38.
|
|
98
|
-
rucio_clients-38.
|
|
99
|
-
rucio_clients-38.
|
|
100
|
-
rucio_clients-38.
|
|
101
|
-
rucio_clients-38.
|
|
102
|
-
rucio_clients-38.
|
|
103
|
-
rucio_clients-38.
|
|
104
|
-
rucio_clients-38.
|
|
105
|
-
rucio_clients-38.
|
|
93
|
+
rucio_clients-38.5.0.data/data/requirements.client.txt,sha256=ob8DW6vHurtEcXZ2j_u67WO_M2Mf7dzJFROKqIQINTo,1790
|
|
94
|
+
rucio_clients-38.5.0.data/data/etc/rse-accounts.cfg.template,sha256=IfDnXVxBPUrMnTMbJnd3P7eYHgY1C4Kfz7xKskJs-FI,543
|
|
95
|
+
rucio_clients-38.5.0.data/data/etc/rucio.cfg.atlas.client.template,sha256=aHP1oX9m5yA8xVTTT2Hz6AyOYu92-Bcd5LF0i3AZRQw,1350
|
|
96
|
+
rucio_clients-38.5.0.data/data/etc/rucio.cfg.template,sha256=ziIlTeKz8Qs55VDznjjnj5gRg0RSYegjLJdKZJfrIZg,7976
|
|
97
|
+
rucio_clients-38.5.0.data/data/rucio_client/merge_rucio_configs.py,sha256=u62K1EcCGydM5nZA30zhlqWo4EX5N87b_MDkx5YfzVI,6163
|
|
98
|
+
rucio_clients-38.5.0.data/scripts/rucio,sha256=f8f5X6O9W2JfUqWiSdsuDROekGt28p9CBvFZropZ-C0,5260
|
|
99
|
+
rucio_clients-38.5.0.data/scripts/rucio-admin,sha256=AhPO6-fAPviHObhB_Yi7GJXKfjpaH6m0RqxwctBeFlE,4229
|
|
100
|
+
rucio_clients-38.5.0.dist-info/licenses/AUTHORS.rst,sha256=FQ5q2_bY3dYKDmEw-8YD-SgPJ4fgnM1XI5wRF5ksQPg,4771
|
|
101
|
+
rucio_clients-38.5.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
102
|
+
rucio_clients-38.5.0.dist-info/METADATA,sha256=sg7xFDUMXTg0gcDLfmG7Aa2qZyX72rl_4lRMF5p8Q0A,1740
|
|
103
|
+
rucio_clients-38.5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
104
|
+
rucio_clients-38.5.0.dist-info/top_level.txt,sha256=lJM8plwW0ePPICkwFnpYzfdqHnSv6JZr1OD4JEysPgM,6
|
|
105
|
+
rucio_clients-38.5.0.dist-info/RECORD,,
|
|
File without changes
|
{rucio_clients-38.4.0.data → rucio_clients-38.5.0.data}/data/etc/rucio.cfg.atlas.client.template
RENAMED
|
File without changes
|
|
File without changes
|
{rucio_clients-38.4.0.data → rucio_clients-38.5.0.data}/data/rucio_client/merge_rucio_configs.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|