diff --git a/ccserver/handlers.py b/ccserver/handlers.py index c8aae7a7c209a76261c3c8a4a9875bf34a05651d..00ab02b4645083fa2294763885b1514abe0821e8 100644 --- a/ccserver/handlers.py +++ b/ccserver/handlers.py @@ -143,6 +143,20 @@ class ClientHandler(OnlineCCHandler): @listed def resume(self, query): self._vm_action(query, 'resume_vm') + + @pure + @listed + def execute(self, query, command): + query += '&hv' + query = TqlQuery(query) + hypervisors = query.filter(list(self._server.iterrole('hypervisor')), + key=lambda o,n: o.get_tags([n]).get(n)) + outputs = [] + for hv in hypervisors: + outputs.append(hv.connection.call('execute_command', command)) + + return outputs + class AuthenticationError(Exception): pass