From 3a64bec97aebd178901ff71285679e1d8da8ca56 Mon Sep 17 00:00:00 2001 From: Edin Sarajlic Date: Thu, 19 Sep 2019 14:55:31 +1000 Subject: [PATCH] Add function for adding a user to an Rmq cluster --- .../charm_tests/rabbitmq_server/utils.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/zaza/openstack/charm_tests/rabbitmq_server/utils.py b/zaza/openstack/charm_tests/rabbitmq_server/utils.py index 1335dd6..2ccebe3 100644 --- a/zaza/openstack/charm_tests/rabbitmq_server/utils.py +++ b/zaza/openstack/charm_tests/rabbitmq_server/utils.py @@ -38,6 +38,43 @@ def wait_for_cluster(model_name=None, timeout=1200): timeout=timeout) +def add_user(units, username="testuser1", password="changeme"): + """Add a user via the first rmq juju unit, check connection as + the new user against all units. + :param units: list of unit pointers + :param username: amqp user name, default to testuser1 + :param password: amqp user password + :returns: None if successful. Raise on error. + """ + logging.debug('Adding rmq user ({})...'.format(username)) + + # Check that user does not already exist + cmd_user_list = 'rabbitmqctl list_users' + cmd_result = zaza.model.run_on_unit(units[0].entity_id, cmd_user_list) + output = cmd_result['Stdout'].strip() + if username in output: + logging.warning('User ({}) already exists, returning ' + 'gracefully.'.format(username)) + return + + perms = '".*" ".*" ".*"' + cmds = ['rabbitmqctl add_user {} {}'.format(username, password), + 'rabbitmqctl set_permissions {} {}'.format(username, perms)] + + # Add user via first unit + for cmd in cmds: + cmd_result = zaza.model.run_on_unit(units[0].entity_id, cmd) + output = cmd_result['Stdout'].strip() + + # Check connection against the other units + logging.debug('Checking user connect against units...') + for u in units: + connection = connect_amqp_by_unit(u, ssl=False, + username=username, + password=password) + connection.close() + + def get_cluster_status(unit): """Execute rabbitmq cluster status command on a unit and return the full output.