def update(flargs): vms = len(flargs[1].vms) try: vm_name = flargs[0] vm = VMachine(vm_conf_file, vm_name) job_log(vm_name, "UPDATE") vm.revert_last_snapshot() job_log(vm_name, "REVERTED") sleep(random.randint(60, 60 * vms)) vm.startup() job_log(vm_name, "STARTED") #sleep(5 * 60) if wait_for_startup(vm) is False: job_log(vm_name, "NOT STARTED") return "ERROR wait for startup for %s" % vm_name if check_infection_status(vm) is not True: vm.shutdown() return "ERROR VM IS INFECTED!!!" out_img = "%s/screenshot_%s_update.png" % (logdir, vm_name) vmman.takeScreenshot(vm, out_img) print "[%s] waiting for Updates" % vm_name sleep(updatetime * 60) sleep(random.randint(10, 300)) job_log(vm_name, "SHUTDOWN") r = vmman.shutdownUpgrade(vm) if r is False: job_log(vm_name, "NOT UPDATED") return "%s, ERROR: NOT Updated! no shutdown..." % vm_name else: # RESTART TIME while vm.is_powered_off() is False: sleep(60) job_log(vm_name, "POWERED OFF") vm.startup() if wait_for_startup(vm) is False: job_log(vm_name, "NOT RESTARTED") vm.shutdown() job_log(vm_name, "RESTARTED") vm.refresh_snapshot() job_log(vm_name, "UPDATED") return "%s, SUCCESS: Updated!" % vm_name except Exception as e: job_log(vm_name, "ERROR") print "DBG trace %s" % traceback.format_exc() return "%s, ERROR: not updated. Reason: %s" % (vm_name, e)