~niedbalski/charms/trusty/nova-compute/template-cleanup

« back to all changes in this revision

Viewing changes to hooks/nova_compute_hooks.py

  • Committer: James Page
  • Date: 2014-04-16 08:26:38 UTC
  • mfrom: (51.3.32 nova-compute)
  • Revision ID: james.page@canonical.com-20140416082638-e2cld0wqyfqpamy0
[yolanda.robla,james-page,hazmat,ivoks,coreycb,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
    Hooks,
7
7
    config,
 
8
    is_relation_made,
8
9
    log,
 
10
    ERROR,
9
11
    relation_ids,
10
12
    relation_get,
11
13
    relation_set,
30
32
)
31
33
 
32
34
from charmhelpers.contrib.storage.linux.ceph import ensure_ceph_keyring
33
 
from charmhelpers.contrib.openstack.neutron import neutron_plugin_attribute
34
35
from charmhelpers.payload.execd import execd_preinstall
35
36
 
36
37
from nova_compute_utils import (
70
71
@hooks.hook('config-changed')
71
72
@restart_on_change(restart_map())
72
73
def config_changed():
 
74
    global CONFIGS
73
75
    if openstack_upgrade_available('nova-common'):
74
 
        do_openstack_upgrade(CONFIGS)
 
76
        CONFIGS = do_openstack_upgrade()
75
77
 
76
78
    if migration_enabled() and config('migration-auth-type') == 'ssh':
77
79
        # Check-in with nova-c-c and register new ssh key, if it has just been
101
103
 
102
104
 
103
105
@hooks.hook('amqp-relation-changed')
 
106
@hooks.hook('amqp-relation-departed')
104
107
@restart_on_change(restart_map())
105
108
def amqp_changed():
106
109
    if 'amqp' not in CONFIGS.complete_contexts():
116
119
 
117
120
@hooks.hook('shared-db-relation-joined')
118
121
def db_joined(rid=None):
 
122
    if is_relation_made('pgsql-db'):
 
123
        # error, postgresql is used
 
124
        e = ('Attempting to associate a mysql database when there is already '
 
125
             'associated a postgresql one')
 
126
        log(e, level=ERROR)
 
127
        raise Exception(e)
 
128
 
119
129
    relation_set(relation_id=rid,
120
130
                 nova_database=config('database'),
121
131
                 nova_username=config('database-user'),
122
132
                 nova_hostname=unit_get('private-address'))
123
 
    if (network_manager() in ['quantum', 'neutron']
124
 
            and neutron_plugin() == 'ovs'):
125
 
        # XXX: Renaming relations from quantum_* to neutron_* here.
126
 
        relation_set(relation_id=rid,
127
 
                     neutron_database=config('neutron-database'),
128
 
                     neutron_username=config('neutron-database-user'),
129
 
                     neutron_hostname=unit_get('private-address'))
 
133
 
 
134
 
 
135
@hooks.hook('pgsql-db-relation-joined')
 
136
def pgsql_db_joined():
 
137
    if is_relation_made('shared-db'):
 
138
        # raise error
 
139
        e = ('Attempting to associate a postgresql database when'
 
140
             ' there is already associated a mysql one')
 
141
        log(e, level=ERROR)
 
142
        raise Exception(e)
 
143
 
 
144
    relation_set(database=config('database'))
130
145
 
131
146
 
132
147
@hooks.hook('shared-db-relation-changed')
136
151
        log('shared-db relation incomplete. Peer not ready?')
137
152
        return
138
153
    CONFIGS.write(NOVA_CONF)
139
 
    nm = network_manager()
140
 
    plugin = neutron_plugin()
141
 
    if nm in ['quantum', 'neutron'] and plugin == 'ovs':
142
 
        CONFIGS.write(neutron_plugin_attribute(plugin, 'config', nm))
 
154
 
 
155
 
 
156
@hooks.hook('pgsql-db-relation-changed')
 
157
@restart_on_change(restart_map())
 
158
def postgresql_db_changed():
 
159
    if 'pgsql-db' not in CONFIGS.complete_contexts():
 
160
        log('pgsql-db relation incomplete. Peer not ready?')
 
161
        return
 
162
    CONFIGS.write(NOVA_CONF)
143
163
 
144
164
 
145
165
@hooks.hook('image-service-relation-changed')
177
197
    import_authorized_keys()
178
198
    import_authorized_keys(user='nova', prefix='nova')
179
199
    import_keystone_ca_cert()
180
 
    if (network_manager() in ['quantum', 'neutron']
181
 
            and neutron_plugin() == 'ovs'):
182
 
        # in case we already have a database relation, need to request
183
 
        # access to the additional neutron database.
184
 
        [db_joined(rid) for rid in relation_ids('shared-db')]
185
200
 
186
201
 
187
202
@hooks.hook('ceph-relation-joined')
215
230
@hooks.hook('amqp-relation-broken',
216
231
            'ceph-relation-broken',
217
232
            'image-service-relation-broken',
218
 
            'shared-db-relation-broken')
 
233
            'shared-db-relation-broken',
 
234
            'pgsql-db-relation-broken')
219
235
@restart_on_change(restart_map())
220
236
def relation_broken():
221
237
    CONFIGS.write_all()