)]}'
{"doc/source/contributor/webapi-version-history.rst":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"a8e3d2f9aa82d0bc3e2fa6952951d4d181458199","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.59 (Ussuri, 13.0.0)"},{"line_number":6,"context_line":"---------------------"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Add ``network_config`` field to the port object, that will be used by"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_a3675fb7","line":5,"range":{"start_line":5,"start_character":14,"end_line":5,"end_character":20},"updated":"2019-10-10 14:58:13.000000000","message":"I believe 13.0.0 is still Train","commit_id":"506ea072244fb38bffbf6b310850963d8013149e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"648e2a96f0a95e8fdd4cb503ed2d0b9ad4e95d61","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Add ``network_data`` field to the node object, that will be used by"},{"line_number":9,"context_line":"stand-alone ironic to pass L3 network configuration information to"},{"line_number":10,"context_line":"ramdisk and/or tenant instance."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"1.64 (Ussuri, master)"},{"line_number":13,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":19,"id":"df33271e_f74fb18f","line":10,"range":{"start_line":10,"start_character":7,"end_line":10,"end_character":30},"updated":"2020-04-06 22:31:29.000000000","message":"This sentence should stop at ramdisk.","commit_id":"048f946f68fdee00fc48907e15e31a67b2d4676e"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"410a95e1f8ddea07f02019f2b703d66f61ef8bc4","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Add ``network_data`` field to the node object, that will be used by"},{"line_number":9,"context_line":"stand-alone ironic to pass L3 network configuration information to"},{"line_number":10,"context_line":"ramdisk and/or tenant instance."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"1.64 (Ussuri, master)"},{"line_number":13,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":19,"id":"df33271e_cdb5b1f0","line":10,"range":{"start_line":10,"start_character":7,"end_line":10,"end_character":30},"in_reply_to":"df33271e_f74fb18f","updated":"2020-04-07 10:05:12.000000000","message":"Done","commit_id":"048f946f68fdee00fc48907e15e31a67b2d4676e"}],"ironic/api/controllers/v1/portgroup.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"12eba5038c79cb9f143065b9d6ba7578f3fba47c","unresolved":false,"context_lines":[{"line_number":487,"context_line":"        if self.parent_node_ident:"},{"line_number":488,"context_line":"            raise exception.OperationNotPermitted()"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        if (not api_utils.allow_portgroup_mode_properties()"},{"line_number":491,"context_line":"                and (portgroup.mode is not wtypes.Unset"},{"line_number":492,"context_line":"                     or portgroup.properties is not wtypes.Unset)):"},{"line_number":493,"context_line":"            raise exception.NotAcceptable()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_8e321c0f","line":490,"range":{"start_line":490,"start_character":8,"end_line":490,"end_character":59},"updated":"2019-11-06 03:55:53.000000000","message":"Also need to check if \u0027network_data\u0027 field is allowed else throw an exception.","commit_id":"97319c12af3a319ad3483d5e41e9c88e8ae2206b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"cd37888f26e350760bf8eb9a721f65c3392cee28","unresolved":false,"context_lines":[{"line_number":487,"context_line":"        if self.parent_node_ident:"},{"line_number":488,"context_line":"            raise exception.OperationNotPermitted()"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        if (not api_utils.allow_portgroup_mode_properties()"},{"line_number":491,"context_line":"                and (portgroup.mode is not wtypes.Unset"},{"line_number":492,"context_line":"                     or portgroup.properties is not wtypes.Unset)):"},{"line_number":493,"context_line":"            raise exception.NotAcceptable()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_aa190bd2","line":490,"range":{"start_line":490,"start_character":8,"end_line":490,"end_character":59},"in_reply_to":"3fa7e38b_8e321c0f","updated":"2019-11-26 16:55:51.000000000","message":"Done","commit_id":"97319c12af3a319ad3483d5e41e9c88e8ae2206b"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"12eba5038c79cb9f143065b9d6ba7578f3fba47c","unresolved":false,"context_lines":[{"line_number":541,"context_line":"        if self.parent_node_ident:"},{"line_number":542,"context_line":"            raise exception.OperationNotPermitted()"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"        if (not api_utils.allow_portgroup_mode_properties()"},{"line_number":545,"context_line":"                and (api_utils.is_path_updated(patch, \u0027/mode\u0027)"},{"line_number":546,"context_line":"                     or api_utils.is_path_updated(patch, \u0027/properties\u0027))):"},{"line_number":547,"context_line":"            raise exception.NotAcceptable()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_8e1bfc7e","line":544,"range":{"start_line":544,"start_character":9,"end_line":544,"end_character":59},"updated":"2019-11-06 03:55:53.000000000","message":"Also need to check if \u0027network_data\u0027 field is allowed else throw an exception.","commit_id":"97319c12af3a319ad3483d5e41e9c88e8ae2206b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"cd37888f26e350760bf8eb9a721f65c3392cee28","unresolved":false,"context_lines":[{"line_number":541,"context_line":"        if self.parent_node_ident:"},{"line_number":542,"context_line":"            raise exception.OperationNotPermitted()"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"        if (not api_utils.allow_portgroup_mode_properties()"},{"line_number":545,"context_line":"                and (api_utils.is_path_updated(patch, \u0027/mode\u0027)"},{"line_number":546,"context_line":"                     or api_utils.is_path_updated(patch, \u0027/properties\u0027))):"},{"line_number":547,"context_line":"            raise exception.NotAcceptable()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_6a79d3f9","line":544,"range":{"start_line":544,"start_character":9,"end_line":544,"end_character":59},"in_reply_to":"3fa7e38b_8e1bfc7e","updated":"2019-11-26 16:55:51.000000000","message":"Done","commit_id":"97319c12af3a319ad3483d5e41e9c88e8ae2206b"}],"ironic/api/controllers/v1/utils.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"12eba5038c79cb9f143065b9d6ba7578f3fba47c","unresolved":false,"context_lines":[{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"    Version 1.60 of the API added network_data field to the port object."},{"line_number":1209,"context_line":"    \"\"\""},{"line_number":1210,"context_line":"    return api.request.version.minor \u003e\u003d versions.MINOR_60_PORT_NETWORK_CONFIG"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_412395a8","line":1210,"range":{"start_line":1210,"start_character":0,"end_line":1210,"end_character":77},"updated":"2019-11-06 03:55:53.000000000","message":"Do we also need to add check that it is supported in objects as done else where [1]?\n[1] https://github.com/openstack/ironic/blob/master/ironic/api/controllers/v1/utils.py#L1139","commit_id":"97319c12af3a319ad3483d5e41e9c88e8ae2206b"}],"ironic/api/controllers/v1/versions.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ddf2bdb1412f58d1edfac0171b8173bafb6522ca","unresolved":false,"context_lines":[{"line_number":102,"context_line":"# v1.62: Add agent_token support for agent communication."},{"line_number":103,"context_line":"# v1.63: Add support for indicators"},{"line_number":104,"context_line":"# v1.64: Add network_type to port.local_link_connection"},{"line_number":105,"context_line":"# v1.65: Add support for node network_data field."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"MINOR_0_JUNO \u003d 0"},{"line_number":108,"context_line":"MINOR_1_INITIAL_VERSION \u003d 1"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_cf5e2511","line":105,"updated":"2020-04-08 08:52:12.000000000","message":"1.65 is taken by node.lessee","commit_id":"de04e4a4104d99e4e14fb0b88d29b0dbda12210d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"f693d7253dfab00917167bec0dbe9313adc9e2be","unresolved":false,"context_lines":[{"line_number":102,"context_line":"# v1.62: Add agent_token support for agent communication."},{"line_number":103,"context_line":"# v1.63: Add support for indicators"},{"line_number":104,"context_line":"# v1.64: Add network_type to port.local_link_connection"},{"line_number":105,"context_line":"# v1.65: Add support for node network_data field."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"MINOR_0_JUNO \u003d 0"},{"line_number":108,"context_line":"MINOR_1_INITIAL_VERSION \u003d 1"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_f47ac674","line":105,"in_reply_to":"df33271e_cf5e2511","updated":"2020-04-08 19:35:25.000000000","message":"Migrated (for the 3-rd time, oh my!)","commit_id":"de04e4a4104d99e4e14fb0b88d29b0dbda12210d"}],"ironic/db/sqlalchemy/alembic/versions/cf1a80fdb352_add_node_network_data_field.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"87881840fa9e3444249e4b944052c2a0c4a62b9d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"revision \u003d \u0027cf1a80fdb352\u0027"},{"line_number":23,"context_line":"down_revision \u003d \u0027cd2c80feb331\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from alembic import op"},{"line_number":26,"context_line":"import sqlalchemy as sa"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_870d8aea","line":25,"updated":"2020-04-03 14:10:42.000000000","message":"pep8: E402 module level import not at top of file","commit_id":"15f8abb5c0866302886eb6a9c0232089d460776d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"87881840fa9e3444249e4b944052c2a0c4a62b9d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"down_revision \u003d \u0027cd2c80feb331\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from alembic import op"},{"line_number":26,"context_line":"import sqlalchemy as sa"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def upgrade():"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_6712060c","line":26,"updated":"2020-04-03 14:10:42.000000000","message":"pep8: E402 module level import not at top of file","commit_id":"15f8abb5c0866302886eb6a9c0232089d460776d"}],"ironic/objects/node.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ddf2bdb1412f58d1edfac0171b8173bafb6522ca","unresolved":false,"context_lines":[{"line_number":620,"context_line":"                  (\u0027bios_interface\u0027, 24), (\u0027fault\u0027, 25),"},{"line_number":621,"context_line":"                  (\u0027automated_clean\u0027, 28), (\u0027protected_reason\u0027, 29),"},{"line_number":622,"context_line":"                  (\u0027owner\u0027, 30), (\u0027allocation_id\u0027, 31), (\u0027description\u0027, 32),"},{"line_number":623,"context_line":"                  (\u0027retired_reason\u0027, 33)]"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"        for name, minor in fields:"},{"line_number":626,"context_line":"            self._adjust_field_to_version(name, None, target_version,"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_ef4a0953","line":623,"updated":"2020-04-08 08:52:12.000000000","message":"add actual handling?","commit_id":"de04e4a4104d99e4e14fb0b88d29b0dbda12210d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"365c18ea76ac6c5a4abc2aad13a4458068d051da","unresolved":false,"context_lines":[{"line_number":620,"context_line":"                  (\u0027bios_interface\u0027, 24), (\u0027fault\u0027, 25),"},{"line_number":621,"context_line":"                  (\u0027automated_clean\u0027, 28), (\u0027protected_reason\u0027, 29),"},{"line_number":622,"context_line":"                  (\u0027owner\u0027, 30), (\u0027allocation_id\u0027, 31), (\u0027description\u0027, 32),"},{"line_number":623,"context_line":"                  (\u0027retired_reason\u0027, 33)]"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"        for name, minor in fields:"},{"line_number":626,"context_line":"            self._adjust_field_to_version(name, None, target_version,"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f4c43b2_a71f61b5","line":623,"in_reply_to":"3f4c43b2_f8280a87","updated":"2020-04-20 08:26:43.000000000","message":"It\u0027s probably more hackerish than that. Done.","commit_id":"de04e4a4104d99e4e14fb0b88d29b0dbda12210d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a2135b3122e9547ea043a8b7c06413754320b513","unresolved":false,"context_lines":[{"line_number":620,"context_line":"                  (\u0027bios_interface\u0027, 24), (\u0027fault\u0027, 25),"},{"line_number":621,"context_line":"                  (\u0027automated_clean\u0027, 28), (\u0027protected_reason\u0027, 29),"},{"line_number":622,"context_line":"                  (\u0027owner\u0027, 30), (\u0027allocation_id\u0027, 31), (\u0027description\u0027, 32),"},{"line_number":623,"context_line":"                  (\u0027retired_reason\u0027, 33)]"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"        for name, minor in fields:"},{"line_number":626,"context_line":"            self._adjust_field_to_version(name, None, target_version,"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f4c43b2_f8280a87","line":623,"in_reply_to":"df33271e_b4379eb0","updated":"2020-04-17 12:13:35.000000000","message":"network_data is missing in \u0027fields\u0027, you need to add (\u0027network_data\u0027, \u003cnumber\u003e) here","commit_id":"de04e4a4104d99e4e14fb0b88d29b0dbda12210d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"f693d7253dfab00917167bec0dbe9313adc9e2be","unresolved":false,"context_lines":[{"line_number":620,"context_line":"                  (\u0027bios_interface\u0027, 24), (\u0027fault\u0027, 25),"},{"line_number":621,"context_line":"                  (\u0027automated_clean\u0027, 28), (\u0027protected_reason\u0027, 29),"},{"line_number":622,"context_line":"                  (\u0027owner\u0027, 30), (\u0027allocation_id\u0027, 31), (\u0027description\u0027, 32),"},{"line_number":623,"context_line":"                  (\u0027retired_reason\u0027, 33)]"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"        for name, minor in fields:"},{"line_number":626,"context_line":"            self._adjust_field_to_version(name, None, target_version,"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_b4379eb0","line":623,"in_reply_to":"df33271e_ef4a0953","updated":"2020-04-08 19:35:25.000000000","message":"Hmm, can you elaborate? This field should either be a dict or should be absent.","commit_id":"de04e4a4104d99e4e14fb0b88d29b0dbda12210d"}],"ironic/tests/unit/api/controllers/v1/test_node.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ddf2bdb1412f58d1edfac0171b8173bafb6522ca","unresolved":false,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def test_node_network_data(self):"},{"line_number":393,"context_line":"        network_data \u003d {"},{"line_number":394,"context_line":"            # TODO(etingof): update when schema validation is added"},{"line_number":395,"context_line":"            \u0027attribute\u0027: \u0027value\u0027"},{"line_number":396,"context_line":"        }"},{"line_number":397,"context_line":"        node \u003d obj_utils.create_test_node("}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_afae41e4","line":394,"updated":"2020-04-08 08:52:12.000000000","message":"nit: I\u0027d use a semi-realistic sample from the start","commit_id":"de04e4a4104d99e4e14fb0b88d29b0dbda12210d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"f693d7253dfab00917167bec0dbe9313adc9e2be","unresolved":false,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def test_node_network_data(self):"},{"line_number":393,"context_line":"        network_data \u003d {"},{"line_number":394,"context_line":"            # TODO(etingof): update when schema validation is added"},{"line_number":395,"context_line":"            \u0027attribute\u0027: \u0027value\u0027"},{"line_number":396,"context_line":"        }"},{"line_number":397,"context_line":"        node \u003d obj_utils.create_test_node("}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_f4b2c605","line":394,"in_reply_to":"df33271e_afae41e4","updated":"2020-04-08 19:35:25.000000000","message":"Done","commit_id":"de04e4a4104d99e4e14fb0b88d29b0dbda12210d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"310b29337ffbc96cd2419facf81ee9ee3a2a2fbe","unresolved":false,"context_lines":[{"line_number":414,"context_line":"                {"},{"line_number":415,"context_line":"                    \"ethernet_mac_address\": \"fa:16:3e:9c:bf:3d\","},{"line_number":416,"context_line":"                    \"id\": \"tapcd9f6d46-4a\","},{"line_number":417,"context_line":"                    \"mtu\": null,"},{"line_number":418,"context_line":"                    \"type\": \"bridge\","},{"line_number":419,"context_line":"                    \"vif_id\": \"cd9f6d46-4a3a-43ab-a466-994af9db96fc\""},{"line_number":420,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":22,"id":"df33271e_5af7595a","line":417,"updated":"2020-04-08 21:55:10.000000000","message":"pep8: F821 undefined name \u0027null\u0027","commit_id":"1a225500703fddfb5c54c9211af1782a27bf1b90"}]}
