)]}'
{"cinder/scheduler/manager.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6f7ab11c33fff7ad6df1dfaa76aec7ad2d4a3970","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                                                     tgt_host,"},{"line_number":173,"context_line":"                                                     force_host_copy)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def retype(self, context, topic, volume,"},{"line_number":176,"context_line":"               request_spec, filter_properties\u003dNone):"},{"line_number":177,"context_line":"        \"\"\"Schedule the modification of a volume\u0027s type."},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_cfa766a5","line":175,"updated":"2015-09-30 17:35:07.000000000","message":"This is not a compatible change, as all RPC methods are dispatched with arguments by name. I don\u0027t know what Cinder\u0027s culture is here, but there\u0027s basically no point in bumping the version if you\u0027re going to make a change like this. (well, that\u0027s not entirely true, but it\u0027s at least 50% true).\n\nIdeally you would not change this name, and either just pass the object in here, or pass the object as another (named, default to None) parameter. My preference would be for the latter, with a comment to remove the volume_id parameter for clarity in a later major revision.\n\nAlso, to be clean, you should lookup the object based on the id if it\u0027s not passed in, as would be the case when being called from an older client.","commit_id":"baf78251e57479946687e0072bf308073229eef3"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"d303dd87b7778f38951eed6713be0740f7924192","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                                                     tgt_host,"},{"line_number":173,"context_line":"                                                     force_host_copy)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def retype(self, context, topic, volume,"},{"line_number":176,"context_line":"               request_spec, filter_properties\u003dNone):"},{"line_number":177,"context_line":"        \"\"\"Schedule the modification of a volume\u0027s type."},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_ce38c7d5","line":175,"in_reply_to":"9a1a9d01_cfa766a5","updated":"2015-09-30 17:55:55.000000000","message":"Long ago, when I started adding objects into cinder, the object was passed in as a named option.  But I had a comment that it was not necessary to keep it, since we have the object.  This is mainly because we do not support using mixed versions in cinder and had no need to keep the old interface around.  For new interfaces where we added objects, we just removed the id and replaced it with the object.","commit_id":"baf78251e57479946687e0072bf308073229eef3"}],"cinder/scheduler/rpcapi.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6f7ab11c33fff7ad6df1dfaa76aec7ad2d4a3970","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        target \u003d messaging.Target(topic\u003dCONF.scheduler_topic,"},{"line_number":54,"context_line":"                                  version\u003dself.RPC_API_VERSION)"},{"line_number":55,"context_line":"        serializer \u003d objects_base.CinderObjectSerializer()"},{"line_number":56,"context_line":"        self.client \u003d rpc.get_client(target, version_cap\u003d\u00271.10\u0027,"},{"line_number":57,"context_line":"                                     serializer\u003dserializer)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def create_consistencygroup(self, ctxt, topic, group,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_ab3d45c5","line":56,"updated":"2015-09-30 17:35:07.000000000","message":"You shouldn\u0027t be bumping this base version, as it will affect any call below that doesn\u0027t specify a version. Just change the version required in retype().","commit_id":"baf78251e57479946687e0072bf308073229eef3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6f7ab11c33fff7ad6df1dfaa76aec7ad2d4a3970","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    def retype(self, ctxt, topic, volume,"},{"line_number":104,"context_line":"               request_spec\u003dNone, filter_properties\u003dNone):"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.10\u0027)"},{"line_number":107,"context_line":"        request_spec_p \u003d jsonutils.to_primitive(request_spec)"},{"line_number":108,"context_line":"        return cctxt.cast(ctxt, \u0027retype\u0027,"},{"line_number":109,"context_line":"                          topic\u003dtopic,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_ef57ca55","line":106,"updated":"2015-09-30 17:35:07.000000000","message":"Again, not sure what amount of this gets done in Cinder (looks like None), but this breaks you if you\u0027re not the exact same version of the code as the other side.\n\nTo be compatible here you should check an upgrade level pin for this API and revert to the older calling signature in that case.\n\nDoes cinder have version pins for the RPC apis?","commit_id":"baf78251e57479946687e0072bf308073229eef3"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"d303dd87b7778f38951eed6713be0740f7924192","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    def retype(self, ctxt, topic, volume,"},{"line_number":104,"context_line":"               request_spec\u003dNone, filter_properties\u003dNone):"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.10\u0027)"},{"line_number":107,"context_line":"        request_spec_p \u003d jsonutils.to_primitive(request_spec)"},{"line_number":108,"context_line":"        return cctxt.cast(ctxt, \u0027retype\u0027,"},{"line_number":109,"context_line":"                          topic\u003dtopic,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_6be40dab","line":106,"in_reply_to":"9a1a9d01_ef57ca55","updated":"2015-09-30 17:55:55.000000000","message":"There are no RPC version pins yet in cinder.  To upgrade, you have to shut everything down, upgrade, then bring it back up.  If I just change the version in retype, without bumping the base version above, this call would fail.","commit_id":"baf78251e57479946687e0072bf308073229eef3"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"8af2b52de701319e627736d40b7687c4e4593ead","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    def retype(self, ctxt, topic, volume,"},{"line_number":104,"context_line":"               request_spec\u003dNone, filter_properties\u003dNone):"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.10\u0027)"},{"line_number":107,"context_line":"        request_spec_p \u003d jsonutils.to_primitive(request_spec)"},{"line_number":108,"context_line":"        return cctxt.cast(ctxt, \u0027retype\u0027,"},{"line_number":109,"context_line":"                          topic\u003dtopic,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_86034c0f","line":106,"updated":"2015-11-03 16:26:29.000000000","message":"So this is exactly the case I was asking about at the Summit (when n-1 isn\u0027t really \"-1\").  Anyway, glad we all talked about it so now I don\u0027t have to ask here :)","commit_id":"3ee0e8f7598418fecaddbf76ebd6c44b35c94c02"}],"cinder/tests/unit/scheduler/test_scheduler.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6f7ab11c33fff7ad6df1dfaa76aec7ad2d4a3970","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                                                  request_spec, {})"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    @mock.patch(\u0027cinder.db.volume_update\u0027)"},{"line_number":224,"context_line":"    @mock.patch(\u0027cinder.db.volume_attachment_get_used_by_volume_id\u0027)"},{"line_number":225,"context_line":"    def test_retype_volume_exception_returns_volume_state("},{"line_number":226,"context_line":"            self, _mock_vol_attachment_get, _mock_vol_update):"},{"line_number":227,"context_line":"        # Test NoValidHost exception behavior for retype."}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_2f9e2207","line":224,"updated":"2015-09-30 17:35:07.000000000","message":"I may be missing something, but where is this actually called? I think you\u0027re passing the volume into the manager directly, so it never gets looked up, right? You\u0027re not asserting that it was called (like the old code did) so I think that\u0027s probably because it\u0027s not :)\n\nOf course, if you make the manager method tolerant of not receiving the volume object, then it will need to do a lookup and you\u0027ll want to test that that behavior works. But, I think in this setup, you\u0027ll be passing it in so it won\u0027t be called. Am I missing something?","commit_id":"baf78251e57479946687e0072bf308073229eef3"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"d303dd87b7778f38951eed6713be0740f7924192","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                                                  request_spec, {})"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    @mock.patch(\u0027cinder.db.volume_update\u0027)"},{"line_number":224,"context_line":"    @mock.patch(\u0027cinder.db.volume_attachment_get_used_by_volume_id\u0027)"},{"line_number":225,"context_line":"    def test_retype_volume_exception_returns_volume_state("},{"line_number":226,"context_line":"            self, _mock_vol_attachment_get, _mock_vol_update):"},{"line_number":227,"context_line":"        # Test NoValidHost exception behavior for retype."}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_ce6687ec","line":224,"in_reply_to":"9a1a9d01_2f9e2207","updated":"2015-09-30 17:55:55.000000000","message":"Yes, it is called.  The volume is created without the volume attachment yet.  The attachment is lazy loaded through this call.","commit_id":"baf78251e57479946687e0072bf308073229eef3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8c62b02e06815e6ce9e69e2ed00787d151ecf5f0","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                                                  request_spec, {})"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    @mock.patch(\u0027cinder.db.volume_update\u0027)"},{"line_number":224,"context_line":"    @mock.patch(\u0027cinder.db.volume_attachment_get_used_by_volume_id\u0027)"},{"line_number":225,"context_line":"    def test_retype_volume_exception_returns_volume_state("},{"line_number":226,"context_line":"            self, _mock_vol_attachment_get, _mock_vol_update):"},{"line_number":227,"context_line":"        # Test NoValidHost exception behavior for retype."}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_ce8767b3","line":224,"in_reply_to":"9a1a9d01_ce6687ec","updated":"2015-09-30 18:09:57.000000000","message":"Then you can assert the call is correct below somewhere, right? I think you should...","commit_id":"baf78251e57479946687e0072bf308073229eef3"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"e08624f4bd85a384c4df3c8dbdff32f88f7771ed","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                                                  request_spec, {})"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    @mock.patch(\u0027cinder.db.volume_update\u0027)"},{"line_number":224,"context_line":"    @mock.patch(\u0027cinder.db.volume_attachment_get_used_by_volume_id\u0027)"},{"line_number":225,"context_line":"    def test_retype_volume_exception_returns_volume_state("},{"line_number":226,"context_line":"            self, _mock_vol_attachment_get, _mock_vol_update):"},{"line_number":227,"context_line":"        # Test NoValidHost exception behavior for retype."}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_b1985479","line":224,"in_reply_to":"9a1a9d01_ce8767b3","updated":"2015-09-30 18:23:14.000000000","message":"Done","commit_id":"baf78251e57479946687e0072bf308073229eef3"}],"cinder/tests/unit/test_volume.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6f7ab11c33fff7ad6df1dfaa76aec7ad2d4a3970","unresolved":false,"context_lines":[{"line_number":4644,"context_line":"                                           host\u003dCONF.host, status\u003d\u0027retyping\u0027,"},{"line_number":4645,"context_line":"                                           volume_type_id\u003dold_vol_type[\u0027id\u0027],"},{"line_number":4646,"context_line":"                                           replication_status\u003drep_status)"},{"line_number":4647,"context_line":"        volume[\u0027previous_status\u0027] \u003d \u0027available\u0027"},{"line_number":4648,"context_line":"        if snap:"},{"line_number":4649,"context_line":"            self._create_snapshot(volume[\u0027id\u0027], size\u003dvolume[\u0027size\u0027])"},{"line_number":4650,"context_line":"        if driver or diff_equal:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_0faf9e2a","side":"PARENT","line":4647,"updated":"2015-09-30 17:35:07.000000000","message":"Hmm, it doesn\u0027t look like the volume was being saved before, but you add it. Did something change?","commit_id":"60ad70657d6469e6c3cd2ed7fb5b7fcef000f128"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"d303dd87b7778f38951eed6713be0740f7924192","unresolved":false,"context_lines":[{"line_number":4644,"context_line":"                                           host\u003dCONF.host, status\u003d\u0027retyping\u0027,"},{"line_number":4645,"context_line":"                                           volume_type_id\u003dold_vol_type[\u0027id\u0027],"},{"line_number":4646,"context_line":"                                           replication_status\u003drep_status)"},{"line_number":4647,"context_line":"        volume[\u0027previous_status\u0027] \u003d \u0027available\u0027"},{"line_number":4648,"context_line":"        if snap:"},{"line_number":4649,"context_line":"            self._create_snapshot(volume[\u0027id\u0027], size\u003dvolume[\u0027size\u0027])"},{"line_number":4650,"context_line":"        if driver or diff_equal:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_eef10b02","side":"PARENT","line":4647,"in_reply_to":"9a1a9d01_0faf9e2a","updated":"2015-09-30 17:55:55.000000000","message":"I should probably add previous_status into the kwargs above, instead of doing the save here.","commit_id":"60ad70657d6469e6c3cd2ed7fb5b7fcef000f128"}],"cinder/volume/manager.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6f7ab11c33fff7ad6df1dfaa76aec7ad2d4a3970","unresolved":false,"context_lines":[{"line_number":2030,"context_line":"        LOG.info(_LI(\"Extend volume completed successfully.\"),"},{"line_number":2031,"context_line":"                 resource\u003dvolume)"},{"line_number":2032,"context_line":""},{"line_number":2033,"context_line":"    def retype(self, ctxt, volume, new_type_id, host,"},{"line_number":2034,"context_line":"               migration_policy\u003d\u0027never\u0027, reservations\u003dNone):"},{"line_number":2035,"context_line":""},{"line_number":2036,"context_line":"        def _retype_error(context, volume, old_reservations,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_ef610a06","line":2033,"updated":"2015-09-30 17:35:07.000000000","message":"Same deal here. This is a compatibility-breaking change.","commit_id":"baf78251e57479946687e0072bf308073229eef3"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"cf0a667ba3865f1466658479d1ecb07d3eb6fba2","unresolved":false,"context_lines":[{"line_number":2119,"context_line":"                    retyped \u003d ret"},{"line_number":2120,"context_line":""},{"line_number":2121,"context_line":"                if retyped:"},{"line_number":2122,"context_line":"                    LOG.info(_LI(\"Volume %s: retyped successfully\"), volume.id)"},{"line_number":2123,"context_line":"            except Exception:"},{"line_number":2124,"context_line":"                retyped \u003d False"},{"line_number":2125,"context_line":"                LOG.exception(_LE(\"Volume %s: driver error when trying to \""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_07e6b414","line":2122,"updated":"2015-09-30 13:51:25.000000000","message":"\".\" at EOL","commit_id":"baf78251e57479946687e0072bf308073229eef3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e29bbfb01d55baebb545bba9fc66054ccd7dabd6","unresolved":false,"context_lines":[{"line_number":2027,"context_line":"        LOG.info(_LI(\"Extend volume completed successfully.\"),"},{"line_number":2028,"context_line":"                 resource\u003dvolume)"},{"line_number":2029,"context_line":""},{"line_number":2030,"context_line":"    def retype(self, ctxt, volume, new_type_id, host,"},{"line_number":2031,"context_line":"               migration_policy\u003d\u0027never\u0027, reservations\u003dNone):"},{"line_number":2032,"context_line":""},{"line_number":2033,"context_line":"        def _retype_error(context, volume, old_reservations,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_8c9cc26a","line":2030,"updated":"2015-11-03 21:29:08.000000000","message":"So for delete you kept compatibility with the old call, why not this one?\n\nLooks like maybe you updated the bottom patch and haven\u0027t gotten to this one yet?","commit_id":"3ee0e8f7598418fecaddbf76ebd6c44b35c94c02"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"15a016300be00c7b07d3f9e90eb45ba52c7776b2","unresolved":false,"context_lines":[{"line_number":2027,"context_line":"        LOG.info(_LI(\"Extend volume completed successfully.\"),"},{"line_number":2028,"context_line":"                 resource\u003dvolume)"},{"line_number":2029,"context_line":""},{"line_number":2030,"context_line":"    def retype(self, ctxt, volume, new_type_id, host,"},{"line_number":2031,"context_line":"               migration_policy\u003d\u0027never\u0027, reservations\u003dNone):"},{"line_number":2032,"context_line":""},{"line_number":2033,"context_line":"        def _retype_error(context, volume, old_reservations,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_316e4eca","line":2030,"in_reply_to":"fa80f949_8c9cc26a","updated":"2015-11-03 22:20:08.000000000","message":"I have not gotten up to this patch to make it compatible yet.  I will shortly.  I am still in Japan until the end of the week :)","commit_id":"3ee0e8f7598418fecaddbf76ebd6c44b35c94c02"}],"cinder/volume/rpcapi.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6f7ab11c33fff7ad6df1dfaa76aec7ad2d4a3970","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        target \u003d messaging.Target(topic\u003dCONF.volume_topic,"},{"line_number":88,"context_line":"                                  version\u003dself.BASE_RPC_API_VERSION)"},{"line_number":89,"context_line":"        serializer \u003d objects_base.CinderObjectSerializer()"},{"line_number":90,"context_line":"        self.client \u003d rpc.get_client(target, \u00271.32\u0027, serializer\u003dserializer)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def create_consistencygroup(self, ctxt, group, host):"},{"line_number":93,"context_line":"        new_host \u003d utils.extract_host(host)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_ab16a549","line":90,"updated":"2015-09-30 17:35:07.000000000","message":"You definitely shouldn\u0027t be changing this base version each time you make a minor rev, as that will affect the outbound call version of any method below that doesn\u0027t provide a specific version. You should just update the version you require for retype()","commit_id":"baf78251e57479946687e0072bf308073229eef3"}]}
