Example #1
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 == "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
Example #3
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
Example #4
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
Example #5
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