1#
2# Time based orchestration
3#
4
5body common control
6{
7      bundlesequence => { "example" };
8      inputs => { "$(sys.libdir)/stdlib.cf" };
9}
10
11###########################################
12
13bundle common orchestrate
14{
15  vars:
16
17      # Must have delay < reset_time
18
19      "reset_time" int => "2";
20      "delay"      int => "1";
21}
22
23###########################################
24
25bundle agent example
26{
27  methods:
28
29      "immediate" usebundle => one,
30      classes => if_repaired_persist("countdown", "$(orchestrate.delay)"),
31      ifvarclass => "!one";
32
33      "delayed"   usebundle => two,
34      ifvarclass => "one.!countdown";
35
36  reports:
37
38    countdown::
39      "Counting down ... $(sys.date)";
40}
41
42###########################################
43
44bundle agent one
45{
46  reports:
47
48      "One = $(this.bundle) at $(sys.date)"
49      classes => if_repaired_persist("$(this.bundle)", "$(orchestrate.reset_time)"),
50      action => if_elapsed("0");
51
52      "Set class $(this.bundle)"
53      ifvarclass => "$(this.bundle)";
54}
55
56##########################################
57
58bundle agent two
59{
60  reports:
61
62      "Two = $(this.bundle) at $(sys.date)"
63      classes => if_repaired_persist("$(this.bundle)", "$(orchestrate.reset_time)"),
64      action => if_elapsed("0");
65
66      "Set class $(this.bundle)"
67      ifvarclass => "$(this.bundle)";
68}
69
70###########################################
71
72body classes if_repaired_persist(x,t)
73{
74      promise_repaired => { "$(x)" };
75      persist_time => "$(t)";
76}
77
78body classes cancel_persist(x)
79{
80      cancel_repaired => { "$(x)" };
81}
82