5
from Cheetah.Template import Template
9
conf = yaml.load(stream)
13
def get_cfg_option_bool(yobj, key, default=False):
14
if not yobj.has_key(key): return default
16
if yobj[key] in [ True, '1', 'on', 'yes', 'true']:
20
def get_cfg_option_str(yobj, key, default=None):
21
if not yobj.has_key(key): return default
24
# merge values from src into cand.
25
# if src has a key, cand will not override
26
def mergedict(src,cand):
27
if isinstance(src,dict) and isinstance(cand,dict):
28
for k,v in cand.iteritems():
32
src[k] = mergedict(src[k],v)
35
def write_file(file,content,mode=0644):
37
os.makedirs(os.path.dirname(file))
39
if e.errno != errno.EEXIST:
47
# get keyid from keyserver
48
def getkeybyid(keyid,keyserver):
52
[ -n "$k" ] || exit 1;
53
armour=$(gpg --list-keys --armour "${k}")
54
if [ -z "${armour}" ]; then
55
gpg --keyserver ${ks} --recv $k >/dev/null &&
56
armour=$(gpg --export --armour "${k}") &&
57
gpg --batch --yes --delete-keys "${k}"
59
[ -n "${armour}" ] && echo "${armour}"
61
args=['sh', '-c', shcmd, "export-gpg-keyid", keyid, keyserver]
64
def subp(args, input=None):
67
s_in = subprocess.PIPE
68
sp = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=s_in)
69
out,err = sp.communicate(input)
70
if sp.returncode is not 0:
71
raise subprocess.CalledProcessError(sp.returncode,args)
74
def render_to_file(template, outfile, searchList):
75
t = Template(file='/etc/cloud/templates/%s.tmpl' % template, searchList=[searchList])
76
f = open(outfile, 'w')