'Attach a volume to an instance using the Nova volume manager.'

def attach_volume(self, blockdevice_id, attach_to):

    unattached_volume = get_blockdevice_volume(self, blockdevice_id)
    if (unattached_volume.attached_to is not None):
        raise AlreadyAttachedVolume(blockdevice_id)
    nova_volume = self.nova_volume_manager.create_server_volume(server_id=attach_to, volume_id=unattached_volume.blockdevice_id, device=None)
    attached_volume = wait_for_volume_state(volume_manager=self.cinder_volume_manager, expected_volume=nova_volume, desired_state=u'in-use', transient_states=(u'available', u'attaching'))
    attached_volume = unattached_volume.set('attached_to', attach_to)
    return attached_volume
