Skip to content
Snippets Groups Projects
Commit c5d1d9c5 authored by Tomasz Kaźmierczak's avatar Tomasz Kaźmierczak
Browse files

New script - used during migration Ultimate - CE

parent 5dd2d937
Branches
No related tags found
No related merge requests found
Pipeline #83738 canceled
import gitlab
# import requests
# import json
import argparse
import os
from dotenv import load_dotenv
# import pandas as pd
parser = argparse.ArgumentParser(description="Users and his projects from gitlab")
parser.add_argument("--production", action='store_true', help="Use for Production")
parser.add_argument("--developer", action='store_true', help="Use for Developer")
args = parser.parse_args()
load_dotenv()
if args.production:
token = os.getenv('PRODUCTION_TOKEN')
print('Production Mode, connect to server')
headers = {'PRIVATE-TOKEN': token}
gl = gitlab.Gitlab(url='https://gitlab.geant.org', private_token=token)
# gl_proj = 'https://gitlab.geant.org/api/v4/projects'
projects = gl.projects.list(all=True)
# groups = gl.groups.list(all=False)
# gl.auth()
# gl.enable_debug()
elif args.developer:
token = os.getenv('CE_PRODUCTION_TOKEN')
print('Developer Mode, connect to server')
headers = {'PRIVATE-TOKEN': token}
gl = gitlab.Gitlab(url='https://gitlab.software.geant.org', private_token=token)
projects = gl.projects.list(all=True)
# groups = gl.groups.list(all=True)
else:
print("--production or --developer, please, now exit")
exit()
def proj_group_list(p_id: int) -> list:
'''zwraca id projektów danej grupy'''
edu = gl.groups.get(p_id, lazy=True, all=True)
p_list_name = []
for e in edu.projects.list(lazy=True, all=True):
p_list_name.append(e.id)
return p_list_name
def print_group_list_names(p_id: int):
'''zwraca nazwę projektów danej grupy'''
edu = gl.groups.get(p_id, lazy=True, all=True)
print(edu)
for e in edu.projects.list(lazy=True, all=True):
print(e.name_with_namespace)
# return p_list_name
def arch_project(p_id: int) -> str:
"""archiwizuje wskazany projekt"""
project = gl.projects.get(p_id)
project.archive()
odp = "archiwizacja projektu " + str(p_id)
return odp
def ce_only_projects(no_groups: list) -> list:
"""zwraca listę projektów bez tych,
które pozostają w unlimited"""
tmp_list = []
for project in projects:
# print(project.id)
if project.id not in no_groups:
tmp_list.append(project.id)
return tmp_list
def proj_group_and_subgroup(group_list: list) -> list:
"""lista projektów grup i subgroup"""
a_tmp_list = []
for gr in group_list:
b_tmp_list = proj_group_list(gr)
for b in b_tmp_list:
a_tmp_list.append(b)
return a_tmp_list
def group_members(id_gr: int) -> list:
"""tworzy listę użytkowników podanej grupy"""
u_tmp_list = []
group = gl.groups.get(id_gr)
members = group.members_all.list(get_all=True)
for member in members:
u_tmp_list.append(member.id)
return u_tmp_list
# InAcademia / dev => 260
# InAcademia / Ops => 362
# eduTEAMS / Core AAI Platform => 779
# eduTEAMS / Customer deployments => 773
# eduTEAMS / Test deployments => 774
# eduTEAMS / Internal Tooling => 777
# eduTEAMS / Auth Proxy => 772
# eduTEAMS / Consent Management => 780
# eduTEAMS / Discovery Service => 776
# eduTEAMS / MDX => 775
# eduTEAMS / Membership Management System => 781
# eduTEAMS / Service Management => 778
# lokalni użytkownicy Gitlab
exclude_users = ['root', 'ghost', 'tkazmierczak', 'visual-review-bot', 'jacques', 'pawel.sierota', 'support-bot',
'psierota', 'pisarz', 'alert-bot', 'mathias.baggendorf', 'rash.mali']
# InAcademia members groups
ina_groups = [29, 260, 362]
# InAcademia all projects
ina_projects_list = proj_group_and_subgroup(ina_groups)
# EduTeams member groups
edu_groups = [146, 779, 773, 774, 777, 772, 780, 776, 775, 781, 778]
# EduTeams all projects
edu_projects_list = proj_group_and_subgroup(edu_groups)
# Ultimate - all projects
ultimate_projects_list = edu_projects_list + ina_projects_list
# List of projects moved to CE
ce_projects_list = ce_only_projects(ultimate_projects_list)
""" lista użytkowników grup Ultimate"""
edu_members = group_members(146)
# print("edu members: " + str(edu_members))
#
ina_members = group_members(29)
# print("InAcademia users: " + str(ina_members))
""" lista pozostałych projektów """
# print("InAcademia Projects: " + str(ina_projects_list))
# print("EduTeams Projects: " + str(edu_projects_list))
# print("CE project: " + str(ce_projects_list))
"""lista redirect, umieszczona później na serwerze Ultimate"""
# for rl in ce_projects_list:
# project_ = gl.projects.get(rl)
# print("# " + str(rl))
# print(f"rewrite ^/{project_.path_with_namespace}$" + " " +
# f"https://gitlab.software.geant.org/{project_.path_with_namespace} ;")
# print(f"rewrite ^/{project_.path_with_namespace}.git$" + " " +
# f"https://gitlab.software.geant.org/{project_.path_with_namespace}.git ;")
# # print(project_.http_url_to_repo)
# print(f"rewrite ^/{project_.path_with_namespace}/(.*)$" + " " +
# f"https://gitlab.software.geant.org/{project_.path_with_namespace}/$1 ;")
# print(f"rewrite ^/api/v4/project/{project_.id}/(.*)$" + " " +
# f"https://gitlab.software.geant.org/api/v4/project/{project_.id}/$1 ;")
# print("####")
""" archiwizacja wszystkich projektów, które nie zostają na ultimate"""
# print("Archiwizacja projektów...")
# for rl in ce_projects_list:
# tmp_a = arch_project(rl)
# print(tmp_a)
""" archiwizacja projektów Ultimate na CE"""
# # print("Archiwizacja projektów...")
# for rl in ultimate_projects_list:
# tmp_a = arch_project(rl)
# print(tmp_a)
""" użytkownicy lokalni/ldap w gitlab"""
gitlab_members = []
for u in exclude_users:
tmp_user = gl.users.list(username=u)[0]
gitlab_members.append(tmp_user.id)
print("Gitlab Exclude users: " + str(gitlab_members))
""" Ultimate - wyłączenie użytkowników spoza projektów Ultimate"""
# users = gl.users.list(lazy=True, all=True)
# for user in users:
# if user.id not in gitlab_members + ina_members + edu_members:
# tmp_user = gl.users.get(user.id)
# tmp_user.block()
# print("Blocked user: " + tmp_user.username)
""" CE - archiwizacja projektów, które pozostały na Ultimate """
# for project in projects:
# if project.id in ultimate_projects_list:
# print(project.name_with_namespace)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment