Esempio n. 1
0
def delete_cascade(context, name, session):
    """Raise if not found, has references or not visible"""

    namespace_rec = _get_by_name(context, name, session)
    with session.begin():
        try:
            metadef_api.tag.delete_namespace_content(
                context, namespace_rec.id, session)
            metadef_api.object.delete_namespace_content(
                context, namespace_rec.id, session)
            metadef_api.property.delete_namespace_content(
                context, namespace_rec.id, session)
            metadef_api.resource_type_association.delete_namespace_content(
                context, namespace_rec.id, session)
            session.delete(namespace_rec)
            session.flush()
        except db_exc.DBError as e:
            if isinstance(e.inner_exception, sa_exc.IntegrityError):
                msg = ("Metadata definition namespace=%s not deleted."
                       " Other records still refer to it." % name)
                LOG.debug(msg)
                raise exc.MetadefIntegrityError(
                    record_type='namespace', record_name=name)
            else:
                raise e

    return namespace_rec.to_dict()
Esempio n. 2
0
def delete(context, name, session):
    """Delete a resource type or raise if not found or is protected"""

    db_rec = get(context, name, session)
    if db_rec.protected is True:
        msg = ("Delete forbidden. Metadata definition resource-type %s is a"
               " seeded-system type and can not be deleted.") % name
        LOG.debug(msg)
        raise exc.ProtectedMetadefResourceTypeSystemDelete(
            resource_type_name=name)

    try:
        session.delete(db_rec)
        session.flush()
    except db_exc.DBError as e:
        if isinstance(e.inner_exception, sa_exc.IntegrityError):
            msg = ("Could not delete Metadata definition resource-type %s"
                   ". It still has content") % name
            LOG.debug(msg)
            raise exc.MetadefIntegrityError(
                record_type='resource-type', record_name=name)
        else:
            raise e

    return db_rec.to_dict()
Esempio n. 3
0
def delete(context, name, session):
    """Raise if not found, has references or not visible"""

    namespace_rec = _get_by_name(context, name, session)
    try:
        session.delete(namespace_rec)
        session.flush()
    except db_exc.DBError as e:
        if isinstance(e.inner_exception, sa_exc.IntegrityError):
            msg = ("Metadata definition namespace=%s not deleted."
                   " Other records still refer to it." % name)
            LOG.debug(msg)
            raise exc.MetadefIntegrityError(
                record_type='namespace', record_name=name)
        else:
            raise e

    return namespace_rec.to_dict()