|
|
@ -71,16 +71,7 @@ class Controller:
|
|
|
|
port=server_config.getint("port", 3080),
|
|
|
|
port=server_config.getint("port", 3080),
|
|
|
|
user=server_config.get("user", ""),
|
|
|
|
user=server_config.get("user", ""),
|
|
|
|
password=server_config.get("password", ""))
|
|
|
|
password=server_config.get("password", ""))
|
|
|
|
if self.gns3vm.enable:
|
|
|
|
yield from self.gns3vm.auto_start_vm()
|
|
|
|
yield from self.gns3vm.start()
|
|
|
|
|
|
|
|
self._computes["vm"] = Compute(compute_id="vm",
|
|
|
|
|
|
|
|
name="GNS3 VM",
|
|
|
|
|
|
|
|
controller=self,
|
|
|
|
|
|
|
|
protocol=self.gns3vm.protocol,
|
|
|
|
|
|
|
|
host=self.gns3vm.ip_address,
|
|
|
|
|
|
|
|
port=self.gns3vm.port,
|
|
|
|
|
|
|
|
user=self.gns3vm.user,
|
|
|
|
|
|
|
|
password=self.gns3vm.password)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@asyncio.coroutine
|
|
|
|
@asyncio.coroutine
|
|
|
|
def stop(self):
|
|
|
|
def stop(self):
|
|
|
@ -88,9 +79,12 @@ class Controller:
|
|
|
|
for project in self._projects.values():
|
|
|
|
for project in self._projects.values():
|
|
|
|
yield from project.close()
|
|
|
|
yield from project.close()
|
|
|
|
for compute in self._computes.values():
|
|
|
|
for compute in self._computes.values():
|
|
|
|
yield from compute.close()
|
|
|
|
try:
|
|
|
|
if self.gns3vm.enable and self.gns3vm.auto_stop:
|
|
|
|
yield from compute.close()
|
|
|
|
yield from self.gns3vm.stop()
|
|
|
|
# We don't care if a compute is down at this step
|
|
|
|
|
|
|
|
except aiohttp.errors.ClientOSError:
|
|
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
yield from self.gns3vm.auto_stop_vm()
|
|
|
|
self._computes = {}
|
|
|
|
self._computes = {}
|
|
|
|
self._projects = {}
|
|
|
|
self._projects = {}
|
|
|
|
|
|
|
|
|
|
|
@ -212,18 +206,19 @@ class Controller:
|
|
|
|
return Config.instance().get_section_config("Server").getboolean("controller")
|
|
|
|
return Config.instance().get_section_config("Server").getboolean("controller")
|
|
|
|
|
|
|
|
|
|
|
|
@asyncio.coroutine
|
|
|
|
@asyncio.coroutine
|
|
|
|
def add_compute(self, compute_id=None, name=None, **kwargs):
|
|
|
|
def add_compute(self, compute_id=None, name=None, force=False, **kwargs):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Add a server to the dictionary of compute servers controlled by this controller
|
|
|
|
Add a server to the dictionary of compute servers controlled by this controller
|
|
|
|
|
|
|
|
|
|
|
|
:param compute_id: Compute server identifier
|
|
|
|
:param compute_id: Compute server identifier
|
|
|
|
:param name: Compute name
|
|
|
|
:param name: Compute name
|
|
|
|
|
|
|
|
:param force: True skip security check
|
|
|
|
:param kwargs: See the documentation of Compute
|
|
|
|
:param kwargs: See the documentation of Compute
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
if compute_id not in self._computes:
|
|
|
|
if compute_id not in self._computes:
|
|
|
|
|
|
|
|
|
|
|
|
# We disallow to create from the outside the local and VM server
|
|
|
|
# We disallow to create from the outside the local and VM server
|
|
|
|
if compute_id == 'local' or compute_id == 'vm':
|
|
|
|
if (compute_id == 'local' or compute_id == 'vm') and not force:
|
|
|
|
return None
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
for compute in self._computes.values():
|
|
|
|
for compute in self._computes.values():
|
|
|
|