)]}'
{"nova/api/openstack/compute/volumes.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4eb2a529a02c594725283622396930c3226001e9","unresolved":false,"context_lines":[{"line_number":337,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":338,"context_line":"        except (exception.InstanceIsLocked,"},{"line_number":339,"context_line":"                exception.DevicePathInUse) as e:"},{"line_number":340,"context_line":"            # TODO(mriedem): Need to handle MultiattachNotSupportedByVirtDriver"},{"line_number":341,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":342,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":343,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f96bb07_0dd10855","line":340,"updated":"2018-01-12 12:06:18.000000000","message":"Do we also need to handle MultiattachSupportNotYetAvailable as well?","commit_id":"4c61b689d319debcb3b1c913e271e98dc4f12247"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e55d2b85bcd0ac68cff52948dfafb1943cb51b6b","unresolved":false,"context_lines":[{"line_number":337,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":338,"context_line":"        except (exception.InstanceIsLocked,"},{"line_number":339,"context_line":"                exception.DevicePathInUse) as e:"},{"line_number":340,"context_line":"            # TODO(mriedem): Need to handle MultiattachNotSupportedByVirtDriver"},{"line_number":341,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":342,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":343,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f96bb07_f9457b44","line":340,"in_reply_to":"7f96bb07_0dd10855","updated":"2018-01-12 15:14:37.000000000","message":"Yup, that\u0027s in the next patch in the series. This TODO was a reminder to myself in the API change.","commit_id":"4c61b689d319debcb3b1c913e271e98dc4f12247"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"642260c6793e78be00e3427de1401e5529da11e5","unresolved":false,"context_lines":[{"line_number":337,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":338,"context_line":"        except (exception.InstanceIsLocked,"},{"line_number":339,"context_line":"                exception.DevicePathInUse) as e:"},{"line_number":340,"context_line":"            # TODO(mriedem): Need to handle MultiattachNotSupportedByVirtDriver"},{"line_number":341,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":342,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":343,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f96bb07_b43acd95","line":340,"updated":"2018-01-19 16:15:27.000000000","message":"Fortunately, this is changed in the next change of the series","commit_id":"1b53028c9c5f53085fbaad6f569bbddb8b5e75aa"}],"nova/compute/api.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"642260c6793e78be00e3427de1401e5529da11e5","unresolved":false,"context_lines":[{"line_number":3654,"context_line":"            #             the same time. When db access is removed from"},{"line_number":3655,"context_line":"            #             compute, the bdm will be created here and we will"},{"line_number":3656,"context_line":"            #             have to make sure that they are assigned atomically."},{"line_number":3657,"context_line":"            # TODO(mriedem): Handle multiattach here."},{"line_number":3658,"context_line":"            volume_bdm \u003d self.compute_rpcapi.reserve_block_device_name("},{"line_number":3659,"context_line":"                context, instance, device, volume_id, disk_bus\u003ddisk_bus,"},{"line_number":3660,"context_line":"                device_type\u003ddevice_type, tag\u003dtag)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f96bb07_1472a17d","line":3657,"updated":"2018-01-19 16:15:27.000000000","message":"Also fixed in the next change","commit_id":"1b53028c9c5f53085fbaad6f569bbddb8b5e75aa"}],"nova/compute/manager.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"642260c6793e78be00e3427de1401e5529da11e5","unresolved":false,"context_lines":[{"line_number":5188,"context_line":"                self.driver.capabilities.get(\u0027supports_multiattach\u0027, False)):"},{"line_number":5189,"context_line":"            raise exception.MultiattachNotSupportedByVirtDriver("},{"line_number":5190,"context_line":"                volume_id\u003dvolume_id)"},{"line_number":5191,"context_line":""},{"line_number":5192,"context_line":"        @utils.synchronized(instance.uuid)"},{"line_number":5193,"context_line":"        def do_reserve():"},{"line_number":5194,"context_line":"            bdms \u003d ("}],"source_content_type":"text/x-python","patch_set":10,"id":"7f96bb07_5444a974","line":5191,"updated":"2018-01-19 16:15:27.000000000","message":"okay, so I see where we go. You just want to call out the compute service for knowing whether it supports multiattach, and if not, bail out early.\n\nFine, maybe a NOTE comment explaining that would be cool for posterity since it involves loading a lot of context in mind.","commit_id":"1b53028c9c5f53085fbaad6f569bbddb8b5e75aa"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b97c8a13f14eba5c3eb1b1a7e3ea655a878127b1","unresolved":false,"context_lines":[{"line_number":980,"context_line":"                # NOTE(mriedem): Reserve attempted with a multiattach volume,"},{"line_number":981,"context_line":"                # but the compute isn\u0027t new enough to handle that value so we"},{"line_number":982,"context_line":"                # need to fail since the compute is too old to support it."},{"line_number":983,"context_line":"                raise exception.MultiattachNotSupportedByVirtDriver("},{"line_number":984,"context_line":"                    volume_id\u003dvolume_id)"},{"line_number":985,"context_line":"            version \u003d \u00274.15\u0027"},{"line_number":986,"context_line":"            kw.pop(\u0027multiattach\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_74202dad","line":983,"range":{"start_line":983,"start_character":32,"end_line":983,"end_character":67},"updated":"2018-01-09 02:46:50.000000000","message":"This exception is meant to be more of a capability condition, i.e. if a non-libvirt driver is running this instance. We should use something else for a compute that is not yet upgraded to the point of supporting multiattach.","commit_id":"a1805b1eff8c9c7b2979d3c75bdf6ca767b36793"}],"nova/exception.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"642260c6793e78be00e3427de1401e5529da11e5","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"class MultiattachSupportNotYetAvailable(NovaException):"},{"line_number":264,"context_line":"    # This exception indicates the deployment is not yet new enough to support"},{"line_number":265,"context_line":"    # multiattach volumes, so a 409 HTTPConflict response is generally used"},{"line_number":266,"context_line":"    # for handling this in the API."},{"line_number":267,"context_line":"    msg_fmt \u003d _(\"Multiattach volume support is not yet available.\")"},{"line_number":268,"context_line":"    code \u003d 409"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f96bb07_7412050c","line":265,"range":{"start_line":265,"start_character":32,"end_line":265,"end_character":48},"updated":"2018-01-19 16:15:27.000000000","message":"not sure the HTTP409 is the best code that suits it, but meh.","commit_id":"1b53028c9c5f53085fbaad6f569bbddb8b5e75aa"}],"nova/objects/service.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"642260c6793e78be00e3427de1401e5529da11e5","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"# NOTE(danms): This is the global service version counter"},{"line_number":34,"context_line":"SERVICE_VERSION \u003d 27"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"# NOTE(danms): This is our SERVICE_VERSION history. The idea is that any"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f96bb07_f4c0552d","line":34,"updated":"2018-01-19 16:15:27.000000000","message":"Thanks to gibi with https://github.com/openstack/nova/commit/09417519 we no longer need to update the notifications test, wooot.","commit_id":"1b53028c9c5f53085fbaad6f569bbddb8b5e75aa"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4eb2a529a02c594725283622396930c3226001e9","unresolved":false,"context_lines":[{"line_number":425,"context_line":"                                supports_multiattach\u003dTrue)):"},{"line_number":426,"context_line":"            self.compute.reserve_block_device_name("},{"line_number":427,"context_line":"                self.context, instance, device\u003dNone, volume_id\u003duuids.volume_id,"},{"line_number":428,"context_line":"                disk_bus\u003dNone, device_type\u003dNone, multiattach\u003dTrue)"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"    @mock.patch.object(compute_utils, \u0027add_instance_fault_from_exc\u0027)"},{"line_number":431,"context_line":"    def test_reserve_block_device_name_multiattach_raises(self, _):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f96bb07_3063fb1c","line":428,"updated":"2018-01-12 12:06:18.000000000","message":"Can we assert something at the end, like that the mock.create was called?","commit_id":"4c61b689d319debcb3b1c913e271e98dc4f12247"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e55d2b85bcd0ac68cff52948dfafb1943cb51b6b","unresolved":false,"context_lines":[{"line_number":425,"context_line":"                                supports_multiattach\u003dTrue)):"},{"line_number":426,"context_line":"            self.compute.reserve_block_device_name("},{"line_number":427,"context_line":"                self.context, instance, device\u003dNone, volume_id\u003duuids.volume_id,"},{"line_number":428,"context_line":"                disk_bus\u003dNone, device_type\u003dNone, multiattach\u003dTrue)"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"    @mock.patch.object(compute_utils, \u0027add_instance_fault_from_exc\u0027)"},{"line_number":431,"context_line":"    def test_reserve_block_device_name_multiattach_raises(self, _):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f96bb07_396523e2","line":428,"in_reply_to":"7f96bb07_3063fb1c","updated":"2018-01-12 15:14:37.000000000","message":"Could, I guess I didn\u0027t think about it because I was just more concerned with the method not raising an exception.","commit_id":"4c61b689d319debcb3b1c913e271e98dc4f12247"}],"nova/tests/unit/compute/test_rpcapi.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"06301a10740a304b13e646c342770c970d6ad74a","unresolved":false,"context_lines":[{"line_number":538,"context_line":"                tag\u003d\u0027foo\u0027, multiattach\u003dTrue, version\u003d\u00274.20\u0027,"},{"line_number":539,"context_line":"                _return_value\u003dobjects_block_dev.BlockDeviceMapping())"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"    def test_reserve_block_device_name_raises_no_tagged_attach(self):"},{"line_number":542,"context_line":"        ctxt \u003d context.RequestContext(\u0027fake_user\u0027, \u0027fake_project\u0027)"},{"line_number":543,"context_line":"        instance \u003d self.fake_instance_obj"},{"line_number":544,"context_line":"        rpcapi \u003d compute_rpcapi.ComputeAPI()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f91af0f_8722aaff","line":541,"range":{"start_line":541,"start_character":8,"end_line":541,"end_character":62},"updated":"2018-01-04 23:36:05.000000000","message":"Suppose I shouldn\u0027t have renamed this test and the next one since it makes the diff look bigger than it really is.","commit_id":"5fe2ce2e045d7dce352444f80aed8384aa6b5b0d"}]}
