From 4e34ab8e4f4c4a18ef520abfb9047f4a31e4d416 Mon Sep 17 00:00:00 2001 From: grossmj Date: Mon, 7 Jun 2021 14:08:21 +0930 Subject: [PATCH] Link style support. Fixes https://github.com/GNS3/gns3-gui/issues/2461 --- gns3server/controller/link.py | 10 +++++++++ gns3server/controller/project.py | 2 ++ .../handlers/api/controller/link_handler.py | 4 ++++ gns3server/schemas/link.py | 21 +++++++++++++++++++ 4 files changed, 37 insertions(+) diff --git a/gns3server/controller/link.py b/gns3server/controller/link.py index 6700babc..9d049101 100644 --- a/gns3server/controller/link.py +++ b/gns3server/controller/link.py @@ -124,6 +124,7 @@ class Link: self._link_type = "ethernet" self._suspended = False self._filters = {} + self._link_style = {} @property def filters(self): @@ -209,6 +210,13 @@ class Link: self._project.emit_notification("link.updated", self.__json__()) self._project.dump() + async def update_link_style(self, link_style): + if link_style != self._link_style: + self._link_style = link_style + await self.update() + self._project.emit_notification("link.updated", self.__json__()) + self._project.dump() + @property def created(self): """ @@ -454,6 +462,7 @@ class Link: "nodes": res, "link_id": self._id, "filters": self._filters, + "link_style": self._link_style, "suspend": self._suspended } return { @@ -466,5 +475,6 @@ class Link: "capture_compute_id": self.capture_compute_id, "link_type": self._link_type, "filters": self._filters, + "link_style": self._link_style, "suspend": self._suspended } diff --git a/gns3server/controller/project.py b/gns3server/controller/project.py index 33bb27a8..39b0895e 100644 --- a/gns3server/controller/project.py +++ b/gns3server/controller/project.py @@ -957,6 +957,8 @@ class Project: link = await self.add_link(link_id=link_data["link_id"]) if "filters" in link_data: await link.update_filters(link_data["filters"]) + if "link_style" in link_data: + await link.update_link_style(link_data["link_style"]) for node_link in link_data.get("nodes", []): node = self.get_node(node_link["node_id"]) port = node.get_port(node_link["adapter_number"], node_link["port_number"]) diff --git a/gns3server/handlers/api/controller/link_handler.py b/gns3server/handlers/api/controller/link_handler.py index 05bf7a4a..95f9702b 100644 --- a/gns3server/handlers/api/controller/link_handler.py +++ b/gns3server/handlers/api/controller/link_handler.py @@ -64,6 +64,8 @@ class LinkHandler: link = await project.add_link() if "filters" in request.json: await link.update_filters(request.json["filters"]) + if "link_style" in request.json: + await link.update_link_style(request.json["link_style"]) if "suspend" in request.json: await link.update_suspend(request.json["suspend"]) try: @@ -135,6 +137,8 @@ class LinkHandler: link = project.get_link(request.match_info["link_id"]) if "filters" in request.json: await link.update_filters(request.json["filters"]) + if "link_style" in request.json: + await link.update_link_style(request.json["link_style"]) if "suspend" in request.json: await link.update_suspend(request.json["suspend"]) if "nodes" in request.json: diff --git a/gns3server/schemas/link.py b/gns3server/schemas/link.py index 6dd5ffe4..257161b7 100644 --- a/gns3server/schemas/link.py +++ b/gns3server/schemas/link.py @@ -68,6 +68,27 @@ LINK_OBJECT_SCHEMA = { "type": "boolean", "description": "Suspend the link" }, + "link_style": { + "type": "object", + "description": "Link line style", + "items": { + "type": "object", + "properties": { + "color": { + "description": "Link line color", + "type": "string" + }, + "width": { + "description": "Link line width", + "type": "integer" + }, + "type": { + "description": "Link line type", + "type": "integer" + } + } + } + }, "filters": FILTER_OBJECT_SCHEMA, "capturing": { "description": "Read only property. True if a capture running on the link",