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)


Reply via email to