Try to fix VirtualBox create test.

pull/100/head
Jeremy 10 years ago
parent 984d47f9c8
commit 17f6223fb1

@ -40,9 +40,11 @@ class VirtualBoxHandler:
def create(request, response):
vbox_manager = VirtualBox.instance()
vm = yield from vbox_manager.create_vm(request.json["name"], request.json.get("uuid"))
vm = yield from vbox_manager.create_vm(request.json["name"], request.json["project_uuid"], request.json.get("uuid"))
print(vm)
response.json({"name": vm.name,
"uuid": vm.uuid})
"uuid": vm.uuid,
"project_uuid": vm.project.uuid})
@classmethod
@Route.post(

@ -95,6 +95,7 @@ class BaseManager:
:param project_identifier UUID of Project
:param uuid Force UUID force VM
"""
project = ProjectManager.instance().get_project(project_identifier)
# TODO: support for old projects VM with normal IDs.

@ -53,9 +53,9 @@ class VirtualBoxVM(BaseVM):
_instances = []
_allocated_console_ports = []
def __init__(self, name, uuid, manager):
def __init__(self, name, uuid, project, manager):
super().__init__(name, uuid, manager)
super().__init__(name, uuid, project, manager)
self._system_properties = {}

@ -46,6 +46,13 @@ VBOX_CREATE_SCHEMA = {
"maxLength": 36,
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
},
"project_uuid": {
"description": "Project UUID",
"type": "string",
"minLength": 36,
"maxLength": 36,
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
},
},
"additionalProperties": False,
"required": ["name", "vmname"],
@ -68,6 +75,13 @@ VBOX_OBJECT_SCHEMA = {
"maxLength": 36,
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
},
"project_uuid": {
"description": "Project UUID",
"type": "string",
"minLength": 36,
"maxLength": 36,
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
},
"console": {
"description": "console TCP port",
"minimum": 1,

@ -35,7 +35,6 @@ from .modules.port_manager import PortManager
# TODO: get rid of * have something generic to automatically import handlers so the routes can be found
from gns3server.handlers import *
from gns3server.handlers.virtualbox_handler import VirtualBoxHandler
import logging
log = logging.getLogger(__name__)
@ -133,6 +132,9 @@ class Server:
Starts the server.
"""
logger = logging.getLogger("asyncio")
logger.setLevel(logging.WARNING)
# TODO: SSL support for Rackspace cloud integration (here or with nginx for instance).
self._loop = asyncio.get_event_loop()
app = aiohttp.web.Application()

@ -120,7 +120,7 @@ class Query:
def _example_file_path(self, method, path):
path = re.sub('[^a-z0-9]', '', path)
return "docs/api/examples/{}_{}.txt".format(method.lower(), path) # FIXME: cannot find path when running tests
return "docs/api/examples/{}_{}.txt".format(method.lower(), path)
def _get_unused_port():

@ -15,13 +15,13 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from tests.api.base import server, loop
from tests.api.base import server, loop, project
from tests.utils import asyncio_patch
def test_vbox_create(server):
def test_vbox_create(server, project):
with asyncio_patch("gns3server.modules.VirtualBox.create_vm", return_value="61d61bdd-aa7d-4912-817f-65a9eb54d3ab"):
response = server.post("/virtualbox", {"name": "VM1"}, example=False)
response = server.post("/virtualbox", {"name": "VM1", "vmname": "VM1", "project_uuid": project.uuid}, example=False)
assert response.status == 400
assert response.route == "/virtualbox"
assert response.json["name"] == "VM1"
@ -39,4 +39,4 @@ def test_vbox_stop(server):
with asyncio_patch("gns3server.modules.VirtualBox.stop_vm", return_value=True):
response = server.post("/virtualbox/61d61bdd-aa7d-4912-817f-65a9eb54d3ab/stop", {}, example=False)
assert response.status == 200
assert response.route == "/virtualbox/{uuid}/stop"
assert response.route == "/virtualbox/{uuid}/stop"
Loading…
Cancel
Save