Skip to content
Snippets Groups Projects
Select Git revision
  • 20bb21e8563e3a858284e81b535d7dffc55ec170
  • develop default protected
  • redploy-placement-port
  • master protected
  • feature/NAT-1574-add-moodi-for-ixs
  • authorship-fix-from-develop
  • 1048-service-config-backfilling
  • feature/nat-1211-edgeport-lacp-xmit
  • fix/nat-1120-sdp-validation
  • NAT-1154-import-edge-port-update
  • fix/l3-imports
  • feature/10GGBS-NAT-980
  • fix/NAT-1009/fix-redeploy-base-config-if-there-is-a-vprn
  • 4.12
  • 4.11
  • 4.10
  • 4.8
  • 4.5
  • 4.4
  • 4.3
  • 4.2
  • 4.1
  • 4.0
  • 3.12
  • 3.11
  • 3.10
  • 3.9
  • 3.8
  • 3.7
  • 3.6
  • 3.5
  • 3.4
  • 3.3
33 results

setup.py

Blame
  • main.py 4.27 KiB
    from re import I
    import gitlab
    import requests
    import json
    from json2html import *
    
    # pobieranie listy projektów
    
    # testowe
    # headers = {'PRIVATE-TOKEN': 'glpat-hQFB1vBzz9rQzq8wuhcG'}
    # gl = gitlab.Gitlab(url='https://k8s-gitlab.software.geant.org', private_token='glpat-hQFB1vBzz9rQzq8wuhcG')
    # gl_user = 'https://k8s-gitlab.software.geant.org/api/v4/users'
    # gl_proj = 'https://k8s-gitlab.software.geant.org/api/v4/projects'
    # gl_license = 'repository/files/LICENSE?ref='
    # gl_branch = 'repository/branches'
    # projects = gl.projects.list()
    # (all=True)
    
    
    # produkcyjne
    headers = {'PRIVATE-TOKEN': 'glpat-P6orz6-t2f3n1BoVDrnr'}
    gl = gitlab.Gitlab(url='https://gitlab.geant.org', private_token='glpat-P6orz6-t2f3n1BoVDrnr')
    gl_user = 'https://gitlab.geant.org/api/v4/users'
    gl_proj = 'https://gitlab.geant.org/api/v4/projects'
    gl_license = 'repository/files/LICENSE?ref='
    gl_branch = 'repository/branches'
    projects = gl.projects.list(all=True)
    
    j_project = {}
    j_project['projects'] = {}
    for project in projects:
        print('Project ID: ', project.attributes['id'])
        print('Project Name: ', project.attributes['name_with_namespace'])
        # print('branch', project.attributes['default_branch'])
        print('status', project.attributes['visibility'])
        print('aktywny', project.attributes['last_activity_at'])
        print('grupa', project.attributes['namespace']['name'])
        x = project.attributes['id']
        check_b = gl_proj + '/' + str(x)
        check_b_response = requests.get(check_b, headers=headers)
        check_b_data = check_b_response.text
        check_b_answer = json.loads(check_b_data)
        if "default_branch" in check_b_answer:
            branch = project.attributes['default_branch']
            # x = project.attributes['id']
            c_link = gl_proj + '/' + str(x) + '/' + gl_license + branch
            c_response = requests.get(c_link, headers=headers)
            c_data = c_response.text
            c_answer = json.loads(c_data)
            if "message" in c_answer:
                print("License file: ", c_answer['message'])
                lic = c_answer['message']
            if "file_name" in c_answer:
                print("License file: ", c_answer['file_name'])
                lic = c_answer['file_name']
            print('branch', project.attributes['default_branch'])
        else:
            lic = 'No created repository'
        sep = 'T'
        full_act = project.attributes['last_activity_at']
        last_act = full_act.split(sep, 1)[0]
        # print("ostatnia aktywnosc: ", last_act)
        tmp = {
            'project_id': project.attributes['id'],
            'project_name': project.attributes['name_with_namespace'],
            'project_group': project.attributes['namespace']['name'],
            'project_status': project.attributes['visibility'],
            'project_license': lic,
            'project_last_activity': last_act
        }
        j_project['projects'][x] = {}
        j_project['projects'][x] = tmp
        j_project['projects'][x]['owners'] = {}
        link = (project.attributes['_links']['members'] + '/all')
        response = requests.get(link, headers=headers)
        data = response.text
        owners = json.loads(data)
        for owner in owners:
            if owner['access_level'] == 50:
                print('User ID: ', owner['id'])
                print('User Name: ', owner['name'])
                print('Access level: ', owner['access_level'])
                y = owner['id']
                j_project['projects'][x]['owners'][y] = {}
                user = gl.users.get(y)
                emails = user.emails.list()
                if user.email == user.commit_email:
                    user_tmp = {
                        'owner_id': owner['id'],
                        'owner_name': owner['name'],
                        'owner_mail': user.email,
                    }
                else:
                    user_tmp = {
                        'owner_id': owner['id'],
                        'owner_name': owner['name'],
                        'owner_mail': user.email,
                        'owner_mail_commit': user.commit_email
                    }
                j_project['projects'][x]['owners'][y] = user_tmp
        print(8*"-")
    new_jproject = json.dumps(j_project, indent=4, ensure_ascii=False)
    
    # print(new_jproject)
    
    with open("gitlab-projects.json", "w", encoding='utf8') as outfile:
        outfile.write(new_jproject)
    
    new_jproject_html = json2html.convert(json=new_jproject)
    
    with open("gitlab-projects.html", "w", encoding='utf8') as outfile:
        outfile.write(new_jproject_html)