Remove Artifacts JSON Job 63/47063/1
authorTrevor Bramwell <tbramwell@linuxfoundation.org>
Fri, 10 Nov 2017 20:50:57 +0000 (12:50 -0800)
committerTrevor Bramwell <tbramwell@linuxfoundation.org>
Fri, 10 Nov 2017 20:50:57 +0000 (12:50 -0800)
As far as I know the site that consumed this resource was never actually
published, and given this runs frequently on master, removing it should
save resources.

Change-Id: I383fcffcef98e0e12a38d15dcb1204419283b833
Signed-off-by: Trevor Bramwell <tbramwell@linuxfoundation.org>
jjb/global/releng-macros.yml
jjb/releng/releng-ci-jobs.yml
utils/opnfv-artifacts.py [deleted file]

index 62c22bd..d796326 100644 (file)
               gsutil -m rm -r "gs://$gs_path"
           fi
 
-- builder:
-    name: build-and-upload-artifacts-json-api
-    builders:
-      - shell: |
-          #!/bin/bash
-          set -o errexit
-          set -o pipefail
-          export PATH=$PATH:/usr/local/bin/
-
-          virtualenv -p python2.7 $WORKSPACE/releng_artifacts
-          source $WORKSPACE/releng_artifacts/bin/activate
-
-          # install python packages
-          pip install google-api-python-client
-
-          # generate and upload index file
-          echo "Generating Artifacts API ..."
-          python $WORKSPACE/utils/opnfv-artifacts.py > index.json
-          gsutil cp index.json gs://artifacts.opnfv.org/index.json
-
-          deactivate
-
 - builder:
     name: lint-python-code
     builders:
index d4f3970..c4b7c8d 100644 (file)
@@ -5,7 +5,6 @@
       - 'releng-verify-jjb'
       - 'releng-merge-jjb'
       - 'releng-comment-jjb'
-      - 'releng-generate-artifacts-api'
 
     project: 'releng'
 
               cd /opt/jenkins-ci/releng
               git pull
               jenkins-jobs update -r --delete-old jjb/
-
-- job-template:
-    name: 'releng-generate-artifacts-api'
-
-    # Generate and upload the JSON file to used for artifacts site
-
-    parameters:
-      - project-parameter:
-          project: '{project}'
-          branch: 'master'
-
-    scm:
-      - git-scm
-
-    triggers:
-      - timed: '@hourly'
-
-    builders:
-      - build-and-upload-artifacts-json-api
diff --git a/utils/opnfv-artifacts.py b/utils/opnfv-artifacts.py
deleted file mode 100644 (file)
index 2f2cc41..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/usr/bin/python
-# SPDX-license-identifier: Apache-2.0
-##############################################################################
-# Copyright (c) 2016 The Linux Foundation and others
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#  http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-##############################################################################
-
-"""
-Generate JSON listing of OPNFV Artifacts
-
-This produces a slimmed down version of metadata provided by Google
-Storage for each artifact. Also excludes a large number of uninteresting
-files.
-"""
-
-from apiclient import discovery
-from apiclient.errors import HttpError
-
-import argparse
-import json
-import sys
-
-api = {
-    'projects': {},
-    'docs': {},
-    'releases': {},
-}
-
-releases = [
-    'arno.2015.1.0',
-    'arno.2015.2.0',
-    'brahmaputra.1.0',
-]
-
-# List of file extensions to filter out
-ignore_extensions = [
-    '.buildinfo',
-    '.woff',
-    '.ttf',
-    '.svg',
-    '.eot',
-    '.pickle',
-    '.doctree',
-    '.js',
-    '.png',
-    '.css',
-    '.gif',
-    '.jpeg',
-    '.jpg',
-    '.bmp',
-]
-
-
-parser = argparse.ArgumentParser(
-    description='OPNFV Artifacts JSON Generator')
-
-parser.add_argument(
-    '-k',
-    dest='key',
-    default='',
-    help='API Key for Google Cloud Storage')
-
-parser.add_argument(
-    '-p',
-    default=None,
-    dest='pretty',
-    action='store_const',
-    const=2,
-    help='pretty print the output')
-
-# Parse and assign arguments
-args = parser.parse_args()
-key = args.key
-pretty_print = args.pretty
-
-
-def output(item, indent=2):
-    print(json.dumps(item, sort_keys=True, indent=indent))
-
-
-def has_gerrit_review(dir_list):
-    """
-    If a directory contains an integer, it is assumed to be a gerrit
-    review number
-    """
-    for d in dir_list:
-        if d.isdigit():
-            return int(d)
-    return False
-
-
-def has_release(dir_list):
-    """
-    Checks if any directory contains a release name
-    """
-    for d in dir_list:
-        if d in releases:
-            return d
-    return False
-
-
-def has_documentation(dir_list):
-    """
-    Checks for a directory specifically named 'docs'
-    """
-    for d in dir_list:
-        if d == 'docs':
-            return True
-    return False
-
-
-# Rename this or modify how gerrit review are handled
-def has_logs(gerrit_review):
-    """
-    If a gerrit review exists, create a link to the review
-    """
-    if gerrit_review:
-        return "https://gerrit.opnfv.org/gerrit/#/c/%s" % gerrit_review
-    return False
-
-
-def has_ignorable_extension(filename):
-    for extension in ignore_extensions:
-        if filename.lower().endswith(extension):
-            return True
-    return False
-
-
-def get_results(key):
-    """
-    Pull down all metadata from artifacts.opnfv.org
-    and store it in projects as:
-    { 'PROJECT': [file ...], }
-    """
-    storage = discovery.build('storage', 'v1', developerKey=key)
-    files = storage.objects().list(bucket='artifacts.opnfv.org',
-                                   fields='nextPageToken,'
-                                          'items('
-                                   'name,'
-                                   'mediaLink,'
-                                   'updated,'
-                                   'contentType,'
-                                   'size'
-                                          ')')
-    while (files is not None):
-        sites = files.execute()
-
-        for site in sites['items']:
-            # Filter out unneeded files (js, images, css, buildinfo, etc)
-            if has_ignorable_extension(site['name']):
-                continue
-
-            # Split /foo/bar/ into ['foo', 'bar'] and remove any extra
-            # slashes (ex. /foo//bar/)
-            site_split = filter(None, site['name'].split('/'))
-
-            # Don't do anything if we aren't given files multiple
-            # directories deep
-            if len(site_split) < 2:
-                continue
-
-            project = site_split[0]
-            name = '/'.join(site_split[1:])
-            proxy = "http://build.opnfv.org/artifacts.opnfv.org/%s" % site[
-                'name']
-            if name.endswith('.html'):
-                href = "http://artifacts.opnfv.org/%s" % site['name']
-                href_type = 'view'
-            else:
-                href = site['mediaLink']
-                href_type = 'download'
-
-            gerrit = has_gerrit_review(site_split)
-            logs = False  # has_logs(gerrit)
-            # documentation = has_documentation(site_split)
-            release = has_release(site_split)
-
-            category = 'project'
-            if gerrit:
-                category = 'gerrit'
-            elif release:
-                category = 'release'
-            elif logs:
-                category = 'logs'
-
-            metadata = {
-                'category': category,
-                'gerritreview': gerrit,
-                'release': release,
-                'name': name,
-                'size': site['size'],
-                'time': site['updated'],
-                'contentType': site['contentType'],
-                'href': href,
-                'href_type': href_type,
-                'proxy_href': proxy,
-            }
-
-            if project in releases:
-                if project not in api['releases']:
-                    api['releases'][project] = [metadata]
-                else:
-                    api['releases'][project].append(metadata)
-            else:
-                if project not in api['projects']:
-                    api['projects'][project] = [metadata]
-                else:
-                    api['projects'][project].append(metadata)
-
-        files = storage.objects().list_next(files, sites)
-
-    return api
-
-
-# Fail if there is an invalid response from GCE
-try:
-    js = get_results(key)
-except HttpError as e:
-    print >> sys.stderr, e
-    exit(1)
-
-output(js, indent=pretty_print)