)]}'
{"etc/glance-registry.conf":[{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"148805ae088fb9fbd8df363ca1edb431257efed6","unresolved":false,"context_lines":[{"line_number":22,"context_line":"# Not supported on OS X."},{"line_number":23,"context_line":"#tcp_keepidle \u003d 600"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# API to use for accessing data. Default value points to sqlalchemy"},{"line_number":26,"context_line":"# package, it is also possible to use: glance.db.registry.api"},{"line_number":27,"context_line":"# data_api \u003d glance.db.sqlalchemy.api"},{"line_number":28,"context_line":""}],"source_content_type":"text/plain","patch_set":4,"id":"AAAAP3%2F%2FoIk%3D","line":25,"updated":"2013-07-15 17:21:42.000000000","message":"I think this should move to glance-api.conf. That is the more typical use case for this feature (having a v2 api server pointing at a registry via the db driver).","commit_id":"762155c8c7b55baa27eacf7f8b49e025aea99179"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"893cbdb5503e82b45059e79031b8572e1bebcac3","unresolved":false,"context_lines":[{"line_number":22,"context_line":"# Not supported on OS X."},{"line_number":23,"context_line":"#tcp_keepidle \u003d 600"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# API to use for accessing data. Default value points to sqlalchemy"},{"line_number":26,"context_line":"# package, it is also possible to use: glance.db.registry.api"},{"line_number":27,"context_line":"# data_api \u003d glance.db.sqlalchemy.api"},{"line_number":28,"context_line":""}],"source_content_type":"text/plain","patch_set":4,"id":"AAAAP3%2F%2FoB8%3D","line":25,"in_reply_to":"AAAAP3%2F%2FoIk%3D","updated":"2013-07-15 17:49:15.000000000","message":"Done","commit_id":"762155c8c7b55baa27eacf7f8b49e025aea99179"}],"glance/db/registry/api.py":[{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"09f3bb9bc7b21bbd56caebca66dfb3fa75669829","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# Copyright 2010-2011 OpenStack LLC."},{"line_number":6,"context_line":"# Copyright 2012 Justin Santa Barbara"},{"line_number":7,"context_line":"# All Rights Reserved."},{"line_number":8,"context_line":"#"},{"line_number":9,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2Fs7g%3D","line":6,"updated":"2013-07-12 18:56:22.000000000","message":"I\u0027m surprised to learn that you were working for all of these groups, and that you\u0027ve been sitting on this patch for at least 2 years.\n\n:trollface:","commit_id":"11c1300ab237c37707cbdc9db20bf6eb42088b75"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a64398fa47f819a6200f5e8d2aff7ab483acf53c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# Copyright 2010-2011 OpenStack LLC."},{"line_number":6,"context_line":"# Copyright 2012 Justin Santa Barbara"},{"line_number":7,"context_line":"# All Rights Reserved."},{"line_number":8,"context_line":"#"},{"line_number":9,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2Fsyg%3D","line":6,"in_reply_to":"AAAAP3%2F%2Fs7g%3D","updated":"2013-07-12 19:41:31.000000000","message":"LOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOL","commit_id":"11c1300ab237c37707cbdc9db20bf6eb42088b75"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"b52a3633127d840f04e1ecb3366d3db3d7f25b12","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    Setup configuration for database"},{"line_number":59,"context_line":"    \"\"\""},{"line_number":60,"context_line":"    if CONF.debug:"},{"line_number":61,"context_line":"        sa_logger.setLevel(logging.DEBUG)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    api.configure_registry_client()"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2FrRI%3D","line":61,"updated":"2013-07-13 21:50:27.000000000","message":"Where is sa_logger?  I think this might be copy and paste cruft from db/sqlalchemy/api.py.  The test suite doesn\u0027t appear to cover this line either.","commit_id":"63b03e0fc733636a56b66ed8c8f3dc6a7ab159c6"}],"glance/db/simple/api.py":[{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"09f3bb9bc7b21bbd56caebca66dfb3fa75669829","unresolved":false,"context_lines":[{"line_number":426,"context_line":"        DATA[\u0027images\u0027][image_id][\u0027deleted_at\u0027] \u003d timeutils.utcnow()"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"        for prop in DATA[\u0027images\u0027][image_id][\u0027properties\u0027]:"},{"line_number":429,"context_line":"            image_property_delete(context, prop[\"name\"], image_id)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        members \u003d image_member_find(context, image_id\u003dimage_id)"},{"line_number":432,"context_line":"        for member in members:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2Fs70%3D","line":429,"updated":"2013-07-12 18:56:22.000000000","message":"?","commit_id":"11c1300ab237c37707cbdc9db20bf6eb42088b75"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a64398fa47f819a6200f5e8d2aff7ab483acf53c","unresolved":false,"context_lines":[{"line_number":426,"context_line":"        DATA[\u0027images\u0027][image_id][\u0027deleted_at\u0027] \u003d timeutils.utcnow()"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"        for prop in DATA[\u0027images\u0027][image_id][\u0027properties\u0027]:"},{"line_number":429,"context_line":"            image_property_delete(context, prop[\"name\"], image_id)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        members \u003d image_member_find(context, image_id\u003dimage_id)"},{"line_number":432,"context_line":"        for member in members:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2FsyY%3D","line":429,"in_reply_to":"AAAAP3%2F%2Fs70%3D","updated":"2013-07-12 19:41:31.000000000","message":"rebase issue, will remove it","commit_id":"11c1300ab237c37707cbdc9db20bf6eb42088b75"}],"glance/tests/functional/db/base.py":[{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"7ceada710a572f13bcb209edb7b2878960273aff","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        self.adm_context \u003d context_cls(is_admin\u003dTrue,"},{"line_number":69,"context_line":"                                       auth_tok\u003d\u0027user:user:admin\u0027)"},{"line_number":70,"context_line":"        self.context \u003d context_cls(is_admin\u003dFalse,"},{"line_number":71,"context_line":"                                   auth_tok\u003d\u0027user:user:user\u0027)"},{"line_number":72,"context_line":"        self.db_api \u003d db_tests.get_db(self.config)"},{"line_number":73,"context_line":"        db_tests.reset_db(self.db_api)"},{"line_number":74,"context_line":"        self.fixtures \u003d self.build_image_fixtures()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FoIA%3D","line":71,"updated":"2013-07-15 17:37:24.000000000","message":"Why not just instantiate the RequestContext objects above with context.RequestContext()?  Why set context_cls first?  This seems like an unneeded complication.","commit_id":"762155c8c7b55baa27eacf7f8b49e025aea99179"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"893cbdb5503e82b45059e79031b8572e1bebcac3","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        self.adm_context \u003d context_cls(is_admin\u003dTrue,"},{"line_number":69,"context_line":"                                       auth_tok\u003d\u0027user:user:admin\u0027)"},{"line_number":70,"context_line":"        self.context \u003d context_cls(is_admin\u003dFalse,"},{"line_number":71,"context_line":"                                   auth_tok\u003d\u0027user:user:user\u0027)"},{"line_number":72,"context_line":"        self.db_api \u003d db_tests.get_db(self.config)"},{"line_number":73,"context_line":"        db_tests.reset_db(self.db_api)"},{"line_number":74,"context_line":"        self.fixtures \u003d self.build_image_fixtures()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FoDo%3D","line":71,"in_reply_to":"AAAAP3%2F%2FoIA%3D","updated":"2013-07-15 17:49:15.000000000","message":"Because context.RequestContext will require the line below (auth_tok...) to be indented and that line will be longer than 79 characters.","commit_id":"762155c8c7b55baa27eacf7f8b49e025aea99179"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"7ceada710a572f13bcb209edb7b2878960273aff","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        prop \u003d self.db_api.image_property_delete(self.context,"},{"line_number":222,"context_line":"                                                 prop[\u0027name\u0027], UUID1)"},{"line_number":223,"context_line":"        self.assertNotEqual(prop[\u0027deleted_at\u0027], None)"},{"line_number":224,"context_line":"        self.assertTrue(prop[\u0027deleted\u0027])"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def test_image_get(self):"},{"line_number":227,"context_line":"        image \u003d self.db_api.image_get(self.context, UUID1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FoGs%3D","line":224,"updated":"2013-07-15 17:37:24.000000000","message":"It seems that by removing the time override that we are taking away some accuracy testing.  Was this removed because the first test was buggy?  Perhaps id you make:\n\n215: tm \u003d timeutils.utcnow()\n216: timeutils.set_time_override(override_time\u003dtm)\n\n223: self.assertEqual(prop[\u0027deleted_at\u0027], tm)\n\nwould that work and keep the original test functionality?","commit_id":"762155c8c7b55baa27eacf7f8b49e025aea99179"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"893cbdb5503e82b45059e79031b8572e1bebcac3","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        prop \u003d self.db_api.image_property_delete(self.context,"},{"line_number":222,"context_line":"                                                 prop[\u0027name\u0027], UUID1)"},{"line_number":223,"context_line":"        self.assertNotEqual(prop[\u0027deleted_at\u0027], None)"},{"line_number":224,"context_line":"        self.assertTrue(prop[\u0027deleted\u0027])"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def test_image_get(self):"},{"line_number":227,"context_line":"        image \u003d self.db_api.image_get(self.context, UUID1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FoCs%3D","line":224,"in_reply_to":"AAAAP3%2F%2FoGs%3D","updated":"2013-07-15 17:49:15.000000000","message":"This tests, and the others testing time, will fail when testing the registry service since it runs in a background process and the time won\u0027t be synchronize. \n\nI don\u0027t think we\u0027re removing accuracy since we were monkey_patching utcnow in the previous version. I also tried with assertTrue(prop[\u0027deleted_at\u0027] \u003e tm) but, IMHO, it\u0027s just like testing it is not None.","commit_id":"762155c8c7b55baa27eacf7f8b49e025aea99179"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"7ceada710a572f13bcb209edb7b2878960273aff","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        self.db_api.image_destroy(self.adm_context, UUID1)"},{"line_number":237,"context_line":"        image \u003d self.db_api.image_get(self.adm_context, UUID1)"},{"line_number":238,"context_line":"        self.assertEquals(image[\u0027id\u0027], self.fixtures[0][\u0027id\u0027])"},{"line_number":239,"context_line":"        self.assertTrue(image[\u0027deleted\u0027])"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def test_image_get_force_allow_deleted(self):"},{"line_number":242,"context_line":"        self.db_api.image_destroy(self.adm_context, UUID1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FoGg%3D","line":239,"updated":"2013-07-15 17:37:24.000000000","message":"similar to above.","commit_id":"762155c8c7b55baa27eacf7f8b49e025aea99179"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"893cbdb5503e82b45059e79031b8572e1bebcac3","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        self.db_api.image_destroy(self.adm_context, UUID1)"},{"line_number":237,"context_line":"        image \u003d self.db_api.image_get(self.adm_context, UUID1)"},{"line_number":238,"context_line":"        self.assertEquals(image[\u0027id\u0027], self.fixtures[0][\u0027id\u0027])"},{"line_number":239,"context_line":"        self.assertTrue(image[\u0027deleted\u0027])"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def test_image_get_force_allow_deleted(self):"},{"line_number":242,"context_line":"        self.db_api.image_destroy(self.adm_context, UUID1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FoCo%3D","line":239,"in_reply_to":"AAAAP3%2F%2FoGg%3D","updated":"2013-07-15 17:49:15.000000000","message":"ditto","commit_id":"762155c8c7b55baa27eacf7f8b49e025aea99179"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"7ceada710a572f13bcb209edb7b2878960273aff","unresolved":false,"context_lines":[{"line_number":737,"context_line":"        self.assertEqual(1, len(memberships))"},{"line_number":738,"context_line":"        actual \u003d memberships[0]"},{"line_number":739,"context_line":"        self.assertNotEqual(actual[\u0027created_at\u0027], None)"},{"line_number":740,"context_line":"        self.assertNotEqual(actual[\u0027updated_at\u0027], None)"},{"line_number":741,"context_line":"        actual.pop(\u0027id\u0027)"},{"line_number":742,"context_line":"        actual.pop(\u0027created_at\u0027)"},{"line_number":743,"context_line":"        actual.pop(\u0027updated_at\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FoGM%3D","line":740,"updated":"2013-07-15 17:37:24.000000000","message":"not a huge deal but this does seem to lose some test functionality.","commit_id":"762155c8c7b55baa27eacf7f8b49e025aea99179"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"893cbdb5503e82b45059e79031b8572e1bebcac3","unresolved":false,"context_lines":[{"line_number":737,"context_line":"        self.assertEqual(1, len(memberships))"},{"line_number":738,"context_line":"        actual \u003d memberships[0]"},{"line_number":739,"context_line":"        self.assertNotEqual(actual[\u0027created_at\u0027], None)"},{"line_number":740,"context_line":"        self.assertNotEqual(actual[\u0027updated_at\u0027], None)"},{"line_number":741,"context_line":"        actual.pop(\u0027id\u0027)"},{"line_number":742,"context_line":"        actual.pop(\u0027created_at\u0027)"},{"line_number":743,"context_line":"        actual.pop(\u0027updated_at\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FoCY%3D","line":740,"in_reply_to":"AAAAP3%2F%2FoGM%3D","updated":"2013-07-15 17:49:15.000000000","message":"ditto","commit_id":"762155c8c7b55baa27eacf7f8b49e025aea99179"}],"glance/tests/functional/db/test_registry.py":[{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"09f3bb9bc7b21bbd56caebca66dfb3fa75669829","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2Fs6k%3D","line":1,"updated":"2013-07-12 18:56:22.000000000","message":"Please fix year and group (2013 \u003cyour employer\u003e) or omit entirely.","commit_id":"11c1300ab237c37707cbdc9db20bf6eb42088b75"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a64398fa47f819a6200f5e8d2aff7ab483acf53c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2FsyU%3D","line":1,"in_reply_to":"AAAAP3%2F%2Fs6k%3D","updated":"2013-07-12 19:41:31.000000000","message":"Done","commit_id":"11c1300ab237c37707cbdc9db20bf6eb42088b75"}]}
