From 05b6be2e4265a03002e3d9d68b4281753e33db81 Mon Sep 17 00:00:00 2001 From: ziajka Date: Fri, 2 Mar 2018 13:48:27 +0100 Subject: [PATCH] Compatybility with controller, default_symbol and hover_symbol, Fixes: #2444 --- gns3server/controller/__init__.py | 15 +++++++++- tests/controller/test_controller.py | 46 +++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/gns3server/controller/__init__.py b/gns3server/controller/__init__.py index 354d4a78..ec9ff0dd 100644 --- a/gns3server/controller/__init__.py +++ b/gns3server/controller/__init__.py @@ -121,8 +121,21 @@ class Controller: for vm in vms: # remove deprecated properties for prop in vm.copy(): - if prop in ["enable_remote_console", "use_ubridge"]: + if prop in ["enable_remote_console", "use_ubridge", "default_symbol", "hover_symbol"]: del vm[prop] + + # remove deprecated default_symbol and hover_symbol + # and set symbol if not present + deprecated = ["default_symbol", "hover_symbol"] + if len([prop for prop in vm.keys() if prop in deprecated]) > 0: + if "default_symbol" in vm.keys(): + del vm["default_symbol"] + if "hover_symbol" in vm.keys(): + del vm["hover_symbol"] + + if "symbol" not in vm.keys(): + vm["symbol"] = ":/symbols/computer.svg" + vm.setdefault("appliance_id", str(uuid.uuid4())) try: appliance = Appliance(vm["appliance_id"], vm) diff --git a/tests/controller/test_controller.py b/tests/controller/test_controller.py index 86b288b8..5c984593 100644 --- a/tests/controller/test_controller.py +++ b/tests/controller/test_controller.py @@ -540,6 +540,52 @@ def test_load_appliances(controller): assert cloud_uuid == appliance.id +def test_load_appliances_deprecated_features_default_symbol(controller): + controller._settings = { + "Qemu": { + "vms": [ + { + "name": "Test", + "node_type": "qemu", + "category": "router", + "default_symbol": ":/symbols/iosv_virl.normal.svg", + "hover_symbol": ":/symbols/iosv_virl.selected.svg", + } + ] + } + } + controller.load_appliances() + appliances = dict([(a.name, a) for a in controller.appliances.values()]) + + assert appliances["Test"].__json__()["symbol"] == ":/symbols/computer.svg" + assert "default_symbol" not in appliances["Test"].data.keys() + assert "hover_symbol" not in appliances["Test"].data.keys() + + +def test_load_appliances_deprecated_features_default_symbol_with_symbol(controller): + controller._settings = { + "Qemu": { + "vms": [ + { + "name": "Test", + "node_type": "qemu", + "category": "router", + "default_symbol": ":/symbols/iosv_virl.normal.svg", + "hover_symbol": ":/symbols/iosv_virl.selected.svg", + "symbol": ":/symbols/my-symbol.svg" + + } + ] + } + } + controller.load_appliances() + appliances = dict([(a.name, a) for a in controller.appliances.values()]) + + assert appliances["Test"].__json__()["symbol"] == ":/symbols/my-symbol.svg" + assert "default_symbol" not in appliances["Test"].data.keys() + assert "hover_symbol" not in appliances["Test"].data.keys() + + def test_autoidlepc(controller, async_run): controller._computes["local"] = AsyncioMagicMock() node_mock = AsyncioMagicMock()