Make sure used ports in a project are cleaned up when closing it.

This commit is contained in:
grossmj committed 2015-03-21 17:19:12 -06:00
1 parent 2d6d153262
commit 153914bf97
17 files changed
+127 -65

No files matched your search

@@ -109,7 +109,7 @@ class ATMSwitch(Device):
for nio in self._nios.values():
if nio and isinstance(nio, NIOUDP):
self.manager.port_manager.release_udp_port(nio.lport)
self.manager.port_manager.release_udp_port(nio.lport, self._project)
try:
yield from self._hypervisor.send('atmsw delete "{}"'.format(self._name))
@@ -162,7 +162,7 @@ class ATMSwitch(Device):
nio = self._nios[port_number]
if isinstance(nio, NIOUDP):
self.manager.port_manager.release_udp_port(nio.lport)
self.manager.port_manager.release_udp_port(nio.lport, self._project)
log.info('ATM switch "{name}" [{id}]: NIO {nio} removed from port {port}'.format(name=self._name,
id=self._id,
nio=nio,
@@ -76,7 +76,7 @@ class EthernetHub(Bridge):
for nio in self._nios:
if nio and isinstance(nio, NIOUDP):
self.manager.port_manager.release_udp_port(nio.lport)
self.manager.port_manager.release_udp_port(nio.lport, self._project)
try:
yield from Bridge.delete(self)
@@ -121,7 +121,7 @@ class EthernetHub(Bridge):
nio = self._mappings[port_number]
if isinstance(nio, NIOUDP):
self.manager.port_manager.release_udp_port(nio.lport)
self.manager.port_manager.release_udp_port(nio.lport, self._project)
yield from Bridge.remove_nio(self, nio)
log.info('Ethernet switch "{name}" [{id}]: NIO {nio} removed from port {port}'.format(name=self._name,
@@ -117,7 +117,7 @@ class EthernetSwitch(Device):
for nio in self._nios.values():
if nio and isinstance(nio, NIOUDP):
self.manager.port_manager.release_udp_port(nio.lport)
self.manager.port_manager.release_udp_port(nio.lport, self._project)
try:
yield from self._hypervisor.send('ethsw delete "{}"'.format(self._name))
@@ -164,7 +164,7 @@ class EthernetSwitch(Device):
nio = self._nios[port_number]
if isinstance(nio, NIOUDP):
self.manager.port_manager.release_udp_port(nio.lport)
self.manager.port_manager.release_udp_port(nio.lport, self._project)
yield from self._hypervisor.send('ethsw remove_nio "{name}" {nio}'.format(name=self._name, nio=nio))
log.info('Ethernet switch "{name}" [{id}]: NIO {nio} removed from port {port}'.format(name=self._name,
@@ -108,7 +108,7 @@ class FrameRelaySwitch(Device):
for nio in self._nios.values():
if nio and isinstance(nio, NIOUDP):
self.manager.port_manager.release_udp_port(nio.lport)
self.manager.port_manager.release_udp_port(nio.lport, self._project)
try:
yield from self._hypervisor.send('frsw delete "{}"'.format(self._name))
@@ -163,7 +163,7 @@ class FrameRelaySwitch(Device):
nio = self._nios[port_number]
if isinstance(nio, NIOUDP):
self.manager.port_manager.release_udp_port(nio.lport)
self.manager.port_manager.release_udp_port(nio.lport, self._project)
log.info('Frame Relay switch "{name}" [{id}]: NIO {nio} removed from port {port}'.format(name=self._name,
id=self._id,
+11 -11
View File
@@ -109,16 +109,16 @@ class Router(BaseVM):
self._dynamips_ids[project.id].append(self._dynamips_id)
if self._aux is not None:
self._aux = self._manager.port_manager.reserve_tcp_port(self._aux)
self._aux = self._manager.port_manager.reserve_tcp_port(self._aux, self._project)
else:
allocate_aux = self.manager.config.get_section_config("Dynamips").getboolean("allocate_aux_console_ports", False)
if allocate_aux:
self._aux = self._manager.port_manager.get_free_tcp_port()
self._aux = self._manager.port_manager.get_free_tcp_port(self._project)
else:
log.info("Creating a new ghost IOS instance")
if self._console:
# Ghost VMs do not need a console port.
self._manager.port_manager.release_tcp_port(self._console)
self._manager.port_manager.release_tcp_port(self._console, self._project)
self._console = None
self._dynamips_id = 0
self._name = "Ghost"
@@ -326,18 +326,18 @@ class Router(BaseVM):
self._dynamips_ids[self._project.id].remove(self._dynamips_id)
if self._console:
self._manager.port_manager.release_tcp_port(self._console)
self._manager.port_manager.release_tcp_port(self._console, self._project)
self._console = None
if self._aux:
self._manager.port_manager.release_tcp_port(self._aux)
self._manager.port_manager.release_tcp_port(self._aux, self._project)
self._aux = None
for adapter in self._slots:
if adapter is not None:
for nio in adapter.ports.values():
if nio and isinstance(nio, NIOUDP):
self.manager.port_manager.release_udp_port(nio.lport)
self.manager.port_manager.release_udp_port(nio.lport, self._project)
if self in self._hypervisor.devices:
self._hypervisor.devices.remove(self)
@@ -876,8 +876,8 @@ class Router(BaseVM):
old_console=self._console,
new_console=console))
self._manager.port_manager.release_tcp_port(self._console)
self._console = self._manager.port_manager.reserve_tcp_port(console)
self._manager.port_manager.release_tcp_port(self._console, self._project)
self._console = self._manager.port_manager.reserve_tcp_port(console, self._project)
@property
def aux(self):
@@ -904,8 +904,8 @@ class Router(BaseVM):
old_aux=self._aux,
new_aux=aux))
self._manager.port_manager.release_tcp_port(self._aux)
self._aux = self._manager.port_manager.reserve_tcp_port(aux)
self._manager.port_manager.release_tcp_port(self._aux, self._project)
self._aux = self._manager.port_manager.reserve_tcp_port(aux, self._project)
@asyncio.coroutine
def get_cpu_usage(self, cpu_id=0):
@@ -1228,7 +1228,7 @@ class Router(BaseVM):
if nio is None:
return
if isinstance(nio, NIOUDP):
self.manager.port_manager.release_udp_port(nio.lport)
self.manager.port_manager.release_udp_port(nio.lport, self._project)
adapter.remove_nio(port_number)
log.info('Router "{name}" [{id}]: NIO {nio_name} removed from port {slot_number}/{port_number}'.format(name=self._name,