)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"2db929fafe22640fdbbb3c5036dc3711693f7b5b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e6bf32c7_399c7dd0","updated":"2026-05-06 10:40:14.000000000","message":"the implementation lgtm and it great to have clear docs","commit_id":"c0648c041b0bd71c31493c9ee4e86e0b064541b1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3a73dd311f3cc12157393341bfb21be5698bfff4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"fa80d9bc_88a33321","updated":"2026-05-15 18:19:53.000000000","message":"Just questions/nits but looks nice","commit_id":"5a2d908f36cb0c3e5379fb7fdfce55f7e20572f4"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"74b63af90d3b5545a6985be213c00cb377dbfc33","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"85b89b50_41e8f15e","updated":"2026-05-14 09:12:43.000000000","message":"check-rdo","commit_id":"5a2d908f36cb0c3e5379fb7fdfce55f7e20572f4"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"6a37c7b09dbb560eae2af47250b185d1100e75e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ea24b710_fc6721f0","updated":"2026-05-14 13:24:25.000000000","message":"the new phrasing seems clear to me","commit_id":"5a2d908f36cb0c3e5379fb7fdfce55f7e20572f4"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"5b29386a2e9f3e699552c3e081467f6dd6c02745","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e3b81bbf_4d7bb505","updated":"2026-05-19 17:45:48.000000000","message":"LGTM","commit_id":"0de5833b34dc7526f8d399e47f957ddbc2c74fc8"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"64559068b9f13f42f0beac9bd4ac4b58d47579f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a8650db7_42fbc47c","updated":"2026-05-21 06:15:39.000000000","message":"recheck","commit_id":"0de5833b34dc7526f8d399e47f957ddbc2c74fc8"}],"api-ref/source/watcher-api-v1-datamodel.inc":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"dacb4a699f93483cff0d3ae1f7c3e76b49eb6a4d","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Returns the information about Data Model."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The response contains only a fixed set of fields for each compute node and"},{"line_number":22,"context_line":"server element in the Compute Data Model. Other fields that are documented"},{"line_number":23,"context_line":"in the ``Response`` section are **not** automatically exposed through this API."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":1,"id":"83a584ba_ff2c3a0f","line":21,"in_reply_to":"8f5df680_319e0a16","updated":"2026-04-30 14:51:34.000000000","message":"Fixed","commit_id":"a24abfcd1894cf5585c2fb95eafdafcc29c75481"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3a73dd311f3cc12157393341bfb21be5698bfff4","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Returns the information about Data Model."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":".. note::"},{"line_number":22,"context_line":"  This api will not be modified in future microversion to included new fields"},{"line_number":23,"context_line":"  that may be added to the Compute Data Model. Fields that are not documented"},{"line_number":24,"context_line":"  in the ``Response`` section are **not** exposed through this API."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Normal response codes: 200"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":5,"id":"ecbad6bb_e2bacf40","line":24,"range":{"start_line":21,"start_character":0,"end_line":24,"end_character":67},"updated":"2026-05-15 18:19:53.000000000","message":"TBH I don\u0027t see a reason for having this note here. This info seems relevant for contributors, but not for API consumers?","commit_id":"5a2d908f36cb0c3e5379fb7fdfce55f7e20572f4"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"7774b3c0a2c513a47d9ada8c9e77b521435a9b86","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Returns the information about Data Model."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":".. note::"},{"line_number":22,"context_line":"  This api will not be modified in future microversion to included new fields"},{"line_number":23,"context_line":"  that may be added to the Compute Data Model. Fields that are not documented"},{"line_number":24,"context_line":"  in the ``Response`` section are **not** exposed through this API."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Normal response codes: 200"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":5,"id":"8d5ee994_ba140de7","line":24,"range":{"start_line":21,"start_character":0,"end_line":24,"end_character":67},"in_reply_to":"ecbad6bb_e2bacf40","updated":"2026-05-19 10:54:03.000000000","message":"I think users familiar with Watcher, or even developers, easily may asume that the datamodel list call shows all the fields in the compute model, as it has been happening until now. IMO it\u0027s good to be explicit here. I think it does not hurt anyway.","commit_id":"5a2d908f36cb0c3e5379fb7fdfce55f7e20572f4"}],"doc/source/contributor/plugin/cdmc-plugin.rst":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3a73dd311f3cc12157393341bfb21be5698bfff4","unresolved":true,"context_lines":[{"line_number":137,"context_line":"recommended steps are:"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"#. Mark the field as deprecated in the release notes and documentation."},{"line_number":140,"context_line":"#. Keep the field present but document it as deprecated for at least one"},{"line_number":141,"context_line":"   release cycle."},{"line_number":142,"context_line":"#. Remove the field in a subsequent release after the deprecation period."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Define configuration parameters"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3208be5e_b7cac922","line":141,"range":{"start_line":140,"start_character":3,"end_line":141,"end_character":16},"updated":"2026-05-15 18:19:53.000000000","message":"Shouldn\u0027t we mention that it might be deprecated for at least one SLURP release?","commit_id":"5a2d908f36cb0c3e5379fb7fdfce55f7e20572f4"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"7774b3c0a2c513a47d9ada8c9e77b521435a9b86","unresolved":true,"context_lines":[{"line_number":137,"context_line":"recommended steps are:"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"#. Mark the field as deprecated in the release notes and documentation."},{"line_number":140,"context_line":"#. Keep the field present but document it as deprecated for at least one"},{"line_number":141,"context_line":"   release cycle."},{"line_number":142,"context_line":"#. Remove the field in a subsequent release after the deprecation period."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Define configuration parameters"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7fa197b7_f05d254b","line":141,"range":{"start_line":140,"start_character":3,"end_line":141,"end_character":16},"in_reply_to":"3208be5e_b7cac922","updated":"2026-05-19 10:54:03.000000000","message":"Yep, actually the \"(at minimum one full release cycle)\" is not accurate with the SLURP model. Now a cycle means \"SLURP to SLURP\". I\u0027ll update it.","commit_id":"5a2d908f36cb0c3e5379fb7fdfce55f7e20572f4"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"f4c50bb077f9551c64ee05fd42b4048066ec94b2","unresolved":true,"context_lines":[{"line_number":137,"context_line":"recommended steps are:"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"#. Mark the field as deprecated in the release notes and documentation."},{"line_number":140,"context_line":"#. Keep the field present but document it as deprecated for at least one"},{"line_number":141,"context_line":"   release cycle."},{"line_number":142,"context_line":"#. Remove the field in a subsequent release after the deprecation period."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Define configuration parameters"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7592804b_f747a6d7","line":141,"range":{"start_line":140,"start_character":3,"end_line":141,"end_character":16},"in_reply_to":"7fa197b7_f05d254b","updated":"2026-05-19 11:36:31.000000000","message":"Rephrased based on the info in https://docs.openstack.org/project-team-guide/release-cadence-adjustment.html#:~:text\u003dDeprecations%3A%20Projects%20currently%20deprecate%20features,release%20which%20may%20be%20skipped.\n\n\"Since the deprecation, waiting, and removal can only happen in “SLURP” releases\"","commit_id":"5a2d908f36cb0c3e5379fb7fdfce55f7e20572f4"}],"releasenotes/notes/freeze-data-model-api-fields-d811e6675c3d455f.yaml":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"dacb4a699f93483cff0d3ae1f7c3e76b49eb6a4d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The data_model list API (``GET /v1/data_model``) now returns only a fixed"},{"line_number":5,"context_line":"    set of fields for compute node and server elements instead of exposing"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"4751a7d6_671691b9","line":2,"in_reply_to":"edc20d77_0c5a4cdd","updated":"2026-04-30 14:51:34.000000000","message":"Done","commit_id":"a24abfcd1894cf5585c2fb95eafdafcc29c75481"}],"watcher/api/controllers/v1/data_model.py":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"dacb4a699f93483cff0d3ae1f7c3e76b49eb6a4d","unresolved":true,"context_lines":[{"line_number":35,"context_line":"#   1. Add a new minor version constant in api/controllers/v1/versions.py"},{"line_number":36,"context_line":"#   2. Add the prefixed field name (\u0027node_\u003cfield\u003e\u0027) to this set"},{"line_number":37,"context_line":"#   3. Add version-hiding logic in hide_fields_in_newer_versions() if needed"},{"line_number":38,"context_line":"FROZEN_NODE_FIELDS \u003d frozenset("},{"line_number":39,"context_line":"    {"},{"line_number":40,"context_line":"        \u0027node_uuid\u0027,"},{"line_number":41,"context_line":"        \u0027node_hostname\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"6064a524_aa9a5f44","line":38,"in_reply_to":"6dfa1218_0a338d0e","updated":"2026-04-30 14:51:34.000000000","message":"Actually, that\u0027s the goal of this patch, avoid fields being exposed in the API without explicit request from the developer.","commit_id":"a24abfcd1894cf5585c2fb95eafdafcc29c75481"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"dacb4a699f93483cff0d3ae1f7c3e76b49eb6a4d","unresolved":true,"context_lines":[{"line_number":79,"context_line":"_FROZEN_ALL_FIELDS \u003d FROZEN_NODE_FIELDS | FROZEN_SERVER_FIELDS"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"def filter_data_model_fields(obj):"},{"line_number":83,"context_line":"    \"\"\"Remove fields not in the frozen API field set from each context entry."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    This prevents newly-added internal model fields from leaking into the"}],"source_content_type":"text/x-python","patch_set":1,"id":"b4f9d5f3_6df582f6","line":82,"in_reply_to":"80c7a56f_c420fb23","updated":"2026-04-30 14:51:34.000000000","message":"I followed the same approach as in hide_fields_in_newer_versions. I think in this case it\u0027s a good approach given that this is only intended to be used for the API datamodel controller.","commit_id":"a24abfcd1894cf5585c2fb95eafdafcc29c75481"}],"watcher/tests/unit/api/v1/test_data_model.py":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"dacb4a699f93483cff0d3ae1f7c3e76b49eb6a4d","unresolved":true,"context_lines":[{"line_number":315,"context_line":"                else:"},{"line_number":316,"context_line":"                    obj[name] \u003d None if field.nullable else \u0027fake\u0027"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def test_all_model_fields_filtered_to_frozen_set(self):"},{"line_number":319,"context_line":"        \"\"\"All fields on real model objects reach the filter."},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        The faker may leave optional fields (no default) unset, causing"}],"source_content_type":"text/x-python","patch_set":1,"id":"50253ac0_9a08467f","line":318,"in_reply_to":"ef1c738a_34cd1a2e","updated":"2026-04-30 14:51:34.000000000","message":"We control the content of the model in generate_scenario_11_with_2_nodes_2_instances() and, if that changes and a compute only node is returned, it\u0027d fail the assert, as we are comparing the attributes in the response with the ones on the entire list of ComputeNode + Server.","commit_id":"a24abfcd1894cf5585c2fb95eafdafcc29c75481"}]}
