def main(): vmname = get_vm_name_by_num(VMNUM) if not vmname: log_stderr("vm not found") return 1 image_state = open("db/team%d/serv%d_image_deploy_state" % (TEAM, VMNUM)).read().strip() if image_state == "RUNNING": cloud_ip = get_cloud_ip(TEAM) if not cloud_ip: log_stderr("no cloud_ip ip, exiting") return 1 cmd = ["sudo", "/cloud/scripts/remove_vm.sh", str(TEAM), str(VMNUM), str(vmname)] ret = call_unitl_zero_exit(["ssh"] + SSH_CLOUD_OPTS + [cloud_ip] + cmd) if not ret: log_stderr("failed to remove team vm") return 1 image_state = "NOT_STARTED" open("db/team%d/serv%d_image_deploy_state" % (TEAM, VMNUM), "w").write(image_state) if image_state == "NOT_STARTED": return 0 return 1
def main(): cloud_ip = get_cloud_ip(TEAM) if not cloud_ip: print("msg: ERR, no vm slots precreated") return 1 vmname = get_vm_name_by_num(VMNUM) if not vmname: log_stderr("vm not found") return 1 image_state = open("db/team%d/serv%d_image_deploy_state" % (TEAM, VMNUM)).read().strip() log_progress("5%") if image_state == "NOT_STARTED": file_from = "db/team%d/serv%d_root_passwd_hash.txt" % (TEAM, VMNUM) file_to = "%s:/home/cloud/serv%d_root_passwd_hash_team%d.txt" % ( cloud_ip, VMNUM, TEAM) ret = call_unitl_zero_exit(["scp"] + SSH_CLOUD_OPTS + [file_from, file_to]) if not ret: log_stderr("scp to CLOUD failed") return 1 log_progress("25%") cmd = [ "sudo", "/cloud/scripts/launch_vm.sh", str(TEAM), str(VMNUM), str(vmname) ] ret = call_unitl_zero_exit(["ssh"] + SSH_CLOUD_OPTS + [cloud_ip] + cmd) if not ret: log_stderr("launch team vm") return 1 image_state = "RUNNING" open("db/team%d/serv%d_image_deploy_state" % (TEAM, VMNUM), "w").write(image_state) log_progress("100%") return 0
def main(): vmname = get_vm_name_by_num(VMNUM) if not vmname: log_stderr("vm not found") return 1 image_state = open("db/team%d/serv%d_image_deploy_state" % (TEAM, VMNUM)).read().strip() if image_state == "NOT_STARTED": print("msg: ERR, vm is not started") return 1 if image_state == "RUNNING": cloud_ip = get_cloud_ip(TEAM) if not cloud_ip: log_stderr("no cloud ip, exiting") return 1 cmd = [ "sudo", "/cloud/scripts/list_snapshots.sh", str(TEAM), str(VMNUM), str(vmname) ] try: snapshots = subprocess.check_output(["ssh"] + SSH_CLOUD_OPTS + [cloud_ip] + cmd).decode("utf-8") except subprocess.CalledProcessError: log_stderr("get shapshots list failed") return 1 for line in snapshots.split("\n"): line = re.sub(r" \([^)]*\)", "", line) line = re.sub(r"Name: ", "", line) line = re.sub(r"This machine does not have any snapshots", "no snapshots are created yet", line) if not line.strip(): continue print("msg:", line) # print(snapshots) return 0
def main(): if not re.fullmatch(r"[0-9a-zA-Z_]+", NAME): print("msg: ERR, name validation error") return 1 vmname = get_vm_name_by_num(VMNUM) if not vmname: log_stderr("vm not found") return 1 image_state = open("db/team%d/serv%d_image_deploy_state" % (TEAM, VMNUM)).read().strip() if image_state == "NOT_STARTED": print("msg: ERR, vm is not started") return 1 if image_state == "RUNNING": cloud_ip = get_cloud_ip(TEAM) if not cloud_ip: log_stderr("no cloud ip, exiting") return 1 cmd = [ "sudo", "/cloud/scripts/take_snapshot.sh", str(TEAM), str(VMNUM), str(vmname), NAME ] ret = call_unitl_zero_exit(["ssh"] + SSH_CLOUD_OPTS + [cloud_ip] + cmd, redirect_out_to_err=False, attempts=1) if not ret: log_stderr("take shapshot failed") return 1 return 0
def main(): vmname = get_vm_name_by_num(VMNUM) if not vmname: log_stderr("vm not found") return 1 image_state = open("db/team%d/serv%d_image_deploy_state" % (TEAM, VMNUM)).read().strip() if image_state == "NOT_STARTED": print("msg: ERR, vm is not started") return 1 if image_state == "RUNNING": cloud_ip = get_cloud_ip(TEAM) if not cloud_ip: log_stderr("no cloud ip, exiting") return 1 cmd = [ "sudo", "/cloud/scripts/reboot_vm.sh", str(TEAM), str(VMNUM), str(vmname) ] ret = call_unitl_zero_exit(["ssh"] + SSH_CLOUD_OPTS + [cloud_ip] + cmd, redirect_out_to_err=False, attempts=1) if not ret: log_stderr("reboot vm failed") return 1 return 0 log_stderr("unknown state") return 1