)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"39cb44eef1096dbe9ef88f2f82cd6f0666f100a1","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently the metadata service only contains minimal network information."},{"line_number":10,"context_line":"Like user_data and vendor_data, we should also provide network_data. Really we should"},{"line_number":11,"context_line":"provide all the information we can (from neutron) in both config drive and metadata service."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ia6967af4b4147ad4dcf6ae3ae5f4b6d9c1fda246"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAW3%2F%2FqMI%3D","line":11,"updated":"2014-04-11 11:08:18.000000000","message":"please reference the blueprint, like \"blueprint blah\" so you get a link into launchpad.","commit_id":"b14d1fc41d34a5b81bdedebe7f03194a8b9612e0"}],"specs/juno/metadata-service-network-info.rst":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a1cffe4584f928f7c68acb47306ea04a2c876d16","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Problem description"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Currently the metadata service only contains minimal network information. Like user_data "},{"line_number":19,"context_line":"and vendor_data, we should also provide network_data. Really we should provide all the "},{"line_number":20,"context_line":"information we can (from neutron) in both config drive and metadata service."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAWH%2F9Rf8%3D","line":18,"updated":"2014-04-07 13:59:59.000000000","message":"whitespace","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"ed1cd9310a884e8b3fd6bcb0948615d5f6bbff9e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Problem description"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Currently the metadata service only contains minimal network information. Like user_data "},{"line_number":19,"context_line":"and vendor_data, we should also provide network_data. Really we should provide all the "},{"line_number":20,"context_line":"information we can (from neutron) in both config drive and metadata service."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAW3%2F%2F%2Bj0%3D","line":18,"in_reply_to":"AAAAWH%2F9Rf8%3D","updated":"2014-04-09 05:44:54.000000000","message":"Removed.","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a1cffe4584f928f7c68acb47306ea04a2c876d16","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Currently the metadata service only contains minimal network information. Like user_data "},{"line_number":19,"context_line":"and vendor_data, we should also provide network_data. Really we should provide all the "},{"line_number":20,"context_line":"information we can (from neutron) in both config drive and metadata service."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Really we should provide all the information we can (from neutron) in both config drive and metadata service."}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAWH%2F9Rf0%3D","line":19,"updated":"2014-04-07 13:59:59.000000000","message":"ditto","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"ed1cd9310a884e8b3fd6bcb0948615d5f6bbff9e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Currently the metadata service only contains minimal network information. Like user_data "},{"line_number":19,"context_line":"and vendor_data, we should also provide network_data. Really we should provide all the "},{"line_number":20,"context_line":"information we can (from neutron) in both config drive and metadata service."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Really we should provide all the information we can (from neutron) in both config drive and metadata service."}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAW3%2F%2F%2Bjo%3D","line":19,"in_reply_to":"AAAAWH%2F9Rf0%3D","updated":"2014-04-09 05:44:54.000000000","message":"Removed.","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a1cffe4584f928f7c68acb47306ea04a2c876d16","unresolved":false,"context_lines":[{"line_number":19,"context_line":"and vendor_data, we should also provide network_data. Really we should provide all the "},{"line_number":20,"context_line":"information we can (from neutron) in both config drive and metadata service."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Really we should provide all the information we can (from neutron) in both config drive and metadata service."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Main use case:"},{"line_number":25,"context_line":"* cloud has no DHCP"}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAWH%2F9Re4%3D","line":22,"updated":"2014-04-07 13:59:59.000000000","message":"line length should be max 80 characters","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"ed1cd9310a884e8b3fd6bcb0948615d5f6bbff9e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"and vendor_data, we should also provide network_data. Really we should provide all the "},{"line_number":20,"context_line":"information we can (from neutron) in both config drive and metadata service."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Really we should provide all the information we can (from neutron) in both config drive and metadata service."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Main use case:"},{"line_number":25,"context_line":"* cloud has no DHCP"}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAW3%2F%2F%2Bjk%3D","line":22,"in_reply_to":"AAAAWH%2F9Re4%3D","updated":"2014-04-09 05:44:54.000000000","message":"Done","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a1cffe4584f928f7c68acb47306ea04a2c876d16","unresolved":false,"context_lines":[{"line_number":28,"context_line":"* image can have custom startup scripts to get networking config from Config Drive"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Other usecase:"},{"line_number":31,"context_line":"Consider a VM with the first interface configured by DHCP, and all other interfaces "},{"line_number":32,"context_line":"on private networks where the interfaces are statically configured, but you are not "},{"line_number":33,"context_line":"using config drive, just the metadata service, and not cheating by doing file injection, "},{"line_number":34,"context_line":"presenting the data in a guest agnostic format."}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAWH%2F9Rfs%3D","line":31,"updated":"2014-04-07 13:59:59.000000000","message":"ditto","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"ed1cd9310a884e8b3fd6bcb0948615d5f6bbff9e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"* image can have custom startup scripts to get networking config from Config Drive"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Other usecase:"},{"line_number":31,"context_line":"Consider a VM with the first interface configured by DHCP, and all other interfaces "},{"line_number":32,"context_line":"on private networks where the interfaces are statically configured, but you are not "},{"line_number":33,"context_line":"using config drive, just the metadata service, and not cheating by doing file injection, "},{"line_number":34,"context_line":"presenting the data in a guest agnostic format."}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAW3%2F%2F%2Bjg%3D","line":31,"in_reply_to":"AAAAWH%2F9Rfs%3D","updated":"2014-04-09 05:44:54.000000000","message":"Removed.","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a1cffe4584f928f7c68acb47306ea04a2c876d16","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Other usecase:"},{"line_number":31,"context_line":"Consider a VM with the first interface configured by DHCP, and all other interfaces "},{"line_number":32,"context_line":"on private networks where the interfaces are statically configured, but you are not "},{"line_number":33,"context_line":"using config drive, just the metadata service, and not cheating by doing file injection, "},{"line_number":34,"context_line":"presenting the data in a guest agnostic format."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAWH%2F9Rfk%3D","line":32,"updated":"2014-04-07 13:59:59.000000000","message":"ditto","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"ed1cd9310a884e8b3fd6bcb0948615d5f6bbff9e","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Other usecase:"},{"line_number":31,"context_line":"Consider a VM with the first interface configured by DHCP, and all other interfaces "},{"line_number":32,"context_line":"on private networks where the interfaces are statically configured, but you are not "},{"line_number":33,"context_line":"using config drive, just the metadata service, and not cheating by doing file injection, "},{"line_number":34,"context_line":"presenting the data in a guest agnostic format."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAW3%2F%2F%2BjY%3D","line":32,"in_reply_to":"AAAAWH%2F9Rfk%3D","updated":"2014-04-09 05:44:54.000000000","message":"Removed.","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a1cffe4584f928f7c68acb47306ea04a2c876d16","unresolved":false,"context_lines":[{"line_number":30,"context_line":"Other usecase:"},{"line_number":31,"context_line":"Consider a VM with the first interface configured by DHCP, and all other interfaces "},{"line_number":32,"context_line":"on private networks where the interfaces are statically configured, but you are not "},{"line_number":33,"context_line":"using config drive, just the metadata service, and not cheating by doing file injection, "},{"line_number":34,"context_line":"presenting the data in a guest agnostic format."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAWH%2F9RfY%3D","line":33,"updated":"2014-04-07 13:59:59.000000000","message":"ditto","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"ed1cd9310a884e8b3fd6bcb0948615d5f6bbff9e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"Other usecase:"},{"line_number":31,"context_line":"Consider a VM with the first interface configured by DHCP, and all other interfaces "},{"line_number":32,"context_line":"on private networks where the interfaces are statically configured, but you are not "},{"line_number":33,"context_line":"using config drive, just the metadata service, and not cheating by doing file injection, "},{"line_number":34,"context_line":"presenting the data in a guest agnostic format."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAW3%2F%2F%2BjU%3D","line":33,"in_reply_to":"AAAAWH%2F9RfY%3D","updated":"2014-04-09 05:44:54.000000000","message":"Removed.","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a1cffe4584f928f7c68acb47306ea04a2c876d16","unresolved":false,"context_lines":[{"line_number":39,"context_line":"* Only in v3 API"},{"line_number":40,"context_line":"* Information comes from current network_info for instance"},{"line_number":41,"context_line":"* API should be fairly similar to the neutron get port details API"},{"line_number":42,"context_line":"* We only really need concrete info: mac address, fixed IP address, subnet, gateway, host routes, etc"},{"line_number":43,"context_line":"* Probably best to include at least: neutron port-id, neutron network-id, neutron subnet-id"},{"line_number":44,"context_line":"* It should all be grouped by mac address, so guest can link it to the VIFs correctly"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAWH%2F9Reo%3D","line":42,"updated":"2014-04-07 13:59:59.000000000","message":"line length","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"ed1cd9310a884e8b3fd6bcb0948615d5f6bbff9e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"* Only in v3 API"},{"line_number":40,"context_line":"* Information comes from current network_info for instance"},{"line_number":41,"context_line":"* API should be fairly similar to the neutron get port details API"},{"line_number":42,"context_line":"* We only really need concrete info: mac address, fixed IP address, subnet, gateway, host routes, etc"},{"line_number":43,"context_line":"* Probably best to include at least: neutron port-id, neutron network-id, neutron subnet-id"},{"line_number":44,"context_line":"* It should all be grouped by mac address, so guest can link it to the VIFs correctly"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAW3%2F%2F%2BjQ%3D","line":42,"in_reply_to":"AAAAWH%2F9Reo%3D","updated":"2014-04-09 05:44:54.000000000","message":"Done","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a1cffe4584f928f7c68acb47306ea04a2c876d16","unresolved":false,"context_lines":[{"line_number":40,"context_line":"* Information comes from current network_info for instance"},{"line_number":41,"context_line":"* API should be fairly similar to the neutron get port details API"},{"line_number":42,"context_line":"* We only really need concrete info: mac address, fixed IP address, subnet, gateway, host routes, etc"},{"line_number":43,"context_line":"* Probably best to include at least: neutron port-id, neutron network-id, neutron subnet-id"},{"line_number":44,"context_line":"* It should all be grouped by mac address, so guest can link it to the VIFs correctly"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAWH%2F9Rdk%3D","line":43,"updated":"2014-04-07 13:59:59.000000000","message":"is this in addition to what is mentioned in line 42?","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"ed1cd9310a884e8b3fd6bcb0948615d5f6bbff9e","unresolved":false,"context_lines":[{"line_number":40,"context_line":"* Information comes from current network_info for instance"},{"line_number":41,"context_line":"* API should be fairly similar to the neutron get port details API"},{"line_number":42,"context_line":"* We only really need concrete info: mac address, fixed IP address, subnet, gateway, host routes, etc"},{"line_number":43,"context_line":"* Probably best to include at least: neutron port-id, neutron network-id, neutron subnet-id"},{"line_number":44,"context_line":"* It should all be grouped by mac address, so guest can link it to the VIFs correctly"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAW3%2F%2F%2BjM%3D","line":43,"in_reply_to":"AAAAWH%2F9Rdk%3D","updated":"2014-04-09 05:44:54.000000000","message":"Merged the lines.","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a1cffe4584f928f7c68acb47306ea04a2c876d16","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"JSON Response::"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"\t{"},{"line_number":66,"context_line":"\t   \"ports\":["},{"line_number":67,"context_line":"\t      {"},{"line_number":68,"context_line":"\t\t \"name\":\"foo\","}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAWH%2F9RfU%3D","line":65,"updated":"2014-04-07 13:59:59.000000000","message":"whitespace and below","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"ed1cd9310a884e8b3fd6bcb0948615d5f6bbff9e","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"JSON Response::"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"\t{"},{"line_number":66,"context_line":"\t   \"ports\":["},{"line_number":67,"context_line":"\t      {"},{"line_number":68,"context_line":"\t\t \"name\":\"foo\","}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAW3%2F%2F%2BjE%3D","line":65,"in_reply_to":"AAAAWH%2F9RfU%3D","updated":"2014-04-09 05:44:54.000000000","message":"Done","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a1cffe4584f928f7c68acb47306ea04a2c876d16","unresolved":false,"context_lines":[{"line_number":108,"context_line":"Performance Impact"},{"line_number":109,"context_line":"------------------"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"None"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Other deployer impact"},{"line_number":114,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAWH%2F9RdU%3D","line":111,"updated":"2014-04-07 13:59:59.000000000","message":"there may be due to the fact that we will need to get this information from neutron, unless it is read from the nova cache. that may not include subnet data etc.","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"ed1cd9310a884e8b3fd6bcb0948615d5f6bbff9e","unresolved":false,"context_lines":[{"line_number":108,"context_line":"Performance Impact"},{"line_number":109,"context_line":"------------------"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"None"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Other deployer impact"},{"line_number":114,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAW3%2F%2F%2Bi0%3D","line":111,"in_reply_to":"AAAAWH%2F9RdU%3D","updated":"2014-04-09 05:44:54.000000000","message":"We will not be adding new calls to neturon.  Please refer to the following commit patch https://review.openstack.org/#/c/77504/. So I guess this will mean minimally performance impact.","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a1cffe4584f928f7c68acb47306ea04a2c876d16","unresolved":false,"context_lines":[{"line_number":132,"context_line":"Work Items"},{"line_number":133,"context_line":"----------"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"* Get basic networking info from neutron into Metadata Service "},{"line_number":136,"context_line":"  (list of: mac, IP, subnet, gateway, neutron-port-id, host-routes)"},{"line_number":137,"context_line":"* Add above information into ConfigDrive as \"network_data\""},{"line_number":138,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAWH%2F9RdM%3D","line":135,"updated":"2014-04-07 13:59:59.000000000","message":"whitespace","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"ed1cd9310a884e8b3fd6bcb0948615d5f6bbff9e","unresolved":false,"context_lines":[{"line_number":132,"context_line":"Work Items"},{"line_number":133,"context_line":"----------"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"* Get basic networking info from neutron into Metadata Service "},{"line_number":136,"context_line":"  (list of: mac, IP, subnet, gateway, neutron-port-id, host-routes)"},{"line_number":137,"context_line":"* Add above information into ConfigDrive as \"network_data\""},{"line_number":138,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAW3%2F%2F%2Bis%3D","line":135,"in_reply_to":"AAAAWH%2F9RdM%3D","updated":"2014-04-09 05:44:54.000000000","message":"Removed.","commit_id":"d1eda4bcf2d02fdaea5cc5b3936233897199f814"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"39cb44eef1096dbe9ef88f2f82cd6f0666f100a1","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Currently the metadata service only contains minimal network information."},{"line_number":20,"context_line":"Like user_data and vendor_data, we should also provide network_data. Really"},{"line_number":21,"context_line":"we should provide all the information we can (from neutron) in both"},{"line_number":22,"context_line":"config drive and metadata service."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Main use case:"},{"line_number":25,"context_line":"* cloud has no DHCP"}],"source_content_type":"text/x-rst","patch_set":6,"id":"AAAAW3%2F%2FqK4%3D","line":22,"updated":"2014-04-11 11:08:18.000000000","message":"Current config drive can contain network configuration using the ubuntu interface file format.\n\nThis is to provide a platform agnostic format that is available in both the metadata service and config drive, and can be more easily evolved over time.","commit_id":"b14d1fc41d34a5b81bdedebe7f03194a8b9612e0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"39cb44eef1096dbe9ef88f2f82cd6f0666f100a1","unresolved":false,"context_lines":[{"line_number":28,"context_line":"* image can have custom startup scripts to get networking config from"},{"line_number":29,"context_line":"Config Drive"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Other usecase:"},{"line_number":32,"context_line":"Consider a VM with the first interface configured by DHCP, and all other"},{"line_number":33,"context_line":"interfaces on private networks where the interfaces are statically configured,"},{"line_number":34,"context_line":"but you are not using config drive, just the metadata service, and not"}],"source_content_type":"text/x-rst","patch_set":6,"id":"AAAAW3%2F%2FqKs%3D","line":31,"updated":"2014-04-11 11:08:18.000000000","message":"Please check how this works in the final document. ideally have both use cases as either text or bullets.","commit_id":"b14d1fc41d34a5b81bdedebe7f03194a8b9612e0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"39cb44eef1096dbe9ef88f2f82cd6f0666f100a1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* Only in v3 API"},{"line_number":42,"context_line":"* Information comes from current network_info for instance"},{"line_number":43,"context_line":"* API should be fairly similar to the neutron get port details API"},{"line_number":44,"context_line":"* We only really need concrete info: mac address, fixed IP address, subnet,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"AAAAW3%2F%2FqJY%3D","line":41,"updated":"2014-04-11 11:08:18.000000000","message":"erm? metadata service is not v2 or v3","commit_id":"b14d1fc41d34a5b81bdedebe7f03194a8b9612e0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"39cb44eef1096dbe9ef88f2f82cd6f0666f100a1","unresolved":false,"context_lines":[{"line_number":66,"context_line":"JSON Response::"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    {"},{"line_number":69,"context_line":"\t    \"ports\":["},{"line_number":70,"context_line":"\t    {"},{"line_number":71,"context_line":"\t\t    \"name\":\"foo\","},{"line_number":72,"context_line":"            \"network_id\":\"ebda9658-093b-41ba-80ce-0cf8cb8365d4\","}],"source_content_type":"text/x-rst","patch_set":6,"id":"AAAAW3%2F%2FqMA%3D","line":69,"updated":"2014-04-11 11:08:18.000000000","message":"still got some tabs that need removing here.","commit_id":"b14d1fc41d34a5b81bdedebe7f03194a8b9612e0"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"unresolved":false,"context_lines":[{"line_number":112,"context_line":"Performance Impact"},{"line_number":113,"context_line":"------------------"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"None"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Other deployer impact"},{"line_number":118,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9ad9bd40_a8482888","line":115,"updated":"2014-05-02 23:13:20.000000000","message":"None because the data is already cached in Nova ?\n\nMy worry here is if this needs an additional query into Neutron - in that case could a VM that hammers the metadata service cause a performance issue into the Neutron API server ?","commit_id":"80da582bb2725f907869513a60901f9f985d9d32"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"unresolved":false,"context_lines":[{"line_number":112,"context_line":"Performance Impact"},{"line_number":113,"context_line":"------------------"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"None"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Other deployer impact"},{"line_number":118,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7adec928_b39edc52","line":115,"in_reply_to":"9ad9bd40_a8482888","updated":"2014-05-12 10:17:42.000000000","message":"Yes. Its cached in Nova.","commit_id":"80da582bb2725f907869513a60901f9f985d9d32"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a64026c4f816ca49aa52de5895fd90100ff422da","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        },"},{"line_number":84,"context_line":"        { // Example of physical NICs (future support)"},{"line_number":85,"context_line":"            \"id\": \"eth0\","},{"line_number":86,"context_line":"            \"type\": \"ethernet\","},{"line_number":87,"context_line":"            \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\""},{"line_number":88,"context_line":"        },"},{"line_number":89,"context_line":"        {"}],"source_content_type":"text/x-rst","patch_set":10,"id":"baada198_bddffc38","line":86,"updated":"2014-07-07 21:53:49.000000000","message":"I think s/ethernet/phy/ would make more sense. To me, everything is \"ethernet\" :)","commit_id":"30b37f9f8392dd8e3121f503215202ac19150dcc"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"8c4821d2830cffcd6a3cafec55640f748b0f8dfd","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        },"},{"line_number":84,"context_line":"        { // Example of physical NICs (future support)"},{"line_number":85,"context_line":"            \"id\": \"eth0\","},{"line_number":86,"context_line":"            \"type\": \"ethernet\","},{"line_number":87,"context_line":"            \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\""},{"line_number":88,"context_line":"        },"},{"line_number":89,"context_line":"        {"}],"source_content_type":"text/x-rst","patch_set":10,"id":"baada198_d17c3b75","line":86,"in_reply_to":"baada198_bddffc38","updated":"2014-07-10 05:03:25.000000000","message":"Until it\u0027s not.  Though I don\u0027t imagine many people will want a firewire or Thunderbolt based cloud. :)  Still, I think \u0027ethernet\u0027 is actually the right answer, and I personally think that \u0027ethernet\u0027 is the right answer regardless of whether the interface is physical or a virtual simulation of an ethernet device - this is a thing you don\u0027t need to tell the instance because either it can tell for itself or it doesn\u0027t care.","commit_id":"30b37f9f8392dd8e3121f503215202ac19150dcc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a64026c4f816ca49aa52de5895fd90100ff422da","unresolved":false,"context_lines":[{"line_number":156,"context_line":"Security impact"},{"line_number":157,"context_line":"---------------"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Notifications impact"},{"line_number":162,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"baada198_5dd6e028","line":159,"updated":"2014-07-07 21:53:49.000000000","message":"Maybe something in here about exposing all these details to the guest (see below). Obviously most of the network configuration is discoverable by any unprivileged user on the guest, but ... think a SELinux locked-down environment, maybe.","commit_id":"30b37f9f8392dd8e3121f503215202ac19150dcc"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"8c4821d2830cffcd6a3cafec55640f748b0f8dfd","unresolved":false,"context_lines":[{"line_number":156,"context_line":"Security impact"},{"line_number":157,"context_line":"---------------"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Notifications impact"},{"line_number":162,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"baada198_d1ca7ba0","line":159,"in_reply_to":"baada198_5dd6e028","updated":"2014-07-10 05:03:25.000000000","message":"Only if you\u0027re actually leaking anything you don\u0027t know.  I think that could be confirmed before implementation; quite honestly there\u0027s not much information you could put here that the guest couldn\u0027t work out using DHCP, or anything that\u0027s privileged.  \n\nPerhaps a default-off or a turn-off option would be appropriate, I suppose.","commit_id":"30b37f9f8392dd8e3121f503215202ac19150dcc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a64026c4f816ca49aa52de5895fd90100ff422da","unresolved":false,"context_lines":[{"line_number":174,"context_line":"None"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Other deployer impact"},{"line_number":177,"context_line":"---------------------"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"None"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"baada198_7d0ba4d5","line":177,"updated":"2014-07-07 21:53:49.000000000","message":"I think there\u0027s definitely deployer impact here, as this affects the guest-visible metadata API. Maybe just something about how future versions of cloud-init or other in-guest agents will have access to this sort of info?\n\nI suppose there\u0027s some possibility that exposing all this information inside the guest might not be ideal? Meaning, if you had a guest that massively restricted the access to basic network information, but still allowed them to access the metadata server for the purposes of getting their own metadata, they might be able to discover more than they should.","commit_id":"30b37f9f8392dd8e3121f503215202ac19150dcc"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"8c4821d2830cffcd6a3cafec55640f748b0f8dfd","unresolved":false,"context_lines":[{"line_number":174,"context_line":"None"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Other deployer impact"},{"line_number":177,"context_line":"---------------------"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"None"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"baada198_31465722","line":177,"in_reply_to":"baada198_7d0ba4d5","updated":"2014-07-10 05:03:25.000000000","message":"I\u0027m inclined to agree on that last point - user_data, for example, only appears if the instance creator specifies it, so it\u0027s easy to shelter the guest.  If this turns up every single time that would be unavoidable information exchange, and I think the \u0027can turn off\u0027 would be a solution to that.","commit_id":"30b37f9f8392dd8e3121f503215202ac19150dcc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"df7e1cbd38a84ccef27c257cefa83f1162b88679","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \"vif_id\": \"E1C90E9F-EAFC-4E2D-8EC9-58B91CEBB53D\""},{"line_number":83,"context_line":"        },"},{"line_number":84,"context_line":"        { // Example of physical NICs (future support)"},{"line_number":85,"context_line":"            \"id\": \"phy0\","},{"line_number":86,"context_line":"            \"type\": \"phy\","},{"line_number":87,"context_line":"            \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\""},{"line_number":88,"context_line":"        },"}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_be22934f","line":85,"updated":"2014-07-07 23:28:22.000000000","message":"I actually only expected to see the type change, not the id. Is the id going to just be generated for the purposes of linking, er, links to bonded devices and networks? Since you had it as eth0 before, I thought this meant it was actually expecting to show up as eth0 inside the guest. If not, is cloud-init (or whatever) supposed to manage the phyX-\u003eethX itself by the mac address?","commit_id":"f25111388d2509a6220de77c2b8b775844f0cb44"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"66635ce79a4f3f93eef8d7c658f8f83e91c46894","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \"vif_id\": \"E1C90E9F-EAFC-4E2D-8EC9-58B91CEBB53D\""},{"line_number":83,"context_line":"        },"},{"line_number":84,"context_line":"        { // Example of physical NICs (future support)"},{"line_number":85,"context_line":"            \"id\": \"phy0\","},{"line_number":86,"context_line":"            \"type\": \"phy\","},{"line_number":87,"context_line":"            \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\""},{"line_number":88,"context_line":"        },"}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_c1220a51","line":85,"in_reply_to":"baada198_be22934f","updated":"2014-07-08 00:15:05.000000000","message":"I think it should be left up to the agent for naming of the devices. Even if we put it as eth0, it is totally possible it\u0027ll end up as something else to be consistent with the OS, like en1ps0 (I forget the actual name, but I\u0027ve seen more and more NIC lately with non-ethX names). I\u0027ll change it to what the names would be expected to be in the most generic case.\n\nI think the end goal should be something like \"The NICs with these MACs should be in bond0\", since device naming can change with different OSs.","commit_id":"f25111388d2509a6220de77c2b8b775844f0cb44"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"81dc57b55c0863ef5843895b170fde1d0d2ab621","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \"vif_id\": \"E1C90E9F-EAFC-4E2D-8EC9-58B91CEBB53D\""},{"line_number":83,"context_line":"        },"},{"line_number":84,"context_line":"        { // Example of physical NICs (future support)"},{"line_number":85,"context_line":"            \"id\": \"phy0\","},{"line_number":86,"context_line":"            \"type\": \"phy\","},{"line_number":87,"context_line":"            \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\""},{"line_number":88,"context_line":"        },"}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_f24c3aca","line":85,"in_reply_to":"baada198_c1220a51","updated":"2014-07-08 03:04:41.000000000","message":"Maybe \u0027id\u0027 should just be a uuid. Or maybe \u0027id\u0027 should be just called something like \u0027name\u0027 that could be given something descriptive that won\u0027t be confused with interface name.","commit_id":"f25111388d2509a6220de77c2b8b775844f0cb44"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"df7e1cbd38a84ccef27c257cefa83f1162b88679","unresolved":false,"context_lines":[{"line_number":160,"context_line":"available otherwise to a guest instance. In a locked down environment,"},{"line_number":161,"context_line":"a user may be able see more network details in the metadata service than they"},{"line_number":162,"context_line":"could otherwise discover. An example could be a hardened SELinux VM. A"},{"line_number":163,"context_line":"security note should be documented."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Notifications impact"},{"line_number":166,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_9eb6aff7","line":163,"updated":"2014-07-07 23:28:22.000000000","message":"Yeah, with selinux I think you could restrict access to netlink sockets to prevent a process from discovering routes and the like, but if you allow them to speak AF_INET, it\u0027s hard to prevent them from discovering networking metadata now.","commit_id":"f25111388d2509a6220de77c2b8b775844f0cb44"},{"author":{"_account_id":8745,"name":"Lars Kellogg-Stedman","email":"lars@redhat.com","username":"lars"},"change_message_id":"61497e6039a0c84530f78e2c35fef500b3344c13","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Currently the metadata service only contains minimal network information."},{"line_number":20,"context_line":"Like user_data and vendor_data, we should also provide network_data. Really"},{"line_number":21,"context_line":"we should provide all the information we can (from neutron) in both"},{"line_number":22,"context_line":"config drive and metadata service."}],"source_content_type":"text/x-rst","patch_set":12,"id":"baada198_a4b604f7","line":19,"updated":"2014-07-08 14:06:48.000000000","message":"This is a weak lead-in for the problem description, since it\u0027s not clear at this point in the document how containing minimal network information is a problem.  Isn\u0027t the problem description actually, \"it is not possible to obtain network interface configuration without using DHCP\"?","commit_id":"d97efa1b028d712c437323557442e34e23afac96"},{"author":{"_account_id":8745,"name":"Lars Kellogg-Stedman","email":"lars@redhat.com","username":"lars"},"change_message_id":"61497e6039a0c84530f78e2c35fef500b3344c13","unresolved":false,"context_lines":[{"line_number":70,"context_line":"Sample API for getting network information from metadata service"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"GET: http://169.254.169.254/openstack/latest/metadata/network_data"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"JSON Response::"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    {"}],"source_content_type":"text/x-rst","patch_set":12,"id":"baada198_e4e47c0e","line":73,"updated":"2014-07-08 14:06:48.000000000","message":"If this is going to match the existing API, it seems this should be http://169.254.169.254/openstack/latest/network_data.json.","commit_id":"d97efa1b028d712c437323557442e34e23afac96"},{"author":{"_account_id":8745,"name":"Lars Kellogg-Stedman","email":"lars@redhat.com","username":"lars"},"change_message_id":"61497e6039a0c84530f78e2c35fef500b3344c13","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    {"},{"line_number":77,"context_line":"    \"links\": ["},{"line_number":78,"context_line":"        { // Example of VIF"},{"line_number":79,"context_line":"            \"id\": \"eth2\","},{"line_number":80,"context_line":"            \"type\": \"vif\","},{"line_number":81,"context_line":"            \"ethernet_mac_address\": \"a0:36:9f:2c:e8:70\","},{"line_number":82,"context_line":"            \"vif_id\": \"E1C90E9F-EAFC-4E2D-8EC9-58B91CEBB53D\""}],"source_content_type":"text/x-rst","patch_set":12,"id":"baada198_a4ad249d","line":79,"updated":"2014-07-08 14:06:48.000000000","message":"Where does \"id\" come from?  Neutron doesn\u0027t know anything about interface names.  Or is this information about the *host*?  That seems like a bad idea to present to an instance.","commit_id":"d97efa1b028d712c437323557442e34e23afac96"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"a1ce43ba7e705956b02b3f2da47124ea19f9c3a9","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Currently, cloud-init takes the Debian-style interfaces file that is"},{"line_number":20,"context_line":"generated from a template and has to convert it to an interfaces file for"},{"line_number":21,"context_line":"other OSs such as RHEL or Windows. This becomes more and more challenging as"},{"line_number":22,"context_line":"network configurations get more complex."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Ironic is working with baremetal hardware. Their network configs might"},{"line_number":25,"context_line":"require more complex network configurations such as multiple VLANs over bonded"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_511d8b65","line":22,"updated":"2014-07-10 04:56:42.000000000","message":"Plus the interfaces file is itself sketchy.  It\u0027s not the finest of formats.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"a1ce43ba7e705956b02b3f2da47124ea19f9c3a9","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Ironic is working with baremetal hardware. Their network configs might"},{"line_number":25,"context_line":"require more complex network configurations such as multiple VLANs over bonded"},{"line_number":26,"context_line":"interfaces. Translating network templates to multiple OS\u0027s then becomes much"},{"line_number":27,"context_line":"more challenging than today. These aren\u0027t supported in Neutron as of today,"},{"line_number":28,"context_line":"but there are multiple proposed changes to add support. Using a flexible"},{"line_number":29,"context_line":"design will allow new network configurations much more easily. To create"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_b129878b","line":26,"updated":"2014-07-10 04:56:42.000000000","message":"You can and might reasonably want to bond VM interfaces too, don\u0027t limit your scope.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"b775a12c566fbe6fed87a875eba429cafdaa87d2","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Ironic is working with baremetal hardware. Their network configs might"},{"line_number":25,"context_line":"require more complex network configurations such as multiple VLANs over bonded"},{"line_number":26,"context_line":"interfaces. Translating network templates to multiple OS\u0027s then becomes much"},{"line_number":27,"context_line":"more challenging than today. These aren\u0027t supported in Neutron as of today,"},{"line_number":28,"context_line":"but there are multiple proposed changes to add support. Using a flexible"},{"line_number":29,"context_line":"design will allow new network configurations much more easily. To create"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_26de0340","line":26,"in_reply_to":"baada198_b129878b","updated":"2014-07-10 21:51:28.000000000","message":"Hrm, I must have accidentally deleted the bit about that.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"a1ce43ba7e705956b02b3f2da47124ea19f9c3a9","unresolved":false,"context_lines":[{"line_number":28,"context_line":"but there are multiple proposed changes to add support. Using a flexible"},{"line_number":29,"context_line":"design will allow new network configurations much more easily. To create"},{"line_number":30,"context_line":"these bonds today, assumptions have to be made about the interface names"},{"line_number":31,"context_line":"that are being bonded, which can change depending on the OS."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Alternate Use Cases:"},{"line_number":34,"context_line":"Consider a VM with the first interface configured by DHCP, and all other"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_f123ffa4","line":31,"updated":"2014-07-10 04:56:42.000000000","message":"Nice paragraph, shame you have \u0027for future expansion\u0027 in the format, to be honest.  Also, since you can\u0027t make an interface bond in Neutron (and it\u0027s not actually all that clear that it\u0027s Neutron\u0027s problem and not Nova\u0027s) you\u0027re a bit ahead of yourself with this.  Maybe limit the spec scope so that you can actually implement everything you describe and have a clear section outlying \u0027for future expansion\u0027?","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0f6eb4c337deaa39c042262965759ecfc0074614","unresolved":false,"context_lines":[{"line_number":28,"context_line":"but there are multiple proposed changes to add support. Using a flexible"},{"line_number":29,"context_line":"design will allow new network configurations much more easily. To create"},{"line_number":30,"context_line":"these bonds today, assumptions have to be made about the interface names"},{"line_number":31,"context_line":"that are being bonded, which can change depending on the OS."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Alternate Use Cases:"},{"line_number":34,"context_line":"Consider a VM with the first interface configured by DHCP, and all other"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_ea264515","line":31,"in_reply_to":"baada198_f123ffa4","updated":"2014-07-14 00:10:08.000000000","message":"I would suggest limiting the scope too. We don\u0027t know the future and how Neutron will model such configurations. Better limit ourselves to the known supported configurations.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"a1ce43ba7e705956b02b3f2da47124ea19f9c3a9","unresolved":false,"context_lines":[{"line_number":35,"context_line":"interfaces on private networks where the interfaces are statically configured,"},{"line_number":36,"context_line":"but you are not using config drive, just the metadata service, and not"},{"line_number":37,"context_line":"cheating by doing file injection, presenting the data in a guest agnostic"},{"line_number":38,"context_line":"format."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Setting up static routes without declaring a global route in the interfaces"},{"line_number":41,"context_line":"template."}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_d1099b2d","line":38,"updated":"2014-07-10 04:56:42.000000000","message":"Actually, you exclude config-drive from the scope, but this is wrong.  Both metadata server and config-drive should have this file if either does.\n\nDHCP: hmm.  Yes, you can say \u0027DHCP on this interface\u0027 but in practice I think you\u0027d just specify the address(es).  If the VM chooses to use DHCP and ignore this file that\u0027s its option.  Of course, if it\u0027s on the metadata server you end up in a chicken-and-egg situation in some circumstances where you don\u0027t get the interface address until the interface has an address so that you can fetch the interface addresses file, another reason for it being a config-drive thing too.  It\u0027s a common case to want to get a file like this precisely because your VM doesn\u0027t support DHCP for some reason.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"b775a12c566fbe6fed87a875eba429cafdaa87d2","unresolved":false,"context_lines":[{"line_number":35,"context_line":"interfaces on private networks where the interfaces are statically configured,"},{"line_number":36,"context_line":"but you are not using config drive, just the metadata service, and not"},{"line_number":37,"context_line":"cheating by doing file injection, presenting the data in a guest agnostic"},{"line_number":38,"context_line":"format."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Setting up static routes without declaring a global route in the interfaces"},{"line_number":41,"context_line":"template."}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_d90528c3","line":38,"in_reply_to":"baada198_d1099b2d","updated":"2014-07-10 21:51:28.000000000","message":"I definitely want it in config-drive too.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},"change_message_id":"8f06f9dc4f82a860881d3cdb21481a4ebdf0a28f","unresolved":false,"context_lines":[{"line_number":35,"context_line":"interfaces on private networks where the interfaces are statically configured,"},{"line_number":36,"context_line":"but you are not using config drive, just the metadata service, and not"},{"line_number":37,"context_line":"cheating by doing file injection, presenting the data in a guest agnostic"},{"line_number":38,"context_line":"format."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Setting up static routes without declaring a global route in the interfaces"},{"line_number":41,"context_line":"template."}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_de36ca02","line":38,"in_reply_to":"baada198_d1099b2d","updated":"2014-07-18 14:08:38.000000000","message":"definitely whatever inforation goes into the metadata service needs to go into the config drive also.\n\nconfig drive *will* be left out in the cold here though, as it can not respond to hotplugged network interfaces.  I wouldn\u0027t be totally opposed to the hypervisor updating the config drive on reboot, but really thats neither here nor there.  its not really a solution.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0f6eb4c337deaa39c042262965759ecfc0074614","unresolved":false,"context_lines":[{"line_number":35,"context_line":"interfaces on private networks where the interfaces are statically configured,"},{"line_number":36,"context_line":"but you are not using config drive, just the metadata service, and not"},{"line_number":37,"context_line":"cheating by doing file injection, presenting the data in a guest agnostic"},{"line_number":38,"context_line":"format."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Setting up static routes without declaring a global route in the interfaces"},{"line_number":41,"context_line":"template."}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_0a24590b","line":38,"in_reply_to":"baada198_d90528c3","updated":"2014-07-14 00:10:08.000000000","message":"Ditto.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},"change_message_id":"8f06f9dc4f82a860881d3cdb21481a4ebdf0a28f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* Create a network_data (like user_data and vendor_data already in the"},{"line_number":47,"context_line":"  metadata service) providing more detailed network info"},{"line_number":48,"context_line":"* A flexible JSON schema to deal with complex network layouts,"},{"line_number":49,"context_line":"  and which can be extended easily as Neutron supports more configurations"},{"line_number":50,"context_line":"* Information comes from current network_info for instance"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_7e8f7ecd","line":47,"updated":"2014-07-18 14:08:38.000000000","message":"Thoughts on \u0027network_data\u0027.\na.) it needs to be versioned.  Similar to the metadata service, it needs to have api-versioned contents. \nb.) based on \u0027a\u0027, I\u0027d just as soon put it under meta_data than vendor_data.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},"change_message_id":"8f06f9dc4f82a860881d3cdb21481a4ebdf0a28f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* Create a network_data (like user_data and vendor_data already in the"},{"line_number":47,"context_line":"  metadata service) providing more detailed network info"},{"line_number":48,"context_line":"* A flexible JSON schema to deal with complex network layouts,"},{"line_number":49,"context_line":"  and which can be extended easily as Neutron supports more configurations"},{"line_number":50,"context_line":"* Information comes from current network_info for instance"},{"line_number":51,"context_line":"* Some things like bonds won\u0027t be supported until Neutron supports them"},{"line_number":52,"context_line":"* We only really need concrete info: mac address, fixed IP address, subnet,"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_b974d09c","line":49,"updated":"2014-07-18 14:08:38.000000000","message":"One other thing that I think needs to be added is MTU.\nWe\u0027ve seen a lot of issues recently where MTU needs to be shrunk from the default 1500 due to neutron network layering, but there is no standard way other than dhcp to relay that information to the instance.  The result is that the instance has arbitrary network issues.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"a1ce43ba7e705956b02b3f2da47124ea19f9c3a9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"* Links should be split out separate from network information to make tiered"},{"line_number":55,"context_line":"  structures like bonds more easily implemented"},{"line_number":56,"context_line":"* Links can be VIFs, physical NICs, or groupings of Links, such as bonds"},{"line_number":57,"context_line":"* VLANs can be supported another type of Link"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Alternatives"},{"line_number":60,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_f63e95d9","line":57,"updated":"2014-07-10 04:56:42.000000000","message":"All good, but I suggest that you decide what you *will* do for version 1, what you think would be \u0027for future expansion, and spell out in some detail what v1 will have.  Without concrete details, who can say if your spec is any good?","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"b775a12c566fbe6fed87a875eba429cafdaa87d2","unresolved":false,"context_lines":[{"line_number":54,"context_line":"* Links should be split out separate from network information to make tiered"},{"line_number":55,"context_line":"  structures like bonds more easily implemented"},{"line_number":56,"context_line":"* Links can be VIFs, physical NICs, or groupings of Links, such as bonds"},{"line_number":57,"context_line":"* VLANs can be supported another type of Link"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Alternatives"},{"line_number":60,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_79f41ccf","line":57,"in_reply_to":"baada198_f63e95d9","updated":"2014-07-10 21:51:28.000000000","message":"Good point. I\u0027ll do that.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"a1ce43ba7e705956b02b3f2da47124ea19f9c3a9","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"GET: http://169.254.169.254/openstack/latest/metadata/network_data.json"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"JSON Response::"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    {"},{"line_number":79,"context_line":"    \"links\": ["}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_313577db","line":76,"updated":"2014-07-10 04:56:42.000000000","message":"Examples are great, but actual documentation of intent is also required, I think.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"b775a12c566fbe6fed87a875eba429cafdaa87d2","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"GET: http://169.254.169.254/openstack/latest/metadata/network_data.json"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"JSON Response::"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    {"},{"line_number":79,"context_line":"    \"links\": ["}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_392aa42c","line":76,"in_reply_to":"baada198_313577db","updated":"2014-07-10 21:51:28.000000000","message":"I can document out each bit. I was going to have to later anyway!","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"a1ce43ba7e705956b02b3f2da47124ea19f9c3a9","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            \"id\": \"interface2\", // Generic, generated ID"},{"line_number":82,"context_line":"            \"type\": \"vif\","},{"line_number":83,"context_line":"            \"ethernet_mac_address\": \"a0:36:9f:2c:e8:70\","},{"line_number":84,"context_line":"            \"vif_id\": \"E1C90E9F-EAFC-4E2D-8EC9-58B91CEBB53D\""},{"line_number":85,"context_line":"        },"},{"line_number":86,"context_line":"        { // Example of physical NICs (future support)"},{"line_number":87,"context_line":"            \"id\": \"interface0\","}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_d69fd101","line":84,"updated":"2014-07-10 04:56:42.000000000","message":"Please at least plan on there being an MTU element.  This is one place where I sincerely hope the world will catch up before you implement the spec.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"b775a12c566fbe6fed87a875eba429cafdaa87d2","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            \"id\": \"interface2\", // Generic, generated ID"},{"line_number":82,"context_line":"            \"type\": \"vif\","},{"line_number":83,"context_line":"            \"ethernet_mac_address\": \"a0:36:9f:2c:e8:70\","},{"line_number":84,"context_line":"            \"vif_id\": \"E1C90E9F-EAFC-4E2D-8EC9-58B91CEBB53D\""},{"line_number":85,"context_line":"        },"},{"line_number":86,"context_line":"        { // Example of physical NICs (future support)"},{"line_number":87,"context_line":"            \"id\": \"interface0\","}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_59203849","line":84,"in_reply_to":"baada198_d69fd101","updated":"2014-07-10 21:51:28.000000000","message":"+1","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"a1ce43ba7e705956b02b3f2da47124ea19f9c3a9","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            \"ethernet_mac_address\": \"a0:36:9f:2c:e8:81\""},{"line_number":95,"context_line":"        },"},{"line_number":96,"context_line":"        { // Bonding two NICs together (future support)"},{"line_number":97,"context_line":"            \"id\": \"bond0\","},{"line_number":98,"context_line":"            \"type\": \"bond\","},{"line_number":99,"context_line":"            \"bond_links\": ["},{"line_number":100,"context_line":"                \"interface0\","}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_b6989d1c","line":97,"updated":"2014-07-10 04:56:42.000000000","message":"I think it\u0027s questionable to include \u0027ID\u0027 in all of these JSON constructs.  You *could* include the port UUID, but it\u0027s not sensible to include a name - where does it come from?  Even within Linux, names are not consistent.  What you *do* know, at a minimum, is the ordering of hardware interfaces supplied to the machine.  There\u0027s not much else you can say.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"e4c257ceb810e7a261838570ec88d5eb8e6793fb","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            \"ethernet_mac_address\": \"a0:36:9f:2c:e8:81\""},{"line_number":95,"context_line":"        },"},{"line_number":96,"context_line":"        { // Bonding two NICs together (future support)"},{"line_number":97,"context_line":"            \"id\": \"bond0\","},{"line_number":98,"context_line":"            \"type\": \"bond\","},{"line_number":99,"context_line":"            \"bond_links\": ["},{"line_number":100,"context_line":"                \"interface0\","}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_9aca7e4d","line":97,"in_reply_to":"baada198_9c4b9e58","updated":"2014-07-13 06:04:32.000000000","message":"+1.  You can nest interface definitions in the bond, I guess.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"b775a12c566fbe6fed87a875eba429cafdaa87d2","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            \"ethernet_mac_address\": \"a0:36:9f:2c:e8:81\""},{"line_number":95,"context_line":"        },"},{"line_number":96,"context_line":"        { // Bonding two NICs together (future support)"},{"line_number":97,"context_line":"            \"id\": \"bond0\","},{"line_number":98,"context_line":"            \"type\": \"bond\","},{"line_number":99,"context_line":"            \"bond_links\": ["},{"line_number":100,"context_line":"                \"interface0\","}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_9c4b9e58","line":97,"in_reply_to":"baada198_b6989d1c","updated":"2014-07-10 21:51:28.000000000","message":"I\u0027m just using it as an opaque identifier to be able to put a VLAN over a bond or two interfaces into a bond, and might make it a randomly generated UUID. \n\nIt is conceivable you\u0027ll reuse one of the interface MACs for the MAC of the bond. So, sure, bonds could specify MAC addresses directly instead of by ID/UUID, but when we want to point VLANs at bonds, you\u0027ll end up with an ambiguous link pointer.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"a1ce43ba7e705956b02b3f2da47124ea19f9c3a9","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                \"interface0\","},{"line_number":101,"context_line":"                \"interface1\""},{"line_number":102,"context_line":"            ],"},{"line_number":103,"context_line":"            \"bond_mode\": \"802.1ad\""},{"line_number":104,"context_line":"        },"},{"line_number":105,"context_line":"        { // Overlaying a VLAN on a bond (future support)"},{"line_number":106,"context_line":"            \"id\": \"vlan0\","}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_167789d5","line":103,"updated":"2014-07-10 04:56:42.000000000","message":"Bond interfaces *need* a MAC, so that it\u0027s clear what MAC they use.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"b775a12c566fbe6fed87a875eba429cafdaa87d2","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                \"interface0\","},{"line_number":101,"context_line":"                \"interface1\""},{"line_number":102,"context_line":"            ],"},{"line_number":103,"context_line":"            \"bond_mode\": \"802.1ad\""},{"line_number":104,"context_line":"        },"},{"line_number":105,"context_line":"        { // Overlaying a VLAN on a bond (future support)"},{"line_number":106,"context_line":"            \"id\": \"vlan0\","}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_195b2088","line":103,"in_reply_to":"baada198_167789d5","updated":"2014-07-10 21:51:28.000000000","message":"+1","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"a1ce43ba7e705956b02b3f2da47124ea19f9c3a9","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            \"type\": \"ipv4\","},{"line_number":138,"context_line":"            \"link\": \"vlan0\","},{"line_number":139,"context_line":"            \"ip_address\": \"23.253.157.244\","},{"line_number":140,"context_line":"            \"netmask\": \"255.255.255.0\","},{"line_number":141,"context_line":"            \"dns_nameservers\": ["},{"line_number":142,"context_line":"                \"69.20.0.164\","},{"line_number":143,"context_line":"                \"69.20.0.196\""}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_d66d1106","line":140,"updated":"2014-07-10 04:56:42.000000000","message":"ipv6 ipv6 ipv6 - and you are quite likely to see multiple IPv6 entries, and (at least technically, if you\u0027re trying to be generic) you may also see more than one IPv4 address per interface.  (Or none.)\n\nI suggest you include the MAC as the MAC is actually the best way of pairing this with an interface.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"b775a12c566fbe6fed87a875eba429cafdaa87d2","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            \"type\": \"ipv4\","},{"line_number":138,"context_line":"            \"link\": \"vlan0\","},{"line_number":139,"context_line":"            \"ip_address\": \"23.253.157.244\","},{"line_number":140,"context_line":"            \"netmask\": \"255.255.255.0\","},{"line_number":141,"context_line":"            \"dns_nameservers\": ["},{"line_number":142,"context_line":"                \"69.20.0.164\","},{"line_number":143,"context_line":"                \"69.20.0.196\""}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_f2820151","line":140,"in_reply_to":"baada198_d66d1106","updated":"2014-07-10 21:51:28.000000000","message":"+1. I didn\u0027t add v6 to the spec but have it in my preliminary implementation. I\u0027ll add an example to make it clear.\n\nSee above for not using MAC as the link.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"a1ce43ba7e705956b02b3f2da47124ea19f9c3a9","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            ],"},{"line_number":152,"context_line":"            \"neutron_network_id\": \"62611D6F-66CB-4270-8B1F-503EF0DD4736\""},{"line_number":153,"context_line":"        }"},{"line_number":154,"context_line":"    ]"},{"line_number":155,"context_line":"    }"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_f6b9357a","line":154,"updated":"2014-07-10 04:56:42.000000000","message":"Routes are *not* interface specific when the detination is a nexthop, no matter what the interfaces file in Ubuntu might have you believe.  Also, multicast routes, in particular, can have a device as the direction, rather than a nexthop.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"e4c257ceb810e7a261838570ec88d5eb8e6793fb","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            ],"},{"line_number":152,"context_line":"            \"neutron_network_id\": \"62611D6F-66CB-4270-8B1F-503EF0DD4736\""},{"line_number":153,"context_line":"        }"},{"line_number":154,"context_line":"    ]"},{"line_number":155,"context_line":"    }"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_3a31725a","line":154,"in_reply_to":"baada198_3413820e","updated":"2014-07-13 06:04:32.000000000","message":"Routes are indeed on the net definition, but by the time the machine gets them then routes are pretty consistently:\n\n\u0027forward trafffic on this range to this address\u0027\n\n.. Now, the address is obviously reached by selecting a port and network to send over but the IP stack in the OS works that out.  They\u0027re not strictly tethered to one interface; it\u0027s more that there\u0027s an interface that will be selected, but the selection is something that happens regardless of whether you happen to put the route on an interface, and may or may not actually select that interface anyway.\n\nSorry, that may be a bit confusing, but the point is that unless you plan on taking the interface down and dropping routes that are bound to the interface (something I\u0027m not a massive fan of, routes will stop working anyway if they needed that interface up) then you can just list all your routes in a consolidated block at the end.  Issue would be how to make use of that in /etc/network/interfaces, because it likes to attach routes to interfaces specifically, but arguably that\u0027s a problem you can leave to the cloud-init people.\n\nMulticast routes (on Linux, where I\u0027ve had to add them in the past) tend to look like:\n\nroute add -net 224.0.0.0 dev eth1\n\n(i.e. an interface not a nexthop).  I don\u0027t know how they look when you start on with routers and all that magic, but I suspect that you find you need a multicast control plane daemon; I\u0027d skip that for now because it\u0027s a big step up from what works and Openstack doesn\u0027t have a multicast controlplane anyway, not at the moment.  Point is, though, they\u0027re an exception to the usual rule, where device routes are typically not needed because they\u0027re implied by assigning the device an address.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"b775a12c566fbe6fed87a875eba429cafdaa87d2","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            ],"},{"line_number":152,"context_line":"            \"neutron_network_id\": \"62611D6F-66CB-4270-8B1F-503EF0DD4736\""},{"line_number":153,"context_line":"        }"},{"line_number":154,"context_line":"    ]"},{"line_number":155,"context_line":"    }"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_3413820e","line":154,"in_reply_to":"baada198_f6b9357a","updated":"2014-07-10 21:51:28.000000000","message":"But they are a part of the network definition, right? This is a network definition that\u0027s attached to an interface, so multiple networks on a single interface could have different routes. \n\nSo for multicast routes, you\u0027d have something like {\"device\": \"some_device\", \"gateway\": \"23.253.157.1\"}?","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"a1ce43ba7e705956b02b3f2da47124ea19f9c3a9","unresolved":false,"context_lines":[{"line_number":162,"context_line":"available otherwise to a guest instance. In a locked down environment,"},{"line_number":163,"context_line":"a user may be able see more network details in the metadata service than they"},{"line_number":164,"context_line":"could otherwise discover. An example could be a hardened SELinux VM. A"},{"line_number":165,"context_line":"security note should be documented."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Notifications impact"},{"line_number":168,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_b150a70b","line":165,"updated":"2014-07-10 04:56:42.000000000","message":"Or an audit conducted before implementation.  If you don\u0027t supply port IDs you\u0027re not leaking information, I think.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"b775a12c566fbe6fed87a875eba429cafdaa87d2","unresolved":false,"context_lines":[{"line_number":162,"context_line":"available otherwise to a guest instance. In a locked down environment,"},{"line_number":163,"context_line":"a user may be able see more network details in the metadata service than they"},{"line_number":164,"context_line":"could otherwise discover. An example could be a hardened SELinux VM. A"},{"line_number":165,"context_line":"security note should be documented."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Notifications impact"},{"line_number":168,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_92bf05fc","line":165,"in_reply_to":"baada198_b150a70b","updated":"2014-07-10 21:51:28.000000000","message":"I\u0027ll add a security impact flag on the implementation.","commit_id":"12a7f713831ebdb7d247cdd82e3d561d7ac11cec"}],"specs/kilo/approved/metadata-service-network-info.rst":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"11eae9f55d55389b4fc3e400966af280008304bb","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                {"},{"line_number":151,"context_line":"                    \"network\": \"10.0.0.0\","},{"line_number":152,"context_line":"                    \"netmask\": \"255.0.0.0\","},{"line_number":153,"context_line":"                    \"gateway\": \"11.0.0.1\""},{"line_number":154,"context_line":"                },"},{"line_number":155,"context_line":"                {"},{"line_number":156,"context_line":"                    \"network\": \"0.0.0.0\","}],"source_content_type":"text/x-rst","patch_set":16,"id":"5a890539_4d34794a","line":153,"updated":"2014-11-18 17:12:08.000000000","message":"I know this is just an example, but gateways on multiple interfaces are generally a no-no, as this would end up splitting all default traffic toward both devices.","commit_id":"3e0aa7247906503c1afa4752dcfe3799bc617aa8"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"578a23d5a448676e39992864993016f34e9810d5","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                {"},{"line_number":151,"context_line":"                    \"network\": \"10.0.0.0\","},{"line_number":152,"context_line":"                    \"netmask\": \"255.0.0.0\","},{"line_number":153,"context_line":"                    \"gateway\": \"11.0.0.1\""},{"line_number":154,"context_line":"                },"},{"line_number":155,"context_line":"                {"},{"line_number":156,"context_line":"                    \"network\": \"0.0.0.0\","}],"source_content_type":"text/x-rst","patch_set":16,"id":"3a961159_f3be8dfe","line":153,"in_reply_to":"5a890539_4d34794a","updated":"2014-12-09 22:47:49.000000000","message":"This is a route for 10/8, not a default gw. I\u0027m wrong.","commit_id":"3e0aa7247906503c1afa4752dcfe3799bc617aa8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7d41288799cddcc00cb45993d1818423f153f45d","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        }"},{"line_number":212,"context_line":"    ]"},{"line_number":213,"context_line":"    }"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"The same JSON will be stored in the configdrive under"},{"line_number":217,"context_line":"openstack/$VERSION/network_data.json"}],"source_content_type":"text/x-rst","patch_set":16,"id":"9aa7fdbe_f03a19cc","line":214,"updated":"2014-10-21 17:37:49.000000000","message":"Where is the $VERSION stored in the metadata JSON response or URI above? In other words, how are you proposing to have a versioned network_data schema object? You said above it will be versioned, so I\u0027m wondering where the version of the schema will be indicated by the client... :)","commit_id":"3e0aa7247906503c1afa4752dcfe3799bc617aa8"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"48aed51df1135d85952fd1122509a99ec537a9e4","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        }"},{"line_number":212,"context_line":"    ]"},{"line_number":213,"context_line":"    }"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"The same JSON will be stored in the configdrive under"},{"line_number":217,"context_line":"openstack/$VERSION/network_data.json"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5a890539_815c0fef","line":214,"in_reply_to":"9aa7fdbe_f03a19cc","updated":"2014-11-12 22:11:51.000000000","message":"Ahh, in the URI above it\u0027s \"latest\", which I assume is a link to a specific version like \"2012-08-10\" in the metadata service. Is it sufficient to version it like that, or would a version string in the actual JSON be more appropriate?","commit_id":"3e0aa7247906503c1afa4752dcfe3799bc617aa8"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"11eae9f55d55389b4fc3e400966af280008304bb","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        }"},{"line_number":212,"context_line":"    ]"},{"line_number":213,"context_line":"    }"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"The same JSON will be stored in the configdrive under"},{"line_number":217,"context_line":"openstack/$VERSION/network_data.json"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5a890539_ad9ebd52","line":214,"in_reply_to":"9aa7fdbe_f03a19cc","updated":"2014-11-18 17:12:08.000000000","message":"I envisioned it as being versioned the same as all ConfigDrive / Metadata service data is today: with release dates fitting the schema change. This is what cloud-init and other programs that will consume this data will be expecting.","commit_id":"3e0aa7247906503c1afa4752dcfe3799bc617aa8"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"11eae9f55d55389b4fc3e400966af280008304bb","unresolved":false,"context_lines":[{"line_number":266,"context_line":"  JoshNang"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"Other contributors:"},{"line_number":269,"context_line":"  claxton"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"Work Items"},{"line_number":272,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5a890539_2de1edd0","line":269,"updated":"2014-11-18 17:12:08.000000000","message":"Feel free to mark me as an other contributor; as I\u0027ll likely be doing the cloud-init implementation side of this (even though that\u0027s not OpenStack)","commit_id":"3e0aa7247906503c1afa4752dcfe3799bc617aa8"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"30cbdba60686ae7ccc5fa17d2d91716adb74c424","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Project Priority"},{"line_number":53,"context_line":"----------------"},{"line_number":54,"context_line":"This, combined with Neutron support for bonding, will increase the fault"},{"line_number":55,"context_line":"tolerance of Ironic nodes. In the case of Triple O, that would also increase"},{"line_number":56,"context_line":"the fault tolerance of the hardware running Nova in the overcloud."},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"3a961159_7ab3d74c","line":54,"updated":"2014-12-12 21:36:30.000000000","message":"This doesn\u0027t fall under any Kilo priorities so this section should say \u0027None, but this ....\u0027","commit_id":"bbf0cbc127e3dce1bb07f718b8cc15b8610eab04"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"d57ed76114513d73f9c2408a5c879a63c6d1ddc1","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Project Priority"},{"line_number":53,"context_line":"----------------"},{"line_number":54,"context_line":"This, combined with Neutron support for bonding, will increase the fault"},{"line_number":55,"context_line":"tolerance of Ironic nodes. In the case of Triple O, that would also increase"},{"line_number":56,"context_line":"the fault tolerance of the hardware running Nova in the overcloud."},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"3a961159_35cc0089","line":54,"in_reply_to":"3a961159_7ab3d74c","updated":"2014-12-12 22:15:52.000000000","message":"Hmm, not sure where I got fault tolerant as being in the priority list. I\u0027ll update.","commit_id":"bbf0cbc127e3dce1bb07f718b8cc15b8610eab04"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"30cbdba60686ae7ccc5fa17d2d91716adb74c424","unresolved":false,"context_lines":[{"line_number":76,"context_line":"  particular network or interface. The primary use will be DNS servers."},{"line_number":77,"context_line":"* In the future, bonds can be supported as another type of Link, pointing at"},{"line_number":78,"context_line":"  multiple other Links"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Alternatives"},{"line_number":81,"context_line":"------------"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"3a961159_7ac2f753","line":79,"updated":"2014-12-12 21:36:30.000000000","message":"Instead of creating network_data.json from information nova has, can neutron be responsible for all of network_data.json? Because IMHO the less network logic in nova the better.","commit_id":"bbf0cbc127e3dce1bb07f718b8cc15b8610eab04"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"dec6ce0b10c1b623b89441a1eee61e72b9bd2643","unresolved":false,"context_lines":[{"line_number":76,"context_line":"  particular network or interface. The primary use will be DNS servers."},{"line_number":77,"context_line":"* In the future, bonds can be supported as another type of Link, pointing at"},{"line_number":78,"context_line":"  multiple other Links"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Alternatives"},{"line_number":81,"context_line":"------------"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"3a961159_4d9904c3","line":79,"in_reply_to":"3a961159_751a08c7","updated":"2014-12-13 00:04:35.000000000","message":"sounds reasonable, since you are going to revise this spec anyway why not mention this as an alternative.","commit_id":"bbf0cbc127e3dce1bb07f718b8cc15b8610eab04"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"d57ed76114513d73f9c2408a5c879a63c6d1ddc1","unresolved":false,"context_lines":[{"line_number":76,"context_line":"  particular network or interface. The primary use will be DNS servers."},{"line_number":77,"context_line":"* In the future, bonds can be supported as another type of Link, pointing at"},{"line_number":78,"context_line":"  multiple other Links"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Alternatives"},{"line_number":81,"context_line":"------------"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"3a961159_751a08c7","line":79,"in_reply_to":"3a961159_7ac2f753","updated":"2014-12-12 22:15:52.000000000","message":"I think it makes sense to keep it in Nova. I totally agree Nova shouldn\u0027t be in the business of network logic wherever possible. I don\u0027t think this really adds network logic though: Nova has the list of ports attached to an instance, and is basically translating those port objects into JSON so it can be consumed by the instance. When I first implemented it to see how easy it would be, it was about 100 lines + tests.","commit_id":"bbf0cbc127e3dce1bb07f718b8cc15b8610eab04"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"26acea53ad71f5cbd280b573ea361e8372ddeab8","unresolved":false,"context_lines":[{"line_number":81,"context_line":"------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* Neutron could create the network_data.json and have Nova simply download"},{"line_number":84,"context_line":"  the file and add it to the metadata service and configdrive."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Data model impact"},{"line_number":87,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3a961159_d3bef1ff","line":84,"updated":"2014-12-17 23:06:17.000000000","message":"Nit: When suggesting you add this as an alternative I also meant you should explain why you didn\u0027t choose it as well.","commit_id":"c43781f4fe40dffeef31012397363d2a29c21028"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"702ecf291063fbb309240a1a8a74c4ee2e3a2977","unresolved":false,"context_lines":[{"line_number":81,"context_line":"------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* Neutron could create the network_data.json and have Nova simply download"},{"line_number":84,"context_line":"  the file and add it to the metadata service and configdrive."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Data model impact"},{"line_number":87,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3a961159_53b921ca","line":84,"in_reply_to":"3a961159_d3bef1ff","updated":"2014-12-17 23:12:19.000000000","message":"(copying my previous comment, should have added it to the spec, sorry) I think it makes sense to keep it (the logic) in Nova. I totally agree Nova shouldn\u0027t be in the business of network logic wherever possible. I don\u0027t think this really adds network logic though: Nova has the list of ports attached to an instance, and is basically translating those port objects into JSON so it can be consumed by the instance. When I first implemented it to see how easy it would be, it was about 100 lines + tests.","commit_id":"c43781f4fe40dffeef31012397363d2a29c21028"}]}
