mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Merge pull request #37109 from meaksh/zypper-distupgrade-support-2015.8
Some improvements for Zypper `dist-upgrade`
This commit is contained in:
commit
8c46d69251
2 changed files with 20 additions and 10 deletions
|
@ -1083,7 +1083,7 @@ def upgrade(refresh=True,
|
|||
Perform a system dist-upgrade. Default: False
|
||||
|
||||
fromrepo
|
||||
Specify a package repository to upgrade from. Default: None
|
||||
Specify a list of package repositories to upgrade from. Default: None
|
||||
|
||||
novendorchange
|
||||
If set to True, no allow vendor changes. Default: False
|
||||
|
@ -1098,7 +1098,7 @@ def upgrade(refresh=True,
|
|||
.. code-block:: bash
|
||||
|
||||
salt '*' pkg.upgrade
|
||||
salt '*' pkg.upgrade dist-upgrade=True fromrepo="MyRepoName" novendorchange=True
|
||||
salt '*' pkg.upgrade dist-upgrade=True fromrepo='["MyRepoName"]' novendorchange=True
|
||||
salt '*' pkg.upgrade dist-upgrade=True dryrun=True
|
||||
'''
|
||||
ret = {'changes': {},
|
||||
|
@ -1121,23 +1121,30 @@ def upgrade(refresh=True,
|
|||
__zypper__.noraise.call(*cmd_update + ['--debug-solver'])
|
||||
|
||||
if fromrepo:
|
||||
cmd_update.extend(['--from', fromrepo])
|
||||
log.info('Targeting repo {0!r}'.format(fromrepo))
|
||||
for repo in fromrepo:
|
||||
cmd_update.extend(['--from', repo])
|
||||
log.info('Targeting repos: {0!r}'.format(fromrepo))
|
||||
|
||||
if novendorchange:
|
||||
cmd_update.append('--no-allow-vendor-change')
|
||||
log.info('Disabling vendor changes')
|
||||
# TODO: Grains validation should be moved to Zypper class
|
||||
if __grains__['osrelease_info'][0] > 11:
|
||||
cmd_update.append('--no-allow-vendor-change')
|
||||
log.info('Disabling vendor changes')
|
||||
else:
|
||||
log.warn('Disabling vendor changes is not supported on this Zypper version')
|
||||
|
||||
old = list_pkgs()
|
||||
__zypper__(systemd_scope=_systemd_scope()).noraise.call(*cmd_update)
|
||||
if __zypper__.exit_code not in __zypper__.SUCCESS_EXIT_CODES:
|
||||
ret['result'] = False
|
||||
ret['comment'] = (__zypper__.stdout() + os.linesep + __zypper__.stderr()).strip()
|
||||
else:
|
||||
__context__.pop('pkg.list_pkgs', None)
|
||||
new = list_pkgs()
|
||||
ret['changes'] = salt.utils.compare_dicts(old, new)
|
||||
|
||||
if dryrun or not ret['result']:
|
||||
ret['comment'] = (__zypper__.stdout() + os.linesep + __zypper__.stderr()).strip()
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
|
|
|
@ -50,6 +50,7 @@ from salt.modules import zypper
|
|||
|
||||
# Globals
|
||||
zypper.__salt__ = dict()
|
||||
zypper.__grains__ = dict()
|
||||
zypper.__context__ = dict()
|
||||
zypper.rpm = None
|
||||
|
||||
|
@ -331,6 +332,7 @@ class ZypperTestCase(TestCase):
|
|||
|
||||
@patch('salt.modules.zypper.refresh_db', MagicMock(return_value=True))
|
||||
@patch('salt.modules.zypper._systemd_scope', MagicMock(return_value=False))
|
||||
@patch.dict('salt.modules.zypper.__grains__', {'osrelease_info': [12, 1]})
|
||||
def test_upgrade_success(self):
|
||||
'''
|
||||
Test system upgrade and dist-upgrade success.
|
||||
|
@ -358,13 +360,14 @@ class ZypperTestCase(TestCase):
|
|||
zypper_mock.assert_any_call('dist-upgrade', '--auto-agree-with-licenses', '--dry-run', '--debug-solver')
|
||||
|
||||
with patch('salt.modules.zypper.list_pkgs', MagicMock(side_effect=[{"vim": "1.1"}, {"vim": "1.2"}])):
|
||||
ret = zypper.upgrade(dist_upgrade=True, fromrepo="Dummy", novendorchange=True)
|
||||
ret = zypper.upgrade(dist_upgrade=True, fromrepo=["Dummy", "Dummy2"], novendorchange=True)
|
||||
self.assertTrue(ret['result'])
|
||||
self.assertDictEqual(ret['changes'], {"vim": {"old": "1.1", "new": "1.2"}})
|
||||
zypper_mock.assert_any_call('dist-upgrade', '--auto-agree-with-licenses', '--from', "Dummy", '--no-allow-vendor-change')
|
||||
zypper_mock.assert_any_call('dist-upgrade', '--auto-agree-with-licenses', '--from', "Dummy", '--from', 'Dummy2', '--no-allow-vendor-change')
|
||||
|
||||
@patch('salt.modules.zypper.refresh_db', MagicMock(return_value=True))
|
||||
@patch('salt.modules.zypper._systemd_scope', MagicMock(return_value=False))
|
||||
@patch.dict('salt.modules.zypper.__grains__', {'osrelease_info': [12, 1]})
|
||||
def test_upgrade_failure(self):
|
||||
'''
|
||||
Test system upgrade failure.
|
||||
|
@ -393,7 +396,7 @@ Repository 'DUMMY' not found by its alias, number, or URI.
|
|||
with patch('salt.modules.zypper.__zypper__', FailingZypperDummy()) as zypper_mock:
|
||||
zypper_mock.noraise.call = MagicMock()
|
||||
with patch('salt.modules.zypper.list_pkgs', MagicMock(side_effect=[{"vim": "1.1"}, {"vim": "1.1"}])):
|
||||
ret = zypper.upgrade(dist_upgrade=True, fromrepo="DUMMY")
|
||||
ret = zypper.upgrade(dist_upgrade=True, fromrepo=["DUMMY"])
|
||||
self.assertFalse(ret['result'])
|
||||
self.assertEqual(ret['comment'], zypper_out.strip())
|
||||
self.assertDictEqual(ret['changes'], {})
|
||||
|
|
Loading…
Add table
Reference in a new issue