1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-11-24 09:18:08 +00:00

Clean delete for IOU & VPCS devices.

This commit is contained in:
grossmj 2014-05-19 12:05:30 -06:00
parent 6c0918312c
commit 7182e59892
4 changed files with 50 additions and 2 deletions

View File

@ -373,7 +373,7 @@ class IOU(IModule):
return return
try: try:
iou_instance.delete() iou_instance.clean_delete()
del self._iou_instances[request["id"]] del self._iou_instances[request["id"]]
except IOUError as e: except IOUError as e:
self.send_custom_error(str(e)) self.send_custom_error(str(e))

View File

@ -27,6 +27,8 @@ import subprocess
import argparse import argparse
import threading import threading
import configparser import configparser
import shutil
from .ioucon import start_ioucon from .ioucon import start_ioucon
from .iou_error import IOUError from .iou_error import IOUError
from .adapters.ethernet_adapter import EthernetAdapter from .adapters.ethernet_adapter import EthernetAdapter
@ -332,6 +334,28 @@ class IOUDevice(object):
log.info("IOU device {name} [id={id}] has been deleted".format(name=self._name, log.info("IOU device {name} [id={id}] has been deleted".format(name=self._name,
id=self._id)) id=self._id))
def clean_delete(self):
"""
Deletes this IOU device & all files (nvram, startup-config etc.)
"""
self.stop()
self._instances.remove(self._id)
if self.console:
self._allocated_console_ports.remove(self.console)
try:
shutil.rmtree(self._working_dir)
except OSError as e:
log.error("could not delete IOU device {name} [id={id}]: {error}".format(name=self._name,
id=self._id,
error=e))
return
log.info("IOU device {name} [id={id}] has been deleted (including associated files)".format(name=self._name,
id=self._id))
@property @property
def started(self): def started(self):
""" """

View File

@ -284,7 +284,7 @@ class VPCS(IModule):
return return
try: try:
vpcs_instance.delete() vpcs_instance.clean_delete()
del self._vpcs_instances[request["id"]] del self._vpcs_instances[request["id"]]
except VPCSError as e: except VPCSError as e:
self.send_custom_error(str(e)) self.send_custom_error(str(e))

View File

@ -23,6 +23,8 @@ order to run an VPCS instance.
import os import os
import subprocess import subprocess
import signal import signal
import shutil
from .vpcs_error import VPCSError from .vpcs_error import VPCSError
from .adapters.ethernet_adapter import EthernetAdapter from .adapters.ethernet_adapter import EthernetAdapter
from .nios.nio_udp import NIO_UDP from .nios.nio_udp import NIO_UDP
@ -267,6 +269,28 @@ class VPCSDevice(object):
log.info("VPCS device {name} [id={id}] has been deleted".format(name=self._name, log.info("VPCS device {name} [id={id}] has been deleted".format(name=self._name,
id=self._id)) id=self._id))
def clean_delete(self):
"""
Deletes this VPCS device & all files (configs, logs etc.)
"""
self.stop()
self._instances.remove(self._id)
if self.console:
self._allocated_console_ports.remove(self.console)
try:
shutil.rmtree(self._working_dir)
except OSError as e:
log.error("could not delete VPCS device {name} [id={id}]: {error}".format(name=self._name,
id=self._id,
error=e))
return
log.info("VPCS device {name} [id={id}] has been deleted".format(name=self._name,
id=self._id))
@property @property
def started(self): def started(self):
""" """