)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"bfb4ede7896b10200f5b9c9b24a9a0fdf8651a03","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add support for setting boot order in Hyper-V"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds support for setting boot order for Hyper-V instances."},{"line_number":10,"context_line":"Appropriate wmi calls were added to vmutils classes."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Unit tests were updated accordingly."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bab6814e_a492ba49","line":10,"updated":"2016-05-23 20:38:52.000000000","message":"There are no more WMI stuff here. :)","commit_id":"bd3746e03ead81def7293909ec432663e2b30a7f"},{"author":{"_account_id":12604,"name":"Adelina Tuvenie","email":"atuvenie@cloudbasesolutions.com","username":"atuvenie"},"change_message_id":"569d0005f3960fa9b5749af5a37241d6ed3476e6","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add support for setting boot order in Hyper-V"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds support for setting boot order for Hyper-V instances."},{"line_number":10,"context_line":"Appropriate wmi calls were added to vmutils classes."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Unit tests were updated accordingly."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bab6814e_33eb95b2","line":10,"in_reply_to":"bab6814e_a492ba49","updated":"2016-05-24 10:39:24.000000000","message":"Done","commit_id":"bd3746e03ead81def7293909ec432663e2b30a7f"}],"nova/tests/unit/virt/hyperv/test_block_device_manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"08326e80d6284349dbf0dec49ab803ead96f78b9","unresolved":false,"context_lines":[{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        expected_res \u003d [mock.sentinel.FAKE_ROOT_PATH,"},{"line_number":425,"context_line":"                        mock.sentinel.FAKE_CONN_INFO,"},{"line_number":426,"context_line":"                        mock.sentinel.FAKE_EPH_PATH1,"},{"line_number":427,"context_line":"                        mock.sentinel.FAKE_EPH_PATH2]"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"        res \u003d self._bdman._get_boot_order_gen2(fake_bdi)"},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da4df55a_3f7c77b4","line":427,"range":{"start_line":426,"start_character":24,"end_line":427,"end_character":52},"updated":"2016-12-28 22:59:17.000000000","message":"OK the ephemerals come after the volume because of the boot index and the sort order on the indexes. Makes sense.","commit_id":"907a45ff8c2de9e23016b5d0a514e629a70c82ac"}],"nova/virt/hyperv/block_device_manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"08326e80d6284349dbf0dec49ab803ead96f78b9","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        self._sort_by_boot_order(boot_order)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        return [self._volops.get_mounted_disk_path_from_volume("},{"line_number":259,"context_line":"                boot_dev[\u0027connection_info\u0027]) if boot_dev.get(\u0027connection_info\u0027)"},{"line_number":260,"context_line":"                else boot_dev[\u0027path\u0027] for boot_dev in boot_order]"}],"source_content_type":"text/x-python","patch_set":10,"id":"da4df55a_1faa5319","line":260,"range":{"start_line":258,"start_character":8,"end_line":260,"end_character":65},"updated":"2016-12-28 22:59:17.000000000","message":"style nit: I could do without all of the inline logic and list comprehension here, it\u0027s not fun to read, I\u0027d prefer to see a for loop building the list, but that\u0027s just me.","commit_id":"907a45ff8c2de9e23016b5d0a514e629a70c82ac"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"5e81d25739e7667e586ece1a916b13ce2fb9cb57","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        self._sort_by_boot_order(boot_order)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        return [self._volops.get_mounted_disk_path_from_volume("},{"line_number":259,"context_line":"                boot_dev[\u0027connection_info\u0027]) if boot_dev.get(\u0027connection_info\u0027)"},{"line_number":260,"context_line":"                else boot_dev[\u0027path\u0027] for boot_dev in boot_order]"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_affd123c","line":260,"range":{"start_line":258,"start_character":8,"end_line":260,"end_character":65},"in_reply_to":"da4df55a_1faa5319","updated":"2017-01-03 14:57:09.000000000","message":"Done","commit_id":"907a45ff8c2de9e23016b5d0a514e629a70c82ac"}],"nova/virt/hyperv/vmops.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"08326e80d6284349dbf0dec49ab803ead96f78b9","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    def set_boot_order(self, instance_name, vm_gen, block_device_info):"},{"line_number":273,"context_line":"        boot_order \u003d self._block_dev_man.get_boot_order("},{"line_number":274,"context_line":"            vm_gen, block_device_info)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        self._vmutils.set_boot_order(instance_name, boot_order)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    @check_admin_permissions"}],"source_content_type":"text/x-python","patch_set":10,"id":"da4df55a_3f72b711","line":275,"updated":"2016-12-28 22:59:17.000000000","message":"Probably not a bad idea to log something at debug for the boot order that\u0027s going to be used on this VM.","commit_id":"907a45ff8c2de9e23016b5d0a514e629a70c82ac"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"5e81d25739e7667e586ece1a916b13ce2fb9cb57","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    def set_boot_order(self, instance_name, vm_gen, block_device_info):"},{"line_number":273,"context_line":"        boot_order \u003d self._block_dev_man.get_boot_order("},{"line_number":274,"context_line":"            vm_gen, block_device_info)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        self._vmutils.set_boot_order(instance_name, boot_order)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    @check_admin_permissions"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_efb63adb","line":275,"in_reply_to":"da4df55a_3f72b711","updated":"2017-01-03 14:57:09.000000000","message":"Done","commit_id":"907a45ff8c2de9e23016b5d0a514e629a70c82ac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"08326e80d6284349dbf0dec49ab803ead96f78b9","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        boot_order \u003d self._block_dev_man.get_boot_order("},{"line_number":274,"context_line":"            vm_gen, block_device_info)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        self._vmutils.set_boot_order(instance_name, boot_order)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    @check_admin_permissions"},{"line_number":279,"context_line":"    def spawn(self, context, instance, image_meta, injected_files,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da4df55a_5f7cdbeb","line":276,"range":{"start_line":276,"start_character":22,"end_line":276,"end_character":36},"updated":"2016-12-28 22:59:17.000000000","message":"Note to myself, this has been in os-win since the 0.0.7 release:\n\n50f9d18f474269754d91716ca43297b22eed8f45","commit_id":"907a45ff8c2de9e23016b5d0a514e629a70c82ac"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b0b73a1e46e91fc16c266512c934d2c550aa0264","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            vm_gen, block_device_info)"},{"line_number":275,"context_line":"        LOG.debug(\"Setting boot order for instance: %(instance_name)s: \""},{"line_number":276,"context_line":"                  \"%(boot_order)s\", {\u0027instance_name\u0027: instance_name,"},{"line_number":277,"context_line":"                                     \u0027boot_order\u0027: boot_order})"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        self._vmutils.set_boot_order(instance_name, boot_order)"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5201f7_95effb1c","line":277,"updated":"2017-01-06 11:59:38.000000000","message":"Nit: probably nicer to pass instance into the log message and use the default formatting, but this seems fine.","commit_id":"d68c04299aa2c04aea16e881d93076236cc64d7b"}],"nova/virt/hyperv/volumeops.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"bfb4ede7896b10200f5b9c9b24a9a0fdf8651a03","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                  mounted_disk_path)"},{"line_number":284,"context_line":"        self._vmutils.detach_vm_disk(instance_name, mounted_disk_path)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        self.logout_storage_target(connection_info[\u0027data\u0027][\u0027target_iqn\u0027])"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def _get_mounted_disk_from_lun(self, target_iqn, target_lun,"},{"line_number":289,"context_line":"                                   wait_for_device\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_c4353ea9","line":286,"updated":"2016-05-23 20:38:52.000000000","message":"unnecessary change.","commit_id":"bd3746e03ead81def7293909ec432663e2b30a7f"},{"author":{"_account_id":12604,"name":"Adelina Tuvenie","email":"atuvenie@cloudbasesolutions.com","username":"atuvenie"},"change_message_id":"569d0005f3960fa9b5749af5a37241d6ed3476e6","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                  mounted_disk_path)"},{"line_number":284,"context_line":"        self._vmutils.detach_vm_disk(instance_name, mounted_disk_path)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        self.logout_storage_target(connection_info[\u0027data\u0027][\u0027target_iqn\u0027])"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def _get_mounted_disk_from_lun(self, target_iqn, target_lun,"},{"line_number":289,"context_line":"                                   wait_for_device\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_f3f10d6c","line":286,"in_reply_to":"bab6814e_c4353ea9","updated":"2016-05-24 10:39:24.000000000","message":"Done","commit_id":"bd3746e03ead81def7293909ec432663e2b30a7f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"bfb4ede7896b10200f5b9c9b24a9a0fdf8651a03","unresolved":false,"context_lines":[{"line_number":360,"context_line":"                      disk_bus\u003dconstants.CTRL_TYPE_SCSI):"},{"line_number":361,"context_line":"        self.ensure_share_mounted(connection_info)"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"        disk_path \u003d self.get_mounted_disk_path_from_volume(connection_info)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        try:"},{"line_number":366,"context_line":"            if disk_bus \u003d\u003d constants.CTRL_TYPE_IDE:"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_84f056cb","line":363,"updated":"2016-05-23 20:38:52.000000000","message":"hm, why? get_mounted_disk_path_from_volume was doing the same thing.","commit_id":"bd3746e03ead81def7293909ec432663e2b30a7f"},{"author":{"_account_id":12604,"name":"Adelina Tuvenie","email":"atuvenie@cloudbasesolutions.com","username":"atuvenie"},"change_message_id":"569d0005f3960fa9b5749af5a37241d6ed3476e6","unresolved":false,"context_lines":[{"line_number":360,"context_line":"                      disk_bus\u003dconstants.CTRL_TYPE_SCSI):"},{"line_number":361,"context_line":"        self.ensure_share_mounted(connection_info)"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"        disk_path \u003d self.get_mounted_disk_path_from_volume(connection_info)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        try:"},{"line_number":366,"context_line":"            if disk_bus \u003d\u003d constants.CTRL_TYPE_IDE:"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_53e739ac","line":363,"in_reply_to":"bab6814e_84f056cb","updated":"2016-05-24 10:39:24.000000000","message":"Done","commit_id":"bd3746e03ead81def7293909ec432663e2b30a7f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"bfb4ede7896b10200f5b9c9b24a9a0fdf8651a03","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                  {\u0027connection_info\u0027: connection_info,"},{"line_number":391,"context_line":"                   \u0027instance_name\u0027: instance_name})"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        disk_path \u003d self.get_mounted_disk_path_from_volume(connection_info)"},{"line_number":394,"context_line":"        export_path \u003d self._get_export_path(connection_info)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        self._vmutils.detach_vm_disk(instance_name, disk_path,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_a4bd9ad9","line":393,"updated":"2016-05-23 20:38:52.000000000","message":"ditto.","commit_id":"bd3746e03ead81def7293909ec432663e2b30a7f"},{"author":{"_account_id":12604,"name":"Adelina Tuvenie","email":"atuvenie@cloudbasesolutions.com","username":"atuvenie"},"change_message_id":"569d0005f3960fa9b5749af5a37241d6ed3476e6","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                  {\u0027connection_info\u0027: connection_info,"},{"line_number":391,"context_line":"                   \u0027instance_name\u0027: instance_name})"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        disk_path \u003d self.get_mounted_disk_path_from_volume(connection_info)"},{"line_number":394,"context_line":"        export_path \u003d self._get_export_path(connection_info)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        self._vmutils.detach_vm_disk(instance_name, disk_path,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_b3f8254b","line":393,"in_reply_to":"bab6814e_a4bd9ad9","updated":"2016-05-24 10:39:24.000000000","message":"Done","commit_id":"bd3746e03ead81def7293909ec432663e2b30a7f"}],"releasenotes/notes/hyper-v-set-boot-order-1e76b08ca6783add.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"08326e80d6284349dbf0dec49ab803ead96f78b9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Added boot order support in the Hyper-V driver."},{"line_number":5,"context_line":"    The HyperVDriver can now set the requested boot order for instances that are"},{"line_number":6,"context_line":"    Generation 2 VMs (the given image has the property \"hw_machine_type\u003dhyperv-gen2\")."},{"line_number":7,"context_line":"    For Generation 1 VMs, the spawned VM\u0027s boot order is changed only if the given"},{"line_number":8,"context_line":"    image is an ISO, booting from ISO first."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"da4df55a_3f4477b5","line":8,"range":{"start_line":7,"start_character":4,"end_line":8,"end_character":44},"updated":"2016-12-28 22:59:17.000000000","message":"I\u0027m confused, I thought boot from ISO wasn\u0027t supported in hyper-v yet, i.e. blueprint hyper-v-boot-from-iso ?","commit_id":"907a45ff8c2de9e23016b5d0a514e629a70c82ac"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"5e81d25739e7667e586ece1a916b13ce2fb9cb57","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Added boot order support in the Hyper-V driver."},{"line_number":5,"context_line":"    The HyperVDriver can now set the requested boot order for instances that are"},{"line_number":6,"context_line":"    Generation 2 VMs (the given image has the property \"hw_machine_type\u003dhyperv-gen2\")."},{"line_number":7,"context_line":"    For Generation 1 VMs, the spawned VM\u0027s boot order is changed only if the given"},{"line_number":8,"context_line":"    image is an ISO, booting from ISO first."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"ba5201f7_afaef282","line":8,"range":{"start_line":7,"start_character":4,"end_line":8,"end_character":44},"in_reply_to":"da4df55a_3f4477b5","updated":"2017-01-03 14:57:09.000000000","message":"True, I was hoping that both would get merged in this cycle, so this would be true. Both patches are quite small.","commit_id":"907a45ff8c2de9e23016b5d0a514e629a70c82ac"}]}
