Charm Interface - Keystone Admin
Go to file
Ghanshyam Mann 0fc663f575 [ussuri][goal] Updates for python 2.7 drop
OpenStack is dropping the py2.7 support in ussuri cycle.

charm repos need few updates on either py2 drop or updating
ussuri python template, tox.ini etc.

Complete discussion & schedule can be found in
- http://lists.openstack.org/pipermail/openstack-discuss/2019-October/010142.html
- https://etherpad.openstack.org/p/drop-python2-support

Ussuri Communtiy-wide goal:
https://governance.openstack.org/tc/goals/selected/ussuri/drop-py27.html

Change-Id: Ic70ddd43786d056c35917caad6518a193d3586dd
2020-03-24 17:30:11 +00:00
.gitignore Enable Keystone v3 2017-10-13 13:19:27 -07:00
.gitreview OpenDev Migration Patch 2019-04-19 19:40:12 +00:00
.zuul.yaml import zuul job settings from project-config 2018-10-04 12:42:12 +00:00
copyright requires keystone-admin:identity-admin 2016-03-08 13:58:25 +01:00
interface.yaml requires keystone-admin:identity-admin 2016-03-08 13:58:25 +01:00
README.md README included 2016-03-16 11:19:20 +01:00
requires.py Enable Keystone v3 2017-10-13 13:19:27 -07:00
test-requirements.txt requires keystone-admin:identity-admin 2016-03-08 13:58:25 +01:00
tox.ini [ussuri][goal] Updates for python 2.7 drop 2020-03-24 17:30:11 +00:00

keystone-admin interface

Use this interface to use keystone credentials in your charm layers.

Purpose

By relating you charm layer (keystone-admin:identity-admin) with keystone service, keystone's API endpoint as well as username, password and region name will be shared.

How to use in your layers

The event handler for identity-admin.connected is called when a relation is established between your charm layer and keystone.

In case there are no unset shared data (ie: service_password), a new event handler will be set: identity-admin.available.

This object provides a method,

credentials()

returing a dict of:

        {u'service_password': u'XXXXXXXX',
         u'service_port': u'5000',
         u'service_hostname': u'10.XX.XX.XXX',
         u'service_username': u'admin',
         u'service_tenant_name': u'Admin',
         u'service_region': u'RegionOne'}

metadata.yaml

requires:
  identity-admin:
    interface: keystone-admin

layer.yaml,

includes: ['layer:basic', 'interface:keystone-admin']

charm layer example,

@when('identity-admin.available')
def setup_openstack_plugin(kst_data):
    creds = kst_data.credentials()
    if data_changed('identity-admin.config', creds):
        settings = {'keystone_vip': creds['service_hostname'],
                    'keystone_port': creds['service_port'],
                    'username': creds['service_username'],
                    'password': creds['service_password'],
                    'tenant_name': creds['service_tenant_name'],
        }

Example deployment

$ juju deploy your-awesome-charm
$ juju deploy keystone --config keystone-creds.yaml
$ juju deploy mysql
$ juju add-relation keystone mysql
$ juju add-relation your-awesome-charm keystone

where keystone-creds.yaml has the necessary configuration settings for your awesome charm to connect to keystone.