summaryrefslogtreecommitdiffstats
path: root/distribution/virt/import/get_guest_info.py
blob: d171b1b91695ed611fd51fdd3a1d8ce8ac2e952b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/python

import os
import sys
import xmlrpclib
import xml.dom.minidom
import time

xml_tries = 1
interval = 300
proxy = xmlrpclib.ServerProxy('http://%s:8000/RPC2' % os.environ['LAB_CONTROLLER'])
while xml_tries < 5:
	try: 
		recipe_xml = proxy.get_my_recipe(dict(recipe_id=os.environ['RECIPEID']))
		break
	except:
		sys.stderr.write("Couldn't get guestinfo from %s . sleeping %i secs" % (os.environ['LAB_CONTROLLER'] , interval))
		time.sleep(interval)
		xml_tries += 1

if xml_tries == 5:
	sys.stderr.write("Can't get guestinfo from %s" % os.environ['LAB_CONTROLLER'])
	sys.exit(1)


doc = xml.dom.minidom.parseString(recipe_xml)

if len(sys.argv) >= 2 and sys.argv[1] == '--kvm-num': # this is kind of a hack...
    num = len(doc.getElementsByTagName('guestrecipe'))
    kvm_num = len([guestrecipe for guestrecipe in doc.getElementsByTagName('guestrecipe')
            if '--kvm' in guestrecipe.getAttribute('guestargs')])
    if kvm_num and kvm_num < num:
        sys.exit(2)
    print kvm_num
    sys.exit(0)

for guestrecipe in doc.getElementsByTagName('guestrecipe'):
    print ' '.join([
        guestrecipe.getAttribute('id') or 'RECIPEIDMISSING',
        guestrecipe.getAttribute('guestname')
            or 'guestrecipe%s' % guestrecipe.getAttribute('id'),
        guestrecipe.getAttribute('mac_address') or 'RANDOM',
        guestrecipe.getAttribute('guestargs'),
    ])