Open default MySQL port after configuration

Ensure that the default MySQL port, 3306, is opened
as part of the charm configuration, allowing PXC to
be exposed and accessed in environments where firewalling
is enabled (such as AWS or GCE).

Change-Id: I417a70e8faa23248af945de846ba0f3286ffca83
Closes-Bug: 1614205
This commit is contained in:
James Page 2017-03-02 10:09:09 +00:00
parent 55154de2ee
commit 3bd97a245c
3 changed files with 40 additions and 0 deletions

View File

@ -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():

View File

@ -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

View File

@ -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)