)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30183fa6dcb228b4acaecc136b68a85a6142fafe","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Request zero root disk for boot-from-volume instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We should not request any DISK_GB resource for boot-from-volume instances"},{"line_number":10,"context_line":"that will not use it on their compute node. This is slightly ugly because"},{"line_number":11,"context_line":"we\u0027re not communicating a very rich request to scheduler right now, and"},{"line_number":12,"context_line":"thus scheduler has lost sight of the fact that an instance has a volume"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"9f436f4f_135bd1f5","line":9,"updated":"2017-08-17 11:45:53.000000000","message":"Is it a problem with the API request that contains a flavor with \u003e 0  disk but also contains a bmd with root volume? If yes then I think we should catch that at the API level.","commit_id":"74f980ad7a10c01b7df12d5d1d106ba3038fdd49"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6f1d02a87bc3a54d45ca3fff4f3f2adbb6f66948","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Request zero root disk for boot-from-volume instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We should not request any DISK_GB resource for boot-from-volume instances"},{"line_number":10,"context_line":"that will not use it on their compute node. This is slightly ugly because"},{"line_number":11,"context_line":"we\u0027re not communicating a very rich request to scheduler right now, and"},{"line_number":12,"context_line":"thus scheduler has lost sight of the fact that an instance has a volume"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"7f287b81_c1a4bea8","line":9,"in_reply_to":"7f287b81_6f09b093","updated":"2017-08-28 12:00:50.000000000","message":"In case of boot from volume when an image is mapped to the root volume the size of that volume needs to be defined in the BDM not in the flavor. \n\nSo when a user wants to boot a VM from volume she should \nselect a flavor with disk\u003d0 then nova will not try to allocate any disk from the compute node. This is correct from both user and nova perspective.\n\nHowever when the user wants to boot a VM from volume but then selects a Flavor with disk \u003e 0 then Nova allocates that amount of disk from the compute. I think this is could be a correct behavior from nova as user requested the amount of disk in the flavor. In the other hand it could be a problem on the user side as she wants no local disk allocation (as the VM is booted from volume) but also at the same time requests local disk allocation via the flavor. So her request is ambiguous.\n\nOr do we want a behavior where the disk size requested in the flavor is checked against the size of the image/snapshot that is mapped to a root volume in the BDM provided at boot?","commit_id":"74f980ad7a10c01b7df12d5d1d106ba3038fdd49"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"d33e9d17d647142d61a727152dd8a691adaa071c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Request zero root disk for boot-from-volume instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We should not request any DISK_GB resource for boot-from-volume instances"},{"line_number":10,"context_line":"that will not use it on their compute node. This is slightly ugly because"},{"line_number":11,"context_line":"we\u0027re not communicating a very rich request to scheduler right now, and"},{"line_number":12,"context_line":"thus scheduler has lost sight of the fact that an instance has a volume"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"7f287b81_6f09b093","line":9,"in_reply_to":"9f436f4f_135bd1f5","updated":"2017-08-24 20:35:00.000000000","message":"Can you elaborate on what you mean by \"catch that at the API level?\" As John said, the problem is that we request disk resources during scheduling even though the instance is booting from a volume. It is because the flavor has \u003e 0 disk.","commit_id":"74f980ad7a10c01b7df12d5d1d106ba3038fdd49"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"11f3145dac131ee5f69bc0fc8b6ac97052751fe4","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Request zero root disk for boot-from-volume instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We should not request any DISK_GB resource for boot-from-volume instances"},{"line_number":10,"context_line":"that will not use it on their compute node. This is slightly ugly because"},{"line_number":11,"context_line":"we\u0027re not communicating a very rich request to scheduler right now, and"},{"line_number":12,"context_line":"thus scheduler has lost sight of the fact that an instance has a volume"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"9f436f4f_ce1b091a","line":9,"in_reply_to":"9f436f4f_135bd1f5","updated":"2017-08-21 16:17:50.000000000","message":"The problem is that Nova shouldn\u0027t be requesting the Flavor\u0027s root disk capacity on the compute node at all.  The fact that a root BDM is specified should say \"skip allocation\" which is what this patch does by setting it to 0","commit_id":"74f980ad7a10c01b7df12d5d1d106ba3038fdd49"}],"nova/conductor/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f943b4ec904c85c068b62f3da8af46197c362aa9","unresolved":false,"context_lines":[{"line_number":870,"context_line":"        # TODO(danms): We need to pass more context to the scheduler here"},{"line_number":871,"context_line":"        # in order to (a) handle boot-from-volume instances, as well as"},{"line_number":872,"context_line":"        # (b) know which volume provider to request resource from."},{"line_number":873,"context_line":"        if block_device_mapping.root_bdm().is_volume:"},{"line_number":874,"context_line":"            LOG.debug(\u0027Requesting zero root disk for \u0027"},{"line_number":875,"context_line":"                      \u0027boot-from-volume instance\u0027)"},{"line_number":876,"context_line":"            legacy_spec[\u0027flavor\u0027][\u0027root_gb\u0027] \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a430d35_2b095932","line":873,"range":{"start_line":873,"start_character":32,"end_line":873,"end_character":42},"updated":"2017-02-02 23:14:15.000000000","message":"This can return None.","commit_id":"63e8d0696e168022c1b2cec796062f1cd7be6932"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e2e39e8af8df9b64ccf46937247e7ab4ec5c9e0f","unresolved":false,"context_lines":[{"line_number":870,"context_line":"        # TODO(danms): We need to pass more context to the scheduler here"},{"line_number":871,"context_line":"        # in order to (a) handle boot-from-volume instances, as well as"},{"line_number":872,"context_line":"        # (b) know which volume provider to request resource from."},{"line_number":873,"context_line":"        if block_device_mapping.root_bdm().is_volume:"},{"line_number":874,"context_line":"            LOG.debug(\u0027Requesting zero root disk for \u0027"},{"line_number":875,"context_line":"                      \u0027boot-from-volume instance\u0027)"},{"line_number":876,"context_line":"            legacy_spec[\u0027flavor\u0027][\u0027root_gb\u0027] \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a430d35_2e65e7e0","line":873,"range":{"start_line":873,"start_character":32,"end_line":873,"end_character":42},"in_reply_to":"1a430d35_2b095932","updated":"2017-02-02 23:17:11.000000000","message":"Also, doesn\u0027t this need to be per-instance? i.e.:\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/block_device.py#L364","commit_id":"63e8d0696e168022c1b2cec796062f1cd7be6932"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"aab702294d22063e3de3660e50062260c5050ff1","unresolved":false,"context_lines":[{"line_number":870,"context_line":"        # TODO(danms): We need to pass more context to the scheduler here"},{"line_number":871,"context_line":"        # in order to (a) handle boot-from-volume instances, as well as"},{"line_number":872,"context_line":"        # (b) know which volume provider to request resource from."},{"line_number":873,"context_line":"        if block_device_mapping.root_bdm().is_volume:"},{"line_number":874,"context_line":"            LOG.debug(\u0027Requesting zero root disk for \u0027"},{"line_number":875,"context_line":"                      \u0027boot-from-volume instance\u0027)"},{"line_number":876,"context_line":"            legacy_spec[\u0027flavor\u0027][\u0027root_gb\u0027] \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a430d35_f4456e17","line":873,"range":{"start_line":873,"start_character":32,"end_line":873,"end_character":42},"in_reply_to":"1a430d35_2e65e7e0","updated":"2017-02-03 00:19:15.000000000","message":"This seems to work for the instance create case (with part of my RT patch from a long time ago) but it doesn\u0027t handle resize/rebuild/shelve/unshelve.","commit_id":"63e8d0696e168022c1b2cec796062f1cd7be6932"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"174d879fa48410d873d1e45c1f926a6aba124748","unresolved":false,"context_lines":[{"line_number":602,"context_line":"        # in order to (a) handle boot-from-volume instances, as well as"},{"line_number":603,"context_line":"        # (b) know which volume provider to request resource from."},{"line_number":604,"context_line":"        if is_bfv:"},{"line_number":605,"context_line":"            LOG.debug(\u0027Requesting zero root disk for \u0027"},{"line_number":606,"context_line":"                      \u0027boot-from-volume instance\u0027)"},{"line_number":607,"context_line":"            request_spec[\u0027instance_type\u0027][\u0027root_gb\u0027] \u003d 0"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        # TODO(sbauza): Hydrate here the object until we modify the"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_97cbd952","line":606,"range":{"start_line":605,"start_character":12,"end_line":606,"end_character":50},"updated":"2017-02-13 18:15:21.000000000","message":"Do we have any instance uuid at this point? I was looking for something for context. Looks like for unshelve and rebuild we would, but otherwise we don\u0027t since we could be building multiple instances.","commit_id":"d7ed49108bcac3d8cf670a89ab0c4ae9edf7d7fc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5360f049e1d5fe33954d5f8a0ca9352a166ebbba","unresolved":false,"context_lines":[{"line_number":602,"context_line":"        # in order to (a) handle boot-from-volume instances, as well as"},{"line_number":603,"context_line":"        # (b) know which volume provider to request resource from."},{"line_number":604,"context_line":"        if is_bfv:"},{"line_number":605,"context_line":"            LOG.debug(\u0027Requesting zero root disk for \u0027"},{"line_number":606,"context_line":"                      \u0027boot-from-volume instance\u0027)"},{"line_number":607,"context_line":"            request_spec[\u0027instance_type\u0027][\u0027root_gb\u0027] \u003d 0"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        # TODO(sbauza): Hydrate here the object until we modify the"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_e0c60667","line":606,"range":{"start_line":605,"start_character":12,"end_line":606,"end_character":50},"in_reply_to":"fa31d9ce_20bc9edb","updated":"2017-02-13 20:43:10.000000000","message":"The request id gets logged from the context which is probably good enough.","commit_id":"d7ed49108bcac3d8cf670a89ab0c4ae9edf7d7fc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"649ddd908112bac7b2c8c5fbe7a1b9a85554f5c4","unresolved":false,"context_lines":[{"line_number":602,"context_line":"        # in order to (a) handle boot-from-volume instances, as well as"},{"line_number":603,"context_line":"        # (b) know which volume provider to request resource from."},{"line_number":604,"context_line":"        if is_bfv:"},{"line_number":605,"context_line":"            LOG.debug(\u0027Requesting zero root disk for \u0027"},{"line_number":606,"context_line":"                      \u0027boot-from-volume instance\u0027)"},{"line_number":607,"context_line":"            request_spec[\u0027instance_type\u0027][\u0027root_gb\u0027] \u003d 0"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        # TODO(sbauza): Hydrate here the object until we modify the"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_20bc9edb","line":606,"range":{"start_line":605,"start_character":12,"end_line":606,"end_character":50},"in_reply_to":"fa31d9ce_8dde686b","updated":"2017-02-13 20:42:45.000000000","message":"Yeah, but in the case where we have a list, which do you choose, or do you list them all, or none? This is a very small nit, just something I thought about when looking at this.","commit_id":"d7ed49108bcac3d8cf670a89ab0c4ae9edf7d7fc"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"bab064d52babe502f83883eb7b6a117b8247ecc9","unresolved":false,"context_lines":[{"line_number":602,"context_line":"        # in order to (a) handle boot-from-volume instances, as well as"},{"line_number":603,"context_line":"        # (b) know which volume provider to request resource from."},{"line_number":604,"context_line":"        if is_bfv:"},{"line_number":605,"context_line":"            LOG.debug(\u0027Requesting zero root disk for \u0027"},{"line_number":606,"context_line":"                      \u0027boot-from-volume instance\u0027)"},{"line_number":607,"context_line":"            request_spec[\u0027instance_type\u0027][\u0027root_gb\u0027] \u003d 0"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        # TODO(sbauza): Hydrate here the object until we modify the"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_8dde686b","line":606,"range":{"start_line":605,"start_character":12,"end_line":606,"end_character":50},"in_reply_to":"fa31d9ce_97cbd952","updated":"2017-02-13 18:49:36.000000000","message":"It looks like we have instance uuids in all cases. Unshelve and rebuild obviously have an already existing instance, but for build_instances we also have a list of instance objects that were created in compute/api and then for schedule_and_build_instances we have a list of build request objects that each have an instance uuid that we generated in compute/api.","commit_id":"d7ed49108bcac3d8cf670a89ab0c4ae9edf7d7fc"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"723d1feb81acbd902260f0aa16a0a99e0b5585a8","unresolved":false,"context_lines":[{"line_number":923,"context_line":"                with obj_target_cell(inst, cell0):"},{"line_number":924,"context_line":"                    inst.destroy()"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"    def _is_bfv(self, block_device_mapping):"},{"line_number":927,"context_line":"        if block_device_mapping:"},{"line_number":928,"context_line":"            root_bdm \u003d block_device_mapping.root_bdm()"},{"line_number":929,"context_line":"            return root_bdm.is_volume if root_bdm else False"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_75f444f1","line":926,"updated":"2017-07-19 10:25:41.000000000","message":"nit: bvf is nice, but do you consider to have it as a BlockDeviceMappingList method, something like \nBlockDeviceMappingList.root_is_volume_backed.\nComputeTaskManager._is_bfv is harder to understand for me.","commit_id":"062b0f9657c09ced7e07351cb88b9555a204b27f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8e6cdd6db0a6b3416c67cd08bb3b8ef42e06b310","unresolved":false,"context_lines":[{"line_number":923,"context_line":"                with obj_target_cell(inst, cell0):"},{"line_number":924,"context_line":"                    inst.destroy()"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"    def _is_bfv(self, block_device_mapping):"},{"line_number":927,"context_line":"        if block_device_mapping:"},{"line_number":928,"context_line":"            root_bdm \u003d block_device_mapping.root_bdm()"},{"line_number":929,"context_line":"            return root_bdm.is_volume if root_bdm else False"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_8b79c130","line":926,"in_reply_to":"1f1a1f67_75f444f1","updated":"2017-07-20 22:45:06.000000000","message":"Hm, yeah. Guess the name isn\u0027t great. I think it would make sense to add another instance method to the BlockDeviceMappingList to do the same, so thanks for the suggestion.","commit_id":"062b0f9657c09ced7e07351cb88b9555a204b27f"}],"nova/conductor/tasks/migrate.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"69fcf4ce6b36bf40d84665dd6ca486fe0fd29edc","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            self.request_spec.requested_destination \u003d objects.Destination("},{"line_number":65,"context_line":"                cell\u003dinstance_mapping.cell_mapping)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        # NOTE(danms): We don\u0027t pass enough information to the scheduler to"},{"line_number":68,"context_line":"        # know that we have a boot-from-volume request."},{"line_number":69,"context_line":"        # TODO(danms): We need to pass more context to the scheduler here"},{"line_number":70,"context_line":"        # in order to (a) handle boot-from-volume instances, as well as"},{"line_number":71,"context_line":"        # (b) know which volume provider to request resource from."},{"line_number":72,"context_line":"        request_spec_copy \u003d self.request_spec"},{"line_number":73,"context_line":"        if self.instance.is_volume_backed():"},{"line_number":74,"context_line":"            LOG.debug(\u0027Requesting zero root disk for \u0027"},{"line_number":75,"context_line":"                      \u0027boot-from-volume instance\u0027)"},{"line_number":76,"context_line":"            # Clone this so we don\u0027t mutate the RequestSpec that was passed in"},{"line_number":77,"context_line":"            request_spec_copy \u003d self.request_spec.obj_clone()"},{"line_number":78,"context_line":"            request_spec_copy.flavor.root_gb \u003d 0"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        hosts \u003d self.scheduler_client.select_destinations("},{"line_number":81,"context_line":"            self.context, request_spec_copy, [self.instance.uuid])"}],"source_content_type":"text/x-python","patch_set":13,"id":"9f436f4f_a74847b2","line":78,"range":{"start_line":67,"start_character":0,"end_line":78,"end_character":48},"updated":"2017-08-17 10:55:16.000000000","message":"This seems exactly the same as the change in the conductor/manager.py Would it be better to move it to a util function?","commit_id":"74f980ad7a10c01b7df12d5d1d106ba3038fdd49"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b205888de9a43a1f09786f65c76b9b58c3d5801c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            self.request_spec.requested_destination \u003d objects.Destination("},{"line_number":65,"context_line":"                cell\u003dinstance_mapping.cell_mapping)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        # NOTE(danms): We don\u0027t pass enough information to the scheduler to"},{"line_number":68,"context_line":"        # know that we have a boot-from-volume request."},{"line_number":69,"context_line":"        # TODO(danms): We need to pass more context to the scheduler here"},{"line_number":70,"context_line":"        # in order to (a) handle boot-from-volume instances, as well as"}],"source_content_type":"text/x-python","patch_set":16,"id":"5f7c97a3_6fb036dd","line":67,"updated":"2018-07-06 14:51:46.000000000","message":"So you\u0027ve handled server create and cold migrate, but you\u0027d also need to do this for evacuate, unshelve and live migrate (oh and don\u0027t forget forced evacuate and live migrate where we don\u0027t even call select_destinations).\n\nFor the former, can we use a pre-request placement filter to consolidate this request spec munging before it gets to the scheduler?\n\nFor the latter, you\u0027d have to just handle that here I think:\n\nhttps://github.com/openstack/nova/blob/0e090f31e845a3fc683260f529b9ac3fddbcb6f8/nova/conductor/manager.py#L866\n\nand here:\n\nhttps://github.com/openstack/nova/blob/0e090f31e845a3fc683260f529b9ac3fddbcb6f8/nova/conductor/tasks/live_migrate.py#L93\n\nThose force cases are a bit tricky...would require more investigation than I\u0027ve done here.","commit_id":"16657de0faf27833c3054d7a477f4be3a1751967"}],"nova/objects/instance.py":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"723d1feb81acbd902260f0aa16a0a99e0b5585a8","unresolved":false,"context_lines":[{"line_number":1175,"context_line":"            self._context, self.uuid)"},{"line_number":1176,"context_line":""},{"line_number":1177,"context_line":"    def is_volume_backed(self):"},{"line_number":1178,"context_line":"        if self._is_volume_backed is None:"},{"line_number":1179,"context_line":"            self._is_volume_backed \u003d compute_utils.is_volume_backed_instance("},{"line_number":1180,"context_line":"                self._context, self)"},{"line_number":1181,"context_line":"        return self._is_volume_backed"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_d297aeeb","line":1178,"updated":"2017-07-19 10:25:41.000000000","message":"It\u0027s a kind of cache and it\u0027s supposed that root volume never changes its type. Does it sound right?\nOr where is the cache invalidation?","commit_id":"062b0f9657c09ced7e07351cb88b9555a204b27f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8e6cdd6db0a6b3416c67cd08bb3b8ef42e06b310","unresolved":false,"context_lines":[{"line_number":1175,"context_line":"            self._context, self.uuid)"},{"line_number":1176,"context_line":""},{"line_number":1177,"context_line":"    def is_volume_backed(self):"},{"line_number":1178,"context_line":"        if self._is_volume_backed is None:"},{"line_number":1179,"context_line":"            self._is_volume_backed \u003d compute_utils.is_volume_backed_instance("},{"line_number":1180,"context_line":"                self._context, self)"},{"line_number":1181,"context_line":"        return self._is_volume_backed"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_4bc1692e","line":1178,"in_reply_to":"1f1a1f67_d297aeeb","updated":"2017-07-20 22:45:06.000000000","message":"Yeah, this is assuming for the lifetime of an Instance object, it doesn\u0027t change. So it would be recalculated any time the instance is pulled from the database. And I thought booting from volume was a one-time thing when the instance is created and there\u0027s no way to change it afterward. Am I wrong on that?","commit_id":"062b0f9657c09ced7e07351cb88b9555a204b27f"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"723d1feb81acbd902260f0aa16a0a99e0b5585a8","unresolved":false,"context_lines":[{"line_number":1176,"context_line":""},{"line_number":1177,"context_line":"    def is_volume_backed(self):"},{"line_number":1178,"context_line":"        if self._is_volume_backed is None:"},{"line_number":1179,"context_line":"            self._is_volume_backed \u003d compute_utils.is_volume_backed_instance("},{"line_number":1180,"context_line":"                self._context, self)"},{"line_number":1181,"context_line":"        return self._is_volume_backed"},{"line_number":1182,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_b533fcaa","line":1179,"updated":"2017-07-19 10:25:41.000000000","message":"In some places compute_utils.is_volume_backed_instance is used directly, probably this can lead to circular dependencies.","commit_id":"062b0f9657c09ced7e07351cb88b9555a204b27f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8e6cdd6db0a6b3416c67cd08bb3b8ef42e06b310","unresolved":false,"context_lines":[{"line_number":1176,"context_line":""},{"line_number":1177,"context_line":"    def is_volume_backed(self):"},{"line_number":1178,"context_line":"        if self._is_volume_backed is None:"},{"line_number":1179,"context_line":"            self._is_volume_backed \u003d compute_utils.is_volume_backed_instance("},{"line_number":1180,"context_line":"                self._context, self)"},{"line_number":1181,"context_line":"        return self._is_volume_backed"},{"line_number":1182,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_2b050d7b","line":1179,"in_reply_to":"1f1a1f67_b533fcaa","updated":"2017-07-20 22:45:06.000000000","message":"True, if this module were imported directly but the usual pattern is \"from nova import objects\" which avoids that. I think we\u0027d have a lot of circular dependencies if we imported object modules directly (I have tried it before :P).","commit_id":"062b0f9657c09ced7e07351cb88b9555a204b27f"}]}
