API for deleting a list

This commit is contained in:
Julien Duponchelle committed 2016-03-14 17:40:27 +01:00
1 parent 9771b33b68
commit 9062490be3
7 files changed
+105 -8

No files matched your search

+14
View File
@@ -37,6 +37,20 @@ class Link:
"port_number": port_number
})
@asyncio.coroutine
def create(self):
"""
Create the link
"""
raise NotImplemented
@asyncio.coroutine
def delete(self):
"""
Delete the link
"""
raise NotImplemented
@property
def id(self):
return self._id
+27 -6
View File
@@ -22,11 +22,16 @@ from .link import Link
class UDPLink(Link):
def __init__(self, project):
super().__init__(project)
@asyncio.coroutine
def create(self):
"""
Create the link on the VMs
"""
vm1 = self._vms[0]["vm"]
adapter_number1 = self._vms[0]["adapter_number"]
port_number1 = self._vms[0]["port_number"]
@@ -36,23 +41,39 @@ class UDPLink(Link):
# Reserve a UDP port on both side
response = yield from vm1.hypervisor.post("/projects/{}/ports/udp".format(self._project.id))
vm1_port = response.json["udp_port"]
self._vm1_port = response.json["udp_port"]
response = yield from vm2.hypervisor.post("/projects/{}/ports/udp".format(self._project.id))
vm2_port = response.json["udp_port"]
self._vm2_port = response.json["udp_port"]
# Create the tunnel on both side
data = {
"lport": vm1_port,
"lport": self._vm1_port,
"rhost": vm2.hypervisor.host,
"rport": vm2_port,
"rport": self._vm2_port,
"type": "nio_udp"
}
yield from vm1.post("/adapters/{adapter_number}/ports/{port_number}/nio".format(adapter_number=adapter_number1, port_number=port_number1), data=data)
data = {
"lport": vm2_port,
"lport": self._vm2_port,
"rhost": vm1.hypervisor.host,
"rport": vm1_port,
"rport": self._vm1_port,
"type": "nio_udp"
}
yield from vm2.post("/adapters/{adapter_number}/ports/{port_number}/nio".format(adapter_number=adapter_number2, port_number=port_number2), data=data)
@asyncio.coroutine
def delete(self):
"""
Delete the link and free the ressources
"""
vm1 = self._vms[0]["vm"]
adapter_number1 = self._vms[0]["adapter_number"]
port_number1 = self._vms[0]["port_number"]
vm2 = self._vms[1]["vm"]
adapter_number2 = self._vms[1]["adapter_number"]
port_number2 = self._vms[1]["port_number"]
yield from vm1.delete("/adapters/{adapter_number}/ports/{port_number}/nio".format(adapter_number=adapter_number1, port_number=port_number1))
yield from vm2.delete("/adapters/{adapter_number}/ports/{port_number}/nio".format(adapter_number=adapter_number2, port_number=port_number2))
+7
View File
@@ -92,6 +92,13 @@ class VM:
"""
return (yield from self._hypervisor.post("/projects/{}/{}/vms/{}{}".format(self._project.id, self._vm_type, self._id, path), data=data))
@asyncio.coroutine
def delete(self, path):
"""
HTTP post on the VM
"""
return (yield from self._hypervisor.delete("/projects/{}/{}/vms/{}{}".format(self._project.id, self._vm_type, self._id, path)))
def __json__(self):
return {
"hypervisor_id": self._hypervisor.id,