~bcsaller/charms/trusty/cloudfoundry/progressbar

« back to all changes in this revision

Viewing changes to charmgen/generator.py

  • Committer: Benjamin Saller
  • Date: 2014-11-07 21:10:56 UTC
  • mfrom: (145.1.13 trunk)
  • Revision ID: benjamin.saller@canonical.com-20141107211056-zu7scr425xyv042x
merge mega

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
class CharmGenerator(object):
23
23
    author = "CloudFoundry Charm Generator <cs:~cf-charmers/cloudfoundry>"
24
24
 
25
 
    def __init__(self, releases, service_registry, from_charmstore=True, cs_namespace='~cf-charmers'):
 
25
    def __init__(self, releases, service_registry, from_charmstore=True,
 
26
                 cs_namespace='~cf-charmers', admin_ui=True):
26
27
        self.__releases = releases
27
28
        self.release = None
28
29
        self.release_version = None
29
30
        self.service_registry = service_registry
30
31
        self.from_charmstore = from_charmstore
31
32
        self.cs_namespace = cs_namespace
 
33
        self.admin_ui = admin_ui
32
34
 
33
35
    def select_release(self, version):
34
36
        if isinstance(version, basestring):
197
199
                    (service_name, contexts.OrchestratorRelation.name),
198
200
                    ('cloudfoundry', contexts.OrchestratorRelation.name),  # FIXME: don't hard-code service name
199
201
                ))
 
202
                if contexts.CloudFoundryCredentials in job.get('required_data'):
 
203
                    relations.append((
 
204
                        (service_name, contexts.CloudFoundryCredentials.name),
 
205
                        ('cloudfoundry', contexts.CloudFoundryCredentials.name),
 
206
                    ))
200
207
        return relations
201
208
 
202
209
    def load_placement_policy(self, policy, placements_file=None):
271
278
            rel_data.setdefault(lhs, set()).add(rhs)
272
279
        for k, v in rel_data.items():
273
280
            relations.append((k, tuple(v)))
 
281
 
 
282
        if self.admin_ui:
 
283
            namespace = '{}/'.format(self.cs_namespace) if self.cs_namespace else ''
 
284
            services['webadmin'] = {
 
285
                'charm': 'cs:{}trusty/{}'.format(namespace, 'cf-webadmin'),
 
286
                'expose': True,
 
287
            }
 
288
            relations.append(('webadmin:db', ('mysql:db',)))
 
289
            relations.append(('webadmin:uaa', ('uaa:uaa',)))
 
290
            relations.append(('webadmin:uaadb', ('uaa:uaadb',)))
 
291
            relations.append(('webadmin:ccdb', ('cc:ccdb',)))
 
292
            relations.append(('webadmin:nats', ('nats:nats',)))
 
293
            relations.append(('webadmin:orchestrator', ('cloudfoundry:orchestrator',)))
 
294
 
274
295
        if placement:
275
296
            self._do_placement(services, placement)
276
297
        return result
317
338
    from cloudfoundry.services import SERVICES
318
339
    parser = argparse.ArgumentParser()
319
340
    parser.add_argument('release', type=int)
 
341
    parser.add_argument('-A', '--no-admin-ui', dest="admin_ui", action="store_false")
320
342
    parser.add_argument('-d', '--directory', dest="directory")
321
343
    parser.add_argument('-f', '--force', action="store_true")
322
344
    parser.add_argument('-p', '--placement', default="sparse")
338
360
            raise SystemExit("Release already generated: {}".format(
339
361
                options.directory))
340
362
 
341
 
    g = CharmGenerator(RELEASES, SERVICES, from_charmstore=options.charmstore)
 
363
    g = CharmGenerator(RELEASES, SERVICES, from_charmstore=options.charmstore,
 
364
                       admin_ui=options.admin_ui)
342
365
    g.select_release(options.release)
343
366
    placement = g.load_placement_policy(options.placement, options.placements_file)
344
367
    g.generate(options.directory, placement)