From 5c79af1bd1771a4e02cb0a2372c125f22ae989ae Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 21 Dec 2017 11:37:55 +0000 Subject: [PATCH] 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 --- README.md | 7 --- config.yaml | 2 +- hooks/nova_cc_context.py | 12 ----- hooks/nova_cc_hooks.py | 59 +++--------------------- hooks/nova_cc_utils.py | 10 ++--- hooks/pgsql-neutron-db-relation-broken | 1 - hooks/pgsql-neutron-db-relation-changed | 1 - hooks/pgsql-neutron-db-relation-joined | 1 - hooks/pgsql-nova-db-relation-broken | 1 - hooks/pgsql-nova-db-relation-changed | 1 - hooks/pgsql-nova-db-relation-joined | 1 - metadata.yaml | 2 - unit_tests/test_nova_cc_hooks.py | 60 ------------------------- unit_tests/test_nova_cc_utils.py | 18 -------- 14 files changed, 9 insertions(+), 167 deletions(-) delete mode 120000 hooks/pgsql-neutron-db-relation-broken delete mode 120000 hooks/pgsql-neutron-db-relation-changed delete mode 120000 hooks/pgsql-neutron-db-relation-joined delete mode 120000 hooks/pgsql-nova-db-relation-broken delete mode 120000 hooks/pgsql-nova-db-relation-changed delete mode 120000 hooks/pgsql-nova-db-relation-joined diff --git a/README.md b/README.md index f619b00b..f5e6b722 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/config.yaml b/config.yaml index 80f6bc1c..3e4a4e9d 100644 --- a/config.yaml +++ b/config.yaml @@ -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: diff --git a/hooks/nova_cc_context.py b/hooks/nova_cc_context.py index 53923e4a..4874a9c5 100644 --- a/hooks/nova_cc_context.py +++ b/hooks/nova_cc_context.py @@ -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__() diff --git a/hooks/nova_cc_hooks.py b/hooks/nova_cc_hooks.py index 396fc8d7..e25d8c78 100755 --- a/hooks/nova_cc_hooks.py +++ b/hooks/nova_cc_hooks.py @@ -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')) diff --git a/hooks/nova_cc_utils.py b/hooks/nova_cc_utils.py index c1e5524d..9cee2a5e 100644 --- a/hooks/nova_cc_utils.py +++ b/hooks/nova_cc_utils.py @@ -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 diff --git a/hooks/pgsql-neutron-db-relation-broken b/hooks/pgsql-neutron-db-relation-broken deleted file mode 120000 index f6702415..00000000 --- a/hooks/pgsql-neutron-db-relation-broken +++ /dev/null @@ -1 +0,0 @@ -nova_cc_hooks.py \ No newline at end of file diff --git a/hooks/pgsql-neutron-db-relation-changed b/hooks/pgsql-neutron-db-relation-changed deleted file mode 120000 index f6702415..00000000 --- a/hooks/pgsql-neutron-db-relation-changed +++ /dev/null @@ -1 +0,0 @@ -nova_cc_hooks.py \ No newline at end of file diff --git a/hooks/pgsql-neutron-db-relation-joined b/hooks/pgsql-neutron-db-relation-joined deleted file mode 120000 index f6702415..00000000 --- a/hooks/pgsql-neutron-db-relation-joined +++ /dev/null @@ -1 +0,0 @@ -nova_cc_hooks.py \ No newline at end of file diff --git a/hooks/pgsql-nova-db-relation-broken b/hooks/pgsql-nova-db-relation-broken deleted file mode 120000 index f6702415..00000000 --- a/hooks/pgsql-nova-db-relation-broken +++ /dev/null @@ -1 +0,0 @@ -nova_cc_hooks.py \ No newline at end of file diff --git a/hooks/pgsql-nova-db-relation-changed b/hooks/pgsql-nova-db-relation-changed deleted file mode 120000 index f6702415..00000000 --- a/hooks/pgsql-nova-db-relation-changed +++ /dev/null @@ -1 +0,0 @@ -nova_cc_hooks.py \ No newline at end of file diff --git a/hooks/pgsql-nova-db-relation-joined b/hooks/pgsql-nova-db-relation-joined deleted file mode 120000 index f6702415..00000000 --- a/hooks/pgsql-nova-db-relation-joined +++ /dev/null @@ -1 +0,0 @@ -nova_cc_hooks.py \ No newline at end of file diff --git a/metadata.yaml b/metadata.yaml index f74d4ceb..ab6b2eaa 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -33,8 +33,6 @@ provides: requires: shared-db: interface: mysql-shared - pgsql-nova-db: - interface: pgsql amqp: interface: rabbitmq image-service: diff --git a/unit_tests/test_nova_cc_hooks.py b/unit_tests/test_nova_cc_hooks.py index eb656f16..cd5cc0fb 100644 --- a/unit_tests/test_nova_cc_hooks.py +++ b/unit_tests/test_nova_cc_hooks.py @@ -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') diff --git a/unit_tests/test_nova_cc_utils.py b/unit_tests/test_nova_cc_utils.py index ddcd757e..f2925d0d 100644 --- a/unit_tests/test_nova_cc_utils.py +++ b/unit_tests/test_nova_cc_utils.py @@ -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()