def processUpdateVMsList(server,vmList): try: from vt_manager_kvm.models.VirtualMachine import VirtualMachine for vm in server.getChildObject().vms.all(): isUp = False for iVm in vmList: if iVm.uuid == vm.uuid: #Is running vm.setState(VirtualMachine.RUNNING_STATE) isUp = True break ZabbixHelper.sendVMStatus(vm, isUp) if isUp: continue #Is not running vm.setState(VirtualMachine.STOPPED_STATE) finally: connection.close() return
def processUpdateVMsListFromCallback(vmUUID,state,rspec): from vt_manager_kvm.models.VirtualMachine import VirtualMachine try: VM = VirtualMachine.objects.get(uuid = vmUUID) except Exception as e: VMMonitor.logger.error(traceback.format_exc()) raise e if state == 'Started': VM.setState(VirtualMachine.RUNNING_STATE) ZabbixHelper.sendVMStatus(VM, True) elif state == 'Stopped': VM.setState(VirtualMachine.STOPPED_STATE) ZabbixHelper.sendVMStatus(VM, False) else: VM.setState(VirtualMachine.UNKNOWN_STATE) ZabbixHelper.sendVMStatus(VM, False) #XXX: Maybe there better palces to send to expedient this update state... XmlRpcClient.callRPCMethod(VM.getCallBackURL(), "sendAsync", XmlHelper.craftXmlClass(rspec)) return