1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-11-30 20:28:08 +00:00

Do not dump iourc_content to .gns3 file

Fix #759
This commit is contained in:
Julien Duponchelle 2016-11-03 13:35:44 +01:00
parent 3df3aa84ff
commit 1e73962e33
No known key found for this signature in database
GPG Key ID: CE8B29639E07F5E8
2 changed files with 35 additions and 10 deletions

View File

@ -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,

View File

@ -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