From 47394300d7c5bbdbfdf25bd2f82c0f0a9676f045 Mon Sep 17 00:00:00 2001
From: Sergey Turivniy <turivniy@gmail.com>
Date: Jan 03 2018 17:06:50 +0000
Subject: Add statistic page. Old one stable end new one


---

diff --git a/statictic_page/new_page/.gitignore b/statictic_page/new_page/.gitignore
new file mode 100644
index 0000000..931d5b2
--- /dev/null
+++ b/statictic_page/new_page/.gitignore
@@ -0,0 +1,3 @@
+.up*
+*.pyc
+.idea/
diff --git a/statictic_page/new_page/README.md b/statictic_page/new_page/README.md
new file mode 100644
index 0000000..3d0ed66
--- /dev/null
+++ b/statictic_page/new_page/README.md
@@ -0,0 +1,46 @@
+#### Get packages statistic and generate file
+
+Navigate to folder with tests:
+```
+$ cd AtomicCi/statictic_page/new_page/
+```
+
+Create python virtualenv with python3
+and activate it:
+```
+$ virtualenv -p python3 envname
+$ . envname/bin/activate
+```
+
+Install requirenments:
+```
+$ pip install -r requirenments.txt
+```
+
+Edit file <code>config.py</code>, add <code>upstreamfirst_api_key</code> and <code>dist_git_api_key</code>. You can generate then on settings page:
+```
+upstreamfirst_api_key = ''
+dist_git_api_key = ''
+
+UPSTREAMFIRST_URL = 'https://upstreamfirst.fedorainfracloud.org/'
+DIST_GIT_URL = 'https://src.fedoraproject.org/'
+
+FILE_UPLOAD_2_WIKI = 'upload_to_wiki.txt'
+FILE_PACKAGES = 'upstreamfirst_packages.txt'
+```
+Also you can change names of the files <code>FILE_UPLOAD_2_WIKI</code> and <code>FILE_PACKAGES</code>
+
+To run code just execute in a command line:
+```
+$ python runner.py
+```
+
+File <code>upstreamfirst_packages.txt</code> will be created.
+You can simply check progress by executing following command in another terminal:
+```
+$ tail -f upstreamfirst_packages.txt
+```
+
+After script will be finished, find <code>upload_to_wiki.txt</code>. Use data to upload it to the wiki.
+
+The result: https://fedoraproject.org/wiki/CI/Tests/new-stat#This_page_is_automatically_updated._Do_not_edit.
\ No newline at end of file
diff --git a/statictic_page/new_page/config.py b/statictic_page/new_page/config.py
new file mode 100644
index 0000000..46ede51
--- /dev/null
+++ b/statictic_page/new_page/config.py
@@ -0,0 +1,8 @@
+upstreamfirst_api_key = 'R39447IPZ8GVLQCFSZGHJHY3W25V8GB08Z4Z3VW4GTFANOJHN9JRVAT5H1NIDOB0'
+dist_git_api_key = 'LL47C2WS7LM0PYEZ7EQN3FYZI3UBW9VK82EBEYJRTXW1JSRD458506XMH9UROJFZ'
+
+UPSTREAMFIRST_URL = 'https://upstreamfirst.fedorainfracloud.org/'
+DIST_GIT_URL = 'https://src.fedoraproject.org/'
+
+FILE_UPLOAD_2_WIKI = 'upload_to_wiki.txt'
+FILE_PACKAGES = 'upstreamfirst_packages.txt'
\ No newline at end of file
diff --git a/statictic_page/new_page/generate_file.py b/statictic_page/new_page/generate_file.py
new file mode 100644
index 0000000..2749247
--- /dev/null
+++ b/statictic_page/new_page/generate_file.py
@@ -0,0 +1,196 @@
+from tools import get_list_of_packages_from_the_file
+from config import FILE_UPLOAD_2_WIKI
+from config import FILE_PACKAGES
+
+def generate_file_upload_on_wiki(input_file):
+    """Generate file that will be uploaded on the wiki page
+
+    Args:
+        input_file (file): file with packages
+
+    Returns:
+        (file): file that will be uploaded on the wiki page
+    """
+
+    packages = get_list_of_packages_from_the_file(input_file)
+    packages_statistic = get_packages_statistic(packages)
+
+    with open(FILE_UPLOAD_2_WIKI, 'w') as upload_file:
+
+        upload_file.write('== This page is automatically updated. Do not edit. ==\n')
+        upload_file.write('{| class="wikitable sortable"\n')
+        upload_file.write('! style="text-align:left;" scope="col" rowspan="2" | Package\n')
+        upload_file.write('! scope="col" colspan="6"| dist-git\n')
+        upload_file.write('! scope="col" colspan="4"| upstreamfirst\n')
+        upload_file.write('|-\n')
+        upload_file.write('! scope="col" | tests.yml\n')
+        upload_file.write('! scope="col" | classic\n')
+        upload_file.write('! scope="col" | container\n')
+        upload_file.write('! scope="col" | atomic\n')
+        upload_file.write('! scope="col" | missing\n')
+        upload_file.write('! scope="col" | pending PR\n')
+        upload_file.write('! scope="col" | tests.yml\n')
+        upload_file.write('! scope="col" | classic\n')
+        upload_file.write('! scope="col" | container\n')
+        upload_file.write('! scope="col" | atomic\n')
+        upload_file.write('|-\n')
+
+        # Statistics
+        upload_file.write('! style="text-align:left; font-weight: lighter;" scope="row" | Total known packages\n')
+        upload_file.write('| style="text-align:center;" scope="row" colspan="10" | {}\n'.format(
+            packages_statistic['total']))
+        upload_file.write('|-\n')
+        upload_file.write('! style="text-align:left; font-weight: lighter;" scope="row" | Packages in category\n')
+        upload_file.write('| {}\n'.format(packages_statistic['dist-git']['test_yml']))
+        upload_file.write('| {}\n'.format(packages_statistic['dist-git']['test_tags']['classic']))
+        upload_file.write('| {}\n'.format(packages_statistic['dist-git']['test_tags']['container']))
+        upload_file.write('| {}\n'.format(packages_statistic['dist-git']['test_tags']['atomic']))
+        upload_file.write('| {}\n'.format(packages_statistic['dist-git']['missing']))
+        upload_file.write('| {}\n'.format(packages_statistic['dist-git']['pending']))
+        upload_file.write('| {}\n'.format(packages_statistic['upstreamfirst']['test_yml']))
+        upload_file.write('| {}\n'.format(packages_statistic['upstreamfirst']['test_tags']['classic']))
+        upload_file.write('| {}\n'.format(packages_statistic['upstreamfirst']['test_tags']['container']))
+        upload_file.write('| {}\n'.format(packages_statistic['upstreamfirst']['test_tags']['atomic']))
+        upload_file.write('|-\n')
+
+        # fill up file with data
+        for package in packages:
+            dict_pack = eval(package)
+
+            upload_file.write('!style="text-align:left;" scope="row" | {}\n'.format(dict_pack['name']))
+
+            upload_file.write(format_color(dict_pack) + format_test_yml(dict_pack['dist-git']))  # dist-git tests.yml
+            upload_file.write('{}| {}\n'.format(format_color(dict_pack), dict_pack['dist-git']['test_tags']['classic']))  # dist-git classic
+            upload_file.write('{}| {}\n'.format(format_color(dict_pack), dict_pack['dist-git']['test_tags']['container']))  # dist-git container
+            upload_file.write('{}| {}\n'.format(format_color(dict_pack), dict_pack['dist-git']['test_tags']['atomic']))  # dist-git atomic
+            upload_file.write('{}| {}\n'.format(format_color(dict_pack), dict_pack['dist-git']['missing']))  # dist-git missing
+            upload_file.write(format_color(dict_pack) + format_pending(dict_pack['dist-git']['pending']))  # dist-git pending
+
+            upload_file.write(format_color(dict_pack) + format_test_yml(dict_pack['upstreamfirst']))  # upstreamfirst tests.yml
+            upload_file.write('{}| {}\n'.format(format_color(dict_pack), dict_pack['upstreamfirst']['test_tags']['classic']))  # upstreamfirst classic
+            upload_file.write('{}| {}\n'.format(format_color(dict_pack), dict_pack['upstreamfirst']['test_tags']['container']))  # upstreamfirst container
+            upload_file.write('{}| {}\n'.format(format_color(dict_pack), dict_pack['upstreamfirst']['test_tags']['atomic']))  # upstreamfirst atomic
+
+            upload_file.write('|-\n')
+
+        upload_file.write('|} \n')
+    upload_file.close()
+
+
+def format_pending(pending):
+    """Updates pending cell if package is on pending
+
+    Args:
+        pending (dict): pending is dict_pack['dist-git']['pending']
+
+    Returns:
+        empty cell or cell with info
+    """
+    if pending['status'] == '':
+        return '| \n'
+    else:
+
+        user_str = pending['user']['name'] + ' ' + pending['user']['fullname']
+        return '|[[{}|YES]] [{} _*] \n'.format(user_str, pending['url'])
+
+
+def format_test_yml(test_yml):
+    """
+    test_yml is dict_pack['upstreamfirst']
+    or
+    test_yml is dict_pack['dist-git']
+    """
+    if test_yml['package_url']:
+        return '| [{} {}]\n'.format(test_yml['package_url'], test_yml['test_yml'])
+    else:
+        return '| \n'
+
+
+def format_color(dict_pack):
+    """Function formats cell color to #7FFF00" 'Green' if package ready for porting"""
+
+    if dict_pack['dist-git']['pending']['status'] == '' \
+            and dict_pack['dist-git']['test_yml'] == '' \
+            and dict_pack['upstreamfirst']['test_yml'] != '':
+        return '! style="background-color:#7FFF00"'
+    return ''
+
+
+def get_packages_statistic(packages):
+    """Function gets packages statistic
+
+    Args:
+        packages (list): list of packages
+
+    Returns:
+        statistic_json (dict): packages statistic
+    """
+    statistic_json = {'total': '',
+                      'dist-git': {
+                          'test_yml': '',
+                          'missing': '',
+                          'pending': '',
+                          'test_tags': {'classic': '', 'container': '', 'atomic': ''}},
+                      'upstreamfirst': {'test_yml': '',
+                                        'test_tags': {'classic': '', 'container': '', 'atomic': ''}}}
+    total_packages = len(packages)
+    statistic_json['total'] = str(total_packages)
+    statistic_json['dist-git']['test_yml'] = _get_packages_number_in_category(total_packages, packages,
+                                                                              'dist-git', 'test_yml')
+    statistic_json['dist-git']['missing'] = _get_packages_number_in_category(total_packages, packages,
+                                                                             'dist-git', 'missing')
+    statistic_json['dist-git']['pending'] = _get_packages_number_in_category(total_packages, packages,
+                                                                             'dist-git', 'pending', 'status')
+    statistic_json['dist-git']['test_tags']['classic'] = _get_packages_number_in_category(total_packages, packages,
+                                                                                          'dist-git',
+                                                                                          'test_tags', 'classic')
+    statistic_json['dist-git']['test_tags']['container'] = _get_packages_number_in_category(total_packages, packages,
+                                                                                            'dist-git',
+                                                                                            'test_tags', 'container')
+    statistic_json['dist-git']['test_tags']['atomic'] = _get_packages_number_in_category(total_packages, packages,
+                                                                                         'dist-git',
+                                                                                         'test_tags', 'atomic')
+
+    statistic_json['upstreamfirst']['test_yml'] = _get_packages_number_in_category(total_packages, packages,
+                                                                                   'upstreamfirst', 'test_yml')
+    statistic_json['upstreamfirst']['test_tags']['classic'] = _get_packages_number_in_category(total_packages, packages,
+                                                                                               'upstreamfirst',
+                                                                                               'test_tags', 'classic')
+    statistic_json['upstreamfirst']['test_tags']['container'] = _get_packages_number_in_category(total_packages,
+                                                                                                 packages,
+                                                                                                 'upstreamfirst',
+                                                                                                 'test_tags',
+                                                                                                 'container')
+    statistic_json['upstreamfirst']['test_tags']['atomic'] = _get_packages_number_in_category(total_packages, packages,
+                                                                                              'upstreamfirst',
+                                                                                              'test_tags', 'atomic')
+    return statistic_json
+
+
+def _get_packages_number_in_category(total_packages, all_packages, *args):
+    """
+    Function returns updated statistic_json from the get_packages_statistic()
+    Args:
+        total_packages (int): total packages
+        all_packages (list of jsons): all packages
+
+    Returns:
+        formatted_string (all_packages):
+            for example: '48 (42%)'
+    """
+    number_in_category = 0
+    for item in all_packages:
+        dict_pack = eval(item)
+
+        if len(args) == 2:
+            if 'YES' in dict_pack[args[0]][args[1]]:
+                number_in_category += 1
+        else:
+            if 'YES' in dict_pack[args[0]][args[1]][args[2]]:
+                number_in_category += 1
+    formatted_string = "{} ({}%)".format(number_in_category, round((100*number_in_category)/total_packages))
+    return formatted_string
+
+
+if __name__ == '__main__':
+    exit(0)
diff --git a/statictic_page/new_page/requirements.txt b/statictic_page/new_page/requirements.txt
new file mode 100644
index 0000000..3866aaa
--- /dev/null
+++ b/statictic_page/new_page/requirements.txt
@@ -0,0 +1,2 @@
+requests
+mwclient
\ No newline at end of file
diff --git a/statictic_page/new_page/runner.py b/statictic_page/new_page/runner.py
new file mode 100644
index 0000000..4396671
--- /dev/null
+++ b/statictic_page/new_page/runner.py
@@ -0,0 +1,80 @@
+from tools import *
+
+from generate_file import generate_file_upload_on_wiki
+
+dist_git_api_key = config.dist_git_api_key
+
+UPSTREAMFIRST_URL = config.UPSTREAMFIRST_URL
+DIST_GIT_URL = config.DIST_GIT_URL
+
+package_json = {'name': '',
+                'dist-git': {
+                    'package_url': '',
+                    'test_yml': '',
+                    'missing': '',
+                    'pending': {'status': '', 'url': '', 'user': {}},
+                    'test_tags': {'classic': '', 'container': '', 'atomic': ''}},
+                'upstreamfirst': {'test_yml': '',
+                                  'package_url': '',
+                                  'test_tags': {'classic': '', 'container': '', 'atomic': ''}}}
+
+
+def wrapper_for_get_pull_requests(package):
+    """Function updates package_json with correct information"""
+
+    raw_text = get_pull_requests(DIST_GIT_URL, package, dist_git_api_key)
+    result = manage_pull_request(raw_text)
+    package_json['name'] = package
+
+    if result is not None:
+        package_json['dist-git']['pending']['url'] = result['url']
+        package_json['dist-git']['pending']['user'] = result['user']
+        package_json['dist-git']['pending']['status'] = 'YES'
+    else:
+        package_json['dist-git']['pending']['url'] = ''
+        package_json['dist-git']['pending']['user'] = ''
+        package_json['dist-git']['pending']['status'] = ''
+
+    # Get upstreamfirst test-tags
+    upstream_test_tags = handle_test_tags(UPSTREAMFIRST_URL, package)
+    upstream_test_tags = test_tags_to_dict(upstream_test_tags)
+    package_json['upstreamfirst']['test_tags'] = upstream_test_tags
+
+    upstream_url_to_test_yml = get_url_to_test_yml(UPSTREAMFIRST_URL, package)
+    if check_if_test_yml_exists(upstream_url_to_test_yml):
+        package_json['upstreamfirst']['test_yml'] = 'YES'
+        package_json['upstreamfirst']['package_url'] = upstream_url_to_test_yml
+    else:
+        package_json['upstreamfirst']['test_yml'] = ''
+        package_json['upstreamfirst']['package_url'] = ''
+
+    # Get dist-git test-tags
+    dist_git_test_tags = handle_test_tags(DIST_GIT_URL, package)
+    dist_git_test_tags = test_tags_to_dict(dist_git_test_tags)
+    package_json['dist-git']['test_tags'] = dist_git_test_tags
+
+    dist_git_url_to_test_yml = get_url_to_test_yml(DIST_GIT_URL, package)
+    if check_if_test_yml_exists(dist_git_url_to_test_yml):
+        package_json['dist-git']['test_yml'] = 'YES'
+        package_json['dist-git']['package_url'] = dist_git_url_to_test_yml
+    else:
+        package_json['dist-git']['test_yml'] = ''
+        package_json['dist-git']['package_url'] = ''
+
+    # Write results to the file
+    write_results_to_the_file(package_json, config.FILE_PACKAGES)
+
+
+if __name__ == '__main__':
+    # Prepare environment
+    delete_files_before_running([config.FILE_PACKAGES, config.FILE_UPLOAD_2_WIKI])
+
+    # Get all open pull requests
+    projects = get_all_projects(UPSTREAMFIRST_URL, upstreamfirst_api_key)
+    all_packages = get_projects_names(projects)
+
+    for package in all_packages:
+        wrapper_for_get_pull_requests(package)
+
+    generate_file_upload_on_wiki(config.FILE_PACKAGES)
+    exit(0)
diff --git a/statictic_page/new_page/tools.py b/statictic_page/new_page/tools.py
new file mode 100644
index 0000000..379fdd1
--- /dev/null
+++ b/statictic_page/new_page/tools.py
@@ -0,0 +1,272 @@
+import os
+import re
+import requests
+
+import config
+
+
+upstreamfirst_api_key = config.upstreamfirst_api_key
+dist_git_api_key = config.dist_git_api_key
+
+UPSTREAMFIRST_URL = config.UPSTREAMFIRST_URL
+DIST_GIT_URL = config.DIST_GIT_URL
+
+
+def get_pull_requests(site_url, package, api_key):
+    """Get pull requests from site using API
+
+    Args:
+        site_url (string): url of the site
+            for example: 'https://upstreamfirst.fedorainfracloud.org/'
+        package (string): name of the package
+        api_key (string): secret API key
+
+    Returns:
+        response (json): info about PR
+    """
+    site = site_url + 'api/0/rpms/' + package + '/pull-requests'
+
+    response = requests.get(site, headers={'Authorization': 'access_token {}'.format(api_key)})
+    return response.json()
+
+
+def manage_pull_request(response_json):
+    """Checks if PR corresponds to the test PR and open.
+
+    Args:
+        response_json (json): info about PR
+
+    Returns:
+         (json): {'user': <username>, 'url': <pull_req_url>}
+    """
+    try:
+        if response_json['total_requests'] > 0:
+            for request in response_json['requests']:
+                if ('Add CI tests' or 'test' in request['title']) and (request['status'] == 'Open'):
+                    pull_req_url = DIST_GIT_URL + request['project']['url_path'] + '/pull-requests'
+                    return {'user': request['user'], 'url': pull_req_url}
+
+    except Exception:
+        # {'error': 'Project not found', 'error_code': 'ENOPROJECT'}
+        return
+
+
+def get_all_projects(site_url, api_key):
+    """Get all projects from site using API
+
+    Args:
+        site_url (string): url of the site
+            for example: 'https://upstreamfirst.fedorainfracloud.org/'
+        api_key (string): secret API key
+
+    Returns:
+        response (json): all projects
+    """
+    site = site_url + 'api/0/projects'
+
+    response = requests.get(site, headers={'Authorization': 'access_token {}'.format(api_key)})
+    return response.json()
+
+
+def get_projects_names(json_response):
+    """Get projects names from the all projects
+
+    Args:
+        json_response (json): all projects
+
+    Returns:
+        projects_names (list of strings) names of projects
+    """
+
+    projects_names = []
+
+    for project in json_response['projects']:
+        project_name = project['fullname']
+        if 'forks/' not in project_name:
+            projects_names.append(project_name)
+
+    return projects_names
+
+
+def get_projects_url_patches(json_response):
+    """Get projects url patches"""
+
+    projects_url_patches = []
+
+    for project in json_response['projects']:
+        project_name = project['url_path']
+
+        projects_url_patches.append(project_name)
+
+    return projects_url_patches
+
+
+def get_test_yaml_from_site(site_url, package, test_file='tests.yml'):
+    """Get test.yaml from the site
+
+    Args:
+        site_url (string): url of the site
+            for example: 'https://upstreamfirst.fedorainfracloud.org/'
+        package (string): name of the package
+        test_file (string): file to get from site.
+
+    Returns:
+        test.yaml (raw string)
+    """
+
+    if 'upstreamfirst' in site_url:
+        test_file_url = site_url + package + '/raw/master/f/' + test_file
+    elif 'fedoraproject' in site_url:
+        test_file_url = site_url + '/rpms/' + package + '/raw/master/f/tests/' + test_file
+    else:
+        return
+
+    response = requests.get(test_file_url)
+    return response.text
+
+
+def get_url_to_test_yml(site_url, package):
+    """Get url to the test.yml file
+
+    Args:
+        site_url (string): url of the site
+            for example: 'https://upstreamfirst.fedorainfracloud.org/'
+        package (string): name of the package
+
+    Returns:
+        url (string)
+    """
+    if 'upstreamfirst' in site_url:
+        test_file_url = site_url + package + '/blob/master/f/tests.yml'
+    elif 'fedoraproject' in site_url:
+        test_file_url = site_url + 'rpms/' + package + '/blob/master/f/tests/tests.yml'
+    else:
+        return
+
+    return test_file_url
+
+
+def check_if_test_yml_exists(test_file_url):
+    """Checks if tesy.yml exists
+
+    Args:
+        test_file_url (string): url of the site
+
+    Returns:
+        True/False (bool) if response.status_code
+    """
+    response = requests.get(test_file_url)
+    if response.status_code == 200:
+        return True
+    else:
+        return False
+
+
+def get_test_tags(raw_text):
+    """Just returns existed test-tags
+
+    Args:
+        raw_text (string): raw text output from the requests
+
+    Returns:
+        tags (list if strings)
+    """
+    test_tags = []
+
+    for tag in ['classic', 'container', 'atomic']:
+        if tag in raw_text:
+            test_tags.append(tag)
+
+    return test_tags
+
+
+def handle_test_tags(site_url, package):
+    """Function grts new patch to the test.yaml if existing test.yaml includes test file
+
+    Args:
+        site_url (string): url of the site
+            for example: 'https://upstreamfirst.fedorainfracloud.org/'
+        package (string): name of the package
+
+    Returns:
+        tags (list of strings)
+    """
+
+    raw_text = get_test_yaml_from_site(site_url, package)
+
+    if 'Page not found' in raw_text:
+        return []
+
+    test_tags = get_test_tags(raw_text)
+
+    if not test_tags:
+        new_test_file = re.findall(r'(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', raw_text)
+
+        if new_test_file:
+            raw_text = get_test_yaml_from_site(site_url, package, new_test_file[-1])
+            test_tags = get_test_tags(raw_text)
+
+    return test_tags
+
+
+def test_tags_to_dict(test_tags):
+    """Convert test-tags list to the dictionary"""
+
+    tags_dict = {'classic': '', 'container': '', 'atomic': ''}
+    try:
+        for tag in test_tags:
+            tags_dict[tag] = 'YES'
+
+    except Exception.KeyError:
+        pass
+    return tags_dict
+
+
+def get_list_of_packages_from_the_file(file):
+    """Reads list of packages from a file
+
+    Args:
+        file (file): file to get packages from
+
+    Returns:
+        packages (list of packages)
+    """
+    with open(file) as packages_file:
+        return packages_file.read().splitlines()
+
+
+def write_results_to_the_file(result, filename='results.txt'):
+    """Write results to the file
+
+    Args:
+        result (json): package's info
+        filename (string): name of the file to write packages
+
+    Returns:
+        packages (list of packages)
+    """
+    with open(filename, 'a') as my_file:
+        my_file.write('{}\n'.format(result))
+
+    my_file.close()
+    return filename
+
+
+def delete_files_before_running(files_to_delete):
+    """Function deletes (cleanup) files with data
+
+    Args:
+        files_to_delete (list): list of files to delete
+
+    Returns:
+        (None) if everything is alright
+    """
+    for file_name in files_to_delete:
+        try:
+            os.remove(file_name)
+        except OSError:
+            pass
+
+
+if __name__ == '__main__':
+    exit(0)
diff --git a/statictic_page/new_page/upload_to_wiki.py b/statictic_page/new_page/upload_to_wiki.py
new file mode 100644
index 0000000..5c1d6e2
--- /dev/null
+++ b/statictic_page/new_page/upload_to_wiki.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+
+import mwclient
+import os
+
+ua = 'MyWikiTool/0.2 run by User:FedoraUser'
+site = mwclient.Site('fedoraproject.org', clients_useragent=ua)
+# site.login(os.environ.get('WIKI_USER'), os.environ.get('WIKI_PASS'))
+site.login('sturivny', 'VgaZsxPWrMnCzTWm')
+page = site.pages['CI/Tests/new-stat']
+
+page.exists
+
+with open('upload_file.txt', 'r') as myfile:
+    text = myfile.read()
+page.save(text, 'Current status.')
diff --git a/statictic_page/new_page/upload_to_wiki.txt b/statictic_page/new_page/upload_to_wiki.txt
new file mode 100644
index 0000000..12218f0
--- /dev/null
+++ b/statictic_page/new_page/upload_to_wiki.txt
@@ -0,0 +1,1425 @@
+== This page is automatically updated. Do not edit. ==
+{| class="wikitable sortable"
+! style="text-align:left;" scope="col" rowspan="2" | Package
+! scope="col" colspan="6"| dist-git
+! scope="col" colspan="4"| upstreamfirst
+|-
+! scope="col" | tests.yml
+! scope="col" | classic
+! scope="col" | container
+! scope="col" | atomic
+! scope="col" | missing
+! scope="col" | pending PR
+! scope="col" | tests.yml
+! scope="col" | classic
+! scope="col" | container
+! scope="col" | atomic
+|-
+! style="text-align:left; font-weight: lighter;" scope="row" | Total known packages
+| style="text-align:center;" scope="row" colspan="10" | 116
+|-
+! style="text-align:left; font-weight: lighter;" scope="row" | Packages in category
+| 49 (42%)
+| 49 (42%)
+| 33 (28%)
+| 25 (22%)
+| 116 (100%)
+| 53 (46%)
+| 111 (96%)
+| 109 (94%)
+| 78 (67%)
+| 52 (45%)
+|-
+!style="text-align:left;" scope="row" | acl
+| [https://src.fedoraproject.org/rpms/acl/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/acl/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | at
+| [https://src.fedoraproject.org/rpms/at/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/at/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | atomic
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/atomic/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| YES
+|-
+!style="text-align:left;" scope="row" | attr
+| [https://src.fedoraproject.org/rpms/attr/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/attr/blob/master/f/tests.yml YES]
+| YES
+| 
+| YES
+|-
+!style="text-align:left;" scope="row" | audit
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/audit/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/audit/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | bash
+| 
+| 
+| 
+| 
+| YES
+|[[junghans Christoph Junghans|YES]] [https://src.fedoraproject.org/rpms/bash/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/bash/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | bind
+| [https://src.fedoraproject.org/rpms/bind/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| 
+| YES
+|[[lbalhar Lumír Balhar|YES]] [https://src.fedoraproject.org/rpms/bind/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/bind/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | buildah
+| [https://src.fedoraproject.org/rpms/buildah/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/buildah/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | byacc
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/byacc/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+|-
+!style="text-align:left;" scope="row" | ca-certificates
+| [https://src.fedoraproject.org/rpms/ca-certificates/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/ca-certificates/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | checkpolicy
+| [https://src.fedoraproject.org/rpms/checkpolicy/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/checkpolicy/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | coreutils
+| [https://src.fedoraproject.org/rpms/coreutils/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+|[[ignatenkobrain Igor Gnatenko|YES]] [https://src.fedoraproject.org/rpms/coreutils/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/coreutils/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | cpio
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/cpio/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/cpio/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | cracklib
+| [https://src.fedoraproject.org/rpms/cracklib/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/cracklib/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | cronie
+| [https://src.fedoraproject.org/rpms/cronie/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/cronie/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | crontabs
+| [https://src.fedoraproject.org/rpms/crontabs/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/crontabs/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | cryptsetup
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/cryptsetup/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/cryptsetup/blob/master/f/tests.yml YES]
+| YES
+| 
+| YES
+|-
+!style="text-align:left;" scope="row" | curl
+| [https://src.fedoraproject.org/rpms/curl/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/curl/blob/master/f/tests.yml YES]
+| YES
+| 
+| YES
+|-
+!style="text-align:left;" scope="row" | cyrus-sasl
+| [https://src.fedoraproject.org/rpms/cyrus-sasl/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/cyrus-sasl/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | device-mapper-multipath
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/device-mapper-multipath/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| YES
+|-
+!style="text-align:left;" scope="row" | device-mapper-persistent-data
+| [https://src.fedoraproject.org/rpms/device-mapper-persistent-data/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/device-mapper-persistent-data/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | diffutils
+| [https://src.fedoraproject.org/rpms/diffutils/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/diffutils/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | dnf
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/dnf/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+|-
+!style="text-align:left;" scope="row" | docker
+| 
+| 
+| 
+| 
+| YES
+|[[walters Colin Walters|YES]] [https://src.fedoraproject.org/rpms/docker/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/docker/blob/master/f/tests.yml YES]
+| YES
+| 
+| YES
+|-
+!style="text-align:left;" scope="row" | dracut
+| 
+| 
+| 
+| 
+| YES
+|[[mgahagan Mike Gahagan|YES]] [https://src.fedoraproject.org/rpms/dracut/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/dracut/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | dwz
+| [https://src.fedoraproject.org/rpms/dwz/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/dwz/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | e2fsprogs
+| 
+| 
+| 
+| 
+| YES
+|[[yshapovalov Yevhenii Shapovalov|YES]] [https://src.fedoraproject.org/rpms/e2fsprogs/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/e2fsprogs/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | elfutils
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/elfutils/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/elfutils/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | etcd
+| 
+| 
+| 
+| 
+| YES
+|[[esakaiev Eduard|YES]] [https://src.fedoraproject.org/rpms/etcd/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/etcd/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | expat
+| [https://src.fedoraproject.org/rpms/expat/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/expat/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | file
+| [https://src.fedoraproject.org/rpms/file/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/file/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | filesystem
+| [https://src.fedoraproject.org/rpms/filesystem/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/filesystem/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | findutils
+| [https://src.fedoraproject.org/rpms/findutils/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/findutils/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | fipscheck
+| [https://src.fedoraproject.org/rpms/fipscheck/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/fipscheck/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | flex
+| 
+| 
+| 
+| 
+| YES
+|[[rasibley Rachel Sibley|YES]] [https://src.fedoraproject.org/rpms/flex/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/flex/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | gawk
+| [https://src.fedoraproject.org/rpms/gawk/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+|[[praiskup Pavel Raiskup|YES]] [https://src.fedoraproject.org/rpms/gawk/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/gawk/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | gc
+| 
+| 
+| 
+| 
+| YES
+|[[pingou Pierre-YvesChibon|YES]] [https://src.fedoraproject.org/rpms/gc/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/gc/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | gcc
+| 
+| 
+| 
+| 
+| YES
+|[[rasibley Rachel Sibley|YES]] [https://src.fedoraproject.org/rpms/gcc/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/gcc/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | gdb
+| 
+| 
+| 
+| 
+| YES
+|[[esakaiev Eduard|YES]] [https://src.fedoraproject.org/rpms/gdb/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/gdb/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | gettext
+| 
+| 
+| 
+| 
+| YES
+|[[bgoncalv Bruno Goncalves|YES]] [https://src.fedoraproject.org/rpms/gettext/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/gettext/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | glib2
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/glib2/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| YES
+|-
+!style="text-align:left;" scope="row" | glibc
+| 
+| 
+| 
+| 
+| YES
+|[[mgahagan Mike Gahagan|YES]] [https://src.fedoraproject.org/rpms/glibc/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/glibc/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | groff
+| [https://src.fedoraproject.org/rpms/groff/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/groff/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | grub2
+| 
+| 
+| 
+| 
+| YES
+|[[konradr Konrad Rzeszutek Wilk|YES]] [https://src.fedoraproject.org/rpms/grub2/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/grub2/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | guile
+| [https://src.fedoraproject.org/rpms/guile/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/guile/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | gzip
+| [https://src.fedoraproject.org/rpms/gzip/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/gzip/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | httpd
+| [https://src.fedoraproject.org/rpms/httpd/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/httpd/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | initscripts
+| 
+| 
+| 
+| 
+| YES
+|[[esakaiev Eduard|YES]] [https://src.fedoraproject.org/rpms/initscripts/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/initscripts/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | iproute
+| 
+| 
+| 
+| 
+| YES
+|[[mgahagan Mike Gahagan|YES]] [https://src.fedoraproject.org/rpms/iproute/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/iproute/blob/master/f/tests.yml YES]
+| YES
+| 
+| YES
+|-
+!style="text-align:left;" scope="row" | iptables
+| 
+| 
+| 
+| 
+| YES
+|[[mgahagan Mike Gahagan|YES]] [https://src.fedoraproject.org/rpms/iptables/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/iptables/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | iscsi-initiator-utils
+| 
+| 
+| 
+| 
+| YES
+|[[rasibley Rachel Sibley|YES]] [https://src.fedoraproject.org/rpms/iscsi-initiator-utils/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/iscsi-initiator-utils/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | kexec-tools
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/kexec-tools/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+|-
+!style="text-align:left;" scope="row" | keyutils
+| 
+| 
+| 
+| 
+| YES
+|[[esakaiev Eduard|YES]] [https://src.fedoraproject.org/rpms/keyutils/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/keyutils/blob/master/f/tests.yml YES]
+| YES
+| 
+| YES
+|-
+!style="text-align:left;" scope="row" | kmod
+| [https://src.fedoraproject.org/rpms/kmod/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| 
+| YES
+|[[zsun Ziqian SUN (Zamir)|YES]] [https://src.fedoraproject.org/rpms/kmod/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/kmod/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | krb5
+| [https://src.fedoraproject.org/rpms/krb5/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/krb5/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | ksh
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/ksh/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+|-
+!style="text-align:left;" scope="row" | libcap
+| 
+| 
+| 
+| 
+| YES
+|[[astepano Andrei Stepanov|YES]] [https://src.fedoraproject.org/rpms/libcap/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/libcap/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | libcap-ng
+| 
+| 
+| 
+| 
+| YES
+|[[astepano Andrei Stepanov|YES]] [https://src.fedoraproject.org/rpms/libcap-ng/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/libcap-ng/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | libgcrypt
+| [https://src.fedoraproject.org/rpms/libgcrypt/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/libgcrypt/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | libselinux
+| [https://src.fedoraproject.org/rpms/libselinux/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/libselinux/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | libsemanage
+| [https://src.fedoraproject.org/rpms/libsemanage/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/libsemanage/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | libsepol
+| [https://src.fedoraproject.org/rpms/libsepol/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/libsepol/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | libtasn1
+| 
+| 
+| 
+| 
+| YES
+| 
+| 
+| 
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | libtool
+| 
+| 
+| 
+| 
+| YES
+|[[yshapovalov Yevhenii Shapovalov|YES]] [https://src.fedoraproject.org/rpms/libtool/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/libtool/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | libunistring
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/libunistring/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| YES
+|-
+!style="text-align:left;" scope="row" | libxml2
+| 
+| 
+| 
+| 
+| YES
+|[[kloczek Tomasz Kłoczko|YES]] [https://src.fedoraproject.org/rpms/libxml2/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/libxml2/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | lua
+| [https://src.fedoraproject.org/rpms/lua/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/lua/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | m4
+| [https://src.fedoraproject.org/rpms/m4/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/m4/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | make
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/make/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/make/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | mdadm
+| 
+| 
+| 
+| 
+| YES
+|[[mgahagan Mike Gahagan|YES]] [https://src.fedoraproject.org/rpms/mdadm/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/mdadm/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | migrated
+| 
+| 
+| 
+| 
+| YES
+| 
+| 
+| 
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | ncompress
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/ncompress/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/ncompress/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | nfs-utils
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/nfs-utils/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/nfs-utils/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | nmap
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/nmap/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/nmap/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | nspr
+| [https://src.fedoraproject.org/rpms/nspr/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/nspr/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | nss
+| [https://src.fedoraproject.org/rpms/nss/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/nss/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | nss-softokn
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/nss-softokn/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+|-
+!style="text-align:left;" scope="row" | nss-util
+| [https://src.fedoraproject.org/rpms/nss-util/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/nss-util/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | openldap
+| [https://src.fedoraproject.org/rpms/openldap/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/openldap/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | openssh
+| [https://src.fedoraproject.org/rpms/openssh/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/openssh/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | openssl
+| [https://src.fedoraproject.org/rpms/openssl/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/openssl/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | p11-kit
+| 
+| 
+| 
+| 
+| YES
+| 
+| 
+| 
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | pam
+| [https://src.fedoraproject.org/rpms/pam/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/pam/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | passwd
+| 
+| 
+| 
+| 
+| YES
+|[[mgahagan Mike Gahagan|YES]] [https://src.fedoraproject.org/rpms/passwd/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/passwd/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | patch
+| [https://src.fedoraproject.org/rpms/patch/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| 
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/patch/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | policycoreutils
+| [https://src.fedoraproject.org/rpms/policycoreutils/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/policycoreutils/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | pth
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/pth/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/pth/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | python
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/python/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| YES
+|-
+!style="text-align:left;" scope="row" | python2
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/python2/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| YES
+|-
+!style="text-align:left;" scope="row" | python3
+| 
+| 
+| 
+| 
+| YES
+|[[churchyard Miro Hrončok|YES]] [https://src.fedoraproject.org/rpms/python3/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/python3/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | rpm
+| 
+| 
+| 
+| 
+| YES
+|[[ignatenkobrain Igor Gnatenko|YES]] [https://src.fedoraproject.org/rpms/rpm/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/rpm/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | rsync
+| [https://src.fedoraproject.org/rpms/rsync/blob/master/f/tests/tests.yml YES]
+| YES
+| 
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/rsync/blob/master/f/tests.yml YES]
+| YES
+| 
+| YES
+|-
+!style="text-align:left;" scope="row" | sed
+| [https://src.fedoraproject.org/rpms/sed/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/sed/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | selinux-policy
+| 
+| 
+| 
+| 
+| YES
+|[[jlebon Jonathan Lebon|YES]] [https://src.fedoraproject.org/rpms/selinux-policy/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/selinux-policy/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | setup
+| 
+| 
+| 
+| 
+| YES
+|[[rasibley Rachel Sibley|YES]] [https://src.fedoraproject.org/rpms/setup/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/setup/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | shadow-utils
+| 
+| 
+| 
+| 
+| YES
+|[[esakaiev Eduard|YES]] [https://src.fedoraproject.org/rpms/shadow-utils/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/shadow-utils/blob/master/f/tests.yml YES]
+| YES
+| 
+| YES
+|-
+!style="text-align:left;" scope="row" | skopeo
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/skopeo/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+|-
+!style="text-align:left;" scope="row" | socat
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/socat/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+|-
+!style="text-align:left;" scope="row" | sqlite
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/sqlite/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/sqlite/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | sudo
+| [https://src.fedoraproject.org/rpms/sudo/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+|[[walters Colin Walters|YES]] [https://src.fedoraproject.org/rpms/sudo/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/sudo/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | systemd
+| 
+| 
+| 
+| 
+| YES
+|[[esakaiev Eduard|YES]] [https://src.fedoraproject.org/rpms/systemd/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/systemd/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | tar
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/tar/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/tar/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | test_cli
+| 
+| 
+| 
+| 
+| YES
+| 
+| 
+| 
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | testing-project
+| 
+| 
+| 
+| 
+| YES
+| 
+| 
+| 
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | time
+| [https://src.fedoraproject.org/rpms/time/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/time/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | tuned
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/tuned/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+|-
+!style="text-align:left;" scope="row" | tzdata
+| 
+| 
+| 
+| 
+| YES
+|[[bgoncalv Bruno Goncalves|YES]] [https://src.fedoraproject.org/rpms/tzdata/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/tzdata/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | unzip
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/unzip/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/unzip/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | util-linux
+| [https://src.fedoraproject.org/rpms/util-linux/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| 
+| YES
+|[[lbalhar Lumír Balhar|YES]] [https://src.fedoraproject.org/rpms/util-linux/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/util-linux/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | vim
+| [https://src.fedoraproject.org/rpms/vim/blob/master/f/tests/tests.yml YES]
+| YES
+| YES
+| YES
+| YES
+| 
+| [https://upstreamfirst.fedorainfracloud.org/vim/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | virt-what
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/virt-what/blob/master/f/tests.yml YES]
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| 
+! style="background-color:#7FFF00"| YES
+|-
+!style="text-align:left;" scope="row" | which
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/which/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/which/blob/master/f/tests.yml YES]
+| YES
+| YES
+| YES
+|-
+!style="text-align:left;" scope="row" | xz
+| 
+| 
+| 
+| 
+| YES
+|[[bkabrda Bohuslav Kabrda|YES]] [https://src.fedoraproject.org/rpms/xz/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/xz/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | yum
+| 
+| 
+| 
+| 
+| YES
+|[[mgahagan Mike Gahagan|YES]] [https://src.fedoraproject.org/rpms/yum/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/yum/blob/master/f/tests.yml YES]
+| YES
+| 
+| 
+|-
+!style="text-align:left;" scope="row" | zip
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/zip/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/zip/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+!style="text-align:left;" scope="row" | zlib
+| 
+| 
+| 
+| 
+| YES
+|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/zlib/pull-requests _*] 
+| [https://upstreamfirst.fedorainfracloud.org/zlib/blob/master/f/tests.yml YES]
+| YES
+| YES
+| 
+|-
+|} 
diff --git a/statictic_page/new_page/upstreamfirst_packages.txt b/statictic_page/new_page/upstreamfirst_packages.txt
new file mode 100644
index 0000000..10ce905
--- /dev/null
+++ b/statictic_page/new_page/upstreamfirst_packages.txt
@@ -0,0 +1,116 @@
+{'name': 'acl', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/acl/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/acl/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'at', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/at/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/at/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'atomic', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/atomic/blob/master/f/tests.yml', 'test_tags': {'classic': '', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'attr', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/attr/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/attr/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}}
+{'name': 'audit', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/audit/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/audit/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'bash', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/bash/pull-requests', 'user': {'fullname': 'Christoph Junghans', 'name': 'junghans'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/bash/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'bind', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/bind/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/bind/pull-requests', 'user': {'fullname': 'Lumír Balhar', 'name': 'lbalhar'}}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/bind/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'buildah', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/buildah/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/buildah/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'byacc', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/byacc/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'ca-certificates', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/ca-certificates/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/ca-certificates/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'checkpolicy', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/checkpolicy/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/checkpolicy/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'coreutils', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/coreutils/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/coreutils/pull-requests', 'user': {'fullname': 'Igor Gnatenko', 'name': 'ignatenkobrain'}}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/coreutils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'cpio', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/cpio/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/cpio/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'cracklib', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/cracklib/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/cracklib/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'cronie', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/cronie/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/cronie/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'crontabs', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/crontabs/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/crontabs/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'cryptsetup', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/cryptsetup/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/cryptsetup/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}}
+{'name': 'curl', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/curl/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/curl/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}}
+{'name': 'cyrus-sasl', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/cyrus-sasl/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/cyrus-sasl/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'device-mapper-multipath', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/device-mapper-multipath/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'device-mapper-persistent-data', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/device-mapper-persistent-data/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/device-mapper-persistent-data/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'diffutils', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/diffutils/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/diffutils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'dnf', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/dnf/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'docker', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/docker/pull-requests', 'user': {'fullname': 'Colin Walters', 'name': 'walters'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/docker/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}}
+{'name': 'dracut', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/dracut/pull-requests', 'user': {'fullname': 'Mike Gahagan', 'name': 'mgahagan'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/dracut/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'dwz', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/dwz/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/dwz/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'e2fsprogs', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/e2fsprogs/pull-requests', 'user': {'fullname': 'Yevhenii Shapovalov', 'name': 'yshapovalov'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/e2fsprogs/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'elfutils', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/elfutils/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/elfutils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'etcd', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/etcd/pull-requests', 'user': {'fullname': 'Eduard', 'name': 'esakaiev'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/etcd/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'expat', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/expat/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/expat/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'file', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/file/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/file/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'filesystem', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/filesystem/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/filesystem/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'findutils', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/findutils/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/findutils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'fipscheck', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/fipscheck/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/fipscheck/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'flex', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/flex/pull-requests', 'user': {'fullname': 'Rachel Sibley', 'name': 'rasibley'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/flex/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'gawk', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/gawk/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/gawk/pull-requests', 'user': {'fullname': 'Pavel Raiskup', 'name': 'praiskup'}}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/gawk/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'gc', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/gc/pull-requests', 'user': {'fullname': 'Pierre-YvesChibon', 'name': 'pingou'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/gc/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'gcc', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/gcc/pull-requests', 'user': {'fullname': 'Rachel Sibley', 'name': 'rasibley'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/gcc/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'gdb', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/gdb/pull-requests', 'user': {'fullname': 'Eduard', 'name': 'esakaiev'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/gdb/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'gettext', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/gettext/pull-requests', 'user': {'fullname': 'Bruno Goncalves', 'name': 'bgoncalv'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/gettext/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'glib2', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/glib2/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'glibc', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/glibc/pull-requests', 'user': {'fullname': 'Mike Gahagan', 'name': 'mgahagan'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/glibc/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'groff', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/groff/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/groff/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'grub2', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/grub2/pull-requests', 'user': {'fullname': 'Konrad Rzeszutek Wilk', 'name': 'konradr'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/grub2/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'guile', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/guile/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/guile/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'gzip', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/gzip/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/gzip/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'httpd', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/httpd/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/httpd/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'initscripts', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/initscripts/pull-requests', 'user': {'fullname': 'Eduard', 'name': 'esakaiev'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/initscripts/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'iproute', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/iproute/pull-requests', 'user': {'fullname': 'Mike Gahagan', 'name': 'mgahagan'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/iproute/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}}
+{'name': 'iptables', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/iptables/pull-requests', 'user': {'fullname': 'Mike Gahagan', 'name': 'mgahagan'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/iptables/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'iscsi-initiator-utils', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/iscsi-initiator-utils/pull-requests', 'user': {'fullname': 'Rachel Sibley', 'name': 'rasibley'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/iscsi-initiator-utils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'kexec-tools', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/kexec-tools/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'keyutils', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/keyutils/pull-requests', 'user': {'fullname': 'Eduard', 'name': 'esakaiev'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/keyutils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}}
+{'name': 'kmod', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/kmod/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/kmod/pull-requests', 'user': {'fullname': 'Ziqian SUN (Zamir)', 'name': 'zsun'}}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/kmod/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'krb5', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/krb5/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/krb5/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'ksh', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/ksh/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'libcap', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/libcap/pull-requests', 'user': {'fullname': 'Andrei Stepanov', 'name': 'astepano'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libcap/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'libcap-ng', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/libcap-ng/pull-requests', 'user': {'fullname': 'Andrei Stepanov', 'name': 'astepano'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libcap-ng/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'libgcrypt', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/libgcrypt/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libgcrypt/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'libselinux', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/libselinux/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libselinux/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'libsemanage', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/libsemanage/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libsemanage/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'libsepol', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/libsepol/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libsepol/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'libtasn1', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': '', 'package_url': '', 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}}
+{'name': 'libtool', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/libtool/pull-requests', 'user': {'fullname': 'Yevhenii Shapovalov', 'name': 'yshapovalov'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libtool/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'libunistring', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libunistring/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'libxml2', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/libxml2/pull-requests', 'user': {'fullname': 'Tomasz Kłoczko', 'name': 'kloczek'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libxml2/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'lua', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/lua/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/lua/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'm4', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/m4/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/m4/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'make', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/make/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/make/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'mdadm', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/mdadm/pull-requests', 'user': {'fullname': 'Mike Gahagan', 'name': 'mgahagan'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/mdadm/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'migrated', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': '', 'package_url': '', 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}}
+{'name': 'ncompress', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/ncompress/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/ncompress/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'nfs-utils', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/nfs-utils/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/nfs-utils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'nmap', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/nmap/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/nmap/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'nspr', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/nspr/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/nspr/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'nss', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/nss/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/nss/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'nss-softokn', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/nss-softokn/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'nss-util', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/nss-util/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/nss-util/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'openldap', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/openldap/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/openldap/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'openssh', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/openssh/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/openssh/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'openssl', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/openssl/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/openssl/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'p11-kit', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': '', 'package_url': '', 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}}
+{'name': 'pam', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/pam/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/pam/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'passwd', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/passwd/pull-requests', 'user': {'fullname': 'Mike Gahagan', 'name': 'mgahagan'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/passwd/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'patch', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/patch/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/patch/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'policycoreutils', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/policycoreutils/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/policycoreutils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'pth', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/pth/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/pth/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'python', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/python/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'python2', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/python2/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'python3', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/python3/pull-requests', 'user': {'fullname': 'Miro Hrončok', 'name': 'churchyard'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/python3/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'rpm', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/rpm/pull-requests', 'user': {'fullname': 'Igor Gnatenko', 'name': 'ignatenkobrain'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/rpm/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'rsync', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/rsync/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/rsync/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}}
+{'name': 'sed', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/sed/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/sed/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'selinux-policy', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/selinux-policy/pull-requests', 'user': {'fullname': 'Jonathan Lebon', 'name': 'jlebon'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/selinux-policy/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'setup', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/setup/pull-requests', 'user': {'fullname': 'Rachel Sibley', 'name': 'rasibley'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/setup/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'shadow-utils', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/shadow-utils/pull-requests', 'user': {'fullname': 'Eduard', 'name': 'esakaiev'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/shadow-utils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}}
+{'name': 'skopeo', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/skopeo/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'socat', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/socat/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'sqlite', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/sqlite/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/sqlite/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'sudo', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/sudo/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/sudo/pull-requests', 'user': {'fullname': 'Colin Walters', 'name': 'walters'}}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/sudo/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'systemd', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/systemd/pull-requests', 'user': {'fullname': 'Eduard', 'name': 'esakaiev'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/systemd/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'tar', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/tar/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/tar/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'test_cli', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': '', 'package_url': '', 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}}
+{'name': 'testing-project', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': '', 'package_url': '', 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}}
+{'name': 'time', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/time/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/time/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'tuned', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/tuned/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}}
+{'name': 'tzdata', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/tzdata/pull-requests', 'user': {'fullname': 'Bruno Goncalves', 'name': 'bgoncalv'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/tzdata/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'unzip', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/unzip/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/unzip/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'util-linux', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/util-linux/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/util-linux/pull-requests', 'user': {'fullname': 'Lumír Balhar', 'name': 'lbalhar'}}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/util-linux/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'vim', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/vim/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/vim/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'virt-what', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/virt-what/blob/master/f/tests.yml', 'test_tags': {'classic': '', 'container': '', 'atomic': 'YES'}}}
+{'name': 'which', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/which/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/which/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}}
+{'name': 'xz', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/xz/pull-requests', 'user': {'fullname': 'Bohuslav Kabrda', 'name': 'bkabrda'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/xz/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'yum', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/yum/pull-requests', 'user': {'fullname': 'Mike Gahagan', 'name': 'mgahagan'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/yum/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}}
+{'name': 'zip', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/zip/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/zip/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
+{'name': 'zlib', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/zlib/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/zlib/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}}
diff --git a/statictic_page/stable_page/koji-stats b/statictic_page/stable_page/koji-stats
new file mode 100755
index 0000000..dd51f99
--- /dev/null
+++ b/statictic_page/stable_page/koji-stats
@@ -0,0 +1,123 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+#
+# Copyright Red Hat Inc
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# This file is part of Cockpit.
+#
+
+UPSTREAM_PAGURE = "https://upstreamfirst.fedorainfracloud.org/api/0/"
+UPSTREAM_BASE = "https://upstreamfirst.fedorainfracloud.org/"
+
+DISTGIT_BASE = "https://src.fedoraproject.org/git/rpms/"
+
+import argparse
+import json
+import os
+import random
+import sys
+import tempfile
+import time
+import shutil
+import subprocess
+
+import urllib.request
+import urllib.parse
+
+DISTGIT_BASE = "https://src.fedoraproject.org/git/rpms/"
+
+def main():
+    parser = argparse.ArgumentParser(description="Gather koji stats")
+    parser.add_argument("--scratch", action="store", default="/tmp", help="Scratch directory")
+    opts = parser.parse_args()
+
+    stats = { }
+    directory = tempfile.mkdtemp(prefix="koji-stats", dir=opts.scratch)
+
+    # Dist git
+    repos = repositories()
+
+    offset = random.randint(0, len(repos))
+    while True:
+        offset = (offset + 1) % len(repos)
+        project = repos[offset]
+
+        url = urllib.parse.urljoin(DISTGIT_BASE, project)
+        repo = clone(url, directory)
+        if not repo:
+            continue
+
+        start = time.time()
+        local(repo)
+        duration = int(time.time() - start)
+        log("mock", project, str(duration))
+
+        start = time.time()
+        koji(repo)
+        duration = int(time.time() - start)
+        log("koji", project, str(duration))
+
+        start = time.time()
+        koji(repo, "x86_64")
+        duration = int(time.time() - start)
+        log("koji-x86_64", project, str(duration))
+
+        shutil.rmtree(repo)
+
+    return 0
+
+def repositories():
+    results = [ ]
+    base = os.path.dirname(__file__)
+    with open(os.path.join(base, "repos"), "rb") as f:
+        while True:
+            line = f.readline()
+            if not line:
+                break
+            line = line.strip()
+            if line:
+                results.append(line.decode("utf-8"))
+    return results
+
+def log(self, *args):
+    line = "\t".join(args) + "\n"
+    sys.stdout.write(line)
+    with open(os.path.join(os.path.dirname(__file__), "koji-stats.log"), 'a') as f:
+        f.write(line)
+
+def clone(url, directory):
+    target = os.path.join(directory, os.path.basename(url))
+    while os.path.exists(target):
+        target += ".x"
+    try:
+        subprocess.check_call(["git", "clone", url, target], cwd=directory, stdout=sys.stderr.fileno())
+    except subprocess.CalledProcessError:
+        return None
+    subprocess.check_call(["git", "checkout", "f26"], cwd=target, stdout=sys.stderr.fileno())
+    return target
+
+def koji(directory, arch=None):
+    if arch:
+        cmd = ["fedpkg", "--scratch", "--arches", arch, "build"]
+    else:
+        cmd = ["fedpkg", "--scratch", "build"]
+    subprocess.check_call(cmd, cwd=directory, stdout=sys.stderr.fileno())
+
+def local(directory):
+    subprocess.check_call(["fedpkg", "mockbuild"], cwd=directory, stdout=sys.stderr.fileno())
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/statictic_page/stable_page/publish2wiki.py b/statictic_page/stable_page/publish2wiki.py
new file mode 100644
index 0000000..86ac933
--- /dev/null
+++ b/statictic_page/stable_page/publish2wiki.py
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+
+# Purpose: publish output of ./test-stats to Fedora Wiki. This script is
+# scheduled on Centos OpenShift: apps.ci.centos.org. Dependency are installed
+# as a part of Job definition. data.txt comes from ./test-stats output.
+
+import mwclient
+import os
+
+ua = 'MyWikiTool/0.2 run by User:FedoraUser'
+site = mwclient.Site('fedoraproject.org', clients_useragent=ua)
+site.login(os.environ.get('WIKI_USER'), os.environ.get('WIKI_PASS'))
+page = site.pages['CI/Tests/stat']
+page.exists
+with open('data.txt', 'r') as myfile:
+    text = myfile.read()
+page.save(text, 'Current status.')
diff --git a/statictic_page/stable_page/repos b/statictic_page/stable_page/repos
new file mode 100644
index 0000000..b21aa98
--- /dev/null
+++ b/statictic_page/stable_page/repos
@@ -0,0 +1,288 @@
+acl
+atomic
+atomic-devmode
+attr
+audit
+authconfig
+avahi
+basesystem
+bash
+bash-completion
+bind
+binutils
+biosdevname
+boost
+bridge-utils
+bzip2
+ca-certificates
+c-ares
+ceph
+checkpolicy
+chkconfig
+chrony
+cloud-init
+cloud-utils
+cockpit
+conntrack-tools
+container-selinux
+coreutils
+cpio
+cracklib
+criu
+cronie
+crontabs
+cryptsetup
+cups
+curl
+cyrus-sasl
+dbus
+dbus-glib
+dbus-python
+device-mapper
+device-mapper-multipath
+device-mapper-persistent-data
+dhcp
+diffutils
+dmidecode
+dnf
+dnsmasq
+docker
+docker-client
+docker-latest
+dracut
+e2fsprogs
+efibootmgr
+efivar
+etcd
+ethtool
+expat
+fcgi
+file
+filesystem
+findutils
+fipscheck
+flannel
+freetype
+fuse
+gawk
+gdbm
+GeoIP
+gettext
+glib2
+glibc
+glib-networking
+glusterfs
+gmp
+gnupg2
+gnutls
+gobject-introspection
+gomtree
+gperftools
+gpgme
+grep
+groff
+grub2
+grubby
+gsettings-desktop-schemas
+gssproxy
+gzip
+hardlink
+hostname
+initscripts
+iproute
+iptables
+iputils
+irqbalance
+iscsi-initiator-utils
+jansson
+json-glib
+kernel
+kexec-tools
+keyutils
+kmod
+krb5
+kubernetes
+less
+libaio
+libarchive
+libassuan
+libcap
+libcap-ng
+libcgroup
+libcollection
+libcroco
+libdb
+libdhash
+libedit
+libevent
+libffi
+gcc
+libgcrypt
+libgpg-error
+icu
+libidn
+libini_config
+ipa
+libldb
+libmnl
+libmodman
+libndp
+libnetfilter_conntrack
+libnetfilter_cthelper
+libnetfilter_cttimeout
+libnetfilter_queue
+libnfnetlink
+libnfsidmap
+libnl
+libnl3
+libpath_utils
+libpcap
+libproxy
+libpwquality
+libref_array
+librepo
+libreport
+libseccomp
+libselinux
+libsemanage
+libsepol
+libsolv
+libsoup
+libssh2
+sssd
+libtalloc
+libtasn1
+libtdb
+libtevent
+libtirpc
+libunistring
+libunwind
+libuser
+libutempter
+uuid
+libverto
+libxml2
+libyaml
+linux-firmware
+logrotate
+lttng-ust
+lua
+lvm2
+lzo
+m2crypto
+make
+mdadm
+mokutil
+mozjs17
+nano
+ncurses
+nettle
+net-tools
+NetworkManager
+newt
+nfs-utils
+nmap
+nspr
+nss
+nss-altfiles
+nss-softokn
+nss-util
+oci-register-machine
+oci-systemd-hook
+openldap
+openssh
+openssl
+os-prober
+ostree
+p11-kit
+pam
+passwd
+pciutils
+pcre
+pinentry
+pkgconfig
+policycoreutils
+polkit
+polkit-pkla-compat
+popt
+ppp
+procps-ng
+protobuf-c
+pth
+pygpgme
+pyliblzma
+python
+python-backports
+python-backports-ssl_match_hostname
+python-chardet
+python-configobj
+python-dateutil
+python-decorator
+python-dmidecode
+python-docker-py
+python-docker-pycreds
+python-ethtool
+python-iniparse
+python-ipaddress
+python-IPy
+python-jsonpatch
+python-jsonpointer
+python-prettytable
+python-pycurl
+python-pyudev
+python-requests
+python-rhsm
+python-setuptools
+python-six
+python-slip
+python-urlgrabber
+python-urllib3
+python-websocket-client
+pyxattr
+PyYAML
+quota
+readline
+rpcbind
+rpm
+rpm-ostree
+rsync
+runc
+samba
+sed
+selinux-policy
+setools
+setup
+sg3_utils
+shadow-utils
+shared-mime-info
+shim
+skopeo
+slang
+snappy
+socat
+sqlite
+sssd
+subscription-manager
+sudo
+systemd
+sysvinit
+tar
+tcp_wrappers
+tmux
+trousers
+tuned
+tzdata
+usermode
+userspace-rcu
+ustr
+util-linux
+vim
+virt-what
+which
+wpa_supplicant
+xfsprogs
+xz
+yajl
+yum
+yum-metadata-parser
+zlib
diff --git a/statictic_page/stable_page/requirements.txt b/statictic_page/stable_page/requirements.txt
new file mode 100644
index 0000000..df27baa
--- /dev/null
+++ b/statictic_page/stable_page/requirements.txt
@@ -0,0 +1 @@
+mwclient>=0.8.6
\ No newline at end of file
diff --git a/statictic_page/stable_page/run-tests b/statictic_page/stable_page/run-tests
new file mode 100755
index 0000000..dc21486
--- /dev/null
+++ b/statictic_page/stable_page/run-tests
@@ -0,0 +1,20 @@
+#!/bin/sh -euf
+
+# Prepare atomic host to test, report and artifacts dirs
+export TEST_SUBJECTS="$PWD/atomic.qcow2"
+test -f $TEST_SUBJECTS || curl -o $TEST_SUBJECTS http://artifacts.ci.centos.org/fedora-atomic/f26/images/latest-atomic.qcow2
+rm -rf report.txt artifacts/ clone/
+
+# Go through each project in upstreamfirst, clone it and put pass/fail in report.txt
+curl https://upstreamfirst.fedorainfracloud.org/api/0/projects?short=true | grep '"fullname"' | grep -v '/' | cut -d '"' -f 4 | while read repo; do
+	git clone https://upstreamfirst.fedorainfracloud.org/$repo clone/$repo
+	export ANSIBLE_INVENTORY=$(test -e $repo/inventory && echo clone/$repo/inventory || echo /usr/share/ansible/inventory)
+	export TEST_ARTIFACTS="$PWD/artifacts/$repo"
+	if ! ansible-playbook -i localhost, --list-tags clone/$repo/tests.yml | grep atomic; then
+		printf "$repo skip\n" >> report.txt
+	elif ansible-playbook -t atomic -e "subjects=$TEST_SUBJECTS" -e "artifacts=$TEST_ARTIFACTS" clone/$repo/tests.yml; then
+		printf "$repo pass\n" >> report.txt
+	else
+		printf "$repo fail\n" >> report.txt
+	fi
+done
diff --git a/statictic_page/stable_page/run-tests-parallel b/statictic_page/stable_page/run-tests-parallel
new file mode 100755
index 0000000..ccb7de5
--- /dev/null
+++ b/statictic_page/stable_page/run-tests-parallel
@@ -0,0 +1,27 @@
+#!/bin/sh -euf
+
+# Prepare atomic host to test, report and artifacts dirs
+export TEST_SUBJECTS="$PWD/atomic.qcow2"
+test -f $TEST_SUBJECTS || curl -o $TEST_SUBJECTS http://artifacts.ci.centos.org/fedora-atomic/f26/images/latest-atomic.qcow2
+rm -rf repo/ report/
+mkdir report/ repo/
+
+run() {
+	git clone https://upstreamfirst.fedorainfracloud.org/$1 repo/$1
+	inventory=$(test -e $1/inventory && echo repo/$1/inventory || echo /usr/share/ansible/inventory)
+	export TEST_ARTIFACTS="$PWD/repo/artifacts/$1"
+	if ! ansible-playbook --list-tags repo/$1/tests.yml | grep atomic; then
+		printf "$1 skip\n" >> report/$1.txt
+	elif ansible-playbook -i $inventory -t atomic -e "subjects=$TEST_SUBJECTS" -e "artifacts=$TEST_ARTIFACTS" repo/$1/tests.yml; then
+		printf "$1 pass\n" >> report/$1.txt
+	else
+		printf "$1 fail\n" >> report/$1.txt
+	fi
+}
+
+# Go through each project in upstreamfirst, clone it and put pass/fail in report.txt
+curl https://upstreamfirst.fedorainfracloud.org/api/0/projects?short=true | grep '"fullname"' | grep -v '/' | cut -d '"' -f 4 | while read repo; do
+	sleep 3
+	if test $(jobs | wc -l) -gt 16; then wait; fi
+	run $repo &
+done
diff --git a/statictic_page/stable_page/test-stats b/statictic_page/stable_page/test-stats
new file mode 100755
index 0000000..8e70d1e
--- /dev/null
+++ b/statictic_page/stable_page/test-stats
@@ -0,0 +1,153 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# Copyright Red Hat Inc
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# This file is part of Cockpit.
+#
+
+import argparse
+import json
+import os
+import sys
+import tempfile
+import shutil
+import subprocess
+
+import urllib.request
+import urllib.parse
+
+
+UPSTREAM_PAGURE = "https://upstreamfirst.fedorainfracloud.org/api/0/"
+UPSTREAM_BASE = "https://upstreamfirst.fedorainfracloud.org/"
+
+DISTGIT_BASE = "https://src.fedoraproject.org/git/rpms/"
+
+
+def retrieve(url):
+    return urllib.request.urlopen(url).read()
+
+
+def projects():
+    url = urllib.parse.urljoin(UPSTREAM_PAGURE, "projects")
+    for project in json.loads(retrieve(url))["projects"]:
+        if not project.get("parent"):
+            yield project["name"]
+
+
+def repos():
+    base = os.path.dirname(__file__)
+    with open(os.path.join(base, "repos"), "rb") as f:
+        while True:
+            line = f.readline()
+            if not line:
+                break
+            line = line.strip()
+            if line:
+                yield line.decode("utf-8")
+
+
+def clone(url, directory):
+    target = os.path.join(directory, os.path.basename(url))
+    while os.path.exists(target):
+        target += ".x"
+    try:
+        subprocess.check_call(["git", "clone", url, target], cwd=directory, stdout=sys.stderr.fileno())
+    except subprocess.CalledProcessError:
+        return None
+    return target
+
+
+def count(stats, field, project):
+    if field not in stats:
+        stats[field] = [ ]
+    stats[field].append(project)
+
+
+def tags(repo, standard):
+    try:
+        playbook = standard and "tests.yml" or "test_local.yml"
+        environ = os.environ.copy()
+        environ["LC_ALL"] = "C"
+        output = subprocess.check_output([ "ansible-playbook", "--list-tags", playbook ], env=environ, cwd=repo)
+    except subprocess.CalledProcessError:
+        output = b""
+
+    for line in output.decode("utf-8").split("\n"):
+        if "TASK TAGS" in line:
+            name, unused, tags = line.partition(":")
+            for tag in tags.strip(" []").split(","):
+                yield tag.strip()
+
+
+def gather(repo, project, stats):
+
+    # Standard entry point
+    path = os.path.join(repo, "tests.yml")
+    standard = os.path.exists(path)
+    if standard:
+        count(stats, "tests.yml", project)
+
+    # Check if we have an old style test_cloud.yml file
+    path = os.path.join(repo, "test_cloud.yml")
+    if os.path.exists(path):
+        count(stats, "atomic", project)
+    elif "atomic" in tags(repo, standard):
+        count(stats, "atomic", project)
+
+    if os.path.exists(os.path.join(repo, "test_cloud.yml")) or \
+       os.path.exists(os.path.join(repo, "test_local.yml")) or \
+       os.path.exists(os.path.join(repo, "test_docker.yml")):
+        count(stats, "legacy", project)
+
+
+def main():
+    parser = argparse.ArgumentParser(description='Gather stats about tests in dist-git')
+    opts = parser.parse_args()
+
+    stats = {}
+    directory = tempfile.mkdtemp(prefix="test-stats")
+
+    # Dist git
+    for project in repos():
+        url = urllib.parse.urljoin(DISTGIT_BASE, project)
+        repo = clone(url, directory)
+        if repo:
+            sub = os.path.join(repo, "tests")
+            count(stats, "distgit", project)
+            if os.path.exists(sub):
+                count(stats, "distgit-tests", project)
+                gather(sub, project, stats)
+        else:
+            count(stats, "missing", project)
+
+    # Upstream first projects
+    for project in projects():
+        url = urllib.parse.urljoin(UPSTREAM_BASE, project)
+        repo = clone(url, directory)
+        if repo:
+            count(stats, "upstream", project)
+            gather(repo, project, stats)
+
+    shutil.rmtree(directory)
+
+    for name in list(stats.keys()):
+        stats["{0}-length".format(name)] = len(stats[name])
+    json.dump(stats, sys.stdout, indent=4)
+    return 0
+
+
+if __name__ == '__main__':
+    sys.exit(main())

