File: cfengine_create_by_default.cf

package info (click to toggle)
cfengine3 3.24.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 37,552 kB
  • sloc: ansic: 163,161; sh: 10,296; python: 2,950; makefile: 1,744; lex: 784; yacc: 633; perl: 211; pascal: 157; xml: 21; sed: 13
file content (129 lines) | stat: -rw-r--r-- 3,979 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
##############################################################################
#
# template_method cfengine should create files by default, unless
# `create => "false"` is specified.
#
##############################################################################

body common control
{
  inputs => { "../../default.cf.sub" };
  bundlesequence  => { default("$(this.promise_filename)") };
  version => "1.0";
}

##############################################################################

bundle agent init
{
  vars:
      "range"
        slist => { expandrange("[1-4]", 1) };

  files:
      "$(G.testfile).test_$(range)"
        delete => tidy;

      "$(G.testfile).test_5"
        create => "true";

      "$(G.testfile).valid_template"
        content => "[%CFEngine BEGIN %]
I have $(const.dollar)(sys.cpus) CPU's!
[%CFEngine END %]
";

      "$(G.testfile).invalid_template"
        content => "[%CFEngine BEGIN %]
I have $(const.dollar)(sys.cpus) CPU's!
[%CFEngine END %)
";
}

##############################################################################

bundle agent test
{
  meta:
      "description" -> { "CFE-3955" }
        string => "template_method cfengine creates promiser by default";

      "test_soft_fail" string => "windows",
        meta => { "ENT-10257" };

  files:
    # File should be created by default and rendered with content
      "$(G.testfile).test_1"
        template_method => "cfengine",
        edit_template => "$(G.testfile).valid_template",
        if => fileexists("$(G.testfile).valid_template");

    # File should not be created due to invalid template
      "$(G.testfile).test_2"
        template_method => "cfengine",
        edit_template => "$(G.testfile).invalid_template",
        if => fileexists("$(G.testfile).invalid_template");

    # File should be created even though template is invalid
      "$(G.testfile).test_3"
        create => "true",
        template_method => "cfengine",
        edit_template => "$(G.testfile).invalid_template",
        if => fileexists("$(G.testfile).invalid_template");

    # File should not be created even though template is valid
      "$(G.testfile).test_4"
        create => "false",
        template_method => "cfengine",
        edit_template => "$(G.testfile).valid_template",
        if => fileexists("$(G.testfile).valid_template");

    # File should be rendered with content, since it already exists
      "$(G.testfile).test_5"
        create => "false",
        template_method => "cfengine",
        edit_template => "$(G.testfile).valid_template",
        if => fileexists("$(G.testfile).valid_template");
}

##############################################################################

bundle agent check
{
  vars:
    # Get lists of successful / failed checks so we can report them
      "checks"
        slist => { expandrange("check_[1-5]", 1) };
      "successful_checks"
        slist => sort(classesmatching("check_[1-5]"), "lex");
      "failed_checks"
        slist => sort(difference("checks", "successful_checks"), "lex");

  classes:
      "check_1"
        expression => regcmp("I have [0-9]+ CPU's!",
                             readfile("$(G.testfile).test_1")),
        if => fileexists("$(G.testfile).test_1");
      "check_2"
        expression => not(fileexists("$(G.testfile).test_2"));
      "check_3"
        expression => fileexists("$(G.testfile).test_3");
      "check_4"
        expression => not(fileexists("$(G.testfile).test_4"));
      "check_5"
        expression => regcmp("I have [0-9]+ CPU's!",
                             readfile("$(G.testfile).test_5")),
        if => fileexists("$(G.testfile).test_5");
      "ok"
        expression => and("check_1", "check_2", "check_3", "check_4",
                          "check_5");

  reports:
    DEBUG::
      "'$(successful_checks)' succeded!";
      "'$(failed_checks)' failed!";
    ok::
      "$(this.promise_filename) Pass";
    !ok::
      "$(this.promise_filename) FAIL";
}