)]}'
{"doc/source/configuring.rst":[{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"85de204506bc8661d61a27650c64e95121f37ed8","unresolved":false,"context_lines":[{"line_number":704,"context_line":""},{"line_number":705,"context_line":"Configuring the Cinder Storage Backend"},{"line_number":706,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"* ``cinder_catalog_info\u003d\u003cservice_type\u003e:\u003cservice_name\u003e:\u003cendpoint_type\u003e``"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"Optional. Default: ``volume:cinder:publicURL``"}],"source_content_type":"text/x-rst","patch_set":6,"id":"AAAAP3%2F%2Flp0%3D","line":707,"updated":"2013-07-16 08:06:59.000000000","message":"I would like to see a short description of what the driver offers and note its limitations.  The fact that it cannot upload/download is noteworthy.","commit_id":"ec0a7738fb087245bcb1a0f7b7a320dbf273f6be"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"9939469ae97b70af97151591efbdd3d549ca7698","unresolved":false,"context_lines":[{"line_number":704,"context_line":""},{"line_number":705,"context_line":"Configuring the Cinder Storage Backend"},{"line_number":706,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"* ``cinder_catalog_info\u003d\u003cservice_type\u003e:\u003cservice_name\u003e:\u003cendpoint_type\u003e``"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"Optional. Default: ``volume:cinder:publicURL``"}],"source_content_type":"text/x-rst","patch_set":6,"id":"AAAAP3%2F%2FlaQ%3D","line":707,"in_reply_to":"AAAAP3%2F%2Flp0%3D","updated":"2013-07-16 09:49:16.000000000","message":"Done","commit_id":"ec0a7738fb087245bcb1a0f7b7a320dbf273f6be"}],"glance/api/v1/images.py":[{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"85de204506bc8661d61a27650c64e95121f37ed8","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        If the above constraint is violated, we reject with 400 \"Bad Request\"."},{"line_number":278,"context_line":"        \"\"\""},{"line_number":279,"context_line":"        if source:"},{"line_number":280,"context_line":"            for scheme in [\u0027s3\u0027, \u0027swift\u0027, \u0027http\u0027, \u0027rbd\u0027, \u0027sheepdog\u0027, \u0027cinder\u0027]:"},{"line_number":281,"context_line":"                if source.lower().startswith(scheme):"},{"line_number":282,"context_line":"                    return source"},{"line_number":283,"context_line":"            msg \u003d _(\"External sourcing not supported for store %s\") % source"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2Flpk%3D","line":280,"updated":"2013-07-16 08:06:59.000000000","message":"This is not a problem with this patch at all, but this seems as good a time as any to point out that the acceptable schema is probably not best kept at this point in the code base.","commit_id":"ec0a7738fb087245bcb1a0f7b7a320dbf273f6be"}],"glance/store/cinder.py":[{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"0d1e95c8a35696c47176502df2f68de650cccc96","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cinderclient import exceptions as cinder_exception"},{"line_number":21,"context_line":"from cinderclient import service_catalog"},{"line_number":22,"context_line":"from cinderclient.v1 import client as cinder_client"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from oslo.config import cfg"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FiSA%3D","line":22,"updated":"2013-06-28 10:17:18.000000000","message":"keep this consistent with other implementations and leave the name as \u0027cinderclient\u0027 then, as mentioned below,  change def cinderclient() to def get_cinderclient()","commit_id":"2849d018544740bb2dbec24657dd82295dececaf"},{"author":{"_account_id":5313,"name":"David Peraza","email":"david_peraza@persistentsys.com","username":"dperaza"},"change_message_id":"3065857613f3e2efe8838d9a2cc44a1fc8ced5ce","unresolved":false,"context_lines":[{"line_number":61,"context_line":"CONF.register_opts(cinder_opts)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def cinderclient(context):"},{"line_number":65,"context_line":"    if CONF.cinder_endpoint_template:"},{"line_number":66,"context_line":"        url \u003d CONF.cinder_endpoint_template % context.to_dict()"},{"line_number":67,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F3MM%3D","line":64,"updated":"2013-06-19 18:03:50.000000000","message":"I would name this something else along the lines of get_cinder_client(context)","commit_id":"2849d018544740bb2dbec24657dd82295dececaf"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"ab26d735caeb37d65968ed2a00c5dcecd3ab565f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack, LLC"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FrSk%3D","line":3,"updated":"2013-07-13 21:10:21.000000000","message":"I don\u0027t think this is the organization you want to use. Probably you want \"Copyright 2013 IBM\", but I\u0027d be a tiny bit happier if you simply remove this line and the line below it. Minor issue, I won\u0027t comment on it here again.","commit_id":"ec0a7738fb087245bcb1a0f7b7a320dbf273f6be"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"9939469ae97b70af97151591efbdd3d549ca7698","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack, LLC"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FlZ4%3D","line":3,"in_reply_to":"AAAAP3%2F%2FrSk%3D","updated":"2013-07-16 09:49:16.000000000","message":"Done","commit_id":"ec0a7738fb087245bcb1a0f7b7a320dbf273f6be"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"85de204506bc8661d61a27650c64e95121f37ed8","unresolved":false,"context_lines":[{"line_number":61,"context_line":"CONF.register_opts(cinder_opts)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def get_cinderclient(context):"},{"line_number":65,"context_line":"    if CONF.cinder_endpoint_template:"},{"line_number":66,"context_line":"        url \u003d CONF.cinder_endpoint_template % context.to_dict()"},{"line_number":67,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FliA%3D","line":64,"updated":"2013-07-16 08:06:59.000000000","message":"Unit tests do not cover this function at all.  I assume that the functional tests do so this might be a bit too picky and I am willing to let it go. But for the sake of promoting this level of scrutiny, it would be nice to see coverage in unit tests where possible.  I think with help from mox that would be possible here.","commit_id":"ec0a7738fb087245bcb1a0f7b7a320dbf273f6be"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"9939469ae97b70af97151591efbdd3d549ca7698","unresolved":false,"context_lines":[{"line_number":61,"context_line":"CONF.register_opts(cinder_opts)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def get_cinderclient(context):"},{"line_number":65,"context_line":"    if CONF.cinder_endpoint_template:"},{"line_number":66,"context_line":"        url \u003d CONF.cinder_endpoint_template % context.to_dict()"},{"line_number":67,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FlMo%3D","line":64,"in_reply_to":"AAAAP3%2F%2FliA%3D","updated":"2013-07-16 09:49:16.000000000","message":"Done","commit_id":"ec0a7738fb087245bcb1a0f7b7a320dbf273f6be"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"a2c70303ae5e6f4f12c37303e98e743b2631fbb4","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from cinderclient import exceptions as cinder_exception"},{"line_number":18,"context_line":"from cinderclient import service_catalog"},{"line_number":19,"context_line":"from cinderclient.v1 import client as cinderclient"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo.config import cfg"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAP3%2F%2FiLQ%3D","line":19,"updated":"2013-07-16 21:30:45.000000000","message":"Would it work to modify this to use cinderclient v2? Apparently that is important to the cinder folks, if possible.","commit_id":"10b1dfdf536c4c5fd2e319208abfab36c091afc0"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"8681ec7998771b905f2fb6ce9752aa437739f84b","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from cinderclient import exceptions as cinder_exception"},{"line_number":18,"context_line":"from cinderclient import service_catalog"},{"line_number":19,"context_line":"from cinderclient.v1 import client as cinderclient"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo.config import cfg"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAP3%2F%2FiLA%3D","line":19,"updated":"2013-07-16 21:30:05.000000000","message":"this should really be v2.","commit_id":"10b1dfdf536c4c5fd2e319208abfab36c091afc0"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"6b5e2817bc5309f76ac35f5114aac9679128bc02","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from cinderclient import exceptions as cinder_exception"},{"line_number":18,"context_line":"from cinderclient import service_catalog"},{"line_number":19,"context_line":"from cinderclient.v1 import client as cinderclient"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo.config import cfg"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAP3%2F%2Fh3o%3D","line":19,"in_reply_to":"AAAAP3%2F%2FiLQ%3D","updated":"2013-07-16 22:33:36.000000000","message":"Done. Yup, let\u0027s Glance be ahead Nova this time :)","commit_id":"10b1dfdf536c4c5fd2e319208abfab36c091afc0"}],"glance/tests/functional/store/__init__.py":[{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"85de204506bc8661d61a27650c64e95121f37ed8","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        :param image_data: string representing image data fixture"},{"line_number":66,"context_line":"        :return URI referencing newly-created backend object"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        raise NotImplementedError(\u0027stash_image not be implemented\u0027)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_create_store(self):"},{"line_number":71,"context_line":"        self.config(known_stores\u003d[self.store_cls_path])"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FlnE%3D","line":68,"updated":"2013-07-16 08:06:59.000000000","message":"I would say to have this either the original:\n\n\u0027stash_image must be implemented\u0027\n\nor:\n\n\u0027stash_image is not implemented\u0027","commit_id":"ec0a7738fb087245bcb1a0f7b7a320dbf273f6be"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"9939469ae97b70af97151591efbdd3d549ca7698","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        :param image_data: string representing image data fixture"},{"line_number":66,"context_line":"        :return URI referencing newly-created backend object"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        raise NotImplementedError(\u0027stash_image not be implemented\u0027)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_create_store(self):"},{"line_number":71,"context_line":"        self.config(known_stores\u003d[self.store_cls_path])"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FlZk%3D","line":68,"in_reply_to":"AAAAP3%2F%2FlnE%3D","updated":"2013-07-16 09:49:16.000000000","message":"Done","commit_id":"ec0a7738fb087245bcb1a0f7b7a320dbf273f6be"}],"glance/tests/unit/test_store_location.py":[{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"85de204506bc8661d61a27650c64e95121f37ed8","unresolved":false,"context_lines":[{"line_number":387,"context_line":"        loc.parse_uri(uri)"},{"line_number":388,"context_line":"        self.assertEqual(\u002712345678-9012-3455-6789-012345678901\u0027, loc.volume_id)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        bad_uri \u003d \u0027cinder://volume-id-is-a-uuid\u0027"},{"line_number":391,"context_line":"        self.assertRaises(exception.BadStoreUri, loc.parse_uri, bad_uri)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def test_get_store_from_scheme(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2Flqc%3D","line":390,"updated":"2013-07-16 08:06:59.000000000","message":"I would like to see the good and the bad as separate tests.","commit_id":"ec0a7738fb087245bcb1a0f7b7a320dbf273f6be"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"9939469ae97b70af97151591efbdd3d549ca7698","unresolved":false,"context_lines":[{"line_number":387,"context_line":"        loc.parse_uri(uri)"},{"line_number":388,"context_line":"        self.assertEqual(\u002712345678-9012-3455-6789-012345678901\u0027, loc.volume_id)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        bad_uri \u003d \u0027cinder://volume-id-is-a-uuid\u0027"},{"line_number":391,"context_line":"        self.assertRaises(exception.BadStoreUri, loc.parse_uri, bad_uri)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def test_get_store_from_scheme(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FlYo%3D","line":390,"in_reply_to":"AAAAP3%2F%2Flqc%3D","updated":"2013-07-16 09:49:16.000000000","message":"Done. The tests for other stores are all have this same issue.","commit_id":"ec0a7738fb087245bcb1a0f7b7a320dbf273f6be"}]}
