def detach_volume()

in cookbooks/aws-parallelcluster-environment/files/default/ec2_udev_rules/manageVolume.py [0:0]


def detach_volume(volume_id, ec2):
    response = ec2.detach_volume(VolumeId=volume_id)

    # Poll for volume to attach
    state = response.get("State")
    delay = 5  # seconds
    elapsed = 0
    timeout = 300  # seconds
    while state != "available":
        if elapsed >= timeout:
            print(f"ERROR: Volume {volume_id} failed to detach in {timeout} seconds.")
            sys.exit(1)
        if state in ["busy", "attached"]:
            print(f"ERROR: Volume {volume_id} in bad state {state}")
            sys.exit(1)
        print(f"Volume {volume_id} in state {state} ... waiting to be 'detach'")
        time.sleep(delay)
        elapsed += delay
        try:
            state = ec2.describe_volumes(VolumeIds=[volume_id]).get("Volumes")[0].get("State")
        except IndexError:
            continue