)]}'
{"specs/train/port-binding-extended-information.rst":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":14,"context_line":"knowledge of the neutron core plugin or ML2 driver would be useful to"},{"line_number":15,"context_line":"facilitate a more robust handling of guest networking."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"For example, in Icehouse, a external event mechanism was introduced to allow"},{"line_number":18,"context_line":"neutron to notify Nova of network changes and VIF plugging. As the occasion on"},{"line_number":19,"context_line":"which these events are emitted is dependent on the driver that bound the port"},{"line_number":20,"context_line":"and Nova does not have knowledge of that. Therefore, Nova cannot rely on the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_38dc4073","line":17,"range":{"start_line":17,"start_character":26,"end_line":17,"end_character":27},"updated":"2019-03-21 20:12:45.000000000","message":"s/an","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":14,"context_line":"knowledge of the neutron core plugin or ML2 driver would be useful to"},{"line_number":15,"context_line":"facilitate a more robust handling of guest networking."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"For example, in Icehouse, a external event mechanism was introduced to allow"},{"line_number":18,"context_line":"neutron to notify Nova of network changes and VIF plugging. As the occasion on"},{"line_number":19,"context_line":"which these events are emitted is dependent on the driver that bound the port"},{"line_number":20,"context_line":"and Nova does not have knowledge of that. Therefore, Nova cannot rely on the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_312f3a40","line":17,"range":{"start_line":17,"start_character":26,"end_line":17,"end_character":27},"in_reply_to":"5fc1f717_38dc4073","updated":"2019-03-25 15:10:20.000000000","message":"Done","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":15,"context_line":"facilitate a more robust handling of guest networking."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"For example, in Icehouse, a external event mechanism was introduced to allow"},{"line_number":18,"context_line":"neutron to notify Nova of network changes and VIF plugging. As the occasion on"},{"line_number":19,"context_line":"which these events are emitted is dependent on the driver that bound the port"},{"line_number":20,"context_line":"and Nova does not have knowledge of that. Therefore, Nova cannot rely on the"},{"line_number":21,"context_line":"event to synchronize the operation between Nova and neutron, which has lead to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_384a0027","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":7},"updated":"2019-03-21 20:12:45.000000000","message":"Sometimes neutron is lowercase, but Nova is always capitalized, should just be consistent.","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":15,"context_line":"facilitate a more robust handling of guest networking."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"For example, in Icehouse, a external event mechanism was introduced to allow"},{"line_number":18,"context_line":"neutron to notify Nova of network changes and VIF plugging. As the occasion on"},{"line_number":19,"context_line":"which these events are emitted is dependent on the driver that bound the port"},{"line_number":20,"context_line":"and Nova does not have knowledge of that. Therefore, Nova cannot rely on the"},{"line_number":21,"context_line":"event to synchronize the operation between Nova and neutron, which has lead to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_9811b407","line":18,"range":{"start_line":18,"start_character":67,"end_line":18,"end_character":78},"updated":"2019-03-21 20:12:45.000000000","message":"s/order in","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":15,"context_line":"facilitate a more robust handling of guest networking."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"For example, in Icehouse, a external event mechanism was introduced to allow"},{"line_number":18,"context_line":"neutron to notify Nova of network changes and VIF plugging. As the occasion on"},{"line_number":19,"context_line":"which these events are emitted is dependent on the driver that bound the port"},{"line_number":20,"context_line":"and Nova does not have knowledge of that. Therefore, Nova cannot rely on the"},{"line_number":21,"context_line":"event to synchronize the operation between Nova and neutron, which has lead to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_9115cee7","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":7},"in_reply_to":"5fc1f717_384a0027","updated":"2019-03-25 15:10:20.000000000","message":"Sorry, this is not intentional.","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"672bd4d0996409acf03715a325acda50ea1ad974","unresolved":false,"context_lines":[{"line_number":15,"context_line":"facilitate a more robust handling of guest networking."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"For example, in Icehouse, a external event mechanism was introduced to allow"},{"line_number":18,"context_line":"neutron to notify Nova of network changes and VIF plugging. As the occasion on"},{"line_number":19,"context_line":"which these events are emitted is dependent on the driver that bound the port"},{"line_number":20,"context_line":"and Nova does not have knowledge of that. Therefore, Nova cannot rely on the"},{"line_number":21,"context_line":"event to synchronize the operation between Nova and neutron, which has lead to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_1276e9a5","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":7},"in_reply_to":"5fc1f717_384a0027","updated":"2019-03-22 19:05:16.000000000","message":"ya sorry i wrote this up in etherpad rather quickly but did not have time to clean it up.\n\nrodolfo has kindly submited it for me as i need to write the nova spec to consume this but its still needs to be tieded up.\n\nill fix this up if rodolfo doesnt get to it before i do next week\n\nneutron being lower case was not intentional :)","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":15,"context_line":"facilitate a more robust handling of guest networking."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"For example, in Icehouse, a external event mechanism was introduced to allow"},{"line_number":18,"context_line":"neutron to notify Nova of network changes and VIF plugging. As the occasion on"},{"line_number":19,"context_line":"which these events are emitted is dependent on the driver that bound the port"},{"line_number":20,"context_line":"and Nova does not have knowledge of that. Therefore, Nova cannot rely on the"},{"line_number":21,"context_line":"event to synchronize the operation between Nova and neutron, which has lead to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_f1d9b255","line":18,"range":{"start_line":18,"start_character":67,"end_line":18,"end_character":78},"in_reply_to":"5fc1f717_9811b407","updated":"2019-03-25 15:10:20.000000000","message":"Done","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":17,"context_line":"For example, in Icehouse, a external event mechanism was introduced to allow"},{"line_number":18,"context_line":"neutron to notify Nova of network changes and VIF plugging. As the occasion on"},{"line_number":19,"context_line":"which these events are emitted is dependent on the driver that bound the port"},{"line_number":20,"context_line":"and Nova does not have knowledge of that. Therefore, Nova cannot rely on the"},{"line_number":21,"context_line":"event to synchronize the operation between Nova and neutron, which has lead to"},{"line_number":22,"context_line":"a race condition in the past."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_f801d8b0","line":20,"range":{"start_line":20,"start_character":40,"end_line":20,"end_character":58},"updated":"2019-03-21 20:12:45.000000000","message":"s/, it","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":17,"context_line":"For example, in Icehouse, a external event mechanism was introduced to allow"},{"line_number":18,"context_line":"neutron to notify Nova of network changes and VIF plugging. As the occasion on"},{"line_number":19,"context_line":"which these events are emitted is dependent on the driver that bound the port"},{"line_number":20,"context_line":"and Nova does not have knowledge of that. Therefore, Nova cannot rely on the"},{"line_number":21,"context_line":"event to synchronize the operation between Nova and neutron, which has lead to"},{"line_number":22,"context_line":"a race condition in the past."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_71edc2ee","line":20,"range":{"start_line":20,"start_character":40,"end_line":20,"end_character":58},"in_reply_to":"5fc1f717_f801d8b0","updated":"2019-03-25 15:10:20.000000000","message":"Done","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":18,"context_line":"neutron to notify Nova of network changes and VIF plugging. As the occasion on"},{"line_number":19,"context_line":"which these events are emitted is dependent on the driver that bound the port"},{"line_number":20,"context_line":"and Nova does not have knowledge of that. Therefore, Nova cannot rely on the"},{"line_number":21,"context_line":"event to synchronize the operation between Nova and neutron, which has lead to"},{"line_number":22,"context_line":"a race condition in the past."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This spec aims to enhance the port binding API via the introduction of a new"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_78272866","line":21,"range":{"start_line":21,"start_character":43,"end_line":21,"end_character":47},"updated":"2019-03-21 20:12:45.000000000","message":"/itself\n\nWas just trying to combine these two sentences together to make things read better.","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":18,"context_line":"neutron to notify Nova of network changes and VIF plugging. As the occasion on"},{"line_number":19,"context_line":"which these events are emitted is dependent on the driver that bound the port"},{"line_number":20,"context_line":"and Nova does not have knowledge of that. Therefore, Nova cannot rely on the"},{"line_number":21,"context_line":"event to synchronize the operation between Nova and neutron, which has lead to"},{"line_number":22,"context_line":"a race condition in the past."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This spec aims to enhance the port binding API via the introduction of a new"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_71c6226b","line":21,"range":{"start_line":21,"start_character":43,"end_line":21,"end_character":47},"in_reply_to":"5fc1f717_78272866","updated":"2019-03-25 15:10:20.000000000","message":"Thanks!","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"013707f5b0a20eccf2509f334f9a7945be7774be","unresolved":false,"context_lines":[{"line_number":42,"context_line":"use the ML2 framework at all."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"While there are some ways for Nova to guess what backend may have bound the"},{"line_number":45,"context_line":"Neuton port to VIF_TYPE\u003d”ovs”, it cannot determine for certain if ML2/ovs or"},{"line_number":46,"context_line":"ML2/odl bound the port. As a result of this, in combination with the fact that"},{"line_number":47,"context_line":"the network-vif-plugged and network-vif-unplugged events are sent based on"},{"line_number":48,"context_line":"different criteria for different network backend, this prevents the reliable"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_3860a9a5","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":6},"updated":"2019-03-22 17:34:41.000000000","message":"Neutron","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":42,"context_line":"use the ML2 framework at all."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"While there are some ways for Nova to guess what backend may have bound the"},{"line_number":45,"context_line":"Neuton port to VIF_TYPE\u003d”ovs”, it cannot determine for certain if ML2/ovs or"},{"line_number":46,"context_line":"ML2/odl bound the port. As a result of this, in combination with the fact that"},{"line_number":47,"context_line":"the network-vif-plugged and network-vif-unplugged events are sent based on"},{"line_number":48,"context_line":"different criteria for different network backend, this prevents the reliable"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_91c38e57","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":6},"in_reply_to":"5fc1f717_3860a9a5","updated":"2019-03-25 15:10:20.000000000","message":"Neuton is a new project... 8)","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":45,"context_line":"Neuton port to VIF_TYPE\u003d”ovs”, it cannot determine for certain if ML2/ovs or"},{"line_number":46,"context_line":"ML2/odl bound the port. As a result of this, in combination with the fact that"},{"line_number":47,"context_line":"the network-vif-plugged and network-vif-unplugged events are sent based on"},{"line_number":48,"context_line":"different criteria for different network backend, this prevents the reliable"},{"line_number":49,"context_line":"use of network-vif-* events during instance lifecycle operation; e.g.: live"},{"line_number":50,"context_line":"migration."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_18c4e45e","line":48,"range":{"start_line":48,"start_character":41,"end_line":48,"end_character":48},"updated":"2019-03-21 20:12:45.000000000","message":"s/backends","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":45,"context_line":"Neuton port to VIF_TYPE\u003d”ovs”, it cannot determine for certain if ML2/ovs or"},{"line_number":46,"context_line":"ML2/odl bound the port. As a result of this, in combination with the fact that"},{"line_number":47,"context_line":"the network-vif-plugged and network-vif-unplugged events are sent based on"},{"line_number":48,"context_line":"different criteria for different network backend, this prevents the reliable"},{"line_number":49,"context_line":"use of network-vif-* events during instance lifecycle operation; e.g.: live"},{"line_number":50,"context_line":"migration."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_b43f9823","line":48,"range":{"start_line":48,"start_character":41,"end_line":48,"end_character":48},"in_reply_to":"5fc1f717_18c4e45e","updated":"2019-03-25 15:10:20.000000000","message":"Done","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":49,"context_line":"use of network-vif-* events during instance lifecycle operation; e.g.: live"},{"line_number":50,"context_line":"migration."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As a concrete example, ML2/ovs emits a network-vif-plugged event after the ovs"},{"line_number":53,"context_line":"agent has assigned the local VLAN to the OVS interface and has applied the"},{"line_number":54,"context_line":"appropriate QoS and security group actions. ML2/odl used to emit the"},{"line_number":55,"context_line":"network-vif-plugged event when the port was bound in the API before any"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_18994478","line":52,"range":{"start_line":52,"start_character":75,"end_line":52,"end_character":78},"updated":"2019-03-21 20:12:45.000000000","message":"same nit as for neutron, sometimes ovs others OVS","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":49,"context_line":"use of network-vif-* events during instance lifecycle operation; e.g.: live"},{"line_number":50,"context_line":"migration."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As a concrete example, ML2/ovs emits a network-vif-plugged event after the ovs"},{"line_number":53,"context_line":"agent has assigned the local VLAN to the OVS interface and has applied the"},{"line_number":54,"context_line":"appropriate QoS and security group actions. ML2/odl used to emit the"},{"line_number":55,"context_line":"network-vif-plugged event when the port was bound in the API before any"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_5420b4ac","line":52,"range":{"start_line":52,"start_character":75,"end_line":52,"end_character":78},"in_reply_to":"5fc1f717_18994478","updated":"2019-03-25 15:10:20.000000000","message":"Done","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"If we consider the case of a hard reboot, ML2/ovs will emit both a"},{"line_number":60,"context_line":"network-vif-unplugged event followed by a network-vif-plugged event, as we"},{"line_number":61,"context_line":"remove and readd the OVS port to the integration bridge. Since the neutron OVS"},{"line_number":62,"context_line":"L2 agent uses the ovsdb monitor to track port addition and removal, it is able"},{"line_number":63,"context_line":"to reliably track port operation and process them. The Linux Brige L2 agent"},{"line_number":64,"context_line":"however uses a polling loop to query for the attached ports to a bridge. As a"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_d88c1c37","line":61,"range":{"start_line":61,"start_character":11,"end_line":61,"end_character":16},"updated":"2019-03-21 20:12:45.000000000","message":"s/re-add (readd just looks weird to us English types :)","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"If we consider the case of a hard reboot, ML2/ovs will emit both a"},{"line_number":60,"context_line":"network-vif-unplugged event followed by a network-vif-plugged event, as we"},{"line_number":61,"context_line":"remove and readd the OVS port to the integration bridge. Since the neutron OVS"},{"line_number":62,"context_line":"L2 agent uses the ovsdb monitor to track port addition and removal, it is able"},{"line_number":63,"context_line":"to reliably track port operation and process them. The Linux Brige L2 agent"},{"line_number":64,"context_line":"however uses a polling loop to query for the attached ports to a bridge. As a"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_daae0b80","line":61,"range":{"start_line":61,"start_character":11,"end_line":61,"end_character":16},"in_reply_to":"5fc1f717_d88c1c37","updated":"2019-03-25 15:10:20.000000000","message":"Done","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"672bd4d0996409acf03715a325acda50ea1ad974","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"If we consider the case of a hard reboot, ML2/ovs will emit both a"},{"line_number":60,"context_line":"network-vif-unplugged event followed by a network-vif-plugged event, as we"},{"line_number":61,"context_line":"remove and readd the OVS port to the integration bridge. Since the neutron OVS"},{"line_number":62,"context_line":"L2 agent uses the ovsdb monitor to track port addition and removal, it is able"},{"line_number":63,"context_line":"to reliably track port operation and process them. The Linux Brige L2 agent"},{"line_number":64,"context_line":"however uses a polling loop to query for the attached ports to a bridge. As a"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_d22141a1","line":61,"range":{"start_line":61,"start_character":11,"end_line":61,"end_character":16},"in_reply_to":"5fc1f717_d88c1c37","updated":"2019-03-22 19:05:16.000000000","message":"yes it does but i think that was my doing :)","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":64,"context_line":"however uses a polling loop to query for the attached ports to a bridge. As a"},{"line_number":65,"context_line":"result if you are using ML2/linuxbridge and an instance is hard rebooted, if"},{"line_number":66,"context_line":"the port removal and addition occurs within the period of one polling interval"},{"line_number":67,"context_line":"then the Linux Bridge l2 agent will not detect the removal and re addition and"},{"line_number":68,"context_line":"will not emit network-vif-* events."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Network connectivity"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_f8ab1872","line":67,"range":{"start_line":67,"start_character":22,"end_line":67,"end_character":24},"updated":"2019-03-21 20:12:45.000000000","message":"s/L2","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":64,"context_line":"however uses a polling loop to query for the attached ports to a bridge. As a"},{"line_number":65,"context_line":"result if you are using ML2/linuxbridge and an instance is hard rebooted, if"},{"line_number":66,"context_line":"the port removal and addition occurs within the period of one polling interval"},{"line_number":67,"context_line":"then the Linux Bridge l2 agent will not detect the removal and re addition and"},{"line_number":68,"context_line":"will not emit network-vif-* events."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Network connectivity"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_fab3c7e7","line":67,"range":{"start_line":67,"start_character":22,"end_line":67,"end_character":24},"in_reply_to":"5fc1f717_f8ab1872","updated":"2019-03-25 15:10:20.000000000","message":"Done","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":71,"context_line":"--------------------"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"`Boot a VM with an unaddressed port`_ blueprint seeks to enable the use of"},{"line_number":74,"context_line":"instances with ip_allocation\u003dnone."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"To do this safely and guarantee the guest will have network connectivity, Nova"},{"line_number":77,"context_line":"must ensure that the network backend that bound the port provides L2"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_d8df3c0a","line":74,"updated":"2019-03-21 20:12:45.000000000","message":"Can you maybe add a short sentence on what ip_allocation\u003dnone represents?","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":71,"context_line":"--------------------"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"`Boot a VM with an unaddressed port`_ blueprint seeks to enable the use of"},{"line_number":74,"context_line":"instances with ip_allocation\u003dnone."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"To do this safely and guarantee the guest will have network connectivity, Nova"},{"line_number":77,"context_line":"must ensure that the network backend that bound the port provides L2"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_da37ebfd","line":74,"in_reply_to":"5fc1f717_9212d957","updated":"2019-03-25 15:10:20.000000000","message":"This is part of the previous BP [1] to support this feature. As Sean said, this parameter was introduced \"to distinguish the unaddressed port case from the deferred IP allocation case where routed networks is involved\" (from the commit introducing this parameter).\n\n[1] https://blueprints.launchpad.net/neutron/+spec/vm-without-l3-address","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":71,"context_line":"--------------------"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"`Boot a VM with an unaddressed port`_ blueprint seeks to enable the use of"},{"line_number":74,"context_line":"instances with ip_allocation\u003dnone."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"To do this safely and guarantee the guest will have network connectivity, Nova"},{"line_number":77,"context_line":"must ensure that the network backend that bound the port provides L2"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_5ac21b36","line":74,"in_reply_to":"5fc1f717_d8df3c0a","updated":"2019-03-25 15:10:20.000000000","message":"Done","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"672bd4d0996409acf03715a325acda50ea1ad974","unresolved":false,"context_lines":[{"line_number":71,"context_line":"--------------------"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"`Boot a VM with an unaddressed port`_ blueprint seeks to enable the use of"},{"line_number":74,"context_line":"instances with ip_allocation\u003dnone."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"To do this safely and guarantee the guest will have network connectivity, Nova"},{"line_number":77,"context_line":"must ensure that the network backend that bound the port provides L2"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_9212d957","line":74,"in_reply_to":"5fc1f717_d8df3c0a","updated":"2019-03-22 19:05:16.000000000","message":"its define in the ip_allocation extention\n\nhttps://github.com/openstack/neutron-lib/blob/56033ba643812a30577f6ab17648806c2ee494ba/neutron_lib/api/definitions/ip_allocation.py\n\nwhich was intoduced to enable l3 routed networks.\n\nhttps://github.com/openstack/nova-specs/blob/33ca21c026a3ed4bb3605b0ec80183576eac37b3/specs/newton/implemented/neutron-routed-networks.rst\n\nip_allocation\u003dnone define that the port will\nnever be assigned an ip.\n\nwe can reference the spec but i dont know if there there is any api documentaiton for this.","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"To do this safely and guarantee the guest will have network connectivity, Nova"},{"line_number":77,"context_line":"must ensure that the network backend that bound the port provides L2"},{"line_number":78,"context_line":"connectivity"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"For example, in a mixed Calico/SR-IOV deployment, it is valid to use"},{"line_number":81,"context_line":"ip_allocation\u003dnone for any port that is bound by the SR-IOV ML2 driver, but not"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_38cbe053","line":78,"updated":"2019-03-21 20:12:45.000000000","message":"missing period","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"To do this safely and guarantee the guest will have network connectivity, Nova"},{"line_number":77,"context_line":"must ensure that the network backend that bound the port provides L2"},{"line_number":78,"context_line":"connectivity"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"For example, in a mixed Calico/SR-IOV deployment, it is valid to use"},{"line_number":81,"context_line":"ip_allocation\u003dnone for any port that is bound by the SR-IOV ML2 driver, but not"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_a5e76012","line":78,"in_reply_to":"5fc1f717_38cbe053","updated":"2019-03-25 15:10:20.000000000","message":"Done","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Proposed Change"},{"line_number":98,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"To address the 3 problems statement above, the following additions to the"},{"line_number":101,"context_line":"``binding:vif_details`` dictionary in the port object are proposed:"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* A new ``connectivity`` field will be introduced with allowed values of \"l2\","}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_18d5c4e5","line":100,"range":{"start_line":100,"start_character":26,"end_line":100,"end_character":35},"updated":"2019-03-21 20:12:45.000000000","message":"s/stated","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Proposed Change"},{"line_number":98,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"To address the 3 problems statement above, the following additions to the"},{"line_number":101,"context_line":"``binding:vif_details`` dictionary in the port object are proposed:"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* A new ``connectivity`` field will be introduced with allowed values of \"l2\","}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_85ea64d5","line":100,"range":{"start_line":100,"start_character":26,"end_line":100,"end_character":35},"in_reply_to":"5fc1f717_18d5c4e5","updated":"2019-03-25 15:10:20.000000000","message":"Done","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":101,"context_line":"``binding:vif_details`` dictionary in the port object are proposed:"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* A new ``connectivity`` field will be introduced with allowed values of \"l2\","},{"line_number":104,"context_line":"  \"l3\", \"legacy\". The \"legacy\" ``connectivity`` value will be the default and"},{"line_number":105,"context_line":"  is a sentinel to indicate the driver does not support this extension yet and"},{"line_number":106,"context_line":"  no connectivity info is available. When this value is set Nova or other"},{"line_number":107,"context_line":"  consumer, should ignore it and proceed."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_9802146f","line":104,"range":{"start_line":104,"start_character":6,"end_line":104,"end_character":7},"updated":"2019-03-21 20:12:45.000000000","message":"s/ and","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":101,"context_line":"``binding:vif_details`` dictionary in the port object are proposed:"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* A new ``connectivity`` field will be introduced with allowed values of \"l2\","},{"line_number":104,"context_line":"  \"l3\", \"legacy\". The \"legacy\" ``connectivity`` value will be the default and"},{"line_number":105,"context_line":"  is a sentinel to indicate the driver does not support this extension yet and"},{"line_number":106,"context_line":"  no connectivity info is available. When this value is set Nova or other"},{"line_number":107,"context_line":"  consumer, should ignore it and proceed."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_25bdb0d7","line":104,"range":{"start_line":104,"start_character":6,"end_line":104,"end_character":7},"in_reply_to":"5fc1f717_9802146f","updated":"2019-03-25 15:10:20.000000000","message":"Done","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":103,"context_line":"* A new ``connectivity`` field will be introduced with allowed values of \"l2\","},{"line_number":104,"context_line":"  \"l3\", \"legacy\". The \"legacy\" ``connectivity`` value will be the default and"},{"line_number":105,"context_line":"  is a sentinel to indicate the driver does not support this extension yet and"},{"line_number":106,"context_line":"  no connectivity info is available. When this value is set Nova or other"},{"line_number":107,"context_line":"  consumer, should ignore it and proceed."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* A new ``bound_drivers`` field will be added that is a dict of binding_level"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_d82dfcfd","line":106,"range":{"start_line":106,"start_character":65,"end_line":106,"end_character":67},"updated":"2019-03-21 20:12:45.000000000","message":"s/and","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"06595540422e1c34d2ccc745e5cab4e74bd56846","unresolved":false,"context_lines":[{"line_number":103,"context_line":"* A new ``connectivity`` field will be introduced with allowed values of \"l2\","},{"line_number":104,"context_line":"  \"l3\", \"legacy\". The \"legacy\" ``connectivity`` value will be the default and"},{"line_number":105,"context_line":"  is a sentinel to indicate the driver does not support this extension yet and"},{"line_number":106,"context_line":"  no connectivity info is available. When this value is set Nova or other"},{"line_number":107,"context_line":"  consumer, should ignore it and proceed."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* A new ``bound_drivers`` field will be added that is a dict of binding_level"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_4f100001","line":106,"range":{"start_line":106,"start_character":65,"end_line":106,"end_character":67},"in_reply_to":"5fc1f717_85982475","updated":"2019-03-26 09:12:59.000000000","message":"it can be yes depending on context.\n\nin this case both \"and\" and \"or\" can be used\nwhich we more often write as and/or.","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":103,"context_line":"* A new ``connectivity`` field will be introduced with allowed values of \"l2\","},{"line_number":104,"context_line":"  \"l3\", \"legacy\". The \"legacy\" ``connectivity`` value will be the default and"},{"line_number":105,"context_line":"  is a sentinel to indicate the driver does not support this extension yet and"},{"line_number":106,"context_line":"  no connectivity info is available. When this value is set Nova or other"},{"line_number":107,"context_line":"  consumer, should ignore it and proceed."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* A new ``bound_drivers`` field will be added that is a dict of binding_level"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_85982475","line":106,"range":{"start_line":106,"start_character":65,"end_line":106,"end_character":67},"in_reply_to":"5fc1f717_d82dfcfd","updated":"2019-03-25 15:10:20.000000000","message":"I though \"or\" was inclusive in English.","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":104,"context_line":"  \"l3\", \"legacy\". The \"legacy\" ``connectivity`` value will be the default and"},{"line_number":105,"context_line":"  is a sentinel to indicate the driver does not support this extension yet and"},{"line_number":106,"context_line":"  no connectivity info is available. When this value is set Nova or other"},{"line_number":107,"context_line":"  consumer, should ignore it and proceed."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* A new ``bound_drivers`` field will be added that is a dict of binding_level"},{"line_number":110,"context_line":"  to driver name. The driver name will be the stevadore entry point name for"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_9837744e","line":107,"range":{"start_line":107,"start_character":2,"end_line":107,"end_character":11},"updated":"2019-03-21 20:12:45.000000000","message":"s/consumers (no comma after)","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":104,"context_line":"  \"l3\", \"legacy\". The \"legacy\" ``connectivity`` value will be the default and"},{"line_number":105,"context_line":"  is a sentinel to indicate the driver does not support this extension yet and"},{"line_number":106,"context_line":"  no connectivity info is available. When this value is set Nova or other"},{"line_number":107,"context_line":"  consumer, should ignore it and proceed."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* A new ``bound_drivers`` field will be added that is a dict of binding_level"},{"line_number":110,"context_line":"  to driver name. The driver name will be the stevadore entry point name for"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_4590fc4a","line":107,"range":{"start_line":107,"start_character":2,"end_line":107,"end_character":11},"in_reply_to":"5fc1f717_9837744e","updated":"2019-03-25 15:10:20.000000000","message":"Done","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":106,"context_line":"  no connectivity info is available. When this value is set Nova or other"},{"line_number":107,"context_line":"  consumer, should ignore it and proceed."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* A new ``bound_drivers`` field will be added that is a dict of binding_level"},{"line_number":110,"context_line":"  to driver name. The driver name will be the stevadore entry point name for"},{"line_number":111,"context_line":"  the driver which is already used in config files and intended to be stable."},{"line_number":112,"context_line":"  A POC is available in https://review.openstack.org/#/c/635083."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_38276015","line":109,"range":{"start_line":109,"start_character":56,"end_line":109,"end_character":60},"updated":"2019-03-21 20:12:45.000000000","message":"s/dictionary\n\nAlso, should it be \u0027dictionary mapping\u0027 ?","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":106,"context_line":"  no connectivity info is available. When this value is set Nova or other"},{"line_number":107,"context_line":"  consumer, should ignore it and proceed."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* A new ``bound_drivers`` field will be added that is a dict of binding_level"},{"line_number":110,"context_line":"  to driver name. The driver name will be the stevadore entry point name for"},{"line_number":111,"context_line":"  the driver which is already used in config files and intended to be stable."},{"line_number":112,"context_line":"  A POC is available in https://review.openstack.org/#/c/635083."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_e58008fa","line":109,"range":{"start_line":109,"start_character":56,"end_line":109,"end_character":60},"in_reply_to":"5fc1f717_38276015","updated":"2019-03-25 15:10:20.000000000","message":"Done","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":107,"context_line":"  consumer, should ignore it and proceed."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* A new ``bound_drivers`` field will be added that is a dict of binding_level"},{"line_number":110,"context_line":"  to driver name. The driver name will be the stevadore entry point name for"},{"line_number":111,"context_line":"  the driver which is already used in config files and intended to be stable."},{"line_number":112,"context_line":"  A POC is available in https://review.openstack.org/#/c/635083."},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_f84798bb","line":110,"range":{"start_line":110,"start_character":46,"end_line":110,"end_character":55},"updated":"2019-03-21 20:12:45.000000000","message":"s/stevedore","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":107,"context_line":"  consumer, should ignore it and proceed."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* A new ``bound_drivers`` field will be added that is a dict of binding_level"},{"line_number":110,"context_line":"  to driver name. The driver name will be the stevadore entry point name for"},{"line_number":111,"context_line":"  the driver which is already used in config files and intended to be stable."},{"line_number":112,"context_line":"  A POC is available in https://review.openstack.org/#/c/635083."},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_85710447","line":110,"range":{"start_line":110,"start_character":46,"end_line":110,"end_character":55},"in_reply_to":"5fc1f717_f84798bb","updated":"2019-03-25 15:10:20.000000000","message":"Done","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":114,"context_line":"* A new ``network_events`` field will be added that is a dict of list of stings"},{"line_number":115,"context_line":"  field. This dict will map network-* event names to a list of strings"},{"line_number":116,"context_line":"  representing when the driver that bound the port binding emits the event."},{"line_number":117,"context_line":"  Optionally this could be a dict of dict of list of stings field it we want to"},{"line_number":118,"context_line":"  add an additional layer of nesting to allow recording when each binding level"},{"line_number":119,"context_line":"  with emit events."},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_b861103c","line":117,"range":{"start_line":117,"start_character":53,"end_line":117,"end_character":59},"updated":"2019-03-21 20:12:45.000000000","message":"/strings","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":114,"context_line":"* A new ``network_events`` field will be added that is a dict of list of stings"},{"line_number":115,"context_line":"  field. This dict will map network-* event names to a list of strings"},{"line_number":116,"context_line":"  representing when the driver that bound the port binding emits the event."},{"line_number":117,"context_line":"  Optionally this could be a dict of dict of list of stings field it we want to"},{"line_number":118,"context_line":"  add an additional layer of nesting to allow recording when each binding level"},{"line_number":119,"context_line":"  with emit events."},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_58502c5f","line":117,"range":{"start_line":117,"start_character":66,"end_line":117,"end_character":68},"updated":"2019-03-21 20:12:45.000000000","message":"s/if","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":114,"context_line":"* A new ``network_events`` field will be added that is a dict of list of stings"},{"line_number":115,"context_line":"  field. This dict will map network-* event names to a list of strings"},{"line_number":116,"context_line":"  representing when the driver that bound the port binding emits the event."},{"line_number":117,"context_line":"  Optionally this could be a dict of dict of list of stings field it we want to"},{"line_number":118,"context_line":"  add an additional layer of nesting to allow recording when each binding level"},{"line_number":119,"context_line":"  with emit events."},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_1871440d","line":117,"range":{"start_line":117,"start_character":29,"end_line":117,"end_character":44},"updated":"2019-03-21 20:12:45.000000000","message":"this is a little confusing to understand","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"672bd4d0996409acf03715a325acda50ea1ad974","unresolved":false,"context_lines":[{"line_number":114,"context_line":"* A new ``network_events`` field will be added that is a dict of list of stings"},{"line_number":115,"context_line":"  field. This dict will map network-* event names to a list of strings"},{"line_number":116,"context_line":"  representing when the driver that bound the port binding emits the event."},{"line_number":117,"context_line":"  Optionally this could be a dict of dict of list of stings field it we want to"},{"line_number":118,"context_line":"  add an additional layer of nesting to allow recording when each binding level"},{"line_number":119,"context_line":"  with emit events."},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_9eee65b2","line":117,"range":{"start_line":117,"start_character":29,"end_line":117,"end_character":44},"in_reply_to":"5fc1f717_1871440d","updated":"2019-03-22 19:05:16.000000000","message":"i was trying to say it would look like this\n\n{ \"\u003clevel\u003e\":{\u003cevent name\u003e: [\u003cwhen its sent\u003e]}}\n\nalthough in not sure the same event will ever be sent at two different theims so this can likely be flattened.\n\na dict of strings is likely enough\n{\u003cevent name\u003e: \u003cwhen the event is sent\u003e}\n\nthat is all nova really needs to know.","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae28916b0cd1f0c0024a7d8cb03d03ff3eaec605","unresolved":false,"context_lines":[{"line_number":114,"context_line":"* A new ``network_events`` field will be added that is a dict of list of stings"},{"line_number":115,"context_line":"  field. This dict will map network-* event names to a list of strings"},{"line_number":116,"context_line":"  representing when the driver that bound the port binding emits the event."},{"line_number":117,"context_line":"  Optionally this could be a dict of dict of list of stings field it we want to"},{"line_number":118,"context_line":"  add an additional layer of nesting to allow recording when each binding level"},{"line_number":119,"context_line":"  with emit events."},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_8da84620","line":117,"range":{"start_line":117,"start_character":29,"end_line":117,"end_character":44},"in_reply_to":"5fc1f717_9eee65b2","updated":"2019-03-25 15:10:20.000000000","message":"I think we can flat this dict to a event_name:timestamp mapping.","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b93d9bab86c6a9421891a118b95a9c71efef1d65","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  field. This dict will map network-* event names to a list of strings"},{"line_number":116,"context_line":"  representing when the driver that bound the port binding emits the event."},{"line_number":117,"context_line":"  Optionally this could be a dict of dict of list of stings field it we want to"},{"line_number":118,"context_line":"  add an additional layer of nesting to allow recording when each binding level"},{"line_number":119,"context_line":"  with emit events."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"To enable declaration of the ``connectivity``, a new property will be added to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_f84eb8bf","line":119,"range":{"start_line":118,"start_character":66,"end_line":119,"end_character":11},"updated":"2019-03-21 20:12:45.000000000","message":"?","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"8a7c3dde193ea2de7d611053c789de16d8235ac4","unresolved":false,"context_lines":[{"line_number":106,"context_line":"  no connectivity info is available. When this value is set Nova or other"},{"line_number":107,"context_line":"  consumer, should ignore it and proceed."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* A new ``bound_drivers`` field will be added that is a dict of binding_level"},{"line_number":110,"context_line":"  to driver name. The driver name will be the stevadore entry point name for"},{"line_number":111,"context_line":"  the driver which is already used in config files and intended to be stable."},{"line_number":112,"context_line":"  A POC is available in https://review.openstack.org/#/c/635083."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"* A new ``network_events`` field will be added that is a dict of list of stings"},{"line_number":115,"context_line":"  field. This dict will map network-* event names to a list of strings"},{"line_number":116,"context_line":"  representing when the driver that bound the port binding emits the event."},{"line_number":117,"context_line":"  Optionally this could be a dict of dict of list of stings field it we want to"},{"line_number":118,"context_line":"  add an additional layer of nesting to allow recording when each binding level"},{"line_number":119,"context_line":"  with emit events."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"To enable declaration of the ``connectivity``, a new property will be added to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_c8d07c22","line":119,"range":{"start_line":109,"start_character":0,"end_line":119,"end_character":19},"updated":"2019-03-25 15:23:42.000000000","message":"Maybe I\u0027m misunderstanding something but it seems to me the bound_drivers and network_events fields are contrary to the principle of https://en.wikipedia.org/wiki/Information_hiding. I don\u0027t think we should expose neutron\u0027s choice of drivers to nova (actually to anyone outside of neutron) because that leads to an explosion of complexity (I guess in nova in this case or maybe os-vif).\n\nI consider the problems described here valid, but I don\u0027t think this is a desirable solution. If the drivers don\u0027t send their vif-plugged events at the same time (at the same step in completing their port configurations, hopefully at the very end of that) I would consider that a bug of each driver. We can and should define when the event of a certain type should be sent (in terms of packet forwarding behavior observable from a guest). If a driver sends the event at a different time that can be fixed as a regular bug.\n\nThe whole point of neutron driver architecture is to *hide* the choice of an implementor driver from other components, so they can go and do their job uniformly independent of which driver was chosen.\n\nPlease imagine the complexity of handling these differently timed vif-plugged events on the receiving end of the notification. I don\u0027t think anybody would want to handle that if that can be avoided.","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"d943330894cdcd50ecb88c4b72ae45fa0dc8a6a0","unresolved":false,"context_lines":[{"line_number":106,"context_line":"  no connectivity info is available. When this value is set Nova or other"},{"line_number":107,"context_line":"  consumer, should ignore it and proceed."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* A new ``bound_drivers`` field will be added that is a dict of binding_level"},{"line_number":110,"context_line":"  to driver name. The driver name will be the stevadore entry point name for"},{"line_number":111,"context_line":"  the driver which is already used in config files and intended to be stable."},{"line_number":112,"context_line":"  A POC is available in https://review.openstack.org/#/c/635083."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"* A new ``network_events`` field will be added that is a dict of list of stings"},{"line_number":115,"context_line":"  field. This dict will map network-* event names to a list of strings"},{"line_number":116,"context_line":"  representing when the driver that bound the port binding emits the event."},{"line_number":117,"context_line":"  Optionally this could be a dict of dict of list of stings field it we want to"},{"line_number":118,"context_line":"  add an additional layer of nesting to allow recording when each binding level"},{"line_number":119,"context_line":"  with emit events."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"To enable declaration of the ``connectivity``, a new property will be added to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_492e9b8c","line":119,"range":{"start_line":109,"start_character":0,"end_line":119,"end_character":19},"in_reply_to":"5fc1f717_4f0a4020","updated":"2019-03-27 14:04:56.000000000","message":"Sorry for the slow response.\n\nI see your point of not being able to do the exact same thing in different drivers. So I understand we must disclose more information than today to solve the problems stemming from this. However I still think the principle of information hiding applies. It tells us to minimize the amount of information disclosed - disclose only that much that\u0027s just enough for nova to act differenlty for the different needs.\n\nI understand that:\n* some drivers may not be able to send vif_plugged events at all\n* some (polling) drivers may miss sending events for some re-plugs\n* some (polling) drivers may send events delayed\n\nI also understand that some drivers send an event after port binding and when no vif_plugged event can be sent this information is useful to nova. However calling a vif_plugged event \u0027vif_plugged\u0027 that\u0027s too early is basically a lie.\n\nI\u0027m not sure I see solutions but it still concerns me that exposing all driver choices is too much information and will create unwanted dependencies on drivers on the receiving side.\n\nWho will use this information? Nova? Or nova blindly passes it to os-vif and only os-vif uses it?\n\nWouldn\u0027t it be better if we tried to make vif_types more granular (but still not as granular as drivers)?\n\nShould we describe the differences in driver behavior abstractly in terms of behavior and not by exposing the driver\u0027s name/id?\n\nAlso what concrete problems do you want to solve as a follow up to this? I guess you want to eliminate the isolate config option, right? And the l2/l3 capability for the unaddressed port, right? Anything else I\u0027m not seeing yet?\n\nI see how the 2nd and 3rd problem can be solved by exposing all this new information, but I don\u0027t see how the 1st problem (unreliable network events) can be solved. If nova gets a vif_plugged too early (all the subtypes before backend-port-configured), what can nova do about it?","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"06595540422e1c34d2ccc745e5cab4e74bd56846","unresolved":false,"context_lines":[{"line_number":106,"context_line":"  no connectivity info is available. When this value is set Nova or other"},{"line_number":107,"context_line":"  consumer, should ignore it and proceed."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* A new ``bound_drivers`` field will be added that is a dict of binding_level"},{"line_number":110,"context_line":"  to driver name. The driver name will be the stevadore entry point name for"},{"line_number":111,"context_line":"  the driver which is already used in config files and intended to be stable."},{"line_number":112,"context_line":"  A POC is available in https://review.openstack.org/#/c/635083."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"* A new ``network_events`` field will be added that is a dict of list of stings"},{"line_number":115,"context_line":"  field. This dict will map network-* event names to a list of strings"},{"line_number":116,"context_line":"  representing when the driver that bound the port binding emits the event."},{"line_number":117,"context_line":"  Optionally this could be a dict of dict of list of stings field it we want to"},{"line_number":118,"context_line":"  add an additional layer of nesting to allow recording when each binding level"},{"line_number":119,"context_line":"  with emit events."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"To enable declaration of the ``connectivity``, a new property will be added to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_4f0a4020","line":119,"range":{"start_line":109,"start_character":0,"end_line":119,"end_character":19},"in_reply_to":"5fc1f717_c8d07c22","updated":"2019-03-26 09:12:59.000000000","message":"you raise a valid concurn and this si why we did not expose this infomation originally but from my perspect i think the lack of this infomation has hurt us significantly more then \nwe have gained from infomation hiding.\n\nnot being able to tell the difference between ml2/ovs and \nml2/odl has made fixing security bugs like https://bugs.launchpad.net/neutron/+bug/1734320\nsignificantly harder.\n\nas a partial fix for that bug i had to intoduce a new config option in os-vif to control enabling vif isolation as i cannot detect if the isolation will break the neutron backend\nhttps://github.com/openstack/os-vif/blob/master/vif_plug_ovs/ovs.py#L69-L85\n\ni even left a todo to convert it over to dynmically enable it in the future assuming this mechanisum would be added\nhttps://github.com/openstack/os-vif/blob/master/vif_plug_ovs/ovs.py#L155-L159\n\nthe reason that the different ml2 dirvers emit the events at different times is that different network backend cannot guraentee that they can support sending them a the same time.\n\nfor ml2/linuxbridge it has a polling based implmenation.\nwe may be able to convert it to inoify based directly monitoring of sysfs but at present it cannot guarentee that it can send vif plugged events on a hard reboot.\n\n\nfor ml2/odl odl did not provide a mechanism receive an event when the backend actully wired up the port so one hand to be added to odl and a the ml2 driver had to be modifed to listen on a websocket for the event from odl that took almost 2 years to get implemented.\n\nfor nova to be able to rely on the events we either need all ml2 drivers including out of tree drivers to support them or we need it to be declared in which case we can take the info on face value and operate based on the info provided.\n\n\nwe already have some hack where we need this info to make things work and using vendor/backend specific keys.\nlike the VIF_DETAILS_VHOSTUSER_OVS_PLUG and VIF_DETAILS_VHOSTUSER_FP_PLUG values.\n\nhttps://github.com/openstack/nova/blob/master/nova/network/neutronv2/api.py#L2875-L2881\n\nthese values are used to tell nova that this vhost-user port was bould by the ml2/ovs or networking-6wind\u0027s ml2 driver\nand therefor we need to call the vendor specific os-vif plugin to plug the port or before os-vif call the vendor specific funciton in nova.\n\nim not propose we remove those flags as part of this spec but we could one we have this info available.","commit_id":"b64f28590bc29c52edaa7f771bd045b732df2b99"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fe308d46f953a1c2e7e3e8a43cf1822d01cca5e9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"For example, in Icehouse, an external event mechanism was introduced to allow"},{"line_number":18,"context_line":"Neutron to notify Nova of network changes and VIF plugging. As the order in"},{"line_number":19,"context_line":"which these events are emitted is dependent on the driver that bound the port"},{"line_number":20,"context_line":"and Nova does not have knowledge of that, it cannot rely on the event to"},{"line_number":21,"context_line":"synchronize the operation between itself and Neutron, which has lead to a race"},{"line_number":22,"context_line":"condition in the past."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_86f552cd","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":40},"updated":"2019-03-27 14:04:48.000000000","message":"I think os-vif was created in the first place to remove the network backend related code from Nova. So I really like to reintroduce network backend related information handling to Nova.","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"be78a670d3588119b18fd2870638a709fe933482","unresolved":false,"context_lines":[{"line_number":17,"context_line":"For example, in Icehouse, an external event mechanism was introduced to allow"},{"line_number":18,"context_line":"Neutron to notify Nova of network changes and VIF plugging. As the order in"},{"line_number":19,"context_line":"which these events are emitted is dependent on the driver that bound the port"},{"line_number":20,"context_line":"and Nova does not have knowledge of that, it cannot rely on the event to"},{"line_number":21,"context_line":"synchronize the operation between itself and Neutron, which has lead to a race"},{"line_number":22,"context_line":"condition in the past."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_923eec88","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":40},"in_reply_to":"5fc1f717_86f552cd","updated":"2019-03-27 18:42:26.000000000","message":"nova only really role will be to pass the info to os-vif in most cases. when we created os-vif we also had planed for neutron to send os-vif objects to nova so we could remove the \nos_vif_util.py file \n\nhttps://github.com/openstack/nova/blob/master/nova/network/os_vif_util.py\n\nbut since we have never done that we still need to have backend specifc code.\n\nos-vif also was only intended to remove the vif pluggin aspec the hypervior configuration e.g. libvirt xml generation remains novas responciblity. this is mainly driven by the vif_type set by neutron which is just to lookup a function and call it so there is little business logic in nova related to this.","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fe308d46f953a1c2e7e3e8a43cf1822d01cca5e9","unresolved":false,"context_lines":[{"line_number":66,"context_line":"the port removal and addition occurs within the period of one polling interval"},{"line_number":67,"context_line":"then the Linux Bridge L2 agent will not detect the removal and re addition and"},{"line_number":68,"context_line":"will not emit network-vif-* events."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Network connectivity"},{"line_number":71,"context_line":"--------------------"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_e6bf765e","line":69,"updated":"2019-03-27 14:04:48.000000000","message":"Is my understanding correct? \nWe have a network-vif-plugged event interface that has defined in a way that nova (or os-vif) expects that the notification is sent when the vif is ready to carry traffic. However some backends cannot support this interface, e.g. they cannot send the event at the correct time.","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"be78a670d3588119b18fd2870638a709fe933482","unresolved":false,"context_lines":[{"line_number":66,"context_line":"the port removal and addition occurs within the period of one polling interval"},{"line_number":67,"context_line":"then the Linux Bridge L2 agent will not detect the removal and re addition and"},{"line_number":68,"context_line":"will not emit network-vif-* events."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Network connectivity"},{"line_number":71,"context_line":"--------------------"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_d215549d","line":69,"in_reply_to":"5fc1f717_e6bf765e","updated":"2019-03-27 18:42:26.000000000","message":"correct more or less. \nthe netwrok events were introduce in icehouse to remove the race between vms booting, the dhcp server in the guest requesting an ip and neutron wiring up the backend network.\n\nthe event solved the problem for spawning a new instance\nbut it does not solve it for Reboot or live migration and it may or may not work for interface attach.","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fe308d46f953a1c2e7e3e8a43cf1822d01cca5e9","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"To do this safely and guarantee the guest will have network connectivity, Nova"},{"line_number":80,"context_line":"must ensure that the network backend that bound the port provides L2"},{"line_number":81,"context_line":"connectivity."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"For example, in a mixed Calico/SR-IOV deployment, it is valid to use"},{"line_number":84,"context_line":"ip_allocation\u003dnone for any port that is bound by the SR-IOV ML2 driver, but not"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_4679aac2","line":81,"updated":"2019-03-27 14:04:48.000000000","message":"What is the problem here? Does nova wait for the network-vif-plugged event to make sure that the vif provides L2 connectivity?","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"be78a670d3588119b18fd2870638a709fe933482","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"To do this safely and guarantee the guest will have network connectivity, Nova"},{"line_number":80,"context_line":"must ensure that the network backend that bound the port provides L2"},{"line_number":81,"context_line":"connectivity."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"For example, in a mixed Calico/SR-IOV deployment, it is valid to use"},{"line_number":84,"context_line":"ip_allocation\u003dnone for any port that is bound by the SR-IOV ML2 driver, but not"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_92ceec2a","line":81,"in_reply_to":"5fc1f717_4679aac2","updated":"2019-03-27 18:42:26.000000000","message":"on boot nova wait for the even to ensure the port has connectivty in general.\n\nbut for calico the only connetivity that backend provide to a guest is l3 connectivity. as such we cannot spawn a vm with out an ip on a network backend that only provide ip based connectiy as that will result in an instance with no network connectivity.\n\nthe alternitve way to do this is to make the calico ml2 driver fail to bind a port with ip_alloction\u003dnone.\n\nthis woudl remove the need to check for that on the nova side\nbut every other ml2 dirver that does provide l2 connectivity woudl also need to make that same check.\n\nas long as we can prevent vm that requested a neutron port spawnign without network connectivity then im fine with that.\n\noriginally i only had the boudn driver filed and network events filed in  mind and added connectivty as  a clean way to guard againt the connectivity issue but we could do that in neutron.","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fe308d46f953a1c2e7e3e8a43cf1822d01cca5e9","unresolved":false,"context_lines":[{"line_number":92,"context_line":"differentiate between VIF_TYPE\u003d”ovs” that is bound by ML2/odl or ML2/ovs it"},{"line_number":93,"context_line":"cannot automatically instruct os-vif to enable or disable VIF isolation for"},{"line_number":94,"context_line":"ML2/ovs hosts. If the ML2 driver(s) that bound the port are recorded in the"},{"line_number":95,"context_line":"port binding details, Nova and os-vif can use that information to more"},{"line_number":96,"context_line":"intelligently enable backend specific code paths without requiring additional"},{"line_number":97,"context_line":"network backend specific config options."},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_662626d1","line":95,"range":{"start_line":95,"start_character":22,"end_line":95,"end_character":37},"updated":"2019-03-27 14:04:48.000000000","message":"Could we make a solution where only os-vif depend on this information?","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"be78a670d3588119b18fd2870638a709fe933482","unresolved":false,"context_lines":[{"line_number":92,"context_line":"differentiate between VIF_TYPE\u003d”ovs” that is bound by ML2/odl or ML2/ovs it"},{"line_number":93,"context_line":"cannot automatically instruct os-vif to enable or disable VIF isolation for"},{"line_number":94,"context_line":"ML2/ovs hosts. If the ML2 driver(s) that bound the port are recorded in the"},{"line_number":95,"context_line":"port binding details, Nova and os-vif can use that information to more"},{"line_number":96,"context_line":"intelligently enable backend specific code paths without requiring additional"},{"line_number":97,"context_line":"network backend specific config options."},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_92382cee","line":95,"range":{"start_line":95,"start_character":22,"end_line":95,"end_character":37},"in_reply_to":"5fc1f717_662626d1","updated":"2019-03-27 18:42:26.000000000","message":"the bound_drivers field will basically only be used by os-vif\nnova only really need this info to pass it to os-vif.\n\nwe could perhaps clean up some of the logic here\nhttps://github.com/openstack/nova/blob/master/nova/network/neutronv2/api.py#L2855-L2907\nbut that is not required\n\nthe netwrok event are used by the virt drivers and this cannot be delegated to os-vif to take care of.\nmy intent with the netwrok event change is that nova will not need to reference any specific neutron backend and can instead check the embedded information to determine if it\ncan wait for the event or not.\n\ne.g. nova would check the port info on reboot to determin if it can wiat for events or not but would not need to know if its linux bridge or ovs just that the event will be sent or not.","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"59819730f7609b36f689eb15922092cd17c8e9aa","unresolved":false,"context_lines":[{"line_number":92,"context_line":"differentiate between VIF_TYPE\u003d”ovs” that is bound by ML2/odl or ML2/ovs it"},{"line_number":93,"context_line":"cannot automatically instruct os-vif to enable or disable VIF isolation for"},{"line_number":94,"context_line":"ML2/ovs hosts. If the ML2 driver(s) that bound the port are recorded in the"},{"line_number":95,"context_line":"port binding details, Nova and os-vif can use that information to more"},{"line_number":96,"context_line":"intelligently enable backend specific code paths without requiring additional"},{"line_number":97,"context_line":"network backend specific config options."},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_13e734af","line":95,"range":{"start_line":95,"start_character":22,"end_line":95,"end_character":37},"in_reply_to":"5fc1f717_92382cee","updated":"2019-03-29 15:12:41.000000000","message":"OK, that works for me if nova only depends on the some new field that describes if network-vif-plugged event can be expected or not.","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"20109ad193c979231d5fcca3fb28f6948338aa06","unresolved":false,"context_lines":[{"line_number":97,"context_line":"network backend specific config options."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Proposed Change"},{"line_number":101,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"To address the 3 problems stated above, the following additions to the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_ad5cd97c","line":100,"range":{"start_line":100,"start_character":0,"end_line":100,"end_character":15},"updated":"2019-03-28 09:44:45.000000000","message":"by the way im trying to solve 3 different but related problems here in one go.\n\ni am happy to simply say we will resolve each of them seperatly.\n\nthe calico connectivity issue as i mentioned yesterday could be addressed in the networking-calico ml2 driver.\n\n\nthe os-vif security issue which propmeted the inclution of the bound drivers field is today \"fixed\" by the operator  setting the config value to enable vif isolation. for backwards compatiablity we had to default to insecure to not break all non ml2/ovs neutron backends that manage ovs like ovn, odl and onos. i dont like that we cant default to secure because we dont have the info we need but thats besides the point.\n\ni do not know of another way to fix the network events issue beyond telling nova when the event will be sent unless we somehow figure our how to make it work consitently for all possible neutron backend and make it a hard requirement that all driver implment it constently going forword. we still would not be able to depend on them in train but we might be able to depend on the in U.\n\nthat said i have tried to expose the minimum info needed for this problem\n\ni personally would prefer to work on addressing some of the network aware scheduling goals i set out in queens\nhttps://etherpad.openstack.org/p/placement-nova-neutron-queens-ptg\n\nwe are half way there with bandwith based schduling\nthe remaining work is mainly on teh nova/placement side of things and we added some support for numa affinity of vswithes, it involes more manual config options then we would like but it works. We still have no support for phynet aware schduing,segmentaiton type aware schduling or\nor schduling based on neturon extention support.\n\nsimilarly we have made almost no progress on a negociation protocol that allows neutron to provide imports to schduling by providing resouce and tritis request to nova. the bandwith aware schduling work has actully made a lot of progress here but it currently has no other users so until\nwe have 3 or 4 extentions using it im not ready to declare victory there yet.\n\nwith all that said however i think we need to fix the network-* events as the current state results in both security concerns and instance lifecyle operation issues.","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"cde420fda40112a12f2f315e420a8452866dc0d6","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  to be stable. A POC is available in https://review.openstack.org/#/c/635083."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"* A new ``network_events`` field will be added that is a dictionary of list of"},{"line_number":118,"context_line":"  stings field. This dictionary will map network-* event names to a list of"},{"line_number":119,"context_line":"  strings representing when the driver that bound the port binding emits the"},{"line_number":120,"context_line":"  event."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_dc51c731","line":118,"range":{"start_line":118,"start_character":2,"end_line":118,"end_character":8},"updated":"2019-03-29 00:53:18.000000000","message":"strings","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fe308d46f953a1c2e7e3e8a43cf1822d01cca5e9","unresolved":false,"context_lines":[{"line_number":114,"context_line":"  point name for the driver which is already used in config files and intended"},{"line_number":115,"context_line":"  to be stable. A POC is available in https://review.openstack.org/#/c/635083."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"* A new ``network_events`` field will be added that is a dictionary of list of"},{"line_number":118,"context_line":"  stings field. This dictionary will map network-* event names to a list of"},{"line_number":119,"context_line":"  strings representing when the driver that bound the port binding emits the"},{"line_number":120,"context_line":"  event."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"To enable declaration of the ``connectivity``, a new property will be added to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_a91fff58","line":120,"range":{"start_line":117,"start_character":2,"end_line":120,"end_character":8},"updated":"2019-03-27 14:04:48.000000000","message":"It is hard for me to imagine how this information will be used by the consumer of this API. What could os-vif do differently if it knows that backendX sends the network-vif-plugged event not after the if is capable of carrying traffic but earlier. Will os-vif wait for a random time before continue?","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"be78a670d3588119b18fd2870638a709fe933482","unresolved":false,"context_lines":[{"line_number":114,"context_line":"  point name for the driver which is already used in config files and intended"},{"line_number":115,"context_line":"  to be stable. A POC is available in https://review.openstack.org/#/c/635083."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"* A new ``network_events`` field will be added that is a dictionary of list of"},{"line_number":118,"context_line":"  stings field. This dictionary will map network-* event names to a list of"},{"line_number":119,"context_line":"  strings representing when the driver that bound the port binding emits the"},{"line_number":120,"context_line":"  event."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"To enable declaration of the ``connectivity``, a new property will be added to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_ecdd1041","line":120,"range":{"start_line":117,"start_character":2,"end_line":120,"end_character":8},"in_reply_to":"5fc1f717_a91fff58","updated":"2019-03-27 18:42:26.000000000","message":"this infomation will be used by the nova virt driver not os-vif.\n\nwhen we do a hard reboot we delete the vm and recreated by calling stop and then spawn.\n\nif we are booting a vm for the first time spawn waits for the network-vif-plugged event to ensure that the dhcp request does not race with neutron. on reboot we do not wait becasue we cannot depend on the event being sent so we do not wait and we race with neutron.","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"59819730f7609b36f689eb15922092cd17c8e9aa","unresolved":false,"context_lines":[{"line_number":114,"context_line":"  point name for the driver which is already used in config files and intended"},{"line_number":115,"context_line":"  to be stable. A POC is available in https://review.openstack.org/#/c/635083."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"* A new ``network_events`` field will be added that is a dictionary of list of"},{"line_number":118,"context_line":"  stings field. This dictionary will map network-* event names to a list of"},{"line_number":119,"context_line":"  strings representing when the driver that bound the port binding emits the"},{"line_number":120,"context_line":"  event."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"To enable declaration of the ``connectivity``, a new property will be added to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_c12f9286","line":120,"range":{"start_line":117,"start_character":2,"end_line":120,"end_character":8},"in_reply_to":"5fc1f717_ecdd1041","updated":"2019-03-29 15:12:41.000000000","message":"So in the solution you propose that nova will check the \u0027network_events\u0027 field and based on that decides if it needs to wait for the network-vif-plugged event or not during hard reboot.\nIf this is the only new dependency between nova and neutron then it works for me.","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fe308d46f953a1c2e7e3e8a43cf1822d01cca5e9","unresolved":false,"context_lines":[{"line_number":127,"context_line":"Similarly for ``network_events``, a new property will be defined and will"},{"line_number":128,"context_line":"default to an empty dict. Subclasses that support this extension will override"},{"line_number":129,"context_line":"the property and statically initialize the value."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Examples"},{"line_number":132,"context_line":"--------"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_c614ba4f","line":130,"updated":"2019-03-27 14:04:48.000000000","message":"Could you please describe how this addition will actually solve the problems described in the Problem Description section? Who will consume these new information? Will there be a nova spec describing the nova impact?","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"59819730f7609b36f689eb15922092cd17c8e9aa","unresolved":false,"context_lines":[{"line_number":127,"context_line":"Similarly for ``network_events``, a new property will be defined and will"},{"line_number":128,"context_line":"default to an empty dict. Subclasses that support this extension will override"},{"line_number":129,"context_line":"the property and statically initialize the value."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Examples"},{"line_number":132,"context_line":"--------"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_c1b9d215","line":130,"in_reply_to":"5fc1f717_4cc78465","updated":"2019-03-29 15:12:41.000000000","message":"So how will neutron represent the fact following situation in the network_events field?\n* when this port is used nova shall wait for the network-vif-plugged event during boot\n* but when this port is used nova shall not wait for the network-vif-plugged event during hard reboot","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e8db2ee4ece0d47282ff810458374cfddcd80a1a","unresolved":false,"context_lines":[{"line_number":127,"context_line":"Similarly for ``network_events``, a new property will be defined and will"},{"line_number":128,"context_line":"default to an empty dict. Subclasses that support this extension will override"},{"line_number":129,"context_line":"the property and statically initialize the value."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Examples"},{"line_number":132,"context_line":"--------"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_2922e2bb","line":130,"in_reply_to":"5fc1f717_c1b9d215","updated":"2019-04-01 15:24:21.000000000","message":"i have not speeled out what the \nnetwork_events field will contain properly in the spec yet\n\n\nthe key are simple it the 4 network-* envent names. the values are trickier.\n\ni do not want to have to teach neutron about nova instance action like boot vs hard reboot. i would like to define an abstract set of terms that neutron can use and nova will understand.\n\ntaking the \"network-vif-plugged\" event as an example for ml2/ovs we would declare something like this\n \n\"network_events\": {\"network-vif-plugged\": \"backend-port-configured\", ... }\n\nmeaning the neutron backend that bound this port will reliably emit a network-vif-plugged when it finishes wiring up a interface on the compute node.\n\nml2/linux_bridge would be similar but different\n\n\"network_events\": {\"network-vif-plugged\": \"backend-port-configured-unreliable\", ... }\n\nml2/odl v1 would be \n\n\"network_events\": {\"network-vif-plugged\": \"port-bound\",  ... }\n\nsince nova knows that we do not rebind ports on a hard reboot and since nova can only wait if the event is reliable. nova would test the vif to see if it contained \n\"network-vif-plugged\": \"backend-port-configured\"\n\ne.g. \nif \"network-vif-plugged\" in vif.network_events and vif.network_events.get(\"network-vif-plugged\") \u003d\u003d \"backend-port-configured\":\n\n  # add vif to list of  vifs to wait for.\n\n\nso what needs to be in this spec that is not currently here is a list of values for when an event can be sent and if that event is reliable.\n\nlinux bridge emits the \"network-vif-plugged\" event unreliably because of polling. on boot this is not an issue as there is not a race condtion between the pooling interval and creation of the port. on a reboot there is. if neutron change to using inotify to monitor sysfs for the addtion or removeal of a port to a linux bridge instead of polling then we can updated the value form backend-port-configured-unreliable to backend-port-configured. if we did so then we would transparently start waiting for ports to be wired up on reboot for that new version of linux bridge.\n\n\nso the important thing is nova should know if we 1.) update the port in neutron and 2.) update/create/delete a port in the networkign backend. form that nova can determing if a relibale or unreliable event is sufficent and if we can wait for backend that only update on port bind or if we can only wait if updaing the network backend port is enough.","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"be78a670d3588119b18fd2870638a709fe933482","unresolved":false,"context_lines":[{"line_number":127,"context_line":"Similarly for ``network_events``, a new property will be defined and will"},{"line_number":128,"context_line":"default to an empty dict. Subclasses that support this extension will override"},{"line_number":129,"context_line":"the property and statically initialize the value."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Examples"},{"line_number":132,"context_line":"--------"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_4cc78465","line":130,"in_reply_to":"5fc1f717_c614ba4f","updated":"2019-03-27 18:42:26.000000000","message":"yes there will be a nova spec for the nova changes. its on my todo list to submit later this week or early next week.\n\nthe clip notes is as follows. \nthe os-vif and nova vif objects\nnova: https://github.com/openstack/nova/blob/38ce9d8a113094a4b96a7d1691e34ab2fa266791/nova/network/model.py#L380\n\nos-vif: https://github.com/openstack/os-vif/blob/fec30ae759b0ed7a2ca3205166aebef1c5e55026/os_vif/objects/vif.py#L23-L55\n\nwill be extended to hold the new fields.\n\ncurrent the nova Vif object is constucted in \n_nw_info_build_network\nhttps://github.com/openstack/nova/blob/master/nova/network/neutronv2/api.py#L2837\n\nand this will extract the keys form the port_details and embed them in the vif object.\nos_vif_util.py will also be extended to extract the field form the nova vif object when building the os-vif vif object.\n\nhttps://github.com/openstack/nova/blob/master/nova/network/os_vif_util.py\n\n\nthe bound_drivers field will be used by the ovs os-vif plugin to remove the need for this config option \nhttps://github.com/openstack/os-vif/blob/master/vif_plug_ovs/ovs.py#L68-L86\n\nso we can enable vif isolation automatically when needed.\n\n\nhave the ml2 driver will also be needed to make \n\nwe may want to also use the driver infomation for the bandwith based schduling also as i pointed out in \nhttps://review.openstack.org/#/c/623543/40/nova/compute/manager.py@2161\n\nwe cant currently hand the case where the PF is used by one ml2 driver and the VF are managed by sriov ml2 driver.\n\ne.g. when sriov and ovs are used on teh same nice with the neutron FDB extention.\n\n\n\nthe connectiviy filed check for ip_allocation\u003dnone and conecctivey\u003dl3 was intended to be done in\nhttps://github.com/openstack/nova/blob/master/nova/network/neutronv2/api.py\nbut we could push that requriement to neutorn and require that l3 only ml2 drivers like calico refuse to bind any port wiht ip_allocation\u003dnone.\n\n\n\nfinally for the network event\nall of the code paths that we want to wait for event  like\n\nhttps://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L2846-L2855\n\nin the hard reboot flow  will be updated to do so if the vifs support that.\n\nwe can do that internally  to in _create_domain_and_network\nhttps://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L5645\n\nby modifying _get_neutron_events\nhttps://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L5626\nto use the event list embeded in the Vif object (the netwok_info parmater is a list of nova Vif objects)\nto determin if we shoudl wait or not.\n\neach instance action will need to be considered to determin if and when we should wait.","commit_id":"cc313959dd66c773603761868057cd388bf7ab9e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f5493bf8fe63926209fde84843d1a6118217bb10","unresolved":false,"context_lines":[{"line_number":27,"context_line":"related to the plug and unplug process, Nova still needs to handle the"},{"line_number":28,"context_line":"information proposed in this spec."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This spec aims to enhance the port binding API via the introduction of a new"},{"line_number":31,"context_line":"extension to provide the additional information required to enable Nova and"},{"line_number":32,"context_line":"os-vif to make more intelligent use of network event and port binding info."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bfb3d3c7_5676c308","line":31,"range":{"start_line":30,"start_character":71,"end_line":31,"end_character":10},"updated":"2019-05-21 09:43:44.000000000","message":"i dont think we actully need a new extention\nwe can just add this to the existing port binding extended\nextention.","commit_id":"2350ed20419273abe9f47a920a62602db721a99b"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b746cdfda804b01288327363159a8eed7a8bfbce","unresolved":false,"context_lines":[{"line_number":27,"context_line":"related to the plug and unplug process, Nova still needs to handle the"},{"line_number":28,"context_line":"information proposed in this spec."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This spec aims to enhance the port binding API via the introduction of a new"},{"line_number":31,"context_line":"extension to provide the additional information required to enable Nova and"},{"line_number":32,"context_line":"os-vif to make more intelligent use of network event and port binding info."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bfb3d3c7_626a2181","line":31,"range":{"start_line":30,"start_character":71,"end_line":31,"end_character":10},"in_reply_to":"bfb3d3c7_5676c308","updated":"2019-05-21 12:27:18.000000000","message":"According to current Neutron policy we should add such extensions but I think that as those new informations are added to the \"binding_details\" dict, maybe we really don\u0027t need new extensions.","commit_id":"2350ed20419273abe9f47a920a62602db721a99b"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"fdaa23a8d928dbbb96a0aead9b8a39302bfc025d","unresolved":false,"context_lines":[{"line_number":146,"context_line":"* A new ``network_events`` field will be added that is a dictionary of list of"},{"line_number":147,"context_line":"  strings field. This dictionary will map network-* event names to a list of"},{"line_number":148,"context_line":"  strings representing when the driver that bound the port binding emits the"},{"line_number":149,"context_line":"  event."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"To enable declaration of the ``connectivity``, a new property will be added to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bfb3d3c7_005fa5e2","line":149,"updated":"2019-05-21 07:49:07.000000000","message":"First 2 points here are clear for me but I don\u0027t exactly understand how this information will be used in os-vif.\nI see examples below but still I\u0027m not sure how to use it on os-vif side :/","commit_id":"2350ed20419273abe9f47a920a62602db721a99b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f5493bf8fe63926209fde84843d1a6118217bb10","unresolved":false,"context_lines":[{"line_number":146,"context_line":"* A new ``network_events`` field will be added that is a dictionary of list of"},{"line_number":147,"context_line":"  strings field. This dictionary will map network-* event names to a list of"},{"line_number":148,"context_line":"  strings representing when the driver that bound the port binding emits the"},{"line_number":149,"context_line":"  event."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"To enable declaration of the ``connectivity``, a new property will be added to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bfb3d3c7_96d0bbf9","line":149,"in_reply_to":"bfb3d3c7_005fa5e2","updated":"2019-05-21 09:43:44.000000000","message":"the network events will not be used by os-vif\nthey will be transproted in the os-vif object but used by nova.","commit_id":"2350ed20419273abe9f47a920a62602db721a99b"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b746cdfda804b01288327363159a8eed7a8bfbce","unresolved":false,"context_lines":[{"line_number":146,"context_line":"* A new ``network_events`` field will be added that is a dictionary of list of"},{"line_number":147,"context_line":"  strings field. This dictionary will map network-* event names to a list of"},{"line_number":148,"context_line":"  strings representing when the driver that bound the port binding emits the"},{"line_number":149,"context_line":"  event."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"To enable declaration of the ``connectivity``, a new property will be added to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bfb3d3c7_c20e6de4","line":149,"in_reply_to":"bfb3d3c7_96d0bbf9","updated":"2019-05-21 12:27:18.000000000","message":"So e.g. when nova get network-vif-plugged event, based on those informations it will be able to decide if instance should be unpaused now or that it should wait for some other event. Is my understanding correct?","commit_id":"2350ed20419273abe9f47a920a62602db721a99b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bc1668a4fa934668eba43fe23902ce215f574356","unresolved":false,"context_lines":[{"line_number":146,"context_line":"* A new ``network_events`` field will be added that is a dictionary of list of"},{"line_number":147,"context_line":"  strings field. This dictionary will map network-* event names to a list of"},{"line_number":148,"context_line":"  strings representing when the driver that bound the port binding emits the"},{"line_number":149,"context_line":"  event."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"To enable declaration of the ``connectivity``, a new property will be added to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fb8cfa7_e653bb6b","line":149,"in_reply_to":"bfb3d3c7_c20e6de4","updated":"2019-06-17 13:54:44.000000000","message":"The events section is going to be postponed and proposed in next months.","commit_id":"2350ed20419273abe9f47a920a62602db721a99b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f5493bf8fe63926209fde84843d1a6118217bb10","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        ..."},{"line_number":183,"context_line":"        \"connectivity\": \"l2\","},{"line_number":184,"context_line":"        \"bound_drivers\": {\"0\": \"openvswtich\"}"},{"line_number":185,"context_line":"        \"network_events\": {\"network-vif-plugged\": \"backend-port-configured\","},{"line_number":186,"context_line":"                           ... }"},{"line_number":187,"context_line":"    }"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bfb3d3c7_f639f740","line":185,"range":{"start_line":185,"start_character":51,"end_line":185,"end_character":59},"updated":"2019-05-21 09:43:44.000000000","message":"maybe we could drop backend","commit_id":"2350ed20419273abe9f47a920a62602db721a99b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bc1668a4fa934668eba43fe23902ce215f574356","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        ..."},{"line_number":183,"context_line":"        \"connectivity\": \"l2\","},{"line_number":184,"context_line":"        \"bound_drivers\": {\"0\": \"openvswtich\"}"},{"line_number":185,"context_line":"        \"network_events\": {\"network-vif-plugged\": \"backend-port-configured\","},{"line_number":186,"context_line":"                           ... }"},{"line_number":187,"context_line":"    }"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bfb3d3c7_fe1f2205","line":185,"range":{"start_line":185,"start_character":51,"end_line":185,"end_character":59},"in_reply_to":"bfb3d3c7_f639f740","updated":"2019-06-17 13:54:44.000000000","message":"Done","commit_id":"2350ed20419273abe9f47a920a62602db721a99b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f5493bf8fe63926209fde84843d1a6118217bb10","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                           ... }"},{"line_number":225,"context_line":"    }"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"References"},{"line_number":229,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bfb3d3c7_f61257b1","line":227,"updated":"2019-05-21 09:43:44.000000000","message":"ML2/linux_bridge\n\n.. code-block:: python\n\n    binding_details: {\n        ...\n        \"connectivity\": \"l3\",\n        \"bound_drivers\": {\"0\": \"linuxbridge\"}\n        \"network_events\": {\"network-vif-plugged\": \"port-configured-unreliable\",\n                           ... }\n    }","commit_id":"2350ed20419273abe9f47a920a62602db721a99b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bc1668a4fa934668eba43fe23902ce215f574356","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                           ... }"},{"line_number":225,"context_line":"    }"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"References"},{"line_number":229,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bfb3d3c7_de225e52","line":227,"in_reply_to":"bfb3d3c7_f61257b1","updated":"2019-06-17 13:54:44.000000000","message":"Done","commit_id":"2350ed20419273abe9f47a920a62602db721a99b"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"7598b8f38777da3d682cabbbfc3e955b95e54172","unresolved":false,"context_lines":[{"line_number":35,"context_line":"--------------------"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"`Boot a VM with an unaddressed port`_ blueprint seeks to enable the use of"},{"line_number":38,"context_line":"instances with ip_allocation\u003dnone. The port paramter \"ip_allocation\" was"},{"line_number":39,"context_line":"introduced in the `BP Allow vm to boot without l3 address`_, to \"distinguish"},{"line_number":40,"context_line":"the unaddressed port case from the deferred IP allocation case where routed"},{"line_number":41,"context_line":"networks is involved\" (extracted from `commit 361455`_)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9fb8cfa7_48e032cd","line":38,"range":{"start_line":38,"start_character":44,"end_line":38,"end_character":52},"updated":"2019-06-22 00:22:31.000000000","message":"parameter","commit_id":"30eb7bb66047a1da3aea2a220b046d1763625e0a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cc1f5f310cbeddf1d24773e1116bb57e58f4f4a2","unresolved":false,"context_lines":[{"line_number":35,"context_line":"--------------------"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"`Boot a VM with an unaddressed port`_ blueprint seeks to enable the use of"},{"line_number":38,"context_line":"instances with ip_allocation\u003dnone. The port paramter \"ip_allocation\" was"},{"line_number":39,"context_line":"introduced in the `BP Allow vm to boot without l3 address`_, to \"distinguish"},{"line_number":40,"context_line":"the unaddressed port case from the deferred IP allocation case where routed"},{"line_number":41,"context_line":"networks is involved\" (extracted from `commit 361455`_)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9fb8cfa7_50cf677e","line":38,"range":{"start_line":38,"start_character":44,"end_line":38,"end_character":52},"in_reply_to":"9fb8cfa7_48e032cd","updated":"2019-06-24 15:16:25.000000000","message":"Done","commit_id":"30eb7bb66047a1da3aea2a220b046d1763625e0a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"7598b8f38777da3d682cabbbfc3e955b95e54172","unresolved":false,"context_lines":[{"line_number":79,"context_line":"* A new ``connectivity`` field will be introduced with allowed values of \"l2\","},{"line_number":80,"context_line":"  \"l3\" and \"legacy\". The \"legacy\" ``connectivity`` value will be the default and"},{"line_number":81,"context_line":"  is a sentinel to indicate the driver does not support this extension yet and"},{"line_number":82,"context_line":"  no connectivity info is available. When this value is set by Nova and other"},{"line_number":83,"context_line":"  consumers should ignore it and proceed."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* A new ``bound_drivers`` field will be added that is a dictionary mapping of"},{"line_number":86,"context_line":"  binding_level to driver name. The driver name will be the stevedore entry"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9fb8cfa7_a86c4e36","line":83,"range":{"start_line":82,"start_character":37,"end_line":83,"end_character":11},"updated":"2019-06-22 00:22:31.000000000","message":"What do you mean by this? binding:vif_details is set by Neutron, not Nova","commit_id":"30eb7bb66047a1da3aea2a220b046d1763625e0a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cc1f5f310cbeddf1d24773e1116bb57e58f4f4a2","unresolved":false,"context_lines":[{"line_number":79,"context_line":"* A new ``connectivity`` field will be introduced with allowed values of \"l2\","},{"line_number":80,"context_line":"  \"l3\" and \"legacy\". The \"legacy\" ``connectivity`` value will be the default and"},{"line_number":81,"context_line":"  is a sentinel to indicate the driver does not support this extension yet and"},{"line_number":82,"context_line":"  no connectivity info is available. When this value is set by Nova and other"},{"line_number":83,"context_line":"  consumers should ignore it and proceed."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* A new ``bound_drivers`` field will be added that is a dictionary mapping of"},{"line_number":86,"context_line":"  binding_level to driver name. The driver name will be the stevedore entry"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9fb8cfa7_d0c6f716","line":83,"range":{"start_line":82,"start_character":37,"end_line":83,"end_character":11},"in_reply_to":"9fb8cfa7_a86c4e36","updated":"2019-06-24 15:16:25.000000000","message":"This sentence makes no sense here. I\u0027ll remove it.","commit_id":"30eb7bb66047a1da3aea2a220b046d1763625e0a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"7598b8f38777da3d682cabbbfc3e955b95e54172","unresolved":false,"context_lines":[{"line_number":82,"context_line":"  no connectivity info is available. When this value is set by Nova and other"},{"line_number":83,"context_line":"  consumers should ignore it and proceed."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* A new ``bound_drivers`` field will be added that is a dictionary mapping of"},{"line_number":86,"context_line":"  binding_level to driver name. The driver name will be the stevedore entry"},{"line_number":87,"context_line":"  point name for the driver which is already used in config files and intended"},{"line_number":88,"context_line":"  to be stable. A POC is available in https://review.openstack.org/#/c/635083."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9fb8cfa7_28629e3f","line":85,"range":{"start_line":85,"start_character":75,"end_line":85,"end_character":77},"updated":"2019-06-22 00:22:31.000000000","message":"I would remove","commit_id":"30eb7bb66047a1da3aea2a220b046d1763625e0a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cc1f5f310cbeddf1d24773e1116bb57e58f4f4a2","unresolved":false,"context_lines":[{"line_number":82,"context_line":"  no connectivity info is available. When this value is set by Nova and other"},{"line_number":83,"context_line":"  consumers should ignore it and proceed."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* A new ``bound_drivers`` field will be added that is a dictionary mapping of"},{"line_number":86,"context_line":"  binding_level to driver name. The driver name will be the stevedore entry"},{"line_number":87,"context_line":"  point name for the driver which is already used in config files and intended"},{"line_number":88,"context_line":"  to be stable. A POC is available in https://review.openstack.org/#/c/635083."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9fb8cfa7_10c9ef76","line":85,"range":{"start_line":85,"start_character":75,"end_line":85,"end_character":77},"in_reply_to":"9fb8cfa7_28629e3f","updated":"2019-06-24 15:16:25.000000000","message":"Done","commit_id":"30eb7bb66047a1da3aea2a220b046d1763625e0a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"7598b8f38777da3d682cabbbfc3e955b95e54172","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"References"},{"line_number":148,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":".. _`BP Allow vm to boot without l3 address`: https://blueprints.launchpad.net/neutron/+spec/vm-without-l3-address"},{"line_number":151,"context_line":".. _`commit 361455`: https://review.openstack.org/#/c/361455/"},{"line_number":152,"context_line":".. _`Boot a VM with an unaddressed port`: https://blueprints.launchpad.net/nova/+spec/boot-vm-with-unaddressed-port"},{"line_number":153,"context_line":".. _`bug 1734320`: https://bugs.launchpad.net/neutron/+bug/1734320"},{"line_number":154,"context_line":".. _`VIFBase object`: https://github.com/openstack/os-vif/blob/stable/stein/os_vif/objects/vif.py#L23-L55"},{"line_number":155,"context_line":".. _`isolate_vif config option`: https://github.com/openstack/os-vif/blob/stable/stein/vif_plug_ovs/ovs.py#L146-L159"},{"line_number":156,"context_line":".. _`review 1`: https://review.opendev.org/#/c/623543/40/nova/compute/manager.py@2161"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9fb8cfa7_e85b2684","line":156,"range":{"start_line":149,"start_character":0,"end_line":156,"end_character":85},"updated":"2019-06-22 00:22:31.000000000","message":"None of your references are rendered in the final document: http://logs.openstack.org/73/645173/4/check/openstack-tox-docs/d748b0c/html/specs/train/port-binding-extended-information.html#references","commit_id":"30eb7bb66047a1da3aea2a220b046d1763625e0a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cc1f5f310cbeddf1d24773e1116bb57e58f4f4a2","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"References"},{"line_number":148,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":".. _`BP Allow vm to boot without l3 address`: https://blueprints.launchpad.net/neutron/+spec/vm-without-l3-address"},{"line_number":151,"context_line":".. _`commit 361455`: https://review.openstack.org/#/c/361455/"},{"line_number":152,"context_line":".. _`Boot a VM with an unaddressed port`: https://blueprints.launchpad.net/nova/+spec/boot-vm-with-unaddressed-port"},{"line_number":153,"context_line":".. _`bug 1734320`: https://bugs.launchpad.net/neutron/+bug/1734320"},{"line_number":154,"context_line":".. _`VIFBase object`: https://github.com/openstack/os-vif/blob/stable/stein/os_vif/objects/vif.py#L23-L55"},{"line_number":155,"context_line":".. _`isolate_vif config option`: https://github.com/openstack/os-vif/blob/stable/stein/vif_plug_ovs/ovs.py#L146-L159"},{"line_number":156,"context_line":".. _`review 1`: https://review.opendev.org/#/c/623543/40/nova/compute/manager.py@2161"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9fb8cfa7_70786b2a","line":156,"range":{"start_line":149,"start_character":0,"end_line":156,"end_character":85},"in_reply_to":"9fb8cfa7_e85b2684","updated":"2019-06-24 15:16:25.000000000","message":"Done","commit_id":"30eb7bb66047a1da3aea2a220b046d1763625e0a"}]}
