diff --git a/ironic/api/controllers/v1/node.py b/ironic/api/controllers/v1/node.py index cba7a4e5cc..46c02521d4 100644 --- a/ironic/api/controllers/v1/node.py +++ b/ironic/api/controllers/v1/node.py @@ -1988,6 +1988,9 @@ class NodesController(rest.RestController): # of just before saving so we calculate correctly. if field == 'conductor_group': patch_val = patch_val.lower() + # Node object protected field is not nullable + if field == 'protected' and patch_val is None: + patch_val = False if rpc_node[field] != patch_val: rpc_node[field] = patch_val diff --git a/releasenotes/notes/protected-unset-0620b844afbb635e.yaml b/releasenotes/notes/protected-unset-0620b844afbb635e.yaml new file mode 100644 index 0000000000..f516a5c0e2 --- /dev/null +++ b/releasenotes/notes/protected-unset-0620b844afbb635e.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + Fixes HTTP 500 when trying to unset the ``protected`` attribute via + the CLI.