Hello community, here is the log from the commit of package salt-shaptools for openSUSE:Factory checked in at 2020-09-28 14:29:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/salt-shaptools (Old) and /work/SRC/openSUSE:Factory/.salt-shaptools.new.4249 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "salt-shaptools" Mon Sep 28 14:29:23 2020 rev:20 rq:838191 version:0.3.10+git.1601276788.1869cbd Changes: -------- --- /work/SRC/openSUSE:Factory/salt-shaptools/salt-shaptools.changes 2020-09-22 21:11:22.455939498 +0200 +++ /work/SRC/openSUSE:Factory/.salt-shaptools.new.4249/salt-shaptools.changes 2020-09-28 14:29:46.878184926 +0200 @@ -1,0 +2,5 @@ +Thu Sep 24 12:42:59 UTC 2020 - Xabier Arbulu <xarb...@suse.com> + +- Implement a new state to set the ENSA version grains data + +------------------------------------------------------------------- Old: ---- salt-shaptools-0.3.10+git.1600699854.f5950bc.tar.gz New: ---- salt-shaptools-0.3.10+git.1601276788.1869cbd.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ salt-shaptools.spec ++++++ --- /var/tmp/diff_new_pack.BUvl8s/_old 2020-09-28 14:29:47.542185502 +0200 +++ /var/tmp/diff_new_pack.BUvl8s/_new 2020-09-28 14:29:47.546185505 +0200 @@ -19,7 +19,7 @@ # See also https://en.opensuse.org/openSUSE:Specfile_guidelines Name: salt-shaptools -Version: 0.3.10+git.1600699854.f5950bc +Version: 0.3.10+git.1601276788.1869cbd Release: 0 Summary: Salt modules and states for SAP Applications and SLE-HA components management ++++++ _service ++++++ --- /var/tmp/diff_new_pack.BUvl8s/_old 2020-09-28 14:29:47.590185543 +0200 +++ /var/tmp/diff_new_pack.BUvl8s/_new 2020-09-28 14:29:47.590185543 +0200 @@ -5,7 +5,7 @@ <param name="exclude">.git</param> <param name="filename">salt-shaptools</param> <param name="versionformat">0.3.10+git.%ct.%h</param> - <param name="revision">f5950bc96553bbf9e3a1cf437589da17956cb44e</param> + <param name="revision">1869cbdf21cac302f9a64609ffb1c5e0916bb76c</param> </service> <service name="recompress" mode="disabled"> ++++++ salt-shaptools-0.3.10+git.1600699854.f5950bc.tar.gz -> salt-shaptools-0.3.10+git.1601276788.1869cbd.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/salt-shaptools-0.3.10+git.1600699854.f5950bc/salt/modules/netweavermod.py new/salt-shaptools-0.3.10+git.1601276788.1869cbd/salt/modules/netweavermod.py --- old/salt-shaptools-0.3.10+git.1600699854.f5950bc/salt/modules/netweavermod.py 2020-09-21 16:50:54.000000000 +0200 +++ new/salt-shaptools-0.3.10+git.1601276788.1869cbd/salt/modules/netweavermod.py 2020-09-28 09:06:28.000000000 +0200 @@ -382,6 +382,30 @@ raise exceptions.CommandExecutionError(err) +def get_ensa_version( + sap_instance, + sid=None, + inst=None, + password=None): + ''' + Get currently installed sap instance ENSA version + + sap_instance + Check for specific SAP instances. Available options: ascs, ers. + sid + Netweaver system id (PRD for example) + inst + Netweaver instance number (00 for example) + password + Netweaver instance password + ''' + try: + netweaver_inst = _init(sid, inst, password) + return netweaver_inst.get_ensa_version(sap_instance) + except (ValueError, netweaver.NetweaverError) as err: + raise exceptions.CommandExecutionError(err) + + def setup_cwd( software_path, cwd='/tmp/swpm_unattended', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/salt-shaptools-0.3.10+git.1600699854.f5950bc/salt/states/netweavermod.py new/salt-shaptools-0.3.10+git.1601276788.1869cbd/salt/states/netweavermod.py --- old/salt-shaptools-0.3.10+git.1600699854.f5950bc/salt/states/netweavermod.py 2020-09-21 16:50:54.000000000 +0200 +++ new/salt-shaptools-0.3.10+git.1601276788.1869cbd/salt/states/netweavermod.py 2020-09-28 09:06:28.000000000 +0200 @@ -456,3 +456,53 @@ except exceptions.CommandExecutionError as err: ret['comment'] = six.text_type(err) return ret + + +def ensa_version_grains_present( + name, + sid=None, + inst=None, + password=None): + ''' + Set the `ensa_version_{sid}_{inst}` grain with the currently installed ENSA version + + name (sap_instance) + Check for specific SAP instances. Available options: ascs, ers. + sid + Netweaver system id (PRD for example) + inst + Netweaver instance number (00 for example) + password + Netweaver instance password + ''' + + sap_instance = name + inst = '{:0>2}'.format(inst) + + changes = {} + ret = {'name': name, + 'changes': changes, + 'result': False, + 'comment': ''} + + if __opts__['test']: + ret['result'] = None + ret['comment'] = 'ENSA version grain would be set' + ret['changes'] = changes + return ret + + try: + ensa_version = __salt__['netweaver.get_ensa_version']( + sap_instance, sid, inst, password) + except exceptions.CommandExecutionError as err: + ret['comment'] = six.text_type(err) + return ret + + grain_key = 'ensa_version_{}_{}'.format(sid, inst) + __salt__['grains.set'](grain_key, ensa_version) + changes[grain_key] = ensa_version + + ret['changes'] = changes + ret['comment'] = 'ENSA version grain set' + ret['result'] = True + return ret diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/salt-shaptools-0.3.10+git.1600699854.f5950bc/salt-shaptools.changes new/salt-shaptools-0.3.10+git.1601276788.1869cbd/salt-shaptools.changes --- old/salt-shaptools-0.3.10+git.1600699854.f5950bc/salt-shaptools.changes 2020-09-21 16:50:54.000000000 +0200 +++ new/salt-shaptools-0.3.10+git.1601276788.1869cbd/salt-shaptools.changes 2020-09-28 09:06:28.000000000 +0200 @@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Thu Sep 24 12:42:59 UTC 2020 - Xabier Arbulu <xarb...@suse.com> + +- Implement a new state to set the ENSA version grains data + +------------------------------------------------------------------- Fri Sep 11 14:09:09 UTC 2020 - Xabier Arbulu <xarb...@suse.com> - Version 0.3.10 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/salt-shaptools-0.3.10+git.1600699854.f5950bc/tests/unit/modules/test_netweavermod.py new/salt-shaptools-0.3.10+git.1601276788.1869cbd/tests/unit/modules/test_netweavermod.py --- old/salt-shaptools-0.3.10+git.1600699854.f5950bc/tests/unit/modules/test_netweavermod.py 2020-09-21 16:50:54.000000000 +0200 +++ new/salt-shaptools-0.3.10+git.1601276788.1869cbd/tests/unit/modules/test_netweavermod.py 2020-09-28 09:06:28.000000000 +0200 @@ -386,6 +386,47 @@ 'root', 'root', ascs_password=None, timeout=0, interval=5, cwd=None) assert 'netweaver error' in str(err.value) + @patch('salt.modules.netweavermod.netweaver.NetweaverInstance') + def test_get_ensa_version(self, mock_netweaver): + ''' + Test install method - raise + ''' + mock_netweaver_instance = mock.Mock() + mock_netweaver_instance.get_ensa_version.return_value = 1 + mock_netweaver.return_value = mock_netweaver_instance + with patch.object(netweavermod, '_init', mock_netweaver): + version = netweavermod.get_ensa_version('ascs', 'prd', '00', 'pass') + assert version == 1 + mock_netweaver.assert_called_once_with('prd', '00', 'pass') + mock_netweaver_instance.get_ensa_version.assert_called_once_with('ascs') + + @patch('salt.modules.netweavermod.netweaver.NetweaverInstance') + def test_get_ensa_version_error(self, mock_netweaver): + ''' + Test install method - raise + ''' + mock_netweaver_instance = mock.Mock() + mock_netweaver_instance.get_ensa_version.side_effect = ValueError('invalid instance') + mock_netweaver.return_value = mock_netweaver_instance + with patch.object(netweavermod, '_init', mock_netweaver): + with pytest.raises(exceptions.CommandExecutionError) as err: + netweavermod.get_ensa_version('other', 'prd', '00', 'pass') + assert'invalid instance' in str(err.value) + mock_netweaver.assert_called_once_with('prd', '00', 'pass') + mock_netweaver_instance.get_ensa_version.assert_called_once_with('other') + + mock_netweaver.reset_mock() + mock_netweaver_instance.reset_mock() + mock_netweaver_instance.get_ensa_version.side_effect = \ + netweavermod.netweaver.NetweaverError('Netweaver error') + mock_netweaver.return_value = mock_netweaver_instance + with patch.object(netweavermod, '_init', mock_netweaver): + with pytest.raises(exceptions.CommandExecutionError) as err: + netweavermod.get_ensa_version('ascs', 'prd', '00', 'pass') + assert'Netweaver error' in str(err.value) + mock_netweaver.assert_called_once_with('prd', '00', 'pass') + mock_netweaver_instance.get_ensa_version.assert_called_once_with('ascs') + def test_setup_cwd(self): mock_remove = mock.MagicMock() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/salt-shaptools-0.3.10+git.1600699854.f5950bc/tests/unit/states/test_netweavermod.py new/salt-shaptools-0.3.10+git.1601276788.1869cbd/tests/unit/states/test_netweavermod.py --- old/salt-shaptools-0.3.10+git.1600699854.f5950bc/tests/unit/states/test_netweavermod.py 2020-09-21 16:50:54.000000000 +0200 +++ new/salt-shaptools-0.3.10+git.1601276788.1869cbd/tests/unit/states/test_netweavermod.py 2020-09-28 09:06:28.000000000 +0200 @@ -556,9 +556,9 @@ mock_append.assert_called_once_with(name='/usr/sap/sapservices', text=new_profile) new_profile = 'LD_LIBRARY_PATH=/usr/sap/PRD/ASCS00/exe:$LD_LIBRARY_PATH; '\ - 'export LD_LIBRARY_PATH; /usr/sap/PRD/ASCS00/exe/sapstartsrv '\ - 'pf=/usr/sap/PRD/SYS/profile/PRD_ASCS00_virtual '\ - '-D -u prdadm' + 'export LD_LIBRARY_PATH; /usr/sap/PRD/ASCS00/exe/sapstartsrv '\ + 'pf=/usr/sap/PRD/SYS/profile/PRD_ASCS00_virtual '\ + '-D -u prdadm' ret = {'name': 'ers', 'changes': {'sap_instance': 'ers', 'profile': new_profile}, @@ -623,3 +623,63 @@ 'cat /usr/sap/sapservices | grep \'.*ERS.*\'', python_shell=True) mock_is_installed.assert_called_once_with( sap_instance='ENQREP', sid='prd', inst=00, password='pass') + + def test_ensa_version_grains_present_test(self): + ''' + Test ensa_version_grains_present using test mode + ''' + + ret = {'name': 'ascs', + 'changes': {}, + 'result': None, + 'comment': 'ENSA version grain would be set'} + + with patch.dict(netweavermod.__opts__, {'test': True}): + assert netweavermod.ensa_version_grains_present( + 'ascs', 'prd', 00, 'pass') == ret + + def test_ensa_version_grains_present_error(self): + ''' + Test ensa_version_grains_present with the error + ''' + + ret = {'name': 'ascs', + 'changes': {}, + 'result': False, + 'comment': 'err'} + + mock_get_ensa_version = mock.Mock(side_effect=exceptions.CommandExecutionError('err')) + + with patch.dict(netweavermod.__salt__, { + 'netweaver.get_ensa_version': mock_get_ensa_version}): + assert netweavermod.ensa_version_grains_present( + 'ascs', 'prd', 00, 'pass') == ret + + def test_ensa_version_grains_present(self): + ''' + Test ensa_version_grains_present with correct execution + ''' + + ret = {'name': 'ascs', + 'changes': {'ensa_version_prd_00': 1}, + 'result': True, + 'comment': 'ENSA version grain set'} + + mock_get_ensa_version = mock.Mock(return_value=1) + mock_grains_set = mock.Mock() + + with patch.dict(netweavermod.__salt__, { + 'netweaver.get_ensa_version': mock_get_ensa_version, + 'grains.set': mock_grains_set}): + assert netweavermod.ensa_version_grains_present( + 'ascs', 'prd', '00', 'pass') == ret + mock_grains_set.assert_called_once_with('ensa_version_prd_00', 1) + + mock_grains_set.reset_mock() + + with patch.dict(netweavermod.__salt__, { + 'netweaver.get_ensa_version': mock_get_ensa_version, + 'grains.set': mock_grains_set}): + assert netweavermod.ensa_version_grains_present( + 'ascs', 'prd', 0, 'pass') == ret + mock_grains_set.assert_called_once_with('ensa_version_prd_00', 1)