Merge "Switch to new configuration file format"
This commit is contained in:
commit
c0ea9ed191
|
@ -74,13 +74,13 @@ def pause(args):
|
|||
"""Pause the RabbitMQ services.
|
||||
@raises Exception should the service fail to stop.
|
||||
"""
|
||||
pause_unit_helper(ConfigRenderer(CONFIG_FILES))
|
||||
pause_unit_helper(ConfigRenderer(CONFIG_FILES()))
|
||||
|
||||
|
||||
def resume(args):
|
||||
"""Resume the RabbitMQ services.
|
||||
@raises Exception should the service fail to start."""
|
||||
resume_unit_helper(ConfigRenderer(CONFIG_FILES))
|
||||
resume_unit_helper(ConfigRenderer(CONFIG_FILES()))
|
||||
|
||||
|
||||
def cluster_status(args):
|
||||
|
@ -130,7 +130,7 @@ def complete_cluster_series_upgrade(args):
|
|||
if is_leader():
|
||||
# Unset cluster_series_upgrading
|
||||
leader_set(cluster_series_upgrading="")
|
||||
assess_status(ConfigRenderer(CONFIG_FILES))
|
||||
assess_status(ConfigRenderer(CONFIG_FILES()))
|
||||
|
||||
|
||||
def forget_cluster_node(args):
|
||||
|
@ -240,7 +240,7 @@ def restart(args):
|
|||
os_utils.restart_services_action(deferred_only=True)
|
||||
else:
|
||||
os_utils.restart_services_action(services=svcs)
|
||||
assess_status(ConfigRenderer(CONFIG_FILES))
|
||||
assess_status(ConfigRenderer(CONFIG_FILES()))
|
||||
|
||||
|
||||
def _run_deferred_hooks():
|
||||
|
@ -275,7 +275,7 @@ def run_deferred_hooks(args):
|
|||
"""
|
||||
_run_deferred_hooks()
|
||||
os_utils.restart_services_action(deferred_only=True)
|
||||
assess_status(ConfigRenderer(CONFIG_FILES))
|
||||
assess_status(ConfigRenderer(CONFIG_FILES()))
|
||||
|
||||
|
||||
def show_deferred_events(args):
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import copy
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
|
@ -111,7 +112,8 @@ VERSION_PACKAGE = 'rabbitmq-server'
|
|||
RABBITMQ_CTL = '/usr/sbin/rabbitmqctl'
|
||||
COOKIE_PATH = '/var/lib/rabbitmq/.erlang.cookie'
|
||||
ENV_CONF = '/etc/rabbitmq/rabbitmq-env.conf'
|
||||
RABBITMQ_CONF = '/etc/rabbitmq/rabbitmq.config'
|
||||
RABBITMQ_CONFIG = '/etc/rabbitmq/rabbitmq.config'
|
||||
RABBITMQ_CONF = '/etc/rabbitmq/rabbitmq.conf'
|
||||
ENABLED_PLUGINS = '/etc/rabbitmq/enabled_plugins'
|
||||
RABBIT_USER = 'rabbitmq'
|
||||
LIB_PATH = '/var/lib/rabbitmq/'
|
||||
|
@ -130,7 +132,7 @@ _local_named_passwd = '/var/lib/charm/{}/{}.local_passwd'
|
|||
# logically, consider building a hook_context for template rendering so
|
||||
# the charm doesn't concern itself with template specifics etc.
|
||||
|
||||
CONFIG_FILES = OrderedDict([
|
||||
_CONFIG_FILES = OrderedDict([
|
||||
(RABBITMQ_CONF, {
|
||||
'hook_contexts': [
|
||||
RabbitMQSSLContext(),
|
||||
|
@ -138,6 +140,13 @@ CONFIG_FILES = OrderedDict([
|
|||
],
|
||||
'services': ['rabbitmq-server']
|
||||
}),
|
||||
(RABBITMQ_CONFIG, {
|
||||
'hook_contexts': [
|
||||
RabbitMQSSLContext(),
|
||||
RabbitMQClusterContext(),
|
||||
],
|
||||
'services': ['rabbitmq-server']
|
||||
}),
|
||||
(ENV_CONF, {
|
||||
'hook_contexts': [
|
||||
RabbitMQEnvContext(),
|
||||
|
@ -151,6 +160,15 @@ CONFIG_FILES = OrderedDict([
|
|||
])
|
||||
|
||||
|
||||
def CONFIG_FILES():
|
||||
_cfiles = copy.deepcopy(_CONFIG_FILES)
|
||||
if cmp_pkgrevno('rabbitmq-server', '3.7') >= 0:
|
||||
del _cfiles[RABBITMQ_CONFIG]
|
||||
else:
|
||||
del _cfiles[RABBITMQ_CONF]
|
||||
return _cfiles
|
||||
|
||||
|
||||
class ConfigRenderer(object):
|
||||
"""
|
||||
This class is a generic configuration renderer for
|
||||
|
@ -903,7 +921,7 @@ def restart_map():
|
|||
that should be restarted when file changes.
|
||||
'''
|
||||
_map = []
|
||||
for f, ctxt in CONFIG_FILES.items():
|
||||
for f, ctxt in _CONFIG_FILES.items():
|
||||
svcs = []
|
||||
for svc in ctxt['services']:
|
||||
svcs.append(svc)
|
||||
|
|
|
@ -119,7 +119,7 @@ class RabbitMQSSLContext(object):
|
|||
"ssl_key_file": SSL_KEY_FILE,
|
||||
"ssl_client": ssl_client,
|
||||
"ssl_ca_file": "",
|
||||
"ssl_only": ssl_only
|
||||
"ssl_only": ssl_only,
|
||||
}
|
||||
|
||||
if ssl_ca:
|
||||
|
|
|
@ -535,7 +535,7 @@ def ha_joined():
|
|||
level=ERROR)
|
||||
sys.exit(1)
|
||||
|
||||
ctxt = {rabbit.ENV_CONF: rabbit.CONFIG_FILES[rabbit.ENV_CONF]}
|
||||
ctxt = {rabbit.ENV_CONF: rabbit.CONFIG_FILES()[rabbit.ENV_CONF]}
|
||||
rabbit.ConfigRenderer(ctxt).write(rabbit.ENV_CONF)
|
||||
|
||||
relation_settings = {}
|
||||
|
@ -733,8 +733,16 @@ def config_changed(check_deferred_restarts=True):
|
|||
# is not open
|
||||
close_port(55672)
|
||||
|
||||
# NOTE(jamespage): If a newer RMQ version is
|
||||
# installed and the old style configuration file
|
||||
# is still on disk, remove before re-rendering
|
||||
# any new configuration.
|
||||
if (os.path.exists(rabbit.RABBITMQ_CONFIG) and
|
||||
cmp_pkgrevno('rabbitmq-server', '3.7') >= 0):
|
||||
os.remove(rabbit.RABBITMQ_CONFIG)
|
||||
|
||||
rabbit.ConfigRenderer(
|
||||
rabbit.CONFIG_FILES).write_all()
|
||||
rabbit.CONFIG_FILES()).write_all()
|
||||
|
||||
if is_relation_made("ha"):
|
||||
ha_is_active_active = config("ha-vip-only")
|
||||
|
@ -809,7 +817,7 @@ def series_upgrade_prepare():
|
|||
set_unit_upgrading()
|
||||
if not is_unit_paused_set():
|
||||
log("Pausing unit for series upgrade.")
|
||||
rabbit.pause_unit_helper(rabbit.ConfigRenderer(rabbit.CONFIG_FILES))
|
||||
rabbit.pause_unit_helper(rabbit.ConfigRenderer(rabbit.CONFIG_FILES()))
|
||||
if is_leader():
|
||||
if not leader_get('cluster_series_upgrading'):
|
||||
# Inform the entire cluster a series upgrade is occurring.
|
||||
|
@ -822,9 +830,18 @@ def series_upgrade_prepare():
|
|||
@hooks.hook('post-series-upgrade')
|
||||
def series_upgrade_complete():
|
||||
log("Running complete series upgrade hook", "INFO")
|
||||
# NOTE(jamespage): If a newer RMQ version is
|
||||
# installed and the old style configuration file
|
||||
# is still on disk, remove before re-rendering
|
||||
# any new configuration.
|
||||
if (os.path.exists(rabbit.RABBITMQ_CONFIG) and
|
||||
cmp_pkgrevno('rabbitmq-server', '3.7') >= 0):
|
||||
os.remove(rabbit.RABBITMQ_CONFIG)
|
||||
rabbit.ConfigRenderer(
|
||||
rabbit.CONFIG_FILES()).write_all()
|
||||
clear_unit_paused()
|
||||
clear_unit_upgrading()
|
||||
rabbit.resume_unit_helper(rabbit.ConfigRenderer(rabbit.CONFIG_FILES))
|
||||
rabbit.resume_unit_helper(rabbit.ConfigRenderer(rabbit.CONFIG_FILES()))
|
||||
|
||||
|
||||
@hooks.hook('certificates-relation-joined')
|
||||
|
@ -844,7 +861,7 @@ def certs_changed(relation_id=None, unit=None):
|
|||
@rabbit.restart_on_change(rabbit.restart_map())
|
||||
def render_and_restart():
|
||||
rabbit.ConfigRenderer(
|
||||
rabbit.CONFIG_FILES).write_all()
|
||||
rabbit.CONFIG_FILES()).write_all()
|
||||
render_and_restart()
|
||||
update_clients()
|
||||
|
||||
|
@ -872,4 +889,4 @@ if __name__ == '__main__':
|
|||
level=DEBUG)
|
||||
update_clients()
|
||||
|
||||
rabbit.assess_status(rabbit.ConfigRenderer(rabbit.CONFIG_FILES))
|
||||
rabbit.assess_status(rabbit.ConfigRenderer(rabbit.CONFIG_FILES()))
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
collect_statistics_interval = 30000
|
||||
|
||||
{%- if ssl_only %}
|
||||
listeners.tcp = none
|
||||
{%- endif %}
|
||||
|
||||
{%- if connection_backlog %}
|
||||
tcp_listen_options.backlog = {{connection_backlog}}
|
||||
{%- endif %}
|
||||
|
||||
{%- if ssl_port %}
|
||||
listeners.ssl.1 = {{ ssl_port }}
|
||||
{%- endif %}
|
||||
{%- if ssl_mode == "on" or ssl_mode == "only" %}
|
||||
ssl_options.verify = verify_peer
|
||||
{%- if ssl_client %}
|
||||
ssl_options.fail_if_no_peer_cert = true
|
||||
{% else %}
|
||||
ssl_options.fail_if_no_peer_cert = false
|
||||
{%- endif %}
|
||||
{%- if ssl_ca_file %}
|
||||
ssl_options.cacertfile = {{ ssl_ca_file }}
|
||||
{%- endif %}
|
||||
{%- if ssl_cert_file %}
|
||||
ssl_options.certfile = {{ ssl_cert_file }}
|
||||
{%- endif %}
|
||||
{%- if ssl_key_file %}
|
||||
ssl_options.keyfile = {{ ssl_key_file }}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
|
||||
{%- if mnesia_table_loading_retry_timeout %}
|
||||
mnesia_table_loading_retry_timeout = {{ mnesia_table_loading_retry_timeout }}
|
||||
{%- endif %}
|
||||
{%- if mnesia_table_loading_retry_limit %}
|
||||
mnesia_table_loading_retry_limit = {{ mnesia_table_loading_retry_limit }}
|
||||
{%- endif %}
|
||||
{%- if cluster_partition_handling %}
|
||||
cluster_partition_handling = {{ cluster_partition_handling }}
|
||||
{%- endif %}
|
||||
{%- if queue_master_locator %}
|
||||
queue_master_locator = {{ queue_master_locator }}
|
||||
{%- endif %}
|
|
@ -33,7 +33,7 @@ class PauseTestCase(CharmTestCase):
|
|||
|
||||
def setUp(self):
|
||||
super(PauseTestCase, self).setUp(
|
||||
actions, ["pause_unit_helper", "ConfigRenderer"])
|
||||
actions, ["pause_unit_helper", "ConfigRenderer", "CONFIG_FILES"])
|
||||
self.ConfigRenderer.return_value = 'test-config'
|
||||
|
||||
def test_pauses_services(self):
|
||||
|
@ -45,7 +45,7 @@ class ResumeTestCase(CharmTestCase):
|
|||
|
||||
def setUp(self):
|
||||
super(ResumeTestCase, self).setUp(
|
||||
actions, ["resume_unit_helper", "ConfigRenderer"])
|
||||
actions, ["resume_unit_helper", "ConfigRenderer", "CONFIG_FILES"])
|
||||
self.ConfigRenderer.return_value = 'test-config'
|
||||
|
||||
def test_pauses_services(self):
|
||||
|
|
|
@ -915,15 +915,18 @@ class UtilsTests(CharmTestCase):
|
|||
"rabbit@juju-devel3-machine-42",
|
||||
rabbit_utils.check_cluster_memberships())
|
||||
|
||||
@mock.patch.object(rabbit_utils, 'cmp_pkgrevno')
|
||||
@mock.patch('rabbitmq_context.psutil.NUM_CPUS', 2)
|
||||
@mock.patch('rabbitmq_context.relation_ids')
|
||||
@mock.patch('rabbitmq_context.config')
|
||||
def test_render_rabbitmq_env(self, mock_config, mock_relation_ids):
|
||||
def test_render_rabbitmq_env(self, mock_config, mock_relation_ids,
|
||||
mock_cmp_pkgrevno):
|
||||
mock_cmp_pkgrevno.return_value = 0
|
||||
mock_relation_ids.return_value = []
|
||||
mock_config.return_value = 3
|
||||
with mock.patch('rabbit_utils.render') as mock_render:
|
||||
ctxt = {rabbit_utils.ENV_CONF:
|
||||
rabbit_utils.CONFIG_FILES[rabbit_utils.ENV_CONF]}
|
||||
rabbit_utils.CONFIG_FILES()[rabbit_utils.ENV_CONF]}
|
||||
rabbit_utils.ConfigRenderer(ctxt).write(
|
||||
rabbit_utils.ENV_CONF)
|
||||
|
||||
|
|
|
@ -47,7 +47,6 @@ class TestRabbitMQSSLContext(unittest.TestCase):
|
|||
@mock.patch("rabbitmq_context.ssl_utils.get_ssl_mode")
|
||||
def test_context_ssl_on(self, get_ssl_mode, reconfig_ssl, close_port,
|
||||
config, gr, pw, exists, chown, chmod, open_port):
|
||||
|
||||
exists.return_value = True
|
||||
get_ssl_mode.return_value = ("on", "on")
|
||||
|
||||
|
|
Loading…
Reference in New Issue