fix genai migration

This commit is contained in:
Josh Hawkins 2025-11-26 16:06:21 -06:00
parent d0b80d7590
commit 4c18bc7a82

View File

@ -348,11 +348,11 @@ def migrate_016_0(config: dict[str, dict[str, Any]]) -> dict[str, dict[str, Any]
def migrate_017_0(config: dict[str, dict[str, Any]]) -> dict[str, dict[str, Any]]: def migrate_017_0(config: dict[str, dict[str, Any]]) -> dict[str, dict[str, Any]]:
"""Handle migrating frigate config to 0.16-0""" """Handle migrating frigate config to 0.17-0"""
new_config = config.copy() new_config = config.copy()
# migrate global to new recording configuration # migrate global to new recording configuration
global_record_retain = config.get("record", {}).get("retain") global_record_retain = new_config.get("record", {}).get("retain")
if global_record_retain: if global_record_retain:
continuous = {"days": 0} continuous = {"days": 0}
@ -376,22 +376,32 @@ def migrate_017_0(config: dict[str, dict[str, Any]]) -> dict[str, dict[str, Any]
del new_config["record"]["retain"] del new_config["record"]["retain"]
# migrate global genai to new objects config # migrate global genai to new objects config
global_genai = config.get("genai", {}) global_genai = new_config.get("genai", {})
if global_genai: if global_genai:
new_genai_config = {} new_genai_config = {}
new_object_config = config.get("objects", {}) new_object_config = new_config.get("objects", {})
new_object_config["genai"] = {} new_object_genai_config = new_object_config.get("genai", {})
for key in global_genai.keys(): for key, value in global_genai.items():
if key in ["model", "provider", "base_url", "api_key"]: if key in ["model", "provider", "base_url", "api_key"]:
new_genai_config[key] = global_genai[key] new_genai_config[key] = value
else: else:
new_object_config["genai"][key] = global_genai[key] new_object_genai_config[key] = value
config["genai"] = new_genai_config # Only set genai if there are provider/connection keys to keep
if new_genai_config:
new_config["genai"] = new_genai_config
elif "genai" in new_config:
# Remove genai block if all keys moved to objects
del new_config["genai"]
for name, camera in config.get("cameras", {}).items(): # Set objects.genai if there are feature/config keys
if new_object_genai_config:
new_object_config["genai"] = new_object_genai_config
new_config["objects"] = new_object_config
for name, camera in new_config.get("cameras", {}).items():
camera_config: dict[str, dict[str, Any]] = camera.copy() camera_config: dict[str, dict[str, Any]] = camera.copy()
camera_record_retain = camera_config.get("record", {}).get("retain") camera_record_retain = camera_config.get("record", {}).get("retain")
@ -415,8 +425,12 @@ def migrate_017_0(config: dict[str, dict[str, Any]]) -> dict[str, dict[str, Any]
camera_genai = camera_config.get("genai", {}) camera_genai = camera_config.get("genai", {})
if camera_genai: if camera_genai:
new_object_config = config.get("objects", {}) # Move camera-level genai to camera's objects.genai
new_object_config["genai"] = camera_genai camera_objects_config = camera_config.get("objects", {})
camera_object_genai_config = camera_objects_config.get("genai", {})
camera_object_genai_config.update(camera_genai)
camera_objects_config["genai"] = camera_object_genai_config
camera_config["objects"] = camera_objects_config
del camera_config["genai"] del camera_config["genai"]
new_config["cameras"][name] = camera_config new_config["cameras"][name] = camera_config