)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"5876fb53ca20f0f2de6776eab82ce37fb90cf306","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Esther Domfeh \u003cestherdomfeh88@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-07-21 13:43:52 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"feat: add state, target_provision_state, and duration_seconds to node history"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add state field to track which provision state the node was in."},{"line_number":10,"context_line":"Add target_provision_state to track the state the node is transitioning to."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"e3bab9a6_d434cace","line":7,"updated":"2026-07-24 12:34:41.000000000","message":"let\u0027s remove feat: from the title, it\u0027s not very ironic like","commit_id":"9b8f84c6abc2d0cd0f49ee3a46405cf38c65b72b"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"9a7b92150d20b3eb43dbb37df06b3f59b354d173","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Esther Domfeh \u003cestherdomfeh88@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-07-21 13:43:52 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"feat: add state, target_provision_state, and duration_seconds to node history"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add state field to track which provision state the node was in."},{"line_number":10,"context_line":"Add target_provision_state to track the state the node is transitioning to."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"c91cdb4f_cfca344d","line":7,"in_reply_to":"41390b3e_7253e8cb","updated":"2026-07-27 13:24:31.000000000","message":"Thank you for the feedback,Riccardo! Cleaned up the commit titles, rsstored the project field and simplified the migration tests","commit_id":"9b8f84c6abc2d0cd0f49ee3a46405cf38c65b72b"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"3139169f4675ff0d138cdae350d345bbf868d0f4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Esther Domfeh \u003cestherdomfeh88@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-07-21 13:43:52 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"feat: add state, target_provision_state, and duration_seconds to node history"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add state field to track which provision state the node was in."},{"line_number":10,"context_line":"Add target_provision_state to track the state the node is transitioning to."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"41390b3e_7253e8cb","line":7,"in_reply_to":"e3bab9a6_d434cace","updated":"2026-07-27 12:58:25.000000000","message":"Done","commit_id":"9b8f84c6abc2d0cd0f49ee3a46405cf38c65b72b"}],"/PATCHSET_LEVEL":[{"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":"7528693c41613fbb350b1c8e1ef6168c49e3a5c9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c2563687_7d827cc1","updated":"2026-06-01 18:16:29.000000000","message":"Changes that modify the API generally reference an RFE, at a minimum, and a spec in most cases.","commit_id":"5a6794cb0991136d5fa91609bf45fa4df935d0e9"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"36feada25164d347f9e632708cbe99c3a4aa2edb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b1849c8d_4b540ac2","updated":"2026-05-30 08:23:46.000000000","message":"I\u0027m getting errors when working on this patch, and I can see several merge conflicts. It looks like there have been recent changes to the same file by other contributors.\nWhat would be the recommended next steps for resolving this?","commit_id":"5a6794cb0991136d5fa91609bf45fa4df935d0e9"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"04fad7d622d9346f56417dacae659afdddc4a812","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"755f4455_bf88b86e","in_reply_to":"0ad27423_de5517ce","updated":"2026-06-16 15:55:35.000000000","message":"Done","commit_id":"5a6794cb0991136d5fa91609bf45fa4df935d0e9"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"9cfeac1a8cdf6324af15e91f5ea4435a773982aa","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"0ad27423_de5517ce","in_reply_to":"b1849c8d_4b540ac2","updated":"2026-05-30 08:38:59.000000000","message":"Re-opening for discussion: I mistakenly checked resolved.","commit_id":"5a6794cb0991136d5fa91609bf45fa4df935d0e9"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"04fad7d622d9346f56417dacae659afdddc4a812","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"fd6da55f_11d0ee65","in_reply_to":"c2563687_7d827cc1","updated":"2026-06-16 15:55:35.000000000","message":"Thank you for the review. I have opened RFE bug #2154817 for this change:\nhttps://bugs.launchpad.net/ironic/+bug/2154817\n\nJulia (TheJulia) provided feedback on the RFE suggesting the simplified approach\nusing state, target_provision_state, and duration_seconds instead of entry_at/exit_at.\n\nI appreciate the guidance.","commit_id":"5a6794cb0991136d5fa91609bf45fa4df935d0e9"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b469e9ba7d2a40ad6f59316ddea23a7fd467ea83","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"d1945d52_1daa0526","updated":"2026-06-16 14:38:07.000000000","message":"Overall good, I\u0027m a little concerned by the double version jump and applying a -1 to raise the question of revising the data model.","commit_id":"4157b53ace8a5dd7162041a5cedef7e1ca5a019d"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"04fad7d622d9346f56417dacae659afdddc4a812","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"fdb822d3_8eb2bc7a","in_reply_to":"d1945d52_1daa0526","updated":"2026-06-16 15:55:35.000000000","message":"Thank you for the review, Julia. I\u0027ve addressed the double version jump by compressing it down to version 1.2 and removing references to 1.3 in the follow-up patch.","commit_id":"4157b53ace8a5dd7162041a5cedef7e1ca5a019d"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"f9c3cbf7ff0dd2e9f1889f357f98d58eed9a70f7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"c7ae328e_ca2c5e73","updated":"2026-06-18 13:03:08.000000000","message":"Looks good, but I think this needs the convert_to_version added.","commit_id":"05d4a0c2edcd9488df5fea4d906d336c35ae3bb8"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"1801c80b08eecb52f87e81775e0b9f1e07a54814","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"8c7f5a63_54d30fc6","updated":"2026-07-09 08:12:19.000000000","message":"good progress so far, check my comments inline\nwe should also think about adding tests for _convert_to_version in test_node_history for completeness","commit_id":"4f999eb2ab3a0d069bf3def98dfabdb776c2f0f0"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"6556dafa7a29190f8459caf8277d388a729065a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"078b8749_cca4f58b","updated":"2026-07-31 07:11:20.000000000","message":"since we\u0027ve released ironic we now need to bump api version","commit_id":"ca62185a928f8331658f2b05a2655e4de25cfa1e"},{"author":{"_account_id":37087,"name":"Himanshu Roy","display_name":"Himanshu Roy","email":"hroy@redhat.com","username":"hroyrh"},"change_message_id":"e856e83f43e5e2d4c79ff60467bb34feedc82bae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"be6f5777_acb24730","updated":"2026-08-05 12:45:55.000000000","message":"Looks good, some minor comments which can be easily addressed in a separate patch.","commit_id":"340573416c81c465a3a312b530458cc35bc35068"},{"author":{"_account_id":37087,"name":"Himanshu Roy","display_name":"Himanshu Roy","email":"hroy@redhat.com","username":"hroyrh"},"change_message_id":"e05f1d53f74e1039dd19ff502815ae20863135f7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"9b105841_4279c466","updated":"2026-08-06 07:48:53.000000000","message":"Updating this since we do need the version related changes.","commit_id":"340573416c81c465a3a312b530458cc35bc35068"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"c2b599dad8bafa461ddeda04f894a27b98f8691b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"dd608d6d_dfe305ed","updated":"2026-08-06 06:41:51.000000000","message":"moving to -1 to highlight Himanshu comments\n_convert_to_version needs to be updated","commit_id":"340573416c81c465a3a312b530458cc35bc35068"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"4fc20610d3b5e8492153026a92dc9466b703377e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"5a9a5248_034733c6","in_reply_to":"dd608d6d_dfe305ed","updated":"2026-08-08 09:01:40.000000000","message":"\u003e moving to -1 to highlight Himanshu comments\n\u003e _convert_to_version needs to be updated","commit_id":"340573416c81c465a3a312b530458cc35bc35068"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"9bc059d210d2e063a5de3abd498b700382787f35","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"f3058d16_a7b5a892","updated":"2026-08-12 07:43:57.000000000","message":"this was approved before and the only change from the precedent patch is related to the alembic migration, single approving it","commit_id":"408fbf2c407b2e69bff37459ad0b2c3a06250b7e"}],"ironic/common/release_mappings.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"424167bca094e1b9ff716b3cf0d31d4ad79163a6","unresolved":true,"context_lines":[{"line_number":1051,"context_line":"            \u0027Allocation\u0027: [\u00271.3\u0027, \u00271.2\u0027, \u00271.1\u0027],"},{"line_number":1052,"context_line":"            \u0027BIOSSetting\u0027: [\u00271.2\u0027, \u00271.1\u0027],"},{"line_number":1053,"context_line":"            \u0027Node\u0027: [\u00271.44\u0027, \u00271.43\u0027, \u00271.42\u0027, \u00271.41\u0027],"},{"line_number":1054,"context_line":"            \u0027NodeHistory\u0027: [\u00271.3\u0027, \u00271.2\u0027, \u00271.1\u0027, \u00271.0\u0027],"},{"line_number":1055,"context_line":"            \u0027NodeInventory\u0027: [\u00271.1\u0027, \u00271.0\u0027],"},{"line_number":1056,"context_line":"            \u0027Conductor\u0027: [\u00271.6\u0027, \u00271.5\u0027, \u00271.4\u0027],"},{"line_number":1057,"context_line":"            \u0027Chassis\u0027: [\u00271.4\u0027, \u00271.3\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"b6d4392e_e4e59a80","line":1054,"updated":"2026-06-16 14:36:26.000000000","message":"This seems weird to have revisions in one change, FWIW.","commit_id":"4157b53ace8a5dd7162041a5cedef7e1ca5a019d"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"04fad7d622d9346f56417dacae659afdddc4a812","unresolved":false,"context_lines":[{"line_number":1051,"context_line":"            \u0027Allocation\u0027: [\u00271.3\u0027, \u00271.2\u0027, \u00271.1\u0027],"},{"line_number":1052,"context_line":"            \u0027BIOSSetting\u0027: [\u00271.2\u0027, \u00271.1\u0027],"},{"line_number":1053,"context_line":"            \u0027Node\u0027: [\u00271.44\u0027, \u00271.43\u0027, \u00271.42\u0027, \u00271.41\u0027],"},{"line_number":1054,"context_line":"            \u0027NodeHistory\u0027: [\u00271.3\u0027, \u00271.2\u0027, \u00271.1\u0027, \u00271.0\u0027],"},{"line_number":1055,"context_line":"            \u0027NodeInventory\u0027: [\u00271.1\u0027, \u00271.0\u0027],"},{"line_number":1056,"context_line":"            \u0027Conductor\u0027: [\u00271.6\u0027, \u00271.5\u0027, \u00271.4\u0027],"},{"line_number":1057,"context_line":"            \u0027Chassis\u0027: [\u00271.4\u0027, \u00271.3\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"5e7821cc_a7ee2392","line":1054,"in_reply_to":"b6d4392e_e4e59a80","updated":"2026-06-16 15:55:35.000000000","message":"Done","commit_id":"4157b53ace8a5dd7162041a5cedef7e1ca5a019d"}],"ironic/db/sqlalchemy/alembic/versions/9fb44677ef15_add_state_and_timestamps_to_node_history.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"424167bca094e1b9ff716b3cf0d31d4ad79163a6","unresolved":true,"context_lines":[{"line_number":37,"context_line":"                            nullable\u003dTrue))"},{"line_number":38,"context_line":"    op.add_column(\u0027node_history\u0027,"},{"line_number":39,"context_line":"                  sa.Column(\u0027duration_seconds\u0027,"},{"line_number":40,"context_line":"                            sa.Integer(),"},{"line_number":41,"context_line":"                            nullable\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":9,"id":"3db8992a_a376240f","line":40,"updated":"2026-06-16 14:36:26.000000000","message":"Note to other reviewers: this is the Mysql integer type which is 4 bytes of storage. Either signed or unsigned (unknown) but this ends up being a minimum of ~68 years or a max of ~136 years.","commit_id":"4157b53ace8a5dd7162041a5cedef7e1ca5a019d"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"04fad7d622d9346f56417dacae659afdddc4a812","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                            nullable\u003dTrue))"},{"line_number":38,"context_line":"    op.add_column(\u0027node_history\u0027,"},{"line_number":39,"context_line":"                  sa.Column(\u0027duration_seconds\u0027,"},{"line_number":40,"context_line":"                            sa.Integer(),"},{"line_number":41,"context_line":"                            nullable\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":9,"id":"56fdfa57_06e45dcc","line":40,"in_reply_to":"3db8992a_a376240f","updated":"2026-06-16 15:55:35.000000000","message":"Done","commit_id":"4157b53ace8a5dd7162041a5cedef7e1ca5a019d"}],"ironic/objects/node_history.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"424167bca094e1b9ff716b3cf0d31d4ad79163a6","unresolved":true,"context_lines":[{"line_number":27,"context_line":"    # Version 1.2: Added state, entry_at, and exit_at fields."},{"line_number":28,"context_line":"    # Version 1.3: Replaced entry_at/exit_at with target_provision_state"},{"line_number":29,"context_line":"    #              and duration_seconds"},{"line_number":30,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    dbapi \u003d dbapi.get_instance()"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bef41edb_fec59433","line":30,"updated":"2026-06-16 14:36:26.000000000","message":"FWIW, this is all \"merged\" together, and as such it can likely just be \"1.2\"","commit_id":"4157b53ace8a5dd7162041a5cedef7e1ca5a019d"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"04fad7d622d9346f56417dacae659afdddc4a812","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    # Version 1.2: Added state, entry_at, and exit_at fields."},{"line_number":28,"context_line":"    # Version 1.3: Replaced entry_at/exit_at with target_provision_state"},{"line_number":29,"context_line":"    #              and duration_seconds"},{"line_number":30,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    dbapi \u003d dbapi.get_instance()"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"58de695a_9aae344a","line":30,"in_reply_to":"bef41edb_fec59433","updated":"2026-06-16 15:55:35.000000000","message":"Done","commit_id":"4157b53ace8a5dd7162041a5cedef7e1ca5a019d"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"f9c3cbf7ff0dd2e9f1889f357f98d58eed9a70f7","unresolved":true,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"@base.IronicObjectRegistry.register"},{"line_number":24,"context_line":"class NodeHistory(base.IronicObject, object_base.VersionedObjectDictCompat):"},{"line_number":25,"context_line":"    # Version 1.0: Initial version"},{"line_number":26,"context_line":"    # Version 1.1: Relevant methods changed to be remotable methods."},{"line_number":27,"context_line":"    # Version 1.2: Added state, target_provision_state, and duration_seconds"}],"source_content_type":"text/x-python","patch_set":11,"id":"83ad1125_2183c52a","line":24,"range":{"start_line":24,"start_character":6,"end_line":24,"end_character":17},"updated":"2026-06-18 13:03:08.000000000","message":"This needs a version compatibility method now that there are new fields?\nSee method `convert_to_version` in ironic/objects/base.py.","commit_id":"05d4a0c2edcd9488df5fea4d906d336c35ae3bb8"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"aa904d101b3a9a61e6416c330741b04a50071078","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"@base.IronicObjectRegistry.register"},{"line_number":24,"context_line":"class NodeHistory(base.IronicObject, object_base.VersionedObjectDictCompat):"},{"line_number":25,"context_line":"    # Version 1.0: Initial version"},{"line_number":26,"context_line":"    # Version 1.1: Relevant methods changed to be remotable methods."},{"line_number":27,"context_line":"    # Version 1.2: Added state, target_provision_state, and duration_seconds"}],"source_content_type":"text/x-python","patch_set":11,"id":"ea5c1904_b83d5b9a","line":24,"range":{"start_line":24,"start_character":6,"end_line":24,"end_character":17},"in_reply_to":"83ad1125_2183c52a","updated":"2026-06-18 18:31:32.000000000","message":"Done","commit_id":"05d4a0c2edcd9488df5fea4d906d336c35ae3bb8"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"f9c3cbf7ff0dd2e9f1889f357f98d58eed9a70f7","unresolved":true,"context_lines":[{"line_number":41,"context_line":"        \u0027state\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":42,"context_line":"        \u0027target_provision_state\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":43,"context_line":"        \u0027duration_seconds\u0027: object_fields.IntegerField(nullable\u003dTrue),"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    }"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"a91a4e13_b7e24c08","line":47,"range":{"start_line":44,"start_character":1,"end_line":47,"end_character":1},"updated":"2026-06-18 13:03:08.000000000","message":"nit, remove the extra blank lines?","commit_id":"05d4a0c2edcd9488df5fea4d906d336c35ae3bb8"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"aa904d101b3a9a61e6416c330741b04a50071078","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \u0027state\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":42,"context_line":"        \u0027target_provision_state\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":43,"context_line":"        \u0027duration_seconds\u0027: object_fields.IntegerField(nullable\u003dTrue),"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    }"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3896c227_8b922e67","line":47,"range":{"start_line":44,"start_character":1,"end_line":47,"end_character":1},"in_reply_to":"a91a4e13_b7e24c08","updated":"2026-06-18 18:31:32.000000000","message":"Done","commit_id":"05d4a0c2edcd9488df5fea4d906d336c35ae3bb8"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"1801c80b08eecb52f87e81775e0b9f1e07a54814","unresolved":true,"context_lines":[{"line_number":25,"context_line":"class NodeHistory(base.IronicObject, object_base.VersionedObjectDictCompat):"},{"line_number":26,"context_line":"    # Version 1.0: Initial version"},{"line_number":27,"context_line":"    # Version 1.1: Relevant methods changed to be remotable methods."},{"line_number":28,"context_line":"    # Version 1.2: Added project fields, state, target_provision_state,"},{"line_number":29,"context_line":"    #              duration_seconds, user tracking, power_watts, and energy_wh."},{"line_number":30,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"da155307_0d3728bc","line":28,"updated":"2026-07-09 08:12:19.000000000","message":"the comment here is misleading: power_watts, energy_wh, and user tracking are not added in this change","commit_id":"4f999eb2ab3a0d069bf3def98dfabdb776c2f0f0"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"94d81ddc06b0e16650c45f05c174d6b0b0c8ab52","unresolved":false,"context_lines":[{"line_number":25,"context_line":"class NodeHistory(base.IronicObject, object_base.VersionedObjectDictCompat):"},{"line_number":26,"context_line":"    # Version 1.0: Initial version"},{"line_number":27,"context_line":"    # Version 1.1: Relevant methods changed to be remotable methods."},{"line_number":28,"context_line":"    # Version 1.2: Added project fields, state, target_provision_state,"},{"line_number":29,"context_line":"    #              duration_seconds, user tracking, power_watts, and energy_wh."},{"line_number":30,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"c938e363_1be4358f","line":28,"in_reply_to":"da155307_0d3728bc","updated":"2026-07-10 11:05:44.000000000","message":"Done","commit_id":"4f999eb2ab3a0d069bf3def98dfabdb776c2f0f0"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"1801c80b08eecb52f87e81775e0b9f1e07a54814","unresolved":true,"context_lines":[{"line_number":175,"context_line":"            target_version,"},{"line_number":176,"context_line":"            remove_unavailable_fields\u003dremove_unavailable_fields)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        target_version\u003dversionutils.convert_version_to_tuple(target_version)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        # Version 1.2 added \u0027state\u0027, \u0027target_provision_state\u0027,"},{"line_number":181,"context_line":"        # and \u0027duration_seconds\u0027."}],"source_content_type":"text/x-python","patch_set":18,"id":"d9059387_e881ba2b","line":178,"updated":"2026-07-09 08:12:19.000000000","message":"nit: this is a pep8 violation, you need to leave a space around \u003d","commit_id":"4f999eb2ab3a0d069bf3def98dfabdb776c2f0f0"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"94d81ddc06b0e16650c45f05c174d6b0b0c8ab52","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            target_version,"},{"line_number":176,"context_line":"            remove_unavailable_fields\u003dremove_unavailable_fields)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        target_version\u003dversionutils.convert_version_to_tuple(target_version)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        # Version 1.2 added \u0027state\u0027, \u0027target_provision_state\u0027,"},{"line_number":181,"context_line":"        # and \u0027duration_seconds\u0027."}],"source_content_type":"text/x-python","patch_set":18,"id":"9e5f9676_3673ba87","line":178,"in_reply_to":"d9059387_e881ba2b","updated":"2026-07-10 11:05:44.000000000","message":"Done","commit_id":"4f999eb2ab3a0d069bf3def98dfabdb776c2f0f0"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"1801c80b08eecb52f87e81775e0b9f1e07a54814","unresolved":true,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        target_version\u003dversionutils.convert_version_to_tuple(target_version)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        # Version 1.2 added \u0027state\u0027, \u0027target_provision_state\u0027,"},{"line_number":181,"context_line":"        # and \u0027duration_seconds\u0027."},{"line_number":182,"context_line":"        if target_version \u003c (1, 2):"},{"line_number":183,"context_line":"            if remove_unavailable_fields:"}],"source_content_type":"text/x-python","patch_set":18,"id":"7e37f6b8_dabf3cc2","line":180,"updated":"2026-07-09 08:12:19.000000000","message":"we should add also project as it was added in 1.2 too (this is a precedent bug)","commit_id":"4f999eb2ab3a0d069bf3def98dfabdb776c2f0f0"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"94d81ddc06b0e16650c45f05c174d6b0b0c8ab52","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        target_version\u003dversionutils.convert_version_to_tuple(target_version)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        # Version 1.2 added \u0027state\u0027, \u0027target_provision_state\u0027,"},{"line_number":181,"context_line":"        # and \u0027duration_seconds\u0027."},{"line_number":182,"context_line":"        if target_version \u003c (1, 2):"},{"line_number":183,"context_line":"            if remove_unavailable_fields:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5bf04daf_fb24fd9a","line":180,"in_reply_to":"7e37f6b8_dabf3cc2","updated":"2026-07-10 11:05:44.000000000","message":"Done","commit_id":"4f999eb2ab3a0d069bf3def98dfabdb776c2f0f0"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"1801c80b08eecb52f87e81775e0b9f1e07a54814","unresolved":true,"context_lines":[{"line_number":181,"context_line":"        # and \u0027duration_seconds\u0027."},{"line_number":182,"context_line":"        if target_version \u003c (1, 2):"},{"line_number":183,"context_line":"            if remove_unavailable_fields:"},{"line_number":184,"context_line":"                self.obj_attributes.pop(\u0027state\u0027, None)"},{"line_number":185,"context_line":"                self.obj_attributes.pop(\u0027target_provision_state\u0027, None)"},{"line_number":186,"context_line":"                self.obj_attributes.pop(\u0027duration_seconds\u0027, None)"},{"line_number":187,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"f3660716_b005b4da","line":184,"updated":"2026-07-09 08:12:19.000000000","message":"I don\u0027t think we use self.obj_attributes.pop() in other objects for this, check node and port to see how we do it","commit_id":"4f999eb2ab3a0d069bf3def98dfabdb776c2f0f0"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"94d81ddc06b0e16650c45f05c174d6b0b0c8ab52","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        # and \u0027duration_seconds\u0027."},{"line_number":182,"context_line":"        if target_version \u003c (1, 2):"},{"line_number":183,"context_line":"            if remove_unavailable_fields:"},{"line_number":184,"context_line":"                self.obj_attributes.pop(\u0027state\u0027, None)"},{"line_number":185,"context_line":"                self.obj_attributes.pop(\u0027target_provision_state\u0027, None)"},{"line_number":186,"context_line":"                self.obj_attributes.pop(\u0027duration_seconds\u0027, None)"},{"line_number":187,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"2e6fe017_c0f4dd0b","line":184,"in_reply_to":"f3660716_b005b4da","updated":"2026-07-10 11:05:44.000000000","message":"Done","commit_id":"4f999eb2ab3a0d069bf3def98dfabdb776c2f0f0"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"5876fb53ca20f0f2de6776eab82ce37fb90cf306","unresolved":true,"context_lines":[{"line_number":25,"context_line":"class NodeHistory(base.IronicObject, object_base.VersionedObjectDictCompat):"},{"line_number":26,"context_line":"    # Version 1.0: Initial version"},{"line_number":27,"context_line":"    # Version 1.1: Relevant methods changed to be remotable methods."},{"line_number":28,"context_line":"    # Version 1.2: Added state, target_provision_state,"},{"line_number":29,"context_line":"    #              duration_seconds fields."},{"line_number":30,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"5a1da8d1_c6c12f9a","line":28,"updated":"2026-07-24 12:34:41.000000000","message":"you need to add project back :)","commit_id":"9b8f84c6abc2d0cd0f49ee3a46405cf38c65b72b"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"3139169f4675ff0d138cdae350d345bbf868d0f4","unresolved":false,"context_lines":[{"line_number":25,"context_line":"class NodeHistory(base.IronicObject, object_base.VersionedObjectDictCompat):"},{"line_number":26,"context_line":"    # Version 1.0: Initial version"},{"line_number":27,"context_line":"    # Version 1.1: Relevant methods changed to be remotable methods."},{"line_number":28,"context_line":"    # Version 1.2: Added state, target_provision_state,"},{"line_number":29,"context_line":"    #              duration_seconds fields."},{"line_number":30,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"b4e7794e_271b8a0e","line":28,"in_reply_to":"5a1da8d1_c6c12f9a","updated":"2026-07-27 12:58:25.000000000","message":"Done","commit_id":"9b8f84c6abc2d0cd0f49ee3a46405cf38c65b72b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d0d7bd505d4f0c09dcbe453540439070fae20ed0","unresolved":true,"context_lines":[{"line_number":25,"context_line":"class NodeHistory(base.IronicObject, object_base.VersionedObjectDictCompat):"},{"line_number":26,"context_line":"    # Version 1.0: Initial version"},{"line_number":27,"context_line":"    # Version 1.1: Relevant methods changed to be remotable methods."},{"line_number":28,"context_line":"    # Version 1.2: Added project, state, target_provision_state,"},{"line_number":29,"context_line":"    #              duration_seconds fields."},{"line_number":30,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    dbapi \u003d dbapi.get_instance()"}],"source_content_type":"text/x-python","patch_set":21,"id":"832b3eac_4613c6da","line":29,"range":{"start_line":28,"start_character":32,"end_line":29,"end_character":43},"updated":"2026-07-30 18:46:57.000000000","message":"Project already existed, this effectively makes it version 1.3, meaning the version needs to be set to 1.3 on the next line.","commit_id":"ca62185a928f8331658f2b05a2655e4de25cfa1e"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"9f156788de4567e6d63dee6bfe61a8ac451742ef","unresolved":true,"context_lines":[{"line_number":25,"context_line":"class NodeHistory(base.IronicObject, object_base.VersionedObjectDictCompat):"},{"line_number":26,"context_line":"    # Version 1.0: Initial version"},{"line_number":27,"context_line":"    # Version 1.1: Relevant methods changed to be remotable methods."},{"line_number":28,"context_line":"    # Version 1.2: Added project, state, target_provision_state,"},{"line_number":29,"context_line":"    #              duration_seconds fields."},{"line_number":30,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    dbapi \u003d dbapi.get_instance()"}],"source_content_type":"text/x-python","patch_set":21,"id":"864054be_593462e1","line":29,"range":{"start_line":28,"start_character":32,"end_line":29,"end_character":43},"in_reply_to":"223e45fe_d4b853a4","updated":"2026-08-03 06:48:04.000000000","message":"nvm we do need to bump version here as the object has changed","commit_id":"ca62185a928f8331658f2b05a2655e4de25cfa1e"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"6556dafa7a29190f8459caf8277d388a729065a1","unresolved":true,"context_lines":[{"line_number":25,"context_line":"class NodeHistory(base.IronicObject, object_base.VersionedObjectDictCompat):"},{"line_number":26,"context_line":"    # Version 1.0: Initial version"},{"line_number":27,"context_line":"    # Version 1.1: Relevant methods changed to be remotable methods."},{"line_number":28,"context_line":"    # Version 1.2: Added project, state, target_provision_state,"},{"line_number":29,"context_line":"    #              duration_seconds fields."},{"line_number":30,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    dbapi \u003d dbapi.get_instance()"}],"source_content_type":"text/x-python","patch_set":21,"id":"223e45fe_d4b853a4","line":29,"range":{"start_line":28,"start_character":32,"end_line":29,"end_character":43},"in_reply_to":"832b3eac_4613c6da","updated":"2026-07-31 07:11:20.000000000","message":"now yes, but before the API were not released yet so I don\u0027t think the bump was necessary?","commit_id":"ca62185a928f8331658f2b05a2655e4de25cfa1e"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"afaf3ac51e175de849e659f49e0cbaa84db66721","unresolved":false,"context_lines":[{"line_number":25,"context_line":"class NodeHistory(base.IronicObject, object_base.VersionedObjectDictCompat):"},{"line_number":26,"context_line":"    # Version 1.0: Initial version"},{"line_number":27,"context_line":"    # Version 1.1: Relevant methods changed to be remotable methods."},{"line_number":28,"context_line":"    # Version 1.2: Added project, state, target_provision_state,"},{"line_number":29,"context_line":"    #              duration_seconds fields."},{"line_number":30,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    dbapi \u003d dbapi.get_instance()"}],"source_content_type":"text/x-python","patch_set":21,"id":"c10da1a8_90bcf1b9","line":29,"range":{"start_line":28,"start_character":32,"end_line":29,"end_character":43},"in_reply_to":"864054be_593462e1","updated":"2026-08-03 06:48:30.000000000","message":"Done","commit_id":"ca62185a928f8331658f2b05a2655e4de25cfa1e"},{"author":{"_account_id":37087,"name":"Himanshu Roy","display_name":"Himanshu Roy","email":"hroy@redhat.com","username":"hroyrh"},"change_message_id":"e856e83f43e5e2d4c79ff60467bb34feedc82bae","unresolved":true,"context_lines":[{"line_number":169,"context_line":"        self.dbapi.destroy_node_history_by_uuid(self.uuid)"},{"line_number":170,"context_line":"        self.obj_reset_changes()"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def _convert_to_version(self, target_version,"},{"line_number":173,"context_line":"                            remove_unavailable_fields\u003dTrue):"},{"line_number":174,"context_line":"        \"\"\"Convert the object instance to requested target version.\"\"\""},{"line_number":175,"context_line":"        super(NodeHistory, self)._convert_to_version("}],"source_content_type":"text/x-python","patch_set":23,"id":"b320635c_9c97ddc7","line":172,"updated":"2026-08-05 12:45:55.000000000","message":"do we need something similar for target version target_version state \u003d 1.2","commit_id":"340573416c81c465a3a312b530458cc35bc35068"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"c2b599dad8bafa461ddeda04f894a27b98f8691b","unresolved":true,"context_lines":[{"line_number":169,"context_line":"        self.dbapi.destroy_node_history_by_uuid(self.uuid)"},{"line_number":170,"context_line":"        self.obj_reset_changes()"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def _convert_to_version(self, target_version,"},{"line_number":173,"context_line":"                            remove_unavailable_fields\u003dTrue):"},{"line_number":174,"context_line":"        \"\"\"Convert the object instance to requested target version.\"\"\""},{"line_number":175,"context_line":"        super(NodeHistory, self)._convert_to_version("}],"source_content_type":"text/x-python","patch_set":23,"id":"c7d122b5_27aa14bf","line":172,"in_reply_to":"b320635c_9c97ddc7","updated":"2026-08-06 06:41:51.000000000","message":"would not be bad to have this","commit_id":"340573416c81c465a3a312b530458cc35bc35068"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"33205f9cef6a052165dc85323da0a1df643bbb39","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        self.dbapi.destroy_node_history_by_uuid(self.uuid)"},{"line_number":170,"context_line":"        self.obj_reset_changes()"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def _convert_to_version(self, target_version,"},{"line_number":173,"context_line":"                            remove_unavailable_fields\u003dTrue):"},{"line_number":174,"context_line":"        \"\"\"Convert the object instance to requested target version.\"\"\""},{"line_number":175,"context_line":"        super(NodeHistory, self)._convert_to_version("}],"source_content_type":"text/x-python","patch_set":23,"id":"c1d9f923_9b224d09","line":172,"in_reply_to":"c7d122b5_27aa14bf","updated":"2026-08-07 12:44:33.000000000","message":"Done","commit_id":"340573416c81c465a3a312b530458cc35bc35068"},{"author":{"_account_id":37087,"name":"Himanshu Roy","display_name":"Himanshu Roy","email":"hroy@redhat.com","username":"hroyrh"},"change_message_id":"e856e83f43e5e2d4c79ff60467bb34feedc82bae","unresolved":true,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # Version 1.2 added \u0027project\u0027, \u0027state\u0027, \u0027target_provision_state\u0027,"},{"line_number":182,"context_line":"        # and \u0027duration_seconds\u0027."},{"line_number":183,"context_line":"        if target_version \u003c (1, 2):"},{"line_number":184,"context_line":"            fields_to_remove \u003d [\u0027project\u0027, \u0027state\u0027, \u0027target_provision_state\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"767f78dc_6dc0e3b0","line":181,"updated":"2026-08-05 12:45:55.000000000","message":"Shouldn\u0027t this be 1.2 added project and 1.3 added rest of the fields, refer line 29-31 in this file.","commit_id":"340573416c81c465a3a312b530458cc35bc35068"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"33205f9cef6a052165dc85323da0a1df643bbb39","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # Version 1.2 added \u0027project\u0027, \u0027state\u0027, \u0027target_provision_state\u0027,"},{"line_number":182,"context_line":"        # and \u0027duration_seconds\u0027."},{"line_number":183,"context_line":"        if target_version \u003c (1, 2):"},{"line_number":184,"context_line":"            fields_to_remove \u003d [\u0027project\u0027, \u0027state\u0027, \u0027target_provision_state\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"e8fa4283_9535afc0","line":181,"in_reply_to":"35a75a8c_6c065054","updated":"2026-08-07 12:44:33.000000000","message":"Done","commit_id":"340573416c81c465a3a312b530458cc35bc35068"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"c2b599dad8bafa461ddeda04f894a27b98f8691b","unresolved":true,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # Version 1.2 added \u0027project\u0027, \u0027state\u0027, \u0027target_provision_state\u0027,"},{"line_number":182,"context_line":"        # and \u0027duration_seconds\u0027."},{"line_number":183,"context_line":"        if target_version \u003c (1, 2):"},{"line_number":184,"context_line":"            fields_to_remove \u003d [\u0027project\u0027, \u0027state\u0027, \u0027target_provision_state\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"35a75a8c_6c065054","line":181,"in_reply_to":"767f78dc_6dc0e3b0","updated":"2026-08-06 06:41:51.000000000","message":"oh yeah, good catch!","commit_id":"340573416c81c465a3a312b530458cc35bc35068"}],"ironic/tests/unit/db/sqlalchemy/test_migrations.py":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"5876fb53ca20f0f2de6776eab82ce37fb90cf306","unresolved":true,"context_lines":[{"line_number":1399,"context_line":"        self.assertIsInstance(node_history.c.user.type,"},{"line_number":1400,"context_line":"                              sqlalchemy.types.String)"},{"line_number":1401,"context_line":""},{"line_number":1402,"context_line":"    def _check_9fb44677ef15(self, engine, data):"},{"line_number":1403,"context_line":"        node_history \u003d db_utils.get_table(engine, \u0027node_history\u0027)"},{"line_number":1404,"context_line":"        col_names \u003d [column.name for column in node_history.c]"},{"line_number":1405,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"e97dc39f_6e9417df","line":1402,"updated":"2026-07-24 12:34:41.000000000","message":"you just need to assert the new columns plus the full column names list","commit_id":"9b8f84c6abc2d0cd0f49ee3a46405cf38c65b72b"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"3139169f4675ff0d138cdae350d345bbf868d0f4","unresolved":false,"context_lines":[{"line_number":1399,"context_line":"        self.assertIsInstance(node_history.c.user.type,"},{"line_number":1400,"context_line":"                              sqlalchemy.types.String)"},{"line_number":1401,"context_line":""},{"line_number":1402,"context_line":"    def _check_9fb44677ef15(self, engine, data):"},{"line_number":1403,"context_line":"        node_history \u003d db_utils.get_table(engine, \u0027node_history\u0027)"},{"line_number":1404,"context_line":"        col_names \u003d [column.name for column in node_history.c]"},{"line_number":1405,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"1e9df433_8e2b34a8","line":1402,"in_reply_to":"e97dc39f_6e9417df","updated":"2026-07-27 12:58:25.000000000","message":"Done","commit_id":"9b8f84c6abc2d0cd0f49ee3a46405cf38c65b72b"}],"ironic/tests/unit/db/utils.py":[{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"f9c3cbf7ff0dd2e9f1889f357f98d58eed9a70f7","unresolved":true,"context_lines":[{"line_number":710,"context_line":"        \u0027created_at\u0027: kw.get(\u0027created_at\u0027),"},{"line_number":711,"context_line":"        \u0027updated_at\u0027: kw.get(\u0027updated_at\u0027),"},{"line_number":712,"context_line":"        \u0027state\u0027: kw.get(\u0027state\u0027, \u0027available\u0027),"},{"line_number":713,"context_line":"        \u0027target_provision_state\u0027: kw.get(\u0027target_provision_state\u0027, \u0027active\u0027),"},{"line_number":714,"context_line":"        \u0027duration_seconds\u0027: kw.get(\u0027duration_seconds\u0027, 120),"},{"line_number":715,"context_line":"    }"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5e150f8b_9d971073","line":714,"range":{"start_line":713,"start_character":1,"end_line":714,"end_character":60},"updated":"2026-06-18 13:03:08.000000000","message":"I think we should drop the defaults for target and duration, to avoid potential false positive in tests. It also matches created_at and updates_at above.","commit_id":"05d4a0c2edcd9488df5fea4d906d336c35ae3bb8"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"aa904d101b3a9a61e6416c330741b04a50071078","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        \u0027created_at\u0027: kw.get(\u0027created_at\u0027),"},{"line_number":711,"context_line":"        \u0027updated_at\u0027: kw.get(\u0027updated_at\u0027),"},{"line_number":712,"context_line":"        \u0027state\u0027: kw.get(\u0027state\u0027, \u0027available\u0027),"},{"line_number":713,"context_line":"        \u0027target_provision_state\u0027: kw.get(\u0027target_provision_state\u0027, \u0027active\u0027),"},{"line_number":714,"context_line":"        \u0027duration_seconds\u0027: kw.get(\u0027duration_seconds\u0027, 120),"},{"line_number":715,"context_line":"    }"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"49b38ed9_3b323f82","line":714,"range":{"start_line":713,"start_character":1,"end_line":714,"end_character":60},"in_reply_to":"5e150f8b_9d971073","updated":"2026-06-18 18:31:32.000000000","message":"Thanks for the review, Harald! Removed the default values for both fields to prevent false positives.","commit_id":"05d4a0c2edcd9488df5fea4d906d336c35ae3bb8"}],"ironic/tests/unit/objects/test_node_history.py":[{"author":{"_account_id":37087,"name":"Himanshu Roy","display_name":"Himanshu Roy","email":"hroy@redhat.com","username":"hroyrh"},"change_message_id":"e856e83f43e5e2d4c79ff60467bb34feedc82bae","unresolved":true,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"                mock_db_destroy.assert_called_once_with(uuid)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def test_list_with_project(self):"},{"line_number":137,"context_line":"        with mock.patch.object(self.dbapi, \u0027get_node_history_list\u0027,"},{"line_number":138,"context_line":"                               autospec\u003dTrue) as mock_get_list:"}],"source_content_type":"text/x-python","patch_set":23,"id":"50edceca_11fa4c58","line":135,"updated":"2026-08-05 12:45:55.000000000","message":"nit: extra newline","commit_id":"340573416c81c465a3a312b530458cc35bc35068"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"d2d819e3ce636b09574fd22e66fc7f2f986fde8e","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"                mock_db_destroy.assert_called_once_with(uuid)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def test_list_with_project(self):"},{"line_number":137,"context_line":"        with mock.patch.object(self.dbapi, \u0027get_node_history_list\u0027,"},{"line_number":138,"context_line":"                               autospec\u003dTrue) as mock_get_list:"}],"source_content_type":"text/x-python","patch_set":23,"id":"82abb4a5_c2a914f3","line":135,"in_reply_to":"50edceca_11fa4c58","updated":"2026-08-07 12:43:33.000000000","message":"Done","commit_id":"340573416c81c465a3a312b530458cc35bc35068"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"3245816832ce976a6aa332c23faf48e6fc8c928b","unresolved":true,"context_lines":[{"line_number":151,"context_line":"        self.assertTrue(history.fields[\u0027target_provision_state\u0027].nullable)"},{"line_number":152,"context_line":"        self.assertTrue(history.fields[\u0027duration_seconds\u0027].nullable)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def test_convert_to_version_1_1(self):"},{"line_number":155,"context_line":"        history \u003d objects.NodeHistory("},{"line_number":156,"context_line":"            self.context,"},{"line_number":157,"context_line":"            project\u003d\u0027fake-project\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"893369b8_3b5969f4","line":154,"updated":"2026-08-06 07:47:14.000000000","message":"we will also need to add to the test here for the new version","commit_id":"340573416c81c465a3a312b530458cc35bc35068"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"d2d819e3ce636b09574fd22e66fc7f2f986fde8e","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        self.assertTrue(history.fields[\u0027target_provision_state\u0027].nullable)"},{"line_number":152,"context_line":"        self.assertTrue(history.fields[\u0027duration_seconds\u0027].nullable)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def test_convert_to_version_1_1(self):"},{"line_number":155,"context_line":"        history \u003d objects.NodeHistory("},{"line_number":156,"context_line":"            self.context,"},{"line_number":157,"context_line":"            project\u003d\u0027fake-project\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"a17e1477_f6657244","line":154,"in_reply_to":"893369b8_3b5969f4","updated":"2026-08-07 12:43:33.000000000","message":"Done","commit_id":"340573416c81c465a3a312b530458cc35bc35068"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"d2d819e3ce636b09574fd22e66fc7f2f986fde8e","unresolved":true,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def test_fields(self):"},{"line_number":145,"context_line":"        history \u003d objects.NodeHistory(self.context)"},{"line_number":146,"context_line":"        self.assertIn(\u0027state\u0027, history.fields)"},{"line_number":147,"context_line":"        self.assertIn(\u0027target_provision_state\u0027, history.fields)"},{"line_number":148,"context_line":"        self.assertIn(\u0027duration_seconds\u0027, history.fields)"},{"line_number":149,"context_line":"        self.assertTrue(history.fields[\u0027state\u0027].nullable)"}],"source_content_type":"text/x-python","patch_set":24,"id":"31d4a083_41ee77bc","line":146,"updated":"2026-08-07 12:43:33.000000000","message":"missing project here","commit_id":"b38f93397c18efcddc92940b656fa598556e1a2d"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"4fc20610d3b5e8492153026a92dc9466b703377e","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def test_fields(self):"},{"line_number":145,"context_line":"        history \u003d objects.NodeHistory(self.context)"},{"line_number":146,"context_line":"        self.assertIn(\u0027state\u0027, history.fields)"},{"line_number":147,"context_line":"        self.assertIn(\u0027target_provision_state\u0027, history.fields)"},{"line_number":148,"context_line":"        self.assertIn(\u0027duration_seconds\u0027, history.fields)"},{"line_number":149,"context_line":"        self.assertTrue(history.fields[\u0027state\u0027].nullable)"}],"source_content_type":"text/x-python","patch_set":24,"id":"9603a464_7124698b","line":146,"in_reply_to":"31d4a083_41ee77bc","updated":"2026-08-08 09:01:40.000000000","message":"Done","commit_id":"b38f93397c18efcddc92940b656fa598556e1a2d"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"d2d819e3ce636b09574fd22e66fc7f2f986fde8e","unresolved":true,"context_lines":[{"line_number":146,"context_line":"        self.assertIn(\u0027state\u0027, history.fields)"},{"line_number":147,"context_line":"        self.assertIn(\u0027target_provision_state\u0027, history.fields)"},{"line_number":148,"context_line":"        self.assertIn(\u0027duration_seconds\u0027, history.fields)"},{"line_number":149,"context_line":"        self.assertTrue(history.fields[\u0027state\u0027].nullable)"},{"line_number":150,"context_line":"        self.assertTrue(history.fields[\u0027target_provision_state\u0027].nullable)"},{"line_number":151,"context_line":"        self.assertTrue(history.fields[\u0027duration_seconds\u0027].nullable)"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"5c461538_3701cade","line":149,"updated":"2026-08-07 12:43:33.000000000","message":"ditto","commit_id":"b38f93397c18efcddc92940b656fa598556e1a2d"},{"author":{"_account_id":38972,"name":"Esther Domfeh","display_name":"edomfeh","email":"estherdomfeh88@gmail.com","username":"edomfeh"},"change_message_id":"4fc20610d3b5e8492153026a92dc9466b703377e","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        self.assertIn(\u0027state\u0027, history.fields)"},{"line_number":147,"context_line":"        self.assertIn(\u0027target_provision_state\u0027, history.fields)"},{"line_number":148,"context_line":"        self.assertIn(\u0027duration_seconds\u0027, history.fields)"},{"line_number":149,"context_line":"        self.assertTrue(history.fields[\u0027state\u0027].nullable)"},{"line_number":150,"context_line":"        self.assertTrue(history.fields[\u0027target_provision_state\u0027].nullable)"},{"line_number":151,"context_line":"        self.assertTrue(history.fields[\u0027duration_seconds\u0027].nullable)"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"c7725b06_880b82b5","line":149,"in_reply_to":"5c461538_3701cade","updated":"2026-08-08 09:01:40.000000000","message":"Done","commit_id":"b38f93397c18efcddc92940b656fa598556e1a2d"}],"ironic/tests/unit/objects/test_objects.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d0d7bd505d4f0c09dcbe453540439070fae20ed0","unresolved":true,"context_lines":[{"line_number":721,"context_line":"    \u0027DeployTemplateCRUDNotification\u0027: \u00271.0-59acc533c11d306f149846f922739c15\u0027,"},{"line_number":722,"context_line":"    \u0027DeployTemplateCRUDPayload\u0027: \u00271.0-200857e7e715f58a5b6d6b700ab73a3b\u0027,"},{"line_number":723,"context_line":"    \u0027Deployment\u0027: \u00271.1-1f326911955bbb1c24cb6ec0a453f6cc\u0027,"},{"line_number":724,"context_line":"    \u0027NodeHistory\u0027: \u00271.2-ab4a2c3403a9faec1d5edcf305344df5\u0027,"},{"line_number":725,"context_line":"    \u0027NodeInventory\u0027: \u00271.1-acc176aeb9358c3866ceecdd13832b44\u0027,"},{"line_number":726,"context_line":"    \u0027FirmwareComponent\u0027: \u00271.1-3fc6cfd07d01b681b69d0b654b42745a\u0027,"},{"line_number":727,"context_line":"    \u0027FirmwareComponentList\u0027: \u00271.1-b1b32f4ead70f94f71913e39ea628eda\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"d0e26c90_18f79440","line":724,"updated":"2026-07-30 18:46:57.000000000","message":"This is a red flag. Any public change of any sort where we end up also resulting in a changed signature for the object, needs to have an updated version. In this case, it should be version 1.3.","commit_id":"ca62185a928f8331658f2b05a2655e4de25cfa1e"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"afaf3ac51e175de849e659f49e0cbaa84db66721","unresolved":false,"context_lines":[{"line_number":721,"context_line":"    \u0027DeployTemplateCRUDNotification\u0027: \u00271.0-59acc533c11d306f149846f922739c15\u0027,"},{"line_number":722,"context_line":"    \u0027DeployTemplateCRUDPayload\u0027: \u00271.0-200857e7e715f58a5b6d6b700ab73a3b\u0027,"},{"line_number":723,"context_line":"    \u0027Deployment\u0027: \u00271.1-1f326911955bbb1c24cb6ec0a453f6cc\u0027,"},{"line_number":724,"context_line":"    \u0027NodeHistory\u0027: \u00271.2-ab4a2c3403a9faec1d5edcf305344df5\u0027,"},{"line_number":725,"context_line":"    \u0027NodeInventory\u0027: \u00271.1-acc176aeb9358c3866ceecdd13832b44\u0027,"},{"line_number":726,"context_line":"    \u0027FirmwareComponent\u0027: \u00271.1-3fc6cfd07d01b681b69d0b654b42745a\u0027,"},{"line_number":727,"context_line":"    \u0027FirmwareComponentList\u0027: \u00271.1-b1b32f4ead70f94f71913e39ea628eda\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"b320764a_c115fe52","line":724,"in_reply_to":"1bbc6c27_a49e5696","updated":"2026-08-03 06:48:30.000000000","message":"Done","commit_id":"ca62185a928f8331658f2b05a2655e4de25cfa1e"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"6556dafa7a29190f8459caf8277d388a729065a1","unresolved":true,"context_lines":[{"line_number":721,"context_line":"    \u0027DeployTemplateCRUDNotification\u0027: \u00271.0-59acc533c11d306f149846f922739c15\u0027,"},{"line_number":722,"context_line":"    \u0027DeployTemplateCRUDPayload\u0027: \u00271.0-200857e7e715f58a5b6d6b700ab73a3b\u0027,"},{"line_number":723,"context_line":"    \u0027Deployment\u0027: \u00271.1-1f326911955bbb1c24cb6ec0a453f6cc\u0027,"},{"line_number":724,"context_line":"    \u0027NodeHistory\u0027: \u00271.2-ab4a2c3403a9faec1d5edcf305344df5\u0027,"},{"line_number":725,"context_line":"    \u0027NodeInventory\u0027: \u00271.1-acc176aeb9358c3866ceecdd13832b44\u0027,"},{"line_number":726,"context_line":"    \u0027FirmwareComponent\u0027: \u00271.1-3fc6cfd07d01b681b69d0b654b42745a\u0027,"},{"line_number":727,"context_line":"    \u0027FirmwareComponentList\u0027: \u00271.1-b1b32f4ead70f94f71913e39ea628eda\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"1bbc6c27_a49e5696","line":724,"in_reply_to":"d0e26c90_18f79440","updated":"2026-07-31 07:11:20.000000000","message":"ditto","commit_id":"ca62185a928f8331658f2b05a2655e4de25cfa1e"}]}
