add env vars to config

fixes #509
This commit is contained in:
Blake Blackshear 2021-01-15 21:33:53 -06:00
parent 6892ce56ac
commit de99221ad5
2 changed files with 14 additions and 2 deletions

View File

@ -39,6 +39,10 @@ class FrigateApp():
self.log_queue = mp.Queue() self.log_queue = mp.Queue()
self.camera_metrics = {} self.camera_metrics = {}
def set_environment_vars(self):
for key, value in self.config.environment_vars.items():
os.environ[key] = value
def ensure_dirs(self): def ensure_dirs(self):
for d in [RECORD_DIR, CLIPS_DIR, CACHE_DIR]: for d in [RECORD_DIR, CLIPS_DIR, CACHE_DIR]:
if not os.path.exists(d) and not os.path.islink(d): if not os.path.exists(d) and not os.path.islink(d):
@ -201,6 +205,7 @@ class FrigateApp():
logger.error(f"Error parsing config: {e}") logger.error(f"Error parsing config: {e}")
self.log_process.terminate() self.log_process.terminate()
sys.exit(1) sys.exit(1)
self.set_environment_vars()
self.ensure_dirs() self.ensure_dirs()
self.check_config() self.check_config()
self.set_log_levels() self.set_log_levels()

View File

@ -248,7 +248,8 @@ FRIGATE_CONFIG_SCHEMA = vol.Schema(
vol.Optional('objects', default={}): OBJECTS_SCHEMA, vol.Optional('objects', default={}): OBJECTS_SCHEMA,
vol.Optional('motion', default={}): MOTION_SCHEMA, vol.Optional('motion', default={}): MOTION_SCHEMA,
vol.Optional('detect', default={}): DETECT_SCHEMA, vol.Optional('detect', default={}): DETECT_SCHEMA,
vol.Required('cameras', default={}): CAMERAS_SCHEMA vol.Required('cameras', default={}): CAMERAS_SCHEMA,
vol.Optional('environment_vars', default={}): { str: str }
} }
) )
@ -982,6 +983,7 @@ class FrigateConfig():
self._snapshots = SnapshotsConfig(config['clips']) self._snapshots = SnapshotsConfig(config['clips'])
self._cameras = { name: CameraConfig(name, c, config) for name, c in config['cameras'].items() } self._cameras = { name: CameraConfig(name, c, config) for name, c in config['cameras'].items() }
self._logger = LoggerConfig(config['logger']) self._logger = LoggerConfig(config['logger'])
self._environment_vars = config['environment_vars']
def _sub_env_vars(self, config): def _sub_env_vars(self, config):
frigate_env_vars = {k: v for k, v in os.environ.items() if k.startswith('FRIGATE_')} frigate_env_vars = {k: v for k, v in os.environ.items() if k.startswith('FRIGATE_')}
@ -1015,7 +1017,8 @@ class FrigateConfig():
'clips': self.clips.to_dict(), 'clips': self.clips.to_dict(),
'snapshots': self.snapshots.to_dict(), 'snapshots': self.snapshots.to_dict(),
'cameras': {k: c.to_dict() for k, c in self.cameras.items()}, 'cameras': {k: c.to_dict() for k, c in self.cameras.items()},
'logger': self.logger.to_dict() 'logger': self.logger.to_dict(),
'environment_vars': self._environment_vars
} }
@property @property
@ -1049,3 +1052,7 @@ class FrigateConfig():
@property @property
def cameras(self) -> Dict[str, CameraConfig]: def cameras(self) -> Dict[str, CameraConfig]:
return self._cameras return self._cameras
@property
def environment_vars(self):
return self._environment_vars