forked from uncloud/uncloud
49 lines
1.1 KiB
Python
49 lines
1.1 KiB
Python
|
from decouple import Config, RepositoryEnv, UndefinedValueError
|
||
|
from etcd3_wrapper import EtcdEntry
|
||
|
|
||
|
|
||
|
class EnvironmentVariables:
|
||
|
def __init__(self, env_file):
|
||
|
try:
|
||
|
env_config = Config(RepositoryEnv(env_file))
|
||
|
except FileNotFoundError:
|
||
|
print("{} does not exists".format(env_file))
|
||
|
exit(1)
|
||
|
else:
|
||
|
self.config = env_config
|
||
|
|
||
|
def get(self, *args, **kwargs):
|
||
|
"""Return value of var from env_vars"""
|
||
|
try:
|
||
|
value = self.config.get(*args, **kwargs)
|
||
|
except UndefinedValueError as e:
|
||
|
print(e)
|
||
|
exit(1)
|
||
|
else:
|
||
|
return value
|
||
|
|
||
|
|
||
|
class SpecificEtcdEntryBase:
|
||
|
def __init__(self, e: EtcdEntry):
|
||
|
self.key = e.key
|
||
|
|
||
|
for k in e.value.keys():
|
||
|
self.__setattr__(k, e.value[k])
|
||
|
|
||
|
def original_keys(self):
|
||
|
r = dict(self.__dict__)
|
||
|
if "key" in r:
|
||
|
del r["key"]
|
||
|
return r
|
||
|
|
||
|
@property
|
||
|
def value(self):
|
||
|
return self.original_keys()
|
||
|
|
||
|
@value.setter
|
||
|
def value(self, v):
|
||
|
self.__dict__ = v
|
||
|
|
||
|
def __repr__(self):
|
||
|
return str(dict(self.__dict__))
|