rucio-clients 1.31.4__tar.gz → 1.31.6__tar.gz

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.

Files changed (94) hide show
  1. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/PKG-INFO +1 -1
  2. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/bin/rucio +31 -5
  3. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/didclient.py +7 -7
  4. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/utils.py +2 -1
  5. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/vcsversion.py +3 -3
  6. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/AUTHORS.rst +0 -0
  7. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/ChangeLog +0 -0
  8. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/LICENSE +0 -0
  9. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/MANIFEST.in +0 -0
  10. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/README.rst +0 -0
  11. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/bin/rucio-admin +0 -0
  12. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/etc/rse-accounts.cfg.template +0 -0
  13. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/etc/rucio.cfg.atlas.client.template +0 -0
  14. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/etc/rucio.cfg.template +0 -0
  15. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/__init__.py +0 -0
  16. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/alembicrevision.py +0 -0
  17. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/__init__.py +0 -0
  18. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/accountclient.py +0 -0
  19. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/accountlimitclient.py +0 -0
  20. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/baseclient.py +0 -0
  21. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/client.py +0 -0
  22. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/configclient.py +0 -0
  23. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/credentialclient.py +0 -0
  24. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/diracclient.py +0 -0
  25. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/downloadclient.py +0 -0
  26. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/exportclient.py +0 -0
  27. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/fileclient.py +0 -0
  28. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/importclient.py +0 -0
  29. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/lifetimeclient.py +0 -0
  30. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/lockclient.py +0 -0
  31. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/metaclient.py +0 -0
  32. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/pingclient.py +0 -0
  33. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/replicaclient.py +0 -0
  34. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/requestclient.py +0 -0
  35. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/rseclient.py +0 -0
  36. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/ruleclient.py +0 -0
  37. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/scopeclient.py +0 -0
  38. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/subscriptionclient.py +0 -0
  39. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/touchclient.py +0 -0
  40. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/client/uploadclient.py +0 -0
  41. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/__init__.py +0 -0
  42. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/cache.py +0 -0
  43. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/config.py +0 -0
  44. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/constants.py +0 -0
  45. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/constraints.py +0 -0
  46. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/didtype.py +0 -0
  47. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/exception.py +0 -0
  48. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/extra.py +0 -0
  49. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/logging.py +0 -0
  50. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/pcache.py +0 -0
  51. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/policy.py +0 -0
  52. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/schema/__init__.py +0 -0
  53. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/schema/atlas.py +0 -0
  54. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/schema/belleii.py +0 -0
  55. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/schema/cms.py +0 -0
  56. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/schema/domatpc.py +0 -0
  57. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/schema/escape.py +0 -0
  58. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/schema/generic.py +0 -0
  59. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
  60. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/schema/icecube.py +0 -0
  61. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/schema/lsst.py +0 -0
  62. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/stomp_utils.py +0 -0
  63. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/stopwatch.py +0 -0
  64. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/test_rucio_server.py +0 -0
  65. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/common/types.py +0 -0
  66. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/__init__.py +0 -0
  67. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/__init__.py +0 -0
  68. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/cache.py +0 -0
  69. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/dummy.py +0 -0
  70. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/gfal.py +0 -0
  71. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/globus.py +0 -0
  72. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/gsiftp.py +0 -0
  73. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/http_cache.py +0 -0
  74. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/mock.py +0 -0
  75. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/ngarc.py +0 -0
  76. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/posix.py +0 -0
  77. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/protocol.py +0 -0
  78. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/rclone.py +0 -0
  79. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/rfio.py +0 -0
  80. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/srm.py +0 -0
  81. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/ssh.py +0 -0
  82. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/storm.py +0 -0
  83. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/webdav.py +0 -0
  84. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/protocols/xrootd.py +0 -0
  85. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/rse/rsemanager.py +0 -0
  86. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio/version.py +0 -0
  87. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/lib/rucio_clients.egg-info/SOURCES.txt +0 -0
  88. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/pylintrc +0 -0
  89. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/pyproject.toml +0 -0
  90. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/requirements.txt +0 -0
  91. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/setup.cfg +0 -0
  92. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/setup.py +0 -0
  93. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/setuputil.py +0 -0
  94. {rucio-clients-1.31.4 → rucio-clients-1.31.6}/tools/merge_rucio_configs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rucio-clients
3
- Version: 1.31.4
3
+ Version: 1.31.6
4
4
  Summary: Rucio Client Lite Package
5
5
  Home-page: https://rucio.cern.ch/
6
6
  Author: Rucio
@@ -243,6 +243,19 @@ def get_client(args):
243
243
  return client
244
244
 
245
245
 
246
+ def __resolve_containers_to_datasets(scope, name, client):
247
+ """
248
+ Helper function to resolve a container into its dataset content.
249
+ """
250
+ datasets = []
251
+ for did in client.list_content(scope, name):
252
+ if did['type'] == 'DATASET':
253
+ datasets.append({'scope': did['scope'], 'name': did['name']})
254
+ elif did['type'] == 'CONTAINER':
255
+ datasets.extend(__resolve_containers_to_datasets(did['scope'], did['name'], client))
256
+ return datasets
257
+
258
+
246
259
  @exception_handler
247
260
  def ping(args):
248
261
  """
@@ -1728,7 +1741,11 @@ def add_lifetime_exception(args):
1728
1741
  dids_list = []
1729
1742
  containers = []
1730
1743
  datasets = []
1731
- error_types = ['Total DIDs', 'DID not submitted because it is a file', 'DID not submitted because it is a container', 'DID not submitted because it is not part of the lifetime campaign', 'DID successfully submitted']
1744
+ error_types = ['Total DIDs',
1745
+ 'DID not submitted because it is a file',
1746
+ 'DID that are containers and were resolved',
1747
+ 'DID not submitted because it is not part of the lifetime campaign',
1748
+ 'DID successfully submitted including the one from containers resolved']
1732
1749
  for did in dids:
1733
1750
  scope, name = get_scope(did, client)
1734
1751
  dids_list.append({'scope': scope, 'name': name})
@@ -1760,11 +1777,20 @@ def add_lifetime_exception(args):
1760
1777
  logger.warning('%s:%s does not exist' % (scope, name))
1761
1778
 
1762
1779
  if containers:
1763
- logger.error('One or more DIDs are containers. They must be resolved into a list of datasets to request exception. Full list below')
1780
+ logger.warning('One or more DIDs are containers. They will be resolved into a list of datasets to request exception. Full list below')
1764
1781
  for container in containers:
1765
- logger.error('%s:%s' % (container['scope'], container['name']))
1766
- logger.error('Please take action. Submission aborted')
1767
- return FAILURE
1782
+ logger.info('Resolving %s:%s into datasets :' % (container['scope'], container['name']))
1783
+ list_datasets = __resolve_containers_to_datasets(container['scope'], container['name'], client)
1784
+ for chunk in chunks(list_datasets, chunk_limit):
1785
+ for meta in client.get_metadata_bulk(chunk):
1786
+ scope, name = meta['scope'], meta['name']
1787
+ logger.debug('%s:%s' % (scope, name))
1788
+ if not meta['eol_at']:
1789
+ logger.warning('%s:%s is not affected by the lifetime model' % (scope, name))
1790
+ summary[3] += 1
1791
+ else:
1792
+ logger.info('%s:%s will be declared' % (scope, name))
1793
+ datasets.append({'scope': scope, 'name': name})
1768
1794
 
1769
1795
  if not datasets:
1770
1796
  logger.error('Nothing to submit')
@@ -85,10 +85,10 @@ class DIDClient(BaseClient):
85
85
 
86
86
  :param scope: The scope name.
87
87
  :param name: The data identifier name.
88
- :paran type: The data identifier type (file|dataset|container).
88
+ :param type: The data identifier type (file|dataset|container).
89
89
  :param statuses: Dictionary with statuses, e.g.g {'monotonic':True}.
90
- :meta: Meta-data associated with the data identifier is represented using key/value pairs in a dictionary.
91
- :rules: Replication rules associated with the data identifier. A list of dictionaries, e.g., [{'copies': 2, 'rse_expression': 'TIERS1'}, ].
90
+ :param meta: Meta-data associated with the data identifier is represented using key/value pairs in a dictionary.
91
+ :param rules: Replication rules associated with the data identifier. A list of dictionaries, e.g., [{'copies': 2, 'rse_expression': 'TIERS1'}, ].
92
92
  :param lifetime: DID's lifetime (in seconds).
93
93
  :param dids: The content.
94
94
  :param rse: The RSE name when registering replicas.
@@ -136,8 +136,8 @@ class DIDClient(BaseClient):
136
136
  :param scope: The scope name.
137
137
  :param name: The data identifier name.
138
138
  :param statuses: Dictionary with statuses, e.g.g {'monotonic':True}.
139
- :meta: Meta-data associated with the data identifier is represented using key/value pairs in a dictionary.
140
- :rules: Replication rules associated with the data identifier. A list of dictionaries, e.g., [{'copies': 2, 'rse_expression': 'TIERS1'}, ].
139
+ :param meta: Meta-data associated with the data identifier is represented using key/value pairs in a dictionary.
140
+ :param rules: Replication rules associated with the data identifier. A list of dictionaries, e.g., [{'copies': 2, 'rse_expression': 'TIERS1'}, ].
141
141
  :param lifetime: DID's lifetime (in seconds).
142
142
  :param files: The content.
143
143
  :param rse: The RSE name when registering replicas.
@@ -222,7 +222,7 @@ class DIDClient(BaseClient):
222
222
  attachments is: [attachment, attachment, ...]
223
223
  attachment is: {'scope': scope, 'name': name, 'dids': dids}
224
224
  dids is: [{'scope': scope, 'name': name}, ...]
225
- :param ignore_duplicate: If True, ignore duplicate entries.
225
+ :param ignore_duplicate: If True, ignore duplicate entries.
226
226
  """
227
227
  path = '/'.join([self.DIDS_BASEURL, 'attachments'])
228
228
  url = build_url(choice(self.list_hosts), path=path)
@@ -306,7 +306,7 @@ class DIDClient(BaseClient):
306
306
 
307
307
  :param scope: The scope name.
308
308
  :param name: The dataset name.
309
- :param dsns: The content.
309
+ :param cnts: The content.
310
310
  """
311
311
  return self.attach_dids(scope=scope, name=name, dids=cnts)
312
312
 
@@ -1841,7 +1841,8 @@ def check_policy_package_version(package):
1841
1841
  # package is not versioned
1842
1842
  return
1843
1843
  supported_version = module.SUPPORTED_VERSION if isinstance(module.SUPPORTED_VERSION, list) else [module.SUPPORTED_VERSION]
1844
- current_version = ".".join(version_string().split(".")[:2])
1844
+ components = 2 if version_string().startswith("1.") else 1
1845
+ current_version = ".".join(version_string().split(".")[:components])
1845
1846
  if current_version not in supported_version:
1846
1847
  raise PolicyPackageVersionError(package)
1847
1848
 
@@ -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': '1.31.4',
7
+ 'version': '1.31.6',
8
8
  'branch_nick': 'release-1.31',
9
- 'revision_id': 'abe78beabbd132b2714681e80d4843399b833435',
10
- 'revno': 12497
9
+ 'revision_id': 'f03a675dfe86c894dbebab8fdb00ee1b5615fd49',
10
+ 'revno': 12509
11
11
  }
File without changes
File without changes
File without changes
File without changes
File without changes