diff --git a/gns3server/modules/dynamips/nodes/router.py b/gns3server/modules/dynamips/nodes/router.py index 7b26d393..b79bc551 100644 --- a/gns3server/modules/dynamips/nodes/router.py +++ b/gns3server/modules/dynamips/nodes/router.py @@ -1579,7 +1579,7 @@ class Router(object): raise DynamipsError("Could not create captures directory {}".format(e)) nio.bind_filter("both", "capture") - nio.setup_filter("both", "{} {}".format(data_link_type, output_file)) + nio.setup_filter("both", '{} "{}"'.format(data_link_type, output_file)) log.info("router {name} [id={id}]: starting packet capture on port {slot_id}/{port_id}".format(name=self._name, id=self._id, diff --git a/gns3server/modules/virtualbox/__init__.py b/gns3server/modules/virtualbox/__init__.py index edde7fa3..d7e0f1f9 100644 --- a/gns3server/modules/virtualbox/__init__.py +++ b/gns3server/modules/virtualbox/__init__.py @@ -277,7 +277,6 @@ class VirtualBox(IModule): try: if not self._vboxwrapper and not self._vboxmanager: - print("START SERVICE") self._start_vbox_service() vbox_instance = VirtualBoxVM(self._vboxwrapper, diff --git a/gns3server/modules/virtualbox/virtualbox_vm.py b/gns3server/modules/virtualbox/virtualbox_vm.py index 3c4153c0..10319044 100644 --- a/gns3server/modules/virtualbox/virtualbox_vm.py +++ b/gns3server/modules/virtualbox/virtualbox_vm.py @@ -517,29 +517,31 @@ class VirtualBoxVM(object): self._serial_pipe.close() self._serial_pipe = None - try: - if sys.platform.startswith('win') and "VBOX_INSTALL_PATH" in os.environ: - # work around VirtualBox bug #9239 - vboxmanage_path = os.path.join(os.environ["VBOX_INSTALL_PATH"], "VBoxManage.exe") - command = '"{}" controlvm "{}" poweroff'.format(vboxmanage_path, self._vmname) - subprocess.call(command, timeout=3) - else: - progress = self._session.console.powerDown() - # wait for VM to actually go down - progress.waitForCompletion(3000) - log.info("VM is stopping with {}% completed".format(self.vmname, progress.percent)) + if self._machine.state >= self._vboxmanager.constants.MachineState_FirstOnline and \ + self._machine.state <= self._vboxmanager.constants.MachineState_LastOnline: + try: + if sys.platform.startswith('win') and "VBOX_INSTALL_PATH" in os.environ: + # work around VirtualBox bug #9239 + vboxmanage_path = os.path.join(os.environ["VBOX_INSTALL_PATH"], "VBoxManage.exe") + command = '"{}" controlvm "{}" poweroff'.format(vboxmanage_path, self._vmname) + subprocess.call(command, timeout=3) + else: + progress = self._session.console.powerDown() + # wait for VM to actually go down + progress.waitForCompletion(3000) + log.info("VM is stopping with {}% completed".format(self.vmname, progress.percent)) - self._lock_machine() - for adapter_id in range(0, len(self._ethernet_adapters)): - self._disable_adapter(adapter_id, disable=True) - self._session.machine.saveSettings() - self._unlock_machine() - except Exception as e: - # Do not crash "vboxwrapper", if stopping VM fails. - # But return True anyway, so VM state in GNS3 can become "stopped" - # This can happen, if user manually kills VBox VM. - log.warn("could not stop VM for {}: {}".format(self._vmname, e)) - return + self._lock_machine() + for adapter_id in range(0, len(self._ethernet_adapters)): + self._disable_adapter(adapter_id, disable=True) + self._session.machine.saveSettings() + self._unlock_machine() + except Exception as e: + # Do not crash "vboxwrapper", if stopping VM fails. + # But return True anyway, so VM state in GNS3 can become "stopped" + # This can happen, if user manually kills VBox VM. + log.warn("could not stop VM for {}: {}".format(self._vmname, e)) + return def suspend(self): """