)]}'
{"ironic/drivers/modules/drac/management.py":[{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d101bbd92237bbdae1880e204f023607ec7bc77c","unresolved":false,"context_lines":[{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2014 Red Hat, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"# Copyright (c) 2017 Dell Inc. or its subsidiaries."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":8,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_3d0d0b35","line":5,"updated":"2018-02-16 20:54:10.000000000","message":"Probably want to update the copyright date","commit_id":"9ce6888d32be00b7267be1fb324df0027f120849"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"41e9c97ea3765e68bf772721c9dee9e70a40f2f8","unresolved":false,"context_lines":[{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2014 Red Hat, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"# Copyright (c) 2017 Dell Inc. or its subsidiaries."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":8,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_ab455071","line":5,"in_reply_to":"3fa0c359_3d0d0b35","updated":"2018-07-01 21:58:16.000000000","message":"Done","commit_id":"9ce6888d32be00b7267be1fb324df0027f120849"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"35687f0d40a269a4c31c890fe6f86f48a6a3ffd6","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            next_persistent_boot_mode \u003d mode.id"},{"line_number":93,"context_line":"            break"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    if next_persistent_boot_mode is None:"},{"line_number":96,"context_line":"        message \u003d (\u0027List of boot modes, %(list_boot_modes)s, does not contain \u0027"},{"line_number":97,"context_line":"                   \u0027a persistent mode\u0027 %"},{"line_number":98,"context_line":"                   {\u0027list_boot_modes\u0027: boot_modes})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_f2cb626f","line":95,"range":{"start_line":95,"start_character":4,"end_line":95,"end_character":41},"updated":"2018-02-16 05:09:24.000000000","message":"nit: if not next_persistent_boot_mode:","commit_id":"9ce6888d32be00b7267be1fb324df0027f120849"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"41e9c97ea3765e68bf772721c9dee9e70a40f2f8","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            next_persistent_boot_mode \u003d mode.id"},{"line_number":93,"context_line":"            break"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    if next_persistent_boot_mode is None:"},{"line_number":96,"context_line":"        message \u003d (\u0027List of boot modes, %(list_boot_modes)s, does not contain \u0027"},{"line_number":97,"context_line":"                   \u0027a persistent mode\u0027 %"},{"line_number":98,"context_line":"                   {\u0027list_boot_modes\u0027: boot_modes})"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_cb48cc8b","line":95,"range":{"start_line":95,"start_character":4,"end_line":95,"end_character":41},"in_reply_to":"3fa0c359_f2cb626f","updated":"2018-07-01 21:58:16.000000000","message":"Done","commit_id":"9ce6888d32be00b7267be1fb324df0027f120849"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"35687f0d40a269a4c31c890fe6f86f48a6a3ffd6","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            break"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    if next_persistent_boot_mode is None:"},{"line_number":96,"context_line":"        message \u003d (\u0027List of boot modes, %(list_boot_modes)s, does not contain \u0027"},{"line_number":97,"context_line":"                   \u0027a persistent mode\u0027 %"},{"line_number":98,"context_line":"                   {\u0027list_boot_modes\u0027: boot_modes})"},{"line_number":99,"context_line":"        LOG.error(\u0027DRAC driver failed to get next persistent boot mode for \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_d2a18697","line":96,"range":{"start_line":96,"start_character":18,"end_line":96,"end_character":19},"updated":"2018-02-16 05:09:24.000000000","message":"Need to add log translation for exception message.\n(_(\u0027List of ...\u0027) % {\u0027node_uuid\u0027: node.uuid, \u0027message\u0027: message})","commit_id":"9ce6888d32be00b7267be1fb324df0027f120849"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"2d8a21894e699553d81e47c96bb71037cf2d0c68","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            break"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    if next_persistent_boot_mode is None:"},{"line_number":96,"context_line":"        message \u003d (\u0027List of boot modes, %(list_boot_modes)s, does not contain \u0027"},{"line_number":97,"context_line":"                   \u0027a persistent mode\u0027 %"},{"line_number":98,"context_line":"                   {\u0027list_boot_modes\u0027: boot_modes})"},{"line_number":99,"context_line":"        LOG.error(\u0027DRAC driver failed to get next persistent boot mode for \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_6a3336ac","line":96,"range":{"start_line":96,"start_character":18,"end_line":96,"end_character":19},"in_reply_to":"3fa0c359_d2a18697","updated":"2018-05-30 23:54:37.000000000","message":"Please clarify. The content of the string in the code snippet you provided is not the same as that in the present code, so I am not clear on where the change should be made.\n\nAssuming that the log translation needs to be added to the string assigned to the variable \u0027message\u0027 on lines 96-98, may that variable be used as-is in the call to LOG.error() and the constructor of exception.DracOperationError? May it be used to create the string argument passed to LOG.error, even though the rest of that string argument does not have log translation.","commit_id":"9ce6888d32be00b7267be1fb324df0027f120849"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"41e9c97ea3765e68bf772721c9dee9e70a40f2f8","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            break"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    if next_persistent_boot_mode is None:"},{"line_number":96,"context_line":"        message \u003d (\u0027List of boot modes, %(list_boot_modes)s, does not contain \u0027"},{"line_number":97,"context_line":"                   \u0027a persistent mode\u0027 %"},{"line_number":98,"context_line":"                   {\u0027list_boot_modes\u0027: boot_modes})"},{"line_number":99,"context_line":"        LOG.error(\u0027DRAC driver failed to get next persistent boot mode for \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_8b42d467","line":96,"range":{"start_line":96,"start_character":18,"end_line":96,"end_character":19},"in_reply_to":"5f7c97a3_4608722c","updated":"2018-07-01 21:58:16.000000000","message":"Done","commit_id":"9ce6888d32be00b7267be1fb324df0027f120849"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"f6373ade46cc55637fe3df0f09f42f2f2b5a8c20","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            break"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    if next_persistent_boot_mode is None:"},{"line_number":96,"context_line":"        message \u003d (\u0027List of boot modes, %(list_boot_modes)s, does not contain \u0027"},{"line_number":97,"context_line":"                   \u0027a persistent mode\u0027 %"},{"line_number":98,"context_line":"                   {\u0027list_boot_modes\u0027: boot_modes})"},{"line_number":99,"context_line":"        LOG.error(\u0027DRAC driver failed to get next persistent boot mode for \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_4608722c","line":96,"range":{"start_line":96,"start_character":18,"end_line":96,"end_character":19},"in_reply_to":"5f7c97a3_6a3336ac","updated":"2018-06-04 15:28:47.000000000","message":"The message text is fine. It just needs the leading \u0027_\u0027. Ex:\nhttps://github.com/openstack/ironic/blob/master/ironic/drivers/modules/deploy_utils.py#L202-L205","commit_id":"9ce6888d32be00b7267be1fb324df0027f120849"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"b123da610d1d09d6c623beba5a753840e878935b","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        \u0027HardDisk\u0027,  # All hard disk types"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # UEFI"},{"line_number":49,"context_line":"        \u0027AHCI\u0027,      # Dell PowerEdge Boot Optimized Storage Solution (BOSS)"},{"line_number":50,"context_line":"                     # disks and virtual disks (RAID volumes)"},{"line_number":51,"context_line":"        \u0027Disk\u0027,      # Non-Volatile Memory Express (NVMe) connected to"},{"line_number":52,"context_line":"                     # Peripheral Component Interconnect Express (PCIe)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_e80c6594","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":14},"updated":"2018-07-04 21:01:49.000000000","message":"why is it called AHCI?","commit_id":"8f187d0aa5ecc9587098e37d7e4f246e2e7bccae"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"de890e584da41e5920559d2238ff499c6f927fe5","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        \u0027HardDisk\u0027,  # All hard disk types"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # UEFI"},{"line_number":49,"context_line":"        \u0027AHCI\u0027,      # Dell PowerEdge Boot Optimized Storage Solution (BOSS)"},{"line_number":50,"context_line":"                     # disks and virtual disks (RAID volumes)"},{"line_number":51,"context_line":"        \u0027Disk\u0027,      # Non-Volatile Memory Express (NVMe) connected to"},{"line_number":52,"context_line":"                     # Peripheral Component Interconnect Express (PCIe)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_ea07461c","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":14},"in_reply_to":"5f7c97a3_386941bf","updated":"2018-07-08 18:46:22.000000000","message":"I added comments that describe _BOOT_DEVICES_MAP. They include references to Dell EMC documentation of the iDRAC concepts, data models, and identifiers it relies on.","commit_id":"8f187d0aa5ecc9587098e37d7e4f246e2e7bccae"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"2ce10d9907e0e521fe9cba00b2ddd70bc051aa4b","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        \u0027HardDisk\u0027,  # All hard disk types"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # UEFI"},{"line_number":49,"context_line":"        \u0027AHCI\u0027,      # Dell PowerEdge Boot Optimized Storage Solution (BOSS)"},{"line_number":50,"context_line":"                     # disks and virtual disks (RAID volumes)"},{"line_number":51,"context_line":"        \u0027Disk\u0027,      # Non-Volatile Memory Express (NVMe) connected to"},{"line_number":52,"context_line":"                     # Peripheral Component Interconnect Express (PCIe)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_386941bf","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":14},"in_reply_to":"5f7c97a3_dfacc036","updated":"2018-07-05 14:10:20.000000000","message":"you need to have a spell out AHCI in the description.\nRight now the entry states AHCI but description is about BOSS - disconnect.\nEither change description or entry name.","commit_id":"8f187d0aa5ecc9587098e37d7e4f246e2e7bccae"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"3ca0320670a16c13de5e58a9b683b72077907ff5","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        \u0027HardDisk\u0027,  # All hard disk types"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # UEFI"},{"line_number":49,"context_line":"        \u0027AHCI\u0027,      # Dell PowerEdge Boot Optimized Storage Solution (BOSS)"},{"line_number":50,"context_line":"                     # disks and virtual disks (RAID volumes)"},{"line_number":51,"context_line":"        \u0027Disk\u0027,      # Non-Volatile Memory Express (NVMe) connected to"},{"line_number":52,"context_line":"                     # Peripheral Component Interconnect Express (PCIe)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_dfacc036","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":14},"in_reply_to":"5f7c97a3_e80c6594","updated":"2018-07-05 03:13:24.000000000","message":"I suspect it\u0027s because the BOSS uses the Advanced Host Controller Interface [1]. AHCI is the acronym for Advanced Host Controller Interface [2].\n\n[1] Dell EMC BOSS-S1 (Boot Optimized Server Storage) User\u0027s Guide, section 4, Driver Installation, p. 15 (https://topics-cdn.dell.com/pdf/boss-s-1_users-guide_it-it.pdf)\n[2] https://en.wikipedia.org/wiki/Advanced_Host_Controller_Interface","commit_id":"8f187d0aa5ecc9587098e37d7e4f246e2e7bccae"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"b123da610d1d09d6c623beba5a753840e878935b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # UEFI"},{"line_number":49,"context_line":"        \u0027AHCI\u0027,      # Dell PowerEdge Boot Optimized Storage Solution (BOSS)"},{"line_number":50,"context_line":"                     # disks and virtual disks (RAID volumes)"},{"line_number":51,"context_line":"        \u0027Disk\u0027,      # Non-Volatile Memory Express (NVMe) connected to"},{"line_number":52,"context_line":"                     # Peripheral Component Interconnect Express (PCIe)"},{"line_number":53,"context_line":"        \u0027NonRAID\u0027,   # Disks connected to a Host Bus Adapter (HBA)"},{"line_number":54,"context_line":"        \u0027RAID\u0027       # Disks and virtual disks controlled by a Dell PowerEdge"},{"line_number":55,"context_line":"                     # RAID Controller (PERC)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_683ff521","line":52,"range":{"start_line":51,"start_character":0,"end_line":52,"end_character":71},"updated":"2018-07-04 21:01:49.000000000","message":"disconnect between the option name DISK and its description that only mentions NVMe. If only it is for NVMe device then rename the option as NVMEoPCIe or some other better term.","commit_id":"8f187d0aa5ecc9587098e37d7e4f246e2e7bccae"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"de890e584da41e5920559d2238ff499c6f927fe5","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # UEFI"},{"line_number":49,"context_line":"        \u0027AHCI\u0027,      # Dell PowerEdge Boot Optimized Storage Solution (BOSS)"},{"line_number":50,"context_line":"                     # disks and virtual disks (RAID volumes)"},{"line_number":51,"context_line":"        \u0027Disk\u0027,      # Non-Volatile Memory Express (NVMe) connected to"},{"line_number":52,"context_line":"                     # Peripheral Component Interconnect Express (PCIe)"},{"line_number":53,"context_line":"        \u0027NonRAID\u0027,   # Disks connected to a Host Bus Adapter (HBA)"},{"line_number":54,"context_line":"        \u0027RAID\u0027       # Disks and virtual disks controlled by a Dell PowerEdge"},{"line_number":55,"context_line":"                     # RAID Controller (PERC)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_93113c56","line":52,"range":{"start_line":51,"start_character":0,"end_line":52,"end_character":71},"in_reply_to":"5f7c97a3_385381e0","updated":"2018-07-08 18:46:22.000000000","message":"Please take a look at the \"Lifecycle Controller Version 3.15.15.15 User\u0027s Guide\" -- http://topics-cdn.dell.com/pdf/idrac9-lifecycle-controller-v3.15.15.15_users-guide2_en-us.pdf -- for a list of commonly used Fully Qualified Device Descriptors (FQDD). It\u0027s contained in Table 13, \"Easy-to-use Names of System Components\", on pp. 71-74. There are several other devices whose FQDDs begin with \u0027Disk\u0027 besides NVMe.\n\nNote that while an FQDD for NVMe is not listed, testing showed that its FQDD contains \u0027Disk\u0027.","commit_id":"8f187d0aa5ecc9587098e37d7e4f246e2e7bccae"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"2ce10d9907e0e521fe9cba00b2ddd70bc051aa4b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # UEFI"},{"line_number":49,"context_line":"        \u0027AHCI\u0027,      # Dell PowerEdge Boot Optimized Storage Solution (BOSS)"},{"line_number":50,"context_line":"                     # disks and virtual disks (RAID volumes)"},{"line_number":51,"context_line":"        \u0027Disk\u0027,      # Non-Volatile Memory Express (NVMe) connected to"},{"line_number":52,"context_line":"                     # Peripheral Component Interconnect Express (PCIe)"},{"line_number":53,"context_line":"        \u0027NonRAID\u0027,   # Disks connected to a Host Bus Adapter (HBA)"},{"line_number":54,"context_line":"        \u0027RAID\u0027       # Disks and virtual disks controlled by a Dell PowerEdge"},{"line_number":55,"context_line":"                     # RAID Controller (PERC)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_385381e0","line":52,"range":{"start_line":51,"start_character":0,"end_line":52,"end_character":71},"in_reply_to":"5f7c97a3_5f3430fb","updated":"2018-07-05 14:10:20.000000000","message":"What other devices besides NVMe fall into this category?\nI am having hard time comprehending enumeration across \nDISK, nonRAID, and RAID.","commit_id":"8f187d0aa5ecc9587098e37d7e4f246e2e7bccae"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"3ca0320670a16c13de5e58a9b683b72077907ff5","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # UEFI"},{"line_number":49,"context_line":"        \u0027AHCI\u0027,      # Dell PowerEdge Boot Optimized Storage Solution (BOSS)"},{"line_number":50,"context_line":"                     # disks and virtual disks (RAID volumes)"},{"line_number":51,"context_line":"        \u0027Disk\u0027,      # Non-Volatile Memory Express (NVMe) connected to"},{"line_number":52,"context_line":"                     # Peripheral Component Interconnect Express (PCIe)"},{"line_number":53,"context_line":"        \u0027NonRAID\u0027,   # Disks connected to a Host Bus Adapter (HBA)"},{"line_number":54,"context_line":"        \u0027RAID\u0027       # Disks and virtual disks controlled by a Dell PowerEdge"},{"line_number":55,"context_line":"                     # RAID Controller (PERC)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_5f3430fb","line":52,"range":{"start_line":51,"start_character":0,"end_line":52,"end_character":71},"in_reply_to":"5f7c97a3_683ff521","updated":"2018-07-05 03:13:24.000000000","message":"This dictionary, _BOOT_DEVICES_MAP, maps ironic boot device types to iDRAC boot source instance identifiers (InstanceID). \u0027Disk\u0027 is at the beginning of the InstanceID for an NVMe device. No other disk device that has been tested against UEFI boot mode -- Dell PowerEdge RAID Controller (PERC) RAID volumes, Dell Boot Optimized Storage Solution (BOSS) RAID 1, Host Bus Adapter (HBA) controlled JBOD, and BOSS SSD -- had \u0027Disk\u0027 in their InstanceIDs.\n\nThe InstanceID for NVMe is exceptional. Those for all of the other disk devices tested start with the InstanceID of their controller.\n\nThis driver has no control over that naming. It\u0027s defined in the iDRAC firmware.","commit_id":"8f187d0aa5ecc9587098e37d7e4f246e2e7bccae"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"b123da610d1d09d6c623beba5a753840e878935b","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    boot_devices.CDROM: [\u0027Optical\u0027],"},{"line_number":59,"context_line":"}"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"_DRAC_BOOT_MODES \u003d [\u0027Bios\u0027, \u0027Uefi\u0027]"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# BootMode constant"},{"line_number":64,"context_line":"_NON_PERSISTENT_BOOT_MODE \u003d \u0027OneTime\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_a822edff","line":61,"range":{"start_line":61,"start_character":19,"end_line":61,"end_character":35},"updated":"2018-07-04 21:01:49.000000000","message":"should they be fully capitalized?","commit_id":"8f187d0aa5ecc9587098e37d7e4f246e2e7bccae"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"3ca0320670a16c13de5e58a9b683b72077907ff5","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    boot_devices.CDROM: [\u0027Optical\u0027],"},{"line_number":59,"context_line":"}"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"_DRAC_BOOT_MODES \u003d [\u0027Bios\u0027, \u0027Uefi\u0027]"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# BootMode constant"},{"line_number":64,"context_line":"_NON_PERSISTENT_BOOT_MODE \u003d \u0027OneTime\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_5f1d1071","line":61,"range":{"start_line":61,"start_character":19,"end_line":61,"end_character":35},"in_reply_to":"5f7c97a3_a822edff","updated":"2018-07-05 03:13:24.000000000","message":"I don\u0027t see any need to fully capitalize them. They match the values the iDRAC can report for the boot mode BIOS attribute, \u0027BootMode\u0027 [1].\n\n[1] Dell EMC BIOS and Boot Management Profile, p. 22 (http://en.community.dell.com/techcenter/extras/m/white_papers/20444495/download)","commit_id":"8f187d0aa5ecc9587098e37d7e4f246e2e7bccae"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"b123da610d1d09d6c623beba5a753840e878935b","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        bios_settings[\u0027SetBootOrderFqdd1\u0027] \u003d \u0027NIC.*.*\u0027"},{"line_number":146,"context_line":"    elif device \u003d\u003d boot_devices.CDROM:"},{"line_number":147,"context_line":"        bios_settings[\u0027SetBootOrderFqdd1\u0027] \u003d \u0027Optical.*.*\u0027"},{"line_number":148,"context_line":"    else:"},{"line_number":149,"context_line":"        raise exception.InvalidParameterValue("},{"line_number":150,"context_line":"            _(\"_flexibly_program_boot_order called with invalid device \""},{"line_number":151,"context_line":"              \"\u0027%(device)s\u0027 for node %(node_uuid)s.\") %"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_8853716c","line":148,"range":{"start_line":148,"start_character":1,"end_line":148,"end_character":9},"updated":"2018-07-04 21:01:49.000000000","message":"Should it also check for BOSS before falling to exception?","commit_id":"8f187d0aa5ecc9587098e37d7e4f246e2e7bccae"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"3ca0320670a16c13de5e58a9b683b72077907ff5","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        bios_settings[\u0027SetBootOrderFqdd1\u0027] \u003d \u0027NIC.*.*\u0027"},{"line_number":146,"context_line":"    elif device \u003d\u003d boot_devices.CDROM:"},{"line_number":147,"context_line":"        bios_settings[\u0027SetBootOrderFqdd1\u0027] \u003d \u0027Optical.*.*\u0027"},{"line_number":148,"context_line":"    else:"},{"line_number":149,"context_line":"        raise exception.InvalidParameterValue("},{"line_number":150,"context_line":"            _(\"_flexibly_program_boot_order called with invalid device \""},{"line_number":151,"context_line":"              \"\u0027%(device)s\u0027 for node %(node_uuid)s.\") %"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_f21bf36b","line":148,"range":{"start_line":148,"start_character":1,"end_line":148,"end_character":9},"in_reply_to":"5f7c97a3_8853716c","updated":"2018-07-05 03:13:24.000000000","message":"No, it should not. This if-then-else statement is switching on the ironic boot device types supported by this driver. Please see the definitions of DracManagement.get_supported_boot_devices() and _BOOT_DEVICES_MAP in this file. The keys of _BOOT_DEVICES_MAP are the supported ironic boot device types. If a new supported ironic boot device type is added and not accounted for here, an exception will be raised.","commit_id":"8f187d0aa5ecc9587098e37d7e4f246e2e7bccae"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"2ce10d9907e0e521fe9cba00b2ddd70bc051aa4b","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        bios_settings[\u0027SetBootOrderFqdd1\u0027] \u003d \u0027NIC.*.*\u0027"},{"line_number":146,"context_line":"    elif device \u003d\u003d boot_devices.CDROM:"},{"line_number":147,"context_line":"        bios_settings[\u0027SetBootOrderFqdd1\u0027] \u003d \u0027Optical.*.*\u0027"},{"line_number":148,"context_line":"    else:"},{"line_number":149,"context_line":"        raise exception.InvalidParameterValue("},{"line_number":150,"context_line":"            _(\"_flexibly_program_boot_order called with invalid device \""},{"line_number":151,"context_line":"              \"\u0027%(device)s\u0027 for node %(node_uuid)s.\") %"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_18f325e9","line":148,"range":{"start_line":148,"start_character":1,"end_line":148,"end_character":9},"in_reply_to":"5f7c97a3_f21bf36b","updated":"2018-07-05 14:10:20.000000000","message":"I am OK with this.\nConsider this resolved.","commit_id":"8f187d0aa5ecc9587098e37d7e4f246e2e7bccae"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"490b8a9f8eba16345a29b4e7f981c9953ed48918","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        drac_boot_device \u003d drac_boot_devices[next_boot_mode][0]"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        boot_device \u003d None"},{"line_number":93,"context_line":"        for (key, value) in _BOOT_DEVICES_MAP.items():"},{"line_number":94,"context_line":"            for id_component in value:"},{"line_number":95,"context_line":"                if id_component in drac_boot_device.id:"},{"line_number":96,"context_line":"                    boot_device \u003d key"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_0700bdff","line":93,"range":{"start_line":93,"start_character":12,"end_line":93,"end_character":13},"updated":"2018-07-27 15:37:12.000000000","message":"nit: do we need parenthesis here?","commit_id":"d8974f46559683becdefbc9fad6f4fef502094b6"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"06ef897c9b46e152fae1ea8972a79359cccf7f7f","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        drac_boot_device \u003d drac_boot_devices[next_boot_mode][0]"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        boot_device \u003d None"},{"line_number":93,"context_line":"        for (key, value) in _BOOT_DEVICES_MAP.items():"},{"line_number":94,"context_line":"            for id_component in value:"},{"line_number":95,"context_line":"                if id_component in drac_boot_device.id:"},{"line_number":96,"context_line":"                    boot_device \u003d key"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_015417fc","line":93,"range":{"start_line":93,"start_character":12,"end_line":93,"end_character":13},"in_reply_to":"5f7c97a3_0700bdff","updated":"2018-07-29 22:02:58.000000000","message":"Done","commit_id":"d8974f46559683becdefbc9fad6f4fef502094b6"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"490b8a9f8eba16345a29b4e7f981c9953ed48918","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            if boot_device:"},{"line_number":100,"context_line":"                break"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        return {\u0027boot_device\u0027: boot_device,"},{"line_number":103,"context_line":"                \u0027persistent\u0027: next_boot_mode !\u003d _NON_PERSISTENT_BOOT_MODE}"},{"line_number":104,"context_line":"    except (drac_exceptions.BaseClientException, IndexError) as exc:"},{"line_number":105,"context_line":"        LOG.error(\u0027DRAC driver failed to get next boot mode for \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_07851d59","line":102,"range":{"start_line":102,"start_character":31,"end_line":102,"end_character":42},"updated":"2018-07-27 15:37:12.000000000","message":"Just noted that `boot_device` can end up being `None`. But may be that\u0027s OK.","commit_id":"d8974f46559683becdefbc9fad6f4fef502094b6"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"06ef897c9b46e152fae1ea8972a79359cccf7f7f","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            if boot_device:"},{"line_number":100,"context_line":"                break"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        return {\u0027boot_device\u0027: boot_device,"},{"line_number":103,"context_line":"                \u0027persistent\u0027: next_boot_mode !\u003d _NON_PERSISTENT_BOOT_MODE}"},{"line_number":104,"context_line":"    except (drac_exceptions.BaseClientException, IndexError) as exc:"},{"line_number":105,"context_line":"        LOG.error(\u0027DRAC driver failed to get next boot mode for \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_016df7c9","line":102,"range":{"start_line":102,"start_character":31,"end_line":102,"end_character":42},"in_reply_to":"5f7c97a3_07851d59","updated":"2018-07-29 22:02:58.000000000","message":"Yes, \u0027boot_device\u0027 can be \u0027None\u0027. This occurs when a baremetal server has no configured boot sources.\n\nIt probably is more likely to occur under UEFI boot mode. A completely new server that is shipped without a preinstalled operating system and is not configured to have any boot sources, including PXE, would exhibit it. Under legacy BIOS boot mode, it would require having no configured boot sources and no hard disk-like devices nor disk controllers.","commit_id":"d8974f46559683becdefbc9fad6f4fef502094b6"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"490b8a9f8eba16345a29b4e7f981c9953ed48918","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"def _flexibly_program_boot_order(node, device, drac_boot_mode):"},{"line_number":145,"context_line":"    assert device in _BOOT_DEVICES_MAP"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    client \u003d drac_common.get_drac_client(node)"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_87be0dfe","line":145,"range":{"start_line":145,"start_character":4,"end_line":145,"end_character":10},"updated":"2018-07-27 15:37:12.000000000","message":"AFAIK, Python `assert` gets optimized out into a no-op when `python -O` is invoked. So it may be better to replace `assert` with `if`.","commit_id":"d8974f46559683becdefbc9fad6f4fef502094b6"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"06ef897c9b46e152fae1ea8972a79359cccf7f7f","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"def _flexibly_program_boot_order(node, device, drac_boot_mode):"},{"line_number":145,"context_line":"    assert device in _BOOT_DEVICES_MAP"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    client \u003d drac_common.get_drac_client(node)"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_21e5933e","line":145,"range":{"start_line":145,"start_character":4,"end_line":145,"end_character":10},"in_reply_to":"5f7c97a3_87be0dfe","updated":"2018-07-29 22:02:58.000000000","message":"Please take a look at the changes in patch set 8. The assert is being used defensively. The contract between this private, helper function and its callers is that \u0027device\u0027 is among the boot devices supported by this management interface implementation. Those are encoded in \u0027_BOOT_DEVICES_MAP\u0027. It is the responsibility of the callers to ensure that. And they presently do!","commit_id":"d8974f46559683becdefbc9fad6f4fef502094b6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"158e64fc6fe9a73af7a77a7fbed6f9fcc52a9b13","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    return persistent and \u0027SetBootOrderFqdd1\u0027 in bios_settings"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"def _create_bios_settings_to_flexibly_program_boot_order("},{"line_number":149,"context_line":"        device, drac_boot_mode):"},{"line_number":150,"context_line":"    if device \u003d\u003d boot_devices.DISK:"},{"line_number":151,"context_line":"        bios_settings \u003d \\"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_37e387d9","line":148,"range":{"start_line":148,"start_character":3,"end_line":148,"end_character":28},"updated":"2018-07-30 16:21:03.000000000","message":"nit: s/_create_bios_settings_to// just to control the length :)","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"68d9fb7ccaf6a678ae4e80ea684f80eacc690bf4","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    return persistent and \u0027SetBootOrderFqdd1\u0027 in bios_settings"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"def _create_bios_settings_to_flexibly_program_boot_order("},{"line_number":149,"context_line":"        device, drac_boot_mode):"},{"line_number":150,"context_line":"    if device \u003d\u003d boot_devices.DISK:"},{"line_number":151,"context_line":"        bios_settings \u003d \\"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_41e73cd8","line":148,"range":{"start_line":148,"start_character":3,"end_line":148,"end_character":28},"in_reply_to":"5f7c97a3_37e387d9","updated":"2018-07-31 20:08:47.000000000","message":"Done","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"158e64fc6fe9a73af7a77a7fbed6f9fcc52a9b13","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    return bios_settings"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"def _create_bios_settings_to_place_disks_at_boot_order_front(drac_boot_mode):"},{"line_number":165,"context_line":"    if drac_boot_mode \u003d\u003d \u0027Bios\u0027:"},{"line_number":166,"context_line":"        bios_settings \u003d {\u0027SetBootOrderFqdd1\u0027: \u0027HardDisk.List.1-1\u0027}"},{"line_number":167,"context_line":"    elif drac_boot_mode \u003d\u003d \u0027Uefi\u0027:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_d7cb3348","line":164,"range":{"start_line":164,"start_character":5,"end_line":164,"end_character":29},"updated":"2018-07-30 16:21:03.000000000","message":"ditto\n\nalso you could probably merge this function into the previous one, both are quite short and simple","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"68d9fb7ccaf6a678ae4e80ea684f80eacc690bf4","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    return bios_settings"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"def _create_bios_settings_to_place_disks_at_boot_order_front(drac_boot_mode):"},{"line_number":165,"context_line":"    if drac_boot_mode \u003d\u003d \u0027Bios\u0027:"},{"line_number":166,"context_line":"        bios_settings \u003d {\u0027SetBootOrderFqdd1\u0027: \u0027HardDisk.List.1-1\u0027}"},{"line_number":167,"context_line":"    elif drac_boot_mode \u003d\u003d \u0027Uefi\u0027:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_012b84e9","line":164,"range":{"start_line":164,"start_character":5,"end_line":164,"end_character":29},"in_reply_to":"5f7c97a3_d7cb3348","updated":"2018-07-31 20:08:47.000000000","message":"Both done.","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"158e64fc6fe9a73af7a77a7fbed6f9fcc52a9b13","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            \u0027SetBootOrderFqdd4\u0027: \u0027Floppy.*.*\u0027,"},{"line_number":173,"context_line":"        }"},{"line_number":174,"context_line":"    else:"},{"line_number":175,"context_line":"        assert drac_boot_mode !\u003d drac_boot_mode"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    return bios_settings"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_d7c6d34a","line":175,"range":{"start_line":175,"start_character":8,"end_line":175,"end_character":47},"updated":"2018-07-30 16:21:03.000000000","message":"please no asserts in production code. this should probably an exception","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"68d9fb7ccaf6a678ae4e80ea684f80eacc690bf4","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            \u0027SetBootOrderFqdd4\u0027: \u0027Floppy.*.*\u0027,"},{"line_number":173,"context_line":"        }"},{"line_number":174,"context_line":"    else:"},{"line_number":175,"context_line":"        assert drac_boot_mode !\u003d drac_boot_mode"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    return bios_settings"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_a12df0fc","line":175,"range":{"start_line":175,"start_character":8,"end_line":175,"end_character":47},"in_reply_to":"5f7c97a3_9dfcf971","updated":"2018-07-31 20:08:47.000000000","message":"Done","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"84d26ce4c9c48db420d4d80a96235b755de9ce4a","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            \u0027SetBootOrderFqdd4\u0027: \u0027Floppy.*.*\u0027,"},{"line_number":173,"context_line":"        }"},{"line_number":174,"context_line":"    else:"},{"line_number":175,"context_line":"        assert drac_boot_mode !\u003d drac_boot_mode"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    return bios_settings"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_9dfcf971","line":175,"range":{"start_line":175,"start_character":8,"end_line":175,"end_character":47},"in_reply_to":"5f7c97a3_d7c6d34a","updated":"2018-07-30 18:08:33.000000000","message":"++","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"158e64fc6fe9a73af7a77a7fbed6f9fcc52a9b13","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                client.set_bios_settings(flexibly_program_settings)"},{"line_number":244,"context_line":"            else:"},{"line_number":245,"context_line":"                raise exception.InvalidParameterValue("},{"line_number":246,"context_line":"                    _(\"set_boot_device called with invalid device \""},{"line_number":247,"context_line":"                      \"\u0027%(device)s\u0027 for node %(node_id)s.\") %"},{"line_number":248,"context_line":"                    {\u0027device\u0027: device, \u0027node_id\u0027: node.uuid})"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        client.commit_pending_bios_changes()"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_97185bce","line":247,"range":{"start_line":246,"start_character":0,"end_line":247,"end_character":61},"updated":"2018-07-30 16:21:03.000000000","message":"This feels like a wrong error message. What actually happens is that the iDrac cannot program boot modes. is_boot_order_flexibly_programmable does not check devices.","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"68d9fb7ccaf6a678ae4e80ea684f80eacc690bf4","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                client.set_bios_settings(flexibly_program_settings)"},{"line_number":244,"context_line":"            else:"},{"line_number":245,"context_line":"                raise exception.InvalidParameterValue("},{"line_number":246,"context_line":"                    _(\"set_boot_device called with invalid device \""},{"line_number":247,"context_line":"                      \"\u0027%(device)s\u0027 for node %(node_id)s.\") %"},{"line_number":248,"context_line":"                    {\u0027device\u0027: device, \u0027node_id\u0027: node.uuid})"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        client.commit_pending_bios_changes()"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_4115fc93","line":247,"range":{"start_line":246,"start_character":0,"end_line":247,"end_character":61},"in_reply_to":"5f7c97a3_97185bce","updated":"2018-07-31 20:08:47.000000000","message":"Please take a look at the comment I added above. It clarifies what is going on here and why the error message is correct.","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b732e0802ac3b6a79ad6d72f0bea0b19ed4d9463","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            bios_settings \u003d {"},{"line_number":155,"context_line":"                \u0027SetBootOrderFqdd1\u0027: \u0027*.*.*\u0027,  # Disks, which are all else"},{"line_number":156,"context_line":"                \u0027SetBootOrderFqdd2\u0027: \u0027NIC.*.*\u0027,"},{"line_number":157,"context_line":"                \u0027SetBootOrderFqdd3\u0027: \u0027Optical.*.*\u0027,"},{"line_number":158,"context_line":"                \u0027SetBootOrderFqdd4\u0027: \u0027Floppy.*.*\u0027,"},{"line_number":159,"context_line":"            }"},{"line_number":160,"context_line":"    elif device \u003d\u003d boot_devices.PXE:"},{"line_number":161,"context_line":"        bios_settings \u003d {\u0027SetBootOrderFqdd1\u0027: \u0027NIC.*.*\u0027}"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_d0c1c150","line":158,"range":{"start_line":157,"start_character":0,"end_line":158,"end_character":50},"updated":"2018-08-01 17:15:02.000000000","message":"Do these need to be included? Guess slightly worried about oot falling back... but c\u0027est la vie.","commit_id":"eb14f5750f6387a0a6b771caffb9f17a9bce5ba0"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"5df8bed11a5d3023daeebf1d63c0bd1f452cafb6","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            bios_settings \u003d {"},{"line_number":155,"context_line":"                \u0027SetBootOrderFqdd1\u0027: \u0027*.*.*\u0027,  # Disks, which are all else"},{"line_number":156,"context_line":"                \u0027SetBootOrderFqdd2\u0027: \u0027NIC.*.*\u0027,"},{"line_number":157,"context_line":"                \u0027SetBootOrderFqdd3\u0027: \u0027Optical.*.*\u0027,"},{"line_number":158,"context_line":"                \u0027SetBootOrderFqdd4\u0027: \u0027Floppy.*.*\u0027,"},{"line_number":159,"context_line":"            }"},{"line_number":160,"context_line":"    elif device \u003d\u003d boot_devices.PXE:"},{"line_number":161,"context_line":"        bios_settings \u003d {\u0027SetBootOrderFqdd1\u0027: \u0027NIC.*.*\u0027}"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_10cdf95c","line":158,"range":{"start_line":157,"start_character":0,"end_line":158,"end_character":50},"in_reply_to":"5f7c97a3_d0c1c150","updated":"2018-08-01 17:21:55.000000000","message":"Yes, they do. Otherwise, they would be captured by the \u0027*.*.*\u0027 and, if present, compete with the disks to be at the very front of the boot order.","commit_id":"eb14f5750f6387a0a6b771caffb9f17a9bce5ba0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"2c64a2354ba6cad4546ece47aa3e1e4b0aac0866","unresolved":false,"context_lines":[{"line_number":243,"context_line":"            else:"},{"line_number":244,"context_line":"                raise exception.InvalidParameterValue("},{"line_number":245,"context_line":"                    _(\"set_boot_device called with invalid device \""},{"line_number":246,"context_line":"                      \"\u0027%(device)s\u0027 for node %(node_id)s.\") %"},{"line_number":247,"context_line":"                    {\u0027device\u0027: device, \u0027node_id\u0027: node.uuid})"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"        client.commit_pending_bios_changes()"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_22bf59cb","line":246,"updated":"2018-08-03 11:46:15.000000000","message":"Can we have some details here still? From the comment about it seems like if I have UEFI and boot mode cannot be programmed flexibly (e.g. persistent\u003dFalse), I can end up with message \"set_boot_device called with invalid device PXE for node \u003c...\u003e\". How do I know why PXE is suddenly invalid?","commit_id":"eb14f5750f6387a0a6b771caffb9f17a9bce5ba0"}],"ironic/tests/unit/drivers/modules/drac/test_management.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"158e64fc6fe9a73af7a77a7fbed6f9fcc52a9b13","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        mock_client.list_boot_modes.assert_called_once_with()"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def test__is_boot_order_flexibly_programmable(self, mock_get_drac_client):"},{"line_number":198,"context_line":"        self.assertEqual(True,"},{"line_number":199,"context_line":"                         drac_mgmt._is_boot_order_flexibly_programmable("},{"line_number":200,"context_line":"                             persistent\u003dTrue,"},{"line_number":201,"context_line":"                             bios_settings\u003d{\u0027SetBootOrderFqdd1\u0027: ()}))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_177a0bee","line":198,"range":{"start_line":198,"start_character":13,"end_line":198,"end_character":29},"updated":"2018-07-30 16:21:03.000000000","message":"assertTrue","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"68d9fb7ccaf6a678ae4e80ea684f80eacc690bf4","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        mock_client.list_boot_modes.assert_called_once_with()"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def test__is_boot_order_flexibly_programmable(self, mock_get_drac_client):"},{"line_number":198,"context_line":"        self.assertEqual(True,"},{"line_number":199,"context_line":"                         drac_mgmt._is_boot_order_flexibly_programmable("},{"line_number":200,"context_line":"                             persistent\u003dTrue,"},{"line_number":201,"context_line":"                             bios_settings\u003d{\u0027SetBootOrderFqdd1\u0027: ()}))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_c17eece0","line":198,"range":{"start_line":198,"start_character":13,"end_line":198,"end_character":29},"in_reply_to":"5f7c97a3_177a0bee","updated":"2018-07-31 20:08:47.000000000","message":"Done","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"158e64fc6fe9a73af7a77a7fbed6f9fcc52a9b13","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test__is_boot_order_flexibly_programmable_not_persistent("},{"line_number":204,"context_line":"            self, mock_get_drac_client):"},{"line_number":205,"context_line":"        self.assertEqual(False,"},{"line_number":206,"context_line":"                         drac_mgmt._is_boot_order_flexibly_programmable("},{"line_number":207,"context_line":"                             persistent\u003dFalse,"},{"line_number":208,"context_line":"                             bios_settings\u003d{\u0027SetBootOrderFqdd1\u0027: ()}))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_377f07df","line":205,"range":{"start_line":205,"start_character":13,"end_line":205,"end_character":30},"updated":"2018-07-30 16:21:03.000000000","message":"assertFalse","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"68d9fb7ccaf6a678ae4e80ea684f80eacc690bf4","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test__is_boot_order_flexibly_programmable_not_persistent("},{"line_number":204,"context_line":"            self, mock_get_drac_client):"},{"line_number":205,"context_line":"        self.assertEqual(False,"},{"line_number":206,"context_line":"                         drac_mgmt._is_boot_order_flexibly_programmable("},{"line_number":207,"context_line":"                             persistent\u003dFalse,"},{"line_number":208,"context_line":"                             bios_settings\u003d{\u0027SetBootOrderFqdd1\u0027: ()}))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_61691824","line":205,"range":{"start_line":205,"start_character":13,"end_line":205,"end_character":30},"in_reply_to":"5f7c97a3_377f07df","updated":"2018-07-31 20:08:47.000000000","message":"Done","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"158e64fc6fe9a73af7a77a7fbed6f9fcc52a9b13","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def test__is_boot_order_flexibly_programmable_with_no_bios_setting("},{"line_number":211,"context_line":"            self, mock_get_drac_client):"},{"line_number":212,"context_line":"        self.assertEqual(False,"},{"line_number":213,"context_line":"                         drac_mgmt._is_boot_order_flexibly_programmable("},{"line_number":214,"context_line":"                             persistent\u003dTrue,"},{"line_number":215,"context_line":"                             bios_settings\u003d{}))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_b76a3715","line":212,"range":{"start_line":212,"start_character":12,"end_line":212,"end_character":30},"updated":"2018-07-30 16:21:03.000000000","message":"ditto","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"68d9fb7ccaf6a678ae4e80ea684f80eacc690bf4","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def test__is_boot_order_flexibly_programmable_with_no_bios_setting("},{"line_number":211,"context_line":"            self, mock_get_drac_client):"},{"line_number":212,"context_line":"        self.assertEqual(False,"},{"line_number":213,"context_line":"                         drac_mgmt._is_boot_order_flexibly_programmable("},{"line_number":214,"context_line":"                             persistent\u003dTrue,"},{"line_number":215,"context_line":"                             bios_settings\u003d{}))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_216fa029","line":212,"range":{"start_line":212,"start_character":12,"end_line":212,"end_character":30},"in_reply_to":"5f7c97a3_b76a3715","updated":"2018-07-31 20:08:47.000000000","message":"Done","commit_id":"9416afd5f703055b29a66c0c32e374a1080d0e0e"}]}
