# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause

Make the create-ebs-volume script work with nvme devices.

diff --git a/bin/create-ebs-volume b/bin/create-ebs-volume
index 6857564..efeac35 100755
--- a/create-ebs-volume
+++ b/create-ebs-volume
@@ -149,10 +149,11 @@ function get_next_logical_device() {
     for letter in ${alphabet[@]}; do
         # use /dev/xvdb* device names to avoid contention for /dev/sd* and /dev/xvda names
         # only supported by HVM instances
-        if [ ! -b "/dev/xvdb${letter}" ]; then
+        if [[ $created_volumes =~ .*/dev/xvdb${letter}.* ]]; then
+            continue
+        fi
             echo "/dev/xvdb${letter}"
             break
-        fi
     done
 }
 
@@ -322,13 +323,21 @@ function create_and_attach_volume() {
     set -e
 
     logthis "waiting for volume $volume_id on filesystem"
+    set +e
     while true; do
-        if [ -e "$device" ]; then
-            logthis "volume $volume_id on filesystem as $device"
+        # AWS returns e.g. vol-00338247831716a7b4, the kernel changes that to vol00338247831716a7b
+        valid_volume_id=`echo $volume_id |sed -e 's/[^a-zA-Z0-9]//'`
+        # example lsblk output:
+        # nvme4n1                     259:7    0  150G  0 disk            vol00338247831716a7b
+        LSBLK=`lsblk -o +SERIAL |grep $valid_volume_id`
+        if [[ $? -eq 0 ]]; then
+            nvme_device=`echo $LSBLK|cut -f1 -d' '|xargs -I {} echo "/dev/{}"`
+            logthis "volume $volume_id on filesystem as $nvme_device (aws device $device)"
             break
         fi
         sleep 1
     done
+    set -e
 
     # set volume delete on termination
     aws ec2 modify-instance-attribute \
@@ -338,7 +347,7 @@ function create_and_attach_volume() {
     > /dev/null
     logthis "volume $volume_id DeleteOnTermination ENABLED"
 
-    echo $device
+    echo "$nvme_device"
 }
 
 create_and_attach_volume
