Ethernet hub and Ethernet switch almost fully migrated to the new API.

This commit is contained in:
grossmj
2016-05-19 22:45:04 -06:00
parent 672a617102
commit 57fd72c35c
13 changed files with 696 additions and 51 deletions

View File

@ -35,22 +35,53 @@ class EthernetHub(Bridge):
Dynamips Ethernet hub (based on Bridge)
:param name: name for this hub
:param device_id: Device instance identifier
:param node_id: Node instance identifier
:param project: Project instance
:param manager: Parent VM Manager
:param ports: initial hub ports
:param hypervisor: Dynamips hypervisor instance
"""
def __init__(self, name, device_id, project, manager, hypervisor=None):
def __init__(self, name, node_id, project, manager, ports=None, hypervisor=None):
super().__init__(name, device_id, project, manager, hypervisor)
super().__init__(name, node_id, project, manager, hypervisor)
self._mappings = {}
if ports is None:
# create 8 ports by default
self._ports = []
for port_number in range(1, 9):
self._ports.append({"port_number": port_number,
"name": "Ethernet{}".format(port_number)})
else:
self._ports = ports
def __json__(self):
return {"name": self.name,
"node_id": self.id,
"project_id": self.project.id}
"project_id": self.project.id,
"ports": self._ports,
"status": "started"}
@property
def ports(self):
"""
Ports on this hub
:returns: ports info
"""
return self._ports
@ports.setter
def ports(self, ports):
"""
Set the ports on this hub
:param ports: ports info
"""
self._ports = ports
@asyncio.coroutine
def create(self):
@ -95,6 +126,9 @@ class EthernetHub(Bridge):
:param port_number: port to allocate for the NIO
"""
if port_number not in [port["port_number"] for port in self._ports]:
raise DynamipsError("Port {} doesn't exist".format(port_number))
if port_number in self._mappings:
raise DynamipsError("Port {} isn't free".format(port_number))