X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c0e203e7f3e9e40736eac63cbe440d5e46e379c0..0a415b6c80c3bf39bb753274aae857eadde2f590:/sdk/python/arvados/util.py diff --git a/sdk/python/arvados/util.py b/sdk/python/arvados/util.py index 1a97358605..9e0a317830 100644 --- a/sdk/python/arvados/util.py +++ b/sdk/python/arvados/util.py @@ -2,10 +2,14 @@ # # SPDX-License-Identifier: Apache-2.0 +from __future__ import division +from builtins import range + import fcntl import hashlib import httplib2 import os +import random import re import subprocess import errno @@ -15,6 +19,9 @@ import arvados from arvados.collection import CollectionReader HEX_RE = re.compile(r'^[0-9a-fA-F]+$') +CR_UNCOMMITTED = 'Uncommitted' +CR_COMMITTED = 'Committed' +CR_FINAL = 'Final' keep_locator_pattern = re.compile(r'[0-9a-f]{32}\+\d+(\+\S+)*') signed_locator_pattern = re.compile(r'[0-9a-f]{32}\+\d+(\+\S+)*\+A\S+(\+\S+)*') @@ -399,3 +406,24 @@ def ca_certs_path(fallback=httplib2.CA_CERTS): if os.path.exists(ca_certs_path): return ca_certs_path return fallback + +def new_request_id(): + rid = "req-" + # 2**104 > 36**20 > 2**103 + n = random.getrandbits(104) + for _ in range(20): + c = n % 36 + if c < 10: + rid += chr(c+ord('0')) + else: + rid += chr(c+ord('a')-10) + n = n // 36 + return rid + +def get_config_once(svc): + if not svc._rootDesc.get('resources')['configs']: + # Old API server version, no config export endpoint + return {} + if not hasattr(svc, '_cached_config'): + svc._cached_config = svc.configs().get().execute() + return svc._cached_config