)]}'
{"devstack-vm-gate.sh":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"d123eec36d9f394e973dbc24597c60c520240e5a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    VOLUME_API_EXTENSIONS\u003d${ext_data[6]:add-volume-ext}"},{"line_number":37,"context_line":"    DISABLE_VOLUME_API_EXTENSIONS\u003d${ext_data[7]:rm-volume-ext}"},{"line_number":38,"context_line":"    OBJECT_STORAGE_API_EXTENSIONS\u003d${ext_data[8]:add-object-storage-ext}"},{"line_number":39,"context_line":"    DISABLE_OBJECT_STORAGE_API_EXTENSIONS\u003d${ext_data[9]:rm-object-storage-ext}"},{"line_number":40,"context_line":"}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""}],"source_content_type":"text/x-sh","patch_set":1,"id":"1abeadc6_1c997e6e","line":39,"updated":"2014-08-26 11:03:51.000000000","message":"if you find this ugly I can change test-matrix.py so that it can be called to retrieve either the services or the extensions for one or more specific services.\n\ne.g. test-matrix.py --ext compute will return only two lines - the first for \"add\" and the second for \"rm\"\n\nI preferred to call test-matrix.py only once. Let me know how you do prefer it.","commit_id":"05af643884a95ebfe678580c9895755daa7f7681"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"8d9d91c15365b76957f842be307d1eee330d03a0","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    VOLUME_API_EXTENSIONS\u003d${ext_data[6]:add-volume-ext}"},{"line_number":37,"context_line":"    DISABLE_VOLUME_API_EXTENSIONS\u003d${ext_data[7]:rm-volume-ext}"},{"line_number":38,"context_line":"    OBJECT_STORAGE_API_EXTENSIONS\u003d${ext_data[8]:add-object-storage-ext}"},{"line_number":39,"context_line":"    DISABLE_OBJECT_STORAGE_API_EXTENSIONS\u003d${ext_data[9]:rm-object-storage-ext}"},{"line_number":40,"context_line":"}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""}],"source_content_type":"text/x-sh","patch_set":2,"id":"1abeadc6_a4995070","line":39,"updated":"2014-08-26 13:14:01.000000000","message":"if you find this ugly I can change test-matrix.py so that it can be called to retrieve either the services or the extensions for one or more specific services.\ne.g. test-matrix.py --ext compute will return only two lines - the first for \"add\" and the second for \"rm\"\n\nI preferred to call test-matrix.py only once. Let me know how you do prefer it.","commit_id":"b8dde1c02bcf479c1fb190cc9533000cd6aab62a"}],"features.yaml":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"d123eec36d9f394e973dbc24597c60c520240e5a","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    havana:"},{"line_number":74,"context_line":"      rm-compute-ext: []"},{"line_number":75,"context_line":"    icehouse:"},{"line_number":76,"context_line":"      compute-ext: []"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  nova-md:"},{"line_number":79,"context_line":"    base:"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"1abeadc6_5ccdb685","line":76,"updated":"2014-08-26 11:03:51.000000000","message":"I preferred changing feature.yaml rather then adding more logic to test-matrix.py for handling none values.","commit_id":"05af643884a95ebfe678580c9895755daa7f7681"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"33ec2cdb9360c70f2e8bae49d6f6fdbe138b92a4","unresolved":false,"context_lines":[{"line_number":71,"context_line":"  nova:"},{"line_number":72,"context_line":"    base:"},{"line_number":73,"context_line":"      services: [n-api, n-cond, n-cpu, n-crt, n-net, n-obj, n-sch]"},{"line_number":74,"context_line":"   icehouse:"},{"line_number":75,"context_line":"      compute-ext: []"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  nova-md:"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5a890539_d2c34655","line":74,"updated":"2014-11-20 22:18:20.000000000","message":"i guess it doesn\u0027t like this offset","commit_id":"a4044d2b1441dd7d213cdc82543ad315473f9cc5"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f65aa4d8ec735e60b8649e2b8eb79158692ac264","unresolved":false,"context_lines":[{"line_number":71,"context_line":"  nova:"},{"line_number":72,"context_line":"    base:"},{"line_number":73,"context_line":"      services: [n-api, n-cond, n-cpu, n-crt, n-net, n-obj, n-sch]"},{"line_number":74,"context_line":"   icehouse:"},{"line_number":75,"context_line":"      compute-ext: []"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  nova-md:"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5a890539_fe728448","line":74,"in_reply_to":"5a890539_d2c34655","updated":"2014-11-24 14:59:05.000000000","message":"stupid machine!","commit_id":"a4044d2b1441dd7d213cdc82543ad315473f9cc5"}],"test-matrix.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"d123eec36d9f394e973dbc24597c60c520240e5a","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def _calc_service_extensions(feature_data, service, action):"},{"line_number":77,"context_line":"    return"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def calc_extensions(feature_data, extensions_data, extensions):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_7c6432e5","line":77,"updated":"2014-08-26 11:03:51.000000000","message":"oops","commit_id":"05af643884a95ebfe678580c9895755daa7f7681"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"d123eec36d9f394e973dbc24597c60c520240e5a","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            \u0027rm\u0027: set(feature_data.get(\u0027%s-%s-ext\u0027 % (\u0027rm\u0027, extension), []))"},{"line_number":85,"context_line":"        }"},{"line_number":86,"context_line":"        cur_ext_data \u003d extensions_data.setdefault(extension, ext_data)"},{"line_number":87,"context_line":"        # This will be a no-op if the element was just initialized"},{"line_number":88,"context_line":"        for item in cur_ext_data:"},{"line_number":89,"context_line":"            cur_ext_data[item].update(ext_data[item])"},{"line_number":90,"context_line":"        extensions_data[extension] \u003d cur_ext_data"}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_1ca5fe03","line":87,"updated":"2014-08-26 11:03:51.000000000","message":"well I meant that we will just reassign the same value...","commit_id":"05af643884a95ebfe678580c9895755daa7f7681"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"d123eec36d9f394e973dbc24597c60c520240e5a","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                        default\u003d[\u0027compute\u0027, \u0027compute_v3\u0027, \u0027network\u0027,"},{"line_number":164,"context_line":"                                 \u0027volume\u0027, \u0027object-storage\u0027],"},{"line_number":165,"context_line":"                        help\u003d(\"Lookup for enabled/disabled extensions for \""},{"line_number":166,"context_line":"                              \"specified services\"))"},{"line_number":167,"context_line":"    return parser.parse_args()"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_5c95b686","line":166,"updated":"2014-08-26 11:03:51.000000000","message":"this could be a mutex group.\nIn theory one could make --ext nargs\u003d\u0027*\u0027 and interpret --ext without any extension as \"no extensions\" but that is not really good for usability, in my opinion.","commit_id":"05af643884a95ebfe678580c9895755daa7f7681"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"d123eec36d9f394e973dbc24597c60c520240e5a","unresolved":false,"context_lines":[{"line_number":183,"context_line":"                                              opts.extensions)"},{"line_number":184,"context_line":"    LOG.debug(\"Services: %s \" % services)"},{"line_number":185,"context_line":"    LOG.debug(\"Extensions data: %s \" % extensions_data)"},{"line_number":186,"context_line":"    # TODO(salv-orlando): LOG.warn if an extenions is both in \u0027add\u0027 and \u0027rm\u0027"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    print \",\".join(services)"},{"line_number":189,"context_line":"    # output extensions in the order they were requested"}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_7cd99282","line":186,"updated":"2014-08-26 11:03:51.000000000","message":"meh maybe we don\u0027t need that as I\u0027ve added test-extensions.sh","commit_id":"05af643884a95ebfe678580c9895755daa7f7681"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"d123eec36d9f394e973dbc24597c60c520240e5a","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    print \",\".join(services)"},{"line_number":189,"context_line":"    # output extensions in the order they were requested"},{"line_number":190,"context_line":"    # (or in the default order is the option was not specified)"},{"line_number":191,"context_line":"    for extension in opts.extensions:"},{"line_number":192,"context_line":"        ext_data \u003d extensions_data[extension]"},{"line_number":193,"context_line":"        print \"%s:%s\" % (\u0027add-%s-ext\u0027 % extension,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_1c417e0b","line":190,"updated":"2014-08-26 11:03:51.000000000","message":"if the \u0027ext\u0027 option was not specified","commit_id":"05af643884a95ebfe678580c9895755daa7f7681"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"d123eec36d9f394e973dbc24597c60c520240e5a","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        print \"%s:%s\" % (\u0027add-%s-ext\u0027 % extension,"},{"line_number":194,"context_line":"                         \",\".join(ext_data[\u0027add\u0027]))"},{"line_number":195,"context_line":"        print \"%s:%s\" % (\u0027rm-%s-ext\u0027 % extension,"},{"line_number":196,"context_line":"                         \",\".join(ext_data[\u0027rm\u0027]))"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"if __name__ \u003d\u003d \"__main__\":"}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_5c1f7609","line":196,"updated":"2014-08-26 11:03:51.000000000","message":"this is something that to an extent looks contentious. Basically the alternative would be to return either enabled services or extensions.\nI did it in this way in order to run test-matrix.py only once, but I\u0027m happy to reconsider.","commit_id":"05af643884a95ebfe678580c9895755daa7f7681"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"8d9d91c15365b76957f842be307d1eee330d03a0","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        print \"%s:%s\" % (\u0027add-%s-ext\u0027 % extension,"},{"line_number":190,"context_line":"                         \",\".join(ext_data[\u0027add\u0027]))"},{"line_number":191,"context_line":"        print \"%s:%s\" % (\u0027rm-%s-ext\u0027 % extension,"},{"line_number":192,"context_line":"                         \",\".join(ext_data[\u0027rm\u0027]))"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"if __name__ \u003d\u003d \"__main__\":"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_64b658de","line":192,"updated":"2014-08-26 13:14:01.000000000","message":"this is something that to an extent looks contentious. Basically the alternative would be to return either enabled services or extensions. I did it in this way in order to run test-matrix.py only once, but I\u0027m happy to reconsider.","commit_id":"b8dde1c02bcf479c1fb190cc9533000cd6aab62a"}]}
