diff --git a/hooks/percona_hooks.py b/hooks/percona_hooks.py index 2758a14..25fc81c 100755 --- a/hooks/percona_hooks.py +++ b/hooks/percona_hooks.py @@ -26,6 +26,7 @@ from charmhelpers.core.hookenv import ( network_get_primary_address, charm_name, leader_get, + open_port, ) from charmhelpers.core.host import ( service_restart, @@ -96,6 +97,7 @@ from percona_utils import ( get_cluster_host_ip, client_node_is_ready, leader_node_is_ready, + DEFAULT_MYSQL_PORT, ) @@ -296,6 +298,8 @@ def config_changed(): if is_relation_made('nrpe-external-master'): update_nrpe_config() + open_port(DEFAULT_MYSQL_PORT) + @hooks.hook('cluster-relation-joined') def cluster_joined(): diff --git a/hooks/percona_utils.py b/hooks/percona_utils.py index 3a4f22c..6b9ee07 100644 --- a/hooks/percona_utils.py +++ b/hooks/percona_utils.py @@ -65,6 +65,7 @@ REPO = """deb http://repo.percona.com/apt {release} main deb-src http://repo.percona.com/apt {release} main""" SEEDED_MARKER = "{data_dir}/seeded" HOSTS_FILE = '/etc/hosts' +DEFAULT_MYSQL_PORT = 3306 # NOTE(ajkavanagh) - this is 'required' for the pause/resume code for # maintenance mode, but is currently not populated as the diff --git a/unit_tests/test_percona_hooks.py b/unit_tests/test_percona_hooks.py index 2181750..ed8dd02 100644 --- a/unit_tests/test_percona_hooks.py +++ b/unit_tests/test_percona_hooks.py @@ -206,3 +206,38 @@ class TestNRPERelation(CharmTestCase): hooks.update_nrpe_config() self.nrpe.add_init_service_checks.assert_called_once_with( mock.ANY, ["mysql"], mock.ANY) + + +class TestConfigChanged(CharmTestCase): + + TO_PATCH = [ + 'log', + 'open_port', + 'config', + 'is_unit_paused_set', + 'get_cluster_hosts', + 'is_bootstrapped', + 'is_leader', + 'render_config_restart_on_changed', + 'update_shared_db_rels', + 'install_mysql_ocf', + 'relation_ids', + 'is_relation_made', + 'ha_relation_joined', + 'update_nrpe_config', + 'assert_charm_supports_ipv6', + ] + + def setUp(self): + CharmTestCase.setUp(self, hooks, self.TO_PATCH) + self.config.side_effect = self.test_config.get + + def test_config_changed_open_port(self): + '''Ensure open_port is called with MySQL default port''' + self.is_unit_paused_set.return_value = False + self.is_bootstrapped.return_value = False + self.is_leader.return_value = False + self.relation_ids.return_value = [] + self.is_relation_made.return_value = False + hooks.config_changed() + self.open_port.assert_called_with(3306)