void PolicyResolve(EvalContext *ctx, const Policy *policy, GenericAgentConfig *config) { for (size_t i = 0; i < SeqLength(policy->bundles); i++) { Bundle *bundle = SeqAt(policy->bundles, i); if (strcmp("common", bundle->type) == 0) { EvalContextStackPushBundleFrame(ctx, bundle, NULL, false); BundleResolve(ctx, bundle); EvalContextStackPopFrame(ctx); } } for (size_t i = 0; i < SeqLength(policy->bundles); i++) { Bundle *bundle = SeqAt(policy->bundles, i); if (strcmp("common", bundle->type) != 0) { EvalContextStackPushBundleFrame(ctx, bundle, NULL, false); BundleResolve(ctx, bundle); EvalContextStackPopFrame(ctx); } } for (size_t i = 0; i < SeqLength(policy->bodies); i++) { Body *bdp = SeqAt(policy->bodies, i); if (strcmp(bdp->name, "control") == 0) { ResolveControlBody(ctx, config, bdp); } } }
void PolicyResolve(EvalContext *ctx, const Policy *policy, GenericAgentConfig *config) { /* PRE-EVAL: common bundles: classes,vars. */ for (size_t i = 0; i < SeqLength(policy->bundles); i++) { Bundle *bundle = SeqAt(policy->bundles, i); if (strcmp("common", bundle->type) == 0) { EvalContextStackPushBundleFrame(ctx, bundle, NULL, false); BundleResolve(ctx, bundle); /* PRE-EVAL classes,vars */ EvalContextStackPopFrame(ctx); } } /* * HACK: yet another pre-eval pass here, WHY? TODO remove, but test fails: * 00_basics/03_bodies/dynamic_inputs_findfiles.cf */ #if 1 /* PRE-EVAL: non-common bundles: only vars. */ for (size_t i = 0; i < SeqLength(policy->bundles); i++) { Bundle *bundle = SeqAt(policy->bundles, i); if (strcmp("common", bundle->type) != 0) { EvalContextStackPushBundleFrame(ctx, bundle, NULL, false); BundleResolve(ctx, bundle); /* PRE-EVAL vars */ EvalContextStackPopFrame(ctx); } } #endif for (size_t i = 0; i < SeqLength(policy->bodies); i++) { Body *bdp = SeqAt(policy->bodies, i); if (strcmp(bdp->name, "control") == 0) { ResolveControlBody(ctx, config, bdp); } /* Collect all package managers data from policy as we don't know yet * which ones we will use. */ else if (strcmp(bdp->type, "package_module") == 0) { ResolvePackageManagerBody(ctx, bdp); } } }