)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"2fa08a1ef9fec8ba7d4e0825b5b5061c1b91f95a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"fe47d14b_51378d6e","updated":"2024-06-21 16:50:38.000000000","message":"How do I document this?","commit_id":"fce4b77008cc429ceb875e39ad88da00d1a06fb8"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"2b2bf59e9007208f48039e78d79a7da884da057b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"5e60a52d_4a847213","updated":"2024-06-27 13:25:33.000000000","message":"I\u0027ll be awaiting reviews from more Cores and any other people that are interested in this changeset.","commit_id":"fce4b77008cc429ceb875e39ad88da00d1a06fb8"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"ecfd34147a51c4cf653823f27c90894ccb0f3349","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"dd9dac35_8bb7298b","updated":"2024-06-21 19:41:18.000000000","message":"So, by implementing the config variable as I suggested, you also need to make it generic enough to work for both cases. e.g. someone could theoretically set allowed_x_boot_modes \u003d [\u0027bios\u0027] and want UEFI boots disabled.\n\nI would potentially suggest getting feedback on the direction from another core who might be invested in this as well before investing too much more time in this change.","commit_id":"fce4b77008cc429ceb875e39ad88da00d1a06fb8"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"752f169fcc064f155787657980f29277ed9b763c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3390d75f_5df70d71","in_reply_to":"52da74a7_4d48e531","updated":"2024-07-18 14:45:37.000000000","message":"My main concern is that we didn\u0027t just make it a bios-specific option. Going with a blocklist is just as fine with me as an allowlist.","commit_id":"fce4b77008cc429ceb875e39ad88da00d1a06fb8"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"2a734797fc344d6961a586f89d64d7073223492d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"52da74a7_4d48e531","in_reply_to":"68f63151_3ea9d9ec","updated":"2024-07-18 13:50:56.000000000","message":"Going with a list of not-allowed modes sounds more flexible and simpler than the user needing to list all allowed modes, going this direction, but if there are any objections, I\u0027m to those.","commit_id":"fce4b77008cc429ceb875e39ad88da00d1a06fb8"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"f939a0a754583508ee7266c8dc639c1e2491a679","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"68f63151_3ea9d9ec","in_reply_to":"dd9dac35_8bb7298b","updated":"2024-07-18 07:19:00.000000000","message":"this sounds reasonable, we maybe need to take into consideration also the possibility do to the reverse, so an option to \"disallow\" boot methods","commit_id":"fce4b77008cc429ceb875e39ad88da00d1a06fb8"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a94ae15f06c08db3205c516144b30cd4e443c988","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"5a634915_8e02fab4","updated":"2024-07-19 14:22:56.000000000","message":"One small thing, I was looking into if we needed to be defensive -- e.g. strip() or lower() the values in the node, and I found that in common/boot_modes.py we have constants for boot modes -- can we use those here?","commit_id":"d6c9879acabd8ce1b440f4723ea04ae808ccda42"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"4e7ddd7d4bdbcf6440715c7152770d9eecef2de1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f451077a_e752b8d7","updated":"2024-07-19 14:23:55.000000000","message":"That was an incorrect comment, you don\u0027t use the text of those anymore since swapping this to a \"disabled\" pattern.","commit_id":"d6c9879acabd8ce1b440f4723ea04ae808ccda42"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"10c7261d16fbe31b0a7c3c63ae5176c5f56f49cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"4d235dea_2d56a043","updated":"2024-07-21 04:48:50.000000000","message":"Are the notes (in the new unit tests) required, and if yes, too repetitive?","commit_id":"7150ef571102e3197060fddafd3c695073200d21"}],"ironic/api/controllers/v1/node.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b4c6f42d92bc715f12df38cf3f032c27cf8e2649","unresolved":true,"context_lines":[{"line_number":2778,"context_line":"        node_capabilities \u003d node.get(\u0027properties\u0027, {}).get(\u0027capabilities\u0027, \u0027\u0027)"},{"line_number":2779,"context_line":"        if (\u0027boot_mode:bios\u0027 in node_capabilities and not"},{"line_number":2780,"context_line":"            CONF.api.allow_enroll_in_bios_mode):"},{"line_number":2781,"context_line":"            raise exception.BIOSBootModeNotAllowed(op\u003d_(\u0027provisioning\u0027))"},{"line_number":2782,"context_line":""},{"line_number":2783,"context_line":"        context \u003d api.request.context"},{"line_number":2784,"context_line":"        owned_node \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"4bac58b9_df13fac1","line":2781,"updated":"2024-06-20 15:50:49.000000000","message":"Consider DRY\u0027ing up this check into a separate method, similar to what we do for API microversion checks.","commit_id":"b9ce4082bb03ed08698e2a6a646e69b2141515f7"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"2826d2f55c74931cbdafd728dd930c7e20536fd1","unresolved":false,"context_lines":[{"line_number":2778,"context_line":"        node_capabilities \u003d node.get(\u0027properties\u0027, {}).get(\u0027capabilities\u0027, \u0027\u0027)"},{"line_number":2779,"context_line":"        if (\u0027boot_mode:bios\u0027 in node_capabilities and not"},{"line_number":2780,"context_line":"            CONF.api.allow_enroll_in_bios_mode):"},{"line_number":2781,"context_line":"            raise exception.BIOSBootModeNotAllowed(op\u003d_(\u0027provisioning\u0027))"},{"line_number":2782,"context_line":""},{"line_number":2783,"context_line":"        context \u003d api.request.context"},{"line_number":2784,"context_line":"        owned_node \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"738541fa_d1e84407","line":2781,"in_reply_to":"4bac58b9_df13fac1","updated":"2024-06-21 15:24:18.000000000","message":"Acknowledged","commit_id":"b9ce4082bb03ed08698e2a6a646e69b2141515f7"}],"ironic/conductor/deployments.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"aa33f3aae09d2549c7f33835699c34887408f6cd","unresolved":true,"context_lines":[{"line_number":61,"context_line":"    if disallowed_boot_modes:"},{"line_number":62,"context_line":"        if (task.node.properties.get(\u0027boot_mode\u0027) \u003d\u003d \u0027bios\u0027"},{"line_number":63,"context_line":"            and \u0027bios\u0027 in disallowed_boot_modes):"},{"line_number":64,"context_line":"            raise exception.BIOSBootModeNotAllowed(op\u003d_(\u0027provisioning\u0027))"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"@METRICS.timer(\u0027start_deploy\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"2a5cbe98_fdd114de","line":64,"updated":"2024-07-18 14:54:59.000000000","message":"We need to make this more generic. Right now, it doesn\u0027t appear it would work in the case of uefi. Ideally, it\u0027d be generically written enough to not need to be updated when/if we ever added another boot mode. Something like:\n\nif disallowed_boot_modes \u0026\u0026 task.node.properties.get(\u0027boot_mode\u0027, \u0027\u0027).lower() in disallowed_boot_modes)\n\nYou\u0027d need to similarly normalize the config entries (I think oslo may do this for us?) and also you should make this exception less bios-specific: e.g. BootModeNotAllowed(mode\u003dbios, op\u003dprovisioning)","commit_id":"b979070b65a824fe788635dffe74ea1b3a888f4f"}],"ironic/conf/api.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b4c6f42d92bc715f12df38cf3f032c27cf8e2649","unresolved":true,"context_lines":[{"line_number":95,"context_line":"    cfg.BoolOpt(\u0027allow_enroll_in_bios_mode\u0027,"},{"line_number":96,"context_line":"                default\u003dTrue,"},{"line_number":97,"context_line":"                mutable\u003dTrue,"},{"line_number":98,"context_line":"                help\u003d_(\u0027Whether to prevent new enrollment in bios mode.\u0027)),"},{"line_number":99,"context_line":"]"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"opt_group \u003d cfg.OptGroup(name\u003d\u0027api\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"002b3f72_4fc74381","line":98,"updated":"2024-06-20 15:50:49.000000000","message":"I wonder if this should be \"allowed_enrollment_boot_modes\" with a default of [uefi,bios] instead of this being bios-specific. Unsure if it\u0027s useful to guard against a possible, third new way to boot servers being developed, but I believe it\u0027d be possible in an ARM world.","commit_id":"b9ce4082bb03ed08698e2a6a646e69b2141515f7"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"2826d2f55c74931cbdafd728dd930c7e20536fd1","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    cfg.BoolOpt(\u0027allow_enroll_in_bios_mode\u0027,"},{"line_number":96,"context_line":"                default\u003dTrue,"},{"line_number":97,"context_line":"                mutable\u003dTrue,"},{"line_number":98,"context_line":"                help\u003d_(\u0027Whether to prevent new enrollment in bios mode.\u0027)),"},{"line_number":99,"context_line":"]"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"opt_group \u003d cfg.OptGroup(name\u003d\u0027api\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"8d3b05d2_0573e1ce","line":98,"in_reply_to":"002b3f72_4fc74381","updated":"2024-06-21 15:24:18.000000000","message":"Acknowledged","commit_id":"b9ce4082bb03ed08698e2a6a646e69b2141515f7"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"ecfd34147a51c4cf653823f27c90894ccb0f3349","unresolved":true,"context_lines":[{"line_number":93,"context_line":"                help\u003d_(\u0027If a project scoped administrative user is permitted \u0027"},{"line_number":94,"context_line":"                       \u0027to create/delete baremetal nodes in their project.\u0027)),"},{"line_number":95,"context_line":"    cfg.ListOpt(\u0027allowed_enrollment_boot_modes\u0027,"},{"line_number":96,"context_line":"                default\u003d[],"},{"line_number":97,"context_line":"                mutable\u003dTrue,"},{"line_number":98,"context_line":"                help\u003d_(\u0027A list of allowed boot modes for enrollment.\u0027)),"},{"line_number":99,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"4cd27df2_8188c4f5","line":96,"updated":"2024-06-21 19:41:18.000000000","message":"IMO The default needs to be [bios,uefi], empty list for allowed_x_boot_modes would imply no boot modes are permitted.","commit_id":"fce4b77008cc429ceb875e39ad88da00d1a06fb8"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"f939a0a754583508ee7266c8dc639c1e2491a679","unresolved":true,"context_lines":[{"line_number":93,"context_line":"                help\u003d_(\u0027If a project scoped administrative user is permitted \u0027"},{"line_number":94,"context_line":"                       \u0027to create/delete baremetal nodes in their project.\u0027)),"},{"line_number":95,"context_line":"    cfg.ListOpt(\u0027allowed_enrollment_boot_modes\u0027,"},{"line_number":96,"context_line":"                default\u003d[],"},{"line_number":97,"context_line":"                mutable\u003dTrue,"},{"line_number":98,"context_line":"                help\u003d_(\u0027A list of allowed boot modes for enrollment.\u0027)),"},{"line_number":99,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"c7cf573d_3be216ef","line":96,"in_reply_to":"4cd27df2_8188c4f5","updated":"2024-07-18 07:19:00.000000000","message":"I agree with Jay, unless you go in the opposite direction with something like \"disabled_boot_modes\" :)\nAlso would be good to list acceptable values, and/or one or more examples","commit_id":"fce4b77008cc429ceb875e39ad88da00d1a06fb8"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"2a734797fc344d6961a586f89d64d7073223492d","unresolved":true,"context_lines":[{"line_number":93,"context_line":"                help\u003d_(\u0027If a project scoped administrative user is permitted \u0027"},{"line_number":94,"context_line":"                       \u0027to create/delete baremetal nodes in their project.\u0027)),"},{"line_number":95,"context_line":"    cfg.ListOpt(\u0027allowed_enrollment_boot_modes\u0027,"},{"line_number":96,"context_line":"                default\u003d[],"},{"line_number":97,"context_line":"                mutable\u003dTrue,"},{"line_number":98,"context_line":"                help\u003d_(\u0027A list of allowed boot modes for enrollment.\u0027)),"},{"line_number":99,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"03f79025_2b8339b7","line":96,"in_reply_to":"c7cf573d_3be216ef","updated":"2024-07-18 13:50:56.000000000","message":"Yeah. Same here.","commit_id":"fce4b77008cc429ceb875e39ad88da00d1a06fb8"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"36c6f6901680de6bd4e7f0a6c7e8e3c53c74a17a","unresolved":true,"context_lines":[{"line_number":94,"context_line":"                help\u003d_(\u0027If a project scoped administrative user is permitted \u0027"},{"line_number":95,"context_line":"                       \u0027to create/delete baremetal nodes in their project.\u0027)),"},{"line_number":96,"context_line":"    cfg.ListOpt(\u0027disallowed_enrollment_boot_modes\u0027,"},{"line_number":97,"context_line":"                item_type\u003dcfg_types.String("},{"line_number":98,"context_line":"                    choices\u003d["},{"line_number":99,"context_line":"                        (boot_modes.UEFI, _(\u0027UEFI boot mode\u0027)),"},{"line_number":100,"context_line":"                        (boot_modes.LEGACY_BIOS, _(\u0027Legacy BIOS boot mode\u0027))],"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa36f1e8_4d506dfc","line":97,"updated":"2024-07-21 05:01:34.000000000","message":"+++","commit_id":"58f84d28549b9e06d233be6465b388e873148fd2"}],"ironic/tests/unit/api/controllers/v1/test_node.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"aa33f3aae09d2549c7f33835699c34887408f6cd","unresolved":true,"context_lines":[{"line_number":2904,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_code)"},{"line_number":2905,"context_line":""},{"line_number":2906,"context_line":"    def test_update_fails_on_disabled_bios_mode(self):"},{"line_number":2907,"context_line":"        self.config(disallowed_enrollment_boot_modes\u003d[\u0027bios\u0027], group\u003d\u0027api\u0027)"},{"line_number":2908,"context_line":""},{"line_number":2909,"context_line":"        patch \u003d [{"},{"line_number":2910,"context_line":"            \u0027path\u0027: \u0027/properties/capabilities\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"8762e1a5_7af62a28","line":2907,"updated":"2024-07-18 14:54:59.000000000","message":"We should have at least one test that checks for disabled uefi being enforced, too.","commit_id":"b979070b65a824fe788635dffe74ea1b3a888f4f"}],"releasenotes/notes/allow-disabling-bios-deployments-356f3215f80a879e.yaml":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b4c6f42d92bc715f12df38cf3f032c27cf8e2649","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a configuration option to allow operators to block or allow new"},{"line_number":5,"context_line":"    deployments in BIOS boot mode."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"96101e9a_c5e75c84","line":5,"updated":"2024-06-20 15:50:49.000000000","message":"Make sure to state the name of the new config options and maybe even their defaults in this release note.","commit_id":"b9ce4082bb03ed08698e2a6a646e69b2141515f7"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"2826d2f55c74931cbdafd728dd930c7e20536fd1","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a configuration option to allow operators to block or allow new"},{"line_number":5,"context_line":"    deployments in BIOS boot mode."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"6d2aaac1_05c6b9af","line":5,"in_reply_to":"96101e9a_c5e75c84","updated":"2024-06-21 15:24:18.000000000","message":"Acknowledged","commit_id":"b9ce4082bb03ed08698e2a6a646e69b2141515f7"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"ecfd34147a51c4cf653823f27c90894ccb0f3349","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"cddf9568_a038604b","line":11,"updated":"2024-06-21 19:41:18.000000000","message":"nit: lots of extra newlines in this file","commit_id":"fce4b77008cc429ceb875e39ad88da00d1a06fb8"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"aa33f3aae09d2549c7f33835699c34887408f6cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"34162aa8_0e178103","line":11,"in_reply_to":"cddf9568_a038604b","updated":"2024-07-18 14:54:59.000000000","message":"Done","commit_id":"fce4b77008cc429ceb875e39ad88da00d1a06fb8"}]}
