diff --git a/python_sdk/infrahub_sdk/uuidt.py b/python_sdk/infrahub_sdk/uuidt.py index 92b3d775d7..a08b1e5399 100644 --- a/python_sdk/infrahub_sdk/uuidt.py +++ b/python_sdk/infrahub_sdk/uuidt.py @@ -12,6 +12,8 @@ BASE = 16 DIVISOR = BASE - 1 CHARACTERS = list("0123456789abcdefghijklmnopqrstuvwxyz")[:BASE] +HOSTNAME = None +DEFAULT_NAMESPACE = None # Code inspired from https://github.com/isaacharrisholt/uuidt @@ -32,6 +34,11 @@ def encode_number(number: int, min_length: int) -> str: class UUIDT: + namespace: str + timestamp: int + hostname: str + random_chars: str + def __init__( self, namespace: Optional[str] = None, @@ -39,9 +46,24 @@ def __init__( hostname: Optional[str] = None, random_chars: Optional[str] = None, ): - self.namespace = namespace or str(Path(__file__).parent.resolve()) + global DEFAULT_NAMESPACE # pylint: disable=global-statement + global HOSTNAME # pylint: disable=global-statement + + if namespace: + self.namespace = namespace + else: + if not DEFAULT_NAMESPACE: + DEFAULT_NAMESPACE = str(Path(__file__).parent.resolve()) + self.namespace = DEFAULT_NAMESPACE + + if hostname: + self.hostname = hostname + else: + if not HOSTNAME: + HOSTNAME = socket.gethostname() + self.hostname = HOSTNAME + self.timestamp = timestamp or time.time_ns() - self.hostname = hostname or socket.gethostname() self.random_chars = random_chars or "".join(random.choices(CHARACTERS, k=8)) def __str__(self) -> str: