diff --git a/salt/modules/rabbitmq.py b/salt/modules/rabbitmq.py index f09e7d58bc..cf2dd65e6c 100644 --- a/salt/modules/rabbitmq.py +++ b/salt/modules/rabbitmq.py @@ -7,7 +7,6 @@ data. # Import salt libs import salt.utils -from salt.utils import decorators # Import python libs import logging @@ -38,6 +37,23 @@ def _format_response(response, msg): } +def _get_rabbitmq_plugin(): + """Returns the rabbitmq-plugin command path if we're running an OS that + doesn't put it in the standard /usr/bin or /usr/local/bin + This works by taking the rabbitmq-server version and looking for where it + seems to be hidden in /usr/lib. + """ + rabbitmq = salt.utils.which('rabbitmq-plugins') + + if rabbitmq is None: + version = __salt__['pkg.version']('rabbitmq-server').split('-')[0] + + path = '/usr/lib/rabbitmq/lib/rabbitmq_server-{0}/sbin/rabbitmq-plugins' + rabbitmq = path.format(version) + + return rabbitmq + + def list_users(runas=None): ''' Return a list of users based off of rabbitmqctl user_list. @@ -548,7 +564,6 @@ def policy_exists(vhost, name, runas=None): return bool(vhost in policies and name in policies[vhost]) -@decorators.which('rabbitmq-plugins') def plugin_is_enabled(name, runas=None): ''' Return whether the plugin is enabled. @@ -559,11 +574,12 @@ def plugin_is_enabled(name, runas=None): salt '*' rabbitmq.plugin_is_enabled foo ''' - ret = __salt__['cmd.run']('rabbitmq-plugins list -m -e', runas=runas) + rabbitmq = _get_rabbitmq_plugin() + cmd = '{0} list -m -e'.format(rabbitmq) + ret = __salt__['cmd.run'](cmd, runas=runas) return bool(name in ret) -@decorators.which('rabbitmq-plugins') def enable_plugin(name, runas=None): ''' Enable a RabbitMQ plugin via the rabbitmq-plugins command. @@ -574,13 +590,14 @@ def enable_plugin(name, runas=None): salt '*' rabbitmq.enable_plugin foo ''' - ret = __salt__['cmd.run_all']( - 'rabbitmq-plugins enable {0}'.format(name), - runas=runas) + rabbitmq = _get_rabbitmq_plugin() + cmd = '{0} enable {1}'.format(rabbitmq, name) + + ret = __salt__['cmd.run_all'](cmd, runas=runas) + return _format_response(ret, 'Enabled') -@decorators.which('rabbitmq-plugins') def disable_plugin(name, runas=None): ''' Disable a RabbitMQ plugin via the rabbitmq-plugins command. @@ -592,7 +609,9 @@ def disable_plugin(name, runas=None): salt '*' rabbitmq.disable_plugin foo ''' - ret = __salt__['cmd.run_all']( - 'rabbitmq-plugins disable {0}'.format(name), - runas=runas) + rabbitmq = _get_rabbitmq_plugin() + cmd = '{0} disable {1}'.format(rabbitmq, name) + + ret = __salt__['cmd.run_all'](cmd, runas=runas) + return _format_response(ret, 'Disabled')