import threading
ServiceName = "ServiceName"
InterfaceName = "InterfaceName"
URL = "URL"
Method = "Method"
IP = "IP"
Tenant = "Tenant"
Model = "Model"
UserPriority = "UserPriority"
UUID = "UUID"
Resource = "Resource"
ENV = "ENV"
TenantLevel = "TenantLevel"
Priority = "Priority"
class Dimension(threading.Thread):
_instance = None
_lock = threading.Lock()
def __init__(self):
super().__init__()
self.dimension = {}
self.init()
def init(self):
self.dimension[ServiceName] = True
self.dimension[InterfaceName] = True
self.dimension[IP] = True
self.dimension[Model] = True
self.dimension[Tenant] = True
self.dimension[URL] = True
self.dimension[Method] = True
self.dimension[TenantLevel] = True
self.dimension[Priority] = True
self.dimension[UUID] = True
self.dimension[Resource] = True
self.dimension[ENV] = True
self.dimension[UserPriority] = True
def get_dimension(self, dimension: str) -> bool:
return self.dimension.get(dimension, False)
def get_available_dimensions(self) -> list:
return list(self.dimension.keys())
@classmethod
def get_instance(cls) -> 'Dimension':
if cls._instance is None:
with cls._lock:
if cls._instance is None:
cls._instance = cls()
return cls._instance
def __repr__(self):
return f"Dimension(available_dimensions={list(self.dimension.keys())})"
def __str__(self):
return self.__repr__()