'Attach an existing volume to an existing instance.
This method is separated to make it possible for cells version
to override it.'

def _attach_volume(self, context, instance, volume_id, device, disk_bus, device_type, tag=None):

    volume_bdm = self._create_volume_bdm(context, instance, device, volume_id, disk_bus=disk_bus, device_type=device_type, tag=tag)
    try:
        self._check_attach_and_reserve_volume(context, volume_id, instance)
        self.compute_rpcapi.attach_volume(context, instance, volume_bdm)
    except Exception:
        with excutils.save_and_reraise_exception():
            volume_bdm.destroy()
    return volume_bdm.device_name
