-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmagnum_handlers.py
62 lines (46 loc) · 1.75 KB
/
magnum_handlers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# Copyright 2018 Cloudbase Solutions
from __future__ import absolute_import
import charms.reactive as reactive
import charmhelpers.core.hookenv as hookenv
import charms_openstack.charm as charm
import charm.openstack.magnum.magnum as magnum # noqa
# Use the charms.openstack defaults for common states and hooks
charm.use_defaults(
'charm.installed',
'amqp.connected',
'shared-db.connected',
'identity-service.available', # enables SSL support
'config.changed',
'update-status')
@reactive.when('shared-db.available')
@reactive.when('identity-service.available')
@reactive.when('amqp.available')
@reactive.when('trustee-credentials.available')
def render_stuff(*args):
hookenv.log("about to call the render_configs with {}".format(args))
with charm.provide_charm_instance() as magnum_charm:
magnum_charm.render_with_interfaces(
charm.optional_interfaces(args))
magnum_charm.assess_status()
reactive.set_state('config.complete')
@reactive.when('trustee-credentials.connected')
def request_domain(interface):
hookenv.log("requesting trustee domain credentials")
config = hookenv.config()
domain = config.get("trustee-domain", "magnum")
domain_admin = config.get("trustee-admin", "magnum_domain_admin")
interface.request_domain(domain, domain_admin)
@reactive.when('identity-service.connected')
def setup_endpoint(keystone):
magnum.setup_endpoint(keystone)
magnum.assess_status()
@reactive.when('config.complete')
@reactive.when_not('db.synced')
def run_db_migration():
magnum.db_sync()
magnum.restart_all()
reactive.set_state('db.synced')
magnum.assess_status()
@reactive.when('ha.connected')
def cluster_connected(hacluster):
magnum.configure_ha_resources(hacluster)