rucio 37.7.0__py3-none-any.whl → 38.0.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 might be problematic. Click here for more details.
- rucio/alembicrevision.py +1 -1
- rucio/cli/bin_legacy/rucio.py +51 -107
- rucio/cli/bin_legacy/rucio_admin.py +26 -26
- rucio/cli/command.py +1 -0
- rucio/cli/did.py +2 -2
- rucio/cli/opendata.py +132 -0
- rucio/cli/replica.py +15 -5
- rucio/cli/rule.py +7 -2
- rucio/cli/scope.py +3 -2
- rucio/cli/utils.py +28 -4
- rucio/client/baseclient.py +9 -1
- rucio/client/client.py +2 -0
- rucio/client/diracclient.py +73 -12
- rucio/client/opendataclient.py +249 -0
- rucio/client/subscriptionclient.py +30 -0
- rucio/client/uploadclient.py +10 -13
- rucio/common/constants.py +4 -1
- rucio/common/exception.py +55 -0
- rucio/common/plugins.py +45 -8
- rucio/common/schema/generic.py +5 -3
- rucio/common/schema/generic_multi_vo.py +4 -2
- rucio/common/types.py +8 -7
- rucio/common/utils.py +176 -11
- rucio/core/dirac.py +5 -5
- rucio/core/opendata.py +744 -0
- rucio/core/rule.py +63 -8
- rucio/core/transfer.py +1 -1
- rucio/daemons/common.py +1 -1
- rucio/daemons/conveyor/finisher.py +2 -2
- rucio/daemons/conveyor/poller.py +2 -2
- rucio/daemons/conveyor/preparer.py +1 -1
- rucio/daemons/conveyor/submitter.py +2 -2
- rucio/daemons/conveyor/throttler.py +1 -1
- rucio/daemons/hermes/hermes.py +26 -17
- rucio/db/sqla/constants.py +6 -0
- rucio/db/sqla/migrate_repo/versions/a62db546a1f1_opendata_initial_model.py +85 -0
- rucio/db/sqla/models.py +69 -0
- rucio/db/sqla/session.py +8 -1
- rucio/db/sqla/util.py +2 -2
- rucio/gateway/dirac.py +1 -1
- rucio/gateway/opendata.py +190 -0
- rucio/gateway/subscription.py +5 -3
- rucio/rse/protocols/protocol.py +9 -5
- rucio/rse/translation.py +17 -6
- rucio/tests/common.py +64 -12
- rucio/transfertool/fts3.py +1 -0
- rucio/transfertool/fts3_plugins.py +6 -1
- rucio/vcsversion.py +4 -4
- rucio/web/rest/flaskapi/v1/auth.py +11 -2
- rucio/web/rest/flaskapi/v1/common.py +34 -14
- rucio/web/rest/flaskapi/v1/config.py +1 -1
- rucio/web/rest/flaskapi/v1/dids.py +447 -160
- rucio/web/rest/flaskapi/v1/heartbeats.py +1 -1
- rucio/web/rest/flaskapi/v1/identities.py +1 -1
- rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +1 -1
- rucio/web/rest/flaskapi/v1/locks.py +1 -1
- rucio/web/rest/flaskapi/v1/main.py +3 -7
- rucio/web/rest/flaskapi/v1/meta_conventions.py +1 -16
- rucio/web/rest/flaskapi/v1/nongrid_traces.py +1 -1
- rucio/web/rest/flaskapi/v1/opendata.py +391 -0
- rucio/web/rest/flaskapi/v1/opendata_public.py +146 -0
- rucio/web/rest/flaskapi/v1/requests.py +1 -1
- rucio/web/rest/flaskapi/v1/rses.py +1 -1
- rucio/web/rest/flaskapi/v1/rules.py +1 -1
- rucio/web/rest/flaskapi/v1/scopes.py +1 -1
- rucio/web/rest/flaskapi/v1/subscriptions.py +6 -9
- rucio/web/rest/flaskapi/v1/traces.py +1 -1
- rucio/web/rest/flaskapi/v1/vos.py +1 -1
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/etc/alembic.ini.template +1 -1
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/etc/alembic_offline.ini.template +1 -1
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/etc/rucio.cfg.template +2 -2
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/etc/rucio_multi_vo.cfg.template +3 -3
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/requirements.server.txt +6 -3
- rucio-38.0.0.data/data/rucio/tools/reset_database.py +87 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio +2 -1
- {rucio-37.7.0.dist-info → rucio-38.0.0.dist-info}/METADATA +37 -36
- {rucio-37.7.0.dist-info → rucio-38.0.0.dist-info}/RECORD +129 -123
- {rucio-37.7.0.dist-info → rucio-38.0.0.dist-info}/licenses/AUTHORS.rst +1 -0
- rucio/client/fileclient.py +0 -57
- rucio-37.7.0.data/data/rucio/tools/reset_database.py +0 -40
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/etc/globus-config.yml.template +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/etc/ldap.cfg.template +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/etc/mail_templates/rule_approval_request.tmpl +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/etc/mail_templates/rule_approved_admin.tmpl +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/etc/mail_templates/rule_approved_user.tmpl +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/etc/mail_templates/rule_denied_admin.tmpl +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/etc/mail_templates/rule_denied_user.tmpl +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/etc/mail_templates/rule_ok_notification.tmpl +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/etc/rse-accounts.cfg.template +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/etc/rucio.cfg.atlas.client.template +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/tools/bootstrap.py +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/data/rucio/tools/merge_rucio_configs.py +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-abacus-account +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-abacus-collection-replica +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-abacus-rse +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-admin +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-atropos +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-auditor +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-automatix +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-bb8 +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-cache-client +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-cache-consumer +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-conveyor-finisher +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-conveyor-poller +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-conveyor-preparer +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-conveyor-receiver +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-conveyor-stager +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-conveyor-submitter +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-conveyor-throttler +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-dark-reaper +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-dumper +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-follower +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-hermes +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-judge-cleaner +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-judge-evaluator +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-judge-injector +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-judge-repairer +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-kronos +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-minos +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-minos-temporary-expiration +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-necromancer +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-oauth-manager +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-reaper +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-replica-recoverer +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-rse-decommissioner +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-storage-consistency-actions +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-transmogrifier +0 -0
- {rucio-37.7.0.data → rucio-38.0.0.data}/scripts/rucio-undertaker +0 -0
- {rucio-37.7.0.dist-info → rucio-38.0.0.dist-info}/WHEEL +0 -0
- {rucio-37.7.0.dist-info → rucio-38.0.0.dist-info}/licenses/LICENSE +0 -0
- {rucio-37.7.0.dist-info → rucio-38.0.0.dist-info}/top_level.txt +0 -0
|
@@ -139,7 +139,7 @@ class AccountScopeList(ErrorHandlingMethodView):
|
|
|
139
139
|
return jsonify(scopes)
|
|
140
140
|
|
|
141
141
|
|
|
142
|
-
def blueprint():
|
|
142
|
+
def blueprint() -> AuthenticatedBlueprint:
|
|
143
143
|
bp = AuthenticatedBlueprint('scopes', __name__, url_prefix='/scopes')
|
|
144
144
|
|
|
145
145
|
scope_view = Scope.as_view('scope')
|
|
@@ -169,6 +169,10 @@ class Subscription(ErrorHandlingMethodView):
|
|
|
169
169
|
priority:
|
|
170
170
|
description: "The priority/policyid for the subscription. Stored as policyid."
|
|
171
171
|
type: integer
|
|
172
|
+
state:
|
|
173
|
+
description: "The state of the subscription. If not supplied, the state will be set to 'U' (updated)."
|
|
174
|
+
type: string
|
|
175
|
+
enum: ["A", "I", "N", "U", "B"]
|
|
172
176
|
responses:
|
|
173
177
|
201:
|
|
174
178
|
description: "OK"
|
|
@@ -188,6 +192,7 @@ class Subscription(ErrorHandlingMethodView):
|
|
|
188
192
|
'lifetime': None,
|
|
189
193
|
'retroactive': None,
|
|
190
194
|
'priority': None,
|
|
195
|
+
'state': None,
|
|
191
196
|
}
|
|
192
197
|
for keyword in list(metadata):
|
|
193
198
|
metadata[keyword] = param_get(options, keyword, default=metadata[keyword])
|
|
@@ -614,7 +619,7 @@ class SubscriptionId(ErrorHandlingMethodView):
|
|
|
614
619
|
return Response(render_json(**subscription), content_type="application/json")
|
|
615
620
|
|
|
616
621
|
|
|
617
|
-
def blueprint():
|
|
622
|
+
def blueprint() -> AuthenticatedBlueprint:
|
|
618
623
|
bp = AuthenticatedBlueprint('subscriptions', __name__, url_prefix='/subscriptions')
|
|
619
624
|
|
|
620
625
|
subscription_id_view = SubscriptionId.as_view('subscription_id')
|
|
@@ -631,14 +636,6 @@ def blueprint():
|
|
|
631
636
|
subscription_name_view = SubscriptionName.as_view('subscription_name')
|
|
632
637
|
bp.add_url_rule('/name/<name>', view_func=subscription_name_view, methods=['get', ])
|
|
633
638
|
|
|
634
|
-
# Legacy url support
|
|
635
|
-
# TODO: Take out with Rucio 38
|
|
636
|
-
bp.add_url_rule('/Id/<subscription_id>', view_func=subscription_id_view, methods=['get', ])
|
|
637
|
-
bp.add_url_rule('/<account>/<name>/Rules/States', view_func=states_view, methods=['get', ])
|
|
638
|
-
bp.add_url_rule('/<account>/Rules/States', view_func=states_view, methods=['get', ])
|
|
639
|
-
bp.add_url_rule('/<account>/<name>/Rules', view_func=rules_view, methods=['get', ])
|
|
640
|
-
bp.add_url_rule('/Name/<name>', view_func=subscription_name_view, methods=['get', ])
|
|
641
|
-
|
|
642
639
|
bp.after_request(response_headers)
|
|
643
640
|
return bp
|
|
644
641
|
|
|
@@ -118,7 +118,7 @@ class Trace(ErrorHandlingMethodView):
|
|
|
118
118
|
return generate_http_error_flask(400, err)
|
|
119
119
|
|
|
120
120
|
|
|
121
|
-
def blueprint():
|
|
121
|
+
def blueprint() -> Blueprint:
|
|
122
122
|
bp = Blueprint('traces', __name__, url_prefix='/traces')
|
|
123
123
|
|
|
124
124
|
trace_view = Trace.as_view('trace')
|
|
@@ -255,7 +255,7 @@ class RecoverVO(ErrorHandlingMethodView):
|
|
|
255
255
|
return 'Created', 201
|
|
256
256
|
|
|
257
257
|
|
|
258
|
-
def blueprint():
|
|
258
|
+
def blueprint() -> AuthenticatedBlueprint:
|
|
259
259
|
bp = AuthenticatedBlueprint('vos', __name__, url_prefix='/vos')
|
|
260
260
|
|
|
261
261
|
recover_view = RecoverVO.as_view('recover')
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
# Choose one of the databases+schema below
|
|
19
19
|
# Oracle, PostgreSQL, MySQL/MariaDB are fully supported
|
|
20
20
|
|
|
21
|
-
sqlalchemy.url=oracle://user:pass@servicename
|
|
21
|
+
sqlalchemy.url=oracle+oracledb://user:pass@servicename
|
|
22
22
|
version_table_schema=rucio
|
|
23
23
|
|
|
24
24
|
#sqlalchemy.url=postgresql+psycopg://rucio:rucio@psql-hostname:5432/rucio
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
# Choose one of the databases+schema below
|
|
19
19
|
# Oracle, PostgreSQL, MySQL/MariaDB are fully supported
|
|
20
20
|
|
|
21
|
-
#sqlalchemy.url=oracle://user:pass@servicename
|
|
21
|
+
#sqlalchemy.url=oracle+oracledb://user:pass@servicename
|
|
22
22
|
#version_table_schema=rucio
|
|
23
23
|
|
|
24
24
|
#sqlalchemy.url=postgresql+psycopg://rucio:rucio@psql-hostname:5432/rucio
|
|
@@ -73,8 +73,8 @@ default_mail_from = spamspamspam@cern.ch
|
|
|
73
73
|
|
|
74
74
|
[database]
|
|
75
75
|
default = sqlite:////tmp/rucio.db
|
|
76
|
-
#default = oracle://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=______))(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=_____))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=__________)))
|
|
77
|
-
#default = oracle://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=______))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=_____________)))
|
|
76
|
+
#default = oracle+oracledb://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=______))(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=_____))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=__________)))
|
|
77
|
+
#default = oracle+oracledb://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=______))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=_____________)))
|
|
78
78
|
#schema=atlas_rucio # only for cern oracle
|
|
79
79
|
#default = mysql+pymysql://rucio:rucio@localhost/rucio
|
|
80
80
|
#default = postgresql+psycopg://rucio:rucio@localhost/rucio
|
|
@@ -56,8 +56,8 @@ default_mail_from = spamspamspam@cern.ch
|
|
|
56
56
|
|
|
57
57
|
[database]
|
|
58
58
|
default = sqlite:////tmp/rucio.db
|
|
59
|
-
#default = oracle://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=______))(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=_____))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=__________)))
|
|
60
|
-
#default = oracle://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=______))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=_____________)))
|
|
59
|
+
#default = oracle+oracledb://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=______))(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=_____))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=__________)))
|
|
60
|
+
#default = oracle+oracledb://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=______))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=_____________)))
|
|
61
61
|
#schema=atlas_rucio # only for cern oracle
|
|
62
62
|
#default = mysql+pymysql://rucio:rucio@localhost/rucio
|
|
63
63
|
#default = postgresql+psycopg://rucio:rucio@localhost/rucio
|
|
@@ -213,4 +213,4 @@ idpsecrets = /opt/rucio/etc/idpsecrets.json
|
|
|
213
213
|
admin_issuer = wlcg
|
|
214
214
|
|
|
215
215
|
[api]
|
|
216
|
-
endpoints = accountlimits, accounts, config, credentials, dids, export, heartbeats, identities, import, lifetime_exceptions, locks,
|
|
216
|
+
endpoints = accountlimits, accounts, config, credentials, dids, export, heartbeats, identities, import, lifetime_exceptions, locks, meta_conventions, ping, redirect, replicas, requests, rses, rules, scopes, subscriptions, traces, vos
|
|
@@ -57,7 +57,7 @@ cryptography==44.0.2
|
|
|
57
57
|
# pyjwt
|
|
58
58
|
# pyspnego
|
|
59
59
|
# requests-kerberos
|
|
60
|
-
|
|
60
|
+
oracledb==3.1.1
|
|
61
61
|
# via -r requirements.server.in
|
|
62
62
|
decorator==5.2.1
|
|
63
63
|
# via
|
|
@@ -75,7 +75,7 @@ elastic-transport==8.17.0
|
|
|
75
75
|
# via elasticsearch
|
|
76
76
|
elasticsearch==8.15.1
|
|
77
77
|
# via -r requirements.server.in
|
|
78
|
-
flask==3.1.
|
|
78
|
+
flask==3.1.1
|
|
79
79
|
# via -r requirements.server.in
|
|
80
80
|
frozenlist==1.5.0
|
|
81
81
|
# via
|
|
@@ -89,6 +89,8 @@ globus-sdk==3.41.0
|
|
|
89
89
|
# via -r requirements.server.in
|
|
90
90
|
google-auth==2.38.0
|
|
91
91
|
# via -r requirements.server.in
|
|
92
|
+
greenlet==3.2.2
|
|
93
|
+
# via sqlalchemy
|
|
92
94
|
gssapi==1.9.0
|
|
93
95
|
# via pyspnego
|
|
94
96
|
idna==3.10
|
|
@@ -129,6 +131,7 @@ markdown-it-py==3.0.0
|
|
|
129
131
|
# via rich
|
|
130
132
|
markupsafe==3.0.2
|
|
131
133
|
# via
|
|
134
|
+
# flask
|
|
132
135
|
# jinja2
|
|
133
136
|
# mako
|
|
134
137
|
# werkzeug
|
|
@@ -258,7 +261,7 @@ stomp-py==8.2.0
|
|
|
258
261
|
# via -r requirements.server.in
|
|
259
262
|
tabulate==0.9.0
|
|
260
263
|
# via -r requirements.server.in
|
|
261
|
-
typing-extensions==4.
|
|
264
|
+
typing-extensions==4.14.0
|
|
262
265
|
# via
|
|
263
266
|
# alembic
|
|
264
267
|
# dogpile-cache
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# Copyright European Organization for Nuclear Research (CERN) since 2012
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
|
|
16
|
+
"""
|
|
17
|
+
Reset, purge and/or (re)create a Rucio test database.
|
|
18
|
+
|
|
19
|
+
Behavior
|
|
20
|
+
------------------------+-----------------------+---------------------------+
|
|
21
|
+
Flag(s) | What happens | Subsequent actions |
|
|
22
|
+
------------------------+-----------------------+---------------------------+
|
|
23
|
+
(no flag) | drop_orm_tables() | build_database() + |
|
|
24
|
+
| | create_base_vo() + |
|
|
25
|
+
| | create_root_account() |
|
|
26
|
+
------------------------+-----------------------+---------------------------+
|
|
27
|
+
-b / --purge-build | purge_db() | build_database() + |
|
|
28
|
+
| | create_base_vo() + |
|
|
29
|
+
| | create_root_account() |
|
|
30
|
+
------------------------+-----------------------+---------------------------+
|
|
31
|
+
-p / --purge | purge_db() | nothing else.. |
|
|
32
|
+
| | the script ends |
|
|
33
|
+
------------------------+-----------------------+---------------------------+
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
import os.path
|
|
37
|
+
import sys
|
|
38
|
+
from argparse import ArgumentParser
|
|
39
|
+
|
|
40
|
+
# Ensure package imports work when executed from any cwd
|
|
41
|
+
base_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
42
|
+
sys.path.append(base_path)
|
|
43
|
+
os.chdir(base_path)
|
|
44
|
+
|
|
45
|
+
from rucio.db.sqla.util import ( # noqa: E402
|
|
46
|
+
build_database, # noqa: E402
|
|
47
|
+
create_base_vo, # noqa: E402
|
|
48
|
+
create_root_account, # noqa: E402
|
|
49
|
+
drop_orm_tables, # noqa: E402
|
|
50
|
+
purge_db, # noqa: E402
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
if __name__ == '__main__':
|
|
54
|
+
|
|
55
|
+
parser = ArgumentParser(
|
|
56
|
+
prog="reset_database.py",
|
|
57
|
+
description="Reset the local Rucio database used in tests."
|
|
58
|
+
)
|
|
59
|
+
g = parser.add_mutually_exclusive_group()
|
|
60
|
+
g.add_argument(
|
|
61
|
+
"-b", "--purge-build",
|
|
62
|
+
action="store_true",
|
|
63
|
+
help="Purge EVERYTHING (tables, constraints, schema) "
|
|
64
|
+
"and then rebuild a fresh schema with base VO + root account.",
|
|
65
|
+
)
|
|
66
|
+
g.add_argument(
|
|
67
|
+
"-p", "--purge",
|
|
68
|
+
action="store_true",
|
|
69
|
+
help="Purge EVERYTHING and stop – do NOT recreate schema or accounts.",
|
|
70
|
+
)
|
|
71
|
+
args = parser.parse_args()
|
|
72
|
+
|
|
73
|
+
# ------------------------------------------------------------------
|
|
74
|
+
# 1. Decide how to reset
|
|
75
|
+
# ------------------------------------------------------------------
|
|
76
|
+
if args.purge_build or args.purge:
|
|
77
|
+
purge_db()
|
|
78
|
+
else:
|
|
79
|
+
drop_orm_tables()
|
|
80
|
+
|
|
81
|
+
# ------------------------------------------------------------------
|
|
82
|
+
# 2. Decide what to rebuild
|
|
83
|
+
# ------------------------------------------------------------------
|
|
84
|
+
if not args.purge:
|
|
85
|
+
build_database()
|
|
86
|
+
create_base_vo()
|
|
87
|
+
create_root_account()
|
|
@@ -54,6 +54,7 @@ def map_legacy_command() -> Optional[list[str]]:
|
|
|
54
54
|
command_map = {
|
|
55
55
|
"list-file-replicas": ["replica", "list", "file"],
|
|
56
56
|
"list-dataset-replicas": ["replica", "list", "dataset"],
|
|
57
|
+
"list-datasets-rse": ["replica", "list", "dataset", "--rse"],
|
|
57
58
|
"add-dataset": ["did", "add", "--type dataset"],
|
|
58
59
|
"add-container": ["did", "add", "--type container"],
|
|
59
60
|
"attach": ["did", "content", "add"],
|
|
@@ -96,7 +97,7 @@ def map_legacy_command() -> Optional[list[str]]:
|
|
|
96
97
|
|
|
97
98
|
|
|
98
99
|
if __name__ == "__main__":
|
|
99
|
-
commands = ("account", "config", "did", "replica", "rse", "rule", "scope", "subscription", "ping", "whoami", "test-server", "lifetime-exception", "upload", "download")
|
|
100
|
+
commands = ("account", "config", "did", "replica", "rse", "rule", "scope", "subscription", "ping", "whoami", "test-server", "lifetime-exception", "upload", "download", "opendata")
|
|
100
101
|
|
|
101
102
|
parser = argparse.ArgumentParser(add_help=False)
|
|
102
103
|
# Check for legacy flag
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rucio
|
|
3
|
-
Version:
|
|
3
|
+
Version: 38.0.0
|
|
4
4
|
Summary: Rucio Package
|
|
5
5
|
Home-page: https://rucio.cern.ch/
|
|
6
6
|
Author: Rucio
|
|
@@ -20,51 +20,52 @@ Classifier: Environment :: No Input/Output (Daemon)
|
|
|
20
20
|
Requires-Python: >=3.9, <4
|
|
21
21
|
License-File: LICENSE
|
|
22
22
|
License-File: AUTHORS.rst
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist: urllib3
|
|
23
|
+
Requires-Dist: requests<=2.32.3
|
|
24
|
+
Requires-Dist: urllib3<=1.26.19
|
|
26
25
|
Requires-Dist: dogpile-cache<=1.2.2
|
|
27
|
-
Requires-Dist: packaging
|
|
28
|
-
Requires-Dist: tabulate
|
|
29
|
-
Requires-Dist: jsonschema
|
|
30
|
-
Requires-Dist: rich
|
|
31
|
-
Requires-Dist: typing_extensions
|
|
32
|
-
Requires-Dist: argcomplete
|
|
26
|
+
Requires-Dist: packaging<=24.1
|
|
27
|
+
Requires-Dist: tabulate<=0.9.0
|
|
28
|
+
Requires-Dist: jsonschema<=4.23.0
|
|
29
|
+
Requires-Dist: rich<=13.9.4
|
|
30
|
+
Requires-Dist: typing_extensions<=4.12.2
|
|
31
|
+
Requires-Dist: argcomplete<=3.5.3
|
|
33
32
|
Requires-Dist: boto
|
|
34
|
-
Requires-Dist: python-magic
|
|
35
|
-
Requires-Dist: paramiko
|
|
36
|
-
Requires-Dist: boto3
|
|
37
|
-
Requires-Dist: sqlalchemy
|
|
38
|
-
Requires-Dist: alembic
|
|
39
|
-
Requires-Dist: pymemcache
|
|
40
|
-
Requires-Dist: python-dateutil
|
|
41
|
-
Requires-Dist: stomp-py
|
|
42
|
-
Requires-Dist: statsd
|
|
43
|
-
Requires-Dist: geoip2
|
|
44
|
-
Requires-Dist: google-auth
|
|
45
|
-
Requires-Dist: redis
|
|
46
|
-
Requires-Dist: flask
|
|
47
|
-
Requires-Dist: oic
|
|
48
|
-
Requires-Dist: prometheus_client
|
|
33
|
+
Requires-Dist: python-magic<=0.4.27
|
|
34
|
+
Requires-Dist: paramiko<=3.5.1
|
|
35
|
+
Requires-Dist: boto3<=1.37.5
|
|
36
|
+
Requires-Dist: sqlalchemy<=2.0.38
|
|
37
|
+
Requires-Dist: alembic<=1.14.1
|
|
38
|
+
Requires-Dist: pymemcache<=4.0.0
|
|
39
|
+
Requires-Dist: python-dateutil<=2.9.0.post0
|
|
40
|
+
Requires-Dist: stomp-py<=8.2.0
|
|
41
|
+
Requires-Dist: statsd<=4.0.1
|
|
42
|
+
Requires-Dist: geoip2<=5.0.1
|
|
43
|
+
Requires-Dist: google-auth<=2.38.0
|
|
44
|
+
Requires-Dist: redis<=5.2.1
|
|
45
|
+
Requires-Dist: flask<=3.1.0
|
|
46
|
+
Requires-Dist: oic<=1.7.0
|
|
47
|
+
Requires-Dist: prometheus_client<=0.21.1
|
|
49
48
|
Provides-Extra: oracle
|
|
50
|
-
Requires-Dist:
|
|
49
|
+
Requires-Dist: oracledb<=3.1.1; extra == "oracle"
|
|
51
50
|
Provides-Extra: mongo
|
|
52
|
-
Requires-Dist: pymongo; extra == "mongo"
|
|
51
|
+
Requires-Dist: pymongo<=4.11.2; extra == "mongo"
|
|
53
52
|
Provides-Extra: elastic
|
|
54
|
-
Requires-Dist: elasticsearch; extra == "elastic"
|
|
53
|
+
Requires-Dist: elasticsearch<=8.15.1; extra == "elastic"
|
|
55
54
|
Provides-Extra: postgresql
|
|
56
|
-
Requires-Dist: psycopg
|
|
55
|
+
Requires-Dist: psycopg<=3.2.3; extra == "postgresql"
|
|
56
|
+
Requires-Dist: psycopg-binary<=3.2.3; extra == "postgresql"
|
|
57
|
+
Requires-Dist: psycopg-pool<=3.2.3; extra == "postgresql"
|
|
57
58
|
Provides-Extra: mysql
|
|
58
|
-
Requires-Dist: PyMySQL; extra == "mysql"
|
|
59
|
+
Requires-Dist: PyMySQL<=1.1.1; extra == "mysql"
|
|
59
60
|
Provides-Extra: kerberos
|
|
60
|
-
Requires-Dist: kerberos; extra == "kerberos"
|
|
61
|
-
Requires-Dist: pykerberos; extra == "kerberos"
|
|
62
|
-
Requires-Dist: requests-kerberos; extra == "kerberos"
|
|
61
|
+
Requires-Dist: kerberos<=1.3.1; extra == "kerberos"
|
|
62
|
+
Requires-Dist: pykerberos<=1.2.4; extra == "kerberos"
|
|
63
|
+
Requires-Dist: requests-kerberos<=0.15.0; extra == "kerberos"
|
|
63
64
|
Provides-Extra: globus
|
|
64
|
-
Requires-Dist: PyYAML; extra == "globus"
|
|
65
|
-
Requires-Dist: globus-sdk; extra == "globus"
|
|
65
|
+
Requires-Dist: PyYAML<=6.0.2; extra == "globus"
|
|
66
|
+
Requires-Dist: globus-sdk<=3.41.0; extra == "globus"
|
|
66
67
|
Provides-Extra: saml
|
|
67
|
-
Requires-Dist: python3-saml; extra == "saml"
|
|
68
|
+
Requires-Dist: python3-saml<=1.16.0; extra == "saml"
|
|
68
69
|
Provides-Extra: dev
|
|
69
70
|
Requires-Dist: pytest; extra == "dev"
|
|
70
71
|
Requires-Dist: pytest-xdist; extra == "dev"
|