)]}'
{"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"14cfa728412bc6a94b9f4f81acd5640ec784bdfa","unresolved":false,"context_lines":[{"line_number":6843,"context_line":"                CONF.libvirt.virt_type, instance,"},{"line_number":6844,"context_line":"                image_meta, block_device_info\u003dblock_device_info)"},{"line_number":6845,"context_line":""},{"line_number":6846,"context_line":"        # NOTE(ndipanov): Copy obj to avoid changing the original"},{"line_number":6847,"context_line":"        block_device_obj \u003d copy.copy(block_device_obj)"},{"line_number":6848,"context_line":"        suggested_dev_name \u003d block_device_obj.device_name"},{"line_number":6849,"context_line":"        if suggested_dev_name is not None:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_e0aed797","line":6846,"updated":"2015-07-04 14:37:47.000000000","message":"This should happen in the compute manager before calling self.driver.get_device_name_for_instance:\n\nhttps://review.openstack.org/#/c/180637/13/nova/compute/manager.py\n\nOtherwise each virt driver that implements this method has to have the same logic.","commit_id":"93cc4675326b06d0b2c4dcc4c0e9974954eec5e9"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"09e2d74362986173c8964152564b12f875b5b066","unresolved":false,"context_lines":[{"line_number":6844,"context_line":"                image_meta, block_device_info\u003dblock_device_info)"},{"line_number":6845,"context_line":""},{"line_number":6846,"context_line":"        # NOTE(ndipanov): Copy obj to avoid changing the original"},{"line_number":6847,"context_line":"        block_device_obj \u003d copy.copy(block_device_obj)"},{"line_number":6848,"context_line":"        suggested_dev_name \u003d block_device_obj.device_name"},{"line_number":6849,"context_line":"        if suggested_dev_name is not None:"},{"line_number":6850,"context_line":"            LOG.warn(_LW(\u0027Ignoring supplied device name: %(suggested_dev)s\u0027),"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_75fb6048","line":6847,"updated":"2015-07-05 14:32:30.000000000","message":"this should use obj_clone and not copy","commit_id":"93cc4675326b06d0b2c4dcc4c0e9974954eec5e9"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b2c3f99640a5c6cabe08a0960189de2d6190b99d","unresolved":false,"context_lines":[{"line_number":6844,"context_line":"                image_meta, block_device_info\u003dblock_device_info)"},{"line_number":6845,"context_line":""},{"line_number":6846,"context_line":"        # NOTE(ndipanov): Copy obj to avoid changing the original"},{"line_number":6847,"context_line":"        block_device_obj \u003d copy.copy(block_device_obj)"},{"line_number":6848,"context_line":"        suggested_dev_name \u003d block_device_obj.device_name"},{"line_number":6849,"context_line":"        if suggested_dev_name is not None:"},{"line_number":6850,"context_line":"            LOG.warn(_LW(\u0027Ignoring supplied device name: %(suggested_dev)s\u0027),"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_8875a233","line":6847,"in_reply_to":"ba3cc151_75fb6048","updated":"2015-07-06 08:50:59.000000000","message":"Done","commit_id":"93cc4675326b06d0b2c4dcc4c0e9974954eec5e9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"98334c470e6d4c8da279c44428b2d8773ee21733","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"import collections"},{"line_number":29,"context_line":"import contextlib"},{"line_number":30,"context_line":"import copy"},{"line_number":31,"context_line":"import errno"},{"line_number":32,"context_line":"import functools"},{"line_number":33,"context_line":"import glob"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba3cc151_7717cb54","line":30,"updated":"2015-07-06 14:34:30.000000000","message":"pep8: unused import","commit_id":"f954e91b49f8dbfa0b4ebb3583fe39bf7c78624f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"485895dda9d4164b4f5ae1b4bf64af4f52c759f6","unresolved":false,"context_lines":[{"line_number":6846,"context_line":"            LOG.warn(_LW(\u0027Ignoring supplied device name: %(suggested_dev)s\u0027),"},{"line_number":6847,"context_line":"                     {\u0027suggested_dev\u0027: suggested_dev_name}, instance\u003dinstance)"},{"line_number":6848,"context_line":""},{"line_number":6849,"context_line":"        # NOTE(ndipanov): get_info_from_bdm will generate the new device name"},{"line_number":6850,"context_line":"        #                 only when it\u0027s actually not set on the bd object"},{"line_number":6851,"context_line":"        block_device_obj.device_name \u003d None"},{"line_number":6852,"context_line":"        disk_info \u003d blockinfo.get_info_from_bdm("}],"source_content_type":"text/x-python","patch_set":18,"id":"ba3cc151_d716d057","line":6849,"updated":"2015-07-10 21:29:29.000000000","message":"sigh, tight coupling city. I wish what we were doing here actually lived closer to the blockinfo code that has this conditional logic so the caller didn\u0027t need to know the internals of how blockinfo did it\u0027s thing, or maybe that the \u0027get\u0027 in the blockinfo methods were actually called \u0027update\u0027 since that\u0027s what they do (depends I guess).\n\nAnyway, I\u0027m just officially complaining about this but won\u0027t block on it.","commit_id":"0f2f67b7dc53dedb4485c693fb1ae7221a78cb52"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"eedf19ebaf9510463b5ab0940a9759c38e621505","unresolved":false,"context_lines":[{"line_number":6846,"context_line":"            LOG.warn(_LW(\u0027Ignoring supplied device name: %(suggested_dev)s\u0027),"},{"line_number":6847,"context_line":"                     {\u0027suggested_dev\u0027: suggested_dev_name}, instance\u003dinstance)"},{"line_number":6848,"context_line":""},{"line_number":6849,"context_line":"        # NOTE(ndipanov): get_info_from_bdm will generate the new device name"},{"line_number":6850,"context_line":"        #                 only when it\u0027s actually not set on the bd object"},{"line_number":6851,"context_line":"        block_device_obj.device_name \u003d None"},{"line_number":6852,"context_line":"        disk_info \u003d blockinfo.get_info_from_bdm("}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_07dc0811","line":6849,"in_reply_to":"ba3cc151_d716d057","updated":"2015-07-13 09:37:03.000000000","message":"well idk - blockinfo is not some opaque 3rd party library, it\u0027s really an integral part of the libvirt driver, so knowing it\u0027s internals when writing code for the libvirt driver top level methods is fair game imho.\n\nWhat one could argue (and I thought about a lot), is whether using bdm objects inside the driver is ok. I think it is - before we used to have the virtapi class taht would define the DB interactions that driver code is meant to be doing, but that is not necessary now that we have objects. If we want to be pedantic - we should probably be using stuff from DriverBlockDevice family - but those are only wrappers around bdm objects with additional functionality that we don\u0027t need (PS blockinfo code would work with both)","commit_id":"0f2f67b7dc53dedb4485c693fb1ae7221a78cb52"}]}
