Make some EnvBase methods class methods

This commit is contained in:
Neil Booth 2018-03-12 08:04:14 +08:00
parent e8e5b3b0a9
commit 60761b35e1

View File

@ -26,34 +26,39 @@ class EnvBase(lib_util.LoggedClass):
self.rpc_host = self.default('RPC_HOST', 'localhost') self.rpc_host = self.default('RPC_HOST', 'localhost')
self.loop_policy = self.event_loop_policy() self.loop_policy = self.event_loop_policy()
def default(self, envvar, default): @classmethod
def default(cls, envvar, default):
return environ.get(envvar, default) return environ.get(envvar, default)
def boolean(self, envvar, default): @classmethod
def boolean(cls, envvar, default):
default = 'Yes' if default else '' default = 'Yes' if default else ''
return bool(self.default(envvar, default).strip()) return bool(cls.default(envvar, default).strip())
def required(self, envvar): @classmethod
def required(cls, envvar):
value = environ.get(envvar) value = environ.get(envvar)
if value is None: if value is None:
raise self.Error('required envvar {} not set'.format(envvar)) raise cls.Error('required envvar {} not set'.format(envvar))
return value return value
def integer(self, envvar, default): @classmethod
def integer(cls, envvar, default):
value = environ.get(envvar) value = environ.get(envvar)
if value is None: if value is None:
return default return default
try: try:
return int(value) return int(value)
except Exception: except Exception:
raise self.Error('cannot convert envvar {} value {} to an integer' raise cls.Error('cannot convert envvar {} value {} to an integer'
.format(envvar, value)) .format(envvar, value))
def obsolete(self, envvars): @classmethod
def obsolete(cls, envvars):
bad = [envvar for envvar in envvars if environ.get(envvar)] bad = [envvar for envvar in envvars if environ.get(envvar)]
if bad: if bad:
raise self.Error('remove obsolete environment variables {}' raise cls.Error('remove obsolete environment variables {}'
.format(bad)) .format(bad))
def event_loop_policy(self): def event_loop_policy(self):
policy = self.default('EVENT_LOOP_POLICY', None) policy = self.default('EVENT_LOOP_POLICY', None)