~tribaal/charms/trusty/quantum-gateway-mac-address-fix/trunk

« back to all changes in this revision

Viewing changes to hooks/quantum_hooks.py

  • Committer: James Page
  • Date: 2014-04-16 08:28:29 UTC
  • mfrom: (41.3.49 quantum-gateway)
  • Revision ID: james.page@canonical.com-20140416082829-o7ojjk3oes6ksb69
[yolanda.robla,james-page,hazmat,r=james-page,t=*]

Support for Icehouse on 12.04 and 14.04
Support for Active/Active and SSL RabbitMQ
Support for SSL MySQL
Support for SSL endpoints
Support for PostgreSQL

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
from charmhelpers.core.hookenv import (
6
6
    log, ERROR, WARNING,
7
7
    config,
 
8
    is_relation_made,
8
9
    relation_get,
9
10
    relation_set,
10
11
    relation_ids,
45
46
    reassign_agent_resources,
46
47
    stop_services
47
48
)
48
 
from quantum_contexts import (
49
 
    DB_USER, QUANTUM_DB,
50
 
    NOVA_DB_USER, NOVA_DB,
51
 
)
52
49
 
53
50
hooks = Hooks()
54
51
CONFIGS = register_configs()
76
73
@hooks.hook('config-changed')
77
74
@restart_on_change(restart_map())
78
75
def config_changed():
 
76
    global CONFIGS
79
77
    if openstack_upgrade_available(get_common_package()):
80
 
        do_openstack_upgrade(CONFIGS)
 
78
        CONFIGS = do_openstack_upgrade()
 
79
    # Re-run joined hooks as config might have changed
 
80
    for r_id in relation_ids('shared-db'):
 
81
        db_joined(relation_id=r_id)
 
82
    for r_id in relation_ids('pgsql-db'):
 
83
        pgsql_db_joined(relation_id=r_id)
 
84
    for r_id in relation_ids('amqp'):
 
85
        amqp_joined(relation_id=r_id)
81
86
    if valid_plugin():
82
87
        CONFIGS.write_all()
83
88
        configure_ovs()
88
93
 
89
94
@hooks.hook('upgrade-charm')
90
95
def upgrade_charm():
91
 
    # NOTE(jamespage): Deal with changes to rabbitmq configuration for
92
 
    # common virtual host across services
93
 
    for r_id in relation_ids('amqp'):
94
 
        amqp_joined(relation_id=r_id)
95
96
    install()
96
97
    config_changed()
97
98
 
98
99
 
99
100
@hooks.hook('shared-db-relation-joined')
100
 
def db_joined():
101
 
    relation_set(quantum_username=DB_USER,
102
 
                 quantum_database=QUANTUM_DB,
103
 
                 quantum_hostname=unit_get('private-address'),
104
 
                 nova_username=NOVA_DB_USER,
105
 
                 nova_database=NOVA_DB,
106
 
                 nova_hostname=unit_get('private-address'))
 
101
def db_joined(relation_id=None):
 
102
    if is_relation_made('pgsql-db'):
 
103
        # raise error
 
104
        e = ('Attempting to associate a mysql database when there is already '
 
105
             'associated a postgresql one')
 
106
        log(e, level=ERROR)
 
107
        raise Exception(e)
 
108
    relation_set(username=config('database-user'),
 
109
                 database=config('database'),
 
110
                 hostname=unit_get('private-address'),
 
111
                 relation_id=relation_id)
 
112
 
 
113
 
 
114
@hooks.hook('pgsql-db-relation-joined')
 
115
def pgsql_db_joined(relation_id=None):
 
116
    if is_relation_made('shared-db'):
 
117
        # raise error
 
118
        e = ('Attempting to associate a postgresql database when there'
 
119
             ' is already associated a mysql one')
 
120
        log(e, level=ERROR)
 
121
        raise Exception(e)
 
122
    relation_set(database=config('database'),
 
123
                 relation_id=relation_id)
107
124
 
108
125
 
109
126
@hooks.hook('amqp-relation-joined')
113
130
                 vhost=config('rabbit-vhost'))
114
131
 
115
132
 
 
133
@hooks.hook('amqp-relation-departed')
 
134
@restart_on_change(restart_map())
 
135
def amqp_departed():
 
136
    if 'amqp' not in CONFIGS.complete_contexts():
 
137
        log('amqp relation incomplete. Peer not ready?')
 
138
        return
 
139
    CONFIGS.write_all()
 
140
 
 
141
 
116
142
@hooks.hook('shared-db-relation-changed',
 
143
            'pgsql-db-relation-changed',
117
144
            'amqp-relation-changed',
118
145
            'cluster-relation-changed',
119
146
            'cluster-relation-joined')