)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7080,"name":"Mathieu Mitchell","email":"mat128@gmail.com","username":"mat128"},"change_message_id":"23adae1a5e4302231e96e0a152acb206a7b43d1c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"  * Support multiple subnets"},{"line_number":15,"context_line":"    The current and proposed formats do not fully support multiple subnets."},{"line_number":16,"context_line":"    Each subnet can have its own routes and default route."},{"line_number":17,"context_line":"    Should all routes be merged in the same \"routes\" attribute?"},{"line_number":18,"context_line":"    What about multiple default routes?"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"blueprint multiple-fixed-ips-network-information"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a98d1f4_cf3e94d9","line":17,"updated":"2016-09-30 18:54:33.000000000","message":"I think I would expose the information as it is (as much as possible), that probably means a list of dictionaries each with route information, if available).\n\nThis would post-pone the decision of what to do with this to the actual implementation in cloud-init and friends. They might decide to handle this how they want depending on the operating system.","commit_id":"63159a61e9adbdf48e21df96cfb2805e650b5e5d"},{"author":{"_account_id":7080,"name":"Mathieu Mitchell","email":"mat128@gmail.com","username":"mat128"},"change_message_id":"23adae1a5e4302231e96e0a152acb206a7b43d1c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    The current and proposed formats do not fully support multiple subnets."},{"line_number":16,"context_line":"    Each subnet can have its own routes and default route."},{"line_number":17,"context_line":"    Should all routes be merged in the same \"routes\" attribute?"},{"line_number":18,"context_line":"    What about multiple default routes?"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"blueprint multiple-fixed-ips-network-information"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a98d1f4_2f2e18a5","line":18,"updated":"2016-09-30 18:54:33.000000000","message":"ditto.","commit_id":"63159a61e9adbdf48e21df96cfb2805e650b5e5d"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"82c513d37901e9ce9176c6bec97279595158b6d4","unresolved":false,"context_lines":[{"line_number":19,"context_line":"* What should be the implementation logic an in-guest agent"},{"line_number":20,"context_line":"  use to determine the default route?"},{"line_number":21,"context_line":"* Are there use cases where one default route should be used over the others?"},{"line_number":22,"context_line":"  I\u0027m thinking about NFV or other specialized use cases."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"blueprint multiple-fixed-ips-network-information"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"bf659307_df6f1390","line":22,"updated":"2018-03-27 22:03:10.000000000","message":"To be honest, this is where I\u0027m not sure how to answer these questions either. I guess things were easy when it\u0027s only one IP address.","commit_id":"adf7da8e2846f16ddcad58af24931ea055c8ca97"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"8ae22c70b554596bcb7890aff21cecf8aaf059ad","unresolved":false,"context_lines":[{"line_number":13,"context_line":"NOTE: The current and proposed formats do not fully address multiple subnets."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Each subnet can have its own routes and default route which create challenges:"},{"line_number":16,"context_line":"* Should all routes be merged in the same \"routes\" attribute?"},{"line_number":17,"context_line":"* What should be the default route if more than one subnet provides"},{"line_number":18,"context_line":"  a default route? Should we provide all of them?"},{"line_number":19,"context_line":"* What should be the implementation logic an in-guest agent"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bf659307_d4b606fb","line":16,"updated":"2018-03-28 10:54:40.000000000","message":"From a network design perspective, attaching them to the (sub-)net would be better.","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"60d6b275ee60603bce9712bff780ebacedc1b98b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"NOTE: The current and proposed formats do not fully address multiple subnets."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Each subnet can have its own routes and default route which create challenges:"},{"line_number":16,"context_line":"* Should all routes be merged in the same \"routes\" attribute?"},{"line_number":17,"context_line":"* What should be the default route if more than one subnet provides"},{"line_number":18,"context_line":"  a default route? Should we provide all of them?"},{"line_number":19,"context_line":"* What should be the implementation logic an in-guest agent"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bf659307_e337b94c","line":16,"in_reply_to":"bf659307_4450fdd4","updated":"2018-03-29 05:39:43.000000000","message":"Well the line above talks about subnets, so I wanted to pick that term up. Thanks to Neutron for happily overloading terms that are being used almost completely different in the rest of the networking world.\n\nAfter looking at the current state, we do seem to list routes per (Neutron) subnet, so that would be the desired state, no change needed. Merging all route information into a global field would lose information and should be avoided.","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"7dd31fc836b87f8961c003996b324efb30792540","unresolved":false,"context_lines":[{"line_number":13,"context_line":"NOTE: The current and proposed formats do not fully address multiple subnets."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Each subnet can have its own routes and default route which create challenges:"},{"line_number":16,"context_line":"* Should all routes be merged in the same \"routes\" attribute?"},{"line_number":17,"context_line":"* What should be the default route if more than one subnet provides"},{"line_number":18,"context_line":"  a default route? Should we provide all of them?"},{"line_number":19,"context_line":"* What should be the implementation logic an in-guest agent"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bf659307_4450fdd4","line":16,"in_reply_to":"bf659307_d4b606fb","updated":"2018-03-28 16:53:58.000000000","message":"Is the concept of subnet something the VM should be aware of? Currently, it\u0027s only \"networks\". It would be a major change in that case.","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0cd84fd8bcc3b21b03ace497fd949edf19ea2f5c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"NOTE: The current and proposed formats do not fully address multiple subnets."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Each subnet can have its own routes and default route which create challenges:"},{"line_number":16,"context_line":"* Should all routes be merged in the same \"routes\" attribute?"},{"line_number":17,"context_line":"* What should be the default route if more than one subnet provides"},{"line_number":18,"context_line":"  a default route? Should we provide all of them?"},{"line_number":19,"context_line":"* What should be the implementation logic an in-guest agent"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bf659307_612f178e","line":16,"in_reply_to":"bf659307_e337b94c","updated":"2018-03-29 14:52:44.000000000","message":"Ok. What do you suggest? After a discussion on #openstack-nova, it looks like people don\u0027t have non-backward compatible changes. How would you update the current schema to now include all the relevant subnet and routes informations?","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"8ae22c70b554596bcb7890aff21cecf8aaf059ad","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Each subnet can have its own routes and default route which create challenges:"},{"line_number":16,"context_line":"* Should all routes be merged in the same \"routes\" attribute?"},{"line_number":17,"context_line":"* What should be the default route if more than one subnet provides"},{"line_number":18,"context_line":"  a default route? Should we provide all of them?"},{"line_number":19,"context_line":"* What should be the implementation logic an in-guest agent"},{"line_number":20,"context_line":"  use to determine the default route?"},{"line_number":21,"context_line":"* Are there use cases where one default route should be used over the others?"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bf659307_9495ee42","line":18,"updated":"2018-03-28 10:54:40.000000000","message":"Yes. If we present them like above this will be possible rather easily.","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"8ae22c70b554596bcb7890aff21cecf8aaf059ad","unresolved":false,"context_lines":[{"line_number":17,"context_line":"* What should be the default route if more than one subnet provides"},{"line_number":18,"context_line":"  a default route? Should we provide all of them?"},{"line_number":19,"context_line":"* What should be the implementation logic an in-guest agent"},{"line_number":20,"context_line":"  use to determine the default route?"},{"line_number":21,"context_line":"* Are there use cases where one default route should be used over the others?"},{"line_number":22,"context_line":"  I\u0027m thinking about NFV or other specialized use cases."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bf659307_b4791230","line":20,"updated":"2018-03-28 10:54:40.000000000","message":"The problem of multiple default routes is already present in the current format, since there can be multiple interfaces attached to an instance, each having a default route.\n\nSo I\u0027d say that dealing with that is a separate issue, out of the scope of this spec. That would allow us to make some progress here without needing further complicated design discussions.\n\nWe can also leave that decision for the agent if, as described above, we provide it with all the relevant information.","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"7dd31fc836b87f8961c003996b324efb30792540","unresolved":false,"context_lines":[{"line_number":17,"context_line":"* What should be the default route if more than one subnet provides"},{"line_number":18,"context_line":"  a default route? Should we provide all of them?"},{"line_number":19,"context_line":"* What should be the implementation logic an in-guest agent"},{"line_number":20,"context_line":"  use to determine the default route?"},{"line_number":21,"context_line":"* Are there use cases where one default route should be used over the others?"},{"line_number":22,"context_line":"  I\u0027m thinking about NFV or other specialized use cases."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bf659307_e4d35137","line":20,"in_reply_to":"bf659307_b4791230","updated":"2018-03-28 16:53:58.000000000","message":"Currently, if you have only one interface but multiple IP addresses, you could avoid this problem entirely because only the 1st IP is added to config drive.\n\nWith this change, the problem could now be systematic and it\u0027s a major concern/problem for us. Hence why we should somehow address this question here and offer guidance to people consuming the information.","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0cd84fd8bcc3b21b03ace497fd949edf19ea2f5c","unresolved":false,"context_lines":[{"line_number":17,"context_line":"* What should be the default route if more than one subnet provides"},{"line_number":18,"context_line":"  a default route? Should we provide all of them?"},{"line_number":19,"context_line":"* What should be the implementation logic an in-guest agent"},{"line_number":20,"context_line":"  use to determine the default route?"},{"line_number":21,"context_line":"* Are there use cases where one default route should be used over the others?"},{"line_number":22,"context_line":"  I\u0027m thinking about NFV or other specialized use cases."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bf659307_61063720","line":20,"in_reply_to":"bf659307_be3eb688","updated":"2018-03-29 14:52:44.000000000","message":"We have use cases where multiple subnets (from different networks) have the same routes. If a user attaches both networks to its instance, you end up with conflicting routes. Same with default route.","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"60d6b275ee60603bce9712bff780ebacedc1b98b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"* What should be the default route if more than one subnet provides"},{"line_number":18,"context_line":"  a default route? Should we provide all of them?"},{"line_number":19,"context_line":"* What should be the implementation logic an in-guest agent"},{"line_number":20,"context_line":"  use to determine the default route?"},{"line_number":21,"context_line":"* Are there use cases where one default route should be used over the others?"},{"line_number":22,"context_line":"  I\u0027m thinking about NFV or other specialized use cases."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bf659307_be3eb688","line":20,"in_reply_to":"bf659307_e4d35137","updated":"2018-03-29 05:39:43.000000000","message":"After looking at the sample in the spec, the routes are attached to the subnet information. They do not contain information about the source address to be used, so if you have multiple addresses within that subnet now, the guest can still use these routes the same way it did before, I still don\u0027t understand what issue you are seeing here.","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"8ae22c70b554596bcb7890aff21cecf8aaf059ad","unresolved":false,"context_lines":[{"line_number":19,"context_line":"* What should be the implementation logic an in-guest agent"},{"line_number":20,"context_line":"  use to determine the default route?"},{"line_number":21,"context_line":"* Are there use cases where one default route should be used over the others?"},{"line_number":22,"context_line":"  I\u0027m thinking about NFV or other specialized use cases."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"blueprint multiple-fixed-ips-network-information"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bf659307_34d74226","line":22,"updated":"2018-03-28 10:54:40.000000000","message":"There certainly are such use cases, but I\u0027m not sure we can or should deal with them here.\n\nOne possible additional step would be including information about network tags [0] in the metadata, but as above I would consider this to be out of the scope of the current spec.\n\n[0] https://docs.openstack.org/neutron/pike/contributor/internals/tag.html","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"}],"specs/ocata/approved/multiple-fixed-ips-network-information.rst":[{"author":{"_account_id":7080,"name":"Mathieu Mitchell","email":"mat128@gmail.com","username":"mat128"},"change_message_id":"23adae1a5e4302231e96e0a152acb206a7b43d1c","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* The old network_data.json format will need to be supported for backward"},{"line_number":91,"context_line":"  compatible reasons. This means the previous versions starting from"},{"line_number":92,"context_line":"  \u00272016-10-06\u0027 won\u0027t return all fixed IPs but only the first one like before."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Sample API for getting network information from metadata service"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a98d1f4_0fb07c89","line":92,"updated":"2016-09-30 18:54:33.000000000","message":"Where is this date from?","commit_id":"63159a61e9adbdf48e21df96cfb2805e650b5e5d"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"c7d746f33072d3d645101c7c61ee2a5d47f195d1","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* The old network_data.json format will need to be supported for backward"},{"line_number":91,"context_line":"  compatible reasons. This means the previous versions starting from"},{"line_number":92,"context_line":"  \u00272016-10-06\u0027 won\u0027t return all fixed IPs but only the first one like before."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Sample API for getting network information from metadata service"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a98d1f4_6aa3aeb2","line":92,"in_reply_to":"3a98d1f4_0fb07c89","updated":"2016-09-30 19:07:09.000000000","message":"This is the latest metadata version available in Nova:\nhttps://github.com/openstack/nova/blob/14.0.0.0rc2/nova/api/metadata/base.py#L74","commit_id":"63159a61e9adbdf48e21df96cfb2805e650b5e5d"},{"author":{"_account_id":7080,"name":"Mathieu Mitchell","email":"mat128@gmail.com","username":"mat128"},"change_message_id":"0c13de34ced20d3c6c5e6eae6a82a51e1c419acd","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* The old network_data.json format will need to be supported for backward"},{"line_number":91,"context_line":"  compatible reasons. This means the previous versions starting from"},{"line_number":92,"context_line":"  \u00272016-10-06\u0027 won\u0027t return all fixed IPs but only the first one like before."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Sample API for getting network information from metadata service"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a98d1f4_d953bb15","line":92,"in_reply_to":"3a98d1f4_6aa3aeb2","updated":"2016-09-30 20:39:51.000000000","message":"Then I would word this \"All versions up to and including \u00272016-10-06\u0027 will only return the first IP address.\"","commit_id":"63159a61e9adbdf48e21df96cfb2805e650b5e5d"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"b957ca7908cf9b6787d00f052bb7ea6a9f704454","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* The old network_data.json format will need to be supported for backward"},{"line_number":91,"context_line":"  compatible reasons. This means the previous versions starting from"},{"line_number":92,"context_line":"  \u00272016-10-06\u0027 won\u0027t return all fixed IPs but only the first one like before."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Sample API for getting network information from metadata service"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a98d1f4_a44966b9","line":92,"in_reply_to":"3a98d1f4_d953bb15","updated":"2016-09-30 21:08:09.000000000","message":"Done","commit_id":"63159a61e9adbdf48e21df96cfb2805e650b5e5d"}],"specs/pike/approved/multiple-fixed-ips-network-information.rst":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"e0cd611e45f4f7b14068eb8c3ad532bec442238c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"metadata service and configuration drive will only have the first fixed IP of"},{"line_number":29,"context_line":"the first subnet present. This means it is not possible for an instance"},{"line_number":30,"context_line":"to have multiple fixed IPs and have them configured at boot time"},{"line_number":31,"context_line":"or after instance is rebuilt."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Use Cases"},{"line_number":34,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff0f0b1f_1e80548b","line":31,"updated":"2017-05-18 05:18:05.000000000","message":"There is a related issue: For networks that have DHCP enabled, no IP addresses at all are included in the network information, see https://review.openstack.org/450211. Since the use case for that is related, it would IMHO be good to integrate that change into this spec.","commit_id":"adf7da8e2846f16ddcad58af24931ea055c8ca97"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"743b8df0234ab6c07f6e7dd3023ada9bd1575e09","unresolved":false,"context_lines":[{"line_number":28,"context_line":"metadata service and configuration drive will only have the first fixed IP of"},{"line_number":29,"context_line":"the first subnet present. This means it is not possible for an instance"},{"line_number":30,"context_line":"to have multiple fixed IPs and have them configured at boot time"},{"line_number":31,"context_line":"or after instance is rebuilt."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Use Cases"},{"line_number":34,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_7ce5b5a7","line":31,"in_reply_to":"bf659307_5c7d51e5","updated":"2018-03-27 21:41:31.000000000","message":"I have 0 experience with OpenStack+DHCP so I might not be the right person to lead this change.","commit_id":"adf7da8e2846f16ddcad58af24931ea055c8ca97"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"8ae22c70b554596bcb7890aff21cecf8aaf059ad","unresolved":false,"context_lines":[{"line_number":28,"context_line":"metadata service and configuration drive will only have the first fixed IP of"},{"line_number":29,"context_line":"the first subnet present. This means it is not possible for an instance"},{"line_number":30,"context_line":"to have multiple fixed IPs and have them configured at boot time"},{"line_number":31,"context_line":"or after instance is rebuilt."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Use Cases"},{"line_number":34,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_973c10c9","line":31,"in_reply_to":"bf659307_5f6463b9","updated":"2018-03-28 10:54:40.000000000","message":"That patch was abandoned because of lack of a response here, and with reviews having suggested a merge, I didn\u0027t want to continue with a standalone proposal. But if the consensus now is to split these two efforts, I\u0027ll go ahead with that.","commit_id":"adf7da8e2846f16ddcad58af24931ea055c8ca97"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7ef3bd81ffbefd6061be39acaa270bff1c716751","unresolved":false,"context_lines":[{"line_number":28,"context_line":"metadata service and configuration drive will only have the first fixed IP of"},{"line_number":29,"context_line":"the first subnet present. This means it is not possible for an instance"},{"line_number":30,"context_line":"to have multiple fixed IPs and have them configured at boot time"},{"line_number":31,"context_line":"or after instance is rebuilt."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Use Cases"},{"line_number":34,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_5f6463b9","line":31,"in_reply_to":"bf659307_5fed4323","updated":"2018-03-27 22:02:26.000000000","message":"To be clear, I was trying to say that would be a separate effort with a separate owner ^","commit_id":"adf7da8e2846f16ddcad58af24931ea055c8ca97"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b089dfef85a630e906c2a9ba04c4ee43e5da463b","unresolved":false,"context_lines":[{"line_number":28,"context_line":"metadata service and configuration drive will only have the first fixed IP of"},{"line_number":29,"context_line":"the first subnet present. This means it is not possible for an instance"},{"line_number":30,"context_line":"to have multiple fixed IPs and have them configured at boot time"},{"line_number":31,"context_line":"or after instance is rebuilt."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Use Cases"},{"line_number":34,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_5fed4323","line":31,"in_reply_to":"bf659307_7ce5b5a7","updated":"2018-03-27 21:59:51.000000000","message":"Yeah, I don\u0027t think it\u0027s related to your proposal other than, to change the DHCP + IP address behavior, it would _also_ require a new metadata API version. But I don\u0027t think it need be combined with this spec. I\u0027d think the DHCP stuff would be its own spec with its own new metadata API version.","commit_id":"adf7da8e2846f16ddcad58af24931ea055c8ca97"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"57ddf63ab441536bcd6b5760fee1dd7ba7224c5b","unresolved":false,"context_lines":[{"line_number":28,"context_line":"metadata service and configuration drive will only have the first fixed IP of"},{"line_number":29,"context_line":"the first subnet present. This means it is not possible for an instance"},{"line_number":30,"context_line":"to have multiple fixed IPs and have them configured at boot time"},{"line_number":31,"context_line":"or after instance is rebuilt."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Use Cases"},{"line_number":34,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_5c7d51e5","line":31,"in_reply_to":"df7087c5_fe7b82f1","updated":"2018-03-27 21:37:22.000000000","message":"Okay, so the DHCP issue is one where the IP addresses are omitted entirely \u0027if subnet.get_meta(\u0027dhcp_server\u0027) is not None:\u0027. And that creates difficulty if one is running in an environment where there is a DHCP server running *and* IP addresses have been statically configured, it will hide the IP addresses in that case.\n\nMaking such a change (to always include IP addresses even when DHCP server is found) would need to take advantage of the metadata API version bump described in this spec. I\u0027m not 100% sure if we need to roll both issues into the same spec in order to have them leverage the same metadata API version bump or if the DHCP + IP addresses thing should be a separate small spec.","commit_id":"adf7da8e2846f16ddcad58af24931ea055c8ca97"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"a6f5222380afdd51ba7cff93c3854e4f8712430f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"metadata service and configuration drive will only have the first fixed IP of"},{"line_number":29,"context_line":"the first subnet present. This means it is not possible for an instance"},{"line_number":30,"context_line":"to have multiple fixed IPs and have them configured at boot time"},{"line_number":31,"context_line":"or after instance is rebuilt."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Use Cases"},{"line_number":34,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"df7087c5_fe7b82f1","line":31,"in_reply_to":"ff0f0b1f_1e80548b","updated":"2018-03-27 21:23:30.000000000","message":"I see the mentioned review is abandoned. Someone would need to help me integrate that review into this one as I\u0027m not familiar with the use of DHCP in OpenStack, we use static configuration exclusively.","commit_id":"adf7da8e2846f16ddcad58af24931ea055c8ca97"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"e0cd611e45f4f7b14068eb8c3ad532bec442238c","unresolved":false,"context_lines":[{"line_number":67,"context_line":"Alternatives"},{"line_number":68,"context_line":"------------"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"What other ways could we do this thing? Why aren\u0027t we using those? This doesn\u0027t"},{"line_number":71,"context_line":"have to be a full literature review, but it should demonstrate that thought has"},{"line_number":72,"context_line":"been put into why the proposed solution is an appropriate one."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff0f0b1f_1e597459","line":70,"updated":"2017-05-18 05:18:05.000000000","message":"I guess this section should give answers instead of keeping the questions from the template.\n\nIMO there are no viable alternatives except keeping the current broken state.","commit_id":"adf7da8e2846f16ddcad58af24931ea055c8ca97"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"a6f5222380afdd51ba7cff93c3854e4f8712430f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"Alternatives"},{"line_number":68,"context_line":"------------"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"What other ways could we do this thing? Why aren\u0027t we using those? This doesn\u0027t"},{"line_number":71,"context_line":"have to be a full literature review, but it should demonstrate that thought has"},{"line_number":72,"context_line":"been put into why the proposed solution is an appropriate one."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"df7087c5_fe1622a8","line":70,"in_reply_to":"ff0f0b1f_1e597459","updated":"2018-03-27 21:23:30.000000000","message":"Done","commit_id":"adf7da8e2846f16ddcad58af24931ea055c8ca97"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"e0cd611e45f4f7b14068eb8c3ad532bec442238c","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        \"networks\": ["},{"line_number":111,"context_line":"            {"},{"line_number":112,"context_line":"                \"id\": \"network0\","},{"line_number":113,"context_line":"                \"type\": \"ipv4\","},{"line_number":114,"context_line":"                \"link\": \"interface0\","},{"line_number":115,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\""},{"line_number":116,"context_line":"                \"ip_addresses\": ["}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff0f0b1f_9e3a24e5","line":113,"updated":"2017-05-18 05:18:05.000000000","message":"For completeness, the example should also show an IPv6 network and possibly even some of the different address_types.","commit_id":"adf7da8e2846f16ddcad58af24931ea055c8ca97"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"a6f5222380afdd51ba7cff93c3854e4f8712430f","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        \"networks\": ["},{"line_number":111,"context_line":"            {"},{"line_number":112,"context_line":"                \"id\": \"network0\","},{"line_number":113,"context_line":"                \"type\": \"ipv4\","},{"line_number":114,"context_line":"                \"link\": \"interface0\","},{"line_number":115,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\""},{"line_number":116,"context_line":"                \"ip_addresses\": ["}],"source_content_type":"text/x-rst","patch_set":7,"id":"df7087c5_9e3cc62f","line":113,"in_reply_to":"ff0f0b1f_9e3a24e5","updated":"2018-03-27 21:23:30.000000000","message":"Done","commit_id":"adf7da8e2846f16ddcad58af24931ea055c8ca97"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"e0cd611e45f4f7b14068eb8c3ad532bec442238c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                \"ip_addresses\": ["},{"line_number":117,"context_line":"                  {"},{"line_number":118,"context_line":"                    \"ip_address\": \"10.184.0.244\","},{"line_number":119,"context_line":"                    \"netmask\": \"255.255.240.0\""},{"line_number":120,"context_line":"                  },"},{"line_number":121,"context_line":"                  {"},{"line_number":122,"context_line":"                    \"ip_address\": \"10.184.0.245\","}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff0f0b1f_3938d2d1","line":119,"updated":"2017-05-18 05:18:05.000000000","message":"While changing to a new format, we could also move to using CIDR notation, as non-contigious netmasks aren\u0027t supported anyway.\n\nSo we could have a simple list here:\n\n\"ip_addresses\": [ \"10.184.0.244/20\", \"10.184.0.245/20\", \"2001:db8:1:2::17/64\" ]","commit_id":"adf7da8e2846f16ddcad58af24931ea055c8ca97"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"a6f5222380afdd51ba7cff93c3854e4f8712430f","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                \"ip_addresses\": ["},{"line_number":117,"context_line":"                  {"},{"line_number":118,"context_line":"                    \"ip_address\": \"10.184.0.244\","},{"line_number":119,"context_line":"                    \"netmask\": \"255.255.240.0\""},{"line_number":120,"context_line":"                  },"},{"line_number":121,"context_line":"                  {"},{"line_number":122,"context_line":"                    \"ip_address\": \"10.184.0.245\","}],"source_content_type":"text/x-rst","patch_set":7,"id":"df7087c5_7e41b2a8","line":119,"in_reply_to":"ff0f0b1f_3938d2d1","updated":"2018-03-27 21:23:30.000000000","message":"Done","commit_id":"adf7da8e2846f16ddcad58af24931ea055c8ca97"}],"specs/rocky/approved/multiple-fixed-ips-network-information.rst":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"8ae22c70b554596bcb7890aff21cecf8aaf059ad","unresolved":false,"context_lines":[{"line_number":83,"context_line":"  all the subnets and fixed IPs found in the network."},{"line_number":84,"context_line":"  Backward compatibility cannot be preserved, the current format cannot"},{"line_number":85,"context_line":"  accommodate more than one fixed IP per network."},{"line_number":86,"context_line":"  This will require the introduction of a new metadata version."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"* The old network_data.json format will need to be supported for backward"},{"line_number":89,"context_line":"  compatible reasons. This means all versions up to and including \u00272016-10-06\u0027"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bf659307_5481968e","line":86,"updated":"2018-03-28 10:54:40.000000000","message":"Actually I don\u0027t see why we cannot keep the current \"ip_address\" and \"netmask\" fields for backward compatibility, filling them with only the data for the first address for the network.","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"7dd31fc836b87f8961c003996b324efb30792540","unresolved":false,"context_lines":[{"line_number":83,"context_line":"  all the subnets and fixed IPs found in the network."},{"line_number":84,"context_line":"  Backward compatibility cannot be preserved, the current format cannot"},{"line_number":85,"context_line":"  accommodate more than one fixed IP per network."},{"line_number":86,"context_line":"  This will require the introduction of a new metadata version."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"* The old network_data.json format will need to be supported for backward"},{"line_number":89,"context_line":"  compatible reasons. This means all versions up to and including \u00272016-10-06\u0027"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bf659307_0488c56e","line":86,"in_reply_to":"bf659307_5481968e","updated":"2018-03-28 16:53:58.000000000","message":"What would this achieve? People should use the previous metadata version if they wish to stay backward compatible. That\u0027s the whole point of versioning the data. One should not use \"latest\" if they wish to avoid breakage.","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"8ae22c70b554596bcb7890aff21cecf8aaf059ad","unresolved":false,"context_lines":[{"line_number":86,"context_line":"  This will require the introduction of a new metadata version."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"* The old network_data.json format will need to be supported for backward"},{"line_number":89,"context_line":"  compatible reasons. This means all versions up to and including \u00272016-10-06\u0027"},{"line_number":90,"context_line":"  will only return the first IP address."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Sample API for getting network information from metadata service"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bf659307_b484b2b2","line":89,"updated":"2018-03-28 10:54:40.000000000","message":"It seems that \"2017-02-22\" now is the current latest version before implementing this spec.","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"7dd31fc836b87f8961c003996b324efb30792540","unresolved":false,"context_lines":[{"line_number":86,"context_line":"  This will require the introduction of a new metadata version."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"* The old network_data.json format will need to be supported for backward"},{"line_number":89,"context_line":"  compatible reasons. This means all versions up to and including \u00272016-10-06\u0027"},{"line_number":90,"context_line":"  will only return the first IP address."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Sample API for getting network information from metadata service"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bf659307_04ed2524","line":89,"in_reply_to":"bf659307_b484b2b2","updated":"2018-03-28 16:53:58.000000000","message":"Done","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"bf104dfcbd8e3446d0de2cd677e7d6d1379fe919","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                \"type\": \"ipv4\","},{"line_number":112,"context_line":"                \"link\": \"interface0\","},{"line_number":113,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\""},{"line_number":114,"context_line":"                \"ip_addresses\": ["},{"line_number":115,"context_line":"                  \"10.184.0.244/20\","},{"line_number":116,"context_line":"                  \"10.184.0.245/20\""},{"line_number":117,"context_line":"                ],"},{"line_number":118,"context_line":"                \"routes\": ["},{"line_number":119,"context_line":"                    {"},{"line_number":120,"context_line":"                        \"network\": \"192.168.0.0\","}],"source_content_type":"text/x-rst","patch_set":10,"id":"bf659307_feda1ce7","line":117,"range":{"start_line":114,"start_character":16,"end_line":117,"end_character":18},"updated":"2018-03-27 21:04:40.000000000","message":"Is this the only difference between the existing/legacy format and the new proposed format? This changes the old \u0027ip_address\u0027 [0] to a list \u0027ip_addresses\u0027. Is there anything else different in this example that is needed to support multiple subnets as described in the REST API impact?\n\n[0] https://github.com/openstack/nova/blob/3f08521/nova/virt/netutils.py#L288","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"a6f5222380afdd51ba7cff93c3854e4f8712430f","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                \"type\": \"ipv4\","},{"line_number":112,"context_line":"                \"link\": \"interface0\","},{"line_number":113,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\""},{"line_number":114,"context_line":"                \"ip_addresses\": ["},{"line_number":115,"context_line":"                  \"10.184.0.244/20\","},{"line_number":116,"context_line":"                  \"10.184.0.245/20\""},{"line_number":117,"context_line":"                ],"},{"line_number":118,"context_line":"                \"routes\": ["},{"line_number":119,"context_line":"                    {"},{"line_number":120,"context_line":"                        \"network\": \"192.168.0.0\","}],"source_content_type":"text/x-rst","patch_set":10,"id":"bf659307_5c6471b9","line":117,"range":{"start_line":114,"start_character":16,"end_line":117,"end_character":18},"in_reply_to":"bf659307_feda1ce7","updated":"2018-03-27 21:23:30.000000000","message":"Yes, it is the main change: changing a string (ip_address) to a list of string (ip_addresses). And change the string format to CIDR notation. I suppose we could do the same with routes while we are there.\n\nThere are a couple of pending questions in the commit message. Any consumer (like cloud-init) will need to be updated accordingly.","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"8ae22c70b554596bcb7890aff21cecf8aaf059ad","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":".. list-table:: Revisions"},{"line_number":251,"context_line":"   :header-rows: 1"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"   * - Ocata"},{"line_number":254,"context_line":"     - Introduced"},{"line_number":255,"context_line":"   * - Pike"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bf659307_1461dea9","line":252,"updated":"2018-03-28 10:54:40.000000000","message":"You should keep the header here that was present in previous revisions.","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"7dd31fc836b87f8961c003996b324efb30792540","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":".. list-table:: Revisions"},{"line_number":251,"context_line":"   :header-rows: 1"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"   * - Ocata"},{"line_number":254,"context_line":"     - Introduced"},{"line_number":255,"context_line":"   * - Pike"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bf659307_64c6619d","line":252,"in_reply_to":"bf659307_1461dea9","updated":"2018-03-28 16:53:58.000000000","message":"Done","commit_id":"ccc1c7802b94d50fcd6987d1f6b66027752a5d37"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"60d6b275ee60603bce9712bff780ebacedc1b98b","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                \"type\": \"ipv6\","},{"line_number":134,"context_line":"                \"link\": \"interface0\","},{"line_number":135,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d8\","},{"line_number":136,"context_line":"                \"ip_address\": \"2001:cdba::3257:9652/24\","},{"line_number":137,"context_line":"                \"ip_addresses\": ["},{"line_number":138,"context_line":"                  \"2001:cdba::3257:9652/24\""},{"line_number":139,"context_line":"                ],"}],"source_content_type":"text/x-rst","patch_set":12,"id":"bf659307_9eadf2ea","line":136,"updated":"2018-03-29 05:39:43.000000000","message":"The old format doesn\u0027t use cidr notation. Also the netmask \"/24\" is a bit strange for IPv6, use \"/64\" instead. Finally IMO one should stick to using addresses from the doc range[0]. So we would have:\n\n\"ip_address\": \"2001:db8::3257:9652\",\n\"netmask\": \"ffff:ffff:ffff:ffff::\",\n\"ip_addresses\": [\n  \"2001:db8::3257:9652/64\"\n],\n\n\n[0] https://tools.ietf.org/html/rfc3849","commit_id":"8d92dc503858f5cdf7144ba87e65175a523bf1ff"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"e048c8f0146c5ecc53438fb57f135148600ac316","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                \"type\": \"ipv6\","},{"line_number":134,"context_line":"                \"link\": \"interface0\","},{"line_number":135,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d8\","},{"line_number":136,"context_line":"                \"ip_address\": \"2001:cdba::3257:9652/24\","},{"line_number":137,"context_line":"                \"ip_addresses\": ["},{"line_number":138,"context_line":"                  \"2001:cdba::3257:9652/24\""},{"line_number":139,"context_line":"                ],"}],"source_content_type":"text/x-rst","patch_set":12,"id":"bf659307_d0c6d59a","line":136,"in_reply_to":"bf659307_4f1f9fb6","updated":"2018-03-30 13:54:49.000000000","message":"Citing from http://lists.openstack.org/pipermail/openstack-dev/2018-March/128512.html\n\n\"NOTE: specifications are a point-in-time design reference, not up-to-date feature documentation.\"","commit_id":"8d92dc503858f5cdf7144ba87e65175a523bf1ff"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0cd84fd8bcc3b21b03ace497fd949edf19ea2f5c","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                \"type\": \"ipv6\","},{"line_number":134,"context_line":"                \"link\": \"interface0\","},{"line_number":135,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d8\","},{"line_number":136,"context_line":"                \"ip_address\": \"2001:cdba::3257:9652/24\","},{"line_number":137,"context_line":"                \"ip_addresses\": ["},{"line_number":138,"context_line":"                  \"2001:cdba::3257:9652/24\""},{"line_number":139,"context_line":"                ],"}],"source_content_type":"text/x-rst","patch_set":12,"id":"bf659307_4f1f9fb6","line":136,"in_reply_to":"bf659307_9eadf2ea","updated":"2018-03-29 14:52:44.000000000","message":"This example value was taken from the previous spec and does use CIDR notation. But it seems people implemented something else in the end without updating the spec. Will update this current change.\n\nhttps://specs.openstack.org/openstack/nova-specs/specs/liberty/implemented/metadata-service-network-info.html","commit_id":"8d92dc503858f5cdf7144ba87e65175a523bf1ff"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"e048c8f0146c5ecc53438fb57f135148600ac316","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                \"link\": \"interface0\","},{"line_number":135,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d8\","},{"line_number":136,"context_line":"                \"ip_address\": \"2001:db8::3257:9652\","},{"line_number":137,"context_line":"                \"netmask\": \"ffff:ffff::ffff:ffff::\","},{"line_number":138,"context_line":"                \"ip_addresses\": ["},{"line_number":139,"context_line":"                  \"2001:db8::3257:9652/24\""},{"line_number":140,"context_line":"                ],"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf659307_30439115","line":137,"updated":"2018-03-30 13:54:49.000000000","message":"One colon too much, \"ffff:ffff:ffff:ffff::\" would be correct","commit_id":"217bb61067087a0d8c5521b0ff9d4545bd3952df"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"ccf6b0d8a1ab5ce100e18a7f3c97729b0c0627bb","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                \"link\": \"interface0\","},{"line_number":135,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d8\","},{"line_number":136,"context_line":"                \"ip_address\": \"2001:db8::3257:9652\","},{"line_number":137,"context_line":"                \"netmask\": \"ffff:ffff::ffff:ffff::\","},{"line_number":138,"context_line":"                \"ip_addresses\": ["},{"line_number":139,"context_line":"                  \"2001:db8::3257:9652/24\""},{"line_number":140,"context_line":"                ],"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf659307_60f6e6d9","line":137,"in_reply_to":"bf659307_30439115","updated":"2018-04-03 16:15:20.000000000","message":"Good catch. Done.","commit_id":"217bb61067087a0d8c5521b0ff9d4545bd3952df"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"7505ba08c87a79971f2de866fe1e639aa38f2795","unresolved":false,"context_lines":[{"line_number":180,"context_line":"---------------------"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"This change will require in-guest agent such as cloud-init to read and"},{"line_number":183,"context_line":"parse the new configuration drive version to benefit from it."},{"line_number":184,"context_line":"Older in-guest agent versions will continue to read from the previous"},{"line_number":185,"context_line":"version."},{"line_number":186,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf659307_8acd9b32","line":183,"updated":"2018-03-29 22:29:34.000000000","message":"Have you done any trials to see if cloud-init already does parse it; I have a feeling it might already.","commit_id":"217bb61067087a0d8c5521b0ff9d4545bd3952df"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"c853967d05904ef4e8f5122cfa60a702a274f412","unresolved":false,"context_lines":[{"line_number":180,"context_line":"---------------------"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"This change will require in-guest agent such as cloud-init to read and"},{"line_number":183,"context_line":"parse the new configuration drive version to benefit from it."},{"line_number":184,"context_line":"Older in-guest agent versions will continue to read from the previous"},{"line_number":185,"context_line":"version."},{"line_number":186,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf659307_caf71359","line":183,"in_reply_to":"bf659307_8acd9b32","updated":"2018-03-29 22:34:05.000000000","message":"No, supported versions are hardcoded, latest is not used. And cloud-init can\u0027t parse ip_addresses field because it never existed.\n\nhttps://github.com/cloud-init/cloud-init/blob/aab609104988b9d14572eb8fa1dd28a8156c0aea/cloudinit/sources/helpers/openstack.py#L44","commit_id":"217bb61067087a0d8c5521b0ff9d4545bd3952df"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"a2e7745f433d86a4c6233589cbc350407e85558c","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"* The old ip_address and netmask fields found in network_data.json need"},{"line_number":87,"context_line":"  to be preserved for backward compatible reasons. This means those fields"},{"line_number":88,"context_line":"  will continue to content information of the first IP address."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Sample API for getting network information from metadata service"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"bf659307_9b17b252","line":88,"range":{"start_line":88,"start_character":19,"end_line":88,"end_character":26},"updated":"2018-04-05 19:59:35.000000000","message":"contain?","commit_id":"d76f852c82932443652a28d3d5679edd829636fc"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"7d848301219e90458d01684248c828d133bf6448","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"* The old ip_address and netmask fields found in network_data.json need"},{"line_number":87,"context_line":"  to be preserved for backward compatible reasons. This means those fields"},{"line_number":88,"context_line":"  will continue to content information of the first IP address."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Sample API for getting network information from metadata service"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"bf659307_d692df4b","line":88,"range":{"start_line":88,"start_character":19,"end_line":88,"end_character":26},"in_reply_to":"bf659307_9b17b252","updated":"2018-04-05 20:06:36.000000000","message":"Done","commit_id":"d76f852c82932443652a28d3d5679edd829636fc"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"a2e7745f433d86a4c6233589cbc350407e85558c","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\","},{"line_number":112,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":113,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":114,"context_line":"                \"ip_addresses\": ["},{"line_number":115,"context_line":"                  \"10.184.0.244/20\","},{"line_number":116,"context_line":"                  \"10.184.0.245/20\""},{"line_number":117,"context_line":"                ],"},{"line_number":118,"context_line":"                \"routes\": ["},{"line_number":119,"context_line":"                    {"},{"line_number":120,"context_line":"                        \"network\": \"192.168.0.0\","}],"source_content_type":"text/x-rst","patch_set":14,"id":"bf659307_d602df09","line":117,"range":{"start_line":114,"start_character":16,"end_line":117,"end_character":18},"updated":"2018-04-05 19:59:35.000000000","message":"Just to be clear, this (and the other ip_addresses field below) is the only change to the format, correct?","commit_id":"d76f852c82932443652a28d3d5679edd829636fc"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"7d848301219e90458d01684248c828d133bf6448","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\","},{"line_number":112,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":113,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":114,"context_line":"                \"ip_addresses\": ["},{"line_number":115,"context_line":"                  \"10.184.0.244/20\","},{"line_number":116,"context_line":"                  \"10.184.0.245/20\""},{"line_number":117,"context_line":"                ],"},{"line_number":118,"context_line":"                \"routes\": ["},{"line_number":119,"context_line":"                    {"},{"line_number":120,"context_line":"                        \"network\": \"192.168.0.0\","}],"source_content_type":"text/x-rst","patch_set":14,"id":"bf659307_969c675e","line":117,"range":{"start_line":114,"start_character":16,"end_line":117,"end_character":18},"in_reply_to":"bf659307_d602df09","updated":"2018-04-05 20:06:36.000000000","message":"Yes. Both some questions need to be answered still, especially about default routes because multiple ones could be added to routes field and there is no way to determine which one to use.","commit_id":"d76f852c82932443652a28d3d5679edd829636fc"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"a2e7745f433d86a4c6233589cbc350407e85558c","unresolved":false,"context_lines":[{"line_number":230,"context_line":"Testing"},{"line_number":231,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Unit tests will be added as required."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":14,"id":"bf659307_96aea796","line":233,"updated":"2018-04-05 19:59:35.000000000","message":"I noticed we have some functional testing of the metadata API service at nova/tests/functional/test_metadata.py, so we might be better off with something like that. But we can look at it later when we get to implementation.","commit_id":"d76f852c82932443652a28d3d5679edd829636fc"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"7d848301219e90458d01684248c828d133bf6448","unresolved":false,"context_lines":[{"line_number":230,"context_line":"Testing"},{"line_number":231,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Unit tests will be added as required."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":14,"id":"bf659307_76b0b3de","line":233,"in_reply_to":"bf659307_96aea796","updated":"2018-04-05 20:06:36.000000000","message":"Done","commit_id":"d76f852c82932443652a28d3d5679edd829636fc"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"a2e7745f433d86a4c6233589cbc350407e85558c","unresolved":false,"context_lines":[{"line_number":237,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"* The previous liberty/metadata-service-network-info spec needs to be updated"},{"line_number":240,"context_line":"  to reflect the new proposed format."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":14,"id":"bf659307_3611db54","line":240,"updated":"2018-04-05 19:59:35.000000000","message":"Why does a spec from liberty need to be updated? I wouldn\u0027t have thought so but I could be wrong.","commit_id":"d76f852c82932443652a28d3d5679edd829636fc"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"7d848301219e90458d01684248c828d133bf6448","unresolved":false,"context_lines":[{"line_number":237,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"* The previous liberty/metadata-service-network-info spec needs to be updated"},{"line_number":240,"context_line":"  to reflect the new proposed format."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":14,"id":"bf659307_36ca3b4f","line":240,"in_reply_to":"bf659307_3611db54","updated":"2018-04-05 20:06:36.000000000","message":"Will remove and update to tell that overall documentation about the format is missing and spec is the best we can get for now.","commit_id":"d76f852c82932443652a28d3d5679edd829636fc"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"1d0737eb12c482a35825d03e6351ef22e6f1c5ab","unresolved":false,"context_lines":[{"line_number":237,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"* The previous liberty/metadata-service-network-info spec needs to be updated"},{"line_number":240,"context_line":"  to reflect the new proposed format."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":14,"id":"bf659307_d67c1fed","line":240,"in_reply_to":"bf659307_36ca3b4f","updated":"2018-04-05 20:14:32.000000000","message":"Ah, gotcha. Spec as documentation, we have some of those for sure. Well, maybe this spec will serve as the \"latest\" documentation in that case. :P","commit_id":"d76f852c82932443652a28d3d5679edd829636fc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c924f8bc1f2793e563df3034896036069aa667fb","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Multiple Fixed-IPs support in network information"},{"line_number":9,"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\u003d\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":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/multiple-fixed-ips-network-info"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Introduce support for multiple fixed-ips in network information found"},{"line_number":14,"context_line":"in metadata service. Network information currently only considers"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_5b2ee9fa","line":11,"updated":"2018-06-05 21:31:21.000000000","message":"This link doesn\u0027t exist, the bp name should match the spec name, so:\n\nhttps://blueprints.launchpad.net/nova/+spec/multiple-fixed-ips-network-information\n\nAnd ^ does exist.","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"1cc2d1d253aab513c2b0399b0b654bf25175f7ef","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Multiple Fixed-IPs support in network information"},{"line_number":9,"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\u003d\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":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/multiple-fixed-ips-network-info"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Introduce support for multiple fixed-ips in network information found"},{"line_number":14,"context_line":"in metadata service. Network information currently only considers"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_9b8d61d5","line":11,"in_reply_to":"5f7c97a3_5b2ee9fa","updated":"2018-06-05 21:44:33.000000000","message":"Done","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c924f8bc1f2793e563df3034896036069aa667fb","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Previous work introduced network information concept which removes"},{"line_number":21,"context_line":"the need for in-guest agent such as cloud-init to parse a Debian like"},{"line_number":22,"context_line":"network configuration file (``/etc/network/interfaces``) on"},{"line_number":23,"context_line":"non-Debian platforms."}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_7b4645c3","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":13},"updated":"2018-06-05 21:31:21.000000000","message":"Can you link to something here for context? Looks like you can refer to this:\n\nhttps://specs.openstack.org/openstack/nova-specs/specs/liberty/implemented/metadata-service-network-info.html","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"1cc2d1d253aab513c2b0399b0b654bf25175f7ef","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Previous work introduced network information concept which removes"},{"line_number":21,"context_line":"the need for in-guest agent such as cloud-init to parse a Debian like"},{"line_number":22,"context_line":"network configuration file (``/etc/network/interfaces``) on"},{"line_number":23,"context_line":"non-Debian platforms."}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_7ba96522","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":13},"in_reply_to":"5f7c97a3_7b4645c3","updated":"2018-06-05 21:44:33.000000000","message":"Done","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c924f8bc1f2793e563df3034896036069aa667fb","unresolved":false,"context_lines":[{"line_number":33,"context_line":"Use Cases"},{"line_number":34,"context_line":"---------"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A End User can assign multiple fixed IPs to a Neutron port. Those fixed IPs"},{"line_number":37,"context_line":"can be part of the same subnet or from different subnets."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"When creating an instance, Nova will only consider the first fixed IP"},{"line_number":40,"context_line":"of the first subnet when building the network information found in the"},{"line_number":41,"context_line":"metadata service and configuration drive."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"A End User have to manually configure the other fixed IPs after"},{"line_number":44,"context_line":"the instance is created. This means additional work from the End User before"},{"line_number":45,"context_line":"the instance is fully configured and ready for use."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"If he rebuilds the instance, he will lose his additional fixed IPs"},{"line_number":48,"context_line":"configuration and will need to manually configure them after rebuild"},{"line_number":49,"context_line":"is completed."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"A End User can assign additional fixed IPs to a Neutron port after"},{"line_number":52,"context_line":"the instance creation. Due to the static nature of the configuration drive,"},{"line_number":53,"context_line":"he will have to manually configure them in his instance. This is a known"},{"line_number":54,"context_line":"limitation of the configuration drive and won\u0027t be addressed in this spec."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Proposed change"},{"line_number":57,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_7b1f25b7","line":54,"range":{"start_line":36,"start_character":0,"end_line":54,"end_character":74},"updated":"2018-06-05 21:31:21.000000000","message":"These all look like they should live in the problem description.\n\nThe use case is really just something like, \"As a user, I want my server with multiple fixed IPs to be configurable on boot or rebuild of the guest without manual intervention.\"\n\nand:\n\n\"As a user, when I attach a new port to my server instance, I want the metadata API service to make that port\u0027s fixed IP information available to my guest for configuration.\"","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"1cc2d1d253aab513c2b0399b0b654bf25175f7ef","unresolved":false,"context_lines":[{"line_number":33,"context_line":"Use Cases"},{"line_number":34,"context_line":"---------"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A End User can assign multiple fixed IPs to a Neutron port. Those fixed IPs"},{"line_number":37,"context_line":"can be part of the same subnet or from different subnets."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"When creating an instance, Nova will only consider the first fixed IP"},{"line_number":40,"context_line":"of the first subnet when building the network information found in the"},{"line_number":41,"context_line":"metadata service and configuration drive."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"A End User have to manually configure the other fixed IPs after"},{"line_number":44,"context_line":"the instance is created. This means additional work from the End User before"},{"line_number":45,"context_line":"the instance is fully configured and ready for use."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"If he rebuilds the instance, he will lose his additional fixed IPs"},{"line_number":48,"context_line":"configuration and will need to manually configure them after rebuild"},{"line_number":49,"context_line":"is completed."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"A End User can assign additional fixed IPs to a Neutron port after"},{"line_number":52,"context_line":"the instance creation. Due to the static nature of the configuration drive,"},{"line_number":53,"context_line":"he will have to manually configure them in his instance. This is a known"},{"line_number":54,"context_line":"limitation of the configuration drive and won\u0027t be addressed in this spec."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Proposed change"},{"line_number":57,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_1b49518a","line":54,"range":{"start_line":36,"start_character":0,"end_line":54,"end_character":74},"in_reply_to":"5f7c97a3_7b1f25b7","updated":"2018-06-05 21:44:33.000000000","message":"Moved above paragraphs to Problem Description section and took the liberty of using your examples for Use Case section.","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c924f8bc1f2793e563df3034896036069aa667fb","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                \"type\": \"ipv4\","},{"line_number":110,"context_line":"                \"link\": \"interface0\","},{"line_number":111,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\","},{"line_number":112,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":113,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":114,"context_line":"                \"ip_addresses\": ["},{"line_number":115,"context_line":"                  \"10.184.0.244/20\","}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_7be2c5a2","line":112,"range":{"start_line":112,"start_character":16,"end_line":112,"end_character":45},"updated":"2018-06-05 21:31:21.000000000","message":"OK so this is the existing thing for backward compat.","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c924f8bc1f2793e563df3034896036069aa667fb","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                \"link\": \"interface0\","},{"line_number":111,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\","},{"line_number":112,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":113,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":114,"context_line":"                \"ip_addresses\": ["},{"line_number":115,"context_line":"                  \"10.184.0.244/20\","},{"line_number":116,"context_line":"                  \"10.184.0.245/20\""}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_3bee8d8b","line":113,"range":{"start_line":113,"start_character":16,"end_line":113,"end_character":43},"updated":"2018-06-05 21:31:21.000000000","message":"And this is the old default route...","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c924f8bc1f2793e563df3034896036069aa667fb","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\","},{"line_number":112,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":113,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":114,"context_line":"                \"ip_addresses\": ["},{"line_number":115,"context_line":"                  \"10.184.0.244/20\","},{"line_number":116,"context_line":"                  \"10.184.0.245/20\""},{"line_number":117,"context_line":"                ],"},{"line_number":118,"context_line":"                \"routes\": ["},{"line_number":119,"context_line":"                    {"},{"line_number":120,"context_line":"                        \"network\": \"192.168.0.0\","}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_5b658944","line":117,"range":{"start_line":114,"start_character":16,"end_line":117,"end_character":18},"updated":"2018-06-05 21:31:21.000000000","message":"So if I\u0027m following correctly, this changes from ip_address\u003d\"10.184.0.244/20\" to the list.","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"1cc2d1d253aab513c2b0399b0b654bf25175f7ef","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\","},{"line_number":112,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":113,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":114,"context_line":"                \"ip_addresses\": ["},{"line_number":115,"context_line":"                  \"10.184.0.244/20\","},{"line_number":116,"context_line":"                  \"10.184.0.245/20\""},{"line_number":117,"context_line":"                ],"},{"line_number":118,"context_line":"                \"routes\": ["},{"line_number":119,"context_line":"                    {"},{"line_number":120,"context_line":"                        \"network\": \"192.168.0.0\","}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_9b548123","line":117,"range":{"start_line":114,"start_character":16,"end_line":117,"end_character":18},"in_reply_to":"5f7c97a3_5b658944","updated":"2018-06-05 21:44:33.000000000","message":"Yes, ip_addresses list field is introduced while keeping the old field/format in place (ip_address\u003d\"10.184.0.244\" without cidr notation)","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c924f8bc1f2793e563df3034896036069aa667fb","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                  \"10.184.0.244/20\","},{"line_number":116,"context_line":"                  \"10.184.0.245/20\""},{"line_number":117,"context_line":"                ],"},{"line_number":118,"context_line":"                \"routes\": ["},{"line_number":119,"context_line":"                    {"},{"line_number":120,"context_line":"                        \"network\": \"192.168.0.0\","},{"line_number":121,"context_line":"                        \"netmask\": \"255.255.0.0\","},{"line_number":122,"context_line":"                        \"gateway\": \"10.184.0.1\""},{"line_number":123,"context_line":"                    },"},{"line_number":124,"context_line":"                    {"},{"line_number":125,"context_line":"                        \"network\": \"0.0.0.0\","},{"line_number":126,"context_line":"                        \"netmask\": \"0.0.0.0\","},{"line_number":127,"context_line":"                        \"gateway\": \"10.184.0.1\""},{"line_number":128,"context_line":"                    }"},{"line_number":129,"context_line":"                ],"},{"line_number":130,"context_line":"            },"},{"line_number":131,"context_line":"            {"},{"line_number":132,"context_line":"                \"id\": \"network1\","}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_9bdfa1d5","line":129,"range":{"start_line":118,"start_character":16,"end_line":129,"end_character":18},"updated":"2018-06-05 21:31:21.000000000","message":"What is different about this compared to how it works today? Just that there are multiple of them? I see the _get_nets method does get a default route and then adds additional routes to the routes list, but I\u0027m not sure what is different about your proposal.","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"1cc2d1d253aab513c2b0399b0b654bf25175f7ef","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                  \"10.184.0.244/20\","},{"line_number":116,"context_line":"                  \"10.184.0.245/20\""},{"line_number":117,"context_line":"                ],"},{"line_number":118,"context_line":"                \"routes\": ["},{"line_number":119,"context_line":"                    {"},{"line_number":120,"context_line":"                        \"network\": \"192.168.0.0\","},{"line_number":121,"context_line":"                        \"netmask\": \"255.255.0.0\","},{"line_number":122,"context_line":"                        \"gateway\": \"10.184.0.1\""},{"line_number":123,"context_line":"                    },"},{"line_number":124,"context_line":"                    {"},{"line_number":125,"context_line":"                        \"network\": \"0.0.0.0\","},{"line_number":126,"context_line":"                        \"netmask\": \"0.0.0.0\","},{"line_number":127,"context_line":"                        \"gateway\": \"10.184.0.1\""},{"line_number":128,"context_line":"                    }"},{"line_number":129,"context_line":"                ],"},{"line_number":130,"context_line":"            },"},{"line_number":131,"context_line":"            {"},{"line_number":132,"context_line":"                \"id\": \"network1\","}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_5602400b","line":129,"range":{"start_line":118,"start_character":16,"end_line":129,"end_character":18},"in_reply_to":"5f7c97a3_9bdfa1d5","updated":"2018-06-05 21:44:33.000000000","message":"The proposal is mainly about the ip_addresses field which allows multiple fixed-ips. The routes field should now also include routes from the other subnets associated to the fixed-ips.\n\nBut I have some questions/challenges as mentioned in commit message.","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c924f8bc1f2793e563df3034896036069aa667fb","unresolved":false,"context_lines":[{"line_number":179,"context_line":"Other end user impact"},{"line_number":180,"context_line":"---------------------"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"This change will require in-guest agent such as cloud-init to read and"},{"line_number":183,"context_line":"parse the new configuration drive version to benefit from it."},{"line_number":184,"context_line":"Older in-guest agent versions will continue to read from the previous"},{"line_number":185,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_9bf8014a","line":182,"updated":"2018-06-05 21:31:21.000000000","message":"Are you aware of any work going on in cloud-init to handle this new format? Or is that something you\u0027ll be doing in a follow up?","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"1cc2d1d253aab513c2b0399b0b654bf25175f7ef","unresolved":false,"context_lines":[{"line_number":179,"context_line":"Other end user impact"},{"line_number":180,"context_line":"---------------------"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"This change will require in-guest agent such as cloud-init to read and"},{"line_number":183,"context_line":"parse the new configuration drive version to benefit from it."},{"line_number":184,"context_line":"Older in-guest agent versions will continue to read from the previous"},{"line_number":185,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_d60df035","line":182,"in_reply_to":"5f7c97a3_9bf8014a","updated":"2018-06-05 21:44:33.000000000","message":"I will have little choice to do a follow up with cloud-init once merged so I can benefit from this new feature. Are you suggesting we should get feedback from them before it merges?","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e7c3395a3c7a3084bc73ac245648d630ef1ea0a5","unresolved":false,"context_lines":[{"line_number":179,"context_line":"Other end user impact"},{"line_number":180,"context_line":"---------------------"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"This change will require in-guest agent such as cloud-init to read and"},{"line_number":183,"context_line":"parse the new configuration drive version to benefit from it."},{"line_number":184,"context_line":"Older in-guest agent versions will continue to read from the previous"},{"line_number":185,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_b6c3948a","line":182,"in_reply_to":"5f7c97a3_d60df035","updated":"2018-06-05 21:56:00.000000000","message":"I was just wondering if you\u0027d already started that conversation with the cloud-init folk. I don\u0027t need to block this on that agreement, but it would be nice to know they are aware of this.","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c924f8bc1f2793e563df3034896036069aa667fb","unresolved":false,"context_lines":[{"line_number":217,"context_line":"Work Items"},{"line_number":218,"context_line":"----------"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"1. Propose new network_data.json format"},{"line_number":221,"context_line":"2. Implement new network_data.json format"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_3b93ed02","line":221,"range":{"start_line":220,"start_character":0,"end_line":221,"end_character":41},"updated":"2018-06-05 21:31:21.000000000","message":"You can combine these, they are basically the same, and #1 is the spec.","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"1cc2d1d253aab513c2b0399b0b654bf25175f7ef","unresolved":false,"context_lines":[{"line_number":217,"context_line":"Work Items"},{"line_number":218,"context_line":"----------"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"1. Propose new network_data.json format"},{"line_number":221,"context_line":"2. Implement new network_data.json format"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_96177846","line":221,"range":{"start_line":220,"start_character":0,"end_line":221,"end_character":41},"in_reply_to":"5f7c97a3_3b93ed02","updated":"2018-06-05 21:44:33.000000000","message":"Done","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c924f8bc1f2793e563df3034896036069aa667fb","unresolved":false,"context_lines":[{"line_number":237,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"* There is no official reference for the network data format."},{"line_number":240,"context_line":"  This spec is be the best reference at the moment."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_5b98291a","line":240,"range":{"start_line":240,"start_character":15,"end_line":240,"end_character":17},"updated":"2018-06-05 21:31:21.000000000","message":"s/be//","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"1cc2d1d253aab513c2b0399b0b654bf25175f7ef","unresolved":false,"context_lines":[{"line_number":237,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"* There is no official reference for the network data format."},{"line_number":240,"context_line":"  This spec is be the best reference at the moment."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5f7c97a3_562b2081","line":240,"range":{"start_line":240,"start_character":15,"end_line":240,"end_character":17},"in_reply_to":"5f7c97a3_5b98291a","updated":"2018-06-05 21:44:33.000000000","message":"Done","commit_id":"d3b8c39c7142d39b5ec2c0c001f60426fad6b381"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f4eaaaea6386c40b7fe4468282430366ef6511c0","unresolved":false,"context_lines":[{"line_number":53,"context_line":"Use Cases"},{"line_number":54,"context_line":"---------"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"As a user, I want my server with multiple fixed IPs to be configurable on boot"},{"line_number":57,"context_line":"or rebuild of the guest without manual intervention."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"As a user, when I attach a new port to my server instance, I want"},{"line_number":60,"context_line":"the metadata API service to make that port\u0027s fixed IP information"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_dfde4e0f","line":57,"range":{"start_line":56,"start_character":0,"end_line":57,"end_character":52},"updated":"2018-06-06 16:36:38.000000000","message":"What is the use case for having multiple fixed IPs for a single vNIC? Are you referring to having, say, an IPv4 and an IPv6 address assigned to the same guest interface?\n\nI can\u0027t think of a use case for a single vNIC having \u003e1 IPv4 address.","commit_id":"35997fe345c8686383ce538b8cde331c78772ebc"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"918796079ac5367d1e0557d7e96ff2f94bd7b8c9","unresolved":false,"context_lines":[{"line_number":53,"context_line":"Use Cases"},{"line_number":54,"context_line":"---------"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"As a user, I want my server with multiple fixed IPs to be configurable on boot"},{"line_number":57,"context_line":"or rebuild of the guest without manual intervention."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"As a user, when I attach a new port to my server instance, I want"},{"line_number":60,"context_line":"the metadata API service to make that port\u0027s fixed IP information"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_df32ce0f","line":57,"range":{"start_line":56,"start_character":0,"end_line":57,"end_character":52},"in_reply_to":"5f7c97a3_dfde4e0f","updated":"2018-06-06 16:49:50.000000000","message":"Neutron port accepts multiple fixed-ips on the same port. Nova should configure them. There are plenty of service which are IPs based and that could required multiple IPs on the same interface. I know we have *plenty* of customers with multiple fixed-ips which is why I created this spec.","commit_id":"35997fe345c8686383ce538b8cde331c78772ebc"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f4eaaaea6386c40b7fe4468282430366ef6511c0","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\","},{"line_number":119,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":120,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":121,"context_line":"                \"ip_addresses\": ["},{"line_number":122,"context_line":"                  \"10.184.0.244/20\","},{"line_number":123,"context_line":"                  \"10.184.0.245/20\""},{"line_number":124,"context_line":"                ],"},{"line_number":125,"context_line":"                \"routes\": ["},{"line_number":126,"context_line":"                    {"},{"line_number":127,"context_line":"                        \"network\": \"192.168.0.0\","}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_9f369651","line":124,"range":{"start_line":121,"start_character":17,"end_line":124,"end_character":18},"updated":"2018-06-06 16:36:38.000000000","message":"these aren\u0027t IP addresses. They are IPv4 CIDRs. Maybe it would be more accurate to say \"subnets\" or \"ipv4_address_ranges\" or \"ipv4_cidrs\" instead of \"ip_addresses\".","commit_id":"35997fe345c8686383ce538b8cde331c78772ebc"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"dda25c21bb645247b4213ceabf777a087a527660","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\","},{"line_number":119,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":120,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":121,"context_line":"                \"ip_addresses\": ["},{"line_number":122,"context_line":"                  \"10.184.0.244/20\","},{"line_number":123,"context_line":"                  \"10.184.0.245/20\""},{"line_number":124,"context_line":"                ],"},{"line_number":125,"context_line":"                \"routes\": ["},{"line_number":126,"context_line":"                    {"},{"line_number":127,"context_line":"                        \"network\": \"192.168.0.0\","}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_ba9a805f","line":124,"range":{"start_line":121,"start_character":17,"end_line":124,"end_character":18},"in_reply_to":"5f7c97a3_1a1b7473","updated":"2018-06-06 17:03:16.000000000","message":"Also note that the same notation is used for IPv6 already.","commit_id":"35997fe345c8686383ce538b8cde331c78772ebc"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"918796079ac5367d1e0557d7e96ff2f94bd7b8c9","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\","},{"line_number":119,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":120,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":121,"context_line":"                \"ip_addresses\": ["},{"line_number":122,"context_line":"                  \"10.184.0.244/20\","},{"line_number":123,"context_line":"                  \"10.184.0.245/20\""},{"line_number":124,"context_line":"                ],"},{"line_number":125,"context_line":"                \"routes\": ["},{"line_number":126,"context_line":"                    {"},{"line_number":127,"context_line":"                        \"network\": \"192.168.0.0\","}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_1a1b7473","line":124,"range":{"start_line":121,"start_character":17,"end_line":124,"end_character":18},"in_reply_to":"5f7c97a3_9f369651","updated":"2018-06-06 16:49:50.000000000","message":"Those are not ranges. They are single IP using CIDR instead of having a list of dict with ip_address/netmask keys. The list of dict was in the initial proposal. Someone suggested using cidr instead. So I updated the proposal.\n\nI suggest you talk with other reviewers so you all can come up with a single voice. This spec has been up for 2 years already.","commit_id":"35997fe345c8686383ce538b8cde331c78772ebc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a90960a0e59c90324e54f1fb43732dcdbe50ce78","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                        \"gateway\": \"10.184.0.1\""},{"line_number":135,"context_line":"                    }"},{"line_number":136,"context_line":"                ],"},{"line_number":137,"context_line":"            },"},{"line_number":138,"context_line":"            {"},{"line_number":139,"context_line":"                \"id\": \"network1\","},{"line_number":140,"context_line":"                \"type\": \"ipv6\","}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_37b0d08b","line":137,"updated":"2018-06-06 13:54:52.000000000","message":"This needs to be updated, as services are included per-network now, as of:\n\nI003a25b0d60cb6cd16c3ee1ad1a43910825622be","commit_id":"35997fe345c8686383ce538b8cde331c78772ebc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a90960a0e59c90324e54f1fb43732dcdbe50ce78","unresolved":false,"context_lines":[{"line_number":187,"context_line":"---------------------"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"This change will require in-guest agent such as cloud-init to read and"},{"line_number":190,"context_line":"parse the new configuration drive version to benefit from it."},{"line_number":191,"context_line":"Older in-guest agent versions will continue to read from the previous"},{"line_number":192,"context_line":"version."},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_377530cd","line":190,"range":{"start_line":190,"start_character":14,"end_line":190,"end_character":33},"updated":"2018-06-06 13:54:52.000000000","message":"Config drive is a special mechanism for delivering metadata. I would prefer saying \"metadata\" here and everywhere in this file, except where you talk about config drive being static.","commit_id":"35997fe345c8686383ce538b8cde331c78772ebc"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"918796079ac5367d1e0557d7e96ff2f94bd7b8c9","unresolved":false,"context_lines":[{"line_number":187,"context_line":"---------------------"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"This change will require in-guest agent such as cloud-init to read and"},{"line_number":190,"context_line":"parse the new configuration drive version to benefit from it."},{"line_number":191,"context_line":"Older in-guest agent versions will continue to read from the previous"},{"line_number":192,"context_line":"version."},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_5a680cb9","line":190,"range":{"start_line":190,"start_character":14,"end_line":190,"end_character":33},"in_reply_to":"5f7c97a3_377530cd","updated":"2018-06-06 16:49:50.000000000","message":"Oops, I missed that one. I don\u0027t use metadata service so I\u0027m not fully aware of its content and purpose. I will update in a follow up with your suggestion.","commit_id":"35997fe345c8686383ce538b8cde331c78772ebc"}]}
