diff --git a/layerindex/tools/webapi-test.py b/layerindex/tools/webapi-test.py new file mode 100755 index 0000000..20fc36b --- /dev/null +++ b/layerindex/tools/webapi-test.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 + +# Layerindex web API test utility + +# Copyright (C) 2019 Intel Corporation +# +# Licensed under the MIT license, see COPYING.MIT for details + +import sys +import os +import argparse +import json +import requests +import subprocess +import tempfile +import shutil +import re + +def compare_recipe(args): + tmpdir = tempfile.mkdtemp() + try: + def fetch_json(url, fn): + fetchurl = url + '/layerindex/api/recipes/?filter=pn:%s' % args.pn + print('getting %s' % fetchurl) + r = requests.get(fetchurl) + if not r.ok: + print('Request failed: %d: %s' % (r.status_code, r.text)) + sys.exit(2) + jsdata = json.loads(r.text) + with open(os.path.join(tmpdir, fn), 'w') as f: + json.dump(jsdata, f, indent=4, sort_keys=True) + f.write('\n') + + fetch_json(args.url1, 'file1') + fetch_json(args.url2, 'file2') + + subprocess.call(['git', 'diff', '--no-index', os.path.join(tmpdir, 'file1'), os.path.join(tmpdir, 'file2')], shell=False) + finally: + shutil.rmtree(tmpdir) + + +def main(): + parser = argparse.ArgumentParser(description="github fetch utility", + epilog="Use %(prog)s --help to get help on a specific command") + #parser.add_argument('-d', '--debug', help='Enable debug output', action='store_true') + subparsers = parser.add_subparsers(title='subcommands', metavar='') + subparsers.required = True + + parser_compare_recipe = subparsers.add_parser('compare-recipe', + help='Compare recipe JSON from two different layer index instances', + description='Compares recipe JSON from two different layer index instances') + parser_compare_recipe.add_argument('url1', help='First layer index URL to fetch from') + parser_compare_recipe.add_argument('url2', help='Second layer index URL to fetch from') + parser_compare_recipe.add_argument('pn', help='Recipe name to compare') + parser_compare_recipe.set_defaults(func=compare_recipe) + + args = parser.parse_args() + + ret = args.func(args) + + return ret + + +if __name__ == "__main__": + try: + ret = main() + except Exception: + ret = 1 + import traceback + traceback.print_exc() + sys.exit(ret)