)]}'
{"etc/glance-api.conf":[{"author":{"_account_id":1390,"name":"Paul Bourke","email":"pauldbourke@proton.me","username":"pauldbourke"},"change_message_id":"66daa1e5b3ac99d6a135bb45bb8c9c4488cdbc0c","unresolved":false,"context_lines":[{"line_number":203,"context_line":"# system.  When show_multiple_locations is True the information in this"},{"line_number":204,"context_line":"# file will be returned with any location that is contained in this"},{"line_number":205,"context_line":"# store."},{"line_number":206,"context_line":"#filesystem_store_metadata_file \u003d None"},{"line_number":207,"context_line":"# \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Swift Store Options \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"# Version of the authentication service to use"}],"source_content_type":"text/plain","patch_set":2,"id":"AAAAP3%2F%2FnyA%3D","line":206,"updated":"2013-07-15 18:49:30.000000000","message":"Nit but would you mind adding an extra blank line here!","commit_id":"3fdf861c0d3c07fd6cc8240e2fd7335c8b1f0a72"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"543252285a9ad540a2f29e43c65c0fb63954c26c","unresolved":false,"context_lines":[{"line_number":203,"context_line":"# system.  When show_multiple_locations is True the information in this"},{"line_number":204,"context_line":"# file will be returned with any location that is contained in this"},{"line_number":205,"context_line":"# store."},{"line_number":206,"context_line":"#filesystem_store_metadata_file \u003d None"},{"line_number":207,"context_line":"# \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Swift Store Options \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"# Version of the authentication service to use"}],"source_content_type":"text/plain","patch_set":2,"id":"AAAAP3%2F%2FnmA%3D","line":206,"in_reply_to":"AAAAP3%2F%2FnyA%3D","updated":"2013-07-15 19:35:23.000000000","message":"Done","commit_id":"3fdf861c0d3c07fd6cc8240e2fd7335c8b1f0a72"}],"glance/store/filesystem.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"ddc6b852a1059b06bb1abe08d7ede75664c06c4d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"datadir_opt \u003d cfg.StrOpt(\u0027filesystem_store_datadir\u0027,"},{"line_number":40,"context_line":"                         help\u003d_(\u0027Directory to which the Filesystem backend \u0027"},{"line_number":41,"context_line":"                                \u0027store writes images.\u0027))"},{"line_number":42,"context_line":"metadata_opt \u003d cfg.StrOpt(\u0027filesystem_store_metadata_file\u0027,"},{"line_number":43,"context_line":"                          help\u003d_(\"The path to a file which contains the \""},{"line_number":44,"context_line":"                                 \"metadata to be returned with any location \""},{"line_number":45,"context_line":"                                 \"associated with this store.  The file must \""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2FpMU%3D","line":42,"updated":"2013-07-15 13:33:23.000000000","message":"Please change \u0027glance-api.conf\u0027 template file in this patch also.","commit_id":"bf19a310092c4b9f64d0eed1ac1dd9e2164ff439"},{"author":{"_account_id":1390,"name":"Paul Bourke","email":"pauldbourke@proton.me","username":"pauldbourke"},"change_message_id":"66daa1e5b3ac99d6a135bb45bb8c9c4488cdbc0c","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            return {}"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        try:"},{"line_number":165,"context_line":"            fptr \u003d open(CONF.filesystem_store_metadata_file, \u0027r\u0027)"},{"line_number":166,"context_line":"            metadata \u003d json.load(fptr)"},{"line_number":167,"context_line":"            glance.store._check_meta_data(metadata)"},{"line_number":168,"context_line":"            return metadata"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2Fnzg%3D","line":165,"updated":"2013-07-15 18:49:30.000000000","message":"Is fptr being closed anywhere?  (maybe use a with statement?)","commit_id":"3fdf861c0d3c07fd6cc8240e2fd7335c8b1f0a72"},{"author":{"_account_id":1390,"name":"Paul Bourke","email":"pauldbourke@proton.me","username":"pauldbourke"},"change_message_id":"66daa1e5b3ac99d6a135bb45bb8c9c4488cdbc0c","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                        % (CONF.filesystem_store_metadata_file, ioe.message)))"},{"line_number":180,"context_line":"            return {}"},{"line_number":181,"context_line":"        except Exception as ex:"},{"line_number":182,"context_line":"            LOG.error(_(\u0027An error occured processing the storage systems meta \u0027"},{"line_number":183,"context_line":"                        \u0027data file: %s.  An empty dictionary will be returned \u0027"},{"line_number":184,"context_line":"                        \u0027to the client.\u0027 % (str(ex))))"},{"line_number":185,"context_line":"            return {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2Fn0E%3D","line":182,"updated":"2013-07-15 18:49:30.000000000","message":"Would LOG.exception be more appropriate to avoid eating the traceback? (same for the other except cases above)","commit_id":"3fdf861c0d3c07fd6cc8240e2fd7335c8b1f0a72"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"543252285a9ad540a2f29e43c65c0fb63954c26c","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                        % (CONF.filesystem_store_metadata_file, ioe.message)))"},{"line_number":180,"context_line":"            return {}"},{"line_number":181,"context_line":"        except Exception as ex:"},{"line_number":182,"context_line":"            LOG.error(_(\u0027An error occured processing the storage systems meta \u0027"},{"line_number":183,"context_line":"                        \u0027data file: %s.  An empty dictionary will be returned \u0027"},{"line_number":184,"context_line":"                        \u0027to the client.\u0027 % (str(ex))))"},{"line_number":185,"context_line":"            return {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2Fnlo%3D","line":182,"in_reply_to":"AAAAP3%2F%2Fn0E%3D","updated":"2013-07-15 19:35:23.000000000","message":"Done","commit_id":"3fdf861c0d3c07fd6cc8240e2fd7335c8b1f0a72"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"d94960b1208488baa3df9781781beec61a71d288","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"datadir_opt \u003d cfg.StrOpt(\u0027filesystem_store_datadir\u0027,"},{"line_number":40,"context_line":"                         help\u003d_(\u0027Directory to which the Filesystem backend \u0027"},{"line_number":41,"context_line":"                                \u0027store writes images.\u0027))"},{"line_number":42,"context_line":"metadata_opt \u003d cfg.StrOpt(\u0027filesystem_store_metadata_file\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2Fiq4%3D","line":39,"updated":"2013-07-16 19:49:07.000000000","message":"Could you pls create a list and use register_opts instead?","commit_id":"bdf08711cf8dfd2b48968c46d762491d64be743a"}],"glance/tests/unit/test_filesystem_store.py":[{"author":{"_account_id":1390,"name":"Paul Bourke","email":"pauldbourke@proton.me","username":"pauldbourke"},"change_message_id":"66daa1e5b3ac99d6a135bb45bb8c9c4488cdbc0c","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    def test_add_check_metadata_success(self):"},{"line_number":120,"context_line":"        expected_image_id \u003d uuidutils.generate_uuid()"},{"line_number":121,"context_line":"        in_metadata \u003d {\u0027akey\u0027: u\u0027some value\u0027, \u0027list\u0027: [u\u00271\u0027, u\u00272\u0027, u\u00273\u0027]}"},{"line_number":122,"context_line":"        jsonfilename \u003d (\"/%s/storage_metadata.%s\""},{"line_number":123,"context_line":"                        % (self.test_dir, expected_image_id))"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        self.config(filesystem_store_metadata_file\u003djsonfilename)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2FnzA%3D","line":122,"updated":"2013-07-15 18:49:30.000000000","message":"os.path.join might be better for this?","commit_id":"3fdf861c0d3c07fd6cc8240e2fd7335c8b1f0a72"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"543252285a9ad540a2f29e43c65c0fb63954c26c","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    def test_add_check_metadata_success(self):"},{"line_number":120,"context_line":"        expected_image_id \u003d uuidutils.generate_uuid()"},{"line_number":121,"context_line":"        in_metadata \u003d {\u0027akey\u0027: u\u0027some value\u0027, \u0027list\u0027: [u\u00271\u0027, u\u00272\u0027, u\u00273\u0027]}"},{"line_number":122,"context_line":"        jsonfilename \u003d (\"/%s/storage_metadata.%s\""},{"line_number":123,"context_line":"                        % (self.test_dir, expected_image_id))"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        self.config(filesystem_store_metadata_file\u003djsonfilename)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2FnjM%3D","line":122,"in_reply_to":"AAAAP3%2F%2FnzA%3D","updated":"2013-07-15 19:35:23.000000000","message":"Done","commit_id":"3fdf861c0d3c07fd6cc8240e2fd7335c8b1f0a72"},{"author":{"_account_id":1390,"name":"Paul Bourke","email":"pauldbourke@proton.me","username":"pauldbourke"},"change_message_id":"66daa1e5b3ac99d6a135bb45bb8c9c4488cdbc0c","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        self.config(filesystem_store_metadata_file\u003djsonfilename)"},{"line_number":126,"context_line":"        fptr \u003d open(jsonfilename, \u0027w\u0027)"},{"line_number":127,"context_line":"        json.dump(in_metadata, fptr)"},{"line_number":128,"context_line":"        fptr.close()"},{"line_number":129,"context_line":"        \"\"\"Test that we can add an image via the filesystem backend\"\"\""},{"line_number":130,"context_line":"        expected_file_size \u003d 10"},{"line_number":131,"context_line":"        expected_file_contents \u003d \"*\" * expected_file_size"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2Fny4%3D","line":128,"updated":"2013-07-15 18:49:30.000000000","message":"suggest using a with statement","commit_id":"3fdf861c0d3c07fd6cc8240e2fd7335c8b1f0a72"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"543252285a9ad540a2f29e43c65c0fb63954c26c","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        self.config(filesystem_store_metadata_file\u003djsonfilename)"},{"line_number":126,"context_line":"        fptr \u003d open(jsonfilename, \u0027w\u0027)"},{"line_number":127,"context_line":"        json.dump(in_metadata, fptr)"},{"line_number":128,"context_line":"        fptr.close()"},{"line_number":129,"context_line":"        \"\"\"Test that we can add an image via the filesystem backend\"\"\""},{"line_number":130,"context_line":"        expected_file_size \u003d 10"},{"line_number":131,"context_line":"        expected_file_contents \u003d \"*\" * expected_file_size"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2FnjI%3D","line":128,"in_reply_to":"AAAAP3%2F%2Fny4%3D","updated":"2013-07-15 19:35:23.000000000","message":"Done","commit_id":"3fdf861c0d3c07fd6cc8240e2fd7335c8b1f0a72"},{"author":{"_account_id":1390,"name":"Paul Bourke","email":"pauldbourke@proton.me","username":"pauldbourke"},"change_message_id":"66daa1e5b3ac99d6a135bb45bb8c9c4488cdbc0c","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        fptr \u003d open(jsonfilename, \u0027w\u0027)"},{"line_number":127,"context_line":"        json.dump(in_metadata, fptr)"},{"line_number":128,"context_line":"        fptr.close()"},{"line_number":129,"context_line":"        \"\"\"Test that we can add an image via the filesystem backend\"\"\""},{"line_number":130,"context_line":"        expected_file_size \u003d 10"},{"line_number":131,"context_line":"        expected_file_contents \u003d \"*\" * expected_file_size"},{"line_number":132,"context_line":"        image_file \u003d StringIO.StringIO(expected_file_contents)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2Fnyo%3D","line":129,"updated":"2013-07-15 18:49:30.000000000","message":"Why docstring style comment?","commit_id":"3fdf861c0d3c07fd6cc8240e2fd7335c8b1f0a72"},{"author":{"_account_id":1390,"name":"Paul Bourke","email":"pauldbourke@proton.me","username":"pauldbourke"},"change_message_id":"3169505aa54877d57a72f5a4e4ee7985a3a807c2","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    def test_add_check_metadata_bad_data(self):"},{"line_number":139,"context_line":"        expected_image_id \u003d uuidutils.generate_uuid()"},{"line_number":140,"context_line":"        in_metadata \u003d {\u0027akey\u0027: 10}  # only unicode is allowed"},{"line_number":141,"context_line":"        jsonfilename \u003d (\"/%s/storage_metadata.%s\""},{"line_number":142,"context_line":"                        % (self.test_dir, expected_image_id))"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        self.config(filesystem_store_metadata_file\u003djsonfilename)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2FnW8%3D","line":141,"updated":"2013-07-15 20:22:20.000000000","message":"Just noticed another os.path.join candidate, sorry!","commit_id":"a4fc49a16374899db2de850fa0745f870ac4d6d0"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"2f95083074c79f4fe58a3bd9364dceee1c5bacf5","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    def test_add_check_metadata_bad_data(self):"},{"line_number":139,"context_line":"        expected_image_id \u003d uuidutils.generate_uuid()"},{"line_number":140,"context_line":"        in_metadata \u003d {\u0027akey\u0027: 10}  # only unicode is allowed"},{"line_number":141,"context_line":"        jsonfilename \u003d (\"/%s/storage_metadata.%s\""},{"line_number":142,"context_line":"                        % (self.test_dir, expected_image_id))"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        self.config(filesystem_store_metadata_file\u003djsonfilename)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2FnVc%3D","line":141,"in_reply_to":"AAAAP3%2F%2FnW8%3D","updated":"2013-07-15 20:26:08.000000000","message":"Done","commit_id":"a4fc49a16374899db2de850fa0745f870ac4d6d0"},{"author":{"_account_id":1390,"name":"Paul Bourke","email":"pauldbourke@proton.me","username":"pauldbourke"},"change_message_id":"3169505aa54877d57a72f5a4e4ee7985a3a807c2","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def test_add_check_metadata_bad_nosuch_file(self):"},{"line_number":160,"context_line":"        expected_image_id \u003d uuidutils.generate_uuid()"},{"line_number":161,"context_line":"        jsonfilename \u003d (\"/%s/storage_metadata.%s\""},{"line_number":162,"context_line":"                        % (self.test_dir, expected_image_id))"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        self.config(filesystem_store_metadata_file\u003djsonfilename)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2FnW4%3D","line":161,"updated":"2013-07-15 20:22:20.000000000","message":"same","commit_id":"a4fc49a16374899db2de850fa0745f870ac4d6d0"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"2f95083074c79f4fe58a3bd9364dceee1c5bacf5","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def test_add_check_metadata_bad_nosuch_file(self):"},{"line_number":160,"context_line":"        expected_image_id \u003d uuidutils.generate_uuid()"},{"line_number":161,"context_line":"        jsonfilename \u003d (\"/%s/storage_metadata.%s\""},{"line_number":162,"context_line":"                        % (self.test_dir, expected_image_id))"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        self.config(filesystem_store_metadata_file\u003djsonfilename)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2FnVY%3D","line":161,"in_reply_to":"AAAAP3%2F%2FnW4%3D","updated":"2013-07-15 20:26:08.000000000","message":"Done","commit_id":"a4fc49a16374899db2de850fa0745f870ac4d6d0"}]}
