Esempio n. 1
0
void TestExpandPromise(const ReportContext *report_context)
{
    Promise pp = { 0 }, *pcopy;

    printf("%d. Testing promise duplication and expansion\n", ++NR);
    pp.promiser = "the originator";
    pp.promisee = (Rval) {
        "the recipient", CF_SCALAR
    };
    pp.classes = "upper classes";
    pp.offset.line = 12;
    pp.audit = NULL;
    pp.conlist = NULL;

    pp.bundletype = "bundle_type";
    pp.bundle = "test_bundle";
    pp.ref = "commentary";
    pp.agentsubtype = NULL;
    pp.done = false;
    pp.next = NULL;
    pp.cache = NULL;
    pp.inode_cache = NULL;
    pp.this_server = NULL;
    pp.donep = &(pp.done);
    pp.conn = NULL;

    ConstraintAppendToPromise(&pp, "lval1", (Rval) {
        xstrdup("rval1"), CF_SCALAR
    }, "lower classes1", false);
    ConstraintAppendToPromise(&pp, "lval2", (Rval) {
        xstrdup("rval2"), CF_SCALAR
    }, "lower classes2", false);

//getuid ConstraintAppendToPromise(&pp,"lval2",,CF_SCALAR,"lower classes2");

    /* Now copy promise and delete */

    pcopy = DeRefCopyPromise("diagnostic-scope", &pp);
    if (VERBOSE || DEBUG)
    {
        printf("-----------------------------------------------------------\n");
        printf("Raw test promises\n\n");
        ShowPromise(report_context, REPORT_OUTPUT_TYPE_TEXT, &pp, 4);
        ShowPromise(report_context, REPORT_OUTPUT_TYPE_HTML, &pp, 4);

        ShowPromise(report_context, REPORT_OUTPUT_TYPE_TEXT, pcopy, 6);
        ShowPromise(report_context, REPORT_OUTPUT_TYPE_HTML, pcopy, 6);
    }
    DeletePromise(pcopy);
}
Esempio n. 2
0
File: expand.c Progetto: tzz/core
PromiseResult CommonEvalPromise(EvalContext *ctx, const Promise *pp, ARG_UNUSED void *param)
{
    assert(param == NULL);

    if (SHOWREPORTS)
    {
        ShowPromise(pp);
    }

    PromiseRecheckAllConstraints(ctx, pp);

    return PROMISE_RESULT_NOOP;
}
Esempio n. 3
0
void ShowPromisesInReport(Bundle *bundles, Body *bodies)
{
    Rval retval;
    char *v;
    char vbuff[CF_BUFSIZE];
    Bundle *bp;
    Rlist *rp;
    SubType *sp;
    Promise *pp;
    Body *bdp;

    if (GetVariable("control_common", "version", &retval) != cf_notype)
    {
        v = (char *) retval.item;
    }
    else
    {
        v = "not specified";
    }

    ReportBanner("Promises");

    snprintf(vbuff, CF_BUFSIZE - 1, "Cfengine Site Policy Summary (version %s)", v);

    CfHtmlHeader(FREPORT_HTML, vbuff, STYLESHEET, WEBDRIVER, BANNER);

    fprintf(FREPORT_HTML, "<p>");

    for (bp = bundles; bp != NULL; bp = bp->next)
    {
        fprintf(FREPORT_HTML, "%s Bundle %s%s%s %s%s%s\n",
                CFH[cfx_bundle][cfb],
                CFH[cfx_blocktype][cfb], bp->type, CFH[cfx_blocktype][cfe],
                CFH[cfx_blockid][cfb], bp->name, CFH[cfx_blockid][cfe]);

        fprintf(FREPORT_HTML, " %s ARGS:%s\n\n", CFH[cfx_line][cfb], CFH[cfx_line][cfe]);

        fprintf(FREPORT_TXT, "Bundle %s in the context of %s\n\n", bp->name, bp->type);
        fprintf(FREPORT_TXT, "   ARGS:\n\n");

        for (rp = bp->args; rp != NULL; rp = rp->next)
        {
            fprintf(FREPORT_HTML, "%s", CFH[cfx_line][cfb]);
            fprintf(FREPORT_HTML, "   scalar arg %s%s%s\n", CFH[cfx_args][cfb], (char *) rp->item, CFH[cfx_args][cfe]);
            fprintf(FREPORT_HTML, "%s", CFH[cfx_line][cfe]);

            fprintf(FREPORT_TXT, "   scalar arg %s\n\n", (char *) rp->item);
        }

        fprintf(FREPORT_TXT, "   {\n");
        fprintf(FREPORT_HTML, "%s", CFH[cfx_promise][cfb]);

        for (sp = bp->subtypes; sp != NULL; sp = sp->next)
        {
            fprintf(FREPORT_HTML, "%s", CFH[cfx_line][cfb]);
            fprintf(FREPORT_HTML, "%s", CFH[cfx_line][cfe]);
            fprintf(FREPORT_TXT, "   TYPE: %s\n\n", sp->name);

            for (pp = sp->promiselist; pp != NULL; pp = pp->next)
            {
                ShowPromise(pp, 6);
            }
        }

        fprintf(FREPORT_TXT, "   }\n");
        fprintf(FREPORT_TXT, "\n\n");
        fprintf(FREPORT_HTML, "%s\n", CFH[cfx_promise][cfe]);
        fprintf(FREPORT_HTML, "%s\n", CFH[cfx_line][cfe]);
        fprintf(FREPORT_HTML, "%s\n", CFH[cfx_bundle][cfe]);
    }

/* Now summarize the remaining bodies */

    fprintf(FREPORT_HTML, "<h1>All Bodies</h1>");
    fprintf(FREPORT_TXT, "\n\nAll Bodies\n\n");

    for (bdp = bodies; bdp != NULL; bdp = bdp->next)
    {
        fprintf(FREPORT_HTML, "%s%s\n", CFH[cfx_line][cfb], CFH[cfx_block][cfb]);
        fprintf(FREPORT_HTML, "%s\n", CFH[cfx_promise][cfb]);

        ShowBody(bdp, 3);

        fprintf(FREPORT_TXT, "\n");
        fprintf(FREPORT_HTML, "%s\n", CFH[cfx_promise][cfe]);
        fprintf(FREPORT_HTML, "%s%s \n ", CFH[cfx_block][cfe], CFH[cfx_line][cfe]);
        fprintf(FREPORT_HTML, "</p>");
    }

    CfHtmlFooter(FREPORT_HTML, FOOTER);
}