+import argparse
from changes import Changes
# assumes that the new/current and older distributions are unzipped in /tmp/distro_new and
class DistCompare(object):
+ def __init__(self, remote_url):
+
+ self.remote_url = remote_url
@staticmethod
def get_project_names():
# TODO: when autorelease starts publishing the dependencies.log artifact, this function (or the consumer
# of this tool) can take the latest dependencies.log from jenkins lastSuccessfulArtifacts and put it
# in /tmp/ For now the functionality to read the projects from that file are commented.
-
"""
projects = []
with open("/tmp/dependencies.log") as dep_file:
return projects
"""
-
- # this hard coded list of projects was taken from a Carbon dependencies.log - late January 2017
- return ['eman', 'integration/distribution', 'snbi', 'mdsal', 'alto', 'sfc', 'sdninterfaceapp', 'topoprocessing',
- 'usc', 'ovsdb', 'lispflowmapping', 'groupbasedpolicy', 'usecplugin', 'snmp4sdn', 'capwap', 'aaa',
- 'honeycomb/vbd', 'atrium', 'next', 'nic', 'vtn', 'lacp', 'openflowplugin', 'faas', 'ttp', 'of-config',
- 'packetcable', 'genius', 'yangtools', 'natapp', 'didm', 'infrautils', 'netide', 'netvirt', 'neutron',
- 'cardinal', 'snmp', 'bgpcep', 'nemo', 'netconf', 'yang-push', 'iotdm', 'tsdr', 'sxp', 'centinel',
- 'odlparent', 'l2switch', 'unimgr', 'openflowjava', 'ocpplugin', 'dlux', 'controller']
+ # this hard coded list of projects was taken from Oxygen dependencies.log - late January 2018
+ return [
+ "integration/distribution",
+ "mdsal",
+ "alto",
+ "bier",
+ "serviceutils",
+ "usc",
+ "ovsdb",
+ "lispflowmapping",
+ "snmp4sdn",
+ "aaa",
+ "honeycomb/vbd",
+ "openflowplugin",
+ "of-config",
+ "daexim",
+ "dluxapps",
+ "coe",
+ "packetcable",
+ "yangtools",
+ "infrautils",
+ "neutron",
+ "snmp",
+ "bgpcep",
+ "nemo",
+ "netconf",
+ "tsdr",
+ "sxp",
+ "jsonrpc",
+ "p4plugin",
+ "odlparent",
+ "l2switch",
+ "dlux",
+ "controller",
+ ]
def run_cmd(self):
query_limit = 100
num_to_display = 50
- branch = 'master'
+ branch = "master"
project_names = self.get_project_names()
- extracted_distro_locations = {'new': '/tmp/distro_new', 'old': '/tmp/distro_old'}
+ extracted_distro_locations = {
+ "new": "/tmp/distro_new",
+ "old": "/tmp/distro_old",
+ }
+
+ new_changes = Changes(
+ branch,
+ extracted_distro_locations["new"],
+ num_to_display,
+ query_limit,
+ project_names,
+ self.remote_url,
+ )
- new_changes = Changes(branch, extracted_distro_locations['new'], num_to_display,
- query_limit, project_names)
new_projects = new_changes.run_cmd()
new_changes.pretty_print_projects(new_projects)
- old_changes = Changes(branch, extracted_distro_locations['old'], num_to_display,
- query_limit, project_names)
+ old_changes = Changes(
+ branch,
+ extracted_distro_locations["old"],
+ num_to_display,
+ query_limit,
+ project_names,
+ self.remote_url,
+ )
+
old_projects = old_changes.run_cmd()
old_changes.pretty_print_projects(old_projects)
patchset_diff = []
print("\nPatch differences:\n------------------")
for project_name, values in new_projects.items():
- new_gerrits = values['includes']
+ new_gerrits = values["includes"]
for gerrit in new_gerrits:
- if gerrit not in old_projects[project_name]['includes']:
+ if gerrit not in old_projects[project_name]["includes"]:
patchset_diff.append(gerrit)
- print('{:<20}{}\t{}'.format(project_name, gerrit['url'], gerrit['subject']))
+ print(
+ "{:<20}{}\t{}".format(
+ project_name, gerrit["url"], gerrit["subject"]
+ )
+ )
print("\n%s different patches between the two distros." % len(patchset_diff))
def main():
- distc = DistCompare()
+
+ parser = argparse.ArgumentParser(
+ description="Returns the list of patches found in the unzipped distribution at "
+ "/tmp/distro_new that are not found in the distribution at "
+ "/tmp/distro_old. This should result in a listing of what new changes "
+ "were made between the two distributions."
+ )
+ parser.add_argument(
+ "-r",
+ "--remote",
+ dest="remote_url",
+ default=Changes.REMOTE_URL,
+ help="git remote url to use for gerrit",
+ )
+ options = parser.parse_args()
+
+ distc = DistCompare(options.remote_url)
distc.run_cmd()