Hello community,

here is the log from the commit of package python-shaptools for 
openSUSE:Factory checked in at 2020-10-05 19:41:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-shaptools (Old)
 and      /work/SRC/openSUSE:Factory/.python-shaptools.new.4249 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-shaptools"

Mon Oct  5 19:41:06 2020 rev:15 rq:839491 version:0.3.10+git.1601275579.c59c61d

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-shaptools/python-shaptools.changes        
2020-09-22 21:09:40.579850365 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-shaptools.new.4249/python-shaptools.changes  
    2020-10-05 19:42:59.405778441 +0200
@@ -1,0 +2,6 @@
+Thu Sep 24 12:16:46 UTC 2020 - Xabier Arbulu <[email protected]>
+
+- Add new functionalities to know the currently installed ENSA
+  version for Netweaver (only for ASCS and ERS instances) 
+
+-------------------------------------------------------------------

Old:
----
  python-shaptools-0.3.10+git.1600699158.46fca28.tar.gz

New:
----
  python-shaptools-0.3.10+git.1601275579.c59c61d.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-shaptools.spec ++++++
--- /var/tmp/diff_new_pack.MDUI8U/_old  2020-10-05 19:42:59.909778933 +0200
+++ /var/tmp/diff_new_pack.MDUI8U/_new  2020-10-05 19:42:59.909778933 +0200
@@ -22,7 +22,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-shaptools
-Version:        0.3.10+git.1600699158.46fca28
+Version:        0.3.10+git.1601275579.c59c61d
 Release:        0
 Summary:        Python tools to interact with SAP HANA utilities
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.MDUI8U/_old  2020-10-05 19:42:59.945778969 +0200
+++ /var/tmp/diff_new_pack.MDUI8U/_new  2020-10-05 19:42:59.945778969 +0200
@@ -5,7 +5,7 @@
     <param name="exclude">.git</param>
     <param name="filename">python-shaptools</param>
     <param name="versionformat">@PARENT_TAG@+git.%ct.%h</param>
-    <param name="revision">46fca286447ff1ec41837553dd7a4e3b14be69ec</param>
+    <param name="revision">c59c61d70ef540be0b9fd54631e4a21e8b69db66</param>
   </service>
 
   <service name="recompress" mode="disabled">

++++++ python-shaptools-0.3.10+git.1600699158.46fca28.tar.gz -> 
python-shaptools-0.3.10+git.1601275579.c59c61d.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-shaptools-0.3.10+git.1600699158.46fca28/python-shaptools.changes 
new/python-shaptools-0.3.10+git.1601275579.c59c61d/python-shaptools.changes
--- old/python-shaptools-0.3.10+git.1600699158.46fca28/python-shaptools.changes 
2020-09-21 16:39:18.000000000 +0200
+++ new/python-shaptools-0.3.10+git.1601275579.c59c61d/python-shaptools.changes 
2020-09-28 08:46:19.000000000 +0200
@@ -1,4 +1,10 @@
 -------------------------------------------------------------------
+Thu Sep 24 12:16:46 UTC 2020 - Xabier Arbulu <[email protected]>
+
+- Add new functionalities to know the currently installed ENSA
+  version for Netweaver (only for ASCS and ERS instances) 
+
+-------------------------------------------------------------------
 Thu Sep  3 06:44:31 UTC 2020 - Xabier Arbulu <[email protected]>
 
 - Create version 0.3.10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-shaptools-0.3.10+git.1600699158.46fca28/shaptools/netweaver.py 
new/python-shaptools-0.3.10+git.1601275579.c59c61d/shaptools/netweaver.py
--- old/python-shaptools-0.3.10+git.1600699158.46fca28/shaptools/netweaver.py   
2020-09-21 16:39:18.000000000 +0200
+++ new/python-shaptools-0.3.10+git.1601275579.c59c61d/shaptools/netweaver.py   
2020-09-28 08:46:19.000000000 +0200
@@ -116,16 +116,20 @@
         Check if ASCS instance is installed
         """
         msg_server = shell.find_pattern(r'msg_server, MessageServer,.*', 
processes.output)
-        enserver = shell.find_pattern(r'enserver, EnqueueServer,.*', 
processes.output)
-        return bool(msg_server and enserver)
+        enserver_ensa1 = shell.find_pattern(r'enserver, EnqueueServer,.*', 
processes.output)
+        enq_server_ensa2 = shell.find_pattern(r'enq_server, Enqueue Server 
2,.*', processes.output)
+        return bool(msg_server and (enserver_ensa1 or enq_server_ensa2))
 
     @staticmethod
     def _is_ers_installed(processes):
         """
         Check if ERS instance is installed
         """
-        enrepserver = shell.find_pattern(r'enrepserver, EnqueueReplicator,.*', 
processes.output)
-        return bool(enrepserver)
+        enrepserver_ensa1 = shell.find_pattern(
+            r'enrepserver, EnqueueReplicator,.*', processes.output)
+        enq_replicator_ensa2 = shell.find_pattern(
+            r'enq_replicator, Enqueue Replicator 2,.*', processes.output)
+        return bool(enrepserver_ensa1 or enq_replicator_ensa2)
 
     @staticmethod
     def _is_app_server_installed(processes):
@@ -166,6 +170,49 @@
         return state
 
     @staticmethod
+    def _get_ascs_ensa_version(processes):
+        """
+        Get ASCS ENSA version
+        """
+        if shell.find_pattern(r'enserver, EnqueueServer,.*', processes.output):
+            return 1
+        elif shell.find_pattern(r'enq_server, Enqueue Server 2,.*', 
processes.output):
+            return 2
+        raise ValueError('ASCS not installed or found')
+
+    @staticmethod
+    def _get_ers_ensa_version(processes):
+        """
+        Get ERS ENSA version
+        """
+        if shell.find_pattern(r'enrepserver, EnqueueReplicator,.*', 
processes.output):
+            return 1
+        elif shell.find_pattern(r'enq_replicator, Enqueue Replicator 2,.*', 
processes.output):
+            return 2
+        raise ValueError('ERS not installed or found')
+
+    def get_ensa_version(self, sap_instance):
+        """
+        Get currently installed ENSA version
+
+        Args:
+            sap_instance (str): SAP instance type. Available options: ascs, ers
+
+        Returns:
+            int: Returns the ENSA version number
+
+        Raises:
+            ValueError: ENSA system is not installed or found properly
+        """
+
+        processes = self.get_process_list(exception=True)
+        if sap_instance == 'ascs':
+            return self._get_ascs_ensa_version(processes)
+        elif sap_instance == 'ers':
+            return self._get_ers_ensa_version(processes)
+        raise ValueError('provided sap instance type is not valid: 
{}'.format(sap_instance))
+
+    @staticmethod
     def _remove_old_files(cwd, root_user, password, remote_host):
         """
         Remove old files from SAP installation cwd folder. Only start_dir.cd 
must remain
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-shaptools-0.3.10+git.1600699158.46fca28/tests/netweaver_test.py 
new/python-shaptools-0.3.10+git.1601275579.c59c61d/tests/netweaver_test.py
--- old/python-shaptools-0.3.10+git.1600699158.46fca28/tests/netweaver_test.py  
2020-09-21 16:39:18.000000000 +0200
+++ new/python-shaptools-0.3.10+git.1601275579.c59c61d/tests/netweaver_test.py  
2020-09-28 08:46:19.000000000 +0200
@@ -156,7 +156,7 @@
     def test_is_ascs_installed(self, mock_find_pattern):
 
         mock_process = mock.Mock(output='output')
-        mock_find_pattern.side_effect = ['found', 'found']
+        mock_find_pattern.side_effect = ['found', 'found', '']
 
         self.assertTrue(self._netweaver._is_ascs_installed(mock_process))
 
@@ -166,33 +166,60 @@
         ])
 
         mock_find_pattern.reset_mock()
-        mock_find_pattern.side_effect = ['found', '']
+
+        mock_find_pattern.side_effect = ['found', '', 'found']
+
+        self.assertTrue(self._netweaver._is_ascs_installed(mock_process))
+
+        mock_find_pattern.assert_has_calls([
+            mock.call(r'msg_server, MessageServer,.*', 'output'),
+            mock.call(r'enserver, EnqueueServer,.*', 'output'),
+            mock.call(r'enq_server, Enqueue Server 2,.*', 'output')
+        ])
+
+        mock_find_pattern.reset_mock()
+        mock_find_pattern.side_effect = ['found', '', '']
 
         self.assertFalse(self._netweaver._is_ascs_installed(mock_process))
 
         mock_find_pattern.assert_has_calls([
             mock.call(r'msg_server, MessageServer,.*', 'output'),
-            mock.call(r'enserver, EnqueueServer,.*', 'output')
+            mock.call(r'enserver, EnqueueServer,.*', 'output'),
+            mock.call(r'enq_server, Enqueue Server 2,.*', 'output')
         ])
 
     @mock.patch('shaptools.shell.find_pattern')
     def test_is_ers_installed(self, mock_find_pattern):
 
         mock_process = mock.Mock(output='output')
-        mock_find_pattern.side_effect = ['found']
+        mock_find_pattern.side_effect = ['found', '']
 
         self.assertTrue(self._netweaver._is_ers_installed(mock_process))
 
-        mock_find_pattern.assert_called_once_with(
-            r'enrepserver, EnqueueReplicator,.*', 'output')
+        mock_find_pattern.assert_has_calls([
+            mock.call(r'enrepserver, EnqueueReplicator,.*', 'output'),
+            mock.call(r'enq_replicator, Enqueue Replicator 2,.*', 'output'),
+        ])
+
+        mock_find_pattern.reset_mock()
+        mock_find_pattern.side_effect = ['', 'found']
+
+        self.assertTrue(self._netweaver._is_ers_installed(mock_process))
+
+        mock_find_pattern.assert_has_calls([
+            mock.call(r'enrepserver, EnqueueReplicator,.*', 'output'),
+            mock.call(r'enq_replicator, Enqueue Replicator 2,.*', 'output'),
+        ])
 
         mock_find_pattern.reset_mock()
-        mock_find_pattern.side_effect = ['']
+        mock_find_pattern.side_effect = ['', '']
 
         self.assertFalse(self._netweaver._is_ers_installed(mock_process))
 
-        mock_find_pattern.assert_called_once_with(
-            r'enrepserver, EnqueueReplicator,.*', 'output')
+        mock_find_pattern.assert_has_calls([
+            mock.call(r'enrepserver, EnqueueReplicator,.*', 'output'),
+            mock.call(r'enq_replicator, Enqueue Replicator 2,.*', 'output'),
+        ])
 
     @mock.patch('shaptools.shell.find_pattern')
     def test_is_app_server_installed(self, mock_find_pattern):
@@ -303,6 +330,91 @@
         self._netweaver.get_process_list.assert_called_once_with(False)
         
self._netweaver._is_app_server_installed.assert_called_once_with(processes_mock)
 
+    @mock.patch('shaptools.shell.find_pattern')
+    def test_get_ascs_ensa_version_ensa1(self, mock_find_pattern):
+        processes = mock.Mock(output='output')
+        mock_find_pattern.side_effect = [True, False]
+        version = self._netweaver._get_ascs_ensa_version(processes)
+        self.assertTrue(version, 1)
+        mock_find_pattern.assert_called_once_with(r'enserver, 
EnqueueServer,.*', 'output')
+
+    @mock.patch('shaptools.shell.find_pattern')
+    def test_get_ascs_ensa_version_ensa2(self, mock_find_pattern):
+        processes = mock.Mock(output='output')
+        mock_find_pattern.side_effect = [False, True]
+        version = self._netweaver._get_ascs_ensa_version(processes)
+        self.assertTrue(version, 2)
+        mock_find_pattern.assert_has_calls([
+            mock.call(r'enserver, EnqueueServer,.*', 'output'),
+            mock.call(r'enq_server, Enqueue Server 2,.*', 'output')
+        ])
+
+    @mock.patch('shaptools.shell.find_pattern')
+    def test_get_ascs_ensa_version_error(self, mock_find_pattern):
+        processes = mock.Mock(output='output')
+        mock_find_pattern.side_effect = [False, False]
+        with self.assertRaises(ValueError) as err:
+            self._netweaver._get_ascs_ensa_version(processes)
+        self.assertTrue('ASCS not installed or found' in str(err.exception))
+        mock_find_pattern.assert_has_calls([
+            mock.call(r'enserver, EnqueueServer,.*', 'output'),
+            mock.call(r'enq_server, Enqueue Server 2,.*', 'output')
+        ])
+
+    @mock.patch('shaptools.shell.find_pattern')
+    def test_get_ers_ensa_version_ensa1(self, mock_find_pattern):
+        processes = mock.Mock(output='output')
+        mock_find_pattern.side_effect = [True, False]
+        version = self._netweaver._get_ers_ensa_version(processes)
+        self.assertTrue(version, 1)
+        mock_find_pattern.assert_called_once_with(r'enrepserver, 
EnqueueReplicator,.*', 'output')
+
+    @mock.patch('shaptools.shell.find_pattern')
+    def test_get_ers_ensa_version_ensa2(self, mock_find_pattern):
+        processes = mock.Mock(output='output')
+        mock_find_pattern.side_effect = [False, True]
+        version = self._netweaver._get_ers_ensa_version(processes)
+        self.assertTrue(version, 2)
+        mock_find_pattern.assert_has_calls([
+            mock.call(r'enrepserver, EnqueueReplicator,.*', 'output'),
+            mock.call(r'enq_replicator, Enqueue Replicator 2,.*', 'output')
+        ])
+
+    @mock.patch('shaptools.shell.find_pattern')
+    def test_get_ers_ensa_version_error(self, mock_find_pattern):
+        processes = mock.Mock(output='output')
+        mock_find_pattern.side_effect = [False, False]
+        with self.assertRaises(ValueError) as err:
+            self._netweaver._get_ers_ensa_version(processes)
+        self.assertTrue('ERS not installed or found' in str(err.exception))
+        mock_find_pattern.assert_has_calls([
+            mock.call(r'enrepserver, EnqueueReplicator,.*', 'output'),
+            mock.call(r'enq_replicator, Enqueue Replicator 2,.*', 'output')
+        ])
+
+    def test_get_ensa_version_ascs(self):
+        self._netweaver.get_process_list = mock.Mock(return_value='output')
+        self._netweaver._get_ascs_ensa_version = mock.Mock(return_value=1)
+        version = self._netweaver.get_ensa_version('ascs')
+        self.assertTrue(version, 1)
+        
self._netweaver.get_process_list.assert_called_once_with(exception=True)
+        
self._netweaver._get_ascs_ensa_version.assert_called_once_with('output')
+
+    def test_get_ensa_version_ers(self):
+        self._netweaver.get_process_list = mock.Mock(return_value='output')
+        self._netweaver._get_ers_ensa_version = mock.Mock(return_value=1)
+        version = self._netweaver.get_ensa_version('ers')
+        self.assertTrue(version, 1)
+        
self._netweaver.get_process_list.assert_called_once_with(exception=True)
+        self._netweaver._get_ers_ensa_version.assert_called_once_with('output')
+
+    def test_get_ensa_version_error(self):
+        self._netweaver.get_process_list = mock.Mock(return_value='output')
+        with self.assertRaises(ValueError) as err:
+            self._netweaver.get_ensa_version('other')
+        self.assertTrue('provided sap instance type is not valid: other' in 
str(err.exception))
+        
self._netweaver.get_process_list.assert_called_once_with(exception=True)
+
     @mock.patch('shaptools.shell.execute_cmd')
     def test_remove_old_files(self, mock_execute_cmd):
 


Reply via email to