'Iterate through vols and set device/partition settings automatically if
not specified.
This method assigns the first volume to /dev/sdz, second to /dev/sdy,
etc. for all volumes that do not include a device/partition setting'

def load_volumes(self, vols):

    devices = [('/dev/sd%s' % s) for s in string.lowercase]
    devmap = {}
    for volname in vols:
        vol = vols.get(volname)
        dev = vol.get('device')
        if (dev in devices):
            devices.remove(dev)
        volid = vol.get('volume_id')
        if (dev and (volid not in devmap)):
            devmap[volid] = dev
    volumes = utils.AttributeDict()
    for volname in vols:
        vol = vols.get(volname)
        vol_id = vol.get('volume_id')
        device = vol.get('device')
        if (not device):
            if (vol_id in devmap):
                device = devmap.get(vol_id)
            else:
                device = devices.pop()
                devmap[vol_id] = device
        if (not utils.is_valid_device(device)):
            raise exception.InvalidDevice(device)
        v = volumes[volname] = utils.AttributeDict()
        v.update(vol)
        v['device'] = device
        part = vol.get('partition')
        if part:
            partition = (device + str(part))
            if (not utils.is_valid_partition(partition)):
                raise exception.InvalidPartition(part)
            v['partition'] = partition
    return volumes
