From a393864ccbeaa10be51e79ccd3f7131ab612363e Mon Sep 17 00:00:00 2001 From: Antoine Millet Date: Wed, 22 Dec 2010 15:48:48 +0100 Subject: [PATCH] Implemented start, stop, suspend and resume client handler methods using _vm_action private method. --- ccserver/handlers.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/ccserver/handlers.py b/ccserver/handlers.py index 843b22a..c8aae7a 100644 --- a/ccserver/handlers.py +++ b/ccserver/handlers.py @@ -115,6 +115,34 @@ class ClientHandler(OnlineCCHandler): logging.debug('Executed list function with query %s' % query) return self._list(query) + def _vm_action(self, query, method, *args, **kwargs): + query += '&vm' + vms = self._list(query) + hypervisors = list(self._server.iterrole('hypervisor')) + for hv in hypervisors: + vm_to_start = [vm['vm'] for vm in vms if vm['hv'] == hv.login] + if vm_to_start: + hv.connection.call(method, vm_to_start, *args, **kwargs) + + @pure + @listed + def start(self, query): + self._vm_action(query, 'start_vm') + + @pure + @listed + def stop(self, query, force=False): + self._vm_action(query, 'stop_vm', force) + + @pure + @listed + def suspend(self, query): + self._vm_action(query, 'suspend_vm') + + @pure + @listed + def resume(self, query): + self._vm_action(query, 'resume_vm') class AuthenticationError(Exception): pass -- GitLab