rucio 35.7.0__py3-none-any.whl → 37.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/{daemons/c3po/collectors → cli}/__init__.py +1 -0
- rucio/cli/account.py +216 -0
- rucio-35.7.0.data/scripts/rucio → rucio/cli/bin_legacy/rucio.py +769 -486
- rucio-35.7.0.data/scripts/rucio-admin → rucio/cli/bin_legacy/rucio_admin.py +476 -423
- rucio/cli/command.py +272 -0
- rucio/cli/config.py +72 -0
- rucio/cli/did.py +191 -0
- rucio/cli/download.py +128 -0
- rucio/cli/lifetime_exception.py +33 -0
- rucio/cli/replica.py +162 -0
- rucio/cli/rse.py +293 -0
- rucio/cli/rule.py +158 -0
- rucio/cli/scope.py +40 -0
- rucio/cli/subscription.py +73 -0
- rucio/cli/upload.py +60 -0
- rucio/cli/utils.py +226 -0
- rucio/client/accountclient.py +0 -1
- rucio/client/baseclient.py +33 -24
- rucio/client/client.py +45 -1
- rucio/client/didclient.py +5 -3
- rucio/client/downloadclient.py +6 -8
- rucio/client/replicaclient.py +0 -2
- rucio/client/richclient.py +317 -0
- rucio/client/rseclient.py +4 -4
- rucio/client/uploadclient.py +26 -12
- rucio/common/bittorrent.py +234 -0
- rucio/common/cache.py +66 -29
- rucio/common/checksum.py +168 -0
- rucio/common/client.py +122 -0
- rucio/common/config.py +22 -35
- rucio/common/constants.py +61 -3
- rucio/common/didtype.py +72 -24
- rucio/common/dumper/__init__.py +45 -38
- rucio/common/dumper/consistency.py +75 -30
- rucio/common/dumper/data_models.py +63 -19
- rucio/common/dumper/path_parsing.py +19 -8
- rucio/common/exception.py +65 -8
- rucio/common/extra.py +5 -10
- rucio/common/logging.py +13 -13
- rucio/common/pcache.py +8 -7
- rucio/common/plugins.py +59 -27
- rucio/common/policy.py +12 -3
- rucio/common/schema/__init__.py +84 -34
- rucio/common/schema/generic.py +0 -17
- rucio/common/schema/generic_multi_vo.py +0 -17
- rucio/common/test_rucio_server.py +12 -6
- rucio/common/types.py +132 -52
- rucio/common/utils.py +93 -643
- rucio/core/account_limit.py +14 -12
- rucio/core/authentication.py +2 -2
- rucio/core/config.py +23 -42
- rucio/core/credential.py +14 -15
- rucio/core/did.py +5 -1
- rucio/core/did_meta_plugins/elasticsearch_meta.py +407 -0
- rucio/core/did_meta_plugins/filter_engine.py +62 -3
- rucio/core/did_meta_plugins/json_meta.py +2 -2
- rucio/core/did_meta_plugins/mongo_meta.py +43 -30
- rucio/core/did_meta_plugins/postgres_meta.py +75 -39
- rucio/core/identity.py +6 -5
- rucio/core/importer.py +4 -3
- rucio/core/lifetime_exception.py +2 -2
- rucio/core/lock.py +8 -7
- rucio/core/message.py +6 -0
- rucio/core/monitor.py +30 -29
- rucio/core/naming_convention.py +2 -2
- rucio/core/nongrid_trace.py +2 -2
- rucio/core/oidc.py +11 -9
- rucio/core/permission/__init__.py +79 -37
- rucio/core/permission/generic.py +1 -7
- rucio/core/permission/generic_multi_vo.py +1 -7
- rucio/core/quarantined_replica.py +4 -3
- rucio/core/replica.py +464 -139
- rucio/core/replica_sorter.py +55 -59
- rucio/core/request.py +34 -32
- rucio/core/rse.py +301 -97
- rucio/core/rse_counter.py +1 -2
- rucio/core/rse_expression_parser.py +7 -7
- rucio/core/rse_selector.py +9 -7
- rucio/core/rule.py +41 -40
- rucio/core/rule_grouping.py +42 -40
- rucio/core/scope.py +5 -4
- rucio/core/subscription.py +26 -28
- rucio/core/topology.py +11 -11
- rucio/core/trace.py +2 -2
- rucio/core/transfer.py +29 -15
- rucio/core/volatile_replica.py +4 -3
- rucio/daemons/atropos/atropos.py +1 -1
- rucio/daemons/auditor/__init__.py +2 -2
- rucio/daemons/auditor/srmdumps.py +6 -6
- rucio/daemons/automatix/automatix.py +32 -21
- rucio/daemons/badreplicas/necromancer.py +2 -2
- rucio/daemons/bb8/nuclei_background_rebalance.py +1 -1
- rucio/daemons/bb8/t2_background_rebalance.py +1 -1
- rucio/daemons/common.py +15 -25
- rucio/daemons/conveyor/finisher.py +2 -2
- rucio/daemons/conveyor/poller.py +18 -28
- rucio/daemons/conveyor/receiver.py +2 -2
- rucio/daemons/conveyor/stager.py +1 -0
- rucio/daemons/conveyor/submitter.py +3 -3
- rucio/daemons/hermes/hermes.py +91 -30
- rucio/daemons/judge/evaluator.py +2 -2
- rucio/daemons/oauthmanager/oauthmanager.py +3 -3
- rucio/daemons/reaper/dark_reaper.py +7 -3
- rucio/daemons/reaper/reaper.py +12 -16
- rucio/daemons/rsedecommissioner/config.py +1 -1
- rucio/daemons/rsedecommissioner/profiles/generic.py +5 -4
- rucio/daemons/rsedecommissioner/profiles/types.py +7 -6
- rucio/daemons/rsedecommissioner/rse_decommissioner.py +1 -1
- rucio/daemons/storage/consistency/actions.py +8 -6
- rucio/daemons/tracer/kronos.py +4 -4
- rucio/db/sqla/constants.py +5 -0
- rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +4 -4
- rucio/db/sqla/migrate_repo/versions/30d5206e9cad_increase_oauthrequest_redirect_msg_.py +37 -0
- rucio/db/sqla/models.py +157 -154
- rucio/db/sqla/session.py +58 -27
- rucio/db/sqla/types.py +2 -2
- rucio/db/sqla/util.py +2 -2
- rucio/gateway/account.py +18 -12
- rucio/gateway/account_limit.py +137 -60
- rucio/gateway/authentication.py +18 -12
- rucio/gateway/config.py +30 -20
- rucio/gateway/credential.py +9 -10
- rucio/gateway/did.py +70 -53
- rucio/gateway/dirac.py +6 -4
- rucio/gateway/exporter.py +3 -2
- rucio/gateway/heartbeat.py +6 -4
- rucio/gateway/identity.py +36 -51
- rucio/gateway/importer.py +3 -2
- rucio/gateway/lifetime_exception.py +3 -2
- rucio/gateway/meta_conventions.py +17 -6
- rucio/gateway/permission.py +4 -1
- rucio/gateway/quarantined_replica.py +3 -2
- rucio/gateway/replica.py +31 -22
- rucio/gateway/request.py +27 -18
- rucio/gateway/rse.py +69 -37
- rucio/gateway/rule.py +46 -26
- rucio/gateway/scope.py +3 -2
- rucio/gateway/subscription.py +14 -11
- rucio/gateway/vo.py +12 -8
- rucio/rse/__init__.py +3 -3
- rucio/rse/protocols/bittorrent.py +11 -1
- rucio/rse/protocols/cache.py +0 -11
- rucio/rse/protocols/dummy.py +0 -11
- rucio/rse/protocols/gfal.py +14 -9
- rucio/rse/protocols/globus.py +1 -1
- rucio/rse/protocols/http_cache.py +1 -1
- rucio/rse/protocols/posix.py +2 -2
- rucio/rse/protocols/protocol.py +84 -317
- rucio/rse/protocols/rclone.py +2 -1
- rucio/rse/protocols/rfio.py +10 -1
- rucio/rse/protocols/ssh.py +2 -1
- rucio/rse/protocols/storm.py +2 -13
- rucio/rse/protocols/webdav.py +74 -30
- rucio/rse/protocols/xrootd.py +2 -1
- rucio/rse/rsemanager.py +170 -53
- rucio/rse/translation.py +260 -0
- rucio/tests/common.py +23 -13
- rucio/tests/common_server.py +26 -9
- rucio/transfertool/bittorrent.py +15 -14
- rucio/transfertool/bittorrent_driver.py +5 -7
- rucio/transfertool/bittorrent_driver_qbittorrent.py +9 -8
- rucio/transfertool/fts3.py +20 -16
- rucio/transfertool/mock.py +2 -3
- rucio/vcsversion.py +4 -4
- rucio/version.py +7 -0
- rucio/web/rest/flaskapi/v1/accounts.py +17 -3
- rucio/web/rest/flaskapi/v1/auth.py +5 -5
- rucio/web/rest/flaskapi/v1/credentials.py +3 -2
- rucio/web/rest/flaskapi/v1/dids.py +21 -15
- rucio/web/rest/flaskapi/v1/identities.py +33 -9
- rucio/web/rest/flaskapi/v1/redirect.py +5 -4
- rucio/web/rest/flaskapi/v1/replicas.py +12 -8
- rucio/web/rest/flaskapi/v1/rses.py +15 -4
- rucio/web/rest/flaskapi/v1/traces.py +56 -19
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/alembic.ini.template +1 -1
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/alembic_offline.ini.template +1 -1
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/rucio.cfg.atlas.client.template +3 -2
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/rucio.cfg.template +3 -19
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/rucio_multi_vo.cfg.template +1 -18
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/requirements.server.txt +97 -68
- rucio-37.0.0.data/scripts/rucio +133 -0
- rucio-37.0.0.data/scripts/rucio-admin +97 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-atropos +2 -2
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-auditor +2 -1
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-automatix +2 -2
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-cache-client +17 -10
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-conveyor-receiver +1 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-kronos +1 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-minos +2 -2
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-minos-temporary-expiration +2 -2
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-necromancer +2 -2
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-reaper +6 -6
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-transmogrifier +2 -2
- rucio-37.0.0.dist-info/METADATA +92 -0
- {rucio-35.7.0.dist-info → rucio-37.0.0.dist-info}/RECORD +237 -243
- {rucio-35.7.0.dist-info → rucio-37.0.0.dist-info}/licenses/AUTHORS.rst +3 -0
- rucio/common/schema/atlas.py +0 -413
- rucio/common/schema/belleii.py +0 -408
- rucio/common/schema/domatpc.py +0 -401
- rucio/common/schema/escape.py +0 -426
- rucio/common/schema/icecube.py +0 -406
- rucio/core/permission/atlas.py +0 -1348
- rucio/core/permission/belleii.py +0 -1077
- rucio/core/permission/escape.py +0 -1078
- rucio/daemons/c3po/algorithms/__init__.py +0 -13
- rucio/daemons/c3po/algorithms/simple.py +0 -134
- rucio/daemons/c3po/algorithms/t2_free_space.py +0 -128
- rucio/daemons/c3po/algorithms/t2_free_space_only_pop.py +0 -130
- rucio/daemons/c3po/algorithms/t2_free_space_only_pop_with_network.py +0 -294
- rucio/daemons/c3po/c3po.py +0 -371
- rucio/daemons/c3po/collectors/agis.py +0 -108
- rucio/daemons/c3po/collectors/free_space.py +0 -81
- rucio/daemons/c3po/collectors/jedi_did.py +0 -57
- rucio/daemons/c3po/collectors/mock_did.py +0 -51
- rucio/daemons/c3po/collectors/network_metrics.py +0 -71
- rucio/daemons/c3po/collectors/workload.py +0 -112
- rucio/daemons/c3po/utils/__init__.py +0 -13
- rucio/daemons/c3po/utils/dataset_cache.py +0 -50
- rucio/daemons/c3po/utils/expiring_dataset_cache.py +0 -56
- rucio/daemons/c3po/utils/expiring_list.py +0 -62
- rucio/daemons/c3po/utils/popularity.py +0 -85
- rucio/daemons/c3po/utils/timeseries.py +0 -89
- rucio/rse/protocols/gsiftp.py +0 -92
- rucio-35.7.0.data/scripts/rucio-c3po +0 -85
- rucio-35.7.0.dist-info/METADATA +0 -72
- /rucio/{daemons/c3po → cli/bin_legacy}/__init__.py +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/globus-config.yml.template +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/ldap.cfg.template +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/mail_templates/rule_approval_request.tmpl +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/mail_templates/rule_approved_admin.tmpl +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/mail_templates/rule_approved_user.tmpl +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/mail_templates/rule_denied_admin.tmpl +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/mail_templates/rule_denied_user.tmpl +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/mail_templates/rule_ok_notification.tmpl +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/rse-accounts.cfg.template +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/tools/bootstrap.py +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/tools/merge_rucio_configs.py +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/tools/reset_database.py +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-abacus-account +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-abacus-collection-replica +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-abacus-rse +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-bb8 +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-cache-consumer +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-conveyor-finisher +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-conveyor-poller +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-conveyor-preparer +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-conveyor-stager +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-conveyor-submitter +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-conveyor-throttler +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-dark-reaper +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-dumper +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-follower +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-hermes +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-judge-cleaner +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-judge-evaluator +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-judge-injector +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-judge-repairer +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-oauth-manager +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-replica-recoverer +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-rse-decommissioner +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-storage-consistency-actions +0 -0
- {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-undertaker +0 -0
- {rucio-35.7.0.dist-info → rucio-37.0.0.dist-info}/WHEEL +0 -0
- {rucio-35.7.0.dist-info → rucio-37.0.0.dist-info}/licenses/LICENSE +0 -0
- {rucio-35.7.0.dist-info → rucio-37.0.0.dist-info}/top_level.txt +0 -0
|
@@ -13,16 +13,16 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
import calendar
|
|
17
16
|
import datetime
|
|
17
|
+
import json
|
|
18
18
|
import uuid
|
|
19
|
-
from typing import TYPE_CHECKING
|
|
19
|
+
from typing import TYPE_CHECKING, Union
|
|
20
20
|
|
|
21
21
|
from flask import Blueprint, Flask, request
|
|
22
22
|
from werkzeug.datastructures import Headers
|
|
23
23
|
|
|
24
24
|
from rucio.core.trace import trace
|
|
25
|
-
from rucio.web.rest.flaskapi.v1.common import ErrorHandlingMethodView,
|
|
25
|
+
from rucio.web.rest.flaskapi.v1.common import ErrorHandlingMethodView, response_headers
|
|
26
26
|
|
|
27
27
|
if TYPE_CHECKING:
|
|
28
28
|
from typing import Optional
|
|
@@ -32,6 +32,36 @@ if TYPE_CHECKING:
|
|
|
32
32
|
|
|
33
33
|
class Trace(ErrorHandlingMethodView):
|
|
34
34
|
|
|
35
|
+
def __handle_payload_item(self, payload: dict) -> None:
|
|
36
|
+
"""
|
|
37
|
+
Handles and processes a single trace payload item by adding various trace information.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
payload (dict): The payload dictionary to be processed.
|
|
41
|
+
|
|
42
|
+
Modifies:
|
|
43
|
+
payload (dict): Adds the following keys to the payload:
|
|
44
|
+
- 'traceTimeentry': The current UTC timestamp.
|
|
45
|
+
- 'traceTimeentryUnix': The Unix timestamp with microsecond precision.
|
|
46
|
+
- 'traceIp': The client's IP address, either from 'X-Forwarded-For' header or remote address.
|
|
47
|
+
- 'traceId': A unique identifier for the trace, generated as a UUID without hyphens.
|
|
48
|
+
|
|
49
|
+
Calls:
|
|
50
|
+
trace(payload): A function to handle the processed payload.
|
|
51
|
+
"""
|
|
52
|
+
# generate entry timestamp
|
|
53
|
+
payload["traceTimeentry"] = datetime.datetime.now(datetime.timezone.utc)
|
|
54
|
+
payload["traceTimeentryUnix"] = payload["traceTimeentry"].timestamp()
|
|
55
|
+
|
|
56
|
+
# guess client IP
|
|
57
|
+
payload["traceIp"] = request.headers.get(
|
|
58
|
+
"X-Forwarded-For", default=request.remote_addr
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
# generate unique ID
|
|
62
|
+
payload["traceId"] = str(uuid.uuid4()).replace("-", "").lower()
|
|
63
|
+
trace(payload=payload)
|
|
64
|
+
|
|
35
65
|
def get_headers(self) -> "Optional[HeadersType]":
|
|
36
66
|
headers = Headers()
|
|
37
67
|
headers.set('Content-Type', 'application/octet-stream')
|
|
@@ -57,8 +87,13 @@ class Trace(ErrorHandlingMethodView):
|
|
|
57
87
|
content:
|
|
58
88
|
application/json:
|
|
59
89
|
schema:
|
|
60
|
-
|
|
90
|
+
oneOf:
|
|
91
|
+
- type: object
|
|
92
|
+
description: A single trace object.
|
|
93
|
+
- type: array
|
|
94
|
+
items:
|
|
61
95
|
type: object
|
|
96
|
+
description: A list of trace objects.
|
|
62
97
|
responses:
|
|
63
98
|
201:
|
|
64
99
|
description: OK
|
|
@@ -66,21 +101,23 @@ class Trace(ErrorHandlingMethodView):
|
|
|
66
101
|
description: Cannot decode json data.
|
|
67
102
|
"""
|
|
68
103
|
headers = self.get_headers()
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
payload
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
104
|
+
req_body: str = request.get_data(as_text=True)
|
|
105
|
+
payload: Union[list, dict, None] = json.loads(req_body) if req_body else None
|
|
106
|
+
|
|
107
|
+
if payload is None:
|
|
108
|
+
return (
|
|
109
|
+
"Invalid JSON data. Please provide a single trace as a JSON object or a list of trace objects.",
|
|
110
|
+
400,
|
|
111
|
+
headers,
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
if isinstance(payload, list):
|
|
115
|
+
for item in payload:
|
|
116
|
+
self.__handle_payload_item(item)
|
|
117
|
+
else:
|
|
118
|
+
self.__handle_payload_item(payload)
|
|
119
|
+
|
|
120
|
+
return "Created", 201, headers
|
|
84
121
|
|
|
85
122
|
|
|
86
123
|
def blueprint():
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
sqlalchemy.url=oracle://user:pass@servicename
|
|
22
22
|
version_table_schema=rucio
|
|
23
23
|
|
|
24
|
-
#sqlalchemy.url=postgresql://rucio:rucio@psql-hostname:5432/rucio
|
|
24
|
+
#sqlalchemy.url=postgresql+psycopg://rucio:rucio@psql-hostname:5432/rucio
|
|
25
25
|
#version_table_schema=rucio
|
|
26
26
|
|
|
27
27
|
#sqlalchemy.url=mysql+pymysql://rucio:rucio@rucio-hostname:3306/rucio
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
#sqlalchemy.url=oracle://user:pass@servicename
|
|
22
22
|
#version_table_schema=rucio
|
|
23
23
|
|
|
24
|
-
#sqlalchemy.url=postgresql://rucio:rucio@psql-hostname:5432/rucio
|
|
24
|
+
#sqlalchemy.url=postgresql+psycopg://rucio:rucio@psql-hostname:5432/rucio
|
|
25
25
|
#version_table_schema=rucio
|
|
26
26
|
|
|
27
27
|
#sqlalchemy.url=mysql+pymysql://rucio:rucio@rucio-hostname:3306/rucio
|
|
@@ -29,8 +29,9 @@ request_retries = 3
|
|
|
29
29
|
auth_type = x509_proxy
|
|
30
30
|
|
|
31
31
|
[policy]
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
package = atlas_rucio_policy_package
|
|
33
|
+
#permission = atlas
|
|
34
|
+
#schema = atlas
|
|
34
35
|
lfn2pfn_algorithm_default = hash
|
|
35
36
|
support = hn-atlas-dist-analysis-help@cern.ch
|
|
36
37
|
support_rucio = https://github.com/rucio/rucio/issues/
|
|
@@ -77,7 +77,7 @@ default = sqlite:////tmp/rucio.db
|
|
|
77
77
|
#default = oracle://_____________:___________@(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
|
-
#default = postgresql://rucio:rucio@localhost/rucio
|
|
80
|
+
#default = postgresql+psycopg://rucio:rucio@localhost/rucio
|
|
81
81
|
pool_recycle=3600
|
|
82
82
|
echo=0
|
|
83
83
|
pool_reset_on_return=rollback
|
|
@@ -211,27 +211,11 @@ fts_servers = https://fts3-pilot.cern.ch:8446, https://fts3-devel.cern.ch:8446,
|
|
|
211
211
|
cache = /opt/rucio/auditor-cache
|
|
212
212
|
results = /opt/rucio/auditor-results
|
|
213
213
|
|
|
214
|
-
[c3po]
|
|
215
|
-
placement_algorithm = t2_free_space
|
|
216
|
-
elastic_url = http://aianalytics01.cern.ch:9200
|
|
217
|
-
redis_host = localhost
|
|
218
|
-
redis_port = 6379
|
|
219
|
-
|
|
220
|
-
[c3po-popularity]
|
|
221
|
-
elastic_url = http://rucio-logger-prod-01.cern.ch:9200
|
|
222
|
-
|
|
223
|
-
[c3po-site-mapper]
|
|
224
|
-
panda_url = http://atlas-agis-api.cern.ch/request/pandaqueue/query/list/?json
|
|
225
|
-
ddm_url = http://atlas-agis-api.cern.ch/request/ddmendpoint/query/list/?json
|
|
226
|
-
|
|
227
|
-
[c3po-workload]
|
|
228
|
-
panda_url = http://bigpanda.cern.ch/jobs/?category=analysis&jobstatus=running
|
|
229
|
-
window = 604800
|
|
230
|
-
|
|
231
214
|
[policy]
|
|
232
|
-
package =
|
|
215
|
+
package = atlas_rucio_policy_package
|
|
233
216
|
permission = atlas
|
|
234
217
|
schema = atlas
|
|
218
|
+
extract_scope = atlas
|
|
235
219
|
lfn2pfn_algorithm_default = hash
|
|
236
220
|
support = hn-atlas-dist-analysis-help@cern.ch
|
|
237
221
|
support_rucio = https://github.com/rucio/rucio/issues/
|
|
@@ -60,7 +60,7 @@ default = sqlite:////tmp/rucio.db
|
|
|
60
60
|
#default = oracle://_____________:___________@(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
|
-
#default = postgresql://rucio:rucio@localhost/rucio
|
|
63
|
+
#default = postgresql+psycopg://rucio:rucio@localhost/rucio
|
|
64
64
|
pool_recycle=3600
|
|
65
65
|
echo=0
|
|
66
66
|
pool_reset_on_return=rollback
|
|
@@ -191,23 +191,6 @@ fts_servers = https://fts3-pilot.cern.ch:8446, https://fts3-devel.cern.ch:8446,
|
|
|
191
191
|
cache = /opt/rucio/auditor-cache
|
|
192
192
|
results = /opt/rucio/auditor-results
|
|
193
193
|
|
|
194
|
-
[c3po]
|
|
195
|
-
placement_algorithm = t2_free_space
|
|
196
|
-
elastic_url = http://aianalytics01.cern.ch:9200
|
|
197
|
-
redis_host = localhost
|
|
198
|
-
redis_port = 6379
|
|
199
|
-
|
|
200
|
-
[c3po-popularity]
|
|
201
|
-
elastic_url = http://rucio-logger-prod-01.cern.ch:9200
|
|
202
|
-
|
|
203
|
-
[c3po-site-mapper]
|
|
204
|
-
panda_url = http://atlas-agis-api.cern.ch/request/pandaqueue/query/list/?json
|
|
205
|
-
ddm_url = http://atlas-agis-api.cern.ch/request/ddmendpoint/query/list/?json
|
|
206
|
-
|
|
207
|
-
[c3po-workload]
|
|
208
|
-
panda_url = http://bigpanda.cern.ch/jobs/?category=analysis&jobstatus=running
|
|
209
|
-
window = 604800
|
|
210
|
-
|
|
211
194
|
[policy]
|
|
212
195
|
#package = GenericMultiVORucioPolicy #doesn't exist
|
|
213
196
|
permission = generic_multi_vo
|
|
@@ -2,50 +2,54 @@
|
|
|
2
2
|
# This file is autogenerated by pip-compile with Python 3.9
|
|
3
3
|
# by the following command:
|
|
4
4
|
#
|
|
5
|
-
# pip-compile requirements.server.in
|
|
5
|
+
# pip-compile --strip-extras requirements.server.in
|
|
6
6
|
#
|
|
7
|
-
|
|
7
|
+
aiohappyeyeballs==2.5.0
|
|
8
|
+
# via aiohttp
|
|
9
|
+
aiohttp==3.11.13
|
|
8
10
|
# via geoip2
|
|
9
|
-
aiosignal==1.3.
|
|
11
|
+
aiosignal==1.3.2
|
|
10
12
|
# via aiohttp
|
|
11
|
-
alembic==1.
|
|
13
|
+
alembic==1.14.1
|
|
12
14
|
# via -r requirements.server.in
|
|
13
15
|
annotated-types==0.7.0
|
|
14
16
|
# via pydantic
|
|
15
|
-
argcomplete==3.
|
|
17
|
+
argcomplete==3.5.3
|
|
16
18
|
# via -r requirements.server.in
|
|
17
|
-
async-timeout==
|
|
19
|
+
async-timeout==5.0.1
|
|
18
20
|
# via
|
|
19
21
|
# aiohttp
|
|
20
22
|
# redis
|
|
21
|
-
attrs==
|
|
23
|
+
attrs==25.1.0
|
|
22
24
|
# via
|
|
23
25
|
# aiohttp
|
|
24
26
|
# jsonschema
|
|
25
27
|
# referencing
|
|
26
|
-
bcrypt==4.
|
|
28
|
+
bcrypt==4.3.0
|
|
27
29
|
# via paramiko
|
|
28
|
-
blinker==1.
|
|
30
|
+
blinker==1.9.0
|
|
29
31
|
# via flask
|
|
30
|
-
boto3==1.
|
|
32
|
+
boto3==1.37.5
|
|
31
33
|
# via -r requirements.server.in
|
|
32
|
-
botocore==1.
|
|
34
|
+
botocore==1.37.7
|
|
33
35
|
# via
|
|
34
36
|
# boto3
|
|
35
37
|
# s3transfer
|
|
36
|
-
cachetools==5.
|
|
38
|
+
cachetools==5.5.2
|
|
37
39
|
# via google-auth
|
|
38
|
-
certifi==
|
|
39
|
-
# via
|
|
40
|
-
|
|
40
|
+
certifi==2025.1.31
|
|
41
|
+
# via
|
|
42
|
+
# elastic-transport
|
|
43
|
+
# requests
|
|
44
|
+
cffi==1.17.1
|
|
41
45
|
# via
|
|
42
46
|
# cryptography
|
|
43
47
|
# pynacl
|
|
44
|
-
charset-normalizer==3.
|
|
48
|
+
charset-normalizer==3.4.1
|
|
45
49
|
# via requests
|
|
46
|
-
click==8.1.
|
|
50
|
+
click==8.1.8
|
|
47
51
|
# via flask
|
|
48
|
-
cryptography==
|
|
52
|
+
cryptography==44.0.2
|
|
49
53
|
# via
|
|
50
54
|
# globus-sdk
|
|
51
55
|
# oic
|
|
@@ -55,47 +59,49 @@ cryptography==43.0.1
|
|
|
55
59
|
# requests-kerberos
|
|
56
60
|
cx-oracle==8.3.0
|
|
57
61
|
# via -r requirements.server.in
|
|
58
|
-
decorator==5.
|
|
62
|
+
decorator==5.2.1
|
|
59
63
|
# via
|
|
60
64
|
# dogpile-cache
|
|
61
65
|
# gssapi
|
|
62
66
|
defusedxml==0.7.1
|
|
63
67
|
# via oic
|
|
64
|
-
dnspython==2.
|
|
68
|
+
dnspython==2.7.0
|
|
65
69
|
# via pymongo
|
|
66
70
|
docopt==0.6.2
|
|
67
71
|
# via stomp-py
|
|
68
72
|
dogpile-cache==1.2.2
|
|
69
73
|
# via -r requirements.server.in
|
|
70
|
-
|
|
74
|
+
elastic-transport==8.17.0
|
|
75
|
+
# via elasticsearch
|
|
76
|
+
elasticsearch==8.15.1
|
|
71
77
|
# via -r requirements.server.in
|
|
72
|
-
|
|
78
|
+
flask==3.1.0
|
|
79
|
+
# via -r requirements.server.in
|
|
80
|
+
frozenlist==1.5.0
|
|
73
81
|
# via
|
|
74
82
|
# aiohttp
|
|
75
83
|
# aiosignal
|
|
76
84
|
future==1.0.0
|
|
77
85
|
# via pyjwkest
|
|
78
|
-
geoip2==
|
|
86
|
+
geoip2==5.0.1
|
|
79
87
|
# via -r requirements.server.in
|
|
80
88
|
globus-sdk==3.41.0
|
|
81
89
|
# via -r requirements.server.in
|
|
82
|
-
google-auth==2.
|
|
90
|
+
google-auth==2.38.0
|
|
83
91
|
# via -r requirements.server.in
|
|
84
|
-
|
|
85
|
-
# via sqlalchemy
|
|
86
|
-
gssapi==1.8.3
|
|
92
|
+
gssapi==1.9.0
|
|
87
93
|
# via pyspnego
|
|
88
|
-
idna==3.
|
|
94
|
+
idna==3.10
|
|
89
95
|
# via
|
|
90
96
|
# requests
|
|
91
97
|
# yarl
|
|
92
|
-
importlib-metadata==8.
|
|
98
|
+
importlib-metadata==8.6.1
|
|
93
99
|
# via flask
|
|
94
|
-
isodate==0.
|
|
100
|
+
isodate==0.7.2
|
|
95
101
|
# via python3-saml
|
|
96
102
|
itsdangerous==2.2.0
|
|
97
103
|
# via flask
|
|
98
|
-
jinja2==3.1.
|
|
104
|
+
jinja2==3.1.6
|
|
99
105
|
# via flask
|
|
100
106
|
jmespath==1.0.1
|
|
101
107
|
# via
|
|
@@ -103,78 +109,94 @@ jmespath==1.0.1
|
|
|
103
109
|
# botocore
|
|
104
110
|
jsonschema==4.23.0
|
|
105
111
|
# via -r requirements.server.in
|
|
106
|
-
jsonschema-specifications==
|
|
112
|
+
jsonschema-specifications==2024.10.1
|
|
107
113
|
# via jsonschema
|
|
108
114
|
kerberos==1.3.1
|
|
109
115
|
# via -r requirements.server.in
|
|
110
|
-
krb5==0.
|
|
116
|
+
krb5==0.7.1
|
|
111
117
|
# via pyspnego
|
|
112
|
-
libtorrent==2.0.
|
|
118
|
+
libtorrent==2.0.11
|
|
113
119
|
# via -r requirements.server.in
|
|
114
|
-
lxml==5.
|
|
120
|
+
lxml==5.3.1
|
|
115
121
|
# via
|
|
116
122
|
# python3-saml
|
|
117
123
|
# xmlsec
|
|
118
|
-
mako==1.3.
|
|
124
|
+
mako==1.3.9
|
|
119
125
|
# via
|
|
120
126
|
# alembic
|
|
121
127
|
# oic
|
|
122
|
-
|
|
128
|
+
markdown-it-py==3.0.0
|
|
129
|
+
# via rich
|
|
130
|
+
markupsafe==3.0.2
|
|
123
131
|
# via
|
|
124
132
|
# jinja2
|
|
125
133
|
# mako
|
|
126
134
|
# werkzeug
|
|
127
|
-
maxminddb==2.6.
|
|
135
|
+
maxminddb==2.6.3
|
|
128
136
|
# via geoip2
|
|
129
|
-
|
|
137
|
+
mdurl==0.1.2
|
|
138
|
+
# via markdown-it-py
|
|
139
|
+
multidict==6.1.0
|
|
130
140
|
# via
|
|
131
141
|
# aiohttp
|
|
132
142
|
# yarl
|
|
133
143
|
oic==1.7.0
|
|
134
144
|
# via -r requirements.server.in
|
|
135
145
|
packaging==24.1
|
|
136
|
-
# via
|
|
137
|
-
|
|
146
|
+
# via
|
|
147
|
+
# -r requirements.server.in
|
|
148
|
+
# qbittorrent-api
|
|
149
|
+
paramiko==3.5.1
|
|
138
150
|
# via -r requirements.server.in
|
|
139
|
-
pbr==6.
|
|
151
|
+
pbr==6.1.1
|
|
140
152
|
# via stevedore
|
|
141
|
-
prometheus-client==0.
|
|
153
|
+
prometheus-client==0.21.1
|
|
142
154
|
# via -r requirements.server.in
|
|
143
|
-
|
|
155
|
+
propcache==0.3.0
|
|
156
|
+
# via
|
|
157
|
+
# aiohttp
|
|
158
|
+
# yarl
|
|
159
|
+
psycopg==3.2.3 ; implementation_name == "cpython"
|
|
144
160
|
# via -r requirements.server.in
|
|
145
|
-
|
|
161
|
+
psycopg-binary==3.2.3
|
|
162
|
+
# via psycopg
|
|
163
|
+
psycopg-pool==3.2.4
|
|
164
|
+
# via psycopg
|
|
165
|
+
pyasn1==0.6.1
|
|
146
166
|
# via
|
|
147
167
|
# pyasn1-modules
|
|
148
168
|
# rsa
|
|
149
|
-
pyasn1-modules==0.4.
|
|
169
|
+
pyasn1-modules==0.4.1
|
|
150
170
|
# via google-auth
|
|
151
171
|
pycparser==2.22
|
|
152
172
|
# via cffi
|
|
153
|
-
pycryptodomex==3.
|
|
173
|
+
pycryptodomex==3.21.0
|
|
154
174
|
# via
|
|
155
175
|
# oic
|
|
156
176
|
# pyjwkest
|
|
157
|
-
pydantic==2.
|
|
177
|
+
pydantic==2.10.6
|
|
158
178
|
# via pydantic-settings
|
|
159
|
-
pydantic-core==2.
|
|
179
|
+
pydantic-core==2.27.2
|
|
160
180
|
# via pydantic
|
|
161
|
-
pydantic-settings==2.
|
|
181
|
+
pydantic-settings==2.8.1
|
|
162
182
|
# via oic
|
|
183
|
+
pygments==2.19.1
|
|
184
|
+
# via rich
|
|
163
185
|
pyjwkest==1.4.2
|
|
164
186
|
# via oic
|
|
165
|
-
pyjwt
|
|
187
|
+
pyjwt==2.10.1
|
|
166
188
|
# via globus-sdk
|
|
167
189
|
pykerberos==1.2.4
|
|
168
190
|
# via -r requirements.server.in
|
|
169
191
|
pymemcache==4.0.0
|
|
170
192
|
# via -r requirements.server.in
|
|
171
|
-
pymongo==4.
|
|
193
|
+
pymongo==4.11.2
|
|
172
194
|
# via -r requirements.server.in
|
|
173
195
|
pymysql==1.1.1
|
|
174
196
|
# via -r requirements.server.in
|
|
175
197
|
pynacl==1.5.0
|
|
176
198
|
# via paramiko
|
|
177
|
-
pyspnego
|
|
199
|
+
pyspnego==0.11.2
|
|
178
200
|
# via requests-kerberos
|
|
179
201
|
python-dateutil==2.9.0.post0
|
|
180
202
|
# via
|
|
@@ -184,17 +206,17 @@ python-dotenv==1.0.1
|
|
|
184
206
|
# via pydantic-settings
|
|
185
207
|
python-magic==0.4.27
|
|
186
208
|
# via -r requirements.server.in
|
|
187
|
-
python-swiftclient==4.
|
|
209
|
+
python-swiftclient==4.7.0
|
|
188
210
|
# via -r requirements.server.in
|
|
189
211
|
python3-saml==1.16.0
|
|
190
212
|
# via -r requirements.server.in
|
|
191
|
-
pyyaml==6.0.
|
|
213
|
+
pyyaml==6.0.2
|
|
192
214
|
# via -r requirements.server.in
|
|
193
|
-
qbittorrent-api==
|
|
215
|
+
qbittorrent-api==2025.2.0
|
|
194
216
|
# via -r requirements.server.in
|
|
195
|
-
redis==5.
|
|
217
|
+
redis==5.2.1
|
|
196
218
|
# via -r requirements.server.in
|
|
197
|
-
referencing==0.
|
|
219
|
+
referencing==0.36.2
|
|
198
220
|
# via
|
|
199
221
|
# jsonschema
|
|
200
222
|
# jsonschema-specifications
|
|
@@ -210,28 +232,29 @@ requests==2.32.3
|
|
|
210
232
|
# requests-kerberos
|
|
211
233
|
requests-kerberos==0.15.0
|
|
212
234
|
# via -r requirements.server.in
|
|
213
|
-
|
|
235
|
+
rich==13.9.4
|
|
236
|
+
# via -r requirements.server.in
|
|
237
|
+
rpds-py==0.23.1
|
|
214
238
|
# via
|
|
215
239
|
# jsonschema
|
|
216
240
|
# referencing
|
|
217
241
|
rsa==4.9
|
|
218
242
|
# via google-auth
|
|
219
|
-
s3transfer==0.
|
|
243
|
+
s3transfer==0.11.4
|
|
220
244
|
# via boto3
|
|
221
|
-
six==1.
|
|
245
|
+
six==1.17.0
|
|
222
246
|
# via
|
|
223
|
-
# isodate
|
|
224
247
|
# pyjwkest
|
|
225
248
|
# python-dateutil
|
|
226
|
-
sqlalchemy==2.0.
|
|
249
|
+
sqlalchemy==2.0.38
|
|
227
250
|
# via
|
|
228
251
|
# -r requirements.server.in
|
|
229
252
|
# alembic
|
|
230
253
|
statsd==4.0.1
|
|
231
254
|
# via -r requirements.server.in
|
|
232
|
-
stevedore==5.
|
|
255
|
+
stevedore==5.4.1
|
|
233
256
|
# via dogpile-cache
|
|
234
|
-
stomp-py==8.
|
|
257
|
+
stomp-py==8.2.0
|
|
235
258
|
# via -r requirements.server.in
|
|
236
259
|
tabulate==0.9.0
|
|
237
260
|
# via -r requirements.server.in
|
|
@@ -240,18 +263,24 @@ typing-extensions==4.12.2
|
|
|
240
263
|
# alembic
|
|
241
264
|
# dogpile-cache
|
|
242
265
|
# globus-sdk
|
|
266
|
+
# multidict
|
|
267
|
+
# psycopg
|
|
268
|
+
# psycopg-pool
|
|
243
269
|
# pydantic
|
|
244
270
|
# pydantic-core
|
|
271
|
+
# referencing
|
|
272
|
+
# rich
|
|
245
273
|
# sqlalchemy
|
|
246
274
|
urllib3==1.26.19
|
|
247
275
|
# via
|
|
248
276
|
# -r requirements.server.in
|
|
249
277
|
# botocore
|
|
278
|
+
# elastic-transport
|
|
250
279
|
# qbittorrent-api
|
|
251
280
|
# requests
|
|
252
281
|
websocket-client==1.8.0
|
|
253
282
|
# via stomp-py
|
|
254
|
-
werkzeug==3.
|
|
283
|
+
werkzeug==3.1.3
|
|
255
284
|
# via
|
|
256
285
|
# -r requirements.server.in
|
|
257
286
|
# flask
|
|
@@ -259,9 +288,9 @@ xmlsec==1.3.13
|
|
|
259
288
|
# via
|
|
260
289
|
# -r requirements.server.in
|
|
261
290
|
# python3-saml
|
|
262
|
-
yarl==1.
|
|
291
|
+
yarl==1.18.3
|
|
263
292
|
# via aiohttp
|
|
264
|
-
zipp==3.
|
|
293
|
+
zipp==3.21.0
|
|
265
294
|
# via importlib-metadata
|
|
266
295
|
|
|
267
296
|
# The following packages are considered to be unsafe in a requirements file:
|