Project

General

Profile

root / branches / 1.1 / etc / gen_sample_config.py @ 845

1
#!/usr/bin/python
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
# Sample configuration file for simulation w/ tracefile
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
# Sample configuration file for OpenNebula
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)