mirror of
https://github.com/GNS3/gns3-server
synced 2024-11-30 20:28:08 +00:00
parent
3df3aa84ff
commit
1e73962e33
@ -501,7 +501,7 @@ class Node:
|
|||||||
if self._node_type == "atm_switch":
|
if self._node_type == "atm_switch":
|
||||||
atm_port = set()
|
atm_port = set()
|
||||||
# Mapping is like {"1:0:100": "10:0:200"}
|
# Mapping is like {"1:0:100": "10:0:200"}
|
||||||
for source, dest in self.properties["mappings"].items():
|
for source, dest in self._properties["mappings"].items():
|
||||||
atm_port.add(int(source.split(":")[0]))
|
atm_port.add(int(source.split(":")[0]))
|
||||||
atm_port.add(int(dest.split(":")[0]))
|
atm_port.add(int(dest.split(":")[0]))
|
||||||
atm_port = sorted(atm_port)
|
atm_port = sorted(atm_port)
|
||||||
@ -512,7 +512,7 @@ class Node:
|
|||||||
elif self._node_type == "frame_relay_switch":
|
elif self._node_type == "frame_relay_switch":
|
||||||
frame_relay_port = set()
|
frame_relay_port = set()
|
||||||
# Mapping is like {"1:101": "10:202"}
|
# Mapping is like {"1:101": "10:202"}
|
||||||
for source, dest in self.properties["mappings"].items():
|
for source, dest in self._properties["mappings"].items():
|
||||||
frame_relay_port.add(int(source.split(":")[0]))
|
frame_relay_port.add(int(source.split(":")[0]))
|
||||||
frame_relay_port.add(int(dest.split(":")[0]))
|
frame_relay_port.add(int(dest.split(":")[0]))
|
||||||
frame_relay_port = sorted(frame_relay_port)
|
frame_relay_port = sorted(frame_relay_port)
|
||||||
@ -520,15 +520,15 @@ class Node:
|
|||||||
self._ports.append(PortFactory("{}".format(port), 0, 0, port, "frame_relay"))
|
self._ports.append(PortFactory("{}".format(port), 0, 0, port, "frame_relay"))
|
||||||
return
|
return
|
||||||
elif self._node_type == "dynamips":
|
elif self._node_type == "dynamips":
|
||||||
self._ports = DynamipsPortFactory(self.properties)
|
self._ports = DynamipsPortFactory(self._properties)
|
||||||
return
|
return
|
||||||
elif self._node_type in ("cloud", "nat", "ethernet_switch", "ethernet_hub"):
|
elif self._node_type in ("cloud", "nat", "ethernet_switch", "ethernet_hub"):
|
||||||
port_number = 0
|
port_number = 0
|
||||||
for port in self.properties["ports_mapping"]:
|
for port in self._properties["ports_mapping"]:
|
||||||
self._ports.append(PortFactory(port["name"], 0, 0, port_number, "ethernet"))
|
self._ports.append(PortFactory(port["name"], 0, 0, port_number, "ethernet"))
|
||||||
port_number += 1
|
port_number += 1
|
||||||
else:
|
else:
|
||||||
self._ports = StandardPortFactory(self.properties, self._port_by_adapter, self._first_port_name, self._port_name_format, self._port_segment_size)
|
self._ports = StandardPortFactory(self._properties, self._port_by_adapter, self._first_port_name, self._port_name_format, self._port_segment_size)
|
||||||
return
|
return
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
@ -539,6 +539,17 @@ class Node:
|
|||||||
return False
|
return False
|
||||||
return self.id == other.id and other.project.id == self.project.id
|
return self.id == other.id and other.project.id == self.project.id
|
||||||
|
|
||||||
|
def _filter_properties(self):
|
||||||
|
"""
|
||||||
|
Some properties are private and should not be exposed
|
||||||
|
"""
|
||||||
|
PRIVATE_PROPERTIES = ("iourc_content", )
|
||||||
|
prop = copy.copy(self._properties)
|
||||||
|
for k in list(prop.keys()):
|
||||||
|
if k in PRIVATE_PROPERTIES:
|
||||||
|
del prop[k]
|
||||||
|
return prop
|
||||||
|
|
||||||
def __json__(self, topology_dump=False):
|
def __json__(self, topology_dump=False):
|
||||||
"""
|
"""
|
||||||
:param topology_dump: Filter to keep only properties require for saving on disk
|
:param topology_dump: Filter to keep only properties require for saving on disk
|
||||||
@ -551,7 +562,7 @@ class Node:
|
|||||||
"name": self._name,
|
"name": self._name,
|
||||||
"console": self._console,
|
"console": self._console,
|
||||||
"console_type": self._console_type,
|
"console_type": self._console_type,
|
||||||
"properties": self._properties,
|
"properties": self._filter_properties(),
|
||||||
"label": self._label,
|
"label": self._label,
|
||||||
"x": self._x,
|
"x": self._x,
|
||||||
"y": self._y,
|
"y": self._y,
|
||||||
@ -574,7 +585,7 @@ class Node:
|
|||||||
"console_host": str(self._compute.console_host),
|
"console_host": str(self._compute.console_host),
|
||||||
"console_type": self._console_type,
|
"console_type": self._console_type,
|
||||||
"command_line": self._command_line,
|
"command_line": self._command_line,
|
||||||
"properties": self._properties,
|
"properties": self._filter_properties(),
|
||||||
"status": self._status,
|
"status": self._status,
|
||||||
"label": self._label,
|
"label": self._label,
|
||||||
"x": self._x,
|
"x": self._x,
|
||||||
|
@ -20,6 +20,7 @@ import aiohttp
|
|||||||
import pytest
|
import pytest
|
||||||
import uuid
|
import uuid
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import copy
|
||||||
import os
|
import os
|
||||||
from unittest.mock import MagicMock, ANY
|
from unittest.mock import MagicMock, ANY
|
||||||
|
|
||||||
@ -83,6 +84,19 @@ def test_eq(compute, project, node, controller):
|
|||||||
assert node != Node(Project(str(uuid.uuid4()), controller=controller), compute, "demo3", node_id=node.id, node_type="qemu")
|
assert node != Node(Project(str(uuid.uuid4()), controller=controller), compute, "demo3", node_id=node.id, node_type="qemu")
|
||||||
|
|
||||||
|
|
||||||
|
def test_properties_filter(project, compute):
|
||||||
|
"""
|
||||||
|
Some properties are private and should not be exposed
|
||||||
|
"""
|
||||||
|
node = Node(project, compute, "demo",
|
||||||
|
node_id=str(uuid.uuid4()),
|
||||||
|
node_type="vpcs",
|
||||||
|
console_type="vnc",
|
||||||
|
properties={"startup_script": "echo test", "iourc_content": "test"})
|
||||||
|
assert node._properties == {"startup_script": "echo test", "iourc_content": "test"}
|
||||||
|
assert node._filter_properties() == {"startup_script": "echo test"}
|
||||||
|
|
||||||
|
|
||||||
def test_json(node, compute):
|
def test_json(node, compute):
|
||||||
assert node.__json__() == {
|
assert node.__json__() == {
|
||||||
"compute_id": str(compute.id),
|
"compute_id": str(compute.id),
|
||||||
@ -283,8 +297,8 @@ def test_update_properties(node, compute, project, async_run, controller):
|
|||||||
|
|
||||||
# The notif should contain the old properties because it's the compute that will emit
|
# The notif should contain the old properties because it's the compute that will emit
|
||||||
# the correct info
|
# the correct info
|
||||||
node_notif = node.__json__()
|
node_notif = copy.deepcopy(node.__json__())
|
||||||
node_notif["properties"]["startup_config"] = "echo test"
|
node_notif["properties"]["startup_script"] = "echo test"
|
||||||
controller._notification.emit.assert_called_with("node.updated", node_notif)
|
controller._notification.emit.assert_called_with("node.updated", node_notif)
|
||||||
|
|
||||||
|
|
||||||
@ -436,7 +450,7 @@ def test_update_label(node):
|
|||||||
|
|
||||||
|
|
||||||
def test_get_port(node):
|
def test_get_port(node):
|
||||||
node.properties["adapters"] = 2
|
node._properties["adapters"] = 2
|
||||||
node._list_ports()
|
node._list_ports()
|
||||||
port = node.get_port(0, 0)
|
port = node.get_port(0, 0)
|
||||||
assert port.adapter_number == 0
|
assert port.adapter_number == 0
|
||||||
|
Loading…
Reference in New Issue
Block a user