1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-11-28 03:08:14 +00:00

Rename port_id to port_number for VPCS and adapter_id for VirtualBox to avoid confusion.

This commit is contained in:
Jeremy 2015-01-31 12:01:23 -07:00
parent e7c9139045
commit 22369ade49
9 changed files with 62 additions and 63 deletions

View File

@ -24,7 +24,7 @@ class NetworkHandler:
@classmethod @classmethod
@Route.post( @Route.post(
r"/udp", r"/ports/udp",
status_codes={ status_codes={
201: "UDP port allocated", 201: "UDP port allocated",
}, },

View File

@ -227,10 +227,10 @@ class VirtualBoxHandler:
response.set_status(204) response.set_status(204)
@Route.post( @Route.post(
r"/virtualbox/{uuid}/ports/{port_id:\d+}/nio", r"/virtualbox/{uuid}/ports/{adapter_id:\d+}/nio",
parameters={ parameters={
"uuid": "Instance UUID", "uuid": "Instance UUID",
"port_id": "ID of the port where the nio should be added" "adapter_id": "Adapter where the nio should be added"
}, },
status_codes={ status_codes={
201: "NIO created", 201: "NIO created",
@ -245,16 +245,16 @@ class VirtualBoxHandler:
vbox_manager = VirtualBox.instance() vbox_manager = VirtualBox.instance()
vm = vbox_manager.get_vm(request.match_info["uuid"]) vm = vbox_manager.get_vm(request.match_info["uuid"])
nio = vbox_manager.create_nio(vbox_manager.vboxmanage_path, request.json) nio = vbox_manager.create_nio(vbox_manager.vboxmanage_path, request.json)
vm.port_add_nio_binding(int(request.match_info["port_id"]), nio) vm.port_add_nio_binding(int(request.match_info["adapter_id"]), nio)
response.set_status(201) response.set_status(201)
response.json(nio) response.json(nio)
@classmethod @classmethod
@Route.delete( @Route.delete(
r"/virtualbox/{uuid}/ports/{port_id:\d+}/nio", r"/virtualbox/{uuid}/ports/{adapter_id:\d+}/nio",
parameters={ parameters={
"uuid": "Instance UUID", "uuid": "Instance UUID",
"port_id": "ID of the port from where the nio should be removed" "adapter_id": "Adapter from where the nio should be removed"
}, },
status_codes={ status_codes={
204: "NIO deleted", 204: "NIO deleted",
@ -266,14 +266,14 @@ class VirtualBoxHandler:
vbox_manager = VirtualBox.instance() vbox_manager = VirtualBox.instance()
vm = vbox_manager.get_vm(request.match_info["uuid"]) vm = vbox_manager.get_vm(request.match_info["uuid"])
vm.port_remove_nio_binding(int(request.match_info["port_id"])) vm.port_remove_nio_binding(int(request.match_info["adapter_id"]))
response.set_status(204) response.set_status(204)
@Route.post( @Route.post(
r"/virtualbox/{uuid}/capture/{port_id:\d+}/start", r"/virtualbox/{uuid}/capture/{adapter_id:\d+}/start",
parameters={ parameters={
"uuid": "Instance UUID", "uuid": "Instance UUID",
"port_id": "ID of the port to start a packet capture" "adapter_id": "Adapter to start a packet capture"
}, },
status_codes={ status_codes={
200: "Capture started", 200: "Capture started",
@ -286,17 +286,16 @@ class VirtualBoxHandler:
vbox_manager = VirtualBox.instance() vbox_manager = VirtualBox.instance()
vm = vbox_manager.get_vm(request.match_info["uuid"]) vm = vbox_manager.get_vm(request.match_info["uuid"])
port_id = int(request.match_info["port_id"]) adapter_id = int(request.match_info["adapter_id"])
pcap_file_path = os.path.join(vm.project.capture_working_directory(), request.json["filename"]) pcap_file_path = os.path.join(vm.project.capture_working_directory(), request.json["filename"])
vm.start_capture(port_id, pcap_file_path) vm.start_capture(adapter_id, pcap_file_path)
response.json({"port_id": port_id, response.json({"pcap_file_path": pcap_file_path})
"pcap_file_path": pcap_file_path})
@Route.post( @Route.post(
r"/virtualbox/{uuid}/capture/{port_id:\d+}/stop", r"/virtualbox/{uuid}/capture/{adapter_id:\d+}/stop",
parameters={ parameters={
"uuid": "Instance UUID", "uuid": "Instance UUID",
"port_id": "ID of the port to stop a packet capture" "adapter_id": "Adapter to stop a packet capture"
}, },
status_codes={ status_codes={
204: "Capture stopped", 204: "Capture stopped",
@ -308,5 +307,5 @@ class VirtualBoxHandler:
vbox_manager = VirtualBox.instance() vbox_manager = VirtualBox.instance()
vm = vbox_manager.get_vm(request.match_info["uuid"]) vm = vbox_manager.get_vm(request.match_info["uuid"])
vm.stop_capture(int(request.match_info["port_id"])) vm.stop_capture(int(request.match_info["adapter_id"]))
response.set_status(204) response.set_status(204)

View File

@ -168,10 +168,10 @@ class VPCSHandler:
response.set_status(204) response.set_status(204)
@Route.post( @Route.post(
r"/vpcs/{uuid}/ports/{port_id:\d+}/nio", r"/vpcs/{uuid}/ports/{port_number:\d+}/nio",
parameters={ parameters={
"uuid": "Instance UUID", "uuid": "Instance UUID",
"port_id": "ID of the port where the nio should be added" "port_number": "Port where the nio should be added"
}, },
status_codes={ status_codes={
201: "NIO created", 201: "NIO created",
@ -186,16 +186,16 @@ class VPCSHandler:
vpcs_manager = VPCS.instance() vpcs_manager = VPCS.instance()
vm = vpcs_manager.get_vm(request.match_info["uuid"]) vm = vpcs_manager.get_vm(request.match_info["uuid"])
nio = vpcs_manager.create_nio(vm.vpcs_path, request.json) nio = vpcs_manager.create_nio(vm.vpcs_path, request.json)
vm.port_add_nio_binding(int(request.match_info["port_id"]), nio) vm.port_add_nio_binding(int(request.match_info["port_number"]), nio)
response.set_status(201) response.set_status(201)
response.json(nio) response.json(nio)
@classmethod @classmethod
@Route.delete( @Route.delete(
r"/vpcs/{uuid}/ports/{port_id:\d+}/nio", r"/vpcs/{uuid}/ports/{port_number:\d+}/nio",
parameters={ parameters={
"uuid": "Instance UUID", "uuid": "Instance UUID",
"port_id": "ID of the port from where the nio should be removed" "port_number": "Port from where the nio should be removed"
}, },
status_codes={ status_codes={
204: "NIO deleted", 204: "NIO deleted",
@ -207,5 +207,5 @@ class VPCSHandler:
vpcs_manager = VPCS.instance() vpcs_manager = VPCS.instance()
vm = vpcs_manager.get_vm(request.match_info["uuid"]) vm = vpcs_manager.get_vm(request.match_info["uuid"])
vm.port_remove_nio_binding(int(request.match_info["port_id"])) vm.port_remove_nio_binding(int(request.match_info["port_number"]))
response.set_status(204) response.set_status(204)

View File

@ -29,8 +29,8 @@ class Adapter(object):
self._interfaces = interfaces self._interfaces = interfaces
self._ports = {} self._ports = {}
for port_id in range(0, interfaces): for port_number in range(0, interfaces):
self._ports[port_id] = None self._ports[port_number] = None
def removable(self): def removable(self):
""" """
@ -42,7 +42,7 @@ class Adapter(object):
return True return True
def port_exists(self, port_id): def port_exists(self, port_number):
""" """
Checks if a port exists on this adapter. Checks if a port exists on this adapter.
@ -50,39 +50,39 @@ class Adapter(object):
False otherwise. False otherwise.
""" """
if port_id in self._ports: if port_number in self._ports:
return True return True
return False return False
def add_nio(self, port_id, nio): def add_nio(self, port_number, nio):
""" """
Adds a NIO to a port on this adapter. Adds a NIO to a port on this adapter.
:param port_id: port ID (integer) :param port_number: port number (integer)
:param nio: NIO instance :param nio: NIO instance
""" """
self._ports[port_id] = nio self._ports[port_number] = nio
def remove_nio(self, port_id): def remove_nio(self, port_number):
""" """
Removes a NIO from a port on this adapter. Removes a NIO from a port on this adapter.
:param port_id: port ID (integer) :param port_number: port number (integer)
""" """
self._ports[port_id] = None self._ports[port_number] = None
def get_nio(self, port_id): def get_nio(self, port_number):
""" """
Returns the NIO assigned to a port. Returns the NIO assigned to a port.
:params port_id: port ID (integer) :params port_number: port number (integer)
:returns: NIO instance :returns: NIO instance
""" """
return self._ports[port_id] return self._ports[port_number]
@property @property
def ports(self): def ports(self):

View File

@ -152,7 +152,8 @@ class VirtualBoxVM(BaseVM):
else: else:
yield from self._create_linked_clone() yield from self._create_linked_clone()
yield from self.set_adapters(self._adapters) if self._adapters:
yield from self.set_adapters(self._adapters)
@asyncio.coroutine @asyncio.coroutine
def start(self): def start(self):

View File

@ -317,47 +317,47 @@ class VPCSVM(BaseVM):
return True return True
return False return False
def port_add_nio_binding(self, port_id, nio): def port_add_nio_binding(self, port_number, nio):
""" """
Adds a port NIO binding. Adds a port NIO binding.
:param port_id: port ID :param port_number: port number
:param nio: NIO instance to add to the slot/port :param nio: NIO instance to add to the slot/port
""" """
if not self._ethernet_adapter.port_exists(port_id): if not self._ethernet_adapter.port_exists(port_number):
raise VPCSError("Port {port_id} doesn't exist in adapter {adapter}".format(adapter=self._ethernet_adapter, raise VPCSError("Port {port_number} doesn't exist in adapter {adapter}".format(adapter=self._ethernet_adapter,
port_id=port_id)) port_number=port_number))
self._ethernet_adapter.add_nio(port_id, nio) self._ethernet_adapter.add_nio(port_number, nio)
log.info("VPCS {name} {uuid}]: {nio} added to port {port_id}".format(name=self._name, log.info("VPCS {name} {uuid}]: {nio} added to port {port_number}".format(name=self._name,
uuid=self.uuid, uuid=self.uuid,
nio=nio, nio=nio,
port_id=port_id)) port_number=port_number))
return nio return nio
def port_remove_nio_binding(self, port_id): def port_remove_nio_binding(self, port_number):
""" """
Removes a port NIO binding. Removes a port NIO binding.
:param port_id: port ID :param port_number: port number
:returns: NIO instance :returns: NIO instance
""" """
if not self._ethernet_adapter.port_exists(port_id): if not self._ethernet_adapter.port_exists(port_number):
raise VPCSError("Port {port_id} doesn't exist in adapter {adapter}".format(adapter=self._ethernet_adapter, raise VPCSError("Port {port_number} doesn't exist in adapter {adapter}".format(adapter=self._ethernet_adapter,
port_id=port_id)) port_number=port_number))
nio = self._ethernet_adapter.get_nio(port_id) nio = self._ethernet_adapter.get_nio(port_number)
if str(nio) == "NIO UDP": if str(nio) == "NIO UDP":
self.manager.port_manager.release_udp_port(nio.lport) self.manager.port_manager.release_udp_port(nio.lport)
self._ethernet_adapter.remove_nio(port_id) self._ethernet_adapter.remove_nio(port_number)
log.info("VPCS {name} [{uuid}]: {nio} removed from port {port_id}".format(name=self._name, log.info("VPCS {name} [{uuid}]: {nio} removed from port {port_number}".format(name=self._name,
uuid=self.uuid, uuid=self.uuid,
nio=nio, nio=nio,
port_id=port_id)) port_number=port_number))
return nio return nio
def _build_command(self): def _build_command(self):

View File

@ -94,7 +94,7 @@ def test_vbox_nio_create_udp(server, vm):
"rhost": "127.0.0.1"}, "rhost": "127.0.0.1"},
example=True) example=True)
assert response.status == 201 assert response.status == 201
assert response.route == "/virtualbox/{uuid}/ports/{port_id:\d+}/nio" assert response.route == "/virtualbox/{uuid}/ports/{adapter_id:\d+}/nio"
assert response.json["type"] == "nio_udp" assert response.json["type"] == "nio_udp"
@ -105,7 +105,7 @@ def test_vbox_delete_nio(server, vm):
"rhost": "127.0.0.1"}) "rhost": "127.0.0.1"})
response = server.delete("/virtualbox/{}/ports/0/nio".format(vm["uuid"]), example=True) response = server.delete("/virtualbox/{}/ports/0/nio".format(vm["uuid"]), example=True)
assert response.status == 204 assert response.status == 204
assert response.route == "/virtualbox/{uuid}/ports/{port_id:\d+}/nio" assert response.route == "/virtualbox/{uuid}/ports/{adapter_id:\d+}/nio"
def test_vpcs_update(server, vm, free_console_port): def test_vpcs_update(server, vm, free_console_port):

View File

@ -82,7 +82,7 @@ def test_vpcs_nio_create_udp(server, vm):
"rhost": "127.0.0.1"}, "rhost": "127.0.0.1"},
example=True) example=True)
assert response.status == 201 assert response.status == 201
assert response.route == "/vpcs/{uuid}/ports/{port_id:\d+}/nio" assert response.route == "/vpcs/{uuid}/ports/{port_number:\d+}/nio"
assert response.json["type"] == "nio_udp" assert response.json["type"] == "nio_udp"
@ -91,7 +91,7 @@ def test_vpcs_nio_create_tap(server, vm):
response = server.post("/vpcs/{}/ports/0/nio".format(vm["uuid"]), {"type": "nio_tap", response = server.post("/vpcs/{}/ports/0/nio".format(vm["uuid"]), {"type": "nio_tap",
"tap_device": "test"}) "tap_device": "test"})
assert response.status == 201 assert response.status == 201
assert response.route == "/vpcs/{uuid}/ports/{port_id:\d+}/nio" assert response.route == "/vpcs/{uuid}/ports/{port_number:\d+}/nio"
assert response.json["type"] == "nio_tap" assert response.json["type"] == "nio_tap"
@ -102,7 +102,7 @@ def test_vpcs_delete_nio(server, vm):
"rhost": "127.0.0.1"}) "rhost": "127.0.0.1"})
response = server.delete("/vpcs/{}/ports/0/nio".format(vm["uuid"]), example=True) response = server.delete("/vpcs/{}/ports/0/nio".format(vm["uuid"]), example=True)
assert response.status == 204 assert response.status == 204
assert response.route == "/vpcs/{uuid}/ports/{port_id:\d+}/nio" assert response.route == "/vpcs/{uuid}/ports/{port_number:\d+}/nio"
def test_vpcs_start(server, vm): def test_vpcs_start(server, vm):

View File

@ -41,7 +41,6 @@ def test_vm(project, manager):
assert vm.name == "test" assert vm.name == "test"
assert vm.uuid == "00010203-0405-0607-0809-0a0b0c0d0e0f" assert vm.uuid == "00010203-0405-0607-0809-0a0b0c0d0e0f"
assert vm.vmname == "test" assert vm.vmname == "test"
assert vm.linked_clone is False
def test_vm_valid_virtualbox_api_version(loop, project, manager): def test_vm_valid_virtualbox_api_version(loop, project, manager):