mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Merge pull request #28270 from rallytime/refactor_rabbitmq_plugin_state
Refactor RabbitMQ Plugin State to correctly use test=true and format errors
This commit is contained in:
commit
a44c8d8dab
4 changed files with 67 additions and 42 deletions
|
@ -704,8 +704,12 @@ def plugin_is_enabled(name, runas=None):
|
|||
cmd = '{0} list -m -e'.format(rabbitmq)
|
||||
if runas is None:
|
||||
runas = salt.utils.get_user()
|
||||
ret = __salt__['cmd.run'](cmd, python_shell=False, runas=runas)
|
||||
return bool(name in ret)
|
||||
ret = __salt__['cmd.run_all'](cmd, python_shell=False, runas=runas)
|
||||
if ret['retcode'] != 0:
|
||||
raise CommandExecutionError(
|
||||
'RabbitMQ command failed: {0}'.format(ret['stderr'])
|
||||
)
|
||||
return bool(name in ret['stdout'])
|
||||
|
||||
|
||||
def enable_plugin(name, runas=None):
|
||||
|
|
|
@ -12,11 +12,14 @@ Example:
|
|||
some_plugin:
|
||||
rabbitmq_plugin.enabled: []
|
||||
'''
|
||||
from __future__ import absolute_import
|
||||
|
||||
# Import python libs
|
||||
# Import Python Libs
|
||||
from __future__ import absolute_import
|
||||
import logging
|
||||
|
||||
# Import Salt Libs
|
||||
from salt.exceptions import CommandExecutionError
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
@ -40,25 +43,33 @@ def enabled(name, runas=None):
|
|||
'''
|
||||
|
||||
ret = {'name': name, 'result': True, 'comment': '', 'changes': {}}
|
||||
result = {}
|
||||
|
||||
if __salt__['rabbitmq.plugin_is_enabled'](name, runas=runas):
|
||||
ret['comment'] = 'Plugin {0} is already enabled'.format(name)
|
||||
try:
|
||||
plugin_enabled = __salt__['rabbitmq.plugin_is_enabled'](name, runas=runas)
|
||||
except CommandExecutionError as err:
|
||||
ret['result'] = False
|
||||
ret['comment'] = 'Error: {0}'.format(err)
|
||||
return ret
|
||||
|
||||
if __opts__['test']:
|
||||
if plugin_enabled:
|
||||
ret['comment'] = 'Plugin \'{0}\' is already enabled.'.format(name)
|
||||
return ret
|
||||
|
||||
if not __opts__['test']:
|
||||
try:
|
||||
__salt__['rabbitmq.enable_plugin'](name, runas=runas)
|
||||
except CommandExecutionError as err:
|
||||
ret['result'] = False
|
||||
ret['comment'] = 'Error: {0}'.format(err)
|
||||
return ret
|
||||
ret['changes'].update({'old': '', 'new': name})
|
||||
|
||||
if __opts__['test'] and ret['changes']:
|
||||
ret['result'] = None
|
||||
ret['comment'] = 'Plugin {0} is set to be enabled'.format(name)
|
||||
else:
|
||||
result = __salt__['rabbitmq.enable_plugin'](name, runas=runas)
|
||||
|
||||
if 'Error' in result:
|
||||
ret['result'] = False
|
||||
ret['comment'] = result['Error']
|
||||
elif 'Enabled' in result:
|
||||
ret['comment'] = result['Enabled']
|
||||
ret['changes'] = {'old': '', 'new': name}
|
||||
ret['comment'] = 'Plugin \'{0}\' is set to be enabled.'.format(name)
|
||||
return ret
|
||||
|
||||
ret['comment'] = 'Plugin \'{0}\' was enabled.'.format(name)
|
||||
return ret
|
||||
|
||||
|
||||
|
@ -73,23 +84,31 @@ def disabled(name, runas=None):
|
|||
'''
|
||||
|
||||
ret = {'name': name, 'result': True, 'comment': '', 'changes': {}}
|
||||
result = {}
|
||||
|
||||
if not __salt__['rabbitmq.plugin_is_enabled'](name, runas=runas):
|
||||
ret['comment'] = 'Plugin {0} is not enabled'.format(name)
|
||||
try:
|
||||
plugin_enabled = __salt__['rabbitmq.plugin_is_enabled'](name, runas=runas)
|
||||
except CommandExecutionError as err:
|
||||
ret['result'] = False
|
||||
ret['comment'] = 'Error: {0}'.format(err)
|
||||
return ret
|
||||
|
||||
if __opts__['test']:
|
||||
if not plugin_enabled:
|
||||
ret['comment'] = 'Plugin \'{0}\' is already disabled.'.format(name)
|
||||
return ret
|
||||
|
||||
if not __opts__['test']:
|
||||
try:
|
||||
__salt__['rabbitmq.disable_plugin'](name, runas=runas)
|
||||
except CommandExecutionError as err:
|
||||
ret['result'] = False
|
||||
ret['comment'] = 'Error: {0}'.format(err)
|
||||
return ret
|
||||
ret['changes'].update({'old': name, 'new': ''})
|
||||
|
||||
if __opts__['test'] and ret['changes']:
|
||||
ret['result'] = None
|
||||
ret['comment'] = 'Plugin {0} is set to be disabled'.format(name)
|
||||
else:
|
||||
result = __salt__['rabbitmq.disable_plugin'](name, runas=runas)
|
||||
|
||||
if 'Error' in result:
|
||||
ret['result'] = False
|
||||
ret['comment'] = result['Error']
|
||||
elif 'Disabled' in result:
|
||||
ret['comment'] = result['Disabled']
|
||||
ret['changes'] = {'new': '', 'old': name}
|
||||
ret['comment'] = 'Plugin \'{0}\' is set to be disabled.'.format(name)
|
||||
return ret
|
||||
|
||||
ret['comment'] = 'Plugin \'{0}\' was disabled.'.format(name)
|
||||
return ret
|
||||
|
|
|
@ -351,9 +351,9 @@ class RabbitmqTestCase(TestCase):
|
|||
'''
|
||||
Test if it return whether the plugin is enabled.
|
||||
'''
|
||||
mock_run = MagicMock(return_value='saltstack')
|
||||
mock_run = MagicMock(return_value={'retcode': 0, 'stdout': 'saltstack'})
|
||||
mock_pkg = MagicMock(return_value='')
|
||||
with patch.dict(rabbitmq.__salt__, {'cmd.run': mock_run,
|
||||
with patch.dict(rabbitmq.__salt__, {'cmd.run_all': mock_run,
|
||||
'pkg.version': mock_pkg}):
|
||||
self.assertTrue(rabbitmq.plugin_is_enabled('salt'))
|
||||
|
||||
|
|
|
@ -46,13 +46,14 @@ class RabbitmqPluginTestCase(TestCase):
|
|||
mock = MagicMock(side_effect=[True, False])
|
||||
with patch.dict(rabbitmq_plugin.__salt__,
|
||||
{'rabbitmq.plugin_is_enabled': mock}):
|
||||
comt = ('Plugin some_plugin is already enabled')
|
||||
ret.update({'comment': comt})
|
||||
comment = 'Plugin \'some_plugin\' is already enabled.'
|
||||
ret.update({'comment': comment})
|
||||
self.assertDictEqual(rabbitmq_plugin.enabled(name), ret)
|
||||
|
||||
with patch.dict(rabbitmq_plugin.__opts__, {'test': True}):
|
||||
comt = ('Plugin some_plugin is set to be enabled')
|
||||
ret.update({'comment': comt, 'result': None})
|
||||
comment = 'Plugin \'some_plugin\' is set to be enabled.'
|
||||
changes = {'new': 'some_plugin', 'old': ''}
|
||||
ret.update({'comment': comment, 'result': None, 'changes': changes})
|
||||
self.assertDictEqual(rabbitmq_plugin.enabled(name), ret)
|
||||
|
||||
# 'disabled' function tests: 1
|
||||
|
@ -71,13 +72,14 @@ class RabbitmqPluginTestCase(TestCase):
|
|||
mock = MagicMock(side_effect=[False, True])
|
||||
with patch.dict(rabbitmq_plugin.__salt__,
|
||||
{'rabbitmq.plugin_is_enabled': mock}):
|
||||
comt = ('Plugin some_plugin is not enabled')
|
||||
ret.update({'comment': comt})
|
||||
comment = 'Plugin \'some_plugin\' is already disabled.'
|
||||
ret.update({'comment': comment})
|
||||
self.assertDictEqual(rabbitmq_plugin.disabled(name), ret)
|
||||
|
||||
with patch.dict(rabbitmq_plugin.__opts__, {'test': True}):
|
||||
comt = ('Plugin some_plugin is set to be disabled')
|
||||
ret.update({'comment': comt, 'result': None})
|
||||
comment = 'Plugin \'some_plugin\' is set to be disabled.'
|
||||
changes = {'new': '', 'old': 'some_plugin'}
|
||||
ret.update({'comment': comment, 'result': None, 'changes': changes})
|
||||
self.assertDictEqual(rabbitmq_plugin.disabled(name), ret)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue