Allow to have projects with the same name in different locations.

This commit is contained in:
grossmj 2018-03-30 23:01:37 +07:00
parent ea0009db6c
commit 509b171b06
7 changed files with 15 additions and 8 deletions

View File

@ -535,7 +535,7 @@ class Controller:
return compute_id in self._computes return compute_id in self._computes
@asyncio.coroutine @asyncio.coroutine
def add_project(self, project_id=None, name=None, **kwargs): def add_project(self, project_id=None, name=None, path=None, **kwargs):
""" """
Creates a project or returns an existing project Creates a project or returns an existing project
@ -547,8 +547,11 @@ class Controller:
if project_id not in self._projects: if project_id not in self._projects:
for project in self._projects.values(): for project in self._projects.values():
if name and project.name == name: if name and project.name == name:
raise aiohttp.web.HTTPConflict(text='Project name "{}" already exists'.format(name)) if path and path == project.path:
project = Project(project_id=project_id, controller=self, name=name, **kwargs) raise aiohttp.web.HTTPConflict(text='Project "{}" already exists in location "{}"'.format(name, path))
else:
raise aiohttp.web.HTTPConflict(text='Project "{}" already exists'.format(name))
project = Project(project_id=project_id, controller=self, name=name, path=path, **kwargs)
self._projects[project.id] = project self._projects[project.id] = project
return self._projects[project.id] return self._projects[project.id]
return self._projects[project_id] return self._projects[project_id]

View File

@ -183,6 +183,10 @@ def _convert_2_1_0(topo, topo_path):
if "properties" in node: if "properties" in node:
if node["node_type"] in ("qemu", "vmware", "virtualbox"): if node["node_type"] in ("qemu", "vmware", "virtualbox"):
if "acpi_shutdown" in node["properties"]: if "acpi_shutdown" in node["properties"]:
if node["properties"]["acpi_shutdown"] is True:
node["properties"]["on_close"] = "save_vm_sate"
else:
node["properties"]["on_close"] = "power_off"
del node["properties"]["acpi_shutdown"] del node["properties"]["acpi_shutdown"]
if "save_vm_state" in node["properties"]: if "save_vm_state" in node["properties"]:
del node["properties"]["save_vm_state"] del node["properties"]["save_vm_state"]

View File

@ -100,7 +100,7 @@ def test_convert(directory, tmpdir):
def compare_dict(path, source, reference): def compare_dict(path, source, reference):
""" """
Compare two dictionnary of a topology Compare two dictionary of a topology
""" """
assert isinstance(source, dict), "Source is not a dict in {}".format(path) assert isinstance(source, dict), "Source is not a dict in {}".format(path)
for key in source: for key in source:

View File

@ -34,7 +34,7 @@
"port_segment_size": 0, "port_segment_size": 0,
"first_port_name": null, "first_port_name": null,
"properties": { "properties": {
"acpi_shutdown": false, "on_close": "power_off",
"adapter_type": "e1000", "adapter_type": "e1000",
"adapters": 1, "adapters": 1,
"boot_priority": "c", "boot_priority": "c",

View File

@ -35,7 +35,7 @@
"first_port_name": null, "first_port_name": null,
"properties": { "properties": {
"linked_clone": false, "linked_clone": false,
"acpi_shutdown": false, "on_close": "power_off",
"adapter_type": "Intel PRO/1000 MT Desktop (82540EM)", "adapter_type": "Intel PRO/1000 MT Desktop (82540EM)",
"adapters": 1, "adapters": 1,
"headless": false, "headless": false,

View File

@ -35,7 +35,7 @@
"first_port_name": null, "first_port_name": null,
"properties": { "properties": {
"linked_clone": false, "linked_clone": false,
"acpi_shutdown": false, "on_close": "power_off",
"adapter_type": "e1000", "adapter_type": "e1000",
"adapters": 1, "adapters": 1,
"headless": false, "headless": false,

View File

@ -34,7 +34,7 @@
"port_segment_size": 0, "port_segment_size": 0,
"first_port_name": null, "first_port_name": null,
"properties": { "properties": {
"acpi_shutdown": false, "on_close": "power_off",
"adapter_type": "e1000", "adapter_type": "e1000",
"adapters": 1, "adapters": 1,
"headless": false, "headless": false,