aboutsummaryrefslogtreecommitdiff
path: root/tools/version-check.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/version-check.py')
-rwxr-xr-xtools/version-check.py160
1 files changed, 0 insertions, 160 deletions
diff --git a/tools/version-check.py b/tools/version-check.py
deleted file mode 100755
index 58aa03e6e..000000000
--- a/tools/version-check.py
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/usr/bin/env python
-
-# 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.
-
-import collections
-import logging
-import os
-import re
-import sys
-
-import bs4
-from oslo_config import cfg
-import pkg_resources
-import prettytable
-import requests
-
-# NOTE(SamYaple): Update the search path to prefer PROJECT_ROOT as the source
-# of packages to import if we are using local tools instead of
-# pip installed kolla tools
-PROJECT_ROOT = os.path.abspath(os.path.join(
- os.path.dirname(os.path.realpath(__file__)), '..'))
-if PROJECT_ROOT not in sys.path:
- sys.path.insert(0, PROJECT_ROOT)
-
-from kolla.common import config as common_config
-
-logging.basicConfig(format="%(message)s")
-LOG = logging.getLogger('version-check')
-
-# Filter list for non-projects
-NOT_PROJECTS = [
- 'nova-novncproxy',
- 'nova-spicehtml5proxy',
- 'openstack-base',
- 'profiles'
-]
-TARBALLS_BASE_URL = 'http://tarballs.openstack.org'
-VERSIONS = {'local': dict()}
-
-
-def retrieve_upstream_versions():
- upstream_versions = dict()
- for project in VERSIONS['local']:
- winner = None
- series = VERSIONS['local'][project].split('.')[0]
- base = '{}/{}'.format(TARBALLS_BASE_URL, project)
- LOG.debug("Getting latest version for project %s from %s",
- project, base)
- r = requests.get(base)
- s = bs4.BeautifulSoup(r.text, 'html.parser')
-
- for link in s.find_all('a'):
- version = link.get('href')
- if (version.endswith('.tar.gz') and
- version.startswith('{}-{}'.format(project, series))):
- split = '{}-|.tar.gz'.format(project)
- candidate = re.split(split, version)[1]
- # Ignore 2014, 2015 versions as they are older
- if candidate.startswith('201'):
- continue
- if not winner or more_recent(candidate, winner):
- winner = candidate
-
- if not winner:
- LOG.warning("Could not find a version for %s", project)
- continue
-
- if '-' in winner:
- winner = winner.split('-')[1]
- upstream_versions[project] = winner
- LOG.debug("Found latest version %s for project %s", winner, project)
-
- VERSIONS['upstream'] = collections.OrderedDict(
- sorted(upstream_versions.items()))
-
-
-def retrieve_local_versions(conf):
- for section in common_config.SOURCES:
- if section in NOT_PROJECTS:
- continue
-
- project = section.split('-')[0]
-
- if section not in conf.list_all_sections():
- LOG.debug("Project %s not found in configuration file, using "
- "default from kolla.common.config", project)
- raw_version = common_config.SOURCES[section]['location']
- else:
- raw_version = getattr(conf, section).location
-
- version = raw_version.split('/')[-1].split('.tar.gz')[0]
- if '-' in version:
- version = version.split('-')[1]
-
- LOG.debug("Use local version %s for project %s", version, project)
- VERSIONS['local'][project] = version
-
-
-def more_recent(candidate, reference):
- return pkg_resources.parse_version(candidate) > \
- pkg_resources.parse_version(reference)
-
-
-def diff_link(project, old_ref, new_ref):
- return "https://github.com/openstack/{}/compare/{}...{}".format(
- project, old_ref, new_ref)
-
-
-def compare_versions():
- up_to_date = True
- result = prettytable.PrettyTable(["Project", "Current version",
- "Latest version", "Comparing changes"])
- result.align = "l"
-
- for project in VERSIONS['upstream']:
- if project not in VERSIONS['local']:
- continue
-
- upstream_version = VERSIONS['upstream'][project]
- local_version = VERSIONS['local'][project]
-
- if more_recent(upstream_version, local_version):
- result.add_row([
- project,
- VERSIONS['local'][project],
- VERSIONS['upstream'][project],
- diff_link(project, local_version, upstream_version)
- ])
- up_to_date = False
-
- if up_to_date:
- result = "Everything is up to date"
-
- print(result)
-
-
-def main():
- conf = cfg.ConfigOpts()
- common_config.parse(conf, sys.argv[1:], prog='version-check')
-
- if conf.debug:
- LOG.setLevel(logging.DEBUG)
-
- retrieve_local_versions(conf)
- retrieve_upstream_versions()
-
- compare_versions()
-
-if __name__ == '__main__':
- main()