rucio-clients 38.3.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/did.py +1 -1
- rucio/cli/opendata.py +19 -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/accountclient.py +20 -19
- rucio/client/accountlimitclient.py +5 -4
- rucio/client/baseclient.py +25 -25
- rucio/client/configclient.py +7 -6
- rucio/client/credentialclient.py +2 -1
- rucio/client/didclient.py +33 -32
- rucio/client/diracclient.py +2 -1
- rucio/client/downloadclient.py +3 -1
- rucio/client/exportclient.py +2 -1
- rucio/client/importclient.py +2 -1
- rucio/client/lifetimeclient.py +3 -2
- rucio/client/lockclient.py +4 -3
- rucio/client/metaconventionsclient.py +5 -4
- rucio/client/opendataclient.py +8 -7
- rucio/client/pingclient.py +2 -1
- rucio/client/replicaclient.py +27 -26
- rucio/client/requestclient.py +8 -8
- rucio/client/rseclient.py +31 -28
- rucio/client/ruleclient.py +13 -12
- rucio/client/scopeclient.py +44 -4
- rucio/client/subscriptionclient.py +6 -5
- rucio/common/constants.py +18 -0
- rucio/common/didtype.py +18 -11
- rucio/common/exception.py +20 -0
- rucio/common/plugins.py +9 -7
- rucio/rse/protocols/webdav.py +5 -2
- rucio/vcsversion.py +3 -3
- {rucio_clients-38.3.0.data → rucio_clients-38.5.0.data}/data/etc/rucio.cfg.template +2 -3
- {rucio_clients-38.3.0.dist-info → rucio_clients-38.5.0.dist-info}/METADATA +1 -1
- {rucio_clients-38.3.0.dist-info → rucio_clients-38.5.0.dist-info}/RECORD +48 -48
- {rucio_clients-38.3.0.data → rucio_clients-38.5.0.data}/data/etc/rse-accounts.cfg.template +0 -0
- {rucio_clients-38.3.0.data → rucio_clients-38.5.0.data}/data/etc/rucio.cfg.atlas.client.template +0 -0
- {rucio_clients-38.3.0.data → rucio_clients-38.5.0.data}/data/requirements.client.txt +0 -0
- {rucio_clients-38.3.0.data → rucio_clients-38.5.0.data}/data/rucio_client/merge_rucio_configs.py +0 -0
- {rucio_clients-38.3.0.data → rucio_clients-38.5.0.data}/scripts/rucio +0 -0
- {rucio_clients-38.3.0.data → rucio_clients-38.5.0.data}/scripts/rucio-admin +0 -0
- {rucio_clients-38.3.0.dist-info → rucio_clients-38.5.0.dist-info}/WHEEL +0 -0
- {rucio_clients-38.3.0.dist-info → rucio_clients-38.5.0.dist-info}/licenses/AUTHORS.rst +0 -0
- {rucio_clients-38.3.0.dist-info → rucio_clients-38.5.0.dist-info}/licenses/LICENSE +0 -0
- {rucio_clients-38.3.0.dist-info → rucio_clients-38.5.0.dist-info}/top_level.txt +0 -0
rucio/client/didclient.py
CHANGED
|
@@ -20,6 +20,7 @@ from urllib.parse import quote_plus
|
|
|
20
20
|
from requests.status_codes import codes
|
|
21
21
|
|
|
22
22
|
from rucio.client.baseclient import BaseClient, choice
|
|
23
|
+
from rucio.common.constants import HTTPMethod
|
|
23
24
|
from rucio.common.exception import DeprecationError
|
|
24
25
|
from rucio.common.utils import build_url, date_to_str, render_json
|
|
25
26
|
|
|
@@ -28,7 +29,6 @@ if TYPE_CHECKING:
|
|
|
28
29
|
|
|
29
30
|
|
|
30
31
|
class DIDClient(BaseClient):
|
|
31
|
-
|
|
32
32
|
"""DataIdentifier client class for working with data identifiers"""
|
|
33
33
|
|
|
34
34
|
DIDS_BASEURL = 'dids'
|
|
@@ -64,7 +64,7 @@ class DIDClient(BaseClient):
|
|
|
64
64
|
path = '/'.join([self.DIDS_BASEURL, quote_plus(scope), 'dids', 'search'])
|
|
65
65
|
|
|
66
66
|
# stringify dates.
|
|
67
|
-
if isinstance(filters, dict):
|
|
67
|
+
if isinstance(filters, dict): # backwards compatibility for filters as single {}
|
|
68
68
|
filters = [filters]
|
|
69
69
|
for or_group in filters:
|
|
70
70
|
for key, value in or_group.items():
|
|
@@ -80,7 +80,7 @@ class DIDClient(BaseClient):
|
|
|
80
80
|
|
|
81
81
|
url = build_url(choice(self.list_hosts), path=path, params=payload)
|
|
82
82
|
|
|
83
|
-
r = self._send_request(url,
|
|
83
|
+
r = self._send_request(url, method=HTTPMethod.GET)
|
|
84
84
|
|
|
85
85
|
if r.status_code == codes.ok:
|
|
86
86
|
dids = self._load_json_data(r)
|
|
@@ -148,7 +148,7 @@ class DIDClient(BaseClient):
|
|
|
148
148
|
data['dids'] = dids
|
|
149
149
|
if rse:
|
|
150
150
|
data['rse'] = rse
|
|
151
|
-
r = self._send_request(url,
|
|
151
|
+
r = self._send_request(url, method=HTTPMethod.POST, data=render_json(**data))
|
|
152
152
|
if r.status_code == codes.created:
|
|
153
153
|
return True
|
|
154
154
|
else:
|
|
@@ -161,7 +161,7 @@ class DIDClient(BaseClient):
|
|
|
161
161
|
"""
|
|
162
162
|
path = '/'.join([self.DIDS_BASEURL])
|
|
163
163
|
url = build_url(choice(self.list_hosts), path=path)
|
|
164
|
-
r = self._send_request(url,
|
|
164
|
+
r = self._send_request(url, method=HTTPMethod.POST, data=render_json(dids))
|
|
165
165
|
if r.status_code == codes.created:
|
|
166
166
|
return True
|
|
167
167
|
else:
|
|
@@ -245,7 +245,8 @@ class DIDClient(BaseClient):
|
|
|
245
245
|
lifetime :
|
|
246
246
|
DID's lifetime (in seconds).
|
|
247
247
|
"""
|
|
248
|
-
return self.add_did(scope=scope, name=name, did_type='CONTAINER', statuses=statuses, meta=meta, rules=rules,
|
|
248
|
+
return self.add_did(scope=scope, name=name, did_type='CONTAINER', statuses=statuses, meta=meta, rules=rules,
|
|
249
|
+
lifetime=lifetime)
|
|
249
250
|
|
|
250
251
|
def add_containers(self, cnts: "Sequence[dict[str, Any]]") -> bool:
|
|
251
252
|
"""
|
|
@@ -284,7 +285,7 @@ class DIDClient(BaseClient):
|
|
|
284
285
|
data: dict[str, Any] = {'dids': dids}
|
|
285
286
|
if rse:
|
|
286
287
|
data['rse'] = rse
|
|
287
|
-
r = self._send_request(url,
|
|
288
|
+
r = self._send_request(url, method=HTTPMethod.POST, data=render_json(**data))
|
|
288
289
|
if r.status_code == codes.created:
|
|
289
290
|
return True
|
|
290
291
|
else:
|
|
@@ -313,7 +314,7 @@ class DIDClient(BaseClient):
|
|
|
313
314
|
path = '/'.join([self.DIDS_BASEURL, quote_plus(scope), quote_plus(name), 'dids'])
|
|
314
315
|
url = build_url(choice(self.list_hosts), path=path)
|
|
315
316
|
data = {'dids': dids}
|
|
316
|
-
r = self._send_request(url,
|
|
317
|
+
r = self._send_request(url, method=HTTPMethod.DELETE, data=render_json(**data))
|
|
317
318
|
if r.status_code == codes.ok:
|
|
318
319
|
return True
|
|
319
320
|
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
|
@@ -339,7 +340,7 @@ class DIDClient(BaseClient):
|
|
|
339
340
|
path = '/'.join([self.DIDS_BASEURL, 'attachments'])
|
|
340
341
|
url = build_url(choice(self.list_hosts), path=path)
|
|
341
342
|
data = {'ignore_duplicate': ignore_duplicate, 'attachments': attachments}
|
|
342
|
-
r = self._send_request(url,
|
|
343
|
+
r = self._send_request(url, method=HTTPMethod.POST, data=dumps(data))
|
|
343
344
|
if r.status_code in (codes.ok, codes.no_content, codes.created):
|
|
344
345
|
return True
|
|
345
346
|
|
|
@@ -482,9 +483,9 @@ class DIDClient(BaseClient):
|
|
|
482
483
|
return self.attach_dids(scope=scope, name=name, dids=cnts)
|
|
483
484
|
|
|
484
485
|
def list_content(
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
486
|
+
self,
|
|
487
|
+
scope: str,
|
|
488
|
+
name: str
|
|
488
489
|
) -> "Iterator[dict[str, Any]]":
|
|
489
490
|
"""
|
|
490
491
|
List data identifier contents.
|
|
@@ -499,7 +500,7 @@ class DIDClient(BaseClient):
|
|
|
499
500
|
|
|
500
501
|
path = '/'.join([self.DIDS_BASEURL, quote_plus(scope), quote_plus(name), 'dids'])
|
|
501
502
|
url = build_url(choice(self.list_hosts), path=path)
|
|
502
|
-
r = self._send_request(url,
|
|
503
|
+
r = self._send_request(url, method=HTTPMethod.GET)
|
|
503
504
|
if r.status_code == codes.ok:
|
|
504
505
|
return self._load_json_data(r)
|
|
505
506
|
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
|
@@ -524,7 +525,7 @@ class DIDClient(BaseClient):
|
|
|
524
525
|
|
|
525
526
|
path = '/'.join([self.DIDS_BASEURL, quote_plus(scope), quote_plus(name), 'dids', 'history'])
|
|
526
527
|
url = build_url(choice(self.list_hosts), path=path)
|
|
527
|
-
r = self._send_request(url,
|
|
528
|
+
r = self._send_request(url, method=HTTPMethod.GET)
|
|
528
529
|
if r.status_code == codes.ok:
|
|
529
530
|
return self._load_json_data(r)
|
|
530
531
|
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
|
@@ -555,7 +556,7 @@ class DIDClient(BaseClient):
|
|
|
555
556
|
payload['long'] = True
|
|
556
557
|
url = build_url(choice(self.list_hosts), path=path, params=payload)
|
|
557
558
|
|
|
558
|
-
r = self._send_request(url,
|
|
559
|
+
r = self._send_request(url, method=HTTPMethod.GET)
|
|
559
560
|
if r.status_code == codes.ok:
|
|
560
561
|
return self._load_json_data(r)
|
|
561
562
|
else:
|
|
@@ -576,7 +577,7 @@ class DIDClient(BaseClient):
|
|
|
576
577
|
path = '/'.join([self.DIDS_BASEURL, 'bulkfiles'])
|
|
577
578
|
url = build_url(choice(self.list_hosts), path=path)
|
|
578
579
|
|
|
579
|
-
r = self._send_request(url,
|
|
580
|
+
r = self._send_request(url, method=HTTPMethod.POST, data=dumps(data), stream=True)
|
|
580
581
|
if r.status_code == codes.ok:
|
|
581
582
|
return self._load_json_data(r)
|
|
582
583
|
else:
|
|
@@ -613,7 +614,7 @@ class DIDClient(BaseClient):
|
|
|
613
614
|
elif dynamic:
|
|
614
615
|
params['dynamic_depth'] = 'FILE'
|
|
615
616
|
url = build_url(choice(self.list_hosts), path=path, params=params)
|
|
616
|
-
r = self._send_request(url,
|
|
617
|
+
r = self._send_request(url, method=HTTPMethod.GET)
|
|
617
618
|
if r.status_code == codes.ok:
|
|
618
619
|
return next(self._load_json_data(r))
|
|
619
620
|
else:
|
|
@@ -642,7 +643,7 @@ class DIDClient(BaseClient):
|
|
|
642
643
|
url = build_url(choice(self.list_hosts), path=path)
|
|
643
644
|
payload = {}
|
|
644
645
|
payload['plugin'] = plugin
|
|
645
|
-
r = self._send_request(url,
|
|
646
|
+
r = self._send_request(url, method=HTTPMethod.GET, params=payload)
|
|
646
647
|
if r.status_code == codes.ok:
|
|
647
648
|
meta = self._load_json_data(r)
|
|
648
649
|
return next(meta)
|
|
@@ -670,7 +671,7 @@ class DIDClient(BaseClient):
|
|
|
670
671
|
data = {'dids': dids, 'inherit': inherit, 'plugin': plugin}
|
|
671
672
|
path = '/'.join([self.DIDS_BASEURL, 'bulkmeta'])
|
|
672
673
|
url = build_url(choice(self.list_hosts), path=path)
|
|
673
|
-
r = self._send_request(url,
|
|
674
|
+
r = self._send_request(url, method=HTTPMethod.POST, data=dumps(data))
|
|
674
675
|
if r.status_code == codes.ok:
|
|
675
676
|
return self._load_json_data(r)
|
|
676
677
|
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
|
@@ -703,7 +704,7 @@ class DIDClient(BaseClient):
|
|
|
703
704
|
path = '/'.join([self.DIDS_BASEURL, quote_plus(scope), quote_plus(name), 'meta', key])
|
|
704
705
|
url = build_url(choice(self.list_hosts), path=path)
|
|
705
706
|
data = dumps({'value': value, 'recursive': recursive})
|
|
706
|
-
r = self._send_request(url,
|
|
707
|
+
r = self._send_request(url, method=HTTPMethod.POST, data=data)
|
|
707
708
|
if r.status_code == codes.created:
|
|
708
709
|
return True
|
|
709
710
|
else:
|
|
@@ -734,7 +735,7 @@ class DIDClient(BaseClient):
|
|
|
734
735
|
path = '/'.join([self.DIDS_BASEURL, quote_plus(scope), quote_plus(name), 'meta'])
|
|
735
736
|
url = build_url(choice(self.list_hosts), path=path)
|
|
736
737
|
data = dumps({'meta': meta, 'recursive': recursive})
|
|
737
|
-
r = self._send_request(url,
|
|
738
|
+
r = self._send_request(url, method=HTTPMethod.POST, data=data)
|
|
738
739
|
if r.status_code == codes.created:
|
|
739
740
|
return True
|
|
740
741
|
else:
|
|
@@ -760,7 +761,7 @@ class DIDClient(BaseClient):
|
|
|
760
761
|
path = '/'.join([self.DIDS_BASEURL, 'bulkdidsmeta'])
|
|
761
762
|
url = build_url(choice(self.list_hosts), path=path)
|
|
762
763
|
data = dumps({'dids': dids, 'recursive': recursive})
|
|
763
|
-
r = self._send_request(url,
|
|
764
|
+
r = self._send_request(url, method=HTTPMethod.POST, data=data)
|
|
764
765
|
if r.status_code == codes.created:
|
|
765
766
|
return True
|
|
766
767
|
else:
|
|
@@ -788,7 +789,7 @@ class DIDClient(BaseClient):
|
|
|
788
789
|
path = '/'.join([self.DIDS_BASEURL, quote_plus(scope), quote_plus(name), 'status'])
|
|
789
790
|
url = build_url(choice(self.list_hosts), path=path)
|
|
790
791
|
data = dumps(kwargs)
|
|
791
|
-
r = self._send_request(url,
|
|
792
|
+
r = self._send_request(url, method=HTTPMethod.PUT, data=data)
|
|
792
793
|
if r.status_code in (codes.ok, codes.no_content, codes.created):
|
|
793
794
|
return True
|
|
794
795
|
|
|
@@ -833,7 +834,7 @@ class DIDClient(BaseClient):
|
|
|
833
834
|
path = '/'.join([self.DIDS_BASEURL, quote_plus(scope), quote_plus(name), 'meta'])
|
|
834
835
|
url = build_url(choice(self.list_hosts), path=path, params={'key': key})
|
|
835
836
|
|
|
836
|
-
r = self._send_request(url,
|
|
837
|
+
r = self._send_request(url, method=HTTPMethod.DELETE)
|
|
837
838
|
if r.status_code == codes.ok:
|
|
838
839
|
return True
|
|
839
840
|
else:
|
|
@@ -858,7 +859,7 @@ class DIDClient(BaseClient):
|
|
|
858
859
|
|
|
859
860
|
path = '/'.join([self.DIDS_BASEURL, quote_plus(scope), quote_plus(name), 'rules'])
|
|
860
861
|
url = build_url(choice(self.list_hosts), path=path)
|
|
861
|
-
r = self._send_request(url,
|
|
862
|
+
r = self._send_request(url, method=HTTPMethod.GET)
|
|
862
863
|
if r.status_code == codes.ok:
|
|
863
864
|
return self._load_json_data(r)
|
|
864
865
|
else:
|
|
@@ -883,7 +884,7 @@ class DIDClient(BaseClient):
|
|
|
883
884
|
|
|
884
885
|
path = '/'.join([self.DIDS_BASEURL, quote_plus(scope), quote_plus(name), 'associated_rules'])
|
|
885
886
|
url = build_url(choice(self.list_hosts), path=path)
|
|
886
|
-
r = self._send_request(url,
|
|
887
|
+
r = self._send_request(url, method=HTTPMethod.GET)
|
|
887
888
|
if r.status_code == codes.ok:
|
|
888
889
|
return self._load_json_data(r)
|
|
889
890
|
else:
|
|
@@ -907,7 +908,7 @@ class DIDClient(BaseClient):
|
|
|
907
908
|
|
|
908
909
|
path = '/'.join([self.DIDS_BASEURL, guid, 'guid'])
|
|
909
910
|
url = build_url(choice(self.list_hosts), path=path)
|
|
910
|
-
r = self._send_request(url,
|
|
911
|
+
r = self._send_request(url, method=HTTPMethod.GET)
|
|
911
912
|
if r.status_code == codes.ok:
|
|
912
913
|
return self._load_json_data(r)
|
|
913
914
|
else:
|
|
@@ -941,7 +942,7 @@ class DIDClient(BaseClient):
|
|
|
941
942
|
payload['recursive'] = True
|
|
942
943
|
url = build_url(choice(self.list_hosts), path=path, params=payload)
|
|
943
944
|
|
|
944
|
-
r = self._send_request(url,
|
|
945
|
+
r = self._send_request(url, method=HTTPMethod.GET)
|
|
945
946
|
if r.status_code == codes.ok:
|
|
946
947
|
return self._load_json_data(r)
|
|
947
948
|
else:
|
|
@@ -967,7 +968,7 @@ class DIDClient(BaseClient):
|
|
|
967
968
|
path = '/'.join([self.DIDS_BASEURL, quote_plus(scope), quote_plus(name), 'parents'])
|
|
968
969
|
url = build_url(choice(self.list_hosts), path=path)
|
|
969
970
|
|
|
970
|
-
r = self._send_request(url,
|
|
971
|
+
r = self._send_request(url, method=HTTPMethod.GET)
|
|
971
972
|
if r.status_code == codes.ok:
|
|
972
973
|
return self._load_json_data(r)
|
|
973
974
|
else:
|
|
@@ -1007,7 +1008,7 @@ class DIDClient(BaseClient):
|
|
|
1007
1008
|
'nbfiles': str(nbfiles)
|
|
1008
1009
|
})
|
|
1009
1010
|
url = build_url(choice(self.list_hosts), path=path)
|
|
1010
|
-
r = self._send_request(url,
|
|
1011
|
+
r = self._send_request(url, method=HTTPMethod.POST, data=data)
|
|
1011
1012
|
if r.status_code == codes.created:
|
|
1012
1013
|
return True
|
|
1013
1014
|
else:
|
|
@@ -1025,7 +1026,7 @@ class DIDClient(BaseClient):
|
|
|
1025
1026
|
"""
|
|
1026
1027
|
path = '/'.join([self.DIDS_BASEURL, 'resurrect'])
|
|
1027
1028
|
url = build_url(choice(self.list_hosts), path=path)
|
|
1028
|
-
r = self._send_request(url,
|
|
1029
|
+
r = self._send_request(url, method=HTTPMethod.POST, data=dumps(dids))
|
|
1029
1030
|
if r.status_code == codes.created:
|
|
1030
1031
|
return True
|
|
1031
1032
|
else:
|
|
@@ -1049,7 +1050,7 @@ class DIDClient(BaseClient):
|
|
|
1049
1050
|
path = '/'.join([self.ARCHIVES_BASEURL, quote_plus(scope), quote_plus(name), 'files'])
|
|
1050
1051
|
url = build_url(choice(self.list_hosts), path=path)
|
|
1051
1052
|
|
|
1052
|
-
r = self._send_request(url,
|
|
1053
|
+
r = self._send_request(url, method=HTTPMethod.GET)
|
|
1053
1054
|
if r.status_code == codes.ok:
|
|
1054
1055
|
return self._load_json_data(r)
|
|
1055
1056
|
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
rucio/client/diracclient.py
CHANGED
|
@@ -18,6 +18,7 @@ from typing import TYPE_CHECKING, Any, Literal, Optional
|
|
|
18
18
|
from requests.status_codes import codes
|
|
19
19
|
|
|
20
20
|
from rucio.client.baseclient import BaseClient, choice
|
|
21
|
+
from rucio.common.constants import HTTPMethod
|
|
21
22
|
from rucio.common.utils import build_url
|
|
22
23
|
|
|
23
24
|
if TYPE_CHECKING:
|
|
@@ -113,7 +114,7 @@ class DiracClient(BaseClient):
|
|
|
113
114
|
|
|
114
115
|
r = self._send_request(
|
|
115
116
|
url,
|
|
116
|
-
|
|
117
|
+
method=HTTPMethod.POST,
|
|
117
118
|
data=dumps({'lfns': lfns, 'ignore_availability': ignore_availability, 'parents_metadata': parents_metadata})
|
|
118
119
|
)
|
|
119
120
|
|
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/exportclient.py
CHANGED
|
@@ -17,6 +17,7 @@ from typing import Any
|
|
|
17
17
|
from requests.status_codes import codes
|
|
18
18
|
|
|
19
19
|
from rucio.client.baseclient import BaseClient, choice
|
|
20
|
+
from rucio.common.constants import HTTPMethod
|
|
20
21
|
from rucio.common.utils import build_url, parse_response
|
|
21
22
|
|
|
22
23
|
|
|
@@ -83,7 +84,7 @@ class ExportClient(BaseClient):
|
|
|
83
84
|
path = '/'.join([self.EXPORT_BASEURL])
|
|
84
85
|
url = build_url(choice(self.list_hosts), path=path, params=payload)
|
|
85
86
|
|
|
86
|
-
r = self._send_request(url,
|
|
87
|
+
r = self._send_request(url, method=HTTPMethod.GET)
|
|
87
88
|
if r.status_code == codes.ok:
|
|
88
89
|
return parse_response(r.text)
|
|
89
90
|
else:
|
rucio/client/importclient.py
CHANGED
|
@@ -17,6 +17,7 @@ from typing import Any
|
|
|
17
17
|
from requests.status_codes import codes
|
|
18
18
|
|
|
19
19
|
from rucio.client.baseclient import BaseClient, choice
|
|
20
|
+
from rucio.common.constants import HTTPMethod
|
|
20
21
|
from rucio.common.utils import build_url, render_json
|
|
21
22
|
|
|
22
23
|
|
|
@@ -37,7 +38,7 @@ class ImportClient(BaseClient):
|
|
|
37
38
|
path = '/'.join([self.IMPORT_BASEURL])
|
|
38
39
|
url = build_url(choice(self.list_hosts), path=path)
|
|
39
40
|
|
|
40
|
-
r = self._send_request(url,
|
|
41
|
+
r = self._send_request(url, method=HTTPMethod.POST, data=render_json(**data))
|
|
41
42
|
if r.status_code == codes.created:
|
|
42
43
|
return r.text
|
|
43
44
|
else:
|
rucio/client/lifetimeclient.py
CHANGED
|
@@ -18,6 +18,7 @@ from typing import TYPE_CHECKING, Any, Optional
|
|
|
18
18
|
from requests.status_codes import codes
|
|
19
19
|
|
|
20
20
|
from rucio.client.baseclient import BaseClient, choice
|
|
21
|
+
from rucio.common.constants import HTTPMethod
|
|
21
22
|
from rucio.common.utils import build_url, render_json
|
|
22
23
|
|
|
23
24
|
if TYPE_CHECKING:
|
|
@@ -81,7 +82,7 @@ class LifetimeClient(BaseClient):
|
|
|
81
82
|
params['states'] = exception_id
|
|
82
83
|
url = build_url(choice(self.list_hosts), path=path, params=params)
|
|
83
84
|
|
|
84
|
-
result = self._send_request(url)
|
|
85
|
+
result = self._send_request(url, method=HTTPMethod.GET)
|
|
85
86
|
if result.status_code == codes.ok:
|
|
86
87
|
lifetime_exceptions = self._load_json_data(result)
|
|
87
88
|
return lifetime_exceptions
|
|
@@ -133,7 +134,7 @@ class LifetimeClient(BaseClient):
|
|
|
133
134
|
path = self.LIFETIME_BASEURL + '/'
|
|
134
135
|
url = build_url(choice(self.list_hosts), path=path)
|
|
135
136
|
data = {'dids': dids, 'account': account, 'pattern': pattern, 'comments': comments, 'expires_at': expires_at}
|
|
136
|
-
result = self._send_request(url,
|
|
137
|
+
result = self._send_request(url, method=HTTPMethod.POST, data=render_json(**data))
|
|
137
138
|
if result.status_code == codes.created:
|
|
138
139
|
return loads(result.text)
|
|
139
140
|
exc_cls, exc_msg = self._get_exception(headers=result.headers, status_code=result.status_code, data=result.content)
|
rucio/client/lockclient.py
CHANGED
|
@@ -18,6 +18,7 @@ from urllib.parse import quote_plus
|
|
|
18
18
|
from requests.status_codes import codes
|
|
19
19
|
|
|
20
20
|
from rucio.client.baseclient import BaseClient, choice
|
|
21
|
+
from rucio.common.constants import HTTPMethod
|
|
21
22
|
from rucio.common.utils import build_url, render_json
|
|
22
23
|
|
|
23
24
|
if TYPE_CHECKING:
|
|
@@ -50,7 +51,7 @@ class LockClient(BaseClient):
|
|
|
50
51
|
path = '/'.join([self.LOCKS_BASEURL, quote_plus(scope), quote_plus(name)])
|
|
51
52
|
url = build_url(choice(self.list_hosts), path=path, params={'did_type': 'dataset'})
|
|
52
53
|
|
|
53
|
-
result = self._send_request(url)
|
|
54
|
+
result = self._send_request(url, method=HTTPMethod.GET)
|
|
54
55
|
if result.status_code == codes.ok: # pylint: disable-msg=E1101
|
|
55
56
|
locks = self._load_json_data(result)
|
|
56
57
|
return locks
|
|
@@ -87,7 +88,7 @@ class LockClient(BaseClient):
|
|
|
87
88
|
path = '/'.join([self.LOCKS_BASEURL, "bulk_locks_for_dids"])
|
|
88
89
|
url = build_url(choice(self.list_hosts), path=path)
|
|
89
90
|
|
|
90
|
-
result = self._send_request(url,
|
|
91
|
+
result = self._send_request(url, method=HTTPMethod.POST, data=render_json(dids=dids))
|
|
91
92
|
if result.status_code == codes.ok: # pylint: disable-msg=E1101
|
|
92
93
|
out = []
|
|
93
94
|
for lock in self._load_json_data(result):
|
|
@@ -113,7 +114,7 @@ class LockClient(BaseClient):
|
|
|
113
114
|
path = '/'.join([self.LOCKS_BASEURL, rse])
|
|
114
115
|
url = build_url(choice(self.list_hosts), path=path, params={'did_type': 'dataset'})
|
|
115
116
|
|
|
116
|
-
result = self._send_request(url)
|
|
117
|
+
result = self._send_request(url, method=HTTPMethod.GET)
|
|
117
118
|
if result.status_code == codes.ok: # pylint: disable-msg=E1101
|
|
118
119
|
locks = self._load_json_data(result)
|
|
119
120
|
return locks
|
|
@@ -19,6 +19,7 @@ from urllib.parse import quote_plus
|
|
|
19
19
|
from requests.status_codes import codes
|
|
20
20
|
|
|
21
21
|
from rucio.client.baseclient import BaseClient, choice
|
|
22
|
+
from rucio.common.constants import HTTPMethod
|
|
22
23
|
from rucio.common.utils import build_url
|
|
23
24
|
|
|
24
25
|
if TYPE_CHECKING:
|
|
@@ -63,7 +64,7 @@ class MetaConventionClient(BaseClient):
|
|
|
63
64
|
'value_regexp': value_regexp,
|
|
64
65
|
'key_type': key_type})
|
|
65
66
|
|
|
66
|
-
r = self._send_request(url,
|
|
67
|
+
r = self._send_request(url, method=HTTPMethod.POST, data=data)
|
|
67
68
|
|
|
68
69
|
if r.status_code == codes.created:
|
|
69
70
|
return True
|
|
@@ -81,7 +82,7 @@ class MetaConventionClient(BaseClient):
|
|
|
81
82
|
"""
|
|
82
83
|
path = self.META_BASEURL + '/'
|
|
83
84
|
url = build_url(choice(self.list_hosts), path=path)
|
|
84
|
-
r = self._send_request(url)
|
|
85
|
+
r = self._send_request(url, method=HTTPMethod.GET)
|
|
85
86
|
if r.status_code == codes.ok:
|
|
86
87
|
keys = loads(r.text)
|
|
87
88
|
return keys
|
|
@@ -99,7 +100,7 @@ class MetaConventionClient(BaseClient):
|
|
|
99
100
|
"""
|
|
100
101
|
path = '/'.join([self.META_BASEURL, quote_plus(key)]) + '/'
|
|
101
102
|
url = build_url(choice(self.list_hosts), path=path)
|
|
102
|
-
r = self._send_request(url)
|
|
103
|
+
r = self._send_request(url, method=HTTPMethod.GET)
|
|
103
104
|
if r.status_code == codes.ok:
|
|
104
105
|
values = loads(r.text)
|
|
105
106
|
return values
|
|
@@ -131,7 +132,7 @@ class MetaConventionClient(BaseClient):
|
|
|
131
132
|
path = '/'.join([self.META_BASEURL, quote_plus(key)]) + '/'
|
|
132
133
|
data = dumps({'value': value})
|
|
133
134
|
url = build_url(choice(self.list_hosts), path=path)
|
|
134
|
-
r = self._send_request(url,
|
|
135
|
+
r = self._send_request(url, method=HTTPMethod.POST, data=data)
|
|
135
136
|
if r.status_code == codes.created:
|
|
136
137
|
return True
|
|
137
138
|
else:
|
rucio/client/opendataclient.py
CHANGED
|
@@ -20,6 +20,7 @@ from requests.status_codes import codes
|
|
|
20
20
|
|
|
21
21
|
from rucio.client.baseclient import BaseClient, choice
|
|
22
22
|
from rucio.common.config import config_get
|
|
23
|
+
from rucio.common.constants import HTTPMethod
|
|
23
24
|
from rucio.common.utils import build_url, render_json
|
|
24
25
|
|
|
25
26
|
if TYPE_CHECKING:
|
|
@@ -85,7 +86,7 @@ class OpenDataClient(BaseClient):
|
|
|
85
86
|
raise ValueError('state and public cannot be provided at the same time.')
|
|
86
87
|
|
|
87
88
|
url = build_url(self.get_opendata_host(public=public), path=path)
|
|
88
|
-
r = self._send_request(url,
|
|
89
|
+
r = self._send_request(url, method=HTTPMethod.GET, params=params)
|
|
89
90
|
if r.status_code == codes.ok:
|
|
90
91
|
return json.loads(r.content.decode('utf-8'))
|
|
91
92
|
else:
|
|
@@ -115,7 +116,7 @@ class OpenDataClient(BaseClient):
|
|
|
115
116
|
path = '/'.join([self.opendata_private_dids_base_url, quote_plus(scope), quote_plus(name)])
|
|
116
117
|
url = build_url(self.get_opendata_host(public=False), path=path)
|
|
117
118
|
|
|
118
|
-
r = self._send_request(url,
|
|
119
|
+
r = self._send_request(url, method=HTTPMethod.POST)
|
|
119
120
|
|
|
120
121
|
if r.status_code == codes.created:
|
|
121
122
|
return True
|
|
@@ -146,7 +147,7 @@ class OpenDataClient(BaseClient):
|
|
|
146
147
|
path = '/'.join([self.opendata_private_dids_base_url, quote_plus(scope), quote_plus(name)])
|
|
147
148
|
url = build_url(self.get_opendata_host(public=False), path=path)
|
|
148
149
|
|
|
149
|
-
r = self._send_request(url,
|
|
150
|
+
r = self._send_request(url, method=HTTPMethod.DELETE)
|
|
150
151
|
|
|
151
152
|
if r.status_code == codes.no_content:
|
|
152
153
|
return True
|
|
@@ -162,7 +163,7 @@ class OpenDataClient(BaseClient):
|
|
|
162
163
|
state: Optional["OPENDATA_DID_STATE_LITERAL"] = None,
|
|
163
164
|
meta: Optional[dict] = None,
|
|
164
165
|
doi: Optional[str] = None,
|
|
165
|
-
) ->
|
|
166
|
+
) -> dict[str, Any]:
|
|
166
167
|
"""
|
|
167
168
|
Update an existing Opendata DID in the Opendata catalog.
|
|
168
169
|
|
|
@@ -198,10 +199,10 @@ class OpenDataClient(BaseClient):
|
|
|
198
199
|
if doi is not None:
|
|
199
200
|
data['doi'] = doi
|
|
200
201
|
|
|
201
|
-
r = self._send_request(url,
|
|
202
|
+
r = self._send_request(url, method=HTTPMethod.PUT, data=render_json(**data))
|
|
202
203
|
|
|
203
204
|
if r.status_code == codes.ok:
|
|
204
|
-
return
|
|
205
|
+
return json.loads(r.content.decode('utf-8'))
|
|
205
206
|
else:
|
|
206
207
|
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
|
207
208
|
raise exc_cls(exc_msg)
|
|
@@ -236,7 +237,7 @@ class OpenDataClient(BaseClient):
|
|
|
236
237
|
path = '/'.join([base_url, quote_plus(scope), quote_plus(name)])
|
|
237
238
|
url = build_url(self.get_opendata_host(public=public), path=path)
|
|
238
239
|
|
|
239
|
-
r = self._send_request(url,
|
|
240
|
+
r = self._send_request(url, method=HTTPMethod.GET, params={
|
|
240
241
|
'files': 1 if include_files else 0,
|
|
241
242
|
'meta': 1 if include_metadata else 0,
|
|
242
243
|
'doi': 1 if include_doi else 0,
|
rucio/client/pingclient.py
CHANGED
|
@@ -18,6 +18,7 @@ from typing import Any
|
|
|
18
18
|
from requests.status_codes import codes
|
|
19
19
|
|
|
20
20
|
from rucio.client.baseclient import BaseClient
|
|
21
|
+
from rucio.common.constants import HTTPMethod
|
|
21
22
|
from rucio.common.utils import build_url
|
|
22
23
|
|
|
23
24
|
|
|
@@ -67,7 +68,7 @@ class PingClient(BaseClient):
|
|
|
67
68
|
headers = None
|
|
68
69
|
path = 'ping'
|
|
69
70
|
url = build_url(self.host, path=path)
|
|
70
|
-
r = self._send_request(url, headers=headers,
|
|
71
|
+
r = self._send_request(url, headers=headers, method=HTTPMethod.GET)
|
|
71
72
|
|
|
72
73
|
if r.status_code == codes.ok:
|
|
73
74
|
server_info = loads(r.text)
|