mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-08-27 12:30:13 +03:00
Prevent router to be duplicated when running and add tests
This commit is contained in:
parent
95bd76a212
commit
0aa6566e50
@ -35,7 +35,6 @@ from gns3server.utils.interfaces import is_interface_up
|
||||
from uuid import UUID, uuid4
|
||||
from typing import Type
|
||||
from ..config import Config
|
||||
from ..utils.asyncio import wait_run_in_executor
|
||||
from ..utils import force_unix_path
|
||||
from .project_manager import ProjectManager
|
||||
from .port_manager import PortManager
|
||||
|
||||
@ -32,7 +32,7 @@ import re
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
from gns3server.utils.interfaces import interfaces, is_interface_up
|
||||
from gns3server.utils.interfaces import is_interface_up
|
||||
from gns3server.utils.asyncio import wait_run_in_executor, subprocess_check_output
|
||||
from gns3server.utils import parse_version
|
||||
from uuid import uuid4
|
||||
@ -644,6 +644,9 @@ class Dynamips(BaseManager):
|
||||
if not hasattr(source_node, "startup_config_path"):
|
||||
return await super().duplicate_node(source_node_id, destination_node_id)
|
||||
|
||||
if hasattr(source_node, "status") and source_node.status != "stopped":
|
||||
raise DynamipsError("Cannot duplicate router data while the route is running")
|
||||
|
||||
try:
|
||||
with open(source_node.startup_config_path) as f:
|
||||
startup_config = f.read()
|
||||
|
||||
@ -128,3 +128,6 @@ async def test_duplicate_node(manager, compute_project):
|
||||
with open(destination_node.startup_config_path) as f:
|
||||
content = f.read()
|
||||
assert content == '!\nhostname R2\necho TEST'
|
||||
with pytest.raises(DynamipsError):
|
||||
source_node.status = "started"
|
||||
await manager.duplicate_node(source_node.id, destination_node.id)
|
||||
|
||||
@ -26,6 +26,7 @@ from gns3server.compute.vpcs import VPCS
|
||||
from gns3server.compute.dynamips import Dynamips
|
||||
from gns3server.compute.qemu import Qemu
|
||||
from gns3server.compute.error import NodeError, ImageMissingError
|
||||
from gns3server.compute.compute_error import ComputeError
|
||||
from gns3server.utils import force_unix_path
|
||||
|
||||
|
||||
@ -290,6 +291,9 @@ async def test_duplicate_vpcs(vpcs, compute_project):
|
||||
with open(os.path.join(destination_node.working_dir, "startup.vpc")) as f:
|
||||
startup = f.read().strip()
|
||||
assert startup == "set pcname PC-2\nip dhcp\n".strip()
|
||||
with pytest.raises(ComputeError):
|
||||
source_node.status = "started"
|
||||
await vpcs.duplicate_node(source_node_id, destination_node_id)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user