)]}'
{"nova/compute/api.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"559a60109e354953eec1325849c36e4b2292d9cd","unresolved":false,"context_lines":[{"line_number":541,"context_line":""},{"line_number":542,"context_line":"        return {"},{"line_number":543,"context_line":"            \u0027os_type\u0027: image_properties.get(\u0027os_type\u0027),"},{"line_number":544,"context_line":"            \u0027os_loader\u0027: image_properties.get(\u0027os_loader\u0027),"},{"line_number":545,"context_line":"            \u0027architecture\u0027: image_properties.get(\u0027architecture\u0027),"},{"line_number":546,"context_line":"            \u0027vm_mode\u0027: image_properties.get(\u0027vm_mode\u0027),"},{"line_number":547,"context_line":"            \u0027auto_disk_config\u0027: auto_disk_config"}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_b2f07dfe","line":544,"range":{"start_line":544,"start_character":12,"end_line":544,"end_character":59},"updated":"2016-01-14 14:15:36.000000000","message":"Sorry, I didn\u0027t get why we need change this. Finally this will update to instance obj, but there isn\u0027t any field for os_loader","commit_id":"5614e4e60f9303ec3f211b7c5251ac83c54b9779"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7efef97d5db5c4a7d57c0339cb12dc9fa7b661c8","unresolved":false,"context_lines":[{"line_number":2633,"context_line":"                              vconfig.LibvirtConfigGuestConsole)"},{"line_number":2634,"context_line":""},{"line_number":2635,"context_line":"    @mock.patch(\u0027os.path.exists\u0027, return_value\u003dTrue)"},{"line_number":2636,"context_line":"    def test_has_uefi_support(self, mock_has_version):"},{"line_number":2637,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":2638,"context_line":"        with mock.patch.object(drvr._host, \u0027has_min_version\u0027, return_value\u003dFalse):"},{"line_number":2639,"context_line":"            self.assertFalse(drvr._has_uefi_support())"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6ed579_e35f05e3","line":2636,"range":{"start_line":2636,"start_character":4,"end_line":2636,"end_character":54},"updated":"2016-01-14 14:55:36.000000000","message":"Can you separated this into three unittests? This is more clear for people to know which one is failed.","commit_id":"84841e6a123e5f4062ed02f63bb51b51dd1f509b"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"8e86f81c534f20ae736461c66957b20448a72120","unresolved":false,"context_lines":[{"line_number":301,"context_line":"    libvirt_firewall.__name__,"},{"line_number":302,"context_line":"    libvirt_firewall.IptablesFirewallDriver.__name__)"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"DEFAULT_UEFI_LOADER_PATH \u003d \"/usr/share/qemu/OVMF.fd\""},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"MAX_CONSOLE_BYTES \u003d 100 * units.Ki"},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_aff95682","line":304,"updated":"2016-01-02 02:14:06.000000000","message":"Hi, qiaowei , I have one question:\nwhy not make this as an configuration and give it a default value?","commit_id":"7bbd803e2987d6b1f1a5902c9a1445d90e3f1ae8"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"8e86f81c534f20ae736461c66957b20448a72120","unresolved":false,"context_lines":[{"line_number":3202,"context_line":"        hw_firmware_type \u003d image_meta.properties.get(\u0027hw_firmware_type\u0027)"},{"line_number":3203,"context_line":"        if hw_firmware_type \u003d\u003d fields.FirmwareType.UEFI:"},{"line_number":3204,"context_line":"            return True"},{"line_number":3205,"context_line":""},{"line_number":3206,"context_line":"    def _get_guest_cpu_model_config(self, image_meta):"},{"line_number":3207,"context_line":"        mode \u003d CONF.libvirt.cpu_mode"},{"line_number":3208,"context_line":"        model \u003d CONF.libvirt.cpu_model"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_8feed2b2","line":3205,"updated":"2016-01-02 02:14:06.000000000","message":"return False instead of return a None value.","commit_id":"7bbd803e2987d6b1f1a5902c9a1445d90e3f1ae8"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"d6a6a3f25d0f519f92843013aab0000dec8066a7","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    libvirt_firewall.__name__,"},{"line_number":303,"context_line":"    libvirt_firewall.IptablesFirewallDriver.__name__)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"DEFAULT_UEFI_LOADER_PATH \u003d \"/usr/share/qemu/OVMF.fd\""},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"MAX_CONSOLE_BYTES \u003d 100 * units.Ki"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_d9691f8d","line":305,"range":{"start_line":305,"start_character":29,"end_line":305,"end_character":32},"updated":"2016-01-12 13:36:46.000000000","message":"We should make that variable a dict, mapping architecture -\u003e image file, since we need to point to AVMF.fd for that arch","commit_id":"2ea727c45d774aa04e42a7cbab7581c6cb8cb2e7"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"d6a6a3f25d0f519f92843013aab0000dec8066a7","unresolved":false,"context_lines":[{"line_number":4078,"context_line":""},{"line_number":4079,"context_line":"    def _has_uefi_support(self):"},{"line_number":4080,"context_line":"        # This means that the host can support uefi booting for guests"},{"line_number":4081,"context_line":"        supported_archs \u003d [arch.X86_64]"},{"line_number":4082,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4083,"context_line":"        return ((caps.host.cpu.arch in supported_archs) and"},{"line_number":4084,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_UEFI_VERSION) and"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_59468f24","line":4081,"range":{"start_line":4081,"start_character":38,"end_line":4081,"end_character":39},"updated":"2016-01-12 13:36:46.000000000","message":"arm64 supports UEFI too","commit_id":"2ea727c45d774aa04e42a7cbab7581c6cb8cb2e7"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"d6a6a3f25d0f519f92843013aab0000dec8066a7","unresolved":false,"context_lines":[{"line_number":4099,"context_line":"                LOG.warn(_LW(\"It\u0027s without some kind of functional testing \""},{"line_number":4100,"context_line":"                             \"and therefore considered experimental.\"))"},{"line_number":4101,"context_line":"                guest.os_loader \u003d DEFAULT_UEFI_LOADER_PATH"},{"line_number":4102,"context_line":"                guest.os_loader_type \u003d \"pflash\""},{"line_number":4103,"context_line":"            guest.os_mach_type \u003d self._get_machine_type(image_meta, caps)"},{"line_number":4104,"context_line":"            if image_meta.properties.get(\u0027hw_boot_menu\u0027) is None:"},{"line_number":4105,"context_line":"                guest.os_bootmenu \u003d strutils.bool_from_string("}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_7937d3b0","line":4102,"range":{"start_line":4102,"start_character":46,"end_line":4102,"end_character":47},"updated":"2016-01-12 13:36:46.000000000","message":"If uefi is not supported by the host we must report an exception. We should not silently carry on with BIOS mode if the image requested UEFI as it likely won\u0027t work.\n\nAlso, that warning should only be issued once, not every time a guest is booting.","commit_id":"2ea727c45d774aa04e42a7cbab7581c6cb8cb2e7"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"175003d22eea847531952e274a6127bfdc58f48a","unresolved":false,"context_lines":[{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        if self._has_uefi_support():"},{"line_number":649,"context_line":"            LOG.warn(_LW(\"uefi support is without some kind of functional \""},{"line_number":650,"context_line":"                         \"testing and therefore considered experimental.\"))"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    def _do_migration_flag_warnings(self):"},{"line_number":653,"context_line":"        block_migration_flag \u003d \u0027VIR_MIGRATE_NON_SHARED_INC\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_0cdf2e6a","line":650,"range":{"start_line":650,"start_character":40,"end_line":650,"end_character":41},"updated":"2016-01-13 14:54:47.000000000","message":"This is not the right place for the warning - it\u0027ll be issued every host start, even if no one actually uses UEFI. You need to put it back where you originally had it, but set a global variable to record whether you\u0027ve issued the warning before or not.","commit_id":"c95ab17eb1d2cce9eeb444e7fbdd787afeaf44cc"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"175003d22eea847531952e274a6127bfdc58f48a","unresolved":false,"context_lines":[{"line_number":3253,"context_line":"            CONF.libvirt.virt_type \u003d\u003d \"qemu\"):"},{"line_number":3254,"context_line":"            if mode is None:"},{"line_number":3255,"context_line":"                mode \u003d \"host-model\""},{"line_number":3256,"context_line":"            if self._check_guest_cpu_mode_with_image(image_meta):"},{"line_number":3257,"context_line":"                mode \u003d \"host-model\""},{"line_number":3258,"context_line":"            if mode \u003d\u003d \"none\":"},{"line_number":3259,"context_line":"                return vconfig.LibvirtConfigGuestCPU()"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_ec689a89","line":3256,"range":{"start_line":3256,"start_character":63,"end_line":3256,"end_character":65},"updated":"2016-01-13 14:54:47.000000000","message":"Why are you changing this code ?  There is no direct dependency between CPU configuration and BIOS choice, so you shouldn\u0027t need to change this.","commit_id":"c95ab17eb1d2cce9eeb444e7fbdd787afeaf44cc"},{"author":{"_account_id":9581,"name":"Ren Qiaowei","email":"qiaowei.ren@intel.com","username":"qiaowei"},"change_message_id":"d64bacb28f62951cc7f16bdfb1951da0dbf679af","unresolved":false,"context_lines":[{"line_number":3253,"context_line":"            CONF.libvirt.virt_type \u003d\u003d \"qemu\"):"},{"line_number":3254,"context_line":"            if mode is None:"},{"line_number":3255,"context_line":"                mode \u003d \"host-model\""},{"line_number":3256,"context_line":"            if self._check_guest_cpu_mode_with_image(image_meta):"},{"line_number":3257,"context_line":"                mode \u003d \"host-model\""},{"line_number":3258,"context_line":"            if mode \u003d\u003d \"none\":"},{"line_number":3259,"context_line":"                return vconfig.LibvirtConfigGuestCPU()"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_ca2fb6f4","line":3256,"range":{"start_line":3256,"start_character":63,"end_line":3256,"end_character":65},"in_reply_to":"da6ed579_2acc5269","updated":"2016-01-13 15:28:18.000000000","message":"Ok.","commit_id":"c95ab17eb1d2cce9eeb444e7fbdd787afeaf44cc"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"652d17cce5e336b37a00a62b5f74df842aa44d47","unresolved":false,"context_lines":[{"line_number":3253,"context_line":"            CONF.libvirt.virt_type \u003d\u003d \"qemu\"):"},{"line_number":3254,"context_line":"            if mode is None:"},{"line_number":3255,"context_line":"                mode \u003d \"host-model\""},{"line_number":3256,"context_line":"            if self._check_guest_cpu_mode_with_image(image_meta):"},{"line_number":3257,"context_line":"                mode \u003d \"host-model\""},{"line_number":3258,"context_line":"            if mode \u003d\u003d \"none\":"},{"line_number":3259,"context_line":"                return vconfig.LibvirtConfigGuestCPU()"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_2acc5269","line":3256,"range":{"start_line":3256,"start_character":63,"end_line":3256,"end_character":65},"in_reply_to":"da6ed579_6f87bcd7","updated":"2016-01-13 15:26:46.000000000","message":"If that\u0027s true, it sounds like a firmware and/or guest bug to me. So please remove this.","commit_id":"c95ab17eb1d2cce9eeb444e7fbdd787afeaf44cc"},{"author":{"_account_id":9581,"name":"Ren Qiaowei","email":"qiaowei.ren@intel.com","username":"qiaowei"},"change_message_id":"906d927ce83443942da5642555f7f1c49b964268","unresolved":false,"context_lines":[{"line_number":3253,"context_line":"            CONF.libvirt.virt_type \u003d\u003d \"qemu\"):"},{"line_number":3254,"context_line":"            if mode is None:"},{"line_number":3255,"context_line":"                mode \u003d \"host-model\""},{"line_number":3256,"context_line":"            if self._check_guest_cpu_mode_with_image(image_meta):"},{"line_number":3257,"context_line":"                mode \u003d \"host-model\""},{"line_number":3258,"context_line":"            if mode \u003d\u003d \"none\":"},{"line_number":3259,"context_line":"                return vconfig.LibvirtConfigGuestCPU()"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_6f87bcd7","line":3256,"range":{"start_line":3256,"start_character":63,"end_line":3256,"end_character":65},"in_reply_to":"da6ed579_ec689a89","updated":"2016-01-13 15:18:59.000000000","message":"I guess so, but I did some testing and the results show that only with \"host-model\" the uefi booting could be successful.","commit_id":"c95ab17eb1d2cce9eeb444e7fbdd787afeaf44cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"17592d490f8a7c22972355823f142859d0c5a9bf","unresolved":false,"context_lines":[{"line_number":4135,"context_line":"                guest.os_smbios \u003d vconfig.LibvirtConfigGuestSMBIOS()"},{"line_number":4136,"context_line":"            hw_firmware_type \u003d image_meta.properties.get(\u0027hw_firmware_type\u0027)"},{"line_number":4137,"context_line":"            if hw_firmware_type \u003d\u003d fields.FirmwareType.UEFI:"},{"line_number":4138,"context_line":"                if self._has_uefi_support():"},{"line_number":4139,"context_line":"                    guest.os_loader \u003d DEFAULT_UEFI_LOADER_PATH["},{"line_number":4140,"context_line":"                        caps.host.cpu.arch]"},{"line_number":4141,"context_line":"                    guest.os_loader_type \u003d \"pflash\""}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_bb187a1f","line":4138,"range":{"start_line":4138,"start_character":16,"end_line":4138,"end_character":44},"updated":"2016-01-14 01:52:49.000000000","message":"I think you log the experimental warning and set the global flag if this is true (in this block).","commit_id":"c95ab17eb1d2cce9eeb444e7fbdd787afeaf44cc"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0926f8325c7cb4a8460d876a01c94b764bf20fd1","unresolved":false,"context_lines":[{"line_number":309,"context_line":"    libvirt_firewall.__name__,"},{"line_number":310,"context_line":"    libvirt_firewall.IptablesFirewallDriver.__name__)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"DEFAULT_UEFI_LOADER_PATH \u003d {"},{"line_number":313,"context_line":"    \"x86_64\": \"/usr/share/OVMF/OVMF_CODE.fd\","},{"line_number":314,"context_line":"    \"aarch64\": \"/usr/share/AAVMF/AAVMF_CODE.fd\""},{"line_number":315,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_ce0ae578","line":312,"updated":"2016-01-15 15:23:10.000000000","message":"I remember talk of having a search list, rather than having this hard coded? But we can do that in a follow up patch.","commit_id":"67c2777817e462f7586d511043088229b6d1ae00"}]}
