fix image name as it actually is 5G large
[tests.git] / system / config_onelab_vserver.py
1 import utils
2 import os.path
3
4 # the pool of IP addresses available
5 # from 01 to 09
6 available = [ ( 'vplc%02d.inria.fr'%i, '138.96.250.13%d'%i, 'ab:cd:ef:00:00:%02d'%i) for i in range(1,10) ]
7
8 # let's be flexible
9 def locate (user_provided):
10     global available
11     for (hostname,ip,mac) in available:
12         if hostname.find(user_provided) >=0 or ip.find(user_provided) >=0:
13             return (hostname,ip)
14
15 def config (plcs,options):
16     global available
17     available.reverse()
18     if len(options.ips) != 0:
19         options.ips.reverse()
20     plc_counter=0
21     for plc in plcs:
22         if len(options.ips) != 0:
23             utils.header('ips=%r'%options.ips)
24             user_provided = options.ips.pop()
25             utils.header('vserver IP assignment : using user-provided %s'%user_provided)
26             (hostname,ip) = locate(user_provided)
27         else:
28             ### locating the next available hostname (using ping)
29             while True:
30                 try:
31                     (hostname,ip,mac)=available.pop()
32                     utils.header('vserver IP assignment : scanning IP %s'%ip)
33                     if not utils.check_ping(hostname):
34                         utils.header('IP %s is OK'%ip)
35                         break
36                 except:
37                     raise Exception('Cannot find an available IP for %s - exiting'%plc['name'])
38         # compute a helpful vserver name
39         plc_counter += 1
40         simplehostname=hostname.split('.')[0]
41         vservername = os.path.basename(options.myplc_url)
42         vservername = vservername.replace(".rpm","")
43         vservername = vservername.replace("myplc","vtest")
44         if len(plcs) == 1 :
45             vservername = "%s-%s" % (vservername,simplehostname)
46         else:
47             vservername = "%s-%d-%s" % (vservername,plc_counter,simplehostname)
48         plc['vservername']=vservername
49         plc['vserverip']=ip
50         plc['name'] = "%s_%s"%(plc['name'],simplehostname)
51         utils.header("Attaching plc %s to vserver %s (%s)"%\
52                          (plc['name'],plc['vservername'],plc['vserverip']))
53         for key in [ 'PLC_DB_HOST',
54                      'PLC_API_HOST',
55                      'PLC_WWW_HOST',
56                      'PLC_BOOT_HOST',
57                      ]:
58             plc[key] = hostname
59
60     return plcs