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
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():
73
75
if openstack_upgrade_available('nova-common'):
74
do_openstack_upgrade(CONFIGS)
76
CONFIGS = do_openstack_upgrade()
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
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')
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'))
135
@hooks.hook('pgsql-db-relation-joined')
136
def pgsql_db_joined():
137
if is_relation_made('shared-db'):
139
e = ('Attempting to associate a postgresql database when'
140
' there is already associated a mysql one')
144
relation_set(database=config('database'))
132
147
@hooks.hook('shared-db-relation-changed')
136
151
log('shared-db relation incomplete. Peer not ready?')
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))
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?')
162
CONFIGS.write(NOVA_CONF)
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')]
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()