)]}'
{"nova/virt/libvirt/driver.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e69481cf8088b0b5f2da7878d37a15f3b4136ffc","unresolved":false,"context_lines":[{"line_number":6927,"context_line":"                    doc.findall(\u0027.//devices/%s/driver\u0027 % device_type),"},{"line_number":6928,"context_line":"                    doc.findall(\u0027.//devices/%s/target\u0027 % device_type))"},{"line_number":6929,"context_line":""},{"line_number":6930,"context_line":"        if (CONF.libvirt.virt_type \u003d\u003d \u0027parallels\u0027 and"},{"line_number":6931,"context_line":"            doc.find(\u0027os/type\u0027).text \u003d\u003d fields.VMMode.EXE):"},{"line_number":6932,"context_line":"            node_type \u003d \u0027filesystem\u0027"},{"line_number":6933,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da4df55a_d992104b","side":"PARENT","line":6930,"updated":"2016-12-23 15:25:29.000000000","message":"On one of you previous patches I saw something like that you also parse the virt_type from the domain XML, I guess it\u0027s something we could do since we should never be in a case where the domain is running a different virt-type than the compute node.","commit_id":"2ae9cc98f27d2f79f8d033b9635b45e94b0a9dec"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"24942876bf5e9e8582d8f1b8d20c6fab51ac340a","unresolved":false,"context_lines":[{"line_number":6927,"context_line":"                    doc.findall(\u0027.//devices/%s/driver\u0027 % device_type),"},{"line_number":6928,"context_line":"                    doc.findall(\u0027.//devices/%s/target\u0027 % device_type))"},{"line_number":6929,"context_line":""},{"line_number":6930,"context_line":"        if (CONF.libvirt.virt_type \u003d\u003d \u0027parallels\u0027 and"},{"line_number":6931,"context_line":"            doc.find(\u0027os/type\u0027).text \u003d\u003d fields.VMMode.EXE):"},{"line_number":6932,"context_line":"            node_type \u003d \u0027filesystem\u0027"},{"line_number":6933,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da4df55a_547347e7","side":"PARENT","line":6930,"in_reply_to":"da4df55a_d992104b","updated":"2016-12-23 16:25:31.000000000","message":"I thought to use guest_config.virt_type, but just didn\u0027t want to change logic (even formally) if no one ask it. I\u0027ll do this. I believe it\u0027d be more consistency.","commit_id":"2ae9cc98f27d2f79f8d033b9635b45e94b0a9dec"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"24942876bf5e9e8582d8f1b8d20c6fab51ac340a","unresolved":false,"context_lines":[{"line_number":2359,"context_line":"        #             regenerate raw backend images, however, so when it"},{"line_number":2360,"context_line":"        #             does we need to (re)generate the xml after the images"},{"line_number":2361,"context_line":"        #             are in place."},{"line_number":2362,"context_line":"        xml \u003d self._get_guest_xml(context, instance, network_info, disk_info,"},{"line_number":2363,"context_line":"                                  instance.image_meta,"},{"line_number":2364,"context_line":"                                  block_device_info\u003dblock_device_info)"},{"line_number":2365,"context_line":""},{"line_number":2366,"context_line":"        # NOTE(mdbooth): context.auth_token will not be set when we call"},{"line_number":2367,"context_line":"        #                _hard_reboot from resume_state_on_host_boot()"},{"line_number":2368,"context_line":"        if context.auth_token is not None:"},{"line_number":2369,"context_line":"            # NOTE (rmk): Re-populate any missing backing files."},{"line_number":2370,"context_line":"            backing_disk_info \u003d self._get_instance_disk_info_from_xml("},{"line_number":2371,"context_line":"                instance.name, xml, block_device_info)"},{"line_number":2372,"context_line":"            self._create_images_and_backing(context, instance, instance_dir,"},{"line_number":2373,"context_line":"                                            backing_disk_info)"},{"line_number":2374,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da4df55a_54918751","line":2371,"range":{"start_line":2362,"start_character":0,"end_line":2371,"end_character":54},"updated":"2016-12-23 16:25:31.000000000","message":"E.g. here no libvrit domain exists on the host.","commit_id":"1687c964b72a31eba1adb0ceedf72da2964b729c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"dace1b70b520944add367932af1f5a9679c0adec","unresolved":false,"context_lines":[{"line_number":2368,"context_line":"        if context.auth_token is not None:"},{"line_number":2369,"context_line":"            # NOTE (rmk): Re-populate any missing backing files."},{"line_number":2370,"context_line":"            backing_disk_info \u003d self._get_instance_disk_info_from_xml("},{"line_number":2371,"context_line":"                instance.name, xml, block_device_info)"},{"line_number":2372,"context_line":"            self._create_images_and_backing(context, instance, instance_dir,"},{"line_number":2373,"context_line":"                                            backing_disk_info)"},{"line_number":2374,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da4df55a_069c11bf","line":2371,"in_reply_to":"da4df55a_54918751","updated":"2016-12-26 08:38:07.000000000","message":"Yes I know that, but in \u0027get_instance_disk_info\u0027 we retrieve the guest object. My point would be to update \u0027_get_instance_disk\u0027 to only pass this object and block_device_info which are the only parameters necessary here.\n\nI don\u0027t think we should worry about mbooth work, as you said it\u0027s far to be merged and your work in incremental it should be easy for mat to merge conflicts.","commit_id":"1687c964b72a31eba1adb0ceedf72da2964b729c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e69481cf8088b0b5f2da7878d37a15f3b4136ffc","unresolved":false,"context_lines":[{"line_number":6919,"context_line":"            volume_devices.add(disk_dev)"},{"line_number":6920,"context_line":""},{"line_number":6921,"context_line":"        disk_info \u003d []"},{"line_number":6922,"context_line":"        guest_config \u003d vconfig.LibvirtConfigGuest()"},{"line_number":6923,"context_line":"        guest_config.parse_str(xml)"},{"line_number":6924,"context_line":""},{"line_number":6925,"context_line":"        if (CONF.libvirt.virt_type \u003d\u003d \u0027parallels\u0027 and"}],"source_content_type":"text/x-python","patch_set":3,"id":"da4df55a_f98274ff","line":6922,"updated":"2016-12-23 15:25:29.000000000","message":"Hum So I don\u0027t think we should continue to pass XML between methods We should just pass a \u0027guest\u0027 object.\n\nSo the prototype of the method \u0027_get_instance_disk_info\u0027 should look more like:\n\n  _get_instance_disk_info(guest, block_device_info)\n\nThen to retrieve the guest_config I would prefer to see something like:\n\n  guest_config \u003d guest.get_config()\n\nSo that method is going to return a LibvirtConfigGuest object based on it\u0027s domain XML","commit_id":"1687c964b72a31eba1adb0ceedf72da2964b729c"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"40ed51826b4f0e7a542ca5a2598967d60f2ea0ba","unresolved":false,"context_lines":[{"line_number":6919,"context_line":"            volume_devices.add(disk_dev)"},{"line_number":6920,"context_line":""},{"line_number":6921,"context_line":"        disk_info \u003d []"},{"line_number":6922,"context_line":"        guest_config \u003d vconfig.LibvirtConfigGuest()"},{"line_number":6923,"context_line":"        guest_config.parse_str(xml)"},{"line_number":6924,"context_line":""},{"line_number":6925,"context_line":"        if (CONF.libvirt.virt_type \u003d\u003d \u0027parallels\u0027 and"}],"source_content_type":"text/x-python","patch_set":3,"id":"da4df55a_7345ae6e","line":6922,"in_reply_to":"da4df55a_f98274ff","updated":"2016-12-25 08:29:29.000000000","message":"Done partially","commit_id":"1687c964b72a31eba1adb0ceedf72da2964b729c"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"24942876bf5e9e8582d8f1b8d20c6fab51ac340a","unresolved":false,"context_lines":[{"line_number":6919,"context_line":"            volume_devices.add(disk_dev)"},{"line_number":6920,"context_line":""},{"line_number":6921,"context_line":"        disk_info \u003d []"},{"line_number":6922,"context_line":"        guest_config \u003d vconfig.LibvirtConfigGuest()"},{"line_number":6923,"context_line":"        guest_config.parse_str(xml)"},{"line_number":6924,"context_line":""},{"line_number":6925,"context_line":"        if (CONF.libvirt.virt_type \u003d\u003d \u0027parallels\u0027 and"}],"source_content_type":"text/x-python","patch_set":3,"id":"da4df55a_b412b3b2","line":6922,"in_reply_to":"da4df55a_f98274ff","updated":"2016-12-23 16:25:31.000000000","message":"We cannot pass guest to the method at the moment. See the comment on L2371.\n\nThis may be changed with mdbooth refactoring [1]. But it\u0027s far from merging, and still calls _get_instance_disk_info (which probably might be changed).\n\n[1] https://review.openstack.org/#/c/337789/10/nova/virt/libvirt/driver.py","commit_id":"1687c964b72a31eba1adb0ceedf72da2964b729c"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"46e12aaa916fa01859f47adf543137417676d082","unresolved":false,"context_lines":[{"line_number":2359,"context_line":"        #             regenerate raw backend images, however, so when it"},{"line_number":2360,"context_line":"        #             does we need to (re)generate the xml after the images"},{"line_number":2361,"context_line":"        #             are in place."},{"line_number":2362,"context_line":"        xml \u003d self._get_guest_xml(context, instance, network_info, disk_info,"},{"line_number":2363,"context_line":"                                  instance.image_meta,"},{"line_number":2364,"context_line":"                                  block_device_info\u003dblock_device_info)"},{"line_number":2365,"context_line":""},{"line_number":2366,"context_line":"        # NOTE(mdbooth): context.auth_token will not be set when we call"},{"line_number":2367,"context_line":"        #                _hard_reboot from resume_state_on_host_boot()"},{"line_number":2368,"context_line":"        if context.auth_token is not None:"},{"line_number":2369,"context_line":"            # NOTE (rmk): Re-populate any missing backing files."},{"line_number":2370,"context_line":"            config \u003d vconfig.LibvirtConfigGuest()"},{"line_number":2371,"context_line":"            config.parse_str(xml)"},{"line_number":2372,"context_line":"            backing_disk_info \u003d self._get_instance_disk_info_from_config("},{"line_number":2373,"context_line":"                config, block_device_info)"},{"line_number":2374,"context_line":"            self._create_images_and_backing(context, instance, instance_dir,"},{"line_number":2375,"context_line":"                                            backing_disk_info)"},{"line_number":2376,"context_line":""},{"line_number":2377,"context_line":"        # Initialize all the necessary networking, block devices and"},{"line_number":2378,"context_line":"        # start the instance."},{"line_number":2379,"context_line":"        self._create_domain_and_network(context, xml, instance, network_info,"},{"line_number":2380,"context_line":"                                        block_device_info\u003dblock_device_info,"},{"line_number":2381,"context_line":"                                        reboot\u003dTrue,"},{"line_number":2382,"context_line":"                                        vifs_already_plugged\u003dTrue)"},{"line_number":2383,"context_line":"        self._prepare_pci_devices_for_use("},{"line_number":2384,"context_line":"            pci_manager.get_instance_pci_devs(instance, \u0027all\u0027))"},{"line_number":2385,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da4df55a_845d587b","line":2382,"range":{"start_line":2362,"start_character":0,"end_line":2382,"end_character":66},"updated":"2016-12-26 10:37:56.000000000","message":"Here we create the domain, which does not exist yet. Neigther guest object. To create the domain properly we use results of _get_instance_disk_info_from_xxx. This means that we cannot pass in guest object into _get_instance_disk_info.","commit_id":"cf2f7202d3794f23407603aa44b154c48e74f7c0"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ac9f21ecab17dec73a2226874a82984a8051ed4a","unresolved":false,"context_lines":[{"line_number":7013,"context_line":"                     instance\u003dinstance)"},{"line_number":7014,"context_line":"            raise exception.InstanceNotFound(instance_id\u003dinstance.uuid)"},{"line_number":7015,"context_line":""},{"line_number":7016,"context_line":"        return self._get_instance_disk_info_from_config(config,"},{"line_number":7017,"context_line":"                                                        block_device_info)"},{"line_number":7018,"context_line":""},{"line_number":7019,"context_line":"    def get_instance_disk_info(self, instance,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da4df55a_a6f505cc","line":7016,"updated":"2016-12-26 08:45:29.000000000","message":"Hum... So I would have see the whole object passed to this method. actually i\u0027m not really sure of why we have this method... both could be merged","commit_id":"cf2f7202d3794f23407603aa44b154c48e74f7c0"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"46e12aaa916fa01859f47adf543137417676d082","unresolved":false,"context_lines":[{"line_number":7013,"context_line":"                     instance\u003dinstance)"},{"line_number":7014,"context_line":"            raise exception.InstanceNotFound(instance_id\u003dinstance.uuid)"},{"line_number":7015,"context_line":""},{"line_number":7016,"context_line":"        return self._get_instance_disk_info_from_config(config,"},{"line_number":7017,"context_line":"                                                        block_device_info)"},{"line_number":7018,"context_line":""},{"line_number":7019,"context_line":"    def get_instance_disk_info(self, instance,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da4df55a_c453e069","line":7016,"in_reply_to":"da4df55a_a6f505cc","updated":"2016-12-26 10:37:56.000000000","message":"See comment at L2382 for the explanation.\n\nIf we refactor _hard_reboot to get disks to ensure backing file in other way, we\u0027ll may merge these two methods.","commit_id":"cf2f7202d3794f23407603aa44b154c48e74f7c0"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ac9f21ecab17dec73a2226874a82984a8051ed4a","unresolved":false,"context_lines":[{"line_number":7054,"context_line":"        for dom in instance_domains:"},{"line_number":7055,"context_line":"            try:"},{"line_number":7056,"context_line":"                guest \u003d libvirt_guest.Guest(dom)"},{"line_number":7057,"context_line":"                config \u003d guest.get_config()"},{"line_number":7058,"context_line":""},{"line_number":7059,"context_line":"                block_device_info \u003d None"},{"line_number":7060,"context_line":"                if guest.uuid in local_instances \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"da4df55a_e651cdd9","line":7057,"updated":"2016-12-26 08:45:29.000000000","message":"I think you should have these changes in a separate patches","commit_id":"cf2f7202d3794f23407603aa44b154c48e74f7c0"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"46e12aaa916fa01859f47adf543137417676d082","unresolved":false,"context_lines":[{"line_number":7054,"context_line":"        for dom in instance_domains:"},{"line_number":7055,"context_line":"            try:"},{"line_number":7056,"context_line":"                guest \u003d libvirt_guest.Guest(dom)"},{"line_number":7057,"context_line":"                config \u003d guest.get_config()"},{"line_number":7058,"context_line":""},{"line_number":7059,"context_line":"                block_device_info \u003d None"},{"line_number":7060,"context_line":"                if guest.uuid in local_instances \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"da4df55a_c47680d6","line":7057,"in_reply_to":"da4df55a_e651cdd9","updated":"2016-12-26 10:37:56.000000000","message":"Since interface of _get_instance_disk_info_from_xxx is changed, we must to invoke the method with proper arguments. This is why the change is here. Otherwise this code will not work.","commit_id":"cf2f7202d3794f23407603aa44b154c48e74f7c0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4a071409d426a6ea02893a09a0101fc4dd3544ff","unresolved":false,"context_lines":[{"line_number":6940,"context_line":""},{"line_number":6941,"context_line":"        for device in guest_config.devices:"},{"line_number":6942,"context_line":"            if device.root_name !\u003d node_type:"},{"line_number":6943,"context_line":"                continue"},{"line_number":6944,"context_line":"            disk_type \u003d device.source_type"},{"line_number":6945,"context_line":"            if device.root_name \u003d\u003d \u0027filesystem\u0027:"},{"line_number":6946,"context_line":"                target \u003d device.target_dir"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_07a2c34b","line":6943,"updated":"2017-03-28 09:23:20.000000000","message":"Should we not have a debug log, a bit like the one on line 6963? Or is this just a way we check if there are any disk in the devices list?","commit_id":"914bfca55a7faeb1a0a92733083b3d5dce807616"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"6a593b1d516c032156605c92f74a3adc17c07b3a","unresolved":false,"context_lines":[{"line_number":6940,"context_line":""},{"line_number":6941,"context_line":"        for device in guest_config.devices:"},{"line_number":6942,"context_line":"            if device.root_name !\u003d node_type:"},{"line_number":6943,"context_line":"                continue"},{"line_number":6944,"context_line":"            disk_type \u003d device.source_type"},{"line_number":6945,"context_line":"            if device.root_name \u003d\u003d \u0027filesystem\u0027:"},{"line_number":6946,"context_line":"                target \u003d device.target_dir"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ffa3b31_288da7d2","line":6943,"in_reply_to":"ffe62b97_07a2c34b","updated":"2017-04-19 17:12:22.000000000","message":"This is a way to filter out devices which cannot be disks. Previously this was done with doc.findall function, which did not log rejected nodes.","commit_id":"914bfca55a7faeb1a0a92733083b3d5dce807616"}]}
