OLD | NEW |
1 # Copyright 2012, 2013 Marco Ceppi, Canonical Ltd. This software is | 1 # Copyright 2012, 2013 Marco Ceppi, Canonical Ltd. This software is |
2 # licensed under the GNU Affero General Public License version 3 (see | 2 # licensed under the GNU Affero General Public License version 3 (see |
3 # the file LICENSE). | 3 # the file LICENSE). |
4 | 4 |
5 import argparse | 5 import argparse |
6 from datetime import ( | 6 from datetime import ( |
7 datetime, | 7 datetime, |
8 ) | 8 ) |
9 import logging | 9 import logging |
10 import pymongo | 10 import pymongo |
| 11 import sys |
11 | 12 |
12 from charmworld.charmstore import ( | 13 from charmworld.charmstore import ( |
13 CharmStore, | 14 CharmStore, |
14 get_store_charm_info, | 15 get_store_charm_info, |
15 ) | 16 ) |
16 from charmworld.jobs.ingest import update_from_store | 17 from charmworld.jobs.ingest import update_from_store |
17 from charmworld.lp import ( | 18 from charmworld.lp import ( |
18 BASKET_SERIES, | 19 BASKET_SERIES, |
19 get_branch_tips, | 20 get_branch_tips, |
20 ) | 21 ) |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 lease_time = int(settings['script_lease_time']) * 60 | 163 lease_time = int(settings['script_lease_time']) * 60 |
163 with lock('ingest-queue', lease_time, db, log): | 164 with lock('ingest-queue', lease_time, db, log): |
164 queue = get_queue(db, CHARM_QUEUE) | 165 queue = get_queue(db, CHARM_QUEUE) |
165 queue_size = queue.size() | 166 queue_size = queue.size() |
166 queue.clear() | 167 queue.clear() |
167 log.info("Dequeued %s charms", queue_size) | 168 log.info("Dequeued %s charms", queue_size) |
168 except LockHeld, error: | 169 except LockHeld, error: |
169 log.warn(str(error)) | 170 log.warn(str(error)) |
170 | 171 |
171 | 172 |
172 # XXX bug=1130732: This function does not appear to be tested. | 173 def configure_parser(parser): |
173 def main(): | |
174 configure_logging() | |
175 parser = argparse.ArgumentParser() | |
176 parser.add_argument( | 174 parser.add_argument( |
177 "--limit", | 175 "--limit", |
178 help="Maximum number of charms to queue.", | 176 help="Maximum number of charms to queue.", |
179 type=int) | 177 type=int) |
180 parser.add_argument( | 178 parser.add_argument( |
181 "--prefix", | 179 "--prefix", |
182 help="Only branches matching this prefix are queued.", | 180 help="Only branches matching this prefix are queued.", |
183 type=str, default=unspecified) | 181 type=str, default=unspecified) |
184 args = parser.parse_args() | 182 |
| 183 |
| 184 def run(args): |
185 log = logging.getLogger("charm.launchpad") | 185 log = logging.getLogger("charm.launchpad") |
186 settings = get_ini() | 186 settings = get_ini() |
187 if args.limit is None: | 187 if args.limit is None: |
188 charm_import_limit = settings.get('charm_import_limit') | 188 charm_import_limit = settings.get('charm_import_limit') |
189 charm_import_limit = ( | 189 charm_import_limit = ( |
190 int(charm_import_limit) if charm_import_limit else None) | 190 int(charm_import_limit) if charm_import_limit else None) |
191 else: | 191 else: |
192 charm_import_limit = args.limit | 192 charm_import_limit = args.limit |
193 connection = getconnection(settings) | 193 connection = getconnection(settings) |
194 db = getdb(connection, settings.get('mongo.database')) | 194 db = getdb(connection, settings.get('mongo.database')) |
195 try: | 195 try: |
196 with lock('ingest-queue', int(settings['script_lease_time']) * 60, | 196 with lock('ingest-queue', int(settings['script_lease_time']) * 60, |
197 db, log): | 197 db, log): |
198 charm_queue = get_queue(db, CHARM_QUEUE) | 198 charm_queue = get_queue(db, CHARM_QUEUE) |
199 basket_queue = get_queue(db, BASKET_QUEUE) | 199 basket_queue = get_queue(db, BASKET_QUEUE) |
200 queue_from_branches(db, CharmStore(), charm_queue, basket_queue, | 200 queue_from_branches(db, CharmStore(), charm_queue, basket_queue, |
201 charm_import_limit, args.prefix) | 201 charm_import_limit, args.prefix) |
202 except LockHeld, error: | 202 except LockHeld, error: |
203 log.warn(str(error)) | 203 log.warn(str(error)) |
204 | 204 |
205 | 205 |
| 206 def main(arglist): |
| 207 configure_logging() |
| 208 parser = argparse.ArgumentParser() |
| 209 configure_parser(parser) |
| 210 args = parser.parse_args(arglist) |
| 211 run(args) |
| 212 |
| 213 |
206 if __name__ == '__main__': | 214 if __name__ == '__main__': |
207 main() | 215 main(sys.argv[1:]) |
OLD | NEW |