)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b0a3f0407a989e0469d36ae75f5cebefbd348545","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     a363e1c8 (Merge \"Compute: update finish_revert_resize log to have some context\")"},{"line_number":2,"context_line":"Author:     Ankit Agrawal \u003cankit11.agrawal@nttdata.com\u003e"},{"line_number":3,"context_line":"AuthorDate: 2015-09-04 00:21:47 -0700"},{"line_number":4,"context_line":"Commit:     Ankit Agrawal \u003cankit11.agrawal@nttdata.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-11-18 04:20:38 -0800"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba8a016a_9b76cca2","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":55},"updated":"2015-11-18 13:53:41.000000000","message":"You changed the commit author so it makes no sense to add yourself in the Co-Authored-by.\n\nEither leave the commiter unchanged or add Abhijeet as Co-authored-by","commit_id":"bbfe773609ce33dcc9f0be5f7099c3a90695e3cc"}],"nova/compute/resource_tracker.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"c6f6575067d2536c87ea7b8145ffaa4466637f8a","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        the hypervisor layer yet."},{"line_number":467,"context_line":"        \"\"\""},{"line_number":468,"context_line":"        # Grab all instances assigned to this node."},{"line_number":469,"context_line":"        instances \u003d objects.InstanceList.get_by_host_and_node("},{"line_number":470,"context_line":"            context, self.host, self.nodename,"},{"line_number":471,"context_line":"            expected_attrs\u003d[\u0027system_metadata\u0027,"},{"line_number":472,"context_line":"                            \u0027numa_topology\u0027])"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"        LOG.info(_LI(\"Auditing locally available compute resources for \""},{"line_number":475,"context_line":"                     \"node %(node)s\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_bff6275b","line":472,"range":{"start_line":469,"start_character":8,"end_line":472,"end_character":45},"updated":"2015-12-02 11:32:09.000000000","message":"Nope, this can\u0027t go here - we\u0027re not holding the global resources lock so we might be racing (i.e. this will not the actual list of instances.","commit_id":"320e07e7b5268eb7156f5112bca3f4e32307d4fb"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"bbdac77a4fefaef248e4ef005fa7bc930147764c","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        instances \u003d objects.InstanceList.get_by_host_and_node("},{"line_number":470,"context_line":"            context, self.host, self.nodename,"},{"line_number":471,"context_line":"            expected_attrs\u003d[\u0027system_metadata\u0027,"},{"line_number":472,"context_line":"                            \u0027numa_topology\u0027])"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"        LOG.info(_LI(\"Auditing locally available compute resources for \""},{"line_number":475,"context_line":"                     \"node %(node)s\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_addfa467","line":472,"in_reply_to":"7a740942_3b27b965","updated":"2015-12-08 10:00:39.000000000","message":"Previous aproach also relied on the hypervisor list of instances, instead of the one decided by Nova while holding the global resource lock which is likely to be wrong. There is no easy fix to that problem though, and that change is much less invasive.\n\nWe can go back to that - but let\u0027s _please_ make a big comment in code that shows that it\u0027s wrong.","commit_id":"320e07e7b5268eb7156f5112bca3f4e32307d4fb"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"64ea1d2000bf2c18d6f4c8800671398be4baacac","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        instances \u003d objects.InstanceList.get_by_host_and_node("},{"line_number":470,"context_line":"            context, self.host, self.nodename,"},{"line_number":471,"context_line":"            expected_attrs\u003d[\u0027system_metadata\u0027,"},{"line_number":472,"context_line":"                            \u0027numa_topology\u0027])"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"        LOG.info(_LI(\"Auditing locally available compute resources for \""},{"line_number":475,"context_line":"                     \"node %(node)s\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_3b27b965","line":472,"in_reply_to":"9a8ffd7b_bff6275b","updated":"2015-12-07 05:50:48.000000000","message":"Considering this problem, previous PS changes looks appropriate here with the only concern that it will introduce an additional DB call to fetch instance list. So should I revert back to the previous patch set [1].\n\nPlease let Me know your opinion.\n\n[1] https://review.openstack.org/#/c/221162/3","commit_id":"320e07e7b5268eb7156f5112bca3f4e32307d4fb"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"8f8bb2044b337bcd5a63fce4b4aed3ff39615647","unresolved":false,"context_lines":[{"line_number":9700,"context_line":"        drvr._undefine_domain(instance)"},{"line_number":9701,"context_line":""},{"line_number":9702,"context_line":"    @mock.patch.object(host.Host, \"list_instance_domains\")"},{"line_number":9703,"context_line":"    @mock.patch.object(objects.BlockDeviceMappingList, \"bdms_by_instance_uuid\")"},{"line_number":9704,"context_line":"    @mock.patch.object(objects.InstanceList, \"get_by_filters\")"},{"line_number":9705,"context_line":"    def test_disk_over_committed_size_total(self, mock_get, mock_bdms,"},{"line_number":9706,"context_line":"                                            mock_list):"},{"line_number":9707,"context_line":"        # Ensure destroy calls managedSaveRemove for saved instance."}],"source_content_type":"text/x-python","patch_set":7,"id":"1a7b0d38_f51b9e7e","line":9704,"range":{"start_line":9703,"start_character":4,"end_line":9704,"end_character":62},"updated":"2015-12-24 11:09:22.000000000","message":"We are really just mocking out the calls here - how about we add actual values and see how it works?","commit_id":"e041626b938bd63d11683c69dc852920a9277610"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"a343bb552568cfb72bc1e4f81ca748cd282f32f7","unresolved":false,"context_lines":[{"line_number":9700,"context_line":"        drvr._undefine_domain(instance)"},{"line_number":9701,"context_line":""},{"line_number":9702,"context_line":"    @mock.patch.object(host.Host, \"list_instance_domains\")"},{"line_number":9703,"context_line":"    @mock.patch.object(objects.BlockDeviceMappingList, \"bdms_by_instance_uuid\")"},{"line_number":9704,"context_line":"    @mock.patch.object(objects.InstanceList, \"get_by_filters\")"},{"line_number":9705,"context_line":"    def test_disk_over_committed_size_total(self, mock_get, mock_bdms,"},{"line_number":9706,"context_line":"                                            mock_list):"},{"line_number":9707,"context_line":"        # Ensure destroy calls managedSaveRemove for saved instance."}],"source_content_type":"text/x-python","patch_set":7,"id":"1a7b0d38_763f7487","line":9704,"range":{"start_line":9703,"start_character":4,"end_line":9704,"end_character":62},"in_reply_to":"1a7b0d38_f51b9e7e","updated":"2015-12-28 10:23:50.000000000","message":"We can not pass actual values here because we are not creating any database entries for instances or bdms in unit tests. So I have added return values to these mock calls similar to the existing unit test cases [1] and asserting those calls with expected parameters. I\u0027ll submit the new PS soon.\n\n[1] https://github.com/openstack/nova/blob/master/nova/tests/unit/compute/test_compute.py#L6426","commit_id":"e041626b938bd63d11683c69dc852920a9277610"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"3777bed1bf1acce8e0e87c3c6ccdb1b62ccf9586","unresolved":false,"context_lines":[{"line_number":10374,"context_line":"        ]"},{"line_number":10375,"context_line":"        mock_get.return_value \u003d instances"},{"line_number":10376,"context_line":""},{"line_number":10377,"context_line":"        bdms_by_uuid \u003d objects.BlockDeviceMappingList.bdms_by_instance_uuid("},{"line_number":10378,"context_line":"            self.context, instance_uuids)"},{"line_number":10379,"context_line":"        mock_bdms.return_value \u003d bdms_by_uuid"},{"line_number":10380,"context_line":""},{"line_number":10381,"context_line":"        with mock.patch.object(drvr,"},{"line_number":10382,"context_line":"                               \"_get_instance_disk_info\") as mock_info:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a57f1b5_88ea290e","line":10379,"range":{"start_line":10377,"start_character":8,"end_line":10379,"end_character":45},"updated":"2016-02-11 13:33:44.000000000","message":"Doesn\u0027t this just assign a Mock generated by a call to mocked bdms_by_instance_uuid back as a return value? what\u0027s the point of this?","commit_id":"ff2418de66d013c6814e91f046bdd012393f870d"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"39d9291e1d6629811edbd64cd6cd8ccf4abd6f81","unresolved":false,"context_lines":[{"line_number":10374,"context_line":"        ]"},{"line_number":10375,"context_line":"        mock_get.return_value \u003d instances"},{"line_number":10376,"context_line":""},{"line_number":10377,"context_line":"        bdms_by_uuid \u003d objects.BlockDeviceMappingList.bdms_by_instance_uuid("},{"line_number":10378,"context_line":"            self.context, instance_uuids)"},{"line_number":10379,"context_line":"        mock_bdms.return_value \u003d bdms_by_uuid"},{"line_number":10380,"context_line":""},{"line_number":10381,"context_line":"        with mock.patch.object(drvr,"},{"line_number":10382,"context_line":"                               \"_get_instance_disk_info\") as mock_info:"}],"source_content_type":"text/x-python","patch_set":9,"id":"dae33548_682173b4","line":10379,"range":{"start_line":10377,"start_character":8,"end_line":10379,"end_character":45},"in_reply_to":"3a57f1b5_88ea290e","updated":"2016-02-16 05:52:38.000000000","message":"Yes, return_value assignment for this call is not needed here.","commit_id":"ff2418de66d013c6814e91f046bdd012393f870d"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"3777bed1bf1acce8e0e87c3c6ccdb1b62ccf9586","unresolved":false,"context_lines":[{"line_number":10436,"context_line":"                        \u0027disk_size\u0027: \u002710737418240\u0027,"},{"line_number":10437,"context_line":"                        \u0027over_committed_disk_size\u0027: \u002721474836480\u0027}]}"},{"line_number":10438,"context_line":""},{"line_number":10439,"context_line":"        def side_effect(name, dom, **kwargs):"},{"line_number":10440,"context_line":"            if name \u003d\u003d \u0027instance0000001\u0027:"},{"line_number":10441,"context_line":"                raise OSError(errno.EACCES, \u0027Permission denied\u0027)"},{"line_number":10442,"context_line":"            if name \u003d\u003d \u0027instance0000002\u0027:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a57f1b5_f6737a7e","line":10439,"range":{"start_line":10439,"start_character":35,"end_line":10439,"end_character":43},"updated":"2016-02-11 13:33:44.000000000","message":"So we also want to make sure that the right thing is passed here no?","commit_id":"ff2418de66d013c6814e91f046bdd012393f870d"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"39d9291e1d6629811edbd64cd6cd8ccf4abd6f81","unresolved":false,"context_lines":[{"line_number":10436,"context_line":"                        \u0027disk_size\u0027: \u002710737418240\u0027,"},{"line_number":10437,"context_line":"                        \u0027over_committed_disk_size\u0027: \u002721474836480\u0027}]}"},{"line_number":10438,"context_line":""},{"line_number":10439,"context_line":"        def side_effect(name, dom, **kwargs):"},{"line_number":10440,"context_line":"            if name \u003d\u003d \u0027instance0000001\u0027:"},{"line_number":10441,"context_line":"                raise OSError(errno.EACCES, \u0027Permission denied\u0027)"},{"line_number":10442,"context_line":"            if name \u003d\u003d \u0027instance0000002\u0027:"}],"source_content_type":"text/x-python","patch_set":9,"id":"dae33548_a82b7b93","line":10439,"range":{"start_line":10439,"start_character":35,"end_line":10439,"end_character":43},"in_reply_to":"3a57f1b5_f6737a7e","updated":"2016-02-16 05:52:38.000000000","message":"Done","commit_id":"ff2418de66d013c6814e91f046bdd012393f870d"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"4f3a433082046a4206826a2a3ac141a1741f2dc2","unresolved":false,"context_lines":[{"line_number":6542,"context_line":"            ctx, filters, use_slave\u003dTrue)"},{"line_number":6543,"context_line":""},{"line_number":6544,"context_line":"        # Get bdms by instance uuids"},{"line_number":6545,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.bdms_by_instance_uuid("},{"line_number":6546,"context_line":"            ctx, instance_uuids)"},{"line_number":6547,"context_line":""},{"line_number":6548,"context_line":"        for dom in instance_domains:"},{"line_number":6549,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_9fe39605","line":6546,"range":{"start_line":6545,"start_character":8,"end_line":6546,"end_character":32},"updated":"2015-11-13 02:05:51.000000000","message":"So doing this here instead of in the resource tracker will save us from calling this for drivers that don\u0027t need this. I am however not sure that basing this on the list of instances that the libvirt knows about is a good thing. This opens us up to a number of edge cases with migrations where we will be reporting the wrong things. Actually thinking about this some more this whole way of doing this reporting is broken. We have to report this kind of stuff based on instances and migrations for this to make sense.\n\nThat is kind of sad actually.\n\nSo seeing that this method is hopelessly broken by design, I am not sure this approach actually hurts, but it would be good to have at least a comment or a bug or something stating the \"limitations\" of what is happening here.","commit_id":"fbc404be938465f43f7c51f6f31b79bc33e5963c"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b0a3f0407a989e0469d36ae75f5cebefbd348545","unresolved":false,"context_lines":[{"line_number":6599,"context_line":"        ctx \u003d nova_context.get_admin_context()"},{"line_number":6600,"context_line":"        filters \u003d {\u0027uuid\u0027: instance_uuids}"},{"line_number":6601,"context_line":"        # Get instance object list by uuid filter"},{"line_number":6602,"context_line":"        local_instances \u003d objects.InstanceList.get_by_filters("},{"line_number":6603,"context_line":"            ctx, filters, use_slave\u003dTrue)"},{"line_number":6604,"context_line":""},{"line_number":6605,"context_line":"        # Get bdms by instance uuids"},{"line_number":6606,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.bdms_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_9bdfac0c","line":6603,"range":{"start_line":6602,"start_character":8,"end_line":6603,"end_character":41},"updated":"2015-11-18 13:53:41.000000000","message":"So after looking at this some more - I am not sure I am happy with this - we are introducing another expensive query on every run of update_available_resource for the info we already have (in the resource tracker).\n\nThe only reason we use it is to get the root_device_name from the instance record.","commit_id":"bbfe773609ce33dcc9f0be5f7099c3a90695e3cc"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"46ec8c3bec5fc1227548c1fef578b0b6e010f399","unresolved":false,"context_lines":[{"line_number":6600,"context_line":"        filters \u003d {\u0027uuid\u0027: instance_uuids}"},{"line_number":6601,"context_line":"        # Get instance object list by uuid filter"},{"line_number":6602,"context_line":"        local_instances \u003d objects.InstanceList.get_by_filters("},{"line_number":6603,"context_line":"            ctx, filters, use_slave\u003dTrue)"},{"line_number":6604,"context_line":""},{"line_number":6605,"context_line":"        # Get bdms by instance uuids"},{"line_number":6606,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.bdms_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_08c73f13","line":6603,"in_reply_to":"ba8a016a_9bdfac0c","updated":"2015-11-23 06:53:46.000000000","message":"In order to eliminate this query we need to pass instance information from resource tracker to driver. Which needs to make changes in all the driver\u0027s get_available_resource method to add instances as an additional parameter. \n\nPlease let me know your opinion about the same.","commit_id":"bbfe773609ce33dcc9f0be5f7099c3a90695e3cc"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"07cefd8bffc93cbdf4f601f9fb56db44d3eb67d0","unresolved":false,"context_lines":[{"line_number":6577,"context_line":"        # disk_over_committed_size would differ to the list you would get"},{"line_number":6578,"context_line":"        # in _update_available_resource method for calculating usages based"},{"line_number":6579,"context_line":"        # on instance utilization."},{"line_number":6580,"context_line":"        local_instances \u003d objects.InstanceList.get_by_filters("},{"line_number":6581,"context_line":"            ctx, filters, use_slave\u003dTrue)"},{"line_number":6582,"context_line":""},{"line_number":6583,"context_line":"        # Get bdms by instance uuids"},{"line_number":6584,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.bdms_by_instance_uuid("},{"line_number":6585,"context_line":"            ctx, instance_uuids)"},{"line_number":6586,"context_line":""},{"line_number":6587,"context_line":"        for dom in instance_domains:"},{"line_number":6588,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_5670cb0a","line":6585,"range":{"start_line":6580,"start_character":8,"end_line":6585,"end_character":32},"updated":"2015-12-22 13:05:18.000000000","message":"makes me wonder if we could do this in one query instead of 2.... we can start of this way and see if we can improve later though","commit_id":"64d2bbebcd268ce8c98737f4598e007f61699b49"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"07cefd8bffc93cbdf4f601f9fb56db44d3eb67d0","unresolved":false,"context_lines":[{"line_number":6590,"context_line":"                xml \u003d guest.get_xml_desc()"},{"line_number":6591,"context_line":""},{"line_number":6592,"context_line":"                block_device_info \u003d None"},{"line_number":6593,"context_line":"                for inst in local_instances:"},{"line_number":6594,"context_line":"                    if inst.uuid \u003d\u003d guest.uuid:"},{"line_number":6595,"context_line":"                        # Get block device info for instance"},{"line_number":6596,"context_line":"                        block_device_info \u003d driver.get_block_device_info("},{"line_number":6597,"context_line":"                                                inst, bdms[guest.uuid])"},{"line_number":6598,"context_line":"                        break"},{"line_number":6599,"context_line":""},{"line_number":6600,"context_line":"                disk_infos \u003d self._get_instance_disk_info(guest.name, xml,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_56fbeb78","line":6597,"range":{"start_line":6593,"start_character":16,"end_line":6597,"end_character":71},"updated":"2015-12-22 13:05:18.000000000","message":"So this looks like it might be nicer (not to mention quicker if local instances were a dictionary.","commit_id":"64d2bbebcd268ce8c98737f4598e007f61699b49"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"8f8bb2044b337bcd5a63fce4b4aed3ff39615647","unresolved":false,"context_lines":[{"line_number":6615,"context_line":"                    block_device_info \u003d driver.get_block_device_info("},{"line_number":6616,"context_line":"                        local_instances[guest.uuid], bdms[guest.uuid])"},{"line_number":6617,"context_line":""},{"line_number":6618,"context_line":"                disk_infos \u003d self._get_instance_disk_info(guest.name, xml,"},{"line_number":6619,"context_line":"                                 block_device_info\u003dblock_device_info)"},{"line_number":6620,"context_line":""},{"line_number":6621,"context_line":"                for info in disk_infos:"},{"line_number":6622,"context_line":"                    disk_over_committed_size +\u003d int("}],"source_content_type":"text/x-python","patch_set":7,"id":"1a7b0d38_1863ffdd","line":6619,"range":{"start_line":6618,"start_character":29,"end_line":6619,"end_character":69},"updated":"2015-12-24 11:09:22.000000000","message":"One more thing occured to me that does not have to be done in this particular patch - can be done as a follow on.\n\nWe should probably remove the default None in for block_device_info in the definition of _get_instance_disk_info","commit_id":"e041626b938bd63d11683c69dc852920a9277610"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"65357efebeecff51be45be6bf2e6feabb46fec1d","unresolved":false,"context_lines":[{"line_number":6958,"context_line":"                if guest.uuid in local_instances:"},{"line_number":6959,"context_line":"                    # Get block device info for instance"},{"line_number":6960,"context_line":"                    block_device_info \u003d driver.get_block_device_info("},{"line_number":6961,"context_line":"                        local_instances[guest.uuid], bdms[guest.uuid])"},{"line_number":6962,"context_line":""},{"line_number":6963,"context_line":"                disk_infos \u003d self._get_instance_disk_info(guest.name, xml,"},{"line_number":6964,"context_line":"                                 block_device_info\u003dblock_device_info)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aed3d3a_19e808e2","line":6961,"updated":"2016-02-26 12:55:41.000000000","message":"is it possible there is a key error on bdms here?","commit_id":"1345d0fe1cad5093d49a58b6f0b7f4cb650f61d8"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"a1c66b2a9e845a5f50b56b1a71d96a11dc93aaa3","unresolved":false,"context_lines":[{"line_number":6958,"context_line":"                if guest.uuid in local_instances:"},{"line_number":6959,"context_line":"                    # Get block device info for instance"},{"line_number":6960,"context_line":"                    block_device_info \u003d driver.get_block_device_info("},{"line_number":6961,"context_line":"                        local_instances[guest.uuid], bdms[guest.uuid])"},{"line_number":6962,"context_line":""},{"line_number":6963,"context_line":"                disk_infos \u003d self._get_instance_disk_info(guest.name, xml,"},{"line_number":6964,"context_line":"                                 block_device_info\u003dblock_device_info)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aed3d3a_933850a2","line":6961,"in_reply_to":"9aed3d3a_19e808e2","updated":"2016-02-27 01:49:01.000000000","message":"I have tested this code by launching 2 instances.\n\n1. First instance booted with image (uuid: 8814c47f-b27d-4df5-8d2e-ab5c76e9e49f)\n\n2. Second instance booted with volume (uuid: 91ad338b-7707-47ab-afcf-e2c9635f3be7)\n\nbdms_by_instance_uuid method returns\n- bdms: {\u00278814c47f-b27d-4df5-8d2e-ab5c76e9e49f\u0027: BlockDeviceMappingList(objects\u003d[BlockDeviceMapping(2)]), \u002791ad338b-7707-47ab-afcf-e2c9635f3be7\u0027: BlockDeviceMappingList(objects\u003d[BlockDeviceMapping(1)])}\n\nFor each instance uuid, there is valid object of type BlockDeviceMappingList in bdms dictionary. I have confirmed it doesn\u0027t raise KeyError.\n\nBlock device info for instance uuid:8814c47f-b27d-4df5-8d2e-ab5c76e9e49f\n- block device info {\u0027swap\u0027: None, \u0027root_device_name\u0027: u\u0027/dev/vda\u0027, \u0027ephemerals\u0027: [], \u0027block_device_mapping\u0027: []}\n\nBlock device info for instance uuid:91ad338b-7707-47ab-afcf-e2c9635f3be7\n- block device info {\u0027swap\u0027: None, \u0027root_device_name\u0027: u\u0027/dev/vda\u0027, \u0027ephemerals\u0027: [], \u0027block_device_mapping\u0027: [{\u0027guest_format\u0027: None, \u0027boot_index\u0027: 0, \u0027mount_device\u0027: u\u0027/dev/vda\u0027, \u0027connection_info\u0027: {u\u0027driver_volume_type\u0027: u\u0027iscsi\u0027, u\u0027serial\u0027: u\u0027de778790-2f3a-4551-8096-9414aca19ba5\u0027, u\u0027data\u0027: {u\u0027device_path\u0027: u\u0027/dev/disk/by-path/ip-172.16.82.174:3260-iscsi-iqn.2010-10.org.openstack:volume-de778790-2f3a-4551-8096-9414aca19ba5-lun-1\u0027, u\u0027target_discovered\u0027: False, u\u0027encrypted\u0027: False, u\u0027qos_specs\u0027: None, u\u0027target_iqn\u0027: u\u0027iqn.2010-10.org.openstack:volume-de778790-2f3a-4551-8096-9414aca19ba5\u0027, u\u0027target_portal\u0027: u\u0027172.16.82.174:3260\u0027, u\u0027volume_id\u0027: u\u0027de778790-2f3a-4551-8096-9414aca19ba5\u0027, u\u0027auth_password\u0027: u\u0027g4bELNnbXDsP2uDm\u0027, u\u0027target_lun\u0027: 1, u\u0027access_mode\u0027: u\u0027rw\u0027, u\u0027auth_username\u0027: u\u0027XP4XTqcP3Lm9c5cRgzW8\u0027, u\u0027auth_method\u0027: u\u0027CHAP\u0027}}, \u0027disk_bus\u0027: u\u0027virtio\u0027, \u0027device_type\u0027: u\u0027disk\u0027, \u0027delete_on_termination\u0027: False}]}","commit_id":"1345d0fe1cad5093d49a58b6f0b7f4cb650f61d8"}]}
