)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"925bc4a8d5fabb3cd3aef4f19db9718c0a47793c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"0b22ba11_2839475b","updated":"2023-09-07 01:10:06.000000000","message":"One doc nit otherwise this can be regarded a +2. CI failure is likely unrelated","commit_id":"615b79078a07fb970c1b5a6881df5fb769806f77"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9bbe13fd3cbf44ea1a72276ada8a13e576a763c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"07e0b26f_a5d83c8a","updated":"2023-09-12 14:34:42.000000000","message":"Applied the fix steve baker pointed out.","commit_id":"8db7220bae9ab7530cd2d94478ea4e7c6923ce75"},{"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":"e8683dd6412043345bcfe47a0a90374f239a447c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c231604f_1b470992","updated":"2023-09-19 15:56:35.000000000","message":"I\u0027d prefer not add a new API microversion a couple days before release is cut; and there is no client support in bobcat for the syntax sugar as well. We should land this first thing next release.","commit_id":"8db7220bae9ab7530cd2d94478ea4e7c6923ce75"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"03fe5593a1e114414ba88792b93d866af5aff101","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"90134748_394d091e","updated":"2023-10-03 03:56:52.000000000","message":"stable/2023.2 has been branched, so this can land now","commit_id":"8db7220bae9ab7530cd2d94478ea4e7c6923ce75"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"84fca7d56d40758518fcc6c82549b46b66bd1e03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"8df4d52a_ff8bea5b","in_reply_to":"07e0b26f_a5d83c8a","updated":"2023-09-16 02:13:21.000000000","message":"Thanks :)","commit_id":"8db7220bae9ab7530cd2d94478ea4e7c6923ce75"}],"doc/source/contributor/webapi-version-history.rst":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"10c248beacd18a6fe3a9d8923531fccd8c51795d","unresolved":true,"context_lines":[{"line_number":6,"context_line":"-----------------------"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Added the ``name`` field to the port API. It should be unique when set,"},{"line_number":9,"context_line":"and can be used to identify a port resource."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"1.71 (Wallaby, 17.0)"},{"line_number":12,"context_line":"----------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"962ab29e_61d2652d","line":9,"updated":"2021-04-05 13:44:53.000000000","message":"Could it be worth noting access policy applies?","commit_id":"0e1661853ffe49874b8b20b326f2c5d46960523f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0baf452e1260739c6d9a40202af875dca2670c06","unresolved":false,"context_lines":[{"line_number":6,"context_line":"-----------------------"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Added the ``name`` field to the port API. It should be unique when set,"},{"line_number":9,"context_line":"and can be used to identify a port resource."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"1.71 (Wallaby, 17.0)"},{"line_number":12,"context_line":"----------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"2506e1fe_9a565582","line":9,"in_reply_to":"24c1154a_f59a8d1c","updated":"2023-09-12 14:34:00.000000000","message":"Yeah, I looked at the code/pattern and it will just fall into the existing pattern the same way.\n\nAs for uniqueness, it has been required for 3 years. 😊","commit_id":"0e1661853ffe49874b8b20b326f2c5d46960523f"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"7c826ddc5b9b2e084955f3bc90bda724a7bd0da9","unresolved":true,"context_lines":[{"line_number":6,"context_line":"-----------------------"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Added the ``name`` field to the port API. It should be unique when set,"},{"line_number":9,"context_line":"and can be used to identify a port resource."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"1.71 (Wallaby, 17.0)"},{"line_number":12,"context_line":"----------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"24c1154a_f59a8d1c","line":9,"in_reply_to":"962ab29e_61d2652d","updated":"2021-04-10 14:38:57.000000000","message":"I think the changed behavior is we will never get to policy check if port name is requested with lower version, for normal request the policy definitly applies, but I am not sure it worth extra noting.","commit_id":"0e1661853ffe49874b8b20b326f2c5d46960523f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b8086c05f7c7b2431223b6767677b17695656817","unresolved":false,"context_lines":[{"line_number":2,"context_line":"REST API Version History"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"1.73 (master)"},{"line_number":6,"context_line":"-----------------------"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Added the ``name`` field to the port API. It should be unique when set,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dbc83b57_36f73cb8","line":5,"updated":"2021-04-22 09:13:31.000000000","message":"nit: (Xena, master)","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"ec59dbf089f3ddddcb61b5f4bb8f9c9beba2b054","unresolved":false,"context_lines":[{"line_number":2,"context_line":"REST API Version History"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"1.73 (master)"},{"line_number":6,"context_line":"-----------------------"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Added the ``name`` field to the port API. It should be unique when set,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"e9f36179_5c9910d8","line":5,"in_reply_to":"dbc83b57_36f73cb8","updated":"2021-04-22 14:10:55.000000000","message":"done","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"}],"ironic/api/controllers/v1/port.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b8086c05f7c7b2431223b6767677b17695656817","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    # if requested version is \u003c 1.53, hide is_smartnic field."},{"line_number":112,"context_line":"    if not api_utils.allow_port_is_smartnic():"},{"line_number":113,"context_line":"        port.pop(\u0027is_smartnic\u0027, None)"},{"line_number":114,"context_line":"    # if requested version is \u003c 1.69, hide name field."},{"line_number":115,"context_line":"    if not api_utils.allow_port_name():"},{"line_number":116,"context_line":"        port.pop(\u0027name\u0027, None)"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"4fed700a_c72a2585","line":114,"updated":"2021-04-22 09:13:31.000000000","message":"1.73","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"ec59dbf089f3ddddcb61b5f4bb8f9c9beba2b054","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    # if requested version is \u003c 1.53, hide is_smartnic field."},{"line_number":112,"context_line":"    if not api_utils.allow_port_is_smartnic():"},{"line_number":113,"context_line":"        port.pop(\u0027is_smartnic\u0027, None)"},{"line_number":114,"context_line":"    # if requested version is \u003c 1.69, hide name field."},{"line_number":115,"context_line":"    if not api_utils.allow_port_name():"},{"line_number":116,"context_line":"        port.pop(\u0027name\u0027, None)"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"e2810943_c7d1dfda","line":114,"in_reply_to":"4fed700a_c72a2585","updated":"2021-04-22 14:10:55.000000000","message":"done","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b8086c05f7c7b2431223b6767677b17695656817","unresolved":false,"context_lines":[{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        if (not api_utils.allow_port_name()"},{"line_number":638,"context_line":"                and api_utils.is_path_updated(patch, \u0027/name\u0027)):"},{"line_number":639,"context_line":"            raise exception.NotAcceptable()"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        api_utils.patch_validate_allowed_fields(patch, PATCH_ALLOWED_FIELDS)"},{"line_number":642,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"f8fed713_8527f122","line":639,"updated":"2021-04-22 09:13:31.000000000","message":"nit: provide an error message","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"d17852cad46337d92e058387bf3d85049146277d","unresolved":false,"context_lines":[{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        if (not api_utils.allow_port_name()"},{"line_number":638,"context_line":"                and api_utils.is_path_updated(patch, \u0027/name\u0027)):"},{"line_number":639,"context_line":"            raise exception.NotAcceptable()"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        api_utils.patch_validate_allowed_fields(patch, PATCH_ALLOWED_FIELDS)"},{"line_number":642,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"b3600123_54c0fdb6","line":639,"in_reply_to":"501179c4_7f485d1a","updated":"2021-05-05 13:49:06.000000000","message":"yeah, we can have a patch to address this specific improvement.","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dcd580358da18fe6048e4a329a26bcf66e8c0fcd","unresolved":false,"context_lines":[{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        if (not api_utils.allow_port_name()"},{"line_number":638,"context_line":"                and api_utils.is_path_updated(patch, \u0027/name\u0027)):"},{"line_number":639,"context_line":"            raise exception.NotAcceptable()"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        api_utils.patch_validate_allowed_fields(patch, PATCH_ALLOWED_FIELDS)"},{"line_number":642,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"501179c4_7f485d1a","line":639,"in_reply_to":"610dc6b3_b9a646f6","updated":"2021-04-26 09:00:16.000000000","message":"I think we should fix it eventually, the generic message is not great.","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"ec59dbf089f3ddddcb61b5f4bb8f9c9beba2b054","unresolved":false,"context_lines":[{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        if (not api_utils.allow_port_name()"},{"line_number":638,"context_line":"                and api_utils.is_path_updated(patch, \u0027/name\u0027)):"},{"line_number":639,"context_line":"            raise exception.NotAcceptable()"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        api_utils.patch_validate_allowed_fields(patch, PATCH_ALLOWED_FIELDS)"},{"line_number":642,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"610dc6b3_b9a646f6","line":639,"in_reply_to":"f8fed713_8527f122","updated":"2021-04-22 14:10:55.000000000","message":"we didn\u0027t use specific error message for this kind of error code, so I guess it\u0027s fine to use the default one here?","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"}],"ironic/api/controllers/v1/utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b8086c05f7c7b2431223b6767677b17695656817","unresolved":false,"context_lines":[{"line_number":1929,"context_line":"def allow_port_name():"},{"line_number":1930,"context_line":"    \"\"\"Check if name is allowed for ports."},{"line_number":1931,"context_line":""},{"line_number":1932,"context_line":"    Version 1.72 of the API added name field to the port object."},{"line_number":1933,"context_line":"    \"\"\""},{"line_number":1934,"context_line":"    return api.request.version.minor \u003e\u003d versions.MINOR_73_PORT_NAME"}],"source_content_type":"text/x-python","patch_set":4,"id":"92e685c6_afb8c6a7","line":1932,"updated":"2021-04-22 09:13:31.000000000","message":"1.73","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"ec59dbf089f3ddddcb61b5f4bb8f9c9beba2b054","unresolved":false,"context_lines":[{"line_number":1929,"context_line":"def allow_port_name():"},{"line_number":1930,"context_line":"    \"\"\"Check if name is allowed for ports."},{"line_number":1931,"context_line":""},{"line_number":1932,"context_line":"    Version 1.72 of the API added name field to the port object."},{"line_number":1933,"context_line":"    \"\"\""},{"line_number":1934,"context_line":"    return api.request.version.minor \u003e\u003d versions.MINOR_73_PORT_NAME"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a5eaed4_e98da815","line":1932,"in_reply_to":"92e685c6_afb8c6a7","updated":"2021-04-22 14:10:55.000000000","message":"done","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dcd580358da18fe6048e4a329a26bcf66e8c0fcd","unresolved":true,"context_lines":[{"line_number":1931,"context_line":"def allow_port_name():"},{"line_number":1932,"context_line":"    \"\"\"Check if name is allowed for ports."},{"line_number":1933,"context_line":""},{"line_number":1934,"context_line":"    Version 1.73 of the API added name field to the port object."},{"line_number":1935,"context_line":"    \"\"\""},{"line_number":1936,"context_line":"    return api.request.version.minor \u003e\u003d versions.MINOR_74_PORT_NAME"}],"source_content_type":"text/x-python","patch_set":5,"id":"0d7b1593_56308a47","line":1934,"updated":"2021-04-26 09:00:16.000000000","message":"1.74 now :)","commit_id":"dd336f32679d706eeea4594e91fa938f15221cd6"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"d17852cad46337d92e058387bf3d85049146277d","unresolved":false,"context_lines":[{"line_number":1931,"context_line":"def allow_port_name():"},{"line_number":1932,"context_line":"    \"\"\"Check if name is allowed for ports."},{"line_number":1933,"context_line":""},{"line_number":1934,"context_line":"    Version 1.73 of the API added name field to the port object."},{"line_number":1935,"context_line":"    \"\"\""},{"line_number":1936,"context_line":"    return api.request.version.minor \u003e\u003d versions.MINOR_74_PORT_NAME"}],"source_content_type":"text/x-python","patch_set":5,"id":"bb0c660b_8b377f72","line":1934,"in_reply_to":"0d7b1593_56308a47","updated":"2021-05-05 13:49:06.000000000","message":"Done","commit_id":"dd336f32679d706eeea4594e91fa938f15221cd6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"925bc4a8d5fabb3cd3aef4f19db9718c0a47793c","unresolved":true,"context_lines":[{"line_number":2027,"context_line":"def allow_port_name():"},{"line_number":2028,"context_line":"    \"\"\"Check if name is allowed for ports."},{"line_number":2029,"context_line":""},{"line_number":2030,"context_line":"    Version 1.87 of the API added name field to the port object."},{"line_number":2031,"context_line":"    \"\"\""},{"line_number":2032,"context_line":"    return api.request.version.minor \u003e\u003d versions.MINOR_88_PORT_NAME"}],"source_content_type":"text/x-python","patch_set":8,"id":"38fca2e7_f2f83175","line":2030,"updated":"2023-09-07 01:10:06.000000000","message":"1.88","commit_id":"615b79078a07fb970c1b5a6881df5fb769806f77"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3dbca7ed3390927fdac8102e80a013d06e5472cc","unresolved":false,"context_lines":[{"line_number":2027,"context_line":"def allow_port_name():"},{"line_number":2028,"context_line":"    \"\"\"Check if name is allowed for ports."},{"line_number":2029,"context_line":""},{"line_number":2030,"context_line":"    Version 1.87 of the API added name field to the port object."},{"line_number":2031,"context_line":"    \"\"\""},{"line_number":2032,"context_line":"    return api.request.version.minor \u003e\u003d versions.MINOR_88_PORT_NAME"}],"source_content_type":"text/x-python","patch_set":8,"id":"6b5b47ba_63b7a439","line":2030,"in_reply_to":"38fca2e7_f2f83175","updated":"2023-09-12 14:34:51.000000000","message":"Done","commit_id":"615b79078a07fb970c1b5a6881df5fb769806f77"}],"ironic/tests/unit/api/controllers/v1/test_port.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":"10c248beacd18a6fe3a9d8923531fccd8c51795d","unresolved":true,"context_lines":[{"line_number":2519,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":2520,"context_line":"        self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_int)"},{"line_number":2521,"context_line":"        self.assertFalse(mock_create.called)"},{"line_number":2522,"context_line":""},{"line_number":2523,"context_line":"    def test_create_port_invalid_name(self, mock_create):"},{"line_number":2524,"context_line":"        headers \u003d {api_base.Version.string: \u00271.72\u0027}"},{"line_number":2525,"context_line":"        pdict \u003d post_get_test_port(name\u003d\u0027###\u0027)"},{"line_number":2526,"context_line":"        response \u003d self.post_json(\u0027/ports\u0027, pdict, headers\u003dheaders,"},{"line_number":2527,"context_line":"                                  expect_errors\u003dTrue)"},{"line_number":2528,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":2529,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":2530,"context_line":"        self.assertTrue(response.json[\u0027error_message\u0027])"},{"line_number":2531,"context_line":"        self.assertFalse(mock_create.called)"},{"line_number":2532,"context_line":""},{"line_number":2533,"context_line":""},{"line_number":2534,"context_line":"@mock.patch.object(rpcapi.ConductorAPI, \u0027destroy_port\u0027, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"f164ecdc_7243496e","line":2531,"range":{"start_line":2522,"start_character":0,"end_line":2531,"end_character":44},"updated":"2021-04-05 13:44:53.000000000","message":"While your doing this with the API unit test, i feel like it would still be good to codify the changed logic in utils.py with a unit test.","commit_id":"0e1661853ffe49874b8b20b326f2c5d46960523f"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"7c826ddc5b9b2e084955f3bc90bda724a7bd0da9","unresolved":false,"context_lines":[{"line_number":2519,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":2520,"context_line":"        self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_int)"},{"line_number":2521,"context_line":"        self.assertFalse(mock_create.called)"},{"line_number":2522,"context_line":""},{"line_number":2523,"context_line":"    def test_create_port_invalid_name(self, mock_create):"},{"line_number":2524,"context_line":"        headers \u003d {api_base.Version.string: \u00271.72\u0027}"},{"line_number":2525,"context_line":"        pdict \u003d post_get_test_port(name\u003d\u0027###\u0027)"},{"line_number":2526,"context_line":"        response \u003d self.post_json(\u0027/ports\u0027, pdict, headers\u003dheaders,"},{"line_number":2527,"context_line":"                                  expect_errors\u003dTrue)"},{"line_number":2528,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":2529,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":2530,"context_line":"        self.assertTrue(response.json[\u0027error_message\u0027])"},{"line_number":2531,"context_line":"        self.assertFalse(mock_create.called)"},{"line_number":2532,"context_line":""},{"line_number":2533,"context_line":""},{"line_number":2534,"context_line":"@mock.patch.object(rpcapi.ConductorAPI, \u0027destroy_port\u0027, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"d7ad3245_c3a05d61","line":2531,"range":{"start_line":2522,"start_character":0,"end_line":2531,"end_character":44},"in_reply_to":"f164ecdc_7243496e","updated":"2021-04-10 14:38:57.000000000","message":"Done","commit_id":"0e1661853ffe49874b8b20b326f2c5d46960523f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b8086c05f7c7b2431223b6767677b17695656817","unresolved":false,"context_lines":[{"line_number":2511,"context_line":"        port \u003d objects.Port.get(self.context, pdict[\u0027uuid\u0027])"},{"line_number":2512,"context_line":"        self.assertEqual(\u0027a-name\u0027, port.name)"},{"line_number":2513,"context_line":""},{"line_number":2514,"context_line":"    def test_create_port_with_name_old_api_versionn(self, mock_create):"},{"line_number":2515,"context_line":"        headers \u003d {api_base.Version.string: \u00271.72\u0027}"},{"line_number":2516,"context_line":"        pdict \u003d post_get_test_port(name\u003d\u0027a-name\u0027, node_uuid\u003dself.node.uuid)"},{"line_number":2517,"context_line":"        response \u003d self.post_json(\u0027/ports\u0027, pdict, headers\u003dheaders,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3046dd75_cc4fd747","line":2514,"updated":"2021-04-22 09:13:31.000000000","message":"nit: version","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"ec59dbf089f3ddddcb61b5f4bb8f9c9beba2b054","unresolved":false,"context_lines":[{"line_number":2511,"context_line":"        port \u003d objects.Port.get(self.context, pdict[\u0027uuid\u0027])"},{"line_number":2512,"context_line":"        self.assertEqual(\u0027a-name\u0027, port.name)"},{"line_number":2513,"context_line":""},{"line_number":2514,"context_line":"    def test_create_port_with_name_old_api_versionn(self, mock_create):"},{"line_number":2515,"context_line":"        headers \u003d {api_base.Version.string: \u00271.72\u0027}"},{"line_number":2516,"context_line":"        pdict \u003d post_get_test_port(name\u003d\u0027a-name\u0027, node_uuid\u003dself.node.uuid)"},{"line_number":2517,"context_line":"        response \u003d self.post_json(\u0027/ports\u0027, pdict, headers\u003dheaders,"}],"source_content_type":"text/x-python","patch_set":4,"id":"e598297a_6c5941bf","line":2514,"in_reply_to":"3046dd75_cc4fd747","updated":"2021-04-22 14:10:55.000000000","message":"sigh, the butterfly keyboard.. keystroke sticks","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"}],"releasenotes/notes/support-port-name-d84f69f876bfd5f1.yaml":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"10c248beacd18a6fe3a9d8923531fccd8c51795d","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a name field to the ironic Port resource, when the name field"},{"line_number":5,"context_line":"    is set, it can be used as a unique identifier. This is a feature"},{"line_number":6,"context_line":"    parity with node name and portgroup name, and has the same validation"},{"line_number":7,"context_line":"    on the name value."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ff04b14d_78f89c3c","line":4,"range":{"start_line":4,"start_character":11,"end_line":4,"end_character":15},"updated":"2021-04-05 13:44:53.000000000","message":"s/name/``name``/","commit_id":"0e1661853ffe49874b8b20b326f2c5d46960523f"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"7c826ddc5b9b2e084955f3bc90bda724a7bd0da9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a name field to the ironic Port resource, when the name field"},{"line_number":5,"context_line":"    is set, it can be used as a unique identifier. This is a feature"},{"line_number":6,"context_line":"    parity with node name and portgroup name, and has the same validation"},{"line_number":7,"context_line":"    on the name value."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3865ef6a_9071dec8","line":4,"range":{"start_line":4,"start_character":11,"end_line":4,"end_character":15},"in_reply_to":"ff04b14d_78f89c3c","updated":"2021-04-10 14:38:57.000000000","message":"Done","commit_id":"0e1661853ffe49874b8b20b326f2c5d46960523f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b8086c05f7c7b2431223b6767677b17695656817","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a ``name`` field to the ironic Port resource, when the name field"},{"line_number":5,"context_line":"    is set, it can be used as a unique identifier. This is a feature"},{"line_number":6,"context_line":"    parity with node name and portgroup name, and has the same validation"},{"line_number":7,"context_line":"    on the name value."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"829cbf66_425ff2c8","line":4,"updated":"2021-04-22 09:13:31.000000000","message":"nit: dot before \"When\" (start a new sentence)","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"ec59dbf089f3ddddcb61b5f4bb8f9c9beba2b054","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a ``name`` field to the ironic Port resource, when the name field"},{"line_number":5,"context_line":"    is set, it can be used as a unique identifier. This is a feature"},{"line_number":6,"context_line":"    parity with node name and portgroup name, and has the same validation"},{"line_number":7,"context_line":"    on the name value."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9c5b38aa_2f18bf5c","line":4,"in_reply_to":"829cbf66_425ff2c8","updated":"2021-04-22 14:10:55.000000000","message":"done","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b8086c05f7c7b2431223b6767677b17695656817","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a ``name`` field to the ironic Port resource, when the name field"},{"line_number":5,"context_line":"    is set, it can be used as a unique identifier. This is a feature"},{"line_number":6,"context_line":"    parity with node name and portgroup name, and has the same validation"},{"line_number":7,"context_line":"    on the name value."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1d75db6a_134d1042","line":5,"updated":"2021-04-22 09:13:31.000000000","message":"nit: \"This achieves feature parity\"","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"ec59dbf089f3ddddcb61b5f4bb8f9c9beba2b054","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a ``name`` field to the ironic Port resource, when the name field"},{"line_number":5,"context_line":"    is set, it can be used as a unique identifier. This is a feature"},{"line_number":6,"context_line":"    parity with node name and portgroup name, and has the same validation"},{"line_number":7,"context_line":"    on the name value."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9c91bda4_91ed20fb","line":5,"in_reply_to":"1d75db6a_134d1042","updated":"2021-04-22 14:10:55.000000000","message":"done","commit_id":"9a7f1c813dca146938b1ae8dc9bca4c11a2e87e6"}]}
