)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":22860,"name":"Solio Sarabia","email":"solio.sarabia@intel.com","username":"ssarabia"},"change_message_id":"1c7269dcb9ab5079850206eb1701496d1d0f3a33","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Forbid passing portgroup_uuid to POST /ports in old API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Right now, if passed in an old microversion, portgroup_uuid value"},{"line_number":10,"context_line":"gets ignored in the Port object\u0027s portgroup_uuid setter method,"},{"line_number":11,"context_line":"and this Unset value then checked to not contain the portgroup_uuid."},{"line_number":12,"context_line":"Check the request body instead of the Port object to determine if"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa31d9ce_5bbe43d5","line":9,"range":{"start_line":9,"start_character":27,"end_line":9,"end_character":43},"updated":"2017-02-17 00:48:58.000000000","message":"It\u0027d be nice if we mention which version is considered \u0027old microversion\u0027. \nFor instance: \"in an old microversion (less that 1.23)\"","commit_id":"ca786fff0668a4c2425cbc30deda248f067b911d"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"28f8522ef9a8d915d7efc66f65b570fdf5876c82","unresolved":false,"context_lines":[{"line_number":10,"context_line":"gets ignored in the Port object\u0027s portgroup_uuid setter method,"},{"line_number":11,"context_line":"and this Unset value then checked to not contain the portgroup_uuid."},{"line_number":12,"context_line":"Check the request body instead of the Port object to determine if"},{"line_number":13,"context_line":"portgroup_uuid was passed, and if so, return an error."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1646120"},{"line_number":16,"context_line":"Change-Id: I338ee32064bc37290976a6d73788c79f65911850"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a461143_07d21a5c","line":13,"updated":"2017-01-30 19:34:31.000000000","message":"s/error/Not Acceptable error/","commit_id":"ca786fff0668a4c2425cbc30deda248f067b911d"}],"ironic/tests/unit/api/utils.py":[{"author":{"_account_id":22860,"name":"Solio Sarabia","email":"solio.sarabia@intel.com","username":"ssarabia"},"change_message_id":"1c7269dcb9ab5079850206eb1701496d1d0f3a33","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    port.pop(\u0027node_id\u0027)"},{"line_number":118,"context_line":"    port.pop(\u0027portgroup_id\u0027)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    # NOTE(jroll): pop out fields that were introduced in later API versions,"},{"line_number":121,"context_line":"    # unless explicitly requested. Otherwise, these will cause tests using"},{"line_number":122,"context_line":"    # older API versions to fail."},{"line_number":123,"context_line":"    new_api_ver_arguments \u003d [\u0027local_link_connection\u0027, \u0027pxe_enabled\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_7bfdc76d","line":120,"range":{"start_line":120,"start_character":55,"end_line":120,"end_character":67},"updated":"2017-02-17 00:48:58.000000000","message":"Probably makes sense to clarify \"in later API versions\" with the specific version we started to remove fields. Also, this will clarify what is considered \u0027older API version\u0027 in L122.","commit_id":"ca786fff0668a4c2425cbc30deda248f067b911d"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"28f8522ef9a8d915d7efc66f65b570fdf5876c82","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    port.pop(\u0027node_id\u0027)"},{"line_number":118,"context_line":"    port.pop(\u0027portgroup_id\u0027)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    # NOTE(jroll): pop out fields that were introduced in later API versions,"},{"line_number":121,"context_line":"    # unless explicitly requested. Otherwise, these will cause tests using"},{"line_number":122,"context_line":"    # older API versions to fail."},{"line_number":123,"context_line":"    new_api_ver_arguments \u003d [\u0027local_link_connection\u0027, \u0027pxe_enabled\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_c78e5278","line":120,"updated":"2017-01-30 19:34:31.000000000","message":"is this change related?","commit_id":"ca786fff0668a4c2425cbc30deda248f067b911d"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"aeb76d3d1ae1b1e43222ca0250a2c5922a6d3fc1","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    port.pop(\u0027node_id\u0027)"},{"line_number":118,"context_line":"    port.pop(\u0027portgroup_id\u0027)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    # NOTE(jroll): pop out fields that were introduced in later API versions,"},{"line_number":121,"context_line":"    # unless explicitly requested. Otherwise, these will cause tests using"},{"line_number":122,"context_line":"    # older API versions to fail."},{"line_number":123,"context_line":"    new_api_ver_arguments \u003d [\u0027local_link_connection\u0027, \u0027pxe_enabled\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_834e506d","line":120,"in_reply_to":"3a461143_c78e5278","updated":"2017-02-13 12:37:50.000000000","message":"Kind of, it was done so that I don\u0027t have to do the .pop in the new test in the next file, also with this I was able to remove .pops from a couple of other tests.","commit_id":"ca786fff0668a4c2425cbc30deda248f067b911d"}],"ironic/tests/unit/api/v1/test_ports.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3e28e19eaf96f7f57977acd87a00f253dcb963e8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    port[\u0027node_uuid\u0027] \u003d kw.get(\u0027node_uuid\u0027, node[\u0027uuid\u0027])"},{"line_number":51,"context_line":"    pg_uuid \u003d kw.get(\u0027portgroup_uuid\u0027, portgroup[\u0027uuid\u0027])"},{"line_number":52,"context_line":"    # NOTE(vdrok): passing portgroup_uuid\u003dNone in kwargs makes it not put it"},{"line_number":53,"context_line":"    # in the POSTed dictionary"},{"line_number":54,"context_line":"    if pg_uuid:"},{"line_number":55,"context_line":"        port[\u0027portgroup_uuid\u0027] \u003d pg_uuid"},{"line_number":56,"context_line":"    return port"}],"source_content_type":"text/x-python","patch_set":4,"id":"da4df55a_db1151ae","line":53,"updated":"2016-12-22 17:22:54.000000000","message":"How about \u0027We set kwarg\u0027s \u0027portgroup_uuid\u0027\u003dNone if we don\u0027t want a portgroup UUID in the POSTed dict.\u0027\n\n(which seems to be part of a docstring for the function, not a NOTE, but doesn\u0027t matter much)\n\nAnd maybe this note should be combined with the NOTE above in L44.","commit_id":"288fbe1a32be9a05258ce5de90eff477eadfc8a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"eebc84fdedb48e56a9ed78bb25e4d0bdaeec5f91","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    port[\u0027node_uuid\u0027] \u003d kw.get(\u0027node_uuid\u0027, node[\u0027uuid\u0027])"},{"line_number":51,"context_line":"    pg_uuid \u003d kw.get(\u0027portgroup_uuid\u0027, portgroup[\u0027uuid\u0027])"},{"line_number":52,"context_line":"    # NOTE(vdrok): passing portgroup_uuid\u003dNone in kwargs makes it not put it"},{"line_number":53,"context_line":"    # in the POSTed dictionary"},{"line_number":54,"context_line":"    if pg_uuid:"},{"line_number":55,"context_line":"        port[\u0027portgroup_uuid\u0027] \u003d pg_uuid"},{"line_number":56,"context_line":"    return port"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_e0798383","line":53,"in_reply_to":"da4df55a_db1151ae","updated":"2017-01-30 14:59:00.000000000","message":"Done","commit_id":"288fbe1a32be9a05258ce5de90eff477eadfc8a2"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"8713346e432c85ebb48e1ee6622ba777db9b6f69","unresolved":false,"context_lines":[{"line_number":969,"context_line":"        self.assertEqual(self.node.uuid, response.json[\u0027node_uuid\u0027])"},{"line_number":970,"context_line":""},{"line_number":971,"context_line":"    def test_create_port_min_api_version_portgroup_not_acceptable(self):"},{"line_number":972,"context_line":"        pdict \u003d post_get_test_port(node_uuid\u003dself.node.uuid)"},{"line_number":973,"context_line":"        headers \u003d {api_base.Version.string: str(api_v1.MIN_VER)}"},{"line_number":974,"context_line":"        response \u003d self.post_json(\u0027/ports\u0027, pdict, headers\u003dheaders,"},{"line_number":975,"context_line":"                                  expect_errors\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_b08dc17d","line":972,"updated":"2016-12-12 18:56:45.000000000","message":"it may be better to be explicit here about having the portgroup in the test port","commit_id":"288fbe1a32be9a05258ce5de90eff477eadfc8a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"eebc84fdedb48e56a9ed78bb25e4d0bdaeec5f91","unresolved":false,"context_lines":[{"line_number":969,"context_line":"        self.assertEqual(self.node.uuid, response.json[\u0027node_uuid\u0027])"},{"line_number":970,"context_line":""},{"line_number":971,"context_line":"    def test_create_port_min_api_version_portgroup_not_acceptable(self):"},{"line_number":972,"context_line":"        pdict \u003d post_get_test_port(node_uuid\u003dself.node.uuid)"},{"line_number":973,"context_line":"        headers \u003d {api_base.Version.string: str(api_v1.MIN_VER)}"},{"line_number":974,"context_line":"        response \u003d self.post_json(\u0027/ports\u0027, pdict, headers\u003dheaders,"},{"line_number":975,"context_line":"                                  expect_errors\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_6053d3e2","line":972,"in_reply_to":"1a6eadb0_b08dc17d","updated":"2017-01-30 14:59:00.000000000","message":"Done","commit_id":"288fbe1a32be9a05258ce5de90eff477eadfc8a2"},{"author":{"_account_id":22860,"name":"Solio Sarabia","email":"solio.sarabia@intel.com","username":"ssarabia"},"change_message_id":"1c7269dcb9ab5079850206eb1701496d1d0f3a33","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# NOTE(lucasagomes): When creating a port via API (POST)"},{"line_number":49,"context_line":"#                    we have to use node_uuid and portgroup_uuid"},{"line_number":50,"context_line":"# NOTE(vdrok): We set kwarg\u0027s portgroup_uuid\u003dNone if we don\u0027t want a"},{"line_number":51,"context_line":"#              portgroup UUID in the POSTed dict."},{"line_number":52,"context_line":"def post_get_test_port(**kw):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_fb6b7783","line":49,"range":{"start_line":49,"start_character":46,"end_line":49,"end_character":64},"updated":"2017-02-17 00:48:58.000000000","message":"and portgroup_uuid for API versions that support port groups.","commit_id":"ca786fff0668a4c2425cbc30deda248f067b911d"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"28f8522ef9a8d915d7efc66f65b570fdf5876c82","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# NOTE(lucasagomes): When creating a port via API (POST)"},{"line_number":49,"context_line":"#                    we have to use node_uuid and portgroup_uuid"},{"line_number":50,"context_line":"# NOTE(vdrok): We set kwarg\u0027s portgroup_uuid\u003dNone if we don\u0027t want a"},{"line_number":51,"context_line":"#              portgroup UUID in the POSTed dict."},{"line_number":52,"context_line":"def post_get_test_port(**kw):"},{"line_number":53,"context_line":"    port \u003d apiutils.port_post_data(**kw)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_27a2b6fd","line":50,"updated":"2017-01-30 19:34:31.000000000","message":"I don\u0027t see that being done in this code? Maybe it\u0027s left as None?","commit_id":"ca786fff0668a4c2425cbc30deda248f067b911d"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"aeb76d3d1ae1b1e43222ca0250a2c5922a6d3fc1","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# NOTE(lucasagomes): When creating a port via API (POST)"},{"line_number":49,"context_line":"#                    we have to use node_uuid and portgroup_uuid"},{"line_number":50,"context_line":"# NOTE(vdrok): We set kwarg\u0027s portgroup_uuid\u003dNone if we don\u0027t want a"},{"line_number":51,"context_line":"#              portgroup UUID in the POSTed dict."},{"line_number":52,"context_line":"def post_get_test_port(**kw):"},{"line_number":53,"context_line":"    port \u003d apiutils.port_post_data(**kw)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_28090332","line":50,"in_reply_to":"3a461143_27a2b6fd","updated":"2017-02-13 12:37:50.000000000","message":"Hm, it\u0027s on L1258, and on l58 it does not get added to port dictionary if it\u0027s None.","commit_id":"ca786fff0668a4c2425cbc30deda248f067b911d"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"28f8522ef9a8d915d7efc66f65b570fdf5876c82","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    portgroup \u003d dbutils.get_test_portgroup()"},{"line_number":56,"context_line":"    port[\u0027node_uuid\u0027] \u003d kw.get(\u0027node_uuid\u0027, node[\u0027uuid\u0027])"},{"line_number":57,"context_line":"    pg_uuid \u003d kw.get(\u0027portgroup_uuid\u0027, portgroup[\u0027uuid\u0027])"},{"line_number":58,"context_line":"    if pg_uuid:"},{"line_number":59,"context_line":"        port[\u0027portgroup_uuid\u0027] \u003d pg_uuid"},{"line_number":60,"context_line":"    return port"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_a76786e7","line":58,"updated":"2017-01-30 19:34:31.000000000","message":"is there a possibility that pg_uuid is empty? I mean, get_test_portgroup should return a prtogroup with uuid, and it should be used in ln 57.","commit_id":"ca786fff0668a4c2425cbc30deda248f067b911d"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"aeb76d3d1ae1b1e43222ca0250a2c5922a6d3fc1","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    portgroup \u003d dbutils.get_test_portgroup()"},{"line_number":56,"context_line":"    port[\u0027node_uuid\u0027] \u003d kw.get(\u0027node_uuid\u0027, node[\u0027uuid\u0027])"},{"line_number":57,"context_line":"    pg_uuid \u003d kw.get(\u0027portgroup_uuid\u0027, portgroup[\u0027uuid\u0027])"},{"line_number":58,"context_line":"    if pg_uuid:"},{"line_number":59,"context_line":"        port[\u0027portgroup_uuid\u0027] \u003d pg_uuid"},{"line_number":60,"context_line":"    return port"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_03226052","line":58,"in_reply_to":"3a461143_a76786e7","updated":"2017-02-13 12:37:50.000000000","message":"So, that\u0027s what I was trying to say in the comment above - if you want a portgroup_uuid, either don\u0027t set it directly, then default portgroup uuid is used, or pass the one you need. If you don\u0027t want to pass portgroup_uuid at all (which is the case in tests for old api versions), set it to portgroup_uuid\u003dNone. Not passing portgroup_uuid and passing portgroup_uuid\u003dNone is equivalent from POV of actual functionality, but API should error if portgroup_uuid is passed in old api version, no matter if it\u0027s None or not.","commit_id":"ca786fff0668a4c2425cbc30deda248f067b911d"},{"author":{"_account_id":22860,"name":"Solio Sarabia","email":"solio.sarabia@intel.com","username":"ssarabia"},"change_message_id":"1c7269dcb9ab5079850206eb1701496d1d0f3a33","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    portgroup \u003d dbutils.get_test_portgroup()"},{"line_number":56,"context_line":"    port[\u0027node_uuid\u0027] \u003d kw.get(\u0027node_uuid\u0027, node[\u0027uuid\u0027])"},{"line_number":57,"context_line":"    pg_uuid \u003d kw.get(\u0027portgroup_uuid\u0027, portgroup[\u0027uuid\u0027])"},{"line_number":58,"context_line":"    if pg_uuid:"},{"line_number":59,"context_line":"        port[\u0027portgroup_uuid\u0027] \u003d pg_uuid"},{"line_number":60,"context_line":"    return port"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_7bc947ac","line":58,"in_reply_to":"fa31d9ce_03226052","updated":"2017-02-17 00:48:58.000000000","message":"I\u0027d change the wording in L50 to summarize this conversation and make the comment clearer.\n\nSet portgroup_uuid\u003dNone in kwargs to get a POST dict without portgroup_uuid.  If you want a portgroup_uuid in the POST dict, either pass its value in kwargs or don\u0027t pass portgroup_uuid to get a default value.","commit_id":"ca786fff0668a4c2425cbc30deda248f067b911d"}],"releasenotes/notes/forbid-passing-portgroup-uuid-on-old-api-version-post-ports-2861913f0e274ef2.yaml":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3e28e19eaf96f7f57977acd87a00f253dcb963e8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - All the POST requests to ``/ports`` endpoint with ``portgroup_uuid`` value"},{"line_number":4,"context_line":"    in them will be rejected with 406 status code, in API microversions range"},{"line_number":5,"context_line":"    1.1 - 1.23."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"da4df55a_3b941de1","line":4,"updated":"2016-12-22 17:22:54.000000000","message":"nit s/them/the request body/","commit_id":"288fbe1a32be9a05258ce5de90eff477eadfc8a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"eebc84fdedb48e56a9ed78bb25e4d0bdaeec5f91","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - All the POST requests to ``/ports`` endpoint with ``portgroup_uuid`` value"},{"line_number":4,"context_line":"    in them will be rejected with 406 status code, in API microversions range"},{"line_number":5,"context_line":"    1.1 - 1.23."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3a461143_c032c7a6","line":4,"in_reply_to":"da4df55a_3b941de1","updated":"2017-01-30 14:59:00.000000000","message":"Done","commit_id":"288fbe1a32be9a05258ce5de90eff477eadfc8a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3e28e19eaf96f7f57977acd87a00f253dcb963e8","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - All the POST requests to ``/ports`` endpoint with ``portgroup_uuid`` value"},{"line_number":4,"context_line":"    in them will be rejected with 406 status code, in API microversions range"},{"line_number":5,"context_line":"    1.1 - 1.23."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"da4df55a_9b4fc991","line":5,"updated":"2016-12-22 17:22:54.000000000","message":"maybe \u0027for API microversions that don\u0027t support portgroups (i.e., version 1.23 and under.)\u0027","commit_id":"288fbe1a32be9a05258ce5de90eff477eadfc8a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"eebc84fdedb48e56a9ed78bb25e4d0bdaeec5f91","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - All the POST requests to ``/ports`` endpoint with ``portgroup_uuid`` value"},{"line_number":4,"context_line":"    in them will be rejected with 406 status code, in API microversions range"},{"line_number":5,"context_line":"    1.1 - 1.23."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3a461143_a02dbb47","line":5,"in_reply_to":"da4df55a_9b4fc991","updated":"2017-01-30 14:59:00.000000000","message":"Done","commit_id":"288fbe1a32be9a05258ce5de90eff477eadfc8a2"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"28f8522ef9a8d915d7efc66f65b570fdf5876c82","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - All the POST requests to ``/ports`` endpoint with ``portgroup_uuid`` value"},{"line_number":4,"context_line":"    in the request body will be rejected with 406 status code for API"},{"line_number":5,"context_line":"    microversions that don\u0027t support portgroups (i.e., version 1.23 and under)."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3a461143_47f18200","line":4,"updated":"2017-01-30 19:34:31.000000000","message":"406 Not Acceptable","commit_id":"ca786fff0668a4c2425cbc30deda248f067b911d"},{"author":{"_account_id":22860,"name":"Solio Sarabia","email":"solio.sarabia@intel.com","username":"ssarabia"},"change_message_id":"1c7269dcb9ab5079850206eb1701496d1d0f3a33","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - All the POST requests to ``/ports`` endpoint with ``portgroup_uuid`` value"},{"line_number":4,"context_line":"    in the request body will be rejected with 406 status code for API"},{"line_number":5,"context_line":"    microversions that don\u0027t support portgroups (i.e., version 1.23 and under)."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"fa31d9ce_35627e17","line":5,"range":{"start_line":5,"start_character":48,"end_line":5,"end_character":78},"updated":"2017-02-17 00:48:58.000000000","message":"Is my understanding correct? Version 1.23 added support for portgroups. Maybe this part could be clearer:\n\n\"version less than 1.23\" or \"version lower than 1.23\".\nhttps://git.openstack.org/cgit/openstack/ironic/tree/ironic/api/controllers/v1/utils.py#n483","commit_id":"ca786fff0668a4c2425cbc30deda248f067b911d"}]}
