Пример #1
0
 def get_audit_by_id(self, context, audit_id):
     query = model_query(models.Audit)
     query = query.filter_by(id=audit_id)
     try:
         audit = query.one()
         if not context.show_deleted:
             if audit.state == 'DELETED':
                 raise exception.AuditNotFound(audit=audit_id)
         return audit
     except exc.NoResultFound:
         raise exception.AuditNotFound(audit=audit_id)
Пример #2
0
 def _get_audit(self, context, fieldname, value, eager):
     try:
         return self._get(context,
                          model=models.Audit,
                          fieldname=fieldname,
                          value=value,
                          eager=eager)
     except exception.ResourceNotFound:
         raise exception.AuditNotFound(audit=value)
Пример #3
0
    def update_audit(self, audit_id, values):
        if 'uuid' in values:
            raise exception.Invalid(
                message=_("Cannot overwrite UUID for an existing "
                          "Audit."))

        try:
            return self._update(models.Audit, audit_id, values)
        except exception.ResourceNotFound:
            raise exception.AuditNotFound(audit=audit_id)
Пример #4
0
    def soft_delete_audit(self, audit_id):
        session = get_session()
        with session.begin():
            query = model_query(models.Audit, session=session)
            query = add_identity_filter(query, audit_id)

            try:
                query.one()
            except exc.NoResultFound:
                raise exception.AuditNotFound(node=audit_id)

            query.soft_delete()
Пример #5
0
    def _do_update_audit(self, audit_id, values):
        session = get_session()
        with session.begin():
            query = model_query(models.Audit, session=session)
            query = add_identity_filter(query, audit_id)
            try:
                ref = query.with_lockmode('update').one()
            except exc.NoResultFound:
                raise exception.AuditNotFound(audit=audit_id)

            ref.update(values)
        return ref
Пример #6
0
    def destroy_audit(self, audit_id):
        def is_audit_referenced(session, audit_id):
            """Checks whether the audit is referenced by action_plan(s)."""
            query = model_query(models.ActionPlan, session=session)
            query = self._add_action_plans_filters(query,
                                                   {'audit_id': audit_id})
            return query.count() != 0

        session = get_session()
        with session.begin():
            query = model_query(models.Audit, session=session)
            query = add_identity_filter(query, audit_id)

            try:
                audit_ref = query.one()
            except exc.NoResultFound:
                raise exception.AuditNotFound(audit=audit_id)

            if is_audit_referenced(session, audit_ref['id']):
                raise exception.AuditReferenced(audit=audit_id)

            query.delete()
Пример #7
0
    def post(self, audit_ident, body):
        """Trigger the given audit.

        :param audit_ident: UUID or name of an audit.
        """

        LOG.debug("Webhook trigger Audit: %s.", audit_ident)

        context = pecan.request.context
        audit = utils.get_resource('Audit', audit_ident)
        if audit is None:
            raise exception.AuditNotFound(audit=audit_ident)
        if audit.audit_type != objects.audit.AuditType.EVENT.value:
            raise exception.AuditTypeNotAllowed(audit_type=audit.audit_type)
        allowed_state = (
            objects.audit.State.PENDING,
            objects.audit.State.SUCCEEDED,
        )
        if audit.state not in allowed_state:
            raise exception.AuditStateNotAllowed(state=audit.state)

        # trigger decision-engine to run the audit
        self.dc_client.trigger_audit(context, audit.uuid)
Пример #8
0
 def soft_delete_audit(self, audit_id):
     try:
         return self._soft_delete(models.Audit, audit_id)
     except exception.ResourceNotFound:
         raise exception.AuditNotFound(audit=audit_id)