mirror of
https://github.com/home-assistant/supervisor.git
synced 2026-04-28 12:23:12 +01:00
Add support for setting target path in map config (#4694)
* Added support for setting addon target path in map config * Updated addon target path mapping to use dataclass * Added check before adding string folder maps * Moved enum to addon/const, updated map_volumes logic, fixed test * Removed log used for debugging * Use more readable approach to determine addon_config_used Co-authored-by: Mike Degatano <michael.degatano@gmail.com> * Use cleaner approach for checking volume config Co-authored-by: Mike Degatano <michael.degatano@gmail.com> * Use dict syntax and ATTR_TYPE Co-authored-by: Mike Degatano <michael.degatano@gmail.com> * Use coerce for validating mapping type Co-authored-by: Mike Degatano <michael.degatano@gmail.com> * Default read_only to true in schema Co-authored-by: Mike Degatano <michael.degatano@gmail.com> * Use ATTR_TYPE and ATTR_READ_ONLY instead of static strings Co-authored-by: Mike Degatano <michael.degatano@gmail.com> * Use constants instead of in-line strings Co-authored-by: Mike Degatano <michael.degatano@gmail.com> * Correct type for path Co-authored-by: Mike Degatano <michael.degatano@gmail.com> * Added read_only and path constants * Fixed small syntax error and added includes for constants * Simplify logic for handling string and dict entries in map config * Use ATTR_PATH instead of inline string Co-authored-by: Mike Degatano <michael.degatano@gmail.com> * Add missing ATTR_PATH reference * Moved FolderMapping dataclass to data.py * Fix edge case where "data" map type is used but optional path is not set * Move FolderMapping dataclass to configuration.py to prevent circular reference --------- Co-authored-by: Jeff Oakley <jeff.oakley@LearningCircleSoftware.com> Co-authored-by: Mike Degatano <michael.degatano@gmail.com> Co-authored-by: Pascal Vizeli <pvizeli@syshack.ch>
This commit is contained in:
@@ -201,6 +201,49 @@ def test_addon_map_addon_config_folder(
|
||||
)
|
||||
|
||||
|
||||
def test_addon_map_addon_config_folder_with_custom_target(
|
||||
coresys: CoreSys, addonsdata_system: dict[str, Data], path_extern
|
||||
):
|
||||
"""Test mounts for addon which maps its own config folder and sets target path."""
|
||||
config = load_json_fixture("addon-config-map-addon_config.json")
|
||||
config["map"].remove("addon_config")
|
||||
config["map"].append(
|
||||
{"type": "addon_config", "read_only": False, "path": "/custom/target/path"}
|
||||
)
|
||||
docker_addon = get_docker_addon(coresys, addonsdata_system, config)
|
||||
|
||||
# Addon config folder included
|
||||
assert (
|
||||
Mount(
|
||||
type="bind",
|
||||
source=docker_addon.addon.path_extern_config.as_posix(),
|
||||
target="/custom/target/path",
|
||||
read_only=False,
|
||||
)
|
||||
in docker_addon.mounts
|
||||
)
|
||||
|
||||
|
||||
def test_addon_map_data_folder_with_custom_target(
|
||||
coresys: CoreSys, addonsdata_system: dict[str, Data], path_extern
|
||||
):
|
||||
"""Test mounts for addon which sets target path for data folder."""
|
||||
config = load_json_fixture("addon-config-map-addon_config.json")
|
||||
config["map"].append({"type": "data", "path": "/custom/data/path"})
|
||||
docker_addon = get_docker_addon(coresys, addonsdata_system, config)
|
||||
|
||||
# Addon config folder included
|
||||
assert (
|
||||
Mount(
|
||||
type="bind",
|
||||
source=docker_addon.addon.path_extern_data.as_posix(),
|
||||
target="/custom/data/path",
|
||||
read_only=False,
|
||||
)
|
||||
in docker_addon.mounts
|
||||
)
|
||||
|
||||
|
||||
def test_addon_ignore_on_config_map(
|
||||
coresys: CoreSys, addonsdata_system: dict[str, Data], path_extern
|
||||
):
|
||||
|
||||
Reference in New Issue
Block a user