)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b044a5235b397c8bf137e4d7e50866f231cdf004","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2017-01-13 17:52:38 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow setting UEFI boot devices in DRAC driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I92e692a0a810481b89b5c00ad7baf19db429840f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a3c09a3_be10c502","line":8,"updated":"2017-01-16 10:52:27.000000000","message":"It would be good to have some explanation about what is being done here.\n\n(and I release note about this new feature too)","commit_id":"1b008f021a5d7a7844a7eda7f989152e96d7f758"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"274e72f1fbfd61f5eaa5737aa44877840bd76910","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2017-01-13 17:52:38 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow setting UEFI boot devices in DRAC driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I92e692a0a810481b89b5c00ad7baf19db429840f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a3c09a3_fbdc1114","line":8,"in_reply_to":"7a3c09a3_1b8d5d7b","updated":"2017-01-16 14:56:38.000000000","message":"I was unsure, but yeah if it feels like a bug let\u0027s treat it as a bug fix then.\n\nThanks","commit_id":"1b008f021a5d7a7844a7eda7f989152e96d7f758"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"1842654fe9bdba4b01e85e827fa0072338a5d1b4","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2017-01-13 17:52:38 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow setting UEFI boot devices in DRAC driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I92e692a0a810481b89b5c00ad7baf19db429840f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a3c09a3_1b8d5d7b","line":8,"in_reply_to":"7a3c09a3_be10c502","updated":"2017-01-16 14:50:21.000000000","message":"Is this a new feature? It feels more like a bugfix to me...","commit_id":"1b008f021a5d7a7844a7eda7f989152e96d7f758"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"ca3e9e7e46ba903efdc4df451e8225d61035c233","unresolved":false,"context_lines":[{"line_number":13,"context_line":"mode; this caused an error if the node was set to boot in UEFI mode."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I92e692a0a810481b89b5c00ad7baf19db429840f"},{"line_number":16,"context_line":"Fixes-Bug: #1656841"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a3c09a3_9b45cd18","line":16,"updated":"2017-01-16 14:57:12.000000000","message":"Closes-Bug:\n\nPlease, also add a release note for this fix: http://docs.openstack.org/developer/ironic/dev/faq.html#create-a-new-release-note","commit_id":"fbf115a5b04c666e41bcfcb3f5b0366a94564e25"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"768ca8210d101a72b1d60ac80e304b9b14f8edc4","unresolved":false,"context_lines":[{"line_number":13,"context_line":"mode; this caused an error if the node was set to boot in UEFI mode."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I92e692a0a810481b89b5c00ad7baf19db429840f"},{"line_number":16,"context_line":"Fixes-Bug: #1656841"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a3c09a3_980dc840","line":16,"in_reply_to":"7a3c09a3_9b45cd18","updated":"2017-01-16 17:33:24.000000000","message":"Done","commit_id":"fbf115a5b04c666e41bcfcb3f5b0366a94564e25"}],"ironic/drivers/modules/drac/management.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b044a5235b397c8bf137e4d7e50866f231cdf004","unresolved":false,"context_lines":[{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"# BootMode constants"},{"line_number":47,"context_line":"PERSISTENT_BOOT_MODE \u003d \u0027IPL\u0027"},{"line_number":48,"context_line":"NON_PERSISTENT_BOOT_MODE \u003d \u0027OneTime\u0027"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_7313f6b8","line":47,"range":{"start_line":47,"start_character":0,"end_line":47,"end_character":28},"updated":"2017-01-16 10:52:27.000000000","message":"This variable doesn\u0027t seem to be used anymore, should be removed.","commit_id":"1b008f021a5d7a7844a7eda7f989152e96d7f758"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"766694240afefc8ea8d26d24bf57b7b6f7c042ae","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        raise exception.DracOperationError(error\u003dexc)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def _get_current_boot_list(client):"},{"line_number":89,"context_line":"    \"\"\"Determine the boot list from which the next non-oneoff boot."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    The value returned is suitable for indexing into the dictionary of boot"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_2d719844","line":88,"range":{"start_line":88,"start_character":4,"end_line":88,"end_character":35},"updated":"2017-01-31 14:58:30.000000000","message":"This method doesn\u0027t seem to return a list but the actual value of the index 0.","commit_id":"432be61016599b6da9ebdec63c879f8d878df98d"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"a7e810832e07fbfff13bbd6c90c2b3a4bef5acc1","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        raise exception.DracOperationError(error\u003dexc)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def _get_current_boot_list(client):"},{"line_number":89,"context_line":"    \"\"\"Determine the boot list from which the next non-oneoff boot."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    The value returned is suitable for indexing into the dictionary of boot"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_59e086fa","line":88,"updated":"2017-01-31 16:56:52.000000000","message":"This method returns the permanent boot mode.  Could you rename this method so that it doesn\u0027t include \"list\" in the name?  List implies that it returns multiple boot modes.  Maybe \"_get_current_boot_mode\"?","commit_id":"432be61016599b6da9ebdec63c879f8d878df98d"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"766694240afefc8ea8d26d24bf57b7b6f7c042ae","unresolved":false,"context_lines":[{"line_number":88,"context_line":"def _get_current_boot_list(client):"},{"line_number":89,"context_line":"    \"\"\"Determine the boot list from which the next non-oneoff boot."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    The value returned is suitable for indexing into the dictionary of boot"},{"line_number":92,"context_line":"    devices, i.e. \u0027BIOS\u0027 rather than \u0027Bios\u0027."},{"line_number":93,"context_line":"    \"\"\""},{"line_number":94,"context_line":"    boot_modes \u003d client.list_boot_modes()"},{"line_number":95,"context_line":"    next_boot_modes \u003d [mode.id for mode in boot_modes if mode.is_next"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_8d7b6c7a","line":92,"range":{"start_line":91,"start_character":4,"end_line":92,"end_character":44},"updated":"2017-01-31 14:58:30.000000000","message":"nit:\n\n:returns: \u003cexplanation\u003e","commit_id":"432be61016599b6da9ebdec63c879f8d878df98d"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"a7e810832e07fbfff13bbd6c90c2b3a4bef5acc1","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        current_boot_device \u003d _get_boot_device(node, drac_boot_devices)"},{"line_number":122,"context_line":"        # If we are already booting from the right device, do nothing."},{"line_number":123,"context_line":"        if current_boot_device \u003d\u003d {\u0027boot_device\u0027: device,"},{"line_number":124,"context_line":"                                   \u0027persistent\u0027: persistent}:"},{"line_number":125,"context_line":"            LOG.debug(\u0027DRAC already set to boot from %s\u0027, device)"},{"line_number":126,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_218b5f69","line":123,"updated":"2017-01-31 16:56:52.000000000","message":"I think this check is now incorrect because it doesn\u0027t take into account the boot mode.  Say the user wants to change the boot device from bios/disk to uefi/disk.  They set some property on the node as specified in deploy_utils.get_boot_mode_for_deploy() and then call into this method with \"disk\".  _get_boot_device will return \"disk\", and we will return from here without ever changing the boot mode.","commit_id":"432be61016599b6da9ebdec63c879f8d878df98d"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"d34acb2ce05edb38b67039e163d125be5bfc0693","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        current_boot_device \u003d _get_boot_device(node, drac_boot_devices)"},{"line_number":122,"context_line":"        # If we are already booting from the right device, do nothing."},{"line_number":123,"context_line":"        if current_boot_device \u003d\u003d {\u0027boot_device\u0027: device,"},{"line_number":124,"context_line":"                                   \u0027persistent\u0027: persistent}:"},{"line_number":125,"context_line":"            LOG.debug(\u0027DRAC already set to boot from %s\u0027, device)"},{"line_number":126,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_b8f05dca","line":123,"in_reply_to":"3a461143_218b5f69","updated":"2017-02-01 18:10:05.000000000","message":"Good point, thanks. This should also hopefully allow me to factor out the mode-setting logic into a separate method. I want to do a small test first, but will address this on my next-but-one revision.","commit_id":"432be61016599b6da9ebdec63c879f8d878df98d"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"a7e810832e07fbfff13bbd6c90c2b3a4bef5acc1","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            return"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        deploy_boot_mode \u003d deploy_utils.get_boot_mode_for_deploy(node)"},{"line_number":129,"context_line":"        current_boot_list \u003d _get_current_boot_list(client)"},{"line_number":130,"context_line":"        deploy_boot_list \u003d _BOOT_LIST_MAP[deploy_boot_mode]"},{"line_number":131,"context_line":"        if persistent:"},{"line_number":132,"context_line":"            desired_boot_list \u003d deploy_boot_list"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_99cd8e87","line":129,"updated":"2017-01-31 16:56:52.000000000","message":"Could you rename \"current_boot_list\" to something that doesn\u0027t include the word \"list\" since this is 1 element, not a list.","commit_id":"432be61016599b6da9ebdec63c879f8d878df98d"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"d34acb2ce05edb38b67039e163d125be5bfc0693","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            return"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        deploy_boot_mode \u003d deploy_utils.get_boot_mode_for_deploy(node)"},{"line_number":129,"context_line":"        current_boot_list \u003d _get_current_boot_list(client)"},{"line_number":130,"context_line":"        deploy_boot_list \u003d _BOOT_LIST_MAP[deploy_boot_mode]"},{"line_number":131,"context_line":"        if persistent:"},{"line_number":132,"context_line":"            desired_boot_list \u003d deploy_boot_list"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_5884d909","line":129,"in_reply_to":"3a461143_99cd8e87","updated":"2017-02-01 18:10:05.000000000","message":"Good point. It\u0027s the *name* of the current boot list (\"IPL\" or \"UEFI\"), which is not the same thing as the current boot mode (\"Bios\" or \"Uefi\"). I suppose I could call it current_boot_list_name.","commit_id":"432be61016599b6da9ebdec63c879f8d878df98d"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"a7e810832e07fbfff13bbd6c90c2b3a4bef5acc1","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        deploy_boot_mode \u003d deploy_utils.get_boot_mode_for_deploy(node)"},{"line_number":129,"context_line":"        current_boot_list \u003d _get_current_boot_list(client)"},{"line_number":130,"context_line":"        deploy_boot_list \u003d _BOOT_LIST_MAP[deploy_boot_mode]"},{"line_number":131,"context_line":"        if persistent:"},{"line_number":132,"context_line":"            desired_boot_list \u003d deploy_boot_list"},{"line_number":133,"context_line":"            # We must change the boot mode *before* setting the boot device,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_59016669","line":130,"updated":"2017-01-31 16:56:52.000000000","message":"Same here with deploy_boot_list","commit_id":"432be61016599b6da9ebdec63c879f8d878df98d"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"a7e810832e07fbfff13bbd6c90c2b3a4bef5acc1","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        current_boot_list \u003d _get_current_boot_list(client)"},{"line_number":130,"context_line":"        deploy_boot_list \u003d _BOOT_LIST_MAP[deploy_boot_mode]"},{"line_number":131,"context_line":"        if persistent:"},{"line_number":132,"context_line":"            desired_boot_list \u003d deploy_boot_list"},{"line_number":133,"context_line":"            # We must change the boot mode *before* setting the boot device,"},{"line_number":134,"context_line":"            # since inactive boot lists are read-only."},{"line_number":135,"context_line":"            if current_boot_list !\u003d deploy_boot_list:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_19327e5f","line":132,"updated":"2017-01-31 16:56:52.000000000","message":"Same here with desired_boot_list","commit_id":"432be61016599b6da9ebdec63c879f8d878df98d"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"a7e810832e07fbfff13bbd6c90c2b3a4bef5acc1","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        deploy_boot_list \u003d _BOOT_LIST_MAP[deploy_boot_mode]"},{"line_number":131,"context_line":"        if persistent:"},{"line_number":132,"context_line":"            desired_boot_list \u003d deploy_boot_list"},{"line_number":133,"context_line":"            # We must change the boot mode *before* setting the boot device,"},{"line_number":134,"context_line":"            # since inactive boot lists are read-only."},{"line_number":135,"context_line":"            if current_boot_list !\u003d deploy_boot_list:"},{"line_number":136,"context_line":"                # Ironic uses lowercase \"uefi\" and \"bios\" for boot modes, but"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_3c02a40a","line":133,"updated":"2017-01-31 16:56:52.000000000","message":"I would think that we want these lines from 133-139 outside this check for persistent.  If the user has changed the boot mode on the node in ironic and then called into this method, then we should change the boot mode regardless of the value of the persistent flag.  It should be noted that persistent is defaulted to False, so if the user changed the boot mode on the ironic node, then got the boot device, then called set_boot_device(same_device), the boot mode on the physical server won\u0027t be changed with the current code, which seems wrong to me.","commit_id":"432be61016599b6da9ebdec63c879f8d878df98d"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"766694240afefc8ea8d26d24bf57b7b6f7c042ae","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            desired_boot_list \u003d deploy_boot_list"},{"line_number":133,"context_line":"            # We must change the boot mode *before* setting the boot device,"},{"line_number":134,"context_line":"            # since inactive boot lists are read-only."},{"line_number":135,"context_line":"            if current_boot_list !\u003d deploy_boot_list:"},{"line_number":136,"context_line":"                # Ironic uses lowercase \"uefi\" and \"bios\" for boot modes, but"},{"line_number":137,"context_line":"                # to set the boot mode you must use \"Bios\" and \"Uefi\"."},{"line_number":138,"context_line":"                client.set_bios_settings(\u0027BootMode\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_6da720bd","line":135,"range":{"start_line":135,"start_character":12,"end_line":135,"end_character":53},"updated":"2017-01-31 14:58:30.000000000","message":"I find this names misleading, none of these variables are a list. E.g \"deploy_boot_list\" will be either: \"UEFI\" or \"IPL\".\n\nAnd _get_current_boot_list() (see comment above) will actually return the value in the index 0 of a list.","commit_id":"432be61016599b6da9ebdec63c879f8d878df98d"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"d34acb2ce05edb38b67039e163d125be5bfc0693","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            desired_boot_list \u003d deploy_boot_list"},{"line_number":133,"context_line":"            # We must change the boot mode *before* setting the boot device,"},{"line_number":134,"context_line":"            # since inactive boot lists are read-only."},{"line_number":135,"context_line":"            if current_boot_list !\u003d deploy_boot_list:"},{"line_number":136,"context_line":"                # Ironic uses lowercase \"uefi\" and \"bios\" for boot modes, but"},{"line_number":137,"context_line":"                # to set the boot mode you must use \"Bios\" and \"Uefi\"."},{"line_number":138,"context_line":"                client.set_bios_settings(\u0027BootMode\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_3898ed69","line":135,"in_reply_to":"3a461143_6da720bd","updated":"2017-02-01 18:10:05.000000000","message":"Right, it\u0027s the name of a list of boot devices (which is not the same as the associated boot mode, because that would be too easy). I\u0027ll try `current_boot_list_name` or something.","commit_id":"432be61016599b6da9ebdec63c879f8d878df98d"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"766694240afefc8ea8d26d24bf57b7b6f7c042ae","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                client.set_bios_settings(\u0027BootMode\u0027,"},{"line_number":139,"context_line":"                                         _BOOT_MODE_MAP[deploy_boot_mode])"},{"line_number":140,"context_line":"        else:"},{"line_number":141,"context_line":"            desired_boot_list \u003d NON_PERSISTENT_BOOT_MODE"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        # The OneTime boot mode has no boot-device list of its own, but accepts"},{"line_number":144,"context_line":"        # boot devices from any other boot mode. Persistent boot modes only"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_cdfbb477","line":141,"range":{"start_line":141,"start_character":12,"end_line":141,"end_character":56},"updated":"2017-01-31 14:58:30.000000000","message":"again, not a list","commit_id":"432be61016599b6da9ebdec63c879f8d878df98d"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d525d4c59ec8803eb7d4a2910f9d65f1a52563c4","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    next_boot_modes \u003d [mode.id for mode in boot_modes if mode.is_next"},{"line_number":93,"context_line":"                       and mode.id !\u003d NON_PERSISTENT_BOOT_MODE]"},{"line_number":94,"context_line":"    if dln_desired !\u003d next_boot_modes[0]:"},{"line_number":95,"context_line":"        client.set_bios_settings(node, \u0027BootMode\u0027, _BOOT_MODE_MAP[dln_desired])"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"def set_boot_device(node, device, persistent\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa31d9ce_c9033b72","line":95,"updated":"2017-02-10 21:42:46.000000000","message":"set_bios_settings returns a response that indicates if a commit is needed.  If a commit is needed then you could need to client.commit_pending_bios_changes() before this change actually takes affect.  Note that this will reboot the system...","commit_id":"be465a9ad3fc9ebf6db25c3c9ef40879ab597d39"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"e092392e83264591811665d72300c654832deab0","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    next_boot_modes \u003d [mode.id for mode in boot_modes if mode.is_next"},{"line_number":93,"context_line":"                       and mode.id !\u003d NON_PERSISTENT_BOOT_MODE]"},{"line_number":94,"context_line":"    if dln_desired !\u003d next_boot_modes[0]:"},{"line_number":95,"context_line":"        client.set_bios_settings(node, \u0027BootMode\u0027, _BOOT_MODE_MAP[dln_desired])"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"def set_boot_device(node, device, persistent\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa31d9ce_edb85d13","line":95,"in_reply_to":"fa31d9ce_c9033b72","updated":"2017-02-15 17:34:22.000000000","message":"Done","commit_id":"be465a9ad3fc9ebf6db25c3c9ef40879ab597d39"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d525d4c59ec8803eb7d4a2910f9d65f1a52563c4","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"            :boot_device: the boot device, one of"},{"line_number":209,"context_line":"                :mod:`ironic.common.boot_devices` or None if it is unknown."},{"line_number":210,"context_line":"            :persistent: whether the boot device will persist to all future"},{"line_number":211,"context_line":"                boots or not, None if it is unknown."},{"line_number":212,"context_line":"        \"\"\""},{"line_number":213,"context_line":"        node \u003d task.node"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa31d9ce_093f13b5","line":210,"updated":"2017-02-10 21:42:46.000000000","message":"If we\u0027re not going to return \"persistent\"in the dict any more, then this comment should be updated.","commit_id":"be465a9ad3fc9ebf6db25c3c9ef40879ab597d39"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"e092392e83264591811665d72300c654832deab0","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"            :boot_device: the boot device, one of"},{"line_number":209,"context_line":"                :mod:`ironic.common.boot_devices` or None if it is unknown."},{"line_number":210,"context_line":"            :persistent: whether the boot device will persist to all future"},{"line_number":211,"context_line":"                boots or not, None if it is unknown."},{"line_number":212,"context_line":"        \"\"\""},{"line_number":213,"context_line":"        node \u003d task.node"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa31d9ce_ad1e6509","line":210,"in_reply_to":"fa31d9ce_093f13b5","updated":"2017-02-15 17:34:22.000000000","message":"...and on closer inspection, it turns out that this dictionary structure comes from the superclass method, which is common across drivers. Which I think means I have to throw this approach away.","commit_id":"be465a9ad3fc9ebf6db25c3c9ef40879ab597d39"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"463d4a35f192651db09a5bf6c6c9b8d033304157","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"            :boot_device: the boot device, one of"},{"line_number":209,"context_line":"                :mod:`ironic.common.boot_devices` or None if it is unknown."},{"line_number":210,"context_line":"            :persistent: whether the boot device will persist to all future"},{"line_number":211,"context_line":"                boots or not, None if it is unknown."},{"line_number":212,"context_line":"        \"\"\""},{"line_number":213,"context_line":"        node \u003d task.node"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa31d9ce_d8e439ad","line":210,"in_reply_to":"fa31d9ce_ad1e6509","updated":"2017-02-15 18:11:20.000000000","message":"Done","commit_id":"be465a9ad3fc9ebf6db25c3c9ef40879ab597d39"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d525d4c59ec8803eb7d4a2910f9d65f1a52563c4","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        boot_device \u003d node.driver_internal_info.get(\u0027drac_boot_device\u0027)"},{"line_number":216,"context_line":"        # If the cache was written by a version of the code that did not"},{"line_number":217,"context_line":"        # support UEFI boot, invalidate it"},{"line_number":218,"context_line":"        if (boot_device is not None) and (\u0027persistent\u0027 not in boot_device) :"},{"line_number":219,"context_line":"            return boot_device"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        return _get_boot_device(node)"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa31d9ce_0e5c794a","line":218,"updated":"2017-02-10 21:42:46.000000000","message":"In the set_boot_device method below, \"persistent\" is still being set in the drac_boot_device property.  This means that with the current code, the cache will be ignored and _get_boot_device called, which isn\u0027t what we want.","commit_id":"be465a9ad3fc9ebf6db25c3c9ef40879ab597d39"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"463d4a35f192651db09a5bf6c6c9b8d033304157","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        boot_device \u003d node.driver_internal_info.get(\u0027drac_boot_device\u0027)"},{"line_number":216,"context_line":"        # If the cache was written by a version of the code that did not"},{"line_number":217,"context_line":"        # support UEFI boot, invalidate it"},{"line_number":218,"context_line":"        if (boot_device is not None) and (\u0027persistent\u0027 not in boot_device) :"},{"line_number":219,"context_line":"            return boot_device"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        return _get_boot_device(node)"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa31d9ce_d8fb5945","line":218,"in_reply_to":"fa31d9ce_0e5c794a","updated":"2017-02-15 18:11:20.000000000","message":"Done","commit_id":"be465a9ad3fc9ebf6db25c3c9ef40879ab597d39"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"79fdf12f547bbf55259b2a654de9f3622b7bb2c6","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        if persistent:"},{"line_number":142,"context_line":"            dln_to_set \u003d dln_take_from"},{"line_number":143,"context_line":"        else:"},{"line_number":144,"context_line":"            dln_to_set \u003d NON_PERSISTENT_BOOT_MODE"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        drac_boot_devices \u003d client.list_boot_devices()"},{"line_number":147,"context_line":"        current_boot_device \u003d _get_boot_device(node, drac_boot_devices)"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa31d9ce_337f36e1","line":144,"updated":"2017-02-15 18:53:13.000000000","message":"Nit. You can simplify this to:\ndln_to_set \u003d dln_take_from if persistent else NON_PERSISTENT_BOOT_MODE","commit_id":"daad3f05f0b2cad6eeb25ee4aa1392e400de8a17"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"091e714935b2cb6954c28558a09b746dffa7b431","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        if persistent:"},{"line_number":142,"context_line":"            dln_to_set \u003d dln_take_from"},{"line_number":143,"context_line":"        else:"},{"line_number":144,"context_line":"            dln_to_set \u003d NON_PERSISTENT_BOOT_MODE"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        drac_boot_devices \u003d client.list_boot_devices()"},{"line_number":147,"context_line":"        current_boot_device \u003d _get_boot_device(node, drac_boot_devices)"}],"source_content_type":"text/x-python","patch_set":16,"id":"da36d5c6_3a60a935","line":144,"in_reply_to":"fa31d9ce_337f36e1","updated":"2017-04-12 10:36:38.000000000","message":"Done","commit_id":"daad3f05f0b2cad6eeb25ee4aa1392e400de8a17"}],"ironic/tests/unit/drivers/modules/drac/test_management.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b044a5235b397c8bf137e4d7e50866f231cdf004","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def boot_modes(self, *next_modes):"},{"line_number":44,"context_line":"        modes \u003d ["},{"line_number":45,"context_line":"            {\u0027id\u0027: \u0027IPL\u0027, \u0027name\u0027: \u0027BootSeq\u0027, \u0027is_current\u0027: True},"},{"line_number":46,"context_line":"            {\u0027id\u0027: \u0027UEFI\u0027, \u0027name\u0027: \u0027BootSeq\u0027, \u0027is_current\u0027: False},"},{"line_number":47,"context_line":"            {\u0027id\u0027: \u0027OneTime\u0027, \u0027name\u0027: \u0027OneTimeBootMode\u0027, \u0027is_current\u0027: False}]"},{"line_number":48,"context_line":"        for mode in modes:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_5ee4413a","line":45,"range":{"start_line":45,"start_character":46,"end_line":45,"end_character":56},"updated":"2017-01-16 10:52:27.000000000","message":"I only see this \"is_current\" key being set here, I don\u0027t think it\u0027s being used by any tests or in the main code ?","commit_id":"1b008f021a5d7a7844a7eda7f989152e96d7f758"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"1842654fe9bdba4b01e85e827fa0072338a5d1b4","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def boot_modes(self, *next_modes):"},{"line_number":44,"context_line":"        modes \u003d ["},{"line_number":45,"context_line":"            {\u0027id\u0027: \u0027IPL\u0027, \u0027name\u0027: \u0027BootSeq\u0027, \u0027is_current\u0027: True},"},{"line_number":46,"context_line":"            {\u0027id\u0027: \u0027UEFI\u0027, \u0027name\u0027: \u0027BootSeq\u0027, \u0027is_current\u0027: False},"},{"line_number":47,"context_line":"            {\u0027id\u0027: \u0027OneTime\u0027, \u0027name\u0027: \u0027OneTimeBootMode\u0027, \u0027is_current\u0027: False}]"},{"line_number":48,"context_line":"        for mode in modes:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_7b6f41c5","line":45,"in_reply_to":"7a3c09a3_5ee4413a","updated":"2017-01-16 14:50:21.000000000","message":"Done","commit_id":"1b008f021a5d7a7844a7eda7f989152e96d7f758"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b044a5235b397c8bf137e4d7e50866f231cdf004","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    @mock.patch.object(drac_job, \u0027validate_job_queue\u0027, spec_set\u003dTrue,"},{"line_number":171,"context_line":"                       autospec\u003dTrue)"},{"line_number":172,"context_line":"    def test_set_boot_device_uefi(self, mock_validate_job_queue,"},{"line_number":173,"context_line":"                             mock__get_boot_device, mock_get_drac_client):"},{"line_number":174,"context_line":"        mock_client \u003d mock.Mock()"},{"line_number":175,"context_line":"        mock_get_drac_client.return_value \u003d mock_client"},{"line_number":176,"context_line":"        mock_client.list_boot_modes.return_value \u003d self.boot_modes(\u0027UEFI\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_3e1cd511","line":173,"updated":"2017-01-16 10:52:27.000000000","message":"There\u0027s a pep8 error here regarding this indentation: \n\nhttp://logs.openstack.org/07/420107/1/check/gate-ironic-pep8-ubuntu-xenial/217b14e/console.html.gz#_2017-01-13_17_59_35_321865","commit_id":"1b008f021a5d7a7844a7eda7f989152e96d7f758"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"1842654fe9bdba4b01e85e827fa0072338a5d1b4","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    @mock.patch.object(drac_job, \u0027validate_job_queue\u0027, spec_set\u003dTrue,"},{"line_number":171,"context_line":"                       autospec\u003dTrue)"},{"line_number":172,"context_line":"    def test_set_boot_device_uefi(self, mock_validate_job_queue,"},{"line_number":173,"context_line":"                             mock__get_boot_device, mock_get_drac_client):"},{"line_number":174,"context_line":"        mock_client \u003d mock.Mock()"},{"line_number":175,"context_line":"        mock_get_drac_client.return_value \u003d mock_client"},{"line_number":176,"context_line":"        mock_client.list_boot_modes.return_value \u003d self.boot_modes(\u0027UEFI\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_5b78c58f","line":173,"in_reply_to":"7a3c09a3_3e1cd511","updated":"2017-01-16 14:50:21.000000000","message":"Done","commit_id":"1b008f021a5d7a7844a7eda7f989152e96d7f758"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b044a5235b397c8bf137e4d7e50866f231cdf004","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    @mock.patch.object(drac_job, \u0027validate_job_queue\u0027, spec_set\u003dTrue,"},{"line_number":193,"context_line":"                       autospec\u003dTrue)"},{"line_number":194,"context_line":"    def test_set_boot_device_uefi_persistent(self, mock_validate_job_queue,"},{"line_number":195,"context_line":"                                  mock__get_boot_device, mock_get_drac_client):"},{"line_number":196,"context_line":"        mock_client \u003d mock.Mock()"},{"line_number":197,"context_line":"        mock_get_drac_client.return_value \u003d mock_client"},{"line_number":198,"context_line":"        mock_client.list_boot_modes.return_value \u003d self.boot_modes(\u0027UEFI\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_9ed78922","line":195,"updated":"2017-01-16 10:52:27.000000000","message":"ditto pep8 error","commit_id":"1b008f021a5d7a7844a7eda7f989152e96d7f758"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"1842654fe9bdba4b01e85e827fa0072338a5d1b4","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    @mock.patch.object(drac_job, \u0027validate_job_queue\u0027, spec_set\u003dTrue,"},{"line_number":193,"context_line":"                       autospec\u003dTrue)"},{"line_number":194,"context_line":"    def test_set_boot_device_uefi_persistent(self, mock_validate_job_queue,"},{"line_number":195,"context_line":"                                  mock__get_boot_device, mock_get_drac_client):"},{"line_number":196,"context_line":"        mock_client \u003d mock.Mock()"},{"line_number":197,"context_line":"        mock_get_drac_client.return_value \u003d mock_client"},{"line_number":198,"context_line":"        mock_client.list_boot_modes.return_value \u003d self.boot_modes(\u0027UEFI\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_3b75b997","line":195,"in_reply_to":"7a3c09a3_9ed78922","updated":"2017-01-16 14:50:21.000000000","message":"Done","commit_id":"1b008f021a5d7a7844a7eda7f989152e96d7f758"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"79fdf12f547bbf55259b2a654de9f3622b7bb2c6","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        mock_validate_job_queue.assert_called_once_with(self.node)"},{"line_number":220,"context_line":"        mock_client.change_boot_device_order.assert_called_once_with("},{"line_number":221,"context_line":"            \u0027UEFI\u0027, \u0027BIOS.Setup.1-1#UefiBootSeq#NIC.Embedded.1-1-1\u0027)"},{"line_number":222,"context_line":"        mock_client.commit_pending_bios_changes.assert_called_once_with()"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    @mock.patch.object(drac_mgmt.deploy_utils, \u0027get_boot_mode_for_deploy\u0027,"},{"line_number":225,"context_line":"                       spec_set\u003dTrue, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa31d9ce_05e3c5d9","line":222,"updated":"2017-02-15 18:53:13.000000000","message":"Consider using ddt to condense test_set_boot_device_uefi and test_set_boot_device_uefi_persistent into a single test.\nDDT documentation -\u003e http://ddt.readthedocs.io/en/latest/example.html","commit_id":"daad3f05f0b2cad6eeb25ee4aa1392e400de8a17"}],"releasenotes/notes/uefi_drac_boot-d0959d692912d5a2.yaml":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"911888faeb73c73b12c369d443fd0965e66dc3de","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - allows the pxe_drac driver to boot nodes in UEFI boot mode"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7a3c09a3_d33571da","line":3,"range":{"start_line":3,"start_character":15,"end_line":3,"end_character":23},"updated":"2017-01-16 17:34:53.000000000","message":"Not a big deal but, may I suggest:\n\n\"Allows the DRAC drivers ...\"\n\nTo make it more generic, we current have pxe_drac and pxe_drac_inspector drivers in tree.","commit_id":"84b0c38bb413c22e0bfd2afa4d5923cbb93497fe"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"05fae061835ab3d647a3d65e80a5f7bbbb2b3afe","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - allows the pxe_drac driver to boot nodes in UEFI boot mode"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5a3905b3_b875e6fa","line":3,"in_reply_to":"7a3c09a3_d33571da","updated":"2017-01-23 14:31:37.000000000","message":"Done","commit_id":"84b0c38bb413c22e0bfd2afa4d5923cbb93497fe"}]}
