remove unused options of cmdln tools
[meego-infrastructure-tools:boss-participant-image-dispatcher.git] / boss-image-dispatcher.py
1 #!/usr/bin/python
2
3 from __future__ import with_statement
4 import os, io, sys
5 from optparse import OptionParser
6 import ConfigParser
7 from string import Template
8 import re
9
10 from boss_participant_image_dispatcher import submit, get_ks_list
11
12 AMQP_SET = {
13     'host': '127.0.0.1:5672',
14     'vhost': 'boss',
15     'user': 'boss',
16     'pwd': 'boss',
17 }
18
19 VERBOSE = False
20 BOSS_CFG_PATH = '/etc/boss'
21
22 P_NAME = 'image_dispatcher' # component name in boss
23
24 def _Vprint(d):
25     """ Verbose print routine """
26     if VERBOSE:
27         from pprint import pprint
28         if isinstance(d, str):
29             print d
30         else:
31             pprint(d)
32
33 if __name__ == '__main__':
34     parser = OptionParser()
35     parser.add_option("-c", "--config", dest="config",
36                       help="specify configuration file")
37     parser.add_option("-b", "--buildid",
38                       help="BuildID string, like 1.1.80.13.20110105.1")
39     parser.add_option("-k", "--kslist",
40                       help="specify the name(s) of ks files directly, multiple ks names separated by comma")
41     parser.add_option("-t", "--mailto",
42                       help="specify the receipt email addresses of notification, multiple emails separated by comma")
43     parser.add_option("-v", "--verbose", action="store_true",
44                       help="print out verbose message for debugging")
45
46     (opts, args) = parser.parse_args()
47
48     if opts.config:
49         cfg_fp = opts.config
50     else:
51         cfg_fp = os.path.join(BOSS_CFG_PATH, 'boss-participant-image-dispatcher.conf')
52         if not os.path.isfile(cfg_fp):
53             print 'Cannot find default config file: %s, abort' % cfg_fp
54             sys.exit(1)
55
56     with open(cfg_fp) as f:
57         config = ConfigParser.ConfigParser()
58         config.readfp(f)
59
60     AMQP_SET['host'] = config.get('boss', 'amqp_host')
61     AMQP_SET['vhost'] = config.get('boss', 'amqp_vhost')
62     AMQP_SET['pwd'] = config.get('boss', 'amqp_pwd')
63     AMQP_SET['user'] = config.get('boss', 'amqp_user')
64
65     if opts.verbose:
66         VERBOSE = True
67
68     if not opts.buildid:
69         print 'Please specify the buildid of current images'
70         sys.exit(1)
71
72     if opts.mailto:
73         mailto = opts.mailto
74     else:
75         mailto = config.get(P_NAME, 'mailto')
76
77     mailto = [s.strip() for s in mailto.split(',')]
78
79     if opts.kslist:
80         name_list = [s.strip() for s in opts.kslist.split(',')]
81     else:
82         name_list = None
83
84     conf_baseurl = config.get(P_NAME, 'conf_baseurl')
85     images_path = config.get(P_NAME, 'images_path')
86
87     ks_list = get_ks_list(conf_baseurl, opts.buildid, names=name_list)
88
89     if ks_list:
90         _Vprint(ks_list)
91         process, fields = submit(AMQP_SET, ks_list, opts.buildid, mailto, images_path, url_check=True)
92         _Vprint(process)
93         _Vprint(fields)
94
95         print 'The following ks files was used to launch image tasks:'
96         for ks in ks_list:
97             print '\t', ks
98     else:
99         print 'No valid ks files found!'