← Back to team overview

cf-charmers team mailing list archive

Re: [Merge] lp:~johnsca/charms/trusty/cloudfoundry/webadmin-bundle into lp:~cf-charmers/charms/trusty/cloudfoundry/trunk

 


Diff comments:

> === modified file 'README.rst'
> --- README.rst	2014-10-16 15:01:08 +0000
> +++ README.rst	2014-11-03 22:00:38 +0000
> @@ -61,6 +61,27 @@
>      cf push
>  
>  
> +Admin UI
> +--------
> +
> +By default (unless the `admin_ui` option is set to false), the charm for the
> +Administration UI project from cloudfoundry-incubator will be deployed
> +alongside Cloud Foundry.  For security reasons, it will not be exposed
> +by default.  To expose the service and open it in a web browser, you can
> +use the following:
> +
> +    juju expose webadmin
> +    . helpers.sh
> +    cfadminui  # opens browser to Admin UI URL

I will fix this post-merge, because the show_reconciler code isn't in cfdeploy in trunk (for obvious reasons) and I'd like to minimize conflicts.  The helper currently is just an "open web page" anyway.

> +
> +You can then use the CF admin user credentials to log in.
> +
> +Note that, currently, once the Admin UI is deployed, you must manually remove
> +it if you change the value of the `admin_ui` option, but that changing the
> +option is required to prevent the Admin UI from potentially being re-deployed
> +after being manually removed.
> +
> +
>  Development
>  -----------
>  
> 
> === modified file 'charmgen/generator.py'
> --- charmgen/generator.py	2014-10-03 15:47:17 +0000
> +++ charmgen/generator.py	2014-11-03 22:00:38 +0000
> @@ -22,13 +22,15 @@
>  class CharmGenerator(object):
>      author = "CloudFoundry Charm Generator <cs:~cf-charmers/cloudfoundry>"
>  
> -    def __init__(self, releases, service_registry, from_charmstore=True, cs_namespace='~cf-charmers'):
> +    def __init__(self, releases, service_registry, from_charmstore=True,
> +                 cs_namespace='~cf-charmers', admin_ui=True):
>          self.__releases = releases
>          self.release = None
>          self.release_version = None
>          self.service_registry = service_registry
>          self.from_charmstore = from_charmstore
>          self.cs_namespace = cs_namespace
> +        self.admin_ui = admin_ui
>  
>      def select_release(self, version):
>          if isinstance(version, basestring):
> @@ -266,6 +268,19 @@
>              rel_data.setdefault(lhs, set()).add(rhs)
>          for k, v in rel_data.items():
>              relations.append((k, tuple(v)))
> +
> +        if self.admin_ui:
> +            namespace = '{}/'.format(self.cs_namespace) if self.cs_namespace else ''
> +            services['webadmin'] = {
> +                'charm': 'cs:{}trusty/{}'.format(namespace, 'cf-webadmin'),
> +            }
> +            relations.append(('webadmin:db', ('mysql:db',)))
> +            relations.append(('webadmin:uaa', ('uaa:uaa',)))
> +            relations.append(('webadmin:uaadb', ('uaa:uaadb',)))
> +            relations.append(('webadmin:ccdb', ('cc:ccdb',)))
> +            relations.append(('webadmin:nats', ('nats:nats',)))
> +            #relations.append(('webadmin:orchestrator', ('cloudfoundry:orchestrator',)))
> +
>          if placement:
>              self._do_placement(services, placement)
>          return result
> @@ -311,6 +326,7 @@
>      from cloudfoundry.services import SERVICES
>      parser = argparse.ArgumentParser()
>      parser.add_argument('release', type=int)
> +    parser.add_argument('-a', '--admin-ui', dest="admin_ui", action="store_true")
>      parser.add_argument('-d', '--directory', dest="directory")
>      parser.add_argument('-f', '--force', action="store_true")
>      parser.add_argument('-p', '--placement', default="sparse")
> @@ -332,7 +348,8 @@
>              raise SystemExit("Release already generated: {}".format(
>                  options.directory))
>  
> -    g = CharmGenerator(RELEASES, SERVICES, from_charmstore=options.charmstore)
> +    g = CharmGenerator(RELEASES, SERVICES, from_charmstore=options.charmstore,
> +                       admin_ui=options.admin_ui)
>      g.select_release(options.release)
>      placement = g.load_placement_policy(options.placement, options.placements_file)
>      g.generate(options.directory, placement)
> 
> === modified file 'config.yaml'
> --- config.yaml	2014-09-30 21:15:05 +0000
> +++ config.yaml	2014-11-03 22:00:38 +0000
> @@ -62,3 +62,10 @@
>              components on demand, instead of installing from the charm store.
>              This option is intended only for testing and development purposes,
>              and is not recommended for normal usage.
> +    admin_ui:
> +        type: boolean
> +        default: true
> +        description: >
> +            Deploy and configure the Administration UI from the Cloud Foundry
> +            Incubator.  The Admin UI service will be called "webadmin" and
> +            must be manually exposed.  See the README for more info.
> 
> === modified file 'helpers.sh'
> --- helpers.sh	2014-10-06 06:48:12 +0000
> +++ helpers.sh	2014-11-03 22:00:38 +0000
> @@ -1,3 +1,13 @@
> +function cfadminurl() {
> +    echo "http://$(juju status webadmin | grep public-address | awk '{print $NF}'):8070"
> +}
> +
> +
> +function cfadminui() {
> +    python -m webbrowser -t "$(cfadminurl)"
> +}
> +
> +
>  function cflogin() {
>      ENDPOINT=`juju status haproxy/0 |grep public-address|cut -f 2 -d : `
>      IP=`dig +short $ENDPOINT`
> 
> === modified file 'hooks/common.py'
> --- hooks/common.py	2014-10-14 07:05:52 +0000
> +++ hooks/common.py	2014-11-03 22:00:38 +0000
> @@ -58,9 +58,11 @@
>      build_dir = path(hookenv.charm_dir()) / 'build' / version
>      from_charmstore = not config['generate_dependents']
>      cs_namespace = config['charmstore_namespace']
> +    admin_ui = config['admin_ui']
>      if os.path.exists(build_dir):
>          shutil.rmtree(build_dir)
> -    generator = CharmGenerator(RELEASES, SERVICES, from_charmstore, cs_namespace)
> +    generator = CharmGenerator(RELEASES, SERVICES,
> +                               from_charmstore, cs_namespace, admin_ui)
>      generator.select_release(version)
>      placement = generator.load_placement_policy(config['placement'])
>      generator.generate(build_dir, placement)
> 


-- 
https://code.launchpad.net/~johnsca/charms/trusty/cloudfoundry/webadmin-bundle/+merge/240509
Your team Cloud Foundry Charmers is subscribed to branch lp:~cf-charmers/charms/trusty/cloudfoundry/trunk.


References