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