)]}'
{"ironic/api/controllers/v1/node.py":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"6afde86ba36c393629aa19b9489ff25c05b61de9","unresolved":false,"context_lines":[{"line_number":1078,"context_line":"    retired \u003d types.boolean"},{"line_number":1079,"context_line":"    \"\"\"Indicates whether the node is marked for retirement.\"\"\""},{"line_number":1080,"context_line":""},{"line_number":1081,"context_line":"    retired_reason \u003d wsme.wsattr(wtypes.text)"},{"line_number":1082,"context_line":"    \"\"\"Indicates the reason for a node\u0027s retirement.\"\"\""},{"line_number":1083,"context_line":""},{"line_number":1084,"context_line":"    # NOTE(deva): \"conductor_affinity\" shouldn\u0027t be presented on the"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_312e208d","line":1081,"range":{"start_line":1081,"start_character":33,"end_line":1081,"end_character":44},"updated":"2020-01-27 13:55:49.000000000","message":"we should use str here, also because we\u0027re trying to get rid of wtypes","commit_id":"4da41a9aad3b41ee356f412a014dbc53d8357962"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"2f9c38b8942d5c67ff3cc99e55843b9d4b044d98","unresolved":false,"context_lines":[{"line_number":1078,"context_line":"    retired \u003d types.boolean"},{"line_number":1079,"context_line":"    \"\"\"Indicates whether the node is marked for retirement.\"\"\""},{"line_number":1080,"context_line":""},{"line_number":1081,"context_line":"    retired_reason \u003d wsme.wsattr(wtypes.text)"},{"line_number":1082,"context_line":"    \"\"\"Indicates the reason for a node\u0027s retirement.\"\"\""},{"line_number":1083,"context_line":""},{"line_number":1084,"context_line":"    # NOTE(deva): \"conductor_affinity\" shouldn\u0027t be presented on the"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_9d9da5bb","line":1081,"range":{"start_line":1081,"start_character":33,"end_line":1081,"end_character":44},"in_reply_to":"3fa7e38b_312e208d","updated":"2020-01-27 17:27:45.000000000","message":"Done","commit_id":"4da41a9aad3b41ee356f412a014dbc53d8357962"}],"ironic/conductor/manager.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"14c9e14aefd9e8466951acd9c3c143d78825c12b","unresolved":false,"context_lines":[{"line_number":1517,"context_line":"                                                tear_down_cleaning\u003dFalse)"},{"line_number":1518,"context_line":""},{"line_number":1519,"context_line":"        LOG.info(\u0027Node %s cleaning complete\u0027, node.uuid)"},{"line_number":1520,"context_line":"        event \u003d \u0027manage\u0027 if manual_clean or node.retired else \u0027done\u0027"},{"line_number":1521,"context_line":"        # NOTE(rloo): No need to specify target prov. state; we\u0027re done"},{"line_number":1522,"context_line":"        task.process_event(event)"},{"line_number":1523,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_849dd46c","line":1520,"updated":"2020-02-05 07:51:58.000000000","message":"There is a subtle inconsistency which we should probably address. When doing automated cleaning, we probably set target_provision_state\u003davailable. I guess when retried is True, we need to use target_provision_state\u003dmanageable..","commit_id":"3ecaadbb35c5711018d5a6c920f732d733d65b46"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"ec14634364a57a66649ae5cae605d0a903cf2f65","unresolved":false,"context_lines":[{"line_number":1517,"context_line":"                                                tear_down_cleaning\u003dFalse)"},{"line_number":1518,"context_line":""},{"line_number":1519,"context_line":"        LOG.info(\u0027Node %s cleaning complete\u0027, node.uuid)"},{"line_number":1520,"context_line":"        event \u003d \u0027manage\u0027 if manual_clean or node.retired else \u0027done\u0027"},{"line_number":1521,"context_line":"        # NOTE(rloo): No need to specify target prov. state; we\u0027re done"},{"line_number":1522,"context_line":"        task.process_event(event)"},{"line_number":1523,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_04c0042c","line":1520,"in_reply_to":"3fa7e38b_849dd46c","updated":"2020-02-05 08:02:44.000000000","message":"This was my initial approach, I set the target state to manageable at the start of cleaning and hoped it would be carried through the whole process. I soon realised, however, that the target state is used as a discriminator between automated and manual cleaning in several places...\nSo, I guess the proper fix to address your point (which I consider totally valid) would be to review the way we determine whether we are doing an automated or a manual cleaning.","commit_id":"3ecaadbb35c5711018d5a6c920f732d733d65b46"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"14c9e14aefd9e8466951acd9c3c143d78825c12b","unresolved":false,"context_lines":[{"line_number":1630,"context_line":"                        and node.maintenance):"},{"line_number":1631,"context_line":"                    raise exception.NodeInMaintenance(op\u003d_(\u0027providing\u0027),"},{"line_number":1632,"context_line":"                                                      node\u003dnode.uuid)"},{"line_number":1633,"context_line":"                if (node.retired):"},{"line_number":1634,"context_line":"                    raise exception.NodeIsRetired(op\u003d_(\u0027providing\u0027),"},{"line_number":1635,"context_line":"                                                  node\u003dnode.uuid)"},{"line_number":1636,"context_line":"                task.process_event("}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_24a420b8","line":1633,"updated":"2020-02-05 07:51:58.000000000","message":"nit: redundant brackets","commit_id":"3ecaadbb35c5711018d5a6c920f732d733d65b46"}],"ironic/objects/node.py":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"e92094219c33f1b490b150256a8758fc0b8c6518","unresolved":false,"context_lines":[{"line_number":614,"context_line":"                  (\u0027bios_interface\u0027, 24), (\u0027fault\u0027, 25),"},{"line_number":615,"context_line":"                  (\u0027automated_clean\u0027, 28), (\u0027protected_reason\u0027, 29),"},{"line_number":616,"context_line":"                  (\u0027owner\u0027, 30), (\u0027allocation_id\u0027, 31), (\u0027description\u0027, 32),"},{"line_number":617,"context_line":"                  (\u0027retired_reason\u0027, 29)]"},{"line_number":618,"context_line":"        for name, minor in fields:"},{"line_number":619,"context_line":"            self._adjust_field_to_version(name, None, target_version,"},{"line_number":620,"context_line":"                                          1, minor, remove_unavailable_fields)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_8afc9671","line":617,"range":{"start_line":617,"start_character":37,"end_line":617,"end_character":39},"updated":"2020-01-24 10:05:51.000000000","message":"33","commit_id":"d2feca58eafbb1dfa46c76c6b05ae191a2938cc9"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bd60febbdb0ce4d0c3d1fdad38299f46f8d95f55","unresolved":false,"context_lines":[{"line_number":614,"context_line":"                  (\u0027bios_interface\u0027, 24), (\u0027fault\u0027, 25),"},{"line_number":615,"context_line":"                  (\u0027automated_clean\u0027, 28), (\u0027protected_reason\u0027, 29),"},{"line_number":616,"context_line":"                  (\u0027owner\u0027, 30), (\u0027allocation_id\u0027, 31), (\u0027description\u0027, 32),"},{"line_number":617,"context_line":"                  (\u0027retired_reason\u0027, 29)]"},{"line_number":618,"context_line":"        for name, minor in fields:"},{"line_number":619,"context_line":"            self._adjust_field_to_version(name, None, target_version,"},{"line_number":620,"context_line":"                                          1, minor, remove_unavailable_fields)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_20c7c148","line":617,"range":{"start_line":617,"start_character":37,"end_line":617,"end_character":39},"in_reply_to":"3fa7e38b_8afc9671","updated":"2020-01-24 12:42:19.000000000","message":"Good catch, thanks!","commit_id":"d2feca58eafbb1dfa46c76c6b05ae191a2938cc9"}],"releasenotes/notes/add_retirement_support-23c5fed7ce8f97d4.yaml":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"6afde86ba36c393629aa19b9489ff25c05b61de9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add support for node retirement by adding a ``retired`` property"},{"line_number":5,"context_line":"    to the node. If set, a node moves upon automatic cleaning to"},{"line_number":6,"context_line":"    ``manageable`` (rather than ``available``). The new property can also"},{"line_number":7,"context_line":"    block the provide keyword, i.e. nodes cannot move from ``manageable``"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3fa7e38b_f1ce48b5","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":7},"updated":"2020-01-27 13:55:49.000000000","message":"nit: Adds","commit_id":"4da41a9aad3b41ee356f412a014dbc53d8357962"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"2f9c38b8942d5c67ff3cc99e55843b9d4b044d98","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add support for node retirement by adding a ``retired`` property"},{"line_number":5,"context_line":"    to the node. If set, a node moves upon automatic cleaning to"},{"line_number":6,"context_line":"    ``manageable`` (rather than ``available``). The new property can also"},{"line_number":7,"context_line":"    block the provide keyword, i.e. nodes cannot move from ``manageable``"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3fa7e38b_fd9a99c1","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":7},"in_reply_to":"3fa7e38b_f1ce48b5","updated":"2020-01-27 17:27:45.000000000","message":"Done","commit_id":"4da41a9aad3b41ee356f412a014dbc53d8357962"}]}
