Drop postgresql support

Remove postgresql DB support; This feature is untested as part
of the charms, is not in use and was deprecated as part of
the 1708 charms release.

Change-Id: I866559f519ace3476e0cc85661d99e5f5491227d
This commit is contained in:
James Page 2017-12-21 11:37:55 +00:00
parent 0196625084
commit 5c79af1bd1
14 changed files with 9 additions and 167 deletions

View File

@ -7,13 +7,6 @@ to the nova-cloud-controller. If running in HA mode then the public vip is used
to local. Note: The console access protocol is baked into a guest when it is created, if you change it then
console access for existing guests will stop working
**Special considerations to be deployed using Postgresql**
juju deploy nova-cloud-controller
juju deploy postgresql
juju add-relation "nova-cloud-controller:pgsql-nova-db" "postgresql:db"
juju add-relation "nova-cloud-controller:pgsql-neutron-db" "postgresql:db"
## HA/Clustering
There are two mutually exclusive high availability options: using virtual

View File

@ -167,7 +167,7 @@ options:
.
For this charm the following relations must be made:
.
* shared-db or (pgsql-nova-db, pgsql-neutron-db)
* shared-db
* amqp
* identity-service
console-access-protocol:

View File

@ -264,18 +264,6 @@ class IdentityServiceContext(context.IdentityServiceContext):
return ctxt
class NovaPostgresqlDBContext(context.PostgresqlDBContext):
interfaces = ['pgsql-nova-db']
class NeutronPostgresqlDBContext(context.PostgresqlDBContext):
interfaces = ['pgsql-neutron-db']
def __init__(self):
super(NeutronPostgresqlDBContext,
self).__init__(config('neutron-database'))
class NovaConfigContext(context.WorkerConfigContext):
def __call__(self):
ctxt = super(NovaConfigContext, self).__call__()

View File

@ -35,7 +35,6 @@ from charmhelpers.core.hookenv import (
log,
local_unit,
DEBUG,
ERROR,
WARNING,
relation_get,
relation_ids,
@ -209,16 +208,11 @@ def leader_init_db_if_ready_allowed_units():
be passed to leader_init_db_if_ready(), enabling use of allowed_units
to determine if this nova-cc unit is allowed to perform db init.
"""
rels = ['shared-db', 'pgsql-nova-db']
rels = ['shared-db']
for rname in rels:
for rid in relation_ids(rname):
for unit in related_units(rid):
if rname == 'pgsql-nova-db':
leader_init_db_if_ready(skip_acl_check=True,
skip_cells_restarts=True,
db_rid=rid, unit=unit)
else:
leader_init_db_if_ready(db_rid=rid, unit=unit)
leader_init_db_if_ready(db_rid=rid, unit=unit)
def update_cell_db_if_ready(skip_acl_check=False, db_rid=None, unit=None):
@ -249,15 +243,11 @@ def update_cell_db_if_ready_allowed_units():
be passed to update_cell_db_if_ready(), enabling use of allowed_units
to determine if this nova-cc unit is allowed to perform db updates.
"""
rels = ['shared-db', 'pgsql-nova-db']
rels = ['shared-db']
for rname in rels:
for rid in relation_ids(rname):
for unit in related_units(rid):
if rname == 'pgsql-nova-db':
update_cell_db_if_ready(skip_acl_check=True,
db_rid=rid, unit=unit)
else:
update_cell_db_if_ready(db_rid=rid, unit=unit)
update_cell_db_if_ready(db_rid=rid, unit=unit)
@hooks.hook('install.real')
@ -393,14 +383,6 @@ def amqp_changed():
@hooks.hook('shared-db-relation-joined')
def db_joined(relation_id=None):
if is_relation_made('pgsql-nova-db') or \
is_relation_made('pgsql-neutron-db'):
# error, postgresql is used
e = ('Attempting to associate a mysql database when there is already '
'associated a postgresql one')
log(e, level=ERROR)
raise Exception(e)
cmp_os_release = CompareOpenStackReleases(os_release('nova-common'))
if config('prefer-ipv6'):
sync_db_with_multi_ipv6_addresses(config('database'),
@ -448,18 +430,6 @@ def db_joined(relation_id=None):
relation_id=relation_id)
@hooks.hook('pgsql-nova-db-relation-joined')
def pgsql_nova_db_joined():
if is_relation_made('shared-db'):
# raise error
e = ('Attempting to associate a postgresql database'
' when there is already associated a mysql one')
log(e, level=ERROR)
raise Exception(e)
relation_set(database=config('database'))
@hooks.hook('shared-db-relation-changed')
@service_guard(guard_map(), CONFIGS,
active=config('service-guard'))
@ -477,23 +447,6 @@ def db_changed():
update_cell_db_if_ready()
@hooks.hook('pgsql-nova-db-relation-changed')
@service_guard(guard_map(), CONFIGS,
active=config('service-guard'))
@restart_on_change(restart_map())
def postgresql_nova_db_changed():
if 'pgsql-nova-db' not in CONFIGS.complete_contexts():
log('pgsql-nova-db relation incomplete. Peer not ready?')
return
CONFIGS.write_all()
leader_init_db_if_ready(skip_acl_check=True, skip_cells_restarts=True)
update_cell_db_if_ready(skip_acl_check=True)
for r_id in relation_ids('nova-api'):
nova_api_relation_joined(rid=r_id)
@hooks.hook('image-service-relation-changed')
@service_guard(guard_map(), CONFIGS,
active=config('service-guard'))
@ -922,8 +875,7 @@ def ha_changed():
update_nova_consoleauth_config()
@hooks.hook('shared-db-relation-broken',
'pgsql-nova-db-relation-broken')
@hooks.hook('shared-db-relation-broken')
@service_guard(guard_map(), CONFIGS,
active=config('service-guard'))
def db_departed():
@ -940,7 +892,6 @@ def db_departed():
'identity-service-relation-broken',
'image-service-relation-broken',
'nova-volume-service-relation-broken',
'pgsql-neutron-db-relation-broken',
'quantum-network-service-relation-broken')
@service_guard(guard_map(), CONFIGS,
active=config('service-guard'))

View File

@ -122,8 +122,8 @@ CLUSTER_RES = 'grp_nova_vips'
# The interface is said to be satisfied if anyone of the interfaces in the
# list has a complete context.
REQUIRED_INTERFACES = {
'database': ['shared-db', 'pgsql-db'],
'messaging': ['amqp', 'zeromq-configuration'],
'database': ['shared-db'],
'messaging': ['amqp'],
'identity': ['identity-service'],
'image': ['image-service'],
'compute': ['nova-compute'],
@ -244,7 +244,6 @@ BASE_RESOURCE_MAP = OrderedDict([
context.OSConfigFlagContext(
charm_flag='nova-alchemy-flags',
template_flag='nova_alchemy_flags'),
nova_cc_context.NovaPostgresqlDBContext(),
context.ImageServiceContext(),
context.OSConfigFlagContext(),
context.SubordinateConfigContext(
@ -1166,10 +1165,7 @@ def guard_map():
nova_services.append('nova-conductor')
nova_interfaces = ['identity-service', 'amqp']
if relation_ids('pgsql-nova-db'):
nova_interfaces.append('pgsql-nova-db')
else:
nova_interfaces.append('shared-db')
nova_interfaces.append('shared-db')
for svc in nova_services:
gmap[svc] = nova_interfaces

View File

@ -1 +0,0 @@
nova_cc_hooks.py

View File

@ -1 +0,0 @@
nova_cc_hooks.py

View File

@ -1 +0,0 @@
nova_cc_hooks.py

View File

@ -1 +0,0 @@
nova_cc_hooks.py

View File

@ -1 +0,0 @@
nova_cc_hooks.py

View File

@ -1 +0,0 @@
nova_cc_hooks.py

View File

@ -33,8 +33,6 @@ provides:
requires:
shared-db:
interface: mysql-shared
pgsql-nova-db:
interface: pgsql
amqp:
interface: rabbitmq
image-service:

View File

@ -537,29 +537,6 @@ class NovaCCHooksTests(CharmTestCase):
hooks.identity_joined()
self.assertFalse(self.relation_set.called)
def test_postgresql_nova_db_joined(self):
self.is_relation_made.return_value = False
hooks.pgsql_nova_db_joined()
self.relation_set.assert_called_with(database='nova')
def test_db_joined_with_postgresql(self):
self.is_relation_made.return_value = True
with self.assertRaises(Exception) as context:
hooks.db_joined()
self.assertEqual(context.exception.message,
'Attempting to associate a mysql database when'
' there is already associated a postgresql one')
def test_postgresql_nova_joined_with_db(self):
self.is_relation_made.return_value = True
with self.assertRaises(Exception) as context:
hooks.pgsql_nova_db_joined()
self.assertEqual(context.exception.message,
'Attempting to associate a postgresql database when'
' there is already associated a mysql one')
@patch.object(hooks, 'CONFIGS')
def test_db_changed_missing_relation_data(self, configs):
configs.complete_contexts = MagicMock()
@ -569,27 +546,12 @@ class NovaCCHooksTests(CharmTestCase):
'shared-db relation incomplete. Peer not ready?'
)
@patch.object(hooks, 'CONFIGS')
def test_postgresql_nova_db_changed_missing_relation_data(self, configs):
configs.complete_contexts = MagicMock()
configs.complete_contexts.return_value = []
hooks.postgresql_nova_db_changed()
self.log.assert_called_with(
'pgsql-nova-db relation incomplete. Peer not ready?'
)
def _shared_db_test(self, configs):
configs.complete_contexts = MagicMock()
configs.complete_contexts.return_value = ['shared-db']
configs.write = MagicMock()
hooks.db_changed()
def _postgresql_db_test(self, configs):
configs.complete_contexts = MagicMock()
configs.complete_contexts.return_value = ['pgsql-nova-db']
configs.write = MagicMock()
hooks.postgresql_nova_db_changed()
@patch.object(hooks, 'nova_api_relation_joined')
@patch.object(hooks, 'is_db_initialised')
@patch.object(hooks, 'CONFIGS')
@ -637,28 +599,6 @@ class NovaCCHooksTests(CharmTestCase):
self.assertTrue(configs.write_all.called)
self.assertFalse(self.migrate_nova_databases.called)
@patch.object(utils, 'is_leader')
@patch.object(utils, 'os_release')
@patch.object(hooks, 'quantum_joined')
@patch.object(hooks, 'nova_api_relation_joined')
@patch.object(hooks, 'is_db_initialised')
@patch.object(hooks, 'CONFIGS')
def test_postgresql_db_changed(self, configs, mock_is_db_initialised,
api_joined, quantum_joined,
utils_os_release, utils_is_leader):
self.relation_ids.side_effect = [
[],
['neutron-gateway/0'],
['nova-api/0']]
mock_is_db_initialised.return_value = False
self.os_release.return_value = 'diablo'
utils_os_release.return_value = 'diablo'
utils_is_leader.return_value = True
self._postgresql_db_test(configs)
self.assertTrue(configs.write_all.called)
self.migrate_nova_databases.assert_called_with()
api_joined.assert_called_with(rid='nova-api/0')
@patch.object(utils, 'is_leader')
@patch.object(utils, 'os_release')
@patch.object(hooks, 'quantum_joined')

View File

@ -883,24 +883,6 @@ class NovaCCUtilsTests(CharmTestCase):
utils.guard_map()
)
def test_guard_map_pgsql(self):
self.relation_ids.return_value = ['pgsql:1']
self.os_release.return_value = 'icehouse'
self.assertEqual(
{'nova-api-ec2': ['identity-service', 'amqp', 'pgsql-nova-db'],
'nova-api-os-compute': ['identity-service', 'amqp',
'pgsql-nova-db'],
'nova-cert': ['identity-service', 'amqp', 'pgsql-nova-db'],
'nova-conductor': ['identity-service', 'amqp', 'pgsql-nova-db'],
'nova-objectstore': ['identity-service', 'amqp',
'pgsql-nova-db'],
'nova-placement-api': ['identity-service', 'amqp',
'pgsql-nova-db'],
'nova-scheduler': ['identity-service', 'amqp',
'pgsql-nova-db'], },
utils.guard_map()
)
def test_service_guard_inactive(self):
'''Ensure that if disabled, service guards nothing'''
contexts = MagicMock()