On 30 March 2016 at 22:31, Yaniv Kaul <ykaul(a)redhat.com> wrote:
On Wed, Mar 30, 2016 at 5:33 PM, Barak Korren
<bkorren(a)redhat.com> wrote:
> Maybe we can live-generate the file from the lago status output?
Indeed...
<ugly-hack-not-tested-yet>
with open('../robo.conf.in') as f:
robo_conf_in = f.read()
replacements = {
'@HOST0@':
prefix.virt_env.get_vm(_get_prefixed_name('host0').ip(),
'@HOST1@':
prefix.virt_env.get_vm(_get_prefixed_name('host1').ip(),
'@HOST2@':
prefix.virt_env.get_vm(_get_prefixed_name('host2').ip(),
}
for k, v in replacements.items():
robo_conf_out = robo_conf_in.replace(k, v, 1)
with open('../robo.conf', 'w') as out:
out.write(robo_conf_out)
out.close()
</ugly-hack-not-tested-yet>
If you don't expect robo.conf.in to come from an untrusted source,
consider using string.format with a dict rather then looping with
string.replace.
Also consider constructing the dict with a mapping comprehension expression
looping over the hosts (See [1] for tutorial of the syntax, you can use the
{..foo..} syntax if you don't care about Python 2.6 compatibility or the
dict(...) syntax if you do)
[1]:
http://www.bogotobogo.com/python/python_dictionary_comprehension_with_zip...
--
Barak Korren
bkorren(a)redhat.com
RHEV-CI Team