Example #1
0
 def _clean_volume_attachment(context, id):
     attachments = (
         db.volume_attachment_get_used_by_volume_id(context, id))
     for attachment in attachments:
         db.volume_detached(context, id, attachment.id)
     db.volume_admin_metadata_delete(context, id,
                                     'attached_mode')
Example #2
0
 def _clean_volume_attachment(context, id):
     attachments = (
         db.volume_attachment_get_used_by_volume_id(context, id))
     for attachment in attachments:
         db.volume_detached(context, id, attachment.id)
     db.volume_admin_metadata_delete(context, id,
                                     'attached_mode')
Example #3
0
def _usage_from_volume(context, volume_ref, **kw):
    now = timeutils.utcnow()
    launched_at = volume_ref['launched_at'] or now
    created_at = volume_ref['created_at'] or now
    usage_info = dict(
        tenant_id=volume_ref['project_id'],
        host=volume_ref['host'],
        user_id=volume_ref['user_id'],
        availability_zone=volume_ref['availability_zone'],
        volume_id=volume_ref['id'],
        volume_type=volume_ref['volume_type_id'],
        display_name=volume_ref['display_name'],
        launched_at=launched_at.isoformat(),
        created_at=created_at.isoformat(),
        status=volume_ref['status'],
        snapshot_id=volume_ref['snapshot_id'],
        size=volume_ref['size'],
        replication_status=volume_ref['replication_status'],
        replication_extended_status=volume_ref['replication_extended_status'],
        replication_driver_data=volume_ref['replication_driver_data'],
        metadata=volume_ref.get('volume_metadata'),
    )

    usage_info.update(kw)
    try:
        attachments = db.volume_attachment_get_used_by_volume_id(
            context, volume_ref['id'])
        usage_info['volume_attachment'] = attachments

        glance_meta = db.volume_glance_metadata_get(context, volume_ref['id'])
        if glance_meta:
            usage_info['glance_metadata'] = glance_meta
    except exception.GlanceMetadataNotFound:
        pass
    except exception.VolumeNotFound:
        LOG.debug("Can not find volume %s at notify usage", volume_ref['id'])

    return usage_info
Example #4
0
def _usage_from_volume(context, volume_ref, **kw):
    now = timeutils.utcnow()
    launched_at = volume_ref['launched_at'] or now
    created_at = volume_ref['created_at'] or now
    usage_info = dict(
        tenant_id=volume_ref['project_id'],
        host=volume_ref['host'],
        user_id=volume_ref['user_id'],
        availability_zone=volume_ref['availability_zone'],
        volume_id=volume_ref['id'],
        volume_type=volume_ref['volume_type_id'],
        display_name=volume_ref['display_name'],
        launched_at=launched_at.isoformat(),
        created_at=created_at.isoformat(),
        status=volume_ref['status'],
        snapshot_id=volume_ref['snapshot_id'],
        size=volume_ref['size'],
        replication_status=volume_ref['replication_status'],
        replication_extended_status=volume_ref['replication_extended_status'],
        replication_driver_data=volume_ref['replication_driver_data'],
        metadata=volume_ref.get('volume_metadata'),)

    usage_info.update(kw)
    try:
        attachments = db.volume_attachment_get_used_by_volume_id(
            context, volume_ref['id'])
        usage_info['volume_attachment'] = attachments

        glance_meta = db.volume_glance_metadata_get(context, volume_ref['id'])
        if glance_meta:
            usage_info['glance_metadata'] = glance_meta
    except exception.GlanceMetadataNotFound:
        pass
    except exception.VolumeNotFound:
        LOG.debug("Can not find volume %s at notify usage", volume_ref['id'])

    return usage_info
Example #5
0
 def get_all_by_volume_id(cls, context, volume_id):
     attachments = db.volume_attachment_get_used_by_volume_id(
         context, volume_id)
     return base.obj_make_list(context, cls(context),
                               objects.VolumeAttachment, attachments)
Example #6
0
 def get_all_by_volume_id(cls, context, volume_id):
     attachments = db.volume_attachment_get_used_by_volume_id(context, volume_id)
     return base.obj_make_list(context, cls(context), objects.VolumeAttachment, attachments)