From 973277fa0b496136c68bd83de5080380e0422a1b Mon Sep 17 00:00:00 2001
From: Ricardo Silva <Ricardo.SILVA@ext.ec.europa.eu>
Date: Thu, 16 Feb 2023 09:44:38 +0100
Subject: [PATCH] Bug fix in sid users, groups and leankit scripts refs #31854

---
 bin/leankit_user.py | 28 ++++++++++++++++------------
 bin/sid_groups.py   |  2 +-
 bin/sid_user.py     | 40 ++++++++++++++++++++++++++++++----------
 3 files changed, 47 insertions(+), 23 deletions(-)

diff --git a/bin/leankit_user.py b/bin/leankit_user.py
index d0e144c..3ec49e8 100755
--- a/bin/leankit_user.py
+++ b/bin/leankit_user.py
@@ -374,8 +374,11 @@ def main():
             'username': 'Mesut.YILDIRIM@ext.ec.europa.eu'
            }
     '''
-
-    leankit_inv_results = leankit.get_invitations()
+    try:
+        leankit_inv_results = leankit.get_invitations()
+    except Exception as e:
+        leankit_inv_results = None
+        logger.error(e)
     # print(pformat(leankit_inv_results))
     '''
            {
@@ -412,17 +415,18 @@ def main():
             continue
         leankit_account.append(duser['emailAddress'])
 
-    for duser in leankit_inv_results['invitations']:
-        # print(duser)
-        if 'isExpired' in duser and duser['isExpired'] is True:
-            continue
-        if 'isRevoked' in duser and duser['isRevoked'] is True:
-            continue
+    if leankit_inv_results is not None:
+        for duser in leankit_inv_results['invitations']:
+            # print(duser)
+            if 'isExpired' in duser and duser['isExpired'] is True:
+                continue
+            if 'isRevoked' in duser and duser['isRevoked'] is True:
+                continue
 
-        if duser['emailAddress'] not in snet_mail_index and duser['emailAddress'].lower() not in snet_mail_index_lc and duser['emailAddress'] not in donotdelete and duser['emailAddress'].lower() not in donotdelete and duser['emailAddress'].lower() not in extra_leankit_results_idx:
-            print('Leankit user ' + duser['emailAddress'] + ' should be deleted.')
-            continue
-        leankit_account.append(duser['emailAddress'])
+            if duser['emailAddress'] not in snet_mail_index and duser['emailAddress'].lower() not in snet_mail_index_lc and duser['emailAddress'] not in donotdelete and duser['emailAddress'].lower() not in donotdelete and duser['emailAddress'].lower() not in extra_leankit_results_idx:
+                print('Leankit user ' + duser['emailAddress'] + ' should be deleted.')
+                continue
+            leankit_account.append(duser['emailAddress'])
 
     for usermail in snet_mail_index:
         usermail_lc = usermail.lower()
diff --git a/bin/sid_groups.py b/bin/sid_groups.py
index 3537759..d1da025 100755
--- a/bin/sid_groups.py
+++ b/bin/sid_groups.py
@@ -209,7 +209,7 @@ def main():
             to_print = pformat(block_to_update)
             for i in list(range(0, int(round(len(to_print) / 250)) + 1)):
                 logger.info('scrat %s cmd: %s' % (str(i), to_print[250 * i:250 * (i + 1)]))
-    sys.exit(1)
+    sys.exit(0)
 
 if __name__ == '__main__':
     main()
diff --git a/bin/sid_user.py b/bin/sid_user.py
index bff03ef..209e4ee 100755
--- a/bin/sid_user.py
+++ b/bin/sid_user.py
@@ -232,7 +232,11 @@ def ec_ldap_get():
 def sid_create_user(diego, dfqdn, res_rw_user, user, block_to_update, context_uid=666000002, verify=True, error_stop=False):
 
     scrat_inst = Scrat(res_rw_user, '', fqdn=dfqdn, version=2, verify=verify)
-    (scrat_json, scratres) = scrat_inst.scratQuery(block_to_update, Full=True)
+    try:
+        (scrat_json, scratres) = scrat_inst.scratQuery(block_to_update, Full=True)
+    except Exception as e:
+        scratres = '409'
+        scrat_json = e
 
     if str(scratres) != '200':
         '''Scrat just add the vlan to the trunked list'''
@@ -261,7 +265,11 @@ def sid_update_user(diego, dfqdn, res_rw_user, user, block_to_update, context_ui
 
     ''' delete: need to check the line exist if not 409'''
     scrat_inst = Scrat(res_rw_user, '', fqdn=dfqdn, version=2, verify=verify)
-    (scrat_json, scratres) = scrat_inst.scratUpdate(block_to_update, overwrite_mode=True, Full=True)
+    try:
+        (scrat_json, scratres) = scrat_inst.scratUpdate(block_to_update, overwrite_mode=True, Full=True)
+    except Exception as e:
+        scratres = '409'
+        scrat_json = e
 
     if str(scratres) != '200':
         '''Scrat just add the vlan to the trunked list'''
@@ -305,7 +313,11 @@ def sid_add_user_to_department(diego, dfqdn, res_rw_user, user, uid, department,
 
     ''' delete: need to check the line exist if not 409'''
     scrat_inst = Scrat(res_rw_user, '', fqdn=dfqdn, version=2, verify=verify)
-    (scrat_json, scratres) = scrat_inst.scratUpdate(block_to_update, overwrite_mode=False, line_only=False, Full=True)
+    try:
+        (scrat_json, scratres) = scrat_inst.scratUpdate(block_to_update, overwrite_mode=False, line_only=False, Full=True)
+    except Exception as e:
+        scrat_json = e
+        scratres = '409'
 
     if str(scratres) != '200':
         to_print = pformat(block_to_update)
@@ -344,7 +356,11 @@ def sid_update_user_to_resigned(diego, dfqdn, res_rw_user, user, uid, context_ui
 
     ''' delete: need to check the line exist if not 409'''
     scrat_inst = Scrat(res_rw_user, '', fqdn=dfqdn, version=2, verify=verify)
-    (scrat_json, scratres) = scrat_inst.scratUpdate(block_to_update, overwrite_mode='exclusive', line_only=False, Full=True)
+    try:
+        (scrat_json, scratres) = scrat_inst.scratUpdate(block_to_update, overwrite_mode='exclusive', line_only=False, Full=True)
+    except Exception as e:
+        scrat_json = e
+        scratres = '409'
 
     if str(scratres) != '200':
         to_print = pformat(block_to_update)
@@ -384,7 +400,10 @@ def sid_update_user_exlude_approver_scheduler_change_management(diego, dfqdn, re
 
     ''' delete: need to check the line exist if not 409'''
     scrat_inst = Scrat(res_rw_user, '', fqdn=dfqdn, version=2, verify=verify)
-    (scratres) = scrat_inst.deleteLine(block_to_update)
+    try:
+        (scratres) = scrat_inst.deleteLine(block_to_update)
+    except Exception as e:
+        scratres = '409'
     if str(scratres) != '200':
          print("not removed " + user + " from " + typeExclude)
          if error_stop is True:
@@ -862,10 +881,10 @@ def main():
                             break
                 if 'Security Policy' in block_to_update['properties']['has as role']:
                     block_to_update['properties']['has as role'].remove('Security Policy')
-                if 'ISMS' not in block_to_update['properties']['has as role']:
-                    block_to_update['properties']['has as role'].append('ISMS')
-                if 'SMPM' not in block_to_update['properties']['has as role']:
-                    block_to_update['properties']['has as role'].append('SMPM')
+                #if 'ISMS' not in block_to_update['properties']['has as role']:
+                #    block_to_update['properties']['has as role'].append('ISMS')
+                #if 'SMPM' not in block_to_update['properties']['has as role']:
+                #    block_to_update['properties']['has as role'].append('SMPM')
             elif mb == 'dev':
                 if need_to_update is False and need_to_create is True:
                     if 'SNet SUP' not in block_to_update['properties']['belongs to']:
@@ -1092,7 +1111,8 @@ def main():
             for i in list(range(0, int(round(len(to_print) / 250)) + 1)):
                 logger.info('scrat %s cmd: %s' % (str(i), to_print[250 * i:250 * (i + 1)]))
 
-    sys.exit(1)
+    logger.info('Finished Synchronization')
+    sys.exit(0)
 
     params = {}
     sid_s_results = diego.diego_run_dieget_by_name('sid_sheduler_check', params)
-- 
GitLab