)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13167,"name":"Yogesh","email":"ykshirsa@netapp.com","username":"yogi1"},"change_message_id":"48975f29fd2f1b430f9b2e99da7c20c58bff5e0d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add UUIDs to tests with tools and checks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds UUIDs to all Tempest tests, adds a hacking check"},{"line_number":10,"context_line":"to test for the exitence of UUIDs, and adds a new tool to check"},{"line_number":11,"context_line":"for existence and uniqueness of UUIDs across Tempest or any other"},{"line_number":12,"context_line":"test repository based on Tempest. The tool also includes an option"},{"line_number":13,"context_line":"to automatically tag a test repository with UUIDs if they don\u0027t"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba7be1f8_2e90b642","line":10,"updated":"2015-02-23 19:00:44.000000000","message":"Typo - existence","commit_id":"963bb5e10a1a20f397d13c73a17b3a7db3f9e6f9"}],"tempest/test.py":[{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"c84c0ab97a33b519fd4617c910b768a66a3b8e15","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    def decorator(f):"},{"line_number":68,"context_line":"        return f"},{"line_number":69,"context_line":"    return decorator"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"def get_service_list():"},{"line_number":72,"context_line":"    service_list \u003d {"},{"line_number":73,"context_line":"        \u0027compute\u0027: CONF.service_available.nova,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_b325edc3","line":70,"updated":"2015-02-23 18:09:37.000000000","message":"pep8 failure (expected 2 blank lines)","commit_id":"963bb5e10a1a20f397d13c73a17b3a7db3f9e6f9"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"40d1a3e7f44ff430a67ee62b7c81e52f57e89089","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        return f"},{"line_number":69,"context_line":"    return decorator"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"def get_service_list():"},{"line_number":72,"context_line":"    service_list \u003d {"},{"line_number":73,"context_line":"        \u0027compute\u0027: CONF.service_available.nova,"},{"line_number":74,"context_line":"        \u0027image\u0027: CONF.service_available.glance,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_61a47857","line":71,"updated":"2015-02-23 22:12:49.000000000","message":"pep8 failure Expected two blank lines before def, found 1","commit_id":"1d79b887b48e74fc115cc70dd764aa4be82569b1"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a12fee5531155b7c861781b95b7d1d4bde021801","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"def idempotent_id(id):"},{"line_number":67,"context_line":"    \"\"\"Stub for metadata decorator\"\"\""},{"line_number":68,"context_line":"    if not isinstance(id, six.string_types):"},{"line_number":69,"context_line":"        raise TypeError(\u0027Test idempotent_id must be string not %s\u0027"},{"line_number":70,"context_line":"                        \u0027\u0027 % type(id).__name__)"}],"source_content_type":"text/x-python","patch_set":19,"id":"ba7be1f8_4ed62e50","line":67,"updated":"2015-02-26 20:46:33.000000000","message":"This docstring isn\u0027t really accurate anymore.","commit_id":"670b53b23e3aef2f79dae17d8c7e1ab000e43f76"}],"tools/check_uuid.py":[{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"c84c0ab97a33b519fd4617c910b768a66a3b8e15","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        \"\"\"Look for collisions against a set of tests"},{"line_number":263,"context_line":"        \"\"\""},{"line_number":264,"context_line":"        uuids \u003d set()"},{"line_number":265,"context_line":"        def check_unique(module_name, test_name, tests):"},{"line_number":266,"context_line":"            test_uuid \u003d self._get_metadata("},{"line_number":267,"context_line":"                tests[module_name][\u0027tests\u0027][test_name]"},{"line_number":268,"context_line":"            ).get(UUID_META_KEY)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_533591f5","line":265,"updated":"2015-02-23 18:09:37.000000000","message":"pep8 failure (expected 1 blank line)","commit_id":"963bb5e10a1a20f397d13c73a17b3a7db3f9e6f9"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"c84c0ab97a33b519fd4617c910b768a66a3b8e15","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        collisions exist."},{"line_number":280,"context_line":"        \"\"\""},{"line_number":281,"context_line":"        uuids \u003d {}"},{"line_number":282,"context_line":"        def report(module_name, test_name, tests):"},{"line_number":283,"context_line":"            test_uuid \u003d self._get_metadata("},{"line_number":284,"context_line":"                tests[module_name][\u0027tests\u0027][test_name]"},{"line_number":285,"context_line":"            ).get(UUID_META_KEY)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_7345356f","line":282,"updated":"2015-02-23 18:09:37.000000000","message":"pep8 failure (expected 1 blank line)","commit_id":"963bb5e10a1a20f397d13c73a17b3a7db3f9e6f9"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"16d1b6a01a64249e83264b9d8971baf1ea41695f","unresolved":false,"context_lines":[{"line_number":338,"context_line":"    parser \u003d argparse.ArgumentParser()"},{"line_number":339,"context_line":"    parser.add_argument(\u0027--package\u0027, action\u003d\u0027store\u0027, dest\u003d\u0027package\u0027,"},{"line_number":340,"context_line":"                        default\u003d\u0027tempest.api\u0027, type\u003dstr,"},{"line_number":341,"context_line":"                        help\u003d\u0027Path to the directory with tests.\u0027)"},{"line_number":342,"context_line":"    parser.add_argument(\u0027--fix\u0027, action\u003d\u0027store_true\u0027, dest\u003d\u0027fix_tests\u0027,"},{"line_number":343,"context_line":"                        help\u003d\u0027Attempt to fix tests without UUIDs\u0027)"},{"line_number":344,"context_line":"    parser.add_argument(\u0027--skip_errors\u0027, action\u003d\u0027store_true\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_c213715a","line":341,"updated":"2015-02-23 16:35:23.000000000","message":"I\u0027m confused about this. Are we looking at a package name or a directory? How would we use this to tag the entire tree?","commit_id":"963bb5e10a1a20f397d13c73a17b3a7db3f9e6f9"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"40d1a3e7f44ff430a67ee62b7c81e52f57e89089","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        collisions exist."},{"line_number":264,"context_line":"        \"\"\""},{"line_number":265,"context_line":"        uuids \u003d {}"},{"line_number":266,"context_line":"        def report(module_name, test_name, tests):"},{"line_number":267,"context_line":"            test_uuid \u003d self._get_metadata("},{"line_number":268,"context_line":"                tests[module_name][\u0027tests\u0027][test_name]"},{"line_number":269,"context_line":"            ).get(UUID_META_KEY)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_81b16c91","line":266,"updated":"2015-02-23 22:12:49.000000000","message":"pep8 Expected 1 blank line before def, found 0","commit_id":"1d79b887b48e74fc115cc70dd764aa4be82569b1"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"2328ca14abfad48cd249f1d606cb9651bb8d8095","unresolved":false,"context_lines":[{"line_number":26,"context_line":"DECORATOR_NAME \u003d \u0027idempotent_id\u0027"},{"line_number":27,"context_line":"DECORATOR_IMPORT \u003d \u0027tempest.%s\u0027 % DECORATOR_MODULE"},{"line_number":28,"context_line":"IMPORT_LINE \u003d \u0027from tempest import %s\u0027 % DECORATOR_MODULE"},{"line_number":29,"context_line":"UUID_META_KEY \u003d \u0027uuid\u0027"},{"line_number":30,"context_line":"DECORATOR_TEMPLATE \u003d \"@%s.%s(\u0027%%s\u0027)\" % (DECORATOR_MODULE,"},{"line_number":31,"context_line":"                                        DECORATOR_NAME)"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"ba7be1f8_91c79395","line":29,"updated":"2015-02-25 20:27:02.000000000","message":"Unused code","commit_id":"d4568e77763a4b03ae4a2b259b8c7a848c2cc918"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"2a03d915ba17908b35078855420b5a822c95de3d","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                        help\u003d\u0027Path to the directory with tests.\u0027)"},{"line_number":331,"context_line":"    parser.add_argument(\u0027--fix\u0027, action\u003d\u0027store_true\u0027, dest\u003d\u0027fix_tests\u0027,"},{"line_number":332,"context_line":"                        help\u003d\u0027Attempt to fix tests without UUIDs\u0027)"},{"line_number":333,"context_line":"    parser.add_argument(\u0027--skip_errors\u0027, action\u003d\u0027store_true\u0027,"},{"line_number":334,"context_line":"                        dest\u003d\u0027skip_errors\u0027,"},{"line_number":335,"context_line":"                        help\u003d\u0027Ignore thrown exceptions\u0027)"},{"line_number":336,"context_line":"    args \u003d parser.parse_args()"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba7be1f8_188abc63","line":333,"updated":"2015-02-26 16:41:18.000000000","message":"Should remove. Unused and not needed any more.","commit_id":"733614e74167109cd1a14bcdc790e74f75820128"}],"tox.ini":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"dcffd21248a44e620d61561cb6bbfff807079e9d","unresolved":false,"context_lines":[{"line_number":115,"context_line":"   {toxinidir}/tools/config/check_uptodate.sh"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"[testenv:uuid]"},{"line_number":118,"context_line":"commands \u003d python tools/check_uuid.py {posargs}"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"[hacking]"},{"line_number":121,"context_line":"local-check-factory \u003d tempest.hacking.checks.factory"}],"source_content_type":"text/x-properties","patch_set":19,"id":"ba7be1f8_cbadb032","line":118,"updated":"2015-02-26 17:12:42.000000000","message":"I think this should just go in the pep8 target, as I think long term we\u0027d want to migrate it into a hacking rule.","commit_id":"670b53b23e3aef2f79dae17d8c7e1ab000e43f76"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a12fee5531155b7c861781b95b7d1d4bde021801","unresolved":false,"context_lines":[{"line_number":115,"context_line":"   {toxinidir}/tools/config/check_uptodate.sh"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"[testenv:uuid]"},{"line_number":118,"context_line":"commands \u003d python tools/check_uuid.py {posargs}"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"[hacking]"},{"line_number":121,"context_line":"local-check-factory \u003d tempest.hacking.checks.factory"}],"source_content_type":"text/x-properties","patch_set":19,"id":"ba7be1f8_bc0ef930","line":118,"in_reply_to":"ba7be1f8_cbadb032","updated":"2015-02-26 20:46:33.000000000","message":"So I think  this target should run the generator (with the --fix flag) so people just need to run a tox command to fill in missing uuids. (similar to what we do with genconfig) Sean is correct that we want the check to be part of the check of the pep8 target when we start enforcing this.\n\nAlso in the future can we put python2 here. My stupid distro made python \u003d\u003d python3 which will probably cause me trouble here. FWIW, IIRC there is a pep on only using python if it supports both python2 and python3.","commit_id":"670b53b23e3aef2f79dae17d8c7e1ab000e43f76"}]}
