Merge branch '2016.3' into 'carbon'

Conflicts:
  - salt/minion.py
This commit is contained in:
rallytime 2016-09-09 09:36:57 -06:00
commit 3ed6190ece
3 changed files with 36 additions and 2 deletions

View File

@ -1985,7 +1985,6 @@ class Minion(MinionBase):
log.debug('Forwarding salt error event tag={tag}'.format(tag=tag))
self._fire_master(data, tag)
elif tag.startswith('salt/auth/creds'):
mtag, data = salt.utils.event.MinionEvent.unpack(tag)
key = tuple(data['key'])
log.debug('Updating auth data for {0}: {1} -> {2}'.format(
key, salt.crypt.AsyncAuth.creds_map.get(key), data['creds']))

View File

@ -2489,7 +2489,13 @@ def group_installed(name, skip=None, include=None, **kwargs):
if not isinstance(item, six.string_types):
include[idx] = str(item)
diff = __salt__['pkg.group_diff'](name)
try:
diff = __salt__['pkg.group_diff'](name)
except CommandExecutionError as err:
ret['comment'] = ('An error was encountered while installing/updating '
'group \'{0}\': {1}.'.format(name, err))
return ret
mandatory = diff['mandatory']['installed'] + \
diff['mandatory']['not installed']

View File

@ -597,6 +597,35 @@ class PkgTest(integration.ModuleCase,
'Package {0} is already up-to-date'.format(target)
)
@requires_system_grains
def test_group_installed_handle_missing_package_group(self, grains=None): # pylint: disable=unused-argument
'''
Tests that a CommandExecutionError is caught and the state returns False when
the package group is missing. Before this fix, the state would stacktrace.
See Issue #35819 for bug report.
'''
# Skip test if package manager not available
if not pkgmgr_avail(self.run_function, self.run_function('grains.items')):
self.skipTest('Package manager is not available')
# Group install not available message
grp_install_msg = 'pkg.group_install not available for this platform'
# Run the pkg.group_installed state with a fake package group
ret = self.run_state('pkg.group_installed', name='handle_missing_pkg_group',
skip='foo-bar-baz')
ret_comment = ret['pkg_|-handle_missing_pkg_group_|-handle_missing_pkg_group_|-group_installed']['comment']
# Not all package managers support group_installed. Skip this test if not supported.
if ret_comment == grp_install_msg:
self.skipTest(grp_install_msg)
# Test state should return False and should have the right comment
self.assertSaltFalseReturn(ret)
self.assertEqual(ret_comment, 'An error was encountered while installing/updating group '
'\'handle_missing_pkg_group\': Group \'handle_missing_pkg_group\' '
'not found.')
if __name__ == '__main__':
from integration import run_tests
run_tests(PkgTest)