From 45ee8d99c6d2affa2c35aa36e66d72ec9c2e2fa5 Mon Sep 17 00:00:00 2001 From: fandrem <none@none> Date: Mon, 2 May 2022 14:49:04 +0200 Subject: [PATCH] Feature #28491 - sid_user.py script --- bin/sid_user.py | 57 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 45 insertions(+), 12 deletions(-) diff --git a/bin/sid_user.py b/bin/sid_user.py index 2a34800..5bea449 100755 --- a/bin/sid_user.py +++ b/bin/sid_user.py @@ -355,6 +355,32 @@ def sid_update_user_to_resigned(diego, dfqdn, res_rw_user, user, uid, context_ui # print('scrat %s update cmd: %s' % (str(i), to_print[250 * i:250 * (i + 1)])) +def sid_update_user_exlude_approver_scheduler_change_management(diego, dfqdn, res_rw_user, user, uid, typeExclude, context_uid=778000000, verify=True): + + results = diego.diegoGetObject(uid, context_uid) + logger.debug(results) + logger.debug('Type: ' + typeExclude) + block_to_update = { + 'uid': uid, + 'name': user, + 'context': context_uid, + 'type': typeExclude, + 'properties': {'is a': typeExclude} + } + to_print = pformat(block_to_update) + for i in list(range(0, int(round(len(to_print) / 250)) + 1)): + logger.info('scrat %s update cmd: %s' % (str(i), to_print[250 * i:250 * (i + 1)])) + + ''' delete: need to check the line exist if not 409''' + scrat_inst = Scrat(res_rw_user, '', fqdn=dfqdn, version=2, verify=verify) + print(dfqdn) + (scratres) = scrat_inst.deleteLine(block_to_update) + if str(scratres) != '200': + print("not removed " + user + " from " + typeExclude) + else: + print("removed " + user + " from " + typeExclude) + + def main(): parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, @@ -395,6 +421,8 @@ def main(): logger.error('should not happen') sys.exit(1) + print(fqdn) + #exit(1) snet_groups = 'com,mgt,net,pm,sd,sec,sup,tda'.split(',') official_groups = ['officials'] @@ -411,6 +439,9 @@ def main(): departments = ['DIGIT.C.4', 'DIGIT.C.4.002', 'DIGIT.C.4.003', 'DIGIT.C.4.006', 'DIGIT.C.4.007', 'DIGIT.C.4.008'] + + # last reminder request: 04/2022 + approver_scheduler_list = ['fournla', 'chevaju', 'gondago'] snet_results = dict() snet_results = snet_ldap_get() logger.debug(pformat(snet_results)) @@ -594,7 +625,8 @@ def main(): block_to_update['properties']['has access to application program'] = list() block_to_update['properties']['has access to application program'].append(t) - block_to_update['properties']['has as directorate general'] = ec_results['users'][user]['dg'] + if 'dg' in ec_results['users'][user] : + block_to_update['properties']['has as directorate general'] = ec_results['users'][user]['dg'] block_to_update['properties']['has as long name'] = ec_results['users'][user]['givenName'] + ' ' + ec_results['users'][user]['sn'] @@ -604,11 +636,12 @@ def main(): block_to_update['properties']['has telephone number'] = ec_results['users'][user]['ecInternationalTelephoneNumber'] - block_to_update['properties']['is a member of'] = ec_results['users'][user]['departmentNumber'] + if 'departmentNumber' in ec_results['users'][user] : + block_to_update['properties']['is a member of'] = ec_results['users'][user]['departmentNumber'] - if ec_results['users'][user]['c'] == 'BE': + if 'c' in ec_results['users'][user] and ec_results['users'][user]['c'] == 'BE': block_to_update['properties']['is located in'] = 'Brussels' - elif ec_results['users'][user]['c'] == 'LU': + elif 'c' in ec_results['users'][user] and ec_results['users'][user]['c'] == 'LU': block_to_update['properties']['is located in'] = 'Luxembourg' # 'com,mgt,net,pm,sd,sec,sup,tda' @@ -734,7 +767,7 @@ def main(): if 'Visual' not in block_to_update['properties']['has access to application program']: block_to_update['properties']['has access to application program'].append('Visual') - if need_to_update is False and need_to_create is True: + if need_to_update is False and need_to_create is True and 'departmentNumber' in ec_results['users'][user]: if ec_results['users'][user]['departmentNumber'] == 'DIGIT.C.4.007': block_to_update['properties']['belongs to'].append('NIS') @@ -783,11 +816,11 @@ def main(): for user in sid_s_results[1]: if user in devnull_del_user: continue - if user not in sid_need_scheduler: + if user not in sid_need_scheduler or user not in approver_scheduler_list: logger.error('SID user ' + user + ' should not be an scheduler.') if not dryrun: - # sid_update_user_to_resigned(diego, dfqdn, res_rw_user, user, sid_results[1][user]['uid']) - pass + sid_update_user_exlude_approver_scheduler_change_management(diego, dfqdn, res_rw_user, user, sid_s_results[1][user]['uid'], 'scheduler') + #pass else: logger.error('dry run, user not removed from the scheduler role.') continue @@ -809,11 +842,11 @@ def main(): for user in sid_a_results[1]: if user in devnull_del_user: continue - if user not in sid_need_approver: + if user not in sid_need_approver or user not in approver_scheduler_list: logger.error('SID user ' + user + ' should not be an approver.') if not dryrun: - # sid_update_user_to_resigned(diego, dfqdn, res_rw_user, user, sid_results[1][user]['uid']) - pass + sid_update_user_exlude_approver_scheduler_change_management(diego, dfqdn, res_rw_user, user, sid_a_results[1][user]['uid'], 'approver') + #pass else: logger.error('dry run, user not removed from the approver role.') continue @@ -851,7 +884,7 @@ def main(): for user in snet_account_index: if user in devnull_user: continue - if ec_results['users'][user]['departmentNumber'] != department: + if 'departmentNumber' in ec_results['users'][user] and ec_results['users'][user]['departmentNumber'] != department: continue if user not in sid_d_results[1][department]['has as member']: logger.info('SID user ' + user + ' should be addded to department ' + department + '.') -- GitLab