Fix to access resources_path and install_builtin_appliances settings

This commit is contained in:
grossmj 2024-07-09 12:28:39 +02:00
parent 59ad5c55ec
commit 3f7f5a3cda
No known key found for this signature in database
GPG Key ID: 0A2D76AC45EA25CD
5 changed files with 20 additions and 14 deletions

View File

@ -96,9 +96,12 @@ class Docker(BaseManager):
Get the Docker resources storage directory Get the Docker resources storage directory
""" """
server_config = Config.instance().get_section_config("Server") resources_path = Config.instance().settings.Server.resources_path
if not resources_path:
appname = vendor = "GNS3" appname = vendor = "GNS3"
resources_path = os.path.expanduser(server_config.get("resources_path", platformdirs.user_data_dir(appname, vendor, roaming=True))) resources_path = platformdirs.user_data_dir(appname, vendor, roaming=True)
else:
resources_path = os.path.expanduser(resources_path)
docker_resources_dir = os.path.join(resources_path, "docker") docker_resources_dir = os.path.join(resources_path, "docker")
os.makedirs(docker_resources_dir, exist_ok=True) os.makedirs(docker_resources_dir, exist_ok=True)
return docker_resources_dir return docker_resources_dir

View File

@ -52,6 +52,11 @@ symbols_path = /home/gns3/GNS3/symbols
; Path where custom configs are stored ; Path where custom configs are stored
configs_path = /home/gns3/GNS3/configs configs_path = /home/gns3/GNS3/configs
; Path where files like built-in appliances and Docker resources are stored
; The default path is the local user data directory
; (Linux: "~/.local/share/GNS3", macOS: "~/Library/Application Support/GNS3", Windows: "%APPDATA%\GNS3")
; resources_path = /home/gns3/GNS3/resources
; Default symbol theme ; Default symbol theme
; Currently available themes are "Classic", Affinity-square-blue", "Affinity-square-red" ; Currently available themes are "Classic", Affinity-square-blue", "Affinity-square-red"
; "Affinity-square-gray", "Affinity-circle-blue", "Affinity-circle-red" and "Affinity-circle-gray" ; "Affinity-square-gray", "Affinity-circle-blue", "Affinity-circle-red" and "Affinity-circle-gray"
@ -63,11 +68,6 @@ allow_raw_images = True
; Option to automatically discover images in the images directory ; Option to automatically discover images in the images directory
auto_discover_images = True auto_discover_images = True
; Path where files like built-in appliances and Docker resources are stored
; The default path is the local user data directory
; (Linux: "~/.local/share/GNS3", macOS: "~/Library/Application Support/GNS3", Windows: "%APPDATA%\GNS3")
; resources_path = /home/gns3/GNS3/resources
; Option to automatically send crash reports to the GNS3 team ; Option to automatically send crash reports to the GNS3 team
report_errors = True report_errors = True

View File

@ -271,9 +271,7 @@ class Controller:
self._iou_license_settings["license_check"] = iou_config.license_check self._iou_license_settings["license_check"] = iou_config.license_check
# install the built-in appliances if needed # install the built-in appliances if needed
# FIXME if Config.instance().settings.Server.install_builtin_appliances:
server_config = Config.instance().get_section_config("Server")
if server_config.getboolean("install_builtin_appliances", True):
previous_version = controller_vars.get("version") previous_version = controller_vars.get("version")
log.info("Comparing controller version {} with config version {}".format(__version__, previous_version)) log.info("Comparing controller version {} with config version {}".format(__version__, previous_version))
builtin_appliances_path = self._appliance_manager.builtin_appliances_path() builtin_appliances_path = self._appliance_manager.builtin_appliances_path()

View File

@ -100,9 +100,12 @@ class ApplianceManager:
Get the built-in appliance storage directory Get the built-in appliance storage directory
""" """
server_config = Config.instance().get_section_config("Server") resources_path = Config.instance().settings.Server.resources_path
if not resources_path:
appname = vendor = "GNS3" appname = vendor = "GNS3"
resources_path = os.path.expanduser(server_config.get("resources_path", platformdirs.user_data_dir(appname, vendor, roaming=True))) resources_path = platformdirs.user_data_dir(appname, vendor, roaming=True)
else:
resources_path = os.path.expanduser(resources_path)
appliances_dir = os.path.join(resources_path, "appliances") appliances_dir = os.path.join(resources_path, "appliances")
if delete_first: if delete_first:
shutil.rmtree(appliances_dir, ignore_errors=True) shutil.rmtree(appliances_dir, ignore_errors=True)

View File

@ -127,6 +127,7 @@ class ServerSettings(BaseModel):
appliances_path: str = "~/GNS3/appliances" appliances_path: str = "~/GNS3/appliances"
symbols_path: str = "~/GNS3/symbols" symbols_path: str = "~/GNS3/symbols"
configs_path: str = "~/GNS3/configs" configs_path: str = "~/GNS3/configs"
resources_path: str = None
default_symbol_theme: BuiltinSymbolTheme = BuiltinSymbolTheme.affinity_square_blue default_symbol_theme: BuiltinSymbolTheme = BuiltinSymbolTheme.affinity_square_blue
allow_raw_images: bool = True allow_raw_images: bool = True
auto_discover_images: bool = True auto_discover_images: bool = True
@ -145,6 +146,7 @@ class ServerSettings(BaseModel):
default_nat_interface: str = None default_nat_interface: str = None
allow_remote_console: bool = False allow_remote_console: bool = False
enable_builtin_templates: bool = True enable_builtin_templates: bool = True
install_builtin_appliances: bool = True
model_config = ConfigDict(validate_assignment=True, str_strip_whitespace=True, use_enum_values=True) model_config = ConfigDict(validate_assignment=True, str_strip_whitespace=True, use_enum_values=True)
@field_validator("additional_images_paths", mode="before") @field_validator("additional_images_paths", mode="before")