static void NotifyDependantPromises(PromiseResult status, EvalContext *ctx, const Promise *pp) { switch (status) { case PROMISE_RESULT_CHANGE: case PROMISE_RESULT_NOOP: MarkPromiseHandleDone(ctx, pp); break; default: /* This promise is not yet done, don't mark it is as such */ break; } }
void ClassAuditLog(const Promise *pp, Attributes attr, char status, char *reason) { switch (status) { case CF_CHG: if (IsPromiseValuableForStatus(pp)) { if (!EDIT_MODEL) { PR_REPAIRED++; VAL_REPAIRED += attr.transaction.value_repaired; #ifdef HAVE_NOVA EnterpriseTrackTotalCompliance(pp, 'r'); #endif } } AddAllClasses(pp->ns, attr.classes.change, attr.classes.persist, attr.classes.timer); MarkPromiseHandleDone(pp); DeleteAllClasses(attr.classes.del_change); if (IsPromiseValuableForLogging(pp)) { NotePromiseCompliance(pp, 0.5, PROMISE_STATE_REPAIRED, reason); SummarizeTransaction(attr, pp, attr.transaction.log_repaired); } break; case CF_WARN: if (IsPromiseValuableForStatus(pp)) { PR_NOTKEPT++; VAL_NOTKEPT += attr.transaction.value_notkept; #ifdef HAVE_NOVA EnterpriseTrackTotalCompliance(pp, 'n'); #endif } if (IsPromiseValuableForLogging(pp)) { NotePromiseCompliance(pp, 1.0, PROMISE_STATE_NOTKEPT, reason); } break; case CF_TIMEX: if (IsPromiseValuableForStatus(pp)) { PR_NOTKEPT++; VAL_NOTKEPT += attr.transaction.value_notkept; #ifdef HAVE_NOVA EnterpriseTrackTotalCompliance(pp, 'n'); #endif } AddAllClasses(pp->ns, attr.classes.timeout, attr.classes.persist, attr.classes.timer); DeleteAllClasses(attr.classes.del_notkept); if (IsPromiseValuableForLogging(pp)) { NotePromiseCompliance(pp, 0.0, PROMISE_STATE_NOTKEPT, reason); SummarizeTransaction(attr, pp, attr.transaction.log_failed); } break; case CF_FAIL: if (IsPromiseValuableForStatus(pp)) { PR_NOTKEPT++; VAL_NOTKEPT += attr.transaction.value_notkept; #ifdef HAVE_NOVA EnterpriseTrackTotalCompliance(pp, 'n'); #endif } AddAllClasses(pp->ns, attr.classes.failure, attr.classes.persist, attr.classes.timer); DeleteAllClasses(attr.classes.del_notkept); if (IsPromiseValuableForLogging(pp)) { NotePromiseCompliance(pp, 0.0, PROMISE_STATE_NOTKEPT, reason); SummarizeTransaction(attr, pp, attr.transaction.log_failed); } break; case CF_DENIED: if (IsPromiseValuableForStatus(pp)) { PR_NOTKEPT++; VAL_NOTKEPT += attr.transaction.value_notkept; #ifdef HAVE_NOVA EnterpriseTrackTotalCompliance(pp, 'n'); #endif } AddAllClasses(pp->ns, attr.classes.denied, attr.classes.persist, attr.classes.timer); DeleteAllClasses(attr.classes.del_notkept); if (IsPromiseValuableForLogging(pp)) { NotePromiseCompliance(pp, 0.0, PROMISE_STATE_NOTKEPT, reason); SummarizeTransaction(attr, pp, attr.transaction.log_failed); } break; case CF_INTERPT: if (IsPromiseValuableForStatus(pp)) { PR_NOTKEPT++; VAL_NOTKEPT += attr.transaction.value_notkept; #ifdef HAVE_NOVA EnterpriseTrackTotalCompliance(pp, 'n'); #endif } AddAllClasses(pp->ns, attr.classes.interrupt, attr.classes.persist, attr.classes.timer); DeleteAllClasses(attr.classes.del_notkept); if (IsPromiseValuableForLogging(pp)) { NotePromiseCompliance(pp, 0.0, PROMISE_STATE_NOTKEPT, reason); SummarizeTransaction(attr, pp, attr.transaction.log_failed); } break; case CF_UNKNOWN: case CF_NOP: AddAllClasses(pp->ns, attr.classes.kept, attr.classes.persist, attr.classes.timer); DeleteAllClasses(attr.classes.del_kept); if (IsPromiseValuableForLogging(pp)) { NotePromiseCompliance(pp, 1.0, PROMISE_STATE_ANY, reason); SummarizeTransaction(attr, pp, attr.transaction.log_kept); } if (IsPromiseValuableForStatus(pp)) { PR_KEPT++; VAL_KEPT += attr.transaction.value_kept; #ifdef HAVE_NOVA EnterpriseTrackTotalCompliance(pp, 'c'); #endif } MarkPromiseHandleDone(pp); break; } }