1
|
|
2
|
|
3
|
from ConfigParser import RawConfigParser
|
4
|
from haizea.core.configfile import HaizeaConfig
|
5
|
from haizea.common.config import OPTTYPE_INT, OPTTYPE_FLOAT, OPTTYPE_STRING, OPTTYPE_BOOLEAN, OPTTYPE_DATETIME, OPTTYPE_TIMEDELTA
|
6
|
import textwrap
|
7
|
|
8
|
HEADER_WIDTH=70
|
9
|
|
10
|
def gen_config_file(config, filename, verbose):
|
11
|
f = open(filename, "w")
|
12
|
|
13
|
for s in HaizeaConfig.sections:
|
14
|
if verbose:
|
15
|
f.write("# " + ("=" * HEADER_WIDTH) + " #\n")
|
16
|
f.write("# " + (" " * HEADER_WIDTH) + " #\n")
|
17
|
f.write("# " + ("[%s]" % s.name).center(HEADER_WIDTH) + " #\n")
|
18
|
for line in textwrap.wrap(s.get_doc(), HEADER_WIDTH):
|
19
|
f.write("# " + line.ljust(HEADER_WIDTH) + " #\n")
|
20
|
f.write("# " + (" " * HEADER_WIDTH) + " #\n")
|
21
|
f.write("# " + ("=" * HEADER_WIDTH) + " #\n")
|
22
|
|
23
|
if verbose:
|
24
|
newline = "\n"
|
25
|
else:
|
26
|
newline = ""
|
27
|
|
28
|
if config.has_section(s.name):
|
29
|
f.write("[%s]\n%s" % (s.name, newline))
|
30
|
else:
|
31
|
if verbose:
|
32
|
f.write("#[%s]\n%s" % (s.name, newline))
|
33
|
|
34
|
for opt in s.options:
|
35
|
if verbose:
|
36
|
f.write("# Option: %s\n" % opt.name)
|
37
|
|
38
|
if opt.required:
|
39
|
required_str = "Yes"
|
40
|
else:
|
41
|
if opt.required_if:
|
42
|
required_str = "Only if "
|
43
|
conds = []
|
44
|
for r in opt.required_if:
|
45
|
sec,o = r[0]
|
46
|
val = r[1]
|
47
|
conds.append("[%s].%s == %s" % (sec,o, val))
|
48
|
required_str += ", ".join(conds)
|
49
|
else:
|
50
|
required_str = "No"
|
51
|
if opt.default:
|
52
|
required_str += " (default is %s)" % opt.default
|
53
|
|
54
|
f.write("# Required: %s\n" % required_str)
|
55
|
|
56
|
if opt.valid:
|
57
|
valid_str = ", ".join(opt.valid)
|
58
|
else:
|
59
|
if opt.type == OPTTYPE_INT:
|
60
|
valid_str = "An integer number"
|
61
|
elif opt.type == OPTTYPE_FLOAT:
|
62
|
valid_str = "A real number"
|
63
|
elif opt.type == OPTTYPE_STRING:
|
64
|
valid_str = "Any string"
|
65
|
elif opt.type == OPTTYPE_BOOLEAN:
|
66
|
valid_str = "True or False"
|
67
|
elif opt.type == OPTTYPE_DATETIME:
|
68
|
valid_str = "An ISO timestamp: i.e., YYYY-MM-DD HH:MM:SS"
|
69
|
elif opt.type == OPTTYPE_TIMEDELTA:
|
70
|
valid_str = "An integer representing a duration in seconds."
|
71
|
|
72
|
f.write("# Valid values: %s\n" % valid_str)
|
73
|
|
74
|
f.write("# \n")
|
75
|
|
76
|
optdoc = opt.get_doc()
|
77
|
optdoc = "# " + optdoc.replace('\n','\n# ')
|
78
|
f.write("%s\n" % optdoc)
|
79
|
|
80
|
if config.has_option(s.name, opt.name):
|
81
|
f.write("%s: %s\n%s" % (opt.name, config.get(s.name, opt.name), newline))
|
82
|
else:
|
83
|
if verbose:
|
84
|
if opt.default:
|
85
|
default = opt.default
|
86
|
else:
|
87
|
default = ""
|
88
|
f.write("#%s: %s\n%s" % (opt.name, default, newline))
|
89
|
|
90
|
f.write("\n")
|
91
|
|
92
|
f.close()
|
93
|
|
94
|
|
95
|
|
96
|
|
97
|
sample_trace = RawConfigParser()
|
98
|
sample_trace.add_section("general")
|
99
|
sample_trace.set("general", "loglevel", "INFO")
|
100
|
sample_trace.set("general", "mode", "simulated")
|
101
|
sample_trace.set("general", "lease-preparation", "unmanaged")
|
102
|
sample_trace.set("general", "persistence-file", "none")
|
103
|
|
104
|
sample_trace.add_section("simulation")
|
105
|
sample_trace.set("simulation", "clock", "simulated")
|
106
|
sample_trace.set("simulation", "starttime", "2006-11-25 13:00:00")
|
107
|
sample_trace.set("simulation", "resources", "4 CPU:100 Memory:1024")
|
108
|
sample_trace.set("simulation", "imagetransfer-bandwidth", "100")
|
109
|
|
110
|
sample_trace.add_section("accounting")
|
111
|
sample_trace.set("accounting", "datafile", "/var/tmp/haizea/results.dat")
|
112
|
sample_trace.set("accounting", "probes", "ar best-effort immediate cpu-utilization")
|
113
|
|
114
|
sample_trace.add_section("scheduling")
|
115
|
sample_trace.set("scheduling", "backfilling", "aggressive")
|
116
|
sample_trace.set("scheduling", "policy-preemption", "ar-preempts-everything")
|
117
|
sample_trace.set("scheduling", "suspension", "all")
|
118
|
sample_trace.set("scheduling", "suspend-rate", "32")
|
119
|
sample_trace.set("scheduling", "resume-rate", "32")
|
120
|
sample_trace.set("scheduling", "migration", "yes")
|
121
|
sample_trace.set("scheduling", "wakeup-interval", "10")
|
122
|
|
123
|
sample_trace.add_section("deploy-imagetransfer")
|
124
|
sample_trace.set("deploy-imagetransfer", "transfer-mechanism", "multicast")
|
125
|
sample_trace.set("deploy-imagetransfer", "avoid-redundant-transfers", "True")
|
126
|
sample_trace.set("deploy-imagetransfer", "diskimage-reuse", "none")
|
127
|
sample_trace.set("deploy-imagetransfer", "diskimage-cache-size", "20480")
|
128
|
|
129
|
sample_trace.add_section("tracefile")
|
130
|
sample_trace.set("tracefile", "tracefile", "/usr/share/haizea/traces/sample.lwf")
|
131
|
|
132
|
sample_trace = HaizeaConfig(sample_trace)
|
133
|
|
134
|
gen_config_file(sample_trace.config, "sample_trace.conf", verbose = True)
|
135
|
gen_config_file(sample_trace.config, "sample_trace_barebones.conf", verbose = False)
|
136
|
|
137
|
|
138
|
|
139
|
|
140
|
sample_opennebula = RawConfigParser()
|
141
|
sample_opennebula.add_section("general")
|
142
|
sample_opennebula.set("general", "loglevel", "INFO")
|
143
|
sample_opennebula.set("general", "mode", "opennebula")
|
144
|
sample_opennebula.set("general", "lease-preparation", "unmanaged")
|
145
|
|
146
|
sample_opennebula.add_section("opennebula")
|
147
|
sample_opennebula.set("opennebula", "host", "localhost")
|
148
|
|
149
|
sample_opennebula.add_section("accounting")
|
150
|
sample_opennebula.set("accounting", "datafile", "/var/tmp/haizea/results.dat")
|
151
|
sample_opennebula.set("accounting", "probes", "ar best-effort immediate cpu-utilization")
|
152
|
|
153
|
sample_opennebula.add_section("scheduling")
|
154
|
sample_opennebula.set("scheduling", "backfilling", "aggressive")
|
155
|
sample_opennebula.set("scheduling", "policy-preemption", "ar-preempts-everything")
|
156
|
sample_opennebula.set("scheduling", "suspension", "all")
|
157
|
sample_opennebula.set("scheduling", "migration", "no")
|
158
|
sample_opennebula.set("scheduling", "suspendresume-exclusion", "global")
|
159
|
sample_opennebula.set("scheduling", "suspend-rate", "32")
|
160
|
sample_opennebula.set("scheduling", "resume-rate", "32")
|
161
|
sample_opennebula.set("scheduling", "migration", "yes")
|
162
|
|
163
|
sample_opennebula = HaizeaConfig(sample_opennebula)
|
164
|
|
165
|
gen_config_file(sample_opennebula.config, "sample_opennebula.conf", verbose = True)
|
166
|
gen_config_file(sample_opennebula.config, "sample_opennebula_barebones.conf", verbose = False)
|