diff --git a/gns3server/modules/vpcs/vpcs_vm.py b/gns3server/modules/vpcs/vpcs_vm.py index 73dac3d1..7f4c4aa8 100644 --- a/gns3server/modules/vpcs/vpcs_vm.py +++ b/gns3server/modules/vpcs/vpcs_vm.py @@ -189,10 +189,11 @@ class VPCSVM(BaseVM): if self._script_file is None: self._script_file = os.path.join(self.working_dir, 'startup.vpcs') try: - with open(self._script_file, '+w') as f: + with open(self._script_file, 'w+') as f: if startup_script is None: f.write('') else: + startup_script = startup_script.replace("%h", self._name) f.write(startup_script) except OSError as e: raise VPCSError("Can't write VPCS startup file '{}'".format(self._script_file)) @@ -426,16 +427,3 @@ class VPCSVM(BaseVM): """ return self._script_file - - @script_file.setter - def script_file(self, script_file): - """ - Sets the script-file for this VPCS instance. - - :param script_file: path to base-script-file - """ - - self._script_file = script_file - log.info("VPCS {name} [{uuid}]: script_file set to {config}".format(name=self._name, - uuid=self.uuid, - config=self._script_file)) diff --git a/tests/modules/vpcs/test_vpcs_vm.py b/tests/modules/vpcs/test_vpcs_vm.py index b61caf38..f6197aa4 100644 --- a/tests/modules/vpcs/test_vpcs_vm.py +++ b/tests/modules/vpcs/test_vpcs_vm.py @@ -149,6 +149,15 @@ def test_update_startup_script(vm): assert f.read() == content +def test_update_startup_script_h(vm): + content = "setname %h\n" + vm.name = "pc1" + vm.startup_script = content + assert os.path.exists(vm.script_file) + with open(vm.script_file) as f: + assert f.read() == "setname pc1\n" + + def test_get_startup_script(vm): content = "echo GNS3 VPCS\nip 192.168.1.2\n" vm.startup_script = content @@ -159,7 +168,7 @@ def test_get_startup_script_using_default_script(vm): content = "echo GNS3 VPCS\nip 192.168.1.2\n" # Reset script file location - vm.script_file = None + vm._script_file = None filepath = os.path.join(vm.working_dir, 'startup.vpc') with open(filepath, 'w+') as f: @@ -187,19 +196,13 @@ def test_change_name(vm, tmpdir): vm.name = "world" with open(path, 'w+') as f: f.write("name world") - vm.script_file = path + vm._script_file = path vm.name = "hello" assert vm.name == "hello" with open(path) as f: assert f.read() == "name hello" -def test_change_script_file(vm, tmpdir): - path = os.path.join(str(tmpdir), 'startup2.vpcs') - vm.script_file = path - assert vm.script_file == path - - def test_close(vm, port_manager): with asyncio_patch("gns3server.modules.vpcs.vpcs_vm.VPCSVM._check_requirements", return_value=True): with asyncio_patch("asyncio.create_subprocess_exec", return_value=MagicMock()):