in ec2/gov-cloud-import.js [119:164]
function findLetter(volumeId){
return new Promise((resolve, reject) => {
let paramsInst = {
Filters: [
{ Name: 'tag:gov-cloud-import',
Values: ['true']
},
{ Name: 'instance-state-name',
Values: ['running']
}
]
};
ec2.describeInstances(paramsInst, function(err, data) {
if (err) {
writeToLog(err, err.stack); // an error occurred
} else {
//Construct an array of mounted drives so when know which letter to use for mounting
const instanceId = data.Reservations[0].Instances[0].InstanceId;
let length = data.Reservations[0].Instances[0].BlockDeviceMappings.length;
let mountedDrives = [];
for (let index = 0; index < length; ++index) {
let drive = data.Reservations[0].Instances[0].BlockDeviceMappings[index].DeviceName;
let lastChar = drive.substr(drive.length - 1);
mountedDrives[index] = lastChar;
}
//Possible letters for mounting volume
let driveLetters = ['f','g','h','i','j','k','l','m',];
//If we max the connected volumes, send back a note
if (mountedDrives.length >= 9){
callback(null, "Max number of connected volumes. Restart Import.")
}
//Removing the mounted drive letters from possibilities
for (let i=0; i< mountedDrives.length; i++) {
let index = driveLetters.indexOf(mountedDrives[i]);
if (index > -1) {
driveLetters.splice(index, 1);
}
}
//Pick a letter
const device = '/dev/sd'+driveLetters[0];
resolve(device);
}
});
});
}