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

No need for start_vm and stop_vm in the manager.

This commit is contained in:
Jeremy 2015-01-21 17:41:35 -07:00
parent beb27b3f69
commit f231b06833
6 changed files with 28 additions and 33 deletions

View File

@ -62,10 +62,11 @@ class VirtualBoxHandler:
404: "VirtualBox VM instance doesn't exist" 404: "VirtualBox VM instance doesn't exist"
}, },
description="Start a VirtualBox VM instance") description="Start a VirtualBox VM instance")
def create(request, response): def start(request, response):
vbox_manager = VirtualBox.instance() vbox_manager = VirtualBox.instance()
yield from vbox_manager.start_vm(request.match_info["uuid"]) vm = vbox_manager.get_vm(request.match_info["uuid"])
yield from vm.start()
response.set_status(204) response.set_status(204)
@classmethod @classmethod
@ -80,8 +81,9 @@ class VirtualBoxHandler:
404: "VirtualBox VM instance doesn't exist" 404: "VirtualBox VM instance doesn't exist"
}, },
description="Stop a VirtualBox VM instance") description="Stop a VirtualBox VM instance")
def create(request, response): def stop(request, response):
vbox_manager = VirtualBox.instance() vbox_manager = VirtualBox.instance()
yield from vbox_manager.stop_vm(request.match_info["uuid"]) vm = vbox_manager.get_vm(request.match_info["uuid"])
yield from vm.stop()
response.set_status(204) response.set_status(204)

View File

@ -102,10 +102,11 @@ class VPCSHandler:
404: "VPCS instance doesn't exist" 404: "VPCS instance doesn't exist"
}, },
description="Start a VPCS instance") description="Start a VPCS instance")
def create(request, response): def start(request, response):
vpcs_manager = VPCS.instance() vpcs_manager = VPCS.instance()
yield from vpcs_manager.start_vm(request.match_info["uuid"]) vm = vpcs_manager.get_vm(request.match_info["uuid"])
yield from vm.start()
response.set_status(204) response.set_status(204)
@classmethod @classmethod
@ -120,10 +121,11 @@ class VPCSHandler:
404: "VPCS instance doesn't exist" 404: "VPCS instance doesn't exist"
}, },
description="Stop a VPCS instance") description="Stop a VPCS instance")
def create(request, response): def stop(request, response):
vpcs_manager = VPCS.instance() vpcs_manager = VPCS.instance()
yield from vpcs_manager.stop_vm(request.match_info["uuid"]) vm = vpcs_manager.get_vm(request.match_info["uuid"])
yield from vm.stop()
response.set_status(204) response.set_status(204)
@Route.post( @Route.post(

View File

@ -126,20 +126,9 @@ class BaseManager:
uuid = str(uuid4()) uuid = str(uuid4())
vm = self._VM_CLASS(name, uuid, project, self, *args, **kwargs) vm = self._VM_CLASS(name, uuid, project, self, *args, **kwargs)
future = vm.create() if asyncio.iscoroutinefunction(vm.create):
if isinstance(future, asyncio.Future): yield from vm.create()
yield from future else:
vm.create()
self._vms[vm.uuid] = vm self._vms[vm.uuid] = vm
return vm return vm
@asyncio.coroutine
def start_vm(self, uuid):
vm = self.get_vm(uuid)
yield from vm.start()
@asyncio.coroutine
def stop_vm(self, uuid):
vm = self.get_vm(uuid)
yield from vm.stop()

View File

@ -15,7 +15,6 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
import logging import logging
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -29,9 +28,9 @@ class BaseVM:
self._project = project self._project = project
self._manager = manager self._manager = manager
log.info("{module}: {name} [{uuid}] has been created".format(module=self.manager.module_name, log.debug("{module}: {name} [{uuid}] initialized".format(module=self.manager.module_name,
name=self.name, name=self.name,
uuid=self.uuid)) uuid=self.uuid))
# TODO: When delete release console ports # TODO: When delete release console ports
@ -63,10 +62,10 @@ class BaseVM:
:param new_name: name :param new_name: name
""" """
log.info("{module}: {name} [{uuid}]: renamed to {new_name}".format(module=self.manager.module_name, log.info("{module}: {name} [{uuid}] renamed to {new_name}".format(module=self.manager.module_name,
name=self.name, name=self.name,
uuid=self.uuid, uuid=self.uuid,
new_name=new_name)) new_name=new_name))
self._name = new_name self._name = new_name
@property @property
@ -102,7 +101,9 @@ class BaseVM:
Creates the VM. Creates the VM.
""" """
return log.info("{module}: {name} [{uuid}] created".format(module=self.manager.module_name,
name=self.name,
uuid=self.uuid))
def start(self): def start(self):
""" """

View File

@ -27,6 +27,7 @@ class ProjectManager:
""" """
def __init__(self): def __init__(self):
self._projects = {} self._projects = {}
@classmethod @classmethod

View File

@ -81,7 +81,7 @@ class ColouredStreamHandler(logging.StreamHandler):
def init_logger(level, quiet=False): def init_logger(level, quiet=False):
stream_handler = ColouredStreamHandler(sys.stdout) stream_handler = ColouredStreamHandler(sys.stdout)
stream_handler.formatter = ColouredFormatter("{asctime} {levelname:8} {filename}:{lineno}#RESET# {message}", "%Y-%m-%d %H:%M:%S", "{") stream_handler.formatter = ColouredFormatter("{asctime} {levelname} {filename}:{lineno}#RESET# {message}", "%Y-%m-%d %H:%M:%S", "{")
if quiet: if quiet:
stream_handler.addFilter(logging.Filter(name="user_facing")) stream_handler.addFilter(logging.Filter(name="user_facing"))
logging.getLogger('user_facing').propagate = False logging.getLogger('user_facing').propagate = False