From 19edfbb42ea83489a3a1b978c940adc93927509b Mon Sep 17 00:00:00 2001 From: David Kirwan Date: Mon, 25 Nov 2024 14:27:53 +0000 Subject: [PATCH] communishift: mark admin namespace as do not delete will move project offboarding into separate playbook add fasjson lookup for communishift project notifications Signed-off-by: David Kirwan --- inventory/group_vars/all | 2 ++ playbooks/manual/communishift_cleanup.yml | 5 +++ ...t_retrieve_fasjson_project_admin_emails.py | 33 +++++++++---------- .../tasks/cleanup-administration-tasks.yml | 1 - .../retrieve-communishift-admin-data.yml | 6 +++- .../send-tenant-deletion-notifications.yml | 5 +-- 6 files changed, 29 insertions(+), 23 deletions(-) diff --git a/inventory/group_vars/all b/inventory/group_vars/all index 7db87ef565..136d4a2d3a 100644 --- a/inventory/group_vars/all +++ b/inventory/group_vars/all @@ -35,6 +35,8 @@ br1_nm: 255.255.255.0 collectd_apache: true # communishift project resource overrides communishift_projects: + communishift-admins: + do_not_delete: true # Marked do not delete 2024-11-25 communishift-eventbot: name: communishift-eventbot communishift-fedora-review-service: diff --git a/playbooks/manual/communishift_cleanup.yml b/playbooks/manual/communishift_cleanup.yml index c56b741e16..6f599fdfc0 100644 --- a/playbooks/manual/communishift_cleanup.yml +++ b/playbooks/manual/communishift_cleanup.yml @@ -16,6 +16,11 @@ loop_control: loop_var: communishift_package + - name: Communishift Retrieve FASJSON data + include_role: + name: communishift + tasks_from: retrieve-communishift-admin-data + - name: Communishift Cluster Cleanup Tasks with_items: "{{ communishift_projects }}" include_role: diff --git a/roles/communishift/library/communishift_retrieve_fasjson_project_admin_emails.py b/roles/communishift/library/communishift_retrieve_fasjson_project_admin_emails.py index dcdfdf362a..06298121c5 100644 --- a/roles/communishift/library/communishift_retrieve_fasjson_project_admin_emails.py +++ b/roles/communishift/library/communishift_retrieve_fasjson_project_admin_emails.py @@ -57,26 +57,28 @@ matched_groups: type: str returned: always sample: -[ - { +{ + "communishift-yyy": { "group_name": "communishift-yyy", "group_members": [ {"username": "user1": {"emails": ["user1@gmail.com"]}}, {"username": "user2": {"emails": ["user2@gmail.com"]}}, {"username": "user3": {"emails": ["user3@gmail.com"]}}, {"username": "user4": {"emails": ["user4@gmail.com"]}} - ] + ], + "email_list": ["user1@gmail.com", "user2@gmail.com", "user3@gmail.com", "user4@gmail.com"] }, - { + "communishift-abc": { "group_name": "communishift-abc", "group_members": [ {"username": "user1": {"emails": ["user1@gmail.com"]}}, {"username": "user3": {"emails": ["user3@gmail.com"]}}, {"username": "user7": {"emails": ["user7@gmail.com"]}}, {"username": "user9": {"emails": ["user9@gmail.com"]}} - ] + ], + "email_list": ["user1@gmail.com", "user3@gmail.com", "user7@gmail.com", "user9@gmail.com"] } -] +} msg: description: The output message that the module generates. @@ -159,28 +161,25 @@ def run_module(): groups_response = get_groups(http_client) # print(json.dumps(groups_response)) - communishift_groups = [] + communishift_groups = {} regexp = re.compile(r"%s" % (group_name_pattern)) for v in groups_response["result"]: if regexp.search(v["groupname"]): - group = {"groupname": v["groupname"], "groupmembers": []} + group = {"groupname": v["groupname"], "groupmembers": [], "email_list": []} group_member_res = get_group_members(http_client, v["groupname"]) # print(json.dumps(group_member_res)) - for v in group_member_res["result"]: - user_data_res = get_group_member_data(http_client, v["username"]) - # user_data_res["result"]["emails"] contains {"user1": {"emails": ["user1@gmail.com"]}} - u = {"username": v["username"], "emails": user_data_res["result"]["emails"]} + for val in group_member_res["result"]: + user_data_res = get_group_member_data(http_client, val["username"]) + u = {"username": val["username"], "emails": user_data_res["result"]["emails"]} group["groupmembers"].append(u) - communishift_groups.append(group) - # print(v["groupname"]) - - # print(json.dumps(communishift_groups)) + group["email_list"].extend(user_data_res["result"]["emails"]) + communishift_groups[v["groupname"]] = group result["matched_groups"] = json.dumps(communishift_groups) result["changed"] = True - result["msg"] = "Successfully retrieved groups and their users from fasjson." + result["message"] = "Successfully retrieved groups and their users from fasjson." except Exception: raise diff --git a/roles/communishift/tasks/cleanup-administration-tasks.yml b/roles/communishift/tasks/cleanup-administration-tasks.yml index 4cb827e85f..aa8357543b 100644 --- a/roles/communishift/tasks/cleanup-administration-tasks.yml +++ b/roles/communishift/tasks/cleanup-administration-tasks.yml @@ -1,4 +1,3 @@ --- #- include_tasks: retrieve-communishift-admin-data.yml - include_tasks: send-tenant-deletion-notifications.yml -- include_tasks: start-tenant-project-cleanup.yml diff --git a/roles/communishift/tasks/retrieve-communishift-admin-data.yml b/roles/communishift/tasks/retrieve-communishift-admin-data.yml index bdd6e725b1..e0a6d96e2e 100644 --- a/roles/communishift/tasks/retrieve-communishift-admin-data.yml +++ b/roles/communishift/tasks/retrieve-communishift-admin-data.yml @@ -12,7 +12,11 @@ register: communishift_project_emails_fasjson_response run_once: true +- name: Check if this project should be deleted + ansible.builtin.set_fact: + communishift_project_emails: "{{ communishift_project_emails_fasjson_response['matched_groups'] | from_json }}" + - name: Debug debug: - msg: "{{ communishift_project_emails_fasjson_response }}" + msg: "{{ communishift_project_emails }}" run_once: true diff --git a/roles/communishift/tasks/send-tenant-deletion-notifications.yml b/roles/communishift/tasks/send-tenant-deletion-notifications.yml index e4ff07e314..c1be26179c 100644 --- a/roles/communishift/tasks/send-tenant-deletion-notifications.yml +++ b/roles/communishift/tasks/send-tenant-deletion-notifications.yml @@ -25,10 +25,7 @@ Make sure to reference the project name and please provide a reason for the extention, also please include how long you wish the extention to be in place for. from: admin@fedoraproject.org - to: - - D Kirwan - - David K - cc: David Kirwan + to: "{{ communishift_project_emails[item.value.name]['email_list'] }}" headers: - Reply-To=admin@fedoraproject.org charset: us-ascii