)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"QoS minimum bandwidth allocation in Placement API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This spec describes how to model, from Neutron, a new resource provider in"},{"line_number":10,"context_line":"Placement API to describe the bandwidth allocation."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ib995837f6161bcceb09735a5601d8b79a25a7354"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7f515b1d_6bd2352a","line":9,"range":{"start_line":9,"start_character":72,"end_line":9,"end_character":74},"updated":"2017-10-01 23:54:43.000000000","message":"This line is 2 characters too long","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"QoS minimum bandwidth allocation in Placement API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This spec describes how to model, from Neutron, a new resource provider in"},{"line_number":10,"context_line":"Placement API to describe the bandwidth allocation."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ib995837f6161bcceb09735a5601d8b79a25a7354"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7f515b1d_afe4993d","line":9,"range":{"start_line":9,"start_character":72,"end_line":9,"end_character":74},"in_reply_to":"7f515b1d_6bd2352a","updated":"2017-10-03 16:52:10.000000000","message":"Done","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"QoS minimum bandwidth allocation in Placement API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This spec describes how to model, from Neutron, a new resource provider in"},{"line_number":10,"context_line":"Placement API to describe the bandwidth allocation."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ib995837f6161bcceb09735a5601d8b79a25a7354"},{"line_number":13,"context_line":"Related-Bug: #1578989"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7f515b1d_4bcd3983","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":9},"updated":"2017-10-01 23:54:43.000000000","message":"the Placement","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"QoS minimum bandwidth allocation in Placement API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This spec describes how to model, from Neutron, a new resource provider in"},{"line_number":10,"context_line":"Placement API to describe the bandwidth allocation."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ib995837f6161bcceb09735a5601d8b79a25a7354"},{"line_number":13,"context_line":"Related-Bug: #1578989"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7f515b1d_8fe1dd2d","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":9},"in_reply_to":"7f515b1d_4bcd3983","updated":"2017-10-03 16:52:10.000000000","message":"Done","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"}],"specs/queens/minimum-bandwidth-allocation-placement-api.rst":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem Description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Currently there are several parameters, quantitatives and qualitatives, that"},{"line_number":21,"context_line":"define a virtual machine and are used to select the correct host to run it."},{"line_number":22,"context_line":"Network bandwidth is not yet among these parameters. This allow situations"},{"line_number":23,"context_line":"where a physical network device could be oversubscribed."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_cbd7e94a","line":20,"range":{"start_line":20,"start_character":40,"end_line":20,"end_character":70},"updated":"2017-10-01 23:54:43.000000000","message":"quantitative and qualitative","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem Description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Currently there are several parameters, quantitatives and qualitatives, that"},{"line_number":21,"context_line":"define a virtual machine and are used to select the correct host to run it."},{"line_number":22,"context_line":"Network bandwidth is not yet among these parameters. This allow situations"},{"line_number":23,"context_line":"where a physical network device could be oversubscribed."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_6fd0e154","line":20,"range":{"start_line":20,"start_character":40,"end_line":20,"end_character":70},"in_reply_to":"7f515b1d_cbd7e94a","updated":"2017-10-03 16:52:10.000000000","message":"Done","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Currently there are several parameters, quantitatives and qualitatives, that"},{"line_number":21,"context_line":"define a virtual machine and are used to select the correct host to run it."},{"line_number":22,"context_line":"Network bandwidth is not yet among these parameters. This allow situations"},{"line_number":23,"context_line":"where a physical network device could be oversubscribed."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_abca6d9d","line":22,"range":{"start_line":22,"start_character":58,"end_line":22,"end_character":63},"updated":"2017-10-01 23:54:43.000000000","message":"allows","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Currently there are several parameters, quantitatives and qualitatives, that"},{"line_number":21,"context_line":"define a virtual machine and are used to select the correct host to run it."},{"line_number":22,"context_line":"Network bandwidth is not yet among these parameters. This allow situations"},{"line_number":23,"context_line":"where a physical network device could be oversubscribed."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_2fcae9a0","line":22,"range":{"start_line":22,"start_character":58,"end_line":22,"end_character":63},"in_reply_to":"7f515b1d_abca6d9d","updated":"2017-10-03 16:52:10.000000000","message":"Done","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"The most straightforward use case is when a user, who has paid a premium"},{"line_number":30,"context_line":"service that guarantees a minimum network bandwidth, wants to spawn a virtual"},{"line_number":31,"context_line":"machine. The scheduler needs to know how much bandwidth is already in use in"},{"line_number":32,"context_line":"each machine and how much bandwidth the user is requesting."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Proposed Change"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_6bc8f5a4","line":32,"range":{"start_line":32,"start_character":5,"end_line":32,"end_character":12},"updated":"2017-10-01 23:54:43.000000000","message":"compute host","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"The most straightforward use case is when a user, who has paid a premium"},{"line_number":30,"context_line":"service that guarantees a minimum network bandwidth, wants to spawn a virtual"},{"line_number":31,"context_line":"machine. The scheduler needs to know how much bandwidth is already in use in"},{"line_number":32,"context_line":"each machine and how much bandwidth the user is requesting."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Proposed Change"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_0fcf2db1","line":32,"range":{"start_line":32,"start_character":5,"end_line":32,"end_character":12},"in_reply_to":"7f515b1d_6bc8f5a4","updated":"2017-10-03 16:52:10.000000000","message":"Done","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Proposed Change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The proposal is to create a new resource provider in Placement service using"},{"line_number":39,"context_line":"the Placement API [1]_. This service, tightly linked with Nova Scheduler,"},{"line_number":40,"context_line":"was designed to track Resource Provider inventories and usages. This spec is"},{"line_number":41,"context_line":"based in the Nova homologous spec `Network bandwidth resource provider` [2]_."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_4bc3f989","line":38,"range":{"start_line":38,"start_character":53,"end_line":38,"end_character":62},"updated":"2017-10-01 23:54:43.000000000","message":"the Placement","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Proposed Change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The proposal is to create a new resource provider in Placement service using"},{"line_number":39,"context_line":"the Placement API [1]_. This service, tightly linked with Nova Scheduler,"},{"line_number":40,"context_line":"was designed to track Resource Provider inventories and usages. This spec is"},{"line_number":41,"context_line":"based in the Nova homologous spec `Network bandwidth resource provider` [2]_."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_efc3b189","line":38,"range":{"start_line":38,"start_character":53,"end_line":38,"end_character":62},"in_reply_to":"7f515b1d_4bc3f989","updated":"2017-10-03 16:52:10.000000000","message":"Done","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The proposal is to create a new resource provider in Placement service using"},{"line_number":39,"context_line":"the Placement API [1]_. This service, tightly linked with Nova Scheduler,"},{"line_number":40,"context_line":"was designed to track Resource Provider inventories and usages. This spec is"},{"line_number":41,"context_line":"based in the Nova homologous spec `Network bandwidth resource provider` [2]_."},{"line_number":42,"context_line":"This spec proposes to create two new Resource Classes to model the ingress and"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_eb3985a3","line":39,"range":{"start_line":39,"start_character":58,"end_line":39,"end_character":62},"updated":"2017-10-01 23:54:43.000000000","message":"the Nova","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The proposal is to create a new resource provider in Placement service using"},{"line_number":39,"context_line":"the Placement API [1]_. This service, tightly linked with Nova Scheduler,"},{"line_number":40,"context_line":"was designed to track Resource Provider inventories and usages. This spec is"},{"line_number":41,"context_line":"based in the Nova homologous spec `Network bandwidth resource provider` [2]_."},{"line_number":42,"context_line":"This spec proposes to create two new Resource Classes to model the ingress and"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_8fbafd07","line":39,"range":{"start_line":39,"start_character":58,"end_line":39,"end_character":62},"in_reply_to":"7f515b1d_eb3985a3","updated":"2017-10-03 16:52:10.000000000","message":"Done","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This spec is based in the approved spec `Add a spec for strict minimum"},{"line_number":46,"context_line":"bandwidth support` [3]_. The aim of the current spec is not to redefine what"},{"line_number":47,"context_line":"is already approved in [3]_, but to specify how is going to be implemented in"},{"line_number":48,"context_line":"Neutron."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Which devices and parameters will be tracked"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_cb3c8994","line":47,"range":{"start_line":47,"start_character":48,"end_line":47,"end_character":50},"updated":"2017-10-01 23:54:43.000000000","message":"it is","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This spec is based in the approved spec `Add a spec for strict minimum"},{"line_number":46,"context_line":"bandwidth support` [3]_. The aim of the current spec is not to redefine what"},{"line_number":47,"context_line":"is already approved in [3]_, but to specify how is going to be implemented in"},{"line_number":48,"context_line":"Neutron."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Which devices and parameters will be tracked"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_4f3ac598","line":47,"range":{"start_line":47,"start_character":48,"end_line":47,"end_character":50},"in_reply_to":"7f515b1d_cb3c8994","updated":"2017-10-03 16:52:10.000000000","message":"Done","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":59,"context_line":"agent can retrieve this information from the physical device::"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    SR-IOV agent:"},{"line_number":62,"context_line":"        physnet_1:device_1 \u003d {egressBW, ingressBW}"},{"line_number":63,"context_line":"        physnet_2:device_2 \u003d {egressBW, ingressBW}"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    OVS agent:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_eb0745c9","line":62,"range":{"start_line":62,"start_character":8,"end_line":62,"end_character":50},"updated":"2017-10-01 23:54:43.000000000","message":"are you going to add the egressBW and ingressBW to the current bridge_mappings/interface_mappings/device_mappings parameters? Or is this going to be a new set of parameters in the config file?","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"agent can retrieve this information from the physical device::"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    SR-IOV agent:"},{"line_number":62,"context_line":"        physnet_1:device_1 \u003d {egressBW, ingressBW}"},{"line_number":63,"context_line":"        physnet_2:device_2 \u003d {egressBW, ingressBW}"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    OVS agent:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_6fc5810a","line":62,"range":{"start_line":62,"start_character":8,"end_line":62,"end_character":50},"in_reply_to":"7f515b1d_eb0745c9","updated":"2017-10-03 16:52:10.000000000","message":"IMO, to overload config parameters could be dangerous; we can have compatibility problems.\n\nInstead of this, for each agent I propose to add a new config parameter, \"device_bandwidth\", which will contain tuples of three elements:\n\n  device_bandwidth\u003ddevice1:egressbw:ingressbw,device2:egressbw:ingressbw","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":71,"context_line":"----------------------------------------------------"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The required minimum network bandwidth needed for a port is modeled defining"},{"line_number":74,"context_line":"a QoS policy along with a QoS minimum bandwidth rule [4]_. As described in Nova"},{"line_number":75,"context_line":"spec [2]_, if a VM boot request has a port defined and this port has a QoS"},{"line_number":76,"context_line":"policy attached with a QoS minimum bandwidth rule, that means Placement Service"},{"line_number":77,"context_line":"must enforce this minimum bandwidth requirement."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_8b42110e","line":74,"range":{"start_line":74,"start_character":75,"end_line":74,"end_character":79},"updated":"2017-10-01 23:54:43.000000000","message":"the Nova","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"----------------------------------------------------"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The required minimum network bandwidth needed for a port is modeled defining"},{"line_number":74,"context_line":"a QoS policy along with a QoS minimum bandwidth rule [4]_. As described in Nova"},{"line_number":75,"context_line":"spec [2]_, if a VM boot request has a port defined and this port has a QoS"},{"line_number":76,"context_line":"policy attached with a QoS minimum bandwidth rule, that means Placement Service"},{"line_number":77,"context_line":"must enforce this minimum bandwidth requirement."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_0fb5edcd","line":74,"range":{"start_line":74,"start_character":75,"end_line":74,"end_character":79},"in_reply_to":"7f515b1d_8b42110e","updated":"2017-10-03 16:52:10.000000000","message":"Done","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"The required minimum network bandwidth needed for a port is modeled defining"},{"line_number":74,"context_line":"a QoS policy along with a QoS minimum bandwidth rule [4]_. As described in Nova"},{"line_number":75,"context_line":"spec [2]_, if a VM boot request has a port defined and this port has a QoS"},{"line_number":76,"context_line":"policy attached with a QoS minimum bandwidth rule, that means Placement Service"},{"line_number":77,"context_line":"must enforce this minimum bandwidth requirement."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"A host will satisfy this requirement if it has Inventories of the new Resource"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_6b4d953c","line":76,"range":{"start_line":76,"start_character":62,"end_line":76,"end_character":71},"updated":"2017-10-01 23:54:43.000000000","message":"the Placement","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"The required minimum network bandwidth needed for a port is modeled defining"},{"line_number":74,"context_line":"a QoS policy along with a QoS minimum bandwidth rule [4]_. As described in Nova"},{"line_number":75,"context_line":"spec [2]_, if a VM boot request has a port defined and this port has a QoS"},{"line_number":76,"context_line":"policy attached with a QoS minimum bandwidth rule, that means Placement Service"},{"line_number":77,"context_line":"must enforce this minimum bandwidth requirement."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"A host will satisfy this requirement if it has Inventories of the new Resource"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_cfc6b54a","line":76,"range":{"start_line":76,"start_character":62,"end_line":76,"end_character":71},"in_reply_to":"7f515b1d_6b4d953c","updated":"2017-10-03 16:52:10.000000000","message":"Done","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Resource Providers and Inventories operations"},{"line_number":85,"context_line":"---------------------------------------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Three different operations are identified handle the available bandwidth:"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"1) Initialization:"},{"line_number":90,"context_line":"   This happens when the Neutron agent starts. At this first stage, the agent"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_0b4e2137","line":87,"range":{"start_line":87,"start_character":42,"end_line":87,"end_character":48},"updated":"2017-10-01 23:54:43.000000000","message":"to handle","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Resource Providers and Inventories operations"},{"line_number":85,"context_line":"---------------------------------------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Three different operations are identified handle the available bandwidth:"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"1) Initialization:"},{"line_number":90,"context_line":"   This happens when the Neutron agent starts. At this first stage, the agent"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_afc37938","line":87,"range":{"start_line":87,"start_character":42,"end_line":87,"end_character":48},"in_reply_to":"7f515b1d_0b4e2137","updated":"2017-10-03 16:52:10.000000000","message":"Done","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":85,"context_line":"---------------------------------------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Three different operations are identified handle the available bandwidth:"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"1) Initialization:"},{"line_number":90,"context_line":"   This happens when the Neutron agent starts. At this first stage, the agent"},{"line_number":91,"context_line":"   will read the physical network to device/bridge mappings, retrieve the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_6b24755e","line":88,"updated":"2017-10-01 23:54:43.000000000","message":"How do you control the execution of these 3 operations? How do we know they have to be executed? One alternative is to execute them if we have egressBW and ingressBW values associated to the bridge_mappings/interface_mappings/device_mappings parameters in the agent. What\u0027s the meaning of an agent / host that doesn\u0027t have these parameters defined? Does this mean that such an agent / host is not candidate to be scheduled for an instance with minimum bandwidth requirements? How does the Nova scheduler realize that it has to start taking bandwidth as a factor for scheduling?","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":85,"context_line":"---------------------------------------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Three different operations are identified handle the available bandwidth:"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"1) Initialization:"},{"line_number":90,"context_line":"   This happens when the Neutron agent starts. At this first stage, the agent"},{"line_number":91,"context_line":"   will read the physical network to device/bridge mappings, retrieve the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_f525c20b","line":88,"in_reply_to":"7f515b1d_6b24755e","updated":"2017-10-03 16:52:10.000000000","message":"Give me one more day to reply to this comment.","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9e4d85c13167782e900d2ef5497e06bf45241bd8","unresolved":false,"context_lines":[{"line_number":85,"context_line":"---------------------------------------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Three different operations are identified handle the available bandwidth:"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"1) Initialization:"},{"line_number":90,"context_line":"   This happens when the Neutron agent starts. At this first stage, the agent"},{"line_number":91,"context_line":"   will read the physical network to device/bridge mappings, retrieve the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_d4428cab","line":88,"in_reply_to":"7f515b1d_6b24755e","updated":"2017-10-05 12:01:23.000000000","message":"I\u0027ll create another section talking about how to deploy this feature, involving Nova and Neutron changes, how diferent backends are going to support this feature and how to enable in Neutron.\n\nIn addition, I\u0027ll use Nova spec description to add more detail to operations description.","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"3) QoS minimum bandwidth rule update:"},{"line_number":144,"context_line":"   This operation is out of scope of this spec. Neutron agents and plugins"},{"line_number":145,"context_line":"   can\u0027t know, at the moment, if a port update is because a rule update or"},{"line_number":146,"context_line":"   because is being bound to a new virtual machine. This will be done by"},{"line_number":147,"context_line":"   upgrading the Neutron port binding API. This should be done during the"},{"line_number":148,"context_line":"   work related to `os-vif migration tasks` [5]_."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_ebbe25d3","line":145,"range":{"start_line":145,"start_character":47,"end_line":145,"end_character":59},"updated":"2017-10-01 23:54:43.000000000","message":"is due to a","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"3) QoS minimum bandwidth rule update:"},{"line_number":144,"context_line":"   This operation is out of scope of this spec. Neutron agents and plugins"},{"line_number":145,"context_line":"   can\u0027t know, at the moment, if a port update is because a rule update or"},{"line_number":146,"context_line":"   because is being bound to a new virtual machine. This will be done by"},{"line_number":147,"context_line":"   upgrading the Neutron port binding API. This should be done during the"},{"line_number":148,"context_line":"   work related to `os-vif migration tasks` [5]_."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_8fc0bd2c","line":145,"range":{"start_line":145,"start_character":47,"end_line":145,"end_character":59},"in_reply_to":"7f515b1d_ebbe25d3","updated":"2017-10-03 16:52:10.000000000","message":"Done","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":143,"context_line":"3) QoS minimum bandwidth rule update:"},{"line_number":144,"context_line":"   This operation is out of scope of this spec. Neutron agents and plugins"},{"line_number":145,"context_line":"   can\u0027t know, at the moment, if a port update is because a rule update or"},{"line_number":146,"context_line":"   because is being bound to a new virtual machine. This will be done by"},{"line_number":147,"context_line":"   upgrading the Neutron port binding API. This should be done during the"},{"line_number":148,"context_line":"   work related to `os-vif migration tasks` [5]_."},{"line_number":149,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_cbc12956","line":146,"range":{"start_line":146,"start_character":11,"end_line":146,"end_character":13},"updated":"2017-10-01 23:54:43.000000000","message":"it is","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":143,"context_line":"3) QoS minimum bandwidth rule update:"},{"line_number":144,"context_line":"   This operation is out of scope of this spec. Neutron agents and plugins"},{"line_number":145,"context_line":"   can\u0027t know, at the moment, if a port update is because a rule update or"},{"line_number":146,"context_line":"   because is being bound to a new virtual machine. This will be done by"},{"line_number":147,"context_line":"   upgrading the Neutron port binding API. This should be done during the"},{"line_number":148,"context_line":"   work related to `os-vif migration tasks` [5]_."},{"line_number":149,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_0fea8dab","line":146,"range":{"start_line":146,"start_character":11,"end_line":146,"end_character":13},"in_reply_to":"7f515b1d_cbc12956","updated":"2017-10-03 16:52:10.000000000","message":"Done","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"39a9fa52d8c7c1da47ce491abb1c1e466140a24d","unresolved":false,"context_lines":[{"line_number":150,"context_line":"Neutron agents and RPC calls to ML2 plugin"},{"line_number":151,"context_line":"------------------------------------------"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"No agent can directly access to Placement API. To enable this communication,"},{"line_number":154,"context_line":"a new method will be implemented in the plugin RPC callback class [7]_. This"},{"line_number":155,"context_line":"method will allow any agent to create a Resource Provider and an Inventory."},{"line_number":156,"context_line":"The agent needs to send the physical network name, the traffic direction and"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_abb4adf2","line":153,"range":{"start_line":153,"start_character":29,"end_line":153,"end_character":31},"updated":"2017-10-01 23:54:43.000000000","message":"the","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e79df0113e8d39f4c1881adc37af19f78d621d4b","unresolved":false,"context_lines":[{"line_number":150,"context_line":"Neutron agents and RPC calls to ML2 plugin"},{"line_number":151,"context_line":"------------------------------------------"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"No agent can directly access to Placement API. To enable this communication,"},{"line_number":154,"context_line":"a new method will be implemented in the plugin RPC callback class [7]_. This"},{"line_number":155,"context_line":"method will allow any agent to create a Resource Provider and an Inventory."},{"line_number":156,"context_line":"The agent needs to send the physical network name, the traffic direction and"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f515b1d_efce115a","line":153,"range":{"start_line":153,"start_character":29,"end_line":153,"end_character":31},"in_reply_to":"7f515b1d_abb4adf2","updated":"2017-10-03 16:52:10.000000000","message":"Done","commit_id":"adc79b648226d070a240b5bb99570e209c8489a2"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5a26f9e8ab2bfed869727bf4dd30528a091c12f2","unresolved":false,"context_lines":[{"line_number":73,"context_line":"the egress bandwidth and the ingress bandwidth::"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    device_bandwidth\u003ddevice1:egressBW1:ingressBW1,\\"},{"line_number":76,"context_line":"                     device2:egressBW2:,device3::ingressBW3"},{"line_number":77,"context_line":"    # device1 \u003d {egressBW1, ingressBW2}"},{"line_number":78,"context_line":"    # device1 \u003d {egressBW2, not defined}"},{"line_number":79,"context_line":"    # device1 \u003d {not defined, ingressBW3}"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f4e5783_b04791bc","line":76,"range":{"start_line":76,"start_character":47,"end_line":76,"end_character":49},"updated":"2017-10-17 12:07:35.000000000","message":"Just one : I suppose","commit_id":"96c489d1e63fb04ff5fc9929a308d8bcdd25e41a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"38484517311a8c6a5ad04a6115376f9a291df6a4","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    device_bandwidth\u003ddevice1:egressBW1:ingressBW1,\\"},{"line_number":76,"context_line":"                     device2:egressBW2:,device3::ingressBW3"},{"line_number":77,"context_line":"    # device1 \u003d {egressBW1, ingressBW2}"},{"line_number":78,"context_line":"    # device1 \u003d {egressBW2, not defined}"},{"line_number":79,"context_line":"    # device1 \u003d {not defined, ingressBW3}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7f515b1d_5d50ca5e","line":78,"range":{"start_line":78,"start_character":12,"end_line":78,"end_character":13},"updated":"2017-10-07 00:34:16.000000000","message":"2","commit_id":"96c489d1e63fb04ff5fc9929a308d8bcdd25e41a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6bc40351e7f715a04a30bf32f714ddb115bc3d43","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    device_bandwidth\u003ddevice1:egressBW1:ingressBW1,\\"},{"line_number":76,"context_line":"                     device2:egressBW2:,device3::ingressBW3"},{"line_number":77,"context_line":"    # device1 \u003d {egressBW1, ingressBW2}"},{"line_number":78,"context_line":"    # device1 \u003d {egressBW2, not defined}"},{"line_number":79,"context_line":"    # device1 \u003d {not defined, ingressBW3}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f4e5783_3d269ab9","line":78,"range":{"start_line":78,"start_character":12,"end_line":78,"end_character":13},"in_reply_to":"7f515b1d_5d50ca5e","updated":"2017-10-10 10:03:32.000000000","message":"Done","commit_id":"96c489d1e63fb04ff5fc9929a308d8bcdd25e41a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"38484517311a8c6a5ad04a6115376f9a291df6a4","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                     device2:egressBW2:,device3::ingressBW3"},{"line_number":77,"context_line":"    # device1 \u003d {egressBW1, ingressBW2}"},{"line_number":78,"context_line":"    # device1 \u003d {egressBW2, not defined}"},{"line_number":79,"context_line":"    # device1 \u003d {not defined, ingressBW3}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"How required bandwidth for a Neutron port is modeled"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7f515b1d_3d4f4ebe","line":79,"range":{"start_line":79,"start_character":12,"end_line":79,"end_character":13},"updated":"2017-10-07 00:34:16.000000000","message":"3","commit_id":"96c489d1e63fb04ff5fc9929a308d8bcdd25e41a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6bc40351e7f715a04a30bf32f714ddb115bc3d43","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                     device2:egressBW2:,device3::ingressBW3"},{"line_number":77,"context_line":"    # device1 \u003d {egressBW1, ingressBW2}"},{"line_number":78,"context_line":"    # device1 \u003d {egressBW2, not defined}"},{"line_number":79,"context_line":"    # device1 \u003d {not defined, ingressBW3}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"How required bandwidth for a Neutron port is modeled"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f4e5783_1d3bded1","line":79,"range":{"start_line":79,"start_character":12,"end_line":79,"end_character":13},"in_reply_to":"7f515b1d_3d4f4ebe","updated":"2017-10-10 10:03:32.000000000","message":"Done","commit_id":"96c489d1e63fb04ff5fc9929a308d8bcdd25e41a"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5a26f9e8ab2bfed869727bf4dd30528a091c12f2","unresolved":false,"context_lines":[{"line_number":101,"context_line":"Initialization:"},{"line_number":102,"context_line":"This happens when the Neutron agent starts. At this first stage, the agent"},{"line_number":103,"context_line":"will read the physical network to device/bridge mappings, retrieve the"},{"line_number":104,"context_line":"physical network bandwidth limits (both from configuration and from the real"},{"line_number":105,"context_line":"device) and create, if needed, one Resource Provider per physical network"},{"line_number":106,"context_line":"with up to two Inventories, one per direction."},{"line_number":107,"context_line":"To achieve this, the feature `Support nested resource providers` [6]_ is"},{"line_number":108,"context_line":"needed ::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f4e5783_3045e170","line":105,"range":{"start_line":104,"start_character":35,"end_line":105,"end_character":6},"updated":"2017-10-17 12:07:35.000000000","message":"Am I understand right that it is possible that the agent has config option for the bandwidth and that is overwritten by the physical values read by the agent?","commit_id":"96c489d1e63fb04ff5fc9929a308d8bcdd25e41a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"38484517311a8c6a5ad04a6115376f9a291df6a4","unresolved":false,"context_lines":[{"line_number":107,"context_line":"To achieve this, the feature `Support nested resource providers` [6]_ is"},{"line_number":108,"context_line":"needed ::"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  Compute host RP"},{"line_number":111,"context_line":"      |"},{"line_number":112,"context_line":"      +-\u003e Network Resource RP {"},{"line_number":113,"context_line":"      |       traits: [CUSTOM_PHYSNET_1,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7f515b1d_1d8db2d2","line":110,"updated":"2017-10-07 00:34:16.000000000","message":"Please note that Eric Fried suggested changes to this model here: https://review.openstack.org/#/c/502306/4/specs/queens/approved/bandwidth-resource-provider.rst@77. So this part of this spec will have to be updated if you follow his comments","commit_id":"96c489d1e63fb04ff5fc9929a308d8bcdd25e41a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6bc40351e7f715a04a30bf32f714ddb115bc3d43","unresolved":false,"context_lines":[{"line_number":107,"context_line":"To achieve this, the feature `Support nested resource providers` [6]_ is"},{"line_number":108,"context_line":"needed ::"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  Compute host RP"},{"line_number":111,"context_line":"      |"},{"line_number":112,"context_line":"      +-\u003e Network Resource RP {"},{"line_number":113,"context_line":"      |       traits: [CUSTOM_PHYSNET_1,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f4e5783_3d5e9ae6","line":110,"in_reply_to":"7f515b1d_1d8db2d2","updated":"2017-10-10 10:03:32.000000000","message":"Yes, I\u0027m aware and, of course, I\u0027m trying to synchronize both specs.\n\nThis model (Neutron spec PS2) is the latest one proposed (Nova spec PS7). Eric Fried is OK with this model but not with the traits used. This conversation is still ongoing, waiting for Jay Pipes comments.\n\nAnyway, this is the accepted model with the possible exception of the physical network backends trais (SRIOV_NET, LB_NET, OVS_NET). But this is a minor change I want to address ASAP in Nova spec.\n\nOf course, as soon as I have the confirmation in Nova spec, I\u0027ll inform you.","commit_id":"96c489d1e63fb04ff5fc9929a308d8bcdd25e41a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"38484517311a8c6a5ad04a6115376f9a291df6a4","unresolved":false,"context_lines":[{"line_number":154,"context_line":"* Nova request a port to Neutron. This port could be already created (for"},{"line_number":155,"context_line":"  example, when requesting an SR-IOV port) or could be a new one."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Neutron [3]_ will return, inside the port information, the Resource Class"},{"line_number":158,"context_line":"  (depending on the traffic direction) and the value needed (network bandwidth"},{"line_number":159,"context_line":"  in bits per second). This requires a Neutron API change. The spec for this"},{"line_number":160,"context_line":"  change is not ready yet. Once is public, I\u0027ll add the reference to this"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7f515b1d_3d598e59","line":157,"range":{"start_line":157,"start_character":61,"end_line":157,"end_character":75},"updated":"2017-10-07 00:34:16.000000000","message":"In https://review.openstack.org/#/c/396297/7/specs/pike/strict-minimum-bandwidth-support.rst@68 we were already returning the bandwidths. Are we going to add the resource class?","commit_id":"96c489d1e63fb04ff5fc9929a308d8bcdd25e41a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6bc40351e7f715a04a30bf32f714ddb115bc3d43","unresolved":false,"context_lines":[{"line_number":154,"context_line":"* Nova request a port to Neutron. This port could be already created (for"},{"line_number":155,"context_line":"  example, when requesting an SR-IOV port) or could be a new one."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Neutron [3]_ will return, inside the port information, the Resource Class"},{"line_number":158,"context_line":"  (depending on the traffic direction) and the value needed (network bandwidth"},{"line_number":159,"context_line":"  in bits per second). This requires a Neutron API change. The spec for this"},{"line_number":160,"context_line":"  change is not ready yet. Once is public, I\u0027ll add the reference to this"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f4e5783_bd728a10","line":157,"range":{"start_line":157,"start_character":61,"end_line":157,"end_character":75},"in_reply_to":"7f515b1d_3d598e59","updated":"2017-10-10 10:03:32.000000000","message":"Let me put this on hold. I\u0027m talking to Sean K Mooney about this.","commit_id":"96c489d1e63fb04ff5fc9929a308d8bcdd25e41a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"154221eb874a9d6954960f2a6ae4e242341a9915","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                  NET_BANDWIDTH_INGRESS_BITS_SEC \u003d 1000000000,"},{"line_number":144,"context_line":"                  NET_BANDWIDTH_EGRESS_BITS_SEC \u003d 1000000000"},{"line_number":145,"context_line":"              }"},{"line_number":146,"context_line":"          }"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Port binding:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa0c359_1f0afc1e","line":146,"updated":"2018-02-23 09:28:40.000000000","message":"this diagram is little bit different than what is in https://review.openstack.org/#/c/502306/14/specs/queens/approved/bandwidth-resource-provider.rst\nshouldn\u0027t it be the same but only with one \"agent\" child node for \"compute host RP\"?","commit_id":"c8319579b07f634d622f364d33452871fff44722"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"154221eb874a9d6954960f2a6ae4e242341a9915","unresolved":false,"context_lines":[{"line_number":152,"context_line":"is already recorded. In order, the execution sequence is the following one:"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Nova request a port to Neutron. This port could be already created (for"},{"line_number":155,"context_line":"  example, when requesting an SR-IOV port) or could be a new one."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Neutron [3]_ will return, inside the port information, the Resource Class"},{"line_number":158,"context_line":"  (depending on the traffic direction) and the value needed (network bandwidth"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa0c359_bfde686a","line":155,"updated":"2018-02-23 09:28:40.000000000","message":"So it will be changed on nova\u0027s side because currently nova-compute requests ports and it is after scheduling is done, right?","commit_id":"c8319579b07f634d622f364d33452871fff44722"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"36bf1a6308e8a94888d3c6c335cbb5dc404e1eb6","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Minimum bandwidth rule update:"},{"line_number":176,"context_line":"When a minimum bandwidth rule is updated, the ML2 plugin will list the bound"},{"line_number":177,"context_line":"ports with this QoS policy and rule attached and will update the Allocation"},{"line_number":178,"context_line":"value. The `consumer_id` of each Allocation is the `port_id`, which is unique."},{"line_number":179,"context_line":"This is out of scope in this spec and should be done during the work related"},{"line_number":180,"context_line":"to `os-vif migration tasks` [5]_."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa0c359_6d4da539","line":177,"range":{"start_line":177,"start_character":54,"end_line":177,"end_character":75},"updated":"2018-03-20 23:35:49.000000000","message":"Is this something that can be done through the Placement ReST API? Ask cdent","commit_id":"c8319579b07f634d622f364d33452871fff44722"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"36cbb2a06ae47ee342c909521c7e5140ed4139ca","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Minimum bandwidth rule update:"},{"line_number":176,"context_line":"When a minimum bandwidth rule is updated, the ML2 plugin will list the bound"},{"line_number":177,"context_line":"ports with this QoS policy and rule attached and will update the Allocation"},{"line_number":178,"context_line":"value. The `consumer_id` of each Allocation is the `port_id`, which is unique."},{"line_number":179,"context_line":"This is out of scope in this spec and should be done during the work related"},{"line_number":180,"context_line":"to `os-vif migration tasks` [5]_."}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_d2d285d1","line":177,"range":{"start_line":177,"start_character":54,"end_line":177,"end_character":75},"in_reply_to":"3fa0c359_6d4da539","updated":"2018-03-22 16:47:07.000000000","message":"I think the update itself is perfectly possible: https://developer.openstack.org/api-ref/placement/#update-allocations","commit_id":"c8319579b07f634d622f364d33452871fff44722"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1451fc54368d4386d55b1de9baedfb8c3e4a38a0","unresolved":false,"context_lines":[{"line_number":182,"context_line":"Neutron agents and RPC calls to ML2 plugin"},{"line_number":183,"context_line":"------------------------------------------"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"No agent can directly access the Placement API. To enable this communication,"},{"line_number":186,"context_line":"a new method will be implemented in the plugin RPC callback class [7]_. This"},{"line_number":187,"context_line":"method will allow any agent to create a Resource Provider and an Inventory."},{"line_number":188,"context_line":"The agent needs to send the physical network name, the traffic direction and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7f96bb07_d66a4f7f","line":185,"range":{"start_line":185,"start_character":0,"end_line":185,"end_character":46},"updated":"2018-01-17 14:20:48.000000000","message":"Could you give some details why you stated this? I can accept it but some details for the why would be good.","commit_id":"c8319579b07f634d622f364d33452871fff44722"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cbd327579beb1d7514a4b7af7ad7407f684d4fc2","unresolved":false,"context_lines":[{"line_number":182,"context_line":"Neutron agents and RPC calls to ML2 plugin"},{"line_number":183,"context_line":"------------------------------------------"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"No agent can directly access the Placement API. To enable this communication,"},{"line_number":186,"context_line":"a new method will be implemented in the plugin RPC callback class [7]_. This"},{"line_number":187,"context_line":"method will allow any agent to create a Resource Provider and an Inventory."},{"line_number":188,"context_line":"The agent needs to send the physical network name, the traffic direction and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa0c359_0f3b8337","line":185,"range":{"start_line":185,"start_character":0,"end_line":185,"end_character":46},"in_reply_to":"7f96bb07_d66a4f7f","updated":"2018-02-26 15:52:36.000000000","message":"It could be that the neutron agent never talks to external APIs directly historically. But I\u0027m guessing so it would be nice to see some reasoning here.","commit_id":"c8319579b07f634d622f364d33452871fff44722"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"154221eb874a9d6954960f2a6ae4e242341a9915","unresolved":false,"context_lines":[{"line_number":186,"context_line":"a new method will be implemented in the plugin RPC callback class [7]_. This"},{"line_number":187,"context_line":"method will allow any agent to create a Resource Provider and an Inventory."},{"line_number":188,"context_line":"The agent needs to send the physical network name, the traffic direction and"},{"line_number":189,"context_line":"the physical network bandwidth."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa0c359_5f3c0492","line":189,"updated":"2018-02-23 09:28:40.000000000","message":"so only neutron-server will talk to placement API with REST calls, right?","commit_id":"c8319579b07f634d622f364d33452871fff44722"}],"specs/rocky/minimum-bandwidth-allocation-placement-api.rst":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7a3a0288156febb1555ffc01acbbf7bd49e0076a","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Currently there are several parameters, quantitative and qualitative,"},{"line_number":20,"context_line":"that define a nova server and are used to select the correct host"},{"line_number":21,"context_line":"and network backend devices to run it.  Network bandwidth is not yet"},{"line_number":22,"context_line":"among these parameters. This allows situations where a physical network"},{"line_number":23,"context_line":"device could be oversubscribed."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_58980669","line":21,"range":{"start_line":21,"start_character":38,"end_line":21,"end_character":40},"updated":"2018-03-21 08:36:42.000000000","message":"nitty nit: too many spaces","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b39957a96b5c3295f852a522b4cea6e16891fe9c","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Currently there are several parameters, quantitative and qualitative,"},{"line_number":20,"context_line":"that define a nova server and are used to select the correct host"},{"line_number":21,"context_line":"and network backend devices to run it.  Network bandwidth is not yet"},{"line_number":22,"context_line":"among these parameters. This allows situations where a physical network"},{"line_number":23,"context_line":"device could be oversubscribed."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_ac4ec093","line":21,"range":{"start_line":21,"start_character":38,"end_line":21,"end_character":40},"in_reply_to":"df7087c5_58980669","updated":"2018-03-22 16:13:34.000000000","message":"Done","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7a3a0288156febb1555ffc01acbbf7bd49e0076a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"The most straightforward use case is when a user, who has paid a premium"},{"line_number":55,"context_line":"service that guarantees a minimum network bandwidth, wants to spawn a"},{"line_number":56,"context_line":"nova server. The scheduler needs to know how much bandwidth is already"},{"line_number":57,"context_line":"in use in each RP representing a physical network device in each compute host and how much bandwidth the user is requesting."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Data plane only enforcement was merged in Newton for SR-IOV egress"},{"line_number":60,"context_line":"(see `Newton Release Notes` [6]_)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_d8c41643","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":124},"updated":"2018-03-21 08:36:42.000000000","message":"please wrap this line up - will be easier to read","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b39957a96b5c3295f852a522b4cea6e16891fe9c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"The most straightforward use case is when a user, who has paid a premium"},{"line_number":55,"context_line":"service that guarantees a minimum network bandwidth, wants to spawn a"},{"line_number":56,"context_line":"nova server. The scheduler needs to know how much bandwidth is already"},{"line_number":57,"context_line":"in use in each RP representing a physical network device in each compute host and how much bandwidth the user is requesting."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Data plane only enforcement was merged in Newton for SR-IOV egress"},{"line_number":60,"context_line":"(see `Newton Release Notes` [6]_)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_4c45a46f","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":124},"in_reply_to":"df7087c5_d8c41643","updated":"2018-03-22 16:13:34.000000000","message":"Done","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"3e128e1f3254fffef928a76b9ce11d2b6729b801","unresolved":false,"context_lines":[{"line_number":56,"context_line":"nova server. The scheduler needs to know how much bandwidth is already"},{"line_number":57,"context_line":"in use in each RP representing a physical network device in each compute host and how much bandwidth the user is requesting."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Data plane only enforcement was merged in Newton for SR-IOV egress"},{"line_number":60,"context_line":"(see `Newton Release Notes` [6]_)."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Placement only enforcement may be a viable feature for users able"},{"line_number":63,"context_line":"to control all traffic (eg. in a single tenant private cloud)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_b0ef0e86","line":60,"range":{"start_line":59,"start_character":0,"end_line":60,"end_character":34},"updated":"2018-03-20 16:15:07.000000000","message":"Is this considered experimental? Or is it used already by someone even without placement enforcement? Do we consider data-plane only enforcement a feature in itself after placement enforcement is available?","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"36bf1a6308e8a94888d3c6c335cbb5dc404e1eb6","unresolved":false,"context_lines":[{"line_number":56,"context_line":"nova server. The scheduler needs to know how much bandwidth is already"},{"line_number":57,"context_line":"in use in each RP representing a physical network device in each compute host and how much bandwidth the user is requesting."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Data plane only enforcement was merged in Newton for SR-IOV egress"},{"line_number":60,"context_line":"(see `Newton Release Notes` [6]_)."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Placement only enforcement may be a viable feature for users able"},{"line_number":63,"context_line":"to control all traffic (eg. in a single tenant private cloud)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_efc038e3","line":60,"range":{"start_line":59,"start_character":0,"end_line":60,"end_character":34},"in_reply_to":"df7087c5_b0ef0e86","updated":"2018-03-20 23:35:49.000000000","message":"It is not experimental and it is considered a feature in itself","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7a3a0288156febb1555ffc01acbbf7bd49e0076a","unresolved":false,"context_lines":[{"line_number":56,"context_line":"nova server. The scheduler needs to know how much bandwidth is already"},{"line_number":57,"context_line":"in use in each RP representing a physical network device in each compute host and how much bandwidth the user is requesting."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Data plane only enforcement was merged in Newton for SR-IOV egress"},{"line_number":60,"context_line":"(see `Newton Release Notes` [6]_)."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Placement only enforcement may be a viable feature for users able"},{"line_number":63,"context_line":"to control all traffic (eg. in a single tenant private cloud)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_58ffa666","line":60,"range":{"start_line":59,"start_character":0,"end_line":60,"end_character":34},"in_reply_to":"df7087c5_efc038e3","updated":"2018-03-21 08:36:42.000000000","message":"yes, but it is \"best effort\" only as scheduler is not aware of it :)","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7a3a0288156febb1555ffc01acbbf7bd49e0076a","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"1. The user must be able to express the resource needs of a port."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"   1. Extend ``qos_minimum_bandwidth_rule`` with ingress direction."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"      Unlike enforcement in the data plane, Placement can handle both"},{"line_number":73,"context_line":"      directions by the same effort."}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_58132667","line":70,"updated":"2018-03-21 08:36:42.000000000","message":"I wonder how You want to ensure minimum ingress bandwidth for one port/VM. Even if You will set some tc qdisc rules on Your physical interface You can\u0027t control internet and what other people will send to Your physical interface, right?","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b39957a96b5c3295f852a522b4cea6e16891fe9c","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"1. The user must be able to express the resource needs of a port."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"   1. Extend ``qos_minimum_bandwidth_rule`` with ingress direction."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"      Unlike enforcement in the data plane, Placement can handle both"},{"line_number":73,"context_line":"      directions by the same effort."}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_2c8390ab","line":70,"in_reply_to":"df7087c5_58132667","updated":"2018-03-22 16:13:34.000000000","message":"You\u0027re right, I don\u0027t see a generic solution for untrusted applications. However for placing trusted applications speaking protocols where we have congestion control I think the ingress rule makes sense. Of course that will not protect against DoS from unknown sources.","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7a3a0288156febb1555ffc01acbbf7bd49e0076a","unresolved":false,"context_lines":[{"line_number":73,"context_line":"      directions by the same effort."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"   2. Mark ``qos_minimum_bandwidth_rule`` as supported QoS policy rule"},{"line_number":76,"context_line":"      independent of QoS drivers."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"      Placement enforcement is orthogonal to backend mechanisms. A user"},{"line_number":79,"context_line":"      can have placement enforcement for drivers not having data plane"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_d8aad617","line":76,"updated":"2018-03-21 08:36:42.000000000","message":"but how You then want to inform user if driver supports such rule or not - it is IMO quite important information as it will define how this rule will work in fact.\nMaybe we should have some switch in Neutron config - use_supported_qos_rules \u003d {False/True} to turn on/off rules validation?","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1bd2d9bb6e874a307458e1e73ecf77bead3109b5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"      directions by the same effort."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"   2. Mark ``qos_minimum_bandwidth_rule`` as supported QoS policy rule"},{"line_number":76,"context_line":"      independent of QoS drivers."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"      Placement enforcement is orthogonal to backend mechanisms. A user"},{"line_number":79,"context_line":"      can have placement enforcement for drivers not having data plane"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_db689588","line":76,"in_reply_to":"bf659307_de274eb6","updated":"2018-03-27 14:55:37.000000000","message":"I realized having two rules is also problematic, because then the user has to keep the amount of guaranteed bandwidth synced between them. Could we extend qos_minimum_bandwidth_rule like this?\n\n * id: unchanged\n * direction: egress/ingress\n * min_kbps: unchanged\n * enforce_data_plane: true/false\n * enforce_placement: true/false\n\nA rule like this could be validated properly, couldn\u0027t it?","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9b23c5ef2a9e561335f0e46bb23fa9b2e34145a1","unresolved":false,"context_lines":[{"line_number":73,"context_line":"      directions by the same effort."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"   2. Mark ``qos_minimum_bandwidth_rule`` as supported QoS policy rule"},{"line_number":76,"context_line":"      independent of QoS drivers."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"      Placement enforcement is orthogonal to backend mechanisms. A user"},{"line_number":79,"context_line":"      can have placement enforcement for drivers not having data plane"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_ad35a8f9","line":76,"in_reply_to":"df7087c5_c7e50f3a","updated":"2018-05-03 14:09:21.000000000","message":"\u003e I see two alternatives to express the different combinations of\n \u003e enforcements:\n \u003e \n \u003e 1) by documentation\n \u003e \n \u003e 2) having two rule types:\n \u003e \n \u003e * qos_minimum_bandwidth_rule (meaning: enforced in data plane, as\n \u003e today for SR-IOV)\n \u003e * qos_minimum_bandwidth_placement_rule (meaning enforced in\n \u003e placement decision)\n \u003e \n \u003e (1) is clearly suboptimal, but easier to do, so I suggested that\n \u003e first. But I\u0027m open to (2).","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"ad01fdc81b4e0aa81bfe3706ab84772738d59904","unresolved":false,"context_lines":[{"line_number":73,"context_line":"      directions by the same effort."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"   2. Mark ``qos_minimum_bandwidth_rule`` as supported QoS policy rule"},{"line_number":76,"context_line":"      independent of QoS drivers."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"      Placement enforcement is orthogonal to backend mechanisms. A user"},{"line_number":79,"context_line":"      can have placement enforcement for drivers not having data plane"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_de274eb6","line":76,"in_reply_to":"df7087c5_c7e50f3a","updated":"2018-03-26 10:15:05.000000000","message":"IMHO second solution could be better in fact but maybe name of this new rule should be different, something like \"qos_guaranted_minimum_bandwidth\". Than it could be easier to use current validations mechanism for QoS rules.","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b39957a96b5c3295f852a522b4cea6e16891fe9c","unresolved":false,"context_lines":[{"line_number":73,"context_line":"      directions by the same effort."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"   2. Mark ``qos_minimum_bandwidth_rule`` as supported QoS policy rule"},{"line_number":76,"context_line":"      independent of QoS drivers."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"      Placement enforcement is orthogonal to backend mechanisms. A user"},{"line_number":79,"context_line":"      can have placement enforcement for drivers not having data plane"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_c7e50f3a","line":76,"in_reply_to":"df7087c5_d8aad617","updated":"2018-03-22 16:13:34.000000000","message":"I see two alternatives to express the different combinations of enforcements:\n\n1) by documentation\n\n2) having two rule types:\n\n* qos_minimum_bandwidth_rule (meaning: enforced in data plane, as today for SR-IOV)\n* qos_minimum_bandwidth_placement_rule (meaning enforced in placement decision)\n\n(1) is clearly suboptimal, but easier to do, so I suggested that first. But I\u0027m open to (2).","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7a3a0288156febb1555ffc01acbbf7bd49e0076a","unresolved":false,"context_lines":[{"line_number":79,"context_line":"      can have placement enforcement for drivers not having data plane"},{"line_number":80,"context_line":"      enforcement (yet)."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"   Due to the fact the we exposed (and likely want to expose further)"},{"line_number":83,"context_line":"   partial results of this development effort to end users, the meaning of"},{"line_number":84,"context_line":"   a ``qos_minimum_bandwidth_rule`` depends on OpenStack version, Neutron"},{"line_number":85,"context_line":"   backend driver and the rule\u0027s direction. A rule may be enforced by"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_786f0afc","line":82,"range":{"start_line":82,"start_character":19,"end_line":82,"end_character":22},"updated":"2018-03-21 08:36:42.000000000","message":"that?","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b39957a96b5c3295f852a522b4cea6e16891fe9c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"      can have placement enforcement for drivers not having data plane"},{"line_number":80,"context_line":"      enforcement (yet)."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"   Due to the fact the we exposed (and likely want to expose further)"},{"line_number":83,"context_line":"   partial results of this development effort to end users, the meaning of"},{"line_number":84,"context_line":"   a ``qos_minimum_bandwidth_rule`` depends on OpenStack version, Neutron"},{"line_number":85,"context_line":"   backend driver and the rule\u0027s direction. A rule may be enforced by"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_a739fba3","line":82,"range":{"start_line":82,"start_character":19,"end_line":82,"end_character":22},"in_reply_to":"df7087c5_786f0afc","updated":"2018-03-22 16:13:34.000000000","message":"Done","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"3e128e1f3254fffef928a76b9ce11d2b6729b801","unresolved":false,"context_lines":[{"line_number":79,"context_line":"      can have placement enforcement for drivers not having data plane"},{"line_number":80,"context_line":"      enforcement (yet)."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"   Due to the fact the we exposed (and likely want to expose further)"},{"line_number":83,"context_line":"   partial results of this development effort to end users, the meaning of"},{"line_number":84,"context_line":"   a ``qos_minimum_bandwidth_rule`` depends on OpenStack version, Neutron"},{"line_number":85,"context_line":"   backend driver and the rule\u0027s direction. A rule may be enforced by"},{"line_number":86,"context_line":"   placement and/or on the data plane. Since Neutron\u0027s choice of backend"},{"line_number":87,"context_line":"   is hidden from the cloud user, the deployer must clearly document"},{"line_number":88,"context_line":"   what behavior a cloud user may expect in a particular deployment."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"2. Neutron must convey the resource needs of a port to Nova."},{"line_number":91,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_3088dec4","line":88,"range":{"start_line":82,"start_character":0,"end_line":88,"end_character":68},"updated":"2018-03-20 16:15:07.000000000","message":"This could be expressed with multiple rule types too.","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"36bf1a6308e8a94888d3c6c335cbb5dc404e1eb6","unresolved":false,"context_lines":[{"line_number":93,"context_line":"   \u0027Resource request in the port\u0027 in [2]_. This attribute is a computed read-only property."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"   Information available at port create time (ie. before the port"},{"line_number":96,"context_line":"   is bound) must be sufficient to generate the ``resource_request``"},{"line_number":97,"context_line":"   attribute."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"   The port extension must be decoupled from ML2 and kept"},{"line_number":100,"context_line":"   in the QoS service plugin. One way to do that is to use"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_0fe1ebfc","line":97,"range":{"start_line":96,"start_character":13,"end_line":97,"end_character":13},"updated":"2018-03-20 23:35:49.000000000","message":"in resource_request, we have the following attribute:\n\n\"required\": [CUSTOM_PHYSNET_2, NET_AGENT_OVS]\n\nPhysnet should be a problem unless we are in a routed networks environment. Routed networks are not a single L2 broadcast domain and therefore can be made up of several physnets.\n\nFor the type of agent, we are pretty much prescribing the agent that is going to bind the port. How do you suggest to achieve this? We can use the the binding VNIC_type to specify direct (example here: https://docs.openstack.org/mitaka/networking-guide/config-sriov.html. But please note that covers a range of possibilities: SR_IOV, vaxvtap, direct-physical","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b39957a96b5c3295f852a522b4cea6e16891fe9c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"   \u0027Resource request in the port\u0027 in [2]_. This attribute is a computed read-only property."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"   Information available at port create time (ie. before the port"},{"line_number":96,"context_line":"   is bound) must be sufficient to generate the ``resource_request``"},{"line_number":97,"context_line":"   attribute."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"   The port extension must be decoupled from ML2 and kept"},{"line_number":100,"context_line":"   in the QoS service plugin. One way to do that is to use"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_4deb42db","line":97,"range":{"start_line":96,"start_character":13,"end_line":97,"end_character":13},"in_reply_to":"df7087c5_0fe1ebfc","updated":"2018-03-22 16:13:34.000000000","message":"I suggested using vnic_type instead of prescribing the agent in the nova spec. Please see here: https://review.openstack.org/#/c/502306/18/specs/rocky/approved/bandwidth-resource-provider.rst@372\n\nIt seems to me we\u0027re thinking of the same thing. That is placement should choose candidates based on vnic_type. If we have multiple backends capable of implementing ports of the same vnic_type then placement returns all of them as candidates and only (scheduler/) port binding narrows the selection to one backend.\n\nRegarding routed networks I will have to read up on routed networks to give you some meaningful answer. However I guess you meant \"Physnet should be a problem *if* we are in a routed networks environment\", right?","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"3e128e1f3254fffef928a76b9ce11d2b6729b801","unresolved":false,"context_lines":[{"line_number":96,"context_line":"   is bound) must be sufficient to generate the ``resource_request``"},{"line_number":97,"context_line":"   attribute."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"   The port extension must be decoupled from ML2 and kept"},{"line_number":100,"context_line":"   in the QoS service plugin. One way to do that is to use"},{"line_number":101,"context_line":"   neutron.db._resource_extend like ``trunk_details`` uses it."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"3. Neutron must populate the Placement DB with the available resources."},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_108d9ad2","line":101,"range":{"start_line":99,"start_character":0,"end_line":101,"end_character":62},"updated":"2018-03-20 16:15:07.000000000","message":"Assuming no other Neutron plugin wants to add resources to a port. Shared responsibility for that attribute would be more complicated.","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"36bf1a6308e8a94888d3c6c335cbb5dc404e1eb6","unresolved":false,"context_lines":[{"line_number":105,"context_line":"   Report information on available resources to the Placement service"},{"line_number":106,"context_line":"   using the Placement API [1]_. This information includes:"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"   * resource providers"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"   * resource provider traits"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"   * resource provider inventories"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"   The cloud admin must be able to control (by configuration) what is"},{"line_number":115,"context_line":"   reported to Placement. To ease the configuration work autodiscovery"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_efcef781","line":112,"range":{"start_line":108,"start_character":0,"end_line":112,"end_character":34},"updated":"2018-03-20 23:35:49.000000000","message":"Why not point to the \"Networking RP model\" section of the Nova spec?","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b39957a96b5c3295f852a522b4cea6e16891fe9c","unresolved":false,"context_lines":[{"line_number":105,"context_line":"   Report information on available resources to the Placement service"},{"line_number":106,"context_line":"   using the Placement API [1]_. This information includes:"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"   * resource providers"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"   * resource provider traits"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"   * resource provider inventories"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"   The cloud admin must be able to control (by configuration) what is"},{"line_number":115,"context_line":"   reported to Placement. To ease the configuration work autodiscovery"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_87c63716","line":112,"range":{"start_line":108,"start_character":0,"end_line":112,"end_character":34},"in_reply_to":"df7087c5_dbbe50fe","updated":"2018-03-22 16:13:34.000000000","message":"Done","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7a3a0288156febb1555ffc01acbbf7bd49e0076a","unresolved":false,"context_lines":[{"line_number":105,"context_line":"   Report information on available resources to the Placement service"},{"line_number":106,"context_line":"   using the Placement API [1]_. This information includes:"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"   * resource providers"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"   * resource provider traits"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"   * resource provider inventories"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"   The cloud admin must be able to control (by configuration) what is"},{"line_number":115,"context_line":"   reported to Placement. To ease the configuration work autodiscovery"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_dbbe50fe","line":112,"range":{"start_line":108,"start_character":0,"end_line":112,"end_character":34},"in_reply_to":"df7087c5_efcef781","updated":"2018-03-21 08:36:42.000000000","message":"+1","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"3e128e1f3254fffef928a76b9ce11d2b6729b801","unresolved":false,"context_lines":[{"line_number":116,"context_line":"   of networking devices may be employed, but the admin must be able to"},{"line_number":117,"context_line":"   override its results."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Which devices and parameters will be tracked"},{"line_number":120,"context_line":"--------------------------------------------"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Each Neutron agent (Open vSwitch, Linux Bridge, SR-IOV) has a configuration"},{"line_number":123,"context_line":"parameter to link a physical network with a provider interface (SR-IOV) or"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_10a6fa54","line":120,"range":{"start_line":119,"start_character":0,"end_line":120,"end_character":44},"updated":"2018-03-20 16:15:07.000000000","message":"This section may need some re-work. I find the first figure vague. Hardcoding any compute internal network topology (what bonds, what vlans, etc) is going to bind our hands later. Could we make this general like: https://review.openstack.org/550244","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"36bf1a6308e8a94888d3c6c335cbb5dc404e1eb6","unresolved":false,"context_lines":[{"line_number":116,"context_line":"   of networking devices may be employed, but the admin must be able to"},{"line_number":117,"context_line":"   override its results."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Which devices and parameters will be tracked"},{"line_number":120,"context_line":"--------------------------------------------"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Each Neutron agent (Open vSwitch, Linux Bridge, SR-IOV) has a configuration"},{"line_number":123,"context_line":"parameter to link a physical network with a provider interface (SR-IOV) or"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_cf98d376","line":120,"range":{"start_line":119,"start_character":0,"end_line":120,"end_character":44},"in_reply_to":"df7087c5_10a6fa54","updated":"2018-03-20 23:35:49.000000000","message":"Yes, let\u0027s take a stab at that. The current form of the section is vague and confusing :-)","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b39957a96b5c3295f852a522b4cea6e16891fe9c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"   of networking devices may be employed, but the admin must be able to"},{"line_number":117,"context_line":"   override its results."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Which devices and parameters will be tracked"},{"line_number":120,"context_line":"--------------------------------------------"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Each Neutron agent (Open vSwitch, Linux Bridge, SR-IOV) has a configuration"},{"line_number":123,"context_line":"parameter to link a physical network with a provider interface (SR-IOV) or"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_3eb2ad4a","line":120,"range":{"start_line":119,"start_character":0,"end_line":120,"end_character":44},"in_reply_to":"df7087c5_cf98d376","updated":"2018-03-22 16:13:34.000000000","message":"Done","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7a3a0288156febb1555ffc01acbbf7bd49e0076a","unresolved":false,"context_lines":[{"line_number":170,"context_line":"Reporting Available Resources"},{"line_number":171,"context_line":"-----------------------------"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Neutron-external details of reporting available resources is described on the following sections of [2]_:"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"* Neutron agent first start"},{"line_number":176,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_3b6e6c96","line":173,"updated":"2018-03-21 08:36:42.000000000","message":"nit: line little bit too long","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b39957a96b5c3295f852a522b4cea6e16891fe9c","unresolved":false,"context_lines":[{"line_number":170,"context_line":"Reporting Available Resources"},{"line_number":171,"context_line":"-----------------------------"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Neutron-external details of reporting available resources is described on the following sections of [2]_:"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"* Neutron agent first start"},{"line_number":176,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_27d5ebb7","line":173,"in_reply_to":"df7087c5_3b6e6c96","updated":"2018-03-22 16:13:34.000000000","message":"Done","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"36bf1a6308e8a94888d3c6c335cbb5dc404e1eb6","unresolved":false,"context_lines":[{"line_number":199,"context_line":"  itself. Nova has the compute heartbeat mechanism to ensure scheduler"},{"line_number":200,"context_line":"  considers the live Placement records only. In case liveness of Neutron"},{"line_number":201,"context_line":"  resource information is needed the only practical way is to build on the"},{"line_number":202,"context_line":"  Neutron-agent heartbeat mechanism. Otherwise the reporting and heartbeat mechanism would take different paths. Given that liveness would be known by"},{"line_number":203,"context_line":"  Neutron-server and for example could be queried by a scheduler filter."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"  Until a need for known live resource information is discovered direct"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_ef3d972c","line":202,"range":{"start_line":202,"start_character":96,"end_line":202,"end_character":150},"updated":"2018-03-20 23:35:49.000000000","message":"nit: line way too long","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b39957a96b5c3295f852a522b4cea6e16891fe9c","unresolved":false,"context_lines":[{"line_number":199,"context_line":"  itself. Nova has the compute heartbeat mechanism to ensure scheduler"},{"line_number":200,"context_line":"  considers the live Placement records only. In case liveness of Neutron"},{"line_number":201,"context_line":"  resource information is needed the only practical way is to build on the"},{"line_number":202,"context_line":"  Neutron-agent heartbeat mechanism. Otherwise the reporting and heartbeat mechanism would take different paths. Given that liveness would be known by"},{"line_number":203,"context_line":"  Neutron-server and for example could be queried by a scheduler filter."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"  Until a need for known live resource information is discovered direct"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_87ef1786","line":202,"range":{"start_line":202,"start_character":96,"end_line":202,"end_character":150},"in_reply_to":"df7087c5_ef3d972c","updated":"2018-03-22 16:13:34.000000000","message":"Done","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7a3a0288156febb1555ffc01acbbf7bd49e0076a","unresolved":false,"context_lines":[{"line_number":211,"context_line":"  the relevant Nova-compute host RP is created. (The reason being is that"},{"line_number":212,"context_line":"  Nova-compute host RP UUID is unpredictable to Neutron.) We believe"},{"line_number":213,"context_line":"  that while waiting for the Nova-compute host RP a Neutron-agent can"},{"line_number":214,"context_line":"  progress with its legacy functions."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Port binding changes"},{"line_number":217,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_3bf3cce9","line":214,"updated":"2018-03-21 08:36:42.000000000","message":"How You will know in Neutron agent that Nova-compute already created RP?","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"ef32bb78a1fbe38cc1a4ec3cb1881de4357ac31a","unresolved":false,"context_lines":[{"line_number":211,"context_line":"  the relevant Nova-compute host RP is created. (The reason being is that"},{"line_number":212,"context_line":"  Nova-compute host RP UUID is unpredictable to Neutron.) We believe"},{"line_number":213,"context_line":"  that while waiting for the Nova-compute host RP a Neutron-agent can"},{"line_number":214,"context_line":"  progress with its legacy functions."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Port binding changes"},{"line_number":217,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_835f4440","line":214,"in_reply_to":"df7087c5_0f5c3eeb","updated":"2018-03-26 08:49:47.000000000","message":"Nova cannot tell which rps would need to be reparented.","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b39957a96b5c3295f852a522b4cea6e16891fe9c","unresolved":false,"context_lines":[{"line_number":211,"context_line":"  the relevant Nova-compute host RP is created. (The reason being is that"},{"line_number":212,"context_line":"  Nova-compute host RP UUID is unpredictable to Neutron.) We believe"},{"line_number":213,"context_line":"  that while waiting for the Nova-compute host RP a Neutron-agent can"},{"line_number":214,"context_line":"  progress with its legacy functions."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Port binding changes"},{"line_number":217,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_c77f4fa9","line":214,"in_reply_to":"df7087c5_3bf3cce9","updated":"2018-03-22 16:13:34.000000000","message":"I think the only way today is to wait and retry (indefinitely) to query the RP by rp_name\u003d\u003dhostname.\n\nside note: In theory it would be possible for both nova and neutron that whoever gets there first creates the common parts of the rp tree without blocking. That is the compute host rp in this case. But since nova chose to identify the compute host rp with an id that\u0027s unpredictable to neutron we can\u0027t do that.","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ee9fac8a7964a7f8f7042afdb41468182b5641f8","unresolved":false,"context_lines":[{"line_number":211,"context_line":"  the relevant Nova-compute host RP is created. (The reason being is that"},{"line_number":212,"context_line":"  Nova-compute host RP UUID is unpredictable to Neutron.) We believe"},{"line_number":213,"context_line":"  that while waiting for the Nova-compute host RP a Neutron-agent can"},{"line_number":214,"context_line":"  progress with its legacy functions."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Port binding changes"},{"line_number":217,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_0f5c3eeb","line":214,"in_reply_to":"df7087c5_c77f4fa9","updated":"2018-03-23 09:07:25.000000000","message":"Another solution could be (perhaps too complex) that neutron at startup if the compute rp is not created creates the neutron related rp without the parent_provider_uuid set, and when the compute rp is created nova updates the neutron rps with parent_provider_uuid to point to the given compute rp.","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7a3a0288156febb1555ffc01acbbf7bd49e0076a","unresolved":false,"context_lines":[{"line_number":226,"context_line":"   transaction. (In some complex nova server move cases the conductor may allocate"},{"line_number":227,"context_line":"   but that\u0027s unimportant here.)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"4. Nova-compute binds the port."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"In steps (2) and (3) the selection includes the choice of RPs representing"},{"line_number":232,"context_line":"network backend objects (beyond the obvious choice of compute host). This"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_5b27a065","line":229,"updated":"2018-03-21 08:36:42.000000000","message":"nova binds port?","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1bd2d9bb6e874a307458e1e73ecf77bead3109b5","unresolved":false,"context_lines":[{"line_number":226,"context_line":"   transaction. (In some complex nova server move cases the conductor may allocate"},{"line_number":227,"context_line":"   but that\u0027s unimportant here.)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"4. Nova-compute binds the port."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"In steps (2) and (3) the selection includes the choice of RPs representing"},{"line_number":232,"context_line":"network backend objects (beyond the obvious choice of compute host). This"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_1bcb6d72","line":229,"in_reply_to":"bf659307_3eb52a32","updated":"2018-03-27 14:55:37.000000000","message":"Done","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b39957a96b5c3295f852a522b4cea6e16891fe9c","unresolved":false,"context_lines":[{"line_number":226,"context_line":"   transaction. (In some complex nova server move cases the conductor may allocate"},{"line_number":227,"context_line":"   but that\u0027s unimportant here.)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"4. Nova-compute binds the port."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"In steps (2) and (3) the selection includes the choice of RPs representing"},{"line_number":232,"context_line":"network backend objects (beyond the obvious choice of compute host). This"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_874b9785","line":229,"in_reply_to":"df7087c5_5b27a065","updated":"2018-03-22 16:13:34.000000000","message":"Done","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"ad01fdc81b4e0aa81bfe3706ab84772738d59904","unresolved":false,"context_lines":[{"line_number":226,"context_line":"   transaction. (In some complex nova server move cases the conductor may allocate"},{"line_number":227,"context_line":"   but that\u0027s unimportant here.)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"4. Nova-compute binds the port."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"In steps (2) and (3) the selection includes the choice of RPs representing"},{"line_number":232,"context_line":"network backend objects (beyond the obvious choice of compute host). This"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_3eb52a32","line":229,"in_reply_to":"df7087c5_874b9785","updated":"2018-03-26 10:15:05.000000000","message":"I was rather want to ask if shouldn\u0027t that be \"neutron binds port\" :)","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"36bf1a6308e8a94888d3c6c335cbb5dc404e1eb6","unresolved":false,"context_lines":[{"line_number":245,"context_line":"  of a port on the same host then it cannot happen that Placement chooses"},{"line_number":246,"context_line":"  one, but Neutron binds another."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"  One way to do that is for Neutron-server to read (from Placement) the allocation of"},{"line_number":249,"context_line":"  the port currently being bound and let it influence the binding."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Out of Scope"},{"line_number":252,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_6fc66719","line":249,"range":{"start_line":248,"start_character":2,"end_line":249,"end_character":65},"updated":"2018-03-20 23:35:49.000000000","message":"Can we think of another way to do this? A call to Nova in the middle of the binding process doesn\u0027t look very enticing","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7a3a0288156febb1555ffc01acbbf7bd49e0076a","unresolved":false,"context_lines":[{"line_number":245,"context_line":"  of a port on the same host then it cannot happen that Placement chooses"},{"line_number":246,"context_line":"  one, but Neutron binds another."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"  One way to do that is for Neutron-server to read (from Placement) the allocation of"},{"line_number":249,"context_line":"  the port currently being bound and let it influence the binding."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Out of Scope"},{"line_number":252,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_7bb864e4","line":249,"range":{"start_line":248,"start_character":2,"end_line":249,"end_character":65},"in_reply_to":"df7087c5_6fc66719","updated":"2018-03-21 08:36:42.000000000","message":"I agree","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b39957a96b5c3295f852a522b4cea6e16891fe9c","unresolved":false,"context_lines":[{"line_number":245,"context_line":"  of a port on the same host then it cannot happen that Placement chooses"},{"line_number":246,"context_line":"  one, but Neutron binds another."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"  One way to do that is for Neutron-server to read (from Placement) the allocation of"},{"line_number":249,"context_line":"  the port currently being bound and let it influence the binding."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Out of Scope"},{"line_number":252,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_435d4a13","line":249,"range":{"start_line":248,"start_character":2,"end_line":249,"end_character":65},"in_reply_to":"df7087c5_7bb864e4","updated":"2018-03-22 16:13:34.000000000","message":"Another way is to pass down (some or all of) the allocation record in the call/message chain leading to the port binding PUT request (in there maybe use the binding_profile attribute). That way we would not need a new remote call, just to add an argument/payload to already existing calls/messages. However getting this info from placement to nova-compute seems no small task on the nova side.\n\nI definitely need to talk to nova folks to understand the complexity.","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"36bf1a6308e8a94888d3c6c335cbb5dc404e1eb6","unresolved":false,"context_lines":[{"line_number":251,"context_line":"Out of Scope"},{"line_number":252,"context_line":"------------"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"Minimum bandwidth rule update:"},{"line_number":255,"context_line":"When a minimum bandwidth rule is updated, the ML2 plugin will list the bound"},{"line_number":256,"context_line":"ports with this QoS policy and rule attached and will update the Allocation"},{"line_number":257,"context_line":"value. The `consumer_id` of each Allocation is the `device_id` of the port."},{"line_number":258,"context_line":"This is out of scope in this spec and should be done during the work related"},{"line_number":259,"context_line":"to `os-vif migration tasks` [5]_."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"Trunk port:"},{"line_number":262,"context_line":"Subports of a trunk port are unknown to Nova. Allocating resources for"},{"line_number":263,"context_line":"subports is a task for Neutron only. This is out of scope too."},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"References"},{"line_number":266,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_ef54b756","line":263,"range":{"start_line":254,"start_character":0,"end_line":263,"end_character":62},"updated":"2018-03-20 23:35:49.000000000","message":"These were not marked as out of scope in the Nova side spec. Let\u0027s just coordinate them","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b39957a96b5c3295f852a522b4cea6e16891fe9c","unresolved":false,"context_lines":[{"line_number":251,"context_line":"Out of Scope"},{"line_number":252,"context_line":"------------"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"Minimum bandwidth rule update:"},{"line_number":255,"context_line":"When a minimum bandwidth rule is updated, the ML2 plugin will list the bound"},{"line_number":256,"context_line":"ports with this QoS policy and rule attached and will update the Allocation"},{"line_number":257,"context_line":"value. The `consumer_id` of each Allocation is the `device_id` of the port."},{"line_number":258,"context_line":"This is out of scope in this spec and should be done during the work related"},{"line_number":259,"context_line":"to `os-vif migration tasks` [5]_."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"Trunk port:"},{"line_number":262,"context_line":"Subports of a trunk port are unknown to Nova. Allocating resources for"},{"line_number":263,"context_line":"subports is a task for Neutron only. This is out of scope too."},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"References"},{"line_number":266,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_83e4c20e","line":263,"range":{"start_line":254,"start_character":0,"end_line":263,"end_character":62},"in_reply_to":"df7087c5_ef54b756","updated":"2018-03-22 16:13:34.000000000","message":"Gibi told me he intentionally did not declare neutron-internal tasks (err, I mean neutron-direct-to-placement tasks) in or out of scope from the nova spec. So if we agree that we can leave these items for later then I think it\u0027s okay if they are only listed here.\n\nActually to keep the amount of work manageable I\u0027d suggest adding even routed networks if that proves to be non-trivial.","commit_id":"30cb956226a79d13f97cdcd3ceecedfb103f89f6"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4c2aedc96b4a711ac6eca5873aa5929ed7d86095","unresolved":false,"context_lines":[{"line_number":23,"context_line":"device could be oversubscribed."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"This spec addresses managing the bandwidth on the first physical device"},{"line_number":26,"context_line":"ie. the pyhsical bottleneck closest to the nova server. Managing bandwidth"},{"line_number":27,"context_line":"further away, for example on the backplane of a Top-Of-Rack switch or"},{"line_number":28,"context_line":"end-to-end, is out of scope here."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_353a47e7","line":26,"range":{"start_line":26,"start_character":17,"end_line":26,"end_character":27},"updated":"2018-03-26 22:16:10.000000000","message":"why not interface?","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1bd2d9bb6e874a307458e1e73ecf77bead3109b5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"device could be oversubscribed."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"This spec addresses managing the bandwidth on the first physical device"},{"line_number":26,"context_line":"ie. the pyhsical bottleneck closest to the nova server. Managing bandwidth"},{"line_number":27,"context_line":"further away, for example on the backplane of a Top-Of-Rack switch or"},{"line_number":28,"context_line":"end-to-end, is out of scope here."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_ea1d9073","line":26,"range":{"start_line":26,"start_character":17,"end_line":26,"end_character":27},"in_reply_to":"bf659307_353a47e7","updated":"2018-03-27 14:55:37.000000000","message":"Done","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4c2aedc96b4a711ac6eca5873aa5929ed7d86095","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Since the placement enforcement itself is a Nova-Neutron cross-project"},{"line_number":43,"context_line":"feature this spec is meant to be read, commented and maintained together"},{"line_number":44,"context_line":"with its Nova counterpart: `Network bandwidth resource provider` [2]_"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"This spec is based on the approved Neutron spec `Add a spec for strict"},{"line_number":47,"context_line":"minimum bandwidth support` [3]_. The aim of the current spec is not"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_75199f86","line":44,"range":{"start_line":44,"start_character":27,"end_line":44,"end_character":69},"updated":"2018-03-26 22:16:10.000000000","message":"Are these references meant to to take you to the referenced document or to the References section at the bottom of this document? In the most recent rendered document, they take you to the latter. Same observation applies to all references across this document","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1bd2d9bb6e874a307458e1e73ecf77bead3109b5","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Since the placement enforcement itself is a Nova-Neutron cross-project"},{"line_number":43,"context_line":"feature this spec is meant to be read, commented and maintained together"},{"line_number":44,"context_line":"with its Nova counterpart: `Network bandwidth resource provider` [2]_"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"This spec is based on the approved Neutron spec `Add a spec for strict"},{"line_number":47,"context_line":"minimum bandwidth support` [3]_. The aim of the current spec is not"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_7badd02f","line":44,"range":{"start_line":44,"start_character":27,"end_line":44,"end_character":69},"in_reply_to":"bf659307_75199f86","updated":"2018-03-27 14:55:37.000000000","message":"I just followed Rodolfo\u0027s original use of the references. This way an in-text link takes you to the bottom. Plus for references used multiple times there are backreferences listed at the bottom.\n\nIf you prefer another format, let me know, I can easily change it.","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4c2aedc96b4a711ac6eca5873aa5929ed7d86095","unresolved":false,"context_lines":[{"line_number":121,"context_line":"For example:"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"1. OVS agent: physical network - OVS bridge - single physical NIC"},{"line_number":124,"context_line":"   1-1 mapping between physical network and physical bottleneck"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"2. OVS agent: physical network - OVS bridge - one VLAN on a bond of two"},{"line_number":127,"context_line":"   physical NICs"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_98034a0e","line":124,"range":{"start_line":124,"start_character":53,"end_line":124,"end_character":63},"updated":"2018-03-26 22:16:10.000000000","message":"interface?","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1bd2d9bb6e874a307458e1e73ecf77bead3109b5","unresolved":false,"context_lines":[{"line_number":121,"context_line":"For example:"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"1. OVS agent: physical network - OVS bridge - single physical NIC"},{"line_number":124,"context_line":"   1-1 mapping between physical network and physical bottleneck"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"2. OVS agent: physical network - OVS bridge - one VLAN on a bond of two"},{"line_number":127,"context_line":"   physical NICs"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_6a09802f","line":124,"range":{"start_line":124,"start_character":53,"end_line":124,"end_character":63},"in_reply_to":"bf659307_98034a0e","updated":"2018-03-27 14:55:37.000000000","message":"Done","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4c2aedc96b4a711ac6eca5873aa5929ed7d86095","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"2. OVS agent: physical network - OVS bridge - one VLAN on a bond of two"},{"line_number":127,"context_line":"   physical NICs"},{"line_number":128,"context_line":"   n-1 mapping between physical network(s) and physical bottleneck"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"3. SR-IOV agent: physical network - one or more PFs"},{"line_number":131,"context_line":"   1-n mapping between physical network and physical bottleneck(s)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_b853aee2","line":128,"range":{"start_line":128,"start_character":56,"end_line":128,"end_character":66},"updated":"2018-03-26 22:16:10.000000000","message":"interface?","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1bd2d9bb6e874a307458e1e73ecf77bead3109b5","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"2. OVS agent: physical network - OVS bridge - one VLAN on a bond of two"},{"line_number":127,"context_line":"   physical NICs"},{"line_number":128,"context_line":"   n-1 mapping between physical network(s) and physical bottleneck"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"3. SR-IOV agent: physical network - one or more PFs"},{"line_number":131,"context_line":"   1-n mapping between physical network and physical bottleneck(s)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_0a08042a","line":128,"range":{"start_line":128,"start_character":56,"end_line":128,"end_character":66},"in_reply_to":"bf659307_b853aee2","updated":"2018-03-27 14:55:37.000000000","message":"Done","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4c2aedc96b4a711ac6eca5873aa5929ed7d86095","unresolved":false,"context_lines":[{"line_number":128,"context_line":"   n-1 mapping between physical network(s) and physical bottleneck"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"3. SR-IOV agent: physical network - one or more PFs"},{"line_number":131,"context_line":"   1-n mapping between physical network and physical bottleneck(s)"},{"line_number":132,"context_line":"   (See `Networking Guide: SR-IOV` [7]_.)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Each Neutron agent (Open vSwitch, Linux Bridge, SR-IOV) has a"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_d850e2d7","line":131,"range":{"start_line":131,"start_character":53,"end_line":131,"end_character":63},"updated":"2018-03-26 22:16:10.000000000","message":"ditto","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1bd2d9bb6e874a307458e1e73ecf77bead3109b5","unresolved":false,"context_lines":[{"line_number":128,"context_line":"   n-1 mapping between physical network(s) and physical bottleneck"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"3. SR-IOV agent: physical network - one or more PFs"},{"line_number":131,"context_line":"   1-n mapping between physical network and physical bottleneck(s)"},{"line_number":132,"context_line":"   (See `Networking Guide: SR-IOV` [7]_.)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Each Neutron agent (Open vSwitch, Linux Bridge, SR-IOV) has a"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_bdffe0ff","line":131,"range":{"start_line":131,"start_character":53,"end_line":131,"end_character":63},"in_reply_to":"bf659307_d850e2d7","updated":"2018-03-27 14:55:37.000000000","message":"Done","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4c2aedc96b4a711ac6eca5873aa5929ed7d86095","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    # that. ovs-agent did not operate on the actual eth0 interface directly"},{"line_number":152,"context_line":"    # in the past and should not operate on it in the future. At most it may"},{"line_number":153,"context_line":"    # read NIC configuration like the link speed."},{"line_number":154,"context_line":"    resource_provider_mappings \u003d physnet0:eth0,physnet1:eth0,physnet2:eth1"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    # Meaning: physnet0 and physnet1 shares the available bandwidth of eth0."},{"line_number":157,"context_line":"    # But physnet2 has all bandwidth of eth1."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_a13eeb26","line":154,"range":{"start_line":154,"start_character":33,"end_line":154,"end_character":74},"updated":"2018-03-26 22:16:10.000000000","message":"I think I am confused here. physnet0 and physnet1 represent a Neutron physical network, right? Physical networks (physnets) correspond to one bridge / interface or several interfaces, but not the other way around. In other words, you cannot have two physnets in one interface","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1bd2d9bb6e874a307458e1e73ecf77bead3109b5","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    # that. ovs-agent did not operate on the actual eth0 interface directly"},{"line_number":152,"context_line":"    # in the past and should not operate on it in the future. At most it may"},{"line_number":153,"context_line":"    # read NIC configuration like the link speed."},{"line_number":154,"context_line":"    resource_provider_mappings \u003d physnet0:eth0,physnet1:eth0,physnet2:eth1"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    # Meaning: physnet0 and physnet1 shares the available bandwidth of eth0."},{"line_number":157,"context_line":"    # But physnet2 has all bandwidth of eth1."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_1be7f442","line":154,"range":{"start_line":154,"start_character":33,"end_line":154,"end_character":74},"in_reply_to":"bf659307_a13eeb26","updated":"2018-03-27 14:55:37.000000000","message":"You\u0027re right, that\u0027s probably not needed. I think I read something into this that wasn\u0027t really there:\n\nhttps://review.openstack.org/#/c/396297/7/specs/pike/strict-minimum-bandwidth-support.rst@77","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4c2aedc96b4a711ac6eca5873aa5929ed7d86095","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    # read NIC configuration like the link speed."},{"line_number":154,"context_line":"    resource_provider_mappings \u003d physnet0:eth0,physnet1:eth0,physnet2:eth1"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    # Meaning: physnet0 and physnet1 shares the available bandwidth of eth0."},{"line_number":157,"context_line":"    # But physnet2 has all bandwidth of eth1."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    # Each right hand side value in resource_provider_mappings:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_c13bdf35","line":156,"range":{"start_line":156,"start_character":6,"end_line":156,"end_character":76},"updated":"2018-03-26 22:16:10.000000000","message":"Same comment as L154","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1bd2d9bb6e874a307458e1e73ecf77bead3109b5","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    # read NIC configuration like the link speed."},{"line_number":154,"context_line":"    resource_provider_mappings \u003d physnet0:eth0,physnet1:eth0,physnet2:eth1"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    # Meaning: physnet0 and physnet1 shares the available bandwidth of eth0."},{"line_number":157,"context_line":"    # But physnet2 has all bandwidth of eth1."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    # Each right hand side value in resource_provider_mappings:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_dbd2dc5c","line":156,"range":{"start_line":156,"start_character":6,"end_line":156,"end_character":76},"in_reply_to":"bf659307_c13bdf35","updated":"2018-03-27 14:55:37.000000000","message":"Done","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"ddbe4ee4528060b9c9ad22b35749d92460e79045","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    #   * must be listed as a key in resource_provider_bandwidths"},{"line_number":162,"context_line":"    #   * must be listed as a key in resource_provider_traits"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    resource_provider_bandwidths \u003d eth0:EGRESS:INGRESS,eth1:EGRESS:INGRESS"},{"line_number":165,"context_line":"    resource_provider_traits \u003d eth0:TRAIT1,eth1:TRAIT1:TRAIT2"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    # Examples:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"df7087c5_fe30b558","line":164,"range":{"start_line":164,"start_character":4,"end_line":164,"end_character":32},"updated":"2018-03-22 16:16:31.000000000","message":"Ideally resource_provider_bandwidths should be resource_provider_inventories with allocation_ratio, max_unit, min_unit, reserved, step_size. But I fear 7 element positional parameter lists.","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ee9fac8a7964a7f8f7042afdb41468182b5641f8","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    #   * must be listed as a key in resource_provider_traits"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    resource_provider_bandwidths \u003d eth0:EGRESS:INGRESS,eth1:EGRESS:INGRESS"},{"line_number":165,"context_line":"    resource_provider_traits \u003d eth0:TRAIT1,eth1:TRAIT1:TRAIT2"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    # Examples:"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"df7087c5_2f85825a","line":165,"range":{"start_line":165,"start_character":31,"end_line":165,"end_character":61},"updated":"2018-03-23 09:07:25.000000000","message":"This trait list would be easier to understand with concrete examples, like: NET_VNIC_TYPE_VIRTIO or for the sriov example: NET_VNIC_TYPE_DIRECT","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"ef32bb78a1fbe38cc1a4ec3cb1881de4357ac31a","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    #   * must be listed as a key in resource_provider_traits"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    resource_provider_bandwidths \u003d eth0:EGRESS:INGRESS,eth1:EGRESS:INGRESS"},{"line_number":165,"context_line":"    resource_provider_traits \u003d eth0:TRAIT1,eth1:TRAIT1:TRAIT2"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    # Examples:"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_aeccaf89","line":165,"range":{"start_line":165,"start_character":31,"end_line":165,"end_character":61},"in_reply_to":"df7087c5_2f85825a","updated":"2018-03-26 08:49:47.000000000","message":"Done in the next patch set.","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"ddbe4ee4528060b9c9ad22b35749d92460e79045","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    [sriov_nic]"},{"line_number":185,"context_line":"    physical_device_mappings \u003d physnet0:eth0,physnet0:eth1,physnet1:eth2"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    resource_provider_bandwidths \u003d eth0:EGRESS:INGRESS,eth1:EGRESS:INGRESS"},{"line_number":188,"context_line":"    resource_provider_traits \u003d eth0:TRAIT1,eth1:TRAIT1:TRAIT2"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"How required bandwidth for a Neutron port is modeled"}],"source_content_type":"text/x-rst","patch_set":5,"id":"df7087c5_3e1b8dca","line":187,"range":{"start_line":187,"start_character":4,"end_line":187,"end_character":32},"updated":"2018-03-22 16:16:31.000000000","message":"Depending on how SR-IOV resource providers are modeled in Placement we may need to throw NotImplemented error if a physnet is backed by multiple PFs and inventory was given for those PFs. See here: https://review.openstack.org/#/c/502306/18/specs/rocky/approved/bandwidth-resource-provider.rst@378","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"ef32bb78a1fbe38cc1a4ec3cb1881de4357ac31a","unresolved":false,"context_lines":[{"line_number":211,"context_line":"-----------------------------"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"Neutron-external details of reporting available resources is described"},{"line_number":214,"context_line":"on the following sections of [2]_:"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"* Neutron agent first start"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_a9bcc2bb","line":214,"range":{"start_line":214,"start_character":0,"end_line":214,"end_character":2},"updated":"2018-03-26 08:49:47.000000000","message":"in","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4c2aedc96b4a711ac6eca5873aa5929ed7d86095","unresolved":false,"context_lines":[{"line_number":241,"context_line":"  considers the live Placement records only. In case liveness of Neutron"},{"line_number":242,"context_line":"  resource information is needed the only practical way is to build on"},{"line_number":243,"context_line":"  the Neutron-agent heartbeat mechanism. Otherwise the reporting and"},{"line_number":244,"context_line":"  heartbeat mechanism would take different paths. Given that liveness"},{"line_number":245,"context_line":"  would be known by Neutron-server and for example could be queried by"},{"line_number":246,"context_line":"  a scheduler filter."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"  Until a need for known live resource information is discovered direct"},{"line_number":249,"context_line":"  reporting is recommended."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_41510f36","line":246,"range":{"start_line":244,"start_character":50,"end_line":246,"end_character":21},"updated":"2018-03-26 22:16:10.000000000","message":"Is this sentecne complete? I don\u0027t understand it","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1bd2d9bb6e874a307458e1e73ecf77bead3109b5","unresolved":false,"context_lines":[{"line_number":241,"context_line":"  considers the live Placement records only. In case liveness of Neutron"},{"line_number":242,"context_line":"  resource information is needed the only practical way is to build on"},{"line_number":243,"context_line":"  the Neutron-agent heartbeat mechanism. Otherwise the reporting and"},{"line_number":244,"context_line":"  heartbeat mechanism would take different paths. Given that liveness"},{"line_number":245,"context_line":"  would be known by Neutron-server and for example could be queried by"},{"line_number":246,"context_line":"  a scheduler filter."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"  Until a need for known live resource information is discovered direct"},{"line_number":249,"context_line":"  reporting is recommended."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_75f07868","line":246,"range":{"start_line":244,"start_character":50,"end_line":246,"end_character":21},"in_reply_to":"bf659307_41510f36","updated":"2018-03-27 14:55:37.000000000","message":"Tried to explain it better.","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4c2aedc96b4a711ac6eca5873aa5929ed7d86095","unresolved":false,"context_lines":[{"line_number":282,"context_line":"  Neutron. (At least with roughly the same probability as scheduler is"},{"line_number":283,"context_line":"  able today.)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"* The choices made by Placement and made by Neutron port binding must"},{"line_number":286,"context_line":"  be the same. Therefore the selection must be coordinated."},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"  If more than one Neutron backends can satisfy the resource requirements"},{"line_number":289,"context_line":"  of a port on the same host then it cannot happen that Placement chooses"},{"line_number":290,"context_line":"  one, but Neutron binds another."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"  One way to do that is for Neutron-server to read (from Placement)"},{"line_number":293,"context_line":"  the allocation of the port currently being bound and let it influence"},{"line_number":294,"context_line":"  the binding."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"Out of Scope"},{"line_number":297,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_7c32b8f3","line":294,"range":{"start_line":285,"start_character":2,"end_line":294,"end_character":14},"updated":"2018-03-26 22:16:10.000000000","message":"Beside binding:host_id, we have two inputs to the binding process: binding:vnic_type and binding:profile. At the moment of requesting the binding, Nova could use these binding attributes to influence what Neutron does. That\u0027s the reason to have those attributes. Have we explored how to use them? I recently wrote a blog entry that talks aboout the binding process. You might find it useful: http://www.miguellavalle.com/2017/12/implementing-multiple-bindings-for.html#more","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1bd2d9bb6e874a307458e1e73ecf77bead3109b5","unresolved":false,"context_lines":[{"line_number":282,"context_line":"  Neutron. (At least with roughly the same probability as scheduler is"},{"line_number":283,"context_line":"  able today.)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"* The choices made by Placement and made by Neutron port binding must"},{"line_number":286,"context_line":"  be the same. Therefore the selection must be coordinated."},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"  If more than one Neutron backends can satisfy the resource requirements"},{"line_number":289,"context_line":"  of a port on the same host then it cannot happen that Placement chooses"},{"line_number":290,"context_line":"  one, but Neutron binds another."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"  One way to do that is for Neutron-server to read (from Placement)"},{"line_number":293,"context_line":"  the allocation of the port currently being bound and let it influence"},{"line_number":294,"context_line":"  the binding."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"Out of Scope"},{"line_number":297,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_5198ebbe","line":294,"range":{"start_line":285,"start_character":2,"end_line":294,"end_character":14},"in_reply_to":"bf659307_7c32b8f3","updated":"2018-03-27 14:55:37.000000000","message":"Yep, I was thinking of encoding the allocation decision into binding:profile. Thanks for the writeup.\n\nI added an idea of how we could do it.","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4c2aedc96b4a711ac6eca5873aa5929ed7d86095","unresolved":false,"context_lines":[{"line_number":307,"context_line":"Subports of a trunk port are unknown to Nova. Allocating resources for"},{"line_number":308,"context_line":"subports is a task for Neutron only. This is out of scope too."},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"References"},{"line_number":311,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":".. [1] `Placement API`:"},{"line_number":314,"context_line":"       https://docs.openstack.org/nova/latest/user/placement.html"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":".. [2] `SPEC: Network bandwidth resource provider`:"},{"line_number":317,"context_line":"       https://review.openstack.org/502306"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":".. [3] `Add a spec for strict minimum bandwidth support`:"},{"line_number":320,"context_line":"       https://review.openstack.org/396297"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":".. [4] `[RFE] Minimum bandwidth support (egress)`:"},{"line_number":323,"context_line":"       https://bugs.launchpad.net/neutron/+bug/1560963"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":".. [5] `BP: os-vif migration tasks`:"},{"line_number":326,"context_line":"       https://blueprints.launchpad.net/neutron/+spec/os-vif-migration"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":".. [6] `Newton Release Notes`:"},{"line_number":329,"context_line":"       https://docs.openstack.org/releasenotes/neutron/newton.html"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":".. [7] `Networking Guide: SR-IOV`:"},{"line_number":332,"context_line":"       https://docs.openstack.org/neutron/queens/admin/config-sriov.html#enable-neutron-sriov-agent-compute"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_b5065720","line":332,"range":{"start_line":310,"start_character":0,"end_line":332,"end_character":107},"updated":"2018-03-26 22:16:10.000000000","message":"Look at hos this is rendered: http://logs.openstack.org/49/508149/5/check/build-openstack-sphinx-docs/ab89a54/html/specs/rocky/minimum-bandwidth-allocation-placement-api.html#references. Is this what you had in mind?","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1bd2d9bb6e874a307458e1e73ecf77bead3109b5","unresolved":false,"context_lines":[{"line_number":307,"context_line":"Subports of a trunk port are unknown to Nova. Allocating resources for"},{"line_number":308,"context_line":"subports is a task for Neutron only. This is out of scope too."},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"References"},{"line_number":311,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":".. [1] `Placement API`:"},{"line_number":314,"context_line":"       https://docs.openstack.org/nova/latest/user/placement.html"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":".. [2] `SPEC: Network bandwidth resource provider`:"},{"line_number":317,"context_line":"       https://review.openstack.org/502306"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":".. [3] `Add a spec for strict minimum bandwidth support`:"},{"line_number":320,"context_line":"       https://review.openstack.org/396297"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":".. [4] `[RFE] Minimum bandwidth support (egress)`:"},{"line_number":323,"context_line":"       https://bugs.launchpad.net/neutron/+bug/1560963"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":".. [5] `BP: os-vif migration tasks`:"},{"line_number":326,"context_line":"       https://blueprints.launchpad.net/neutron/+spec/os-vif-migration"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":".. [6] `Newton Release Notes`:"},{"line_number":329,"context_line":"       https://docs.openstack.org/releasenotes/neutron/newton.html"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":".. [7] `Networking Guide: SR-IOV`:"},{"line_number":332,"context_line":"       https://docs.openstack.org/neutron/queens/admin/config-sriov.html#enable-neutron-sriov-agent-compute"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_db1adc7b","line":332,"range":{"start_line":310,"start_character":0,"end_line":332,"end_character":107},"in_reply_to":"bf659307_b5065720","updated":"2018-03-27 14:55:37.000000000","message":"Almost. However I think the rst2html converter used here is buggy (not showing [2] and [3]). This is how the references section should look like:\n\nhttp://rst.ninjs.org/#YGZpcnN0IG5hbWVkIG1lbnRpb24gb2YgcmVmZXJlbmNlIDFgIFsxXV8KCmFub3RoZXIgcGxhY2UgcmVmZXJlbmNpbmcgWzFdXwoKLi4gWzFdIGh0dHBzOi8vZ29vZ2xlLmNvbQ\u003d\u003d","commit_id":"639bd4f158309af8771604c82ec08771296a58a0"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5b941c9e6f905b4767847142dff2257dddacc14f","unresolved":false,"context_lines":[{"line_number":33,"context_line":"* placement: Avoiding oversubscription when placing (scheduling) nova servers"},{"line_number":34,"context_line":"  and their ports."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* data plane: Enforcing the guarantee on the physical network devices."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"This spec addresses placement enforcement only. However the design"},{"line_number":39,"context_line":"must respect that most users are interested in a combination of these"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_c820b0b3","line":36,"updated":"2018-03-28 10:43:00.000000000","message":"You can maybe point only that enforcing on data plane level should be covered by https://bugs.launchpad.net/neutron/+bug/1560963","commit_id":"21b980c652d0c4489eb18456006418fcca4dbdc6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"089f5b423849d7bce08de14cfa27181d793b5018","unresolved":false,"context_lines":[{"line_number":33,"context_line":"* placement: Avoiding oversubscription when placing (scheduling) nova servers"},{"line_number":34,"context_line":"  and their ports."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* data plane: Enforcing the guarantee on the physical network devices."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"This spec addresses placement enforcement only. However the design"},{"line_number":39,"context_line":"must respect that most users are interested in a combination of these"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_cc3cd394","line":36,"in_reply_to":"bf659307_c820b0b3","updated":"2018-04-03 14:56:56.000000000","message":"In the next patch set there will be a link to that RFE here too. However I wanted to mention this distinction shortly to give background to why we may want one, the other, or both.","commit_id":"21b980c652d0c4489eb18456006418fcca4dbdc6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5b941c9e6f905b4767847142dff2257dddacc14f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"(see `Newton Release Notes` [6]_)."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Placement only enforcement may be a viable feature for users able"},{"line_number":64,"context_line":"to control all traffic (eg. in a single tenant private cloud)."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Proposed Change"},{"line_number":67,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_546e7695","line":64,"updated":"2018-03-28 10:43:00.000000000","message":"such \"placement only\" enforcement can be also used together with bandwidth limit - operator can set two rules in QoS policy, both with same bandwidth values and then each vm on such chosen host will be able to use at most as much bandwidth as it has guaranteed :)","commit_id":"21b980c652d0c4489eb18456006418fcca4dbdc6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"089f5b423849d7bce08de14cfa27181d793b5018","unresolved":false,"context_lines":[{"line_number":61,"context_line":"(see `Newton Release Notes` [6]_)."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Placement only enforcement may be a viable feature for users able"},{"line_number":64,"context_line":"to control all traffic (eg. in a single tenant private cloud)."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Proposed Change"},{"line_number":67,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_ec9c376b","line":64,"in_reply_to":"bf659307_546e7695","updated":"2018-04-03 14:56:56.000000000","message":"I like your thinking. So we can get data plane implementation for free in certain cases. I\u0027ll shamelessly copy your comment into the spec if you don\u0027t mind.","commit_id":"21b980c652d0c4489eb18456006418fcca4dbdc6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5b941c9e6f905b4767847142dff2257dddacc14f","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    resource_provider_bandwidths \u003d br0:1000000:1000000"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    # Later we may introduce auto-discovery (for example via ethtool)."},{"line_number":164,"context_line":"    resource_provider_bandwidths \u003d br0:auto:auto"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"SR-IOV agent configuration::"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_f4b9cae8","line":164,"updated":"2018-03-28 10:43:00.000000000","message":"maybe that should be default option simply?","commit_id":"21b980c652d0c4489eb18456006418fcca4dbdc6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"089f5b423849d7bce08de14cfa27181d793b5018","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    resource_provider_bandwidths \u003d br0:1000000:1000000"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    # Later we may introduce auto-discovery (for example via ethtool)."},{"line_number":164,"context_line":"    resource_provider_bandwidths \u003d br0:auto:auto"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"SR-IOV agent configuration::"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_4f1f5507","line":164,"in_reply_to":"bf659307_f4b9cae8","updated":"2018-04-03 14:56:56.000000000","message":"I think it would be great if at some point this would be the default. But I\u0027m also thinking of phasing the work to keep the scope manageable. And I consider configurability a must and auto-discovery only nice-to-have. That\u0027s why I\u0027d like to say \"Later we may ...\". But I added a sentence about reserving the right to make this the default when we have it.","commit_id":"21b980c652d0c4489eb18456006418fcca4dbdc6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5b941c9e6f905b4767847142dff2257dddacc14f","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"As described in the Nova spec [2]_, if a nova server boot request has a port"},{"line_number":186,"context_line":"defined and this port has a ``resource_request`` attribute, that means"},{"line_number":187,"context_line":"the Placement Service must enforce the minimum bandwidth requirements."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":190,"context_line":"it has Inventories of the new Resource Classes defined in [2]_ and there"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_d484c60e","line":187,"updated":"2018-03-28 10:43:00.000000000","message":"what if nova has got defined network only and this network has got QoS policy assigned? IMO it should works in same way then, right?","commit_id":"21b980c652d0c4489eb18456006418fcca4dbdc6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"089f5b423849d7bce08de14cfa27181d793b5018","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"As described in the Nova spec [2]_, if a nova server boot request has a port"},{"line_number":186,"context_line":"defined and this port has a ``resource_request`` attribute, that means"},{"line_number":187,"context_line":"the Placement Service must enforce the minimum bandwidth requirements."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":190,"context_line":"it has Inventories of the new Resource Classes defined in [2]_ and there"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_af7b91f2","line":187,"in_reply_to":"bf659307_d484c60e","updated":"2018-04-03 14:56:56.000000000","message":"Unfortunately that\u0027s complicated due to a problem internal to nova. Today when given a network nova creates the port in nova-compute. And that\u0027s too late. Placement and scheduling already happened. To solve this properly nova will have to move port creation earlier - into to the conductor I think.\n\nThis is described in more detail here:\nhttps://review.openstack.org/#/c/502306/22/specs/rocky/approved/bandwidth-resource-provider.rst@146","commit_id":"21b980c652d0c4489eb18456006418fcca4dbdc6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"acc788281bc1ee63c674e17bb297f8803d87f617","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        \"id\": ...,"},{"line_number":301,"context_line":"        \"network_id\": ...,"},{"line_number":302,"context_line":"        \"binding_profile\": {"},{"line_number":303,"context_line":"          \"allocation\": {"},{"line_number":304,"context_line":"            RP_UUID: {"},{"line_number":305,"context_line":"              \"traits\": [\"ALL\", \"TRAITS\","},{"line_number":306,"context_line":"                         \"THIS\", \"RP\", \"HAS\","}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_217e426b","line":303,"range":{"start_line":303,"start_character":11,"end_line":303,"end_character":21},"updated":"2018-03-27 15:42:26.000000000","message":"I guess unless we do something against it, this will get persisted and I\u0027m not sure if this information should get persisted. I could imagine using this to bind then throw it away.","commit_id":"21b980c652d0c4489eb18456006418fcca4dbdc6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"77512a21709d026f9caa4e539fda66f90c54791b","unresolved":false,"context_lines":[{"line_number":292,"context_line":"  resource. In general Neutron needs to know which resource provider matched"},{"line_number":293,"context_line":"  the numbered request group of the port plus all its traits."},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"  To express the choices of placement and nova-scheduler we propose to add"},{"line_number":296,"context_line":"  an ``allocation`` entry to ``binding_profile``::"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"      {"},{"line_number":299,"context_line":"        \"name\": \"port with minimum bw being bound\","},{"line_number":300,"context_line":"        \"id\": ...,"},{"line_number":301,"context_line":"        \"network_id\": ...,"},{"line_number":302,"context_line":"        \"binding_profile\": {"},{"line_number":303,"context_line":"          \"allocation\": {"},{"line_number":304,"context_line":"            RP_UUID: {"},{"line_number":305,"context_line":"              \"traits\": [\"ALL\", \"TRAITS\","},{"line_number":306,"context_line":"                         \"THIS\", \"RP\", \"HAS\","},{"line_number":307,"context_line":"                         \"INCLUDING\", \"NET_BACKEND_...\"]"},{"line_number":308,"context_line":"            }"},{"line_number":309,"context_line":"          }"},{"line_number":310,"context_line":"        }"},{"line_number":311,"context_line":"      }"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"  If a port has the ``resource_request`` attribute then it must"},{"line_number":314,"context_line":"  be bound with ``binding_profile.allocation`` supplied. Otherwise"},{"line_number":315,"context_line":"  ``binding_profile.allocation`` must not be present."},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"  Until placement is extended to query and return sub-trees of the"},{"line_number":318,"context_line":"  resource provider tree we assume that there is exactly one RP_UUID in"},{"line_number":319,"context_line":"  ``binding_profile.allocation`` and that ``RP_UUID`` has exactly one"},{"line_number":320,"context_line":"  trait prefixed with ``NET_BACKEND_``."},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"  Usually ML2 port binding tries the mechanism drivers in their configuration"},{"line_number":323,"context_line":"  order until one succeeds to set the binding. However if a port being"},{"line_number":324,"context_line":"  bound has ``binding_profile.allocation`` then only a single mechanism"},{"line_number":325,"context_line":"  driver can be tried - the one identified by trait ``NET_BACKEND_``."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"  In case of hierarchical port binding ``binding_profile.allocation``"},{"line_number":328,"context_line":"  is meant to drive the binding only on the binding level that represents"},{"line_number":329,"context_line":"  the closest physical interface to the nova server."},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"Out of Scope"},{"line_number":332,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_5c222602","line":329,"range":{"start_line":295,"start_character":0,"end_line":329,"end_character":52},"updated":"2018-03-28 07:13:29.000000000","message":"Due to changes in patch set 22 of the nova spec this has to be reworked.\n\nhttps://review.openstack.org/#/c/502306/22","commit_id":"21b980c652d0c4489eb18456006418fcca4dbdc6"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e20e3a473e87446c773a0e57a255dbd0ad6ab27e","unresolved":false,"context_lines":[{"line_number":341,"context_line":"Trunk port:"},{"line_number":342,"context_line":"Subports of a trunk port are unknown to Nova. Allocating resources for"},{"line_number":343,"context_line":"subports is a task for Neutron only. This is out of scope too."},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"References"},{"line_number":346,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_1149375f","line":344,"updated":"2018-04-06 08:21:21.000000000","message":"Some words about testing is missing here, as this feature must be tested from neutron side as well.\nWhat should be considered:\n* minimum as I see: \n** unit tests.\n** tempest API tests\n* more:\n** functional tests: I am not sure if we really gain anything with it. For me the interaction part with placement (creating the rps and traits and whatnot) and nova should be tested by functional tests, but perhaps those should be implemented as scenario test. Slawek or Miguel perhaps has better opinion.\n** tempest scenario: these tests are ideal (if I understand well) for testing if the interaction between neutron and placement / neutron and nova / neutron and agents are as expected, and a VM can/can\u0027t be booted based on the inventories applied to the network rp.\n** Fullstack: If I understand well the fullstack environment can be useful to test situations like agent disappearance (to see that based on agent heartbeat report in neutron-server, the nova-scheduler selects different host).\n\nNeutron testing guide: https://docs.openstack.org/neutron/latest/contributor/testing/testing.html","commit_id":"21b980c652d0c4489eb18456006418fcca4dbdc6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"342d4e0f002167cb25430f8df9b53989d03b96ac","unresolved":false,"context_lines":[{"line_number":341,"context_line":"Trunk port:"},{"line_number":342,"context_line":"Subports of a trunk port are unknown to Nova. Allocating resources for"},{"line_number":343,"context_line":"subports is a task for Neutron only. This is out of scope too."},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"References"},{"line_number":346,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9f6a8fd7_4a9dfa07","line":344,"in_reply_to":"bf659307_1149375f","updated":"2018-04-25 14:08:36.000000000","message":"Done.","commit_id":"21b980c652d0c4489eb18456006418fcca4dbdc6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"f5f58b8537cd3e11bbee6793f72cd2a3b452b085","unresolved":false,"context_lines":[{"line_number":341,"context_line":"Trunk port:"},{"line_number":342,"context_line":"Subports of a trunk port are unknown to Nova. Allocating resources for"},{"line_number":343,"context_line":"subports is a task for Neutron only. This is out of scope too."},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"References"},{"line_number":346,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_0636b4e8","line":344,"in_reply_to":"bf659307_1149375f","updated":"2018-04-09 13:58:33.000000000","message":"You\u0027re right. Plus I think we\u0027re missing a section about upgrade too. I want to add the testing and upgrade sections soon.","commit_id":"21b980c652d0c4489eb18456006418fcca4dbdc6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"f5f58b8537cd3e11bbee6793f72cd2a3b452b085","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"2. Neutron must convey the resource needs of a port to Nova."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"   Extend port with attribute ``resource_request`` according to section"},{"line_number":109,"context_line":"   \u0027Resource request in the port\u0027 in [2]_. This attribute is a computed"},{"line_number":110,"context_line":"   read-only property."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_869de4bc","line":108,"range":{"start_line":108,"start_character":15,"end_line":108,"end_character":29},"updated":"2018-04-09 13:58:33.000000000","message":"with an admin-only attribute","commit_id":"94c574b97d98e0d416273485eefdbb12469be7ff"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"565e0959c73a67716b929d768b7412c6b5a9aa7a","unresolved":false,"context_lines":[{"line_number":147,"context_line":"provider interfaces (SR-IOV) or a bridge connected to a provider interface"},{"line_number":148,"context_line":"(Open vSwitch or Linux Bridge)."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"OVS agent configuration::"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    [ovs]"},{"line_number":153,"context_line":"    # bridge_mappings as it exists already."}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_e5321a10","line":150,"range":{"start_line":150,"start_character":0,"end_line":150,"end_character":25},"updated":"2018-04-13 09:24:28.000000000","message":"Comment for the configuration:\nWe have to add config values with appropriate defaults for other inventory properties:\nallocation_ratio \u003d \nmax_unit \u003d \nmin_unit \u003d \nreserved \u003d\nstep_size \u003d\n\nFor making the users life easier and making the setting as granular as possible would be good to have global config default (neutron-server config options), and agent local defaults.","commit_id":"94c574b97d98e0d416273485eefdbb12469be7ff"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"342d4e0f002167cb25430f8df9b53989d03b96ac","unresolved":false,"context_lines":[{"line_number":147,"context_line":"provider interfaces (SR-IOV) or a bridge connected to a provider interface"},{"line_number":148,"context_line":"(Open vSwitch or Linux Bridge)."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"OVS agent configuration::"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    [ovs]"},{"line_number":153,"context_line":"    # bridge_mappings as it exists already."}],"source_content_type":"text/x-rst","patch_set":7,"id":"9f6a8fd7_2a8686ba","line":150,"range":{"start_line":150,"start_character":0,"end_line":150,"end_character":25},"in_reply_to":"bf659307_e5321a10","updated":"2018-04-25 14:08:36.000000000","message":"Done","commit_id":"94c574b97d98e0d416273485eefdbb12469be7ff"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"f5f58b8537cd3e11bbee6793f72cd2a3b452b085","unresolved":false,"context_lines":[{"line_number":339,"context_line":"  resource. In general Neutron needs to know which resource provider"},{"line_number":340,"context_line":"  matched the numbered request group of the port."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"  To express the choice made by placement and nova-scheduler we propose"},{"line_number":343,"context_line":"  to add an ``allocation`` entry to ``binding_profile``::"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"      {"},{"line_number":346,"context_line":"        \"name\": \"port with minimum bw being bound\","},{"line_number":347,"context_line":"        \"id\": ...,"},{"line_number":348,"context_line":"        \"network_id\": ...,"},{"line_number":349,"context_line":"        \"binding_profile\": { \"allocation\": RP_UUID }"},{"line_number":350,"context_line":"      }"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"  If a port has the ``resource_request`` attribute then it must"},{"line_number":353,"context_line":"  be bound with ``binding_profile.allocation`` supplied. Otherwise"},{"line_number":354,"context_line":"  ``binding_profile.allocation`` must not be present."},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"  Usually ML2 port binding tries the mechanism drivers in their"},{"line_number":357,"context_line":"  configuration order until one succeeds to set the binding. However"},{"line_number":358,"context_line":"  if a port being bound has ``binding_profile.allocation`` then only a"},{"line_number":359,"context_line":"  single mechanism driver can be tried - the one implicitly identified by"},{"line_number":360,"context_line":"  ``RP_UUID``."},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"  In case of hierarchical port binding ``binding_profile.allocation``"},{"line_number":363,"context_line":"  is meant to drive the binding only on the binding level that represents"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_8678848f","line":360,"range":{"start_line":342,"start_character":0,"end_line":360,"end_character":14},"updated":"2018-04-09 13:58:33.000000000","message":"This is my current best thinking, but beware this is completely dependent on the outcome of the nova-spec discussion. Will adapt to that when it comes to a conclusion.","commit_id":"94c574b97d98e0d416273485eefdbb12469be7ff"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"fadb1fcb54198849372c36c8e2433e92e5e91306","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"This spec addresses placement enforcement only. (Data plane enforcement"},{"line_number":39,"context_line":"is covered by [4]_.) However the design must respect that most users"},{"line_number":40,"context_line":"are interested in the join use of these enforcements."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Since the placement enforcement itself is a Nova-Neutron cross-project"},{"line_number":43,"context_line":"feature this spec is meant to be read, commented and maintained together"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_a6c3aaec","line":40,"range":{"start_line":40,"start_character":22,"end_line":40,"end_character":26},"updated":"2018-04-25 21:10:42.000000000","message":"joint","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"692f4bf9b0606f87cbadac0aead59e7554923b8a","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"This spec addresses placement enforcement only. (Data plane enforcement"},{"line_number":39,"context_line":"is covered by [4]_.) However the design must respect that most users"},{"line_number":40,"context_line":"are interested in the join use of these enforcements."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Since the placement enforcement itself is a Nova-Neutron cross-project"},{"line_number":43,"context_line":"feature this spec is meant to be read, commented and maintained together"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_46b95ce7","line":40,"range":{"start_line":40,"start_character":22,"end_line":40,"end_character":26},"in_reply_to":"9f6a8fd7_a6c3aaec","updated":"2018-04-26 14:01:28.000000000","message":"Done","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"1e6167a7e875a8b8856294848764dcacfc2e67e1","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"1. The user must be able to express the resource needs of a port."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"   1. Introduce ``qos_minimum_bandwidth_placement_rule`` with both egress"},{"line_number":76,"context_line":"      and ingress directions."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"      Unlike enforcement in the data plane, Placement can handle both"},{"line_number":79,"context_line":"      directions by the same effort."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"   2. Mark ``qos_minimum_bandwidth_placement_rule`` as supported QoS"},{"line_number":82,"context_line":"      policy rule for each existing QoS driver."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"      Placement enforcement is orthogonal to backend mechanisms. A user"},{"line_number":85,"context_line":"      can have placement enforcement for drivers not having data plane"},{"line_number":86,"context_line":"      enforcement (yet)."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"   When both placement and data plane enforcement is desired a policy must"},{"line_number":89,"context_line":"   contain rules of (egress/ingress variants of) both rule types:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_65a24d4e","line":86,"range":{"start_line":75,"start_character":0,"end_line":86,"end_character":24},"updated":"2018-04-26 22:10:23.000000000","message":"I waited until I got to the end of the spec before commenting on this. I really fail to see what benefit we get out of this. Why don\u0027t we just stick to express the port bandwidth requirement from the associated policy qos_minimum_bandwidth_rule? With the proposal here we would be providing our admins / users with a horrible API experience. Admins need to keep in synch the placement rule with the QoS rule. This will be really prone to errors. And users will be confused as to what means what. On top of that, we have the migration issues described in L595 below. What is the benefit that I am missing here?","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c022a39387b5ed01b5a9d44f2b3b50809c19d59c","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"1. The user must be able to express the resource needs of a port."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"   1. Introduce ``qos_minimum_bandwidth_placement_rule`` with both egress"},{"line_number":76,"context_line":"      and ingress directions."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"      Unlike enforcement in the data plane, Placement can handle both"},{"line_number":79,"context_line":"      directions by the same effort."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"   2. Mark ``qos_minimum_bandwidth_placement_rule`` as supported QoS"},{"line_number":82,"context_line":"      policy rule for each existing QoS driver."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"      Placement enforcement is orthogonal to backend mechanisms. A user"},{"line_number":85,"context_line":"      can have placement enforcement for drivers not having data plane"},{"line_number":86,"context_line":"      enforcement (yet)."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"   When both placement and data plane enforcement is desired a policy must"},{"line_number":89,"context_line":"   contain rules of (egress/ingress variants of) both rule types:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_fc5266de","line":86,"range":{"start_line":75,"start_character":0,"end_line":86,"end_character":24},"in_reply_to":"9f6a8fd7_65a24d4e","updated":"2018-04-27 14:27:56.000000000","message":"In short: simpler rule validation.\n\nThe alternative I see is to extend the current rule with two parameters like \u0027enforce_data_plane\u0027 and \u0027enforce_placement\u0027. The validation logic for such a rule would need to consider the (direction, enforce_data_plane, enforce_placement) bits together. But AFAIU the current rule validation framework validates rule parameters one by one.\n\nIn the code base today there\u0027s a place where a rule is validated with all its parameters (neutron/services/qos/drivers/manager.py, def validate_rule_for_port) but unless I\u0027m mistaken that\u0027s not a place which can be overriden from QoS plugins.\n\nBut if we are willing to change this part of the rule validation framework (plus how the current plugins use it) then we can improve the API experience.\n\nSecond I don\u0027t have an explicit use case for this but I can imagine an admin wanting to allocate more than what is given to the user in order to reserve bandwidth for future use.","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"fadb1fcb54198849372c36c8e2433e92e5e91306","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        \"device_id\": \"5e3898d7-11be-483e-9732-b2f5eccd2b2e\","},{"line_number":218,"context_line":"        \"resource_request\": {"},{"line_number":219,"context_line":"            \"resources\": {"},{"line_number":220,"context_line":"                \"NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\": 1000,"},{"line_number":221,"context_line":"                \"NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\": 1000 },"},{"line_number":222,"context_line":"            \"required\": [\"CUSTOM_PHYSNET_2\", \"CUSTOM_VNIC_TYPE_NORMAL\"]}"},{"line_number":223,"context_line":"    }}"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_ac0069ac","line":221,"range":{"start_line":220,"start_character":0,"end_line":221,"end_character":67},"updated":"2018-04-25 21:10:42.000000000","message":"Does this come from qos_minimum_bandwidth_placement_rule (L92 above)?","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"692f4bf9b0606f87cbadac0aead59e7554923b8a","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        \"device_id\": \"5e3898d7-11be-483e-9732-b2f5eccd2b2e\","},{"line_number":218,"context_line":"        \"resource_request\": {"},{"line_number":219,"context_line":"            \"resources\": {"},{"line_number":220,"context_line":"                \"NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\": 1000,"},{"line_number":221,"context_line":"                \"NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\": 1000 },"},{"line_number":222,"context_line":"            \"required\": [\"CUSTOM_PHYSNET_2\", \"CUSTOM_VNIC_TYPE_NORMAL\"]}"},{"line_number":223,"context_line":"    }}"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_66d02055","line":221,"range":{"start_line":220,"start_character":0,"end_line":221,"end_character":67},"in_reply_to":"9f6a8fd7_ac0069ac","updated":"2018-04-26 14:01:28.000000000","message":"Yes, it does. Like this:\n\nqos_minimum_bandwidth_placement_rule with direction\u003dingress -\u003e resource NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\n\nqos_minimum_bandwidth_placement_rule with direction\u003degress -\u003e resource NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\n\nqos_minimum_bandwidth_placement_rule regardless of its direction -\u003e required traits","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"fadb1fcb54198849372c36c8e2433e92e5e91306","unresolved":false,"context_lines":[{"line_number":234,"context_line":"For multi-segment Neutron networks each static segment\u0027s physnet trait"},{"line_number":235,"context_line":"must be included in the ``resource_request`` attribute in a format that"},{"line_number":236,"context_line":"we can only specify after Placement supports request matching logic"},{"line_number":237,"context_line":"of ``any(traits)``. See `any-traits-in-allocation_candidates-query` [9]_."},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"Reporting Available Resources"},{"line_number":240,"context_line":"-----------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_ac194922","line":237,"updated":"2018-04-25 21:10:42.000000000","message":"Are we planning to have this new any(traits) capability in the first implementation of this spec? Or is that planned for a follow up?","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c022a39387b5ed01b5a9d44f2b3b50809c19d59c","unresolved":false,"context_lines":[{"line_number":234,"context_line":"For multi-segment Neutron networks each static segment\u0027s physnet trait"},{"line_number":235,"context_line":"must be included in the ``resource_request`` attribute in a format that"},{"line_number":236,"context_line":"we can only specify after Placement supports request matching logic"},{"line_number":237,"context_line":"of ``any(traits)``. See `any-traits-in-allocation_candidates-query` [9]_."},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"Reporting Available Resources"},{"line_number":240,"context_line":"-----------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_bc614e14","line":237,"in_reply_to":"9f6a8fd7_759a0d14","updated":"2018-04-27 14:27:56.000000000","message":"Referenced the blueprint below.","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"630dd8d2ce66f6247c22cf507050102c4161f20d","unresolved":false,"context_lines":[{"line_number":234,"context_line":"For multi-segment Neutron networks each static segment\u0027s physnet trait"},{"line_number":235,"context_line":"must be included in the ``resource_request`` attribute in a format that"},{"line_number":236,"context_line":"we can only specify after Placement supports request matching logic"},{"line_number":237,"context_line":"of ``any(traits)``. See `any-traits-in-allocation_candidates-query` [9]_."},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"Reporting Available Resources"},{"line_number":240,"context_line":"-----------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_759a0d14","line":237,"in_reply_to":"9f6a8fd7_ac194922","updated":"2018-04-26 08:16:58.000000000","message":"I will propose a separate spec for any(trait) support in placement in the coming days. Until we keep the neutron API extension introducing the port\u0027s resource_request attribute experimental the any(trait) support is not a must have. To mark the extension as non-experimental we need the any(trait) support. Let\u0027s see what will be the feedback from the placement developers about the any(trait) spec but If I have to guess it will not fit into the Rocky timeframe.","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"1e6167a7e875a8b8856294848764dcacfc2e67e1","unresolved":false,"context_lines":[{"line_number":239,"context_line":"Reporting Available Resources"},{"line_number":240,"context_line":"-----------------------------"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"Some details of reporting available resources happened to be described"},{"line_number":243,"context_line":"in the following sections of [2]_. Please see them there."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"* Neutron agent first start"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_cac32638","line":242,"range":{"start_line":242,"start_character":46,"end_line":242,"end_character":60},"updated":"2018-04-26 22:10:23.000000000","message":"This syntax i a little odd. I would just say \"are\"","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c022a39387b5ed01b5a9d44f2b3b50809c19d59c","unresolved":false,"context_lines":[{"line_number":239,"context_line":"Reporting Available Resources"},{"line_number":240,"context_line":"-----------------------------"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"Some details of reporting available resources happened to be described"},{"line_number":243,"context_line":"in the following sections of [2]_. Please see them there."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"* Neutron agent first start"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_5cf4b2cf","line":242,"range":{"start_line":242,"start_character":46,"end_line":242,"end_character":60},"in_reply_to":"9f6a8fd7_cac32638","updated":"2018-04-27 14:27:56.000000000","message":"Done","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"1e6167a7e875a8b8856294848764dcacfc2e67e1","unresolved":false,"context_lines":[{"line_number":240,"context_line":"-----------------------------"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"Some details of reporting available resources happened to be described"},{"line_number":243,"context_line":"in the following sections of [2]_. Please see them there."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"* Neutron agent first start"},{"line_number":246,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_8adbee1f","line":243,"range":{"start_line":243,"start_character":33,"end_line":243,"end_character":57},"updated":"2018-04-26 22:10:23.000000000","message":"I found this a little confusing. I would just replace all this with \":\"","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c022a39387b5ed01b5a9d44f2b3b50809c19d59c","unresolved":false,"context_lines":[{"line_number":240,"context_line":"-----------------------------"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"Some details of reporting available resources happened to be described"},{"line_number":243,"context_line":"in the following sections of [2]_. Please see them there."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"* Neutron agent first start"},{"line_number":246,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_fc0026ae","line":243,"range":{"start_line":243,"start_character":33,"end_line":243,"end_character":57},"in_reply_to":"9f6a8fd7_8adbee1f","updated":"2018-04-27 14:27:56.000000000","message":"Done","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"1e6167a7e875a8b8856294848764dcacfc2e67e1","unresolved":false,"context_lines":[{"line_number":256,"context_line":"We made the following assumptions:"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"* Neutron supports ``multi-provider`` extension therefore a single logical"},{"line_number":259,"context_line":"  network might map to more than one physnets. Physnets of non-dynamic"},{"line_number":260,"context_line":"  segments are known before port binding. For the sake of simplicity in"},{"line_number":261,"context_line":"  this spec we assume each segment directly connected to a physical"},{"line_number":262,"context_line":"  interface with a mimimum bandwidth guarantee is a non-dynamic"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_6aea1aad","line":259,"range":{"start_line":259,"start_character":44,"end_line":259,"end_character":45},"updated":"2018-04-26 22:10:23.000000000","message":"not needed","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c022a39387b5ed01b5a9d44f2b3b50809c19d59c","unresolved":false,"context_lines":[{"line_number":256,"context_line":"We made the following assumptions:"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"* Neutron supports ``multi-provider`` extension therefore a single logical"},{"line_number":259,"context_line":"  network might map to more than one physnets. Physnets of non-dynamic"},{"line_number":260,"context_line":"  segments are known before port binding. For the sake of simplicity in"},{"line_number":261,"context_line":"  this spec we assume each segment directly connected to a physical"},{"line_number":262,"context_line":"  interface with a mimimum bandwidth guarantee is a non-dynamic"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_3c753ecd","line":259,"range":{"start_line":259,"start_character":44,"end_line":259,"end_character":45},"in_reply_to":"9f6a8fd7_6aea1aad","updated":"2018-04-27 14:27:56.000000000","message":"Done","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"1e6167a7e875a8b8856294848764dcacfc2e67e1","unresolved":false,"context_lines":[{"line_number":378,"context_line":"components (for example a nova scheduler filter) could query it from"},{"line_number":379,"context_line":"Neutron-server."},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"When Placement and nova-scheduler chooses to allocate the requested"},{"line_number":382,"context_line":"bandwidth on a particular network resource provider (that represents"},{"line_number":383,"context_line":"a physical network interface) that choice has its implications on:"},{"line_number":384,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_a550650c","line":381,"range":{"start_line":381,"start_character":34,"end_line":381,"end_character":41},"updated":"2018-04-26 22:10:23.000000000","message":"choose","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c022a39387b5ed01b5a9d44f2b3b50809c19d59c","unresolved":false,"context_lines":[{"line_number":378,"context_line":"components (for example a nova scheduler filter) could query it from"},{"line_number":379,"context_line":"Neutron-server."},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"When Placement and nova-scheduler chooses to allocate the requested"},{"line_number":382,"context_line":"bandwidth on a particular network resource provider (that represents"},{"line_number":383,"context_line":"a physical network interface) that choice has its implications on:"},{"line_number":384,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_dcd68228","line":381,"range":{"start_line":381,"start_character":34,"end_line":381,"end_character":41},"in_reply_to":"9f6a8fd7_a550650c","updated":"2018-04-27 14:27:56.000000000","message":"Done","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"1e6167a7e875a8b8856294848764dcacfc2e67e1","unresolved":false,"context_lines":[{"line_number":391,"context_line":"first (in the allocation), otherwise resources could be used somewhere"},{"line_number":392,"context_line":"else than allocated."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"The choice in the allocation can be easily told Neutron via the"},{"line_number":395,"context_line":"chosen network resource provider UUID if this UUID is known for both"},{"line_number":396,"context_line":"Neutron-server and Neutron-agent. If available resources are reported"},{"line_number":397,"context_line":"directly from Neutron-agent to Placement than Neutron-server may"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_25aa15d2","line":394,"range":{"start_line":394,"start_character":43,"end_line":394,"end_character":47},"updated":"2018-04-26 22:10:23.000000000","message":"communicated to","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"1e6167a7e875a8b8856294848764dcacfc2e67e1","unresolved":false,"context_lines":[{"line_number":391,"context_line":"first (in the allocation), otherwise resources could be used somewhere"},{"line_number":392,"context_line":"else than allocated."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"The choice in the allocation can be easily told Neutron via the"},{"line_number":395,"context_line":"chosen network resource provider UUID if this UUID is known for both"},{"line_number":396,"context_line":"Neutron-server and Neutron-agent. If available resources are reported"},{"line_number":397,"context_line":"directly from Neutron-agent to Placement than Neutron-server may"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_0596f195","line":394,"range":{"start_line":394,"start_character":56,"end_line":394,"end_character":59},"updated":"2018-04-26 22:10:23.000000000","message":"using","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c022a39387b5ed01b5a9d44f2b3b50809c19d59c","unresolved":false,"context_lines":[{"line_number":391,"context_line":"first (in the allocation), otherwise resources could be used somewhere"},{"line_number":392,"context_line":"else than allocated."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"The choice in the allocation can be easily told Neutron via the"},{"line_number":395,"context_line":"chosen network resource provider UUID if this UUID is known for both"},{"line_number":396,"context_line":"Neutron-server and Neutron-agent. If available resources are reported"},{"line_number":397,"context_line":"directly from Neutron-agent to Placement than Neutron-server may"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_9ce00afd","line":394,"range":{"start_line":394,"start_character":56,"end_line":394,"end_character":59},"in_reply_to":"9f6a8fd7_0596f195","updated":"2018-04-27 14:27:56.000000000","message":"Done","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c022a39387b5ed01b5a9d44f2b3b50809c19d59c","unresolved":false,"context_lines":[{"line_number":391,"context_line":"first (in the allocation), otherwise resources could be used somewhere"},{"line_number":392,"context_line":"else than allocated."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"The choice in the allocation can be easily told Neutron via the"},{"line_number":395,"context_line":"chosen network resource provider UUID if this UUID is known for both"},{"line_number":396,"context_line":"Neutron-server and Neutron-agent. If available resources are reported"},{"line_number":397,"context_line":"directly from Neutron-agent to Placement than Neutron-server may"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_3ce53e0b","line":394,"range":{"start_line":394,"start_character":43,"end_line":394,"end_character":47},"in_reply_to":"9f6a8fd7_25aa15d2","updated":"2018-04-27 14:27:56.000000000","message":"Done","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"1e6167a7e875a8b8856294848764dcacfc2e67e1","unresolved":false,"context_lines":[{"line_number":392,"context_line":"else than allocated."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"The choice in the allocation can be easily told Neutron via the"},{"line_number":395,"context_line":"chosen network resource provider UUID if this UUID is known for both"},{"line_number":396,"context_line":"Neutron-server and Neutron-agent. If available resources are reported"},{"line_number":397,"context_line":"directly from Neutron-agent to Placement than Neutron-server may"},{"line_number":398,"context_line":"not know about resource provider UUIDs. Therefore indirect reporting"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_2593f5a5","line":395,"range":{"start_line":395,"start_character":60,"end_line":395,"end_character":63},"updated":"2018-04-26 22:10:23.000000000","message":"to","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c022a39387b5ed01b5a9d44f2b3b50809c19d59c","unresolved":false,"context_lines":[{"line_number":392,"context_line":"else than allocated."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"The choice in the allocation can be easily told Neutron via the"},{"line_number":395,"context_line":"chosen network resource provider UUID if this UUID is known for both"},{"line_number":396,"context_line":"Neutron-server and Neutron-agent. If available resources are reported"},{"line_number":397,"context_line":"directly from Neutron-agent to Placement than Neutron-server may"},{"line_number":398,"context_line":"not know about resource provider UUIDs. Therefore indirect reporting"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_5ce27203","line":395,"range":{"start_line":395,"start_character":60,"end_line":395,"end_character":63},"in_reply_to":"9f6a8fd7_2593f5a5","updated":"2018-04-27 14:27:56.000000000","message":"Done","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"1e6167a7e875a8b8856294848764dcacfc2e67e1","unresolved":false,"context_lines":[{"line_number":394,"context_line":"The choice in the allocation can be easily told Neutron via the"},{"line_number":395,"context_line":"chosen network resource provider UUID if this UUID is known for both"},{"line_number":396,"context_line":"Neutron-server and Neutron-agent. If available resources are reported"},{"line_number":397,"context_line":"directly from Neutron-agent to Placement than Neutron-server may"},{"line_number":398,"context_line":"not know about resource provider UUIDs. Therefore indirect reporting"},{"line_number":399,"context_line":"is recommended."},{"line_number":400,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_c58f9973","line":397,"range":{"start_line":397,"start_character":40,"end_line":397,"end_character":45},"updated":"2018-04-26 22:10:23.000000000","message":", then","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c022a39387b5ed01b5a9d44f2b3b50809c19d59c","unresolved":false,"context_lines":[{"line_number":394,"context_line":"The choice in the allocation can be easily told Neutron via the"},{"line_number":395,"context_line":"chosen network resource provider UUID if this UUID is known for both"},{"line_number":396,"context_line":"Neutron-server and Neutron-agent. If available resources are reported"},{"line_number":397,"context_line":"directly from Neutron-agent to Placement than Neutron-server may"},{"line_number":398,"context_line":"not know about resource provider UUIDs. Therefore indirect reporting"},{"line_number":399,"context_line":"is recommended."},{"line_number":400,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_fceee6eb","line":397,"range":{"start_line":397,"start_character":40,"end_line":397,"end_character":45},"in_reply_to":"9f6a8fd7_c58f9973","updated":"2018-04-27 14:27:56.000000000","message":"Done","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c022a39387b5ed01b5a9d44f2b3b50809c19d59c","unresolved":false,"context_lines":[{"line_number":453,"context_line":"heartbeat. It updates the objects whose attributes are different in"},{"line_number":454,"context_line":"Placement and the heartbeat."},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"At subsequent heartbeats received Neutron-server diffs the new and"},{"line_number":457,"context_line":"the previous heartbeats. If nothing changed no Placement request"},{"line_number":458,"context_line":"is sent. If a change in heartbeats is detected Neutron sends the"},{"line_number":459,"context_line":"appropriate Placement request based on the diff of heartbeats using"},{"line_number":460,"context_line":"the last seen Placement generation number. If the Placement request is"},{"line_number":461,"context_line":"successful Neutron stores the new generation number. If the request"},{"line_number":462,"context_line":"fails with generation conflict Neutron falls back to diffing between"},{"line_number":463,"context_line":"Placement and the heartbeat."},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"Progress or block until the Compute host RP is created"},{"line_number":466,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_dc8d2232","line":463,"range":{"start_line":456,"start_character":0,"end_line":463,"end_character":28},"updated":"2018-04-27 14:27:56.000000000","message":"Reading back again what I have written I have a feeling I started to optimize prematurely. If the Placement service is fast enough it may be simpler to always diff against Placement and use the changes in heartbeat as a trigger only.","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c022a39387b5ed01b5a9d44f2b3b50809c19d59c","unresolved":false,"context_lines":[{"line_number":581,"context_line":""},{"line_number":582,"context_line":"  * End-to-end feature test."},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"In test frameworks where we cannot depend on Nova we can mock it away by:"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"* Creating and binding the port as Nova would have done it, including."},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"  * Setting its ``binding_profile``."},{"line_number":589,"context_line":"  * Setting its ``binding_host_id`` as if Placement and Scheduler would"},{"line_number":590,"context_line":"    have chosen the host."},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"Upgrade"},{"line_number":593,"context_line":"-------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_3c3d3e2c","line":590,"range":{"start_line":584,"start_character":0,"end_line":590,"end_character":25},"updated":"2018-04-27 14:27:56.000000000","message":"This mocking together with the work items below is how I meant to outline a prototype on the last IRC meeting. On the other hand I\u0027m starting to realize how little time is left until the summit so I\u0027m not sure if we\u0027ll get that prototype ready until Vancouver. We\u0027ll see how far we get.","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c022a39387b5ed01b5a9d44f2b3b50809c19d59c","unresolved":false,"context_lines":[{"line_number":641,"context_line":"  API extension, DB, OVO, rule type, SDK, OSC"},{"line_number":642,"context_line":"* Extend port with ``resource_request`` based on QoS rule"},{"line_number":643,"context_line":"  mimimum-bandwidth-placement."},{"line_number":644,"context_line":"* Make the reported agent configuration queriable so neutron-server can"},{"line_number":645,"context_line":"  infer which backend is implied in the RP allocated (as in"},{"line_number":646,"context_line":"  ``binding_profile.allocation``)."},{"line_number":647,"context_line":"* In binding a port with ``binding_profile.allocation`` replace the list of"},{"line_number":648,"context_line":"  tried mechanism drivers with the one-element list of the inferred backend."},{"line_number":649,"context_line":"* (We already have it): Send ``binding_profile`` to all agents."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_fc058615","line":646,"range":{"start_line":644,"start_character":0,"end_line":646,"end_character":34},"updated":"2018-04-27 14:27:56.000000000","message":"Here we may need to extend the db schema because today the configurations are persisted as a blob.","commit_id":"499a6c0bba59acdd33838891e30b456a8fe8d56f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"89ced0e4c9e2f7d8f76dfaf3bf59d06d21ee9688","unresolved":false,"context_lines":[{"line_number":36,"context_line":"* data plane: Enforcing the guarantee on the physical network devices."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"This spec addresses placement enforcement only. (Data plane enforcement"},{"line_number":39,"context_line":"is covered by [4]_.) However the design must respect that most users"},{"line_number":40,"context_line":"are interested in the joint use of these enforcements."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Since the placement enforcement itself is a Nova-Neutron cross-project"},{"line_number":43,"context_line":"feature this spec is meant to be read, commented and maintained together"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9f6a8fd7_0e69e4bc","line":40,"range":{"start_line":39,"start_character":21,"end_line":40,"end_character":54},"updated":"2018-05-01 22:01:01.000000000","message":"Exactly!!!! In fact, let\u0027s replace \"most\" with \"all\" in the statement","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9b23c5ef2a9e561335f0e46bb23fa9b2e34145a1","unresolved":false,"context_lines":[{"line_number":36,"context_line":"* data plane: Enforcing the guarantee on the physical network devices."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"This spec addresses placement enforcement only. (Data plane enforcement"},{"line_number":39,"context_line":"is covered by [4]_.) However the design must respect that most users"},{"line_number":40,"context_line":"are interested in the joint use of these enforcements."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Since the placement enforcement itself is a Nova-Neutron cross-project"},{"line_number":43,"context_line":"feature this spec is meant to be read, commented and maintained together"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_8d046cc8","line":40,"range":{"start_line":39,"start_character":21,"end_line":40,"end_character":54},"in_reply_to":"9f6a8fd7_0e69e4bc","updated":"2018-05-03 14:09:21.000000000","message":"Done","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"89ced0e4c9e2f7d8f76dfaf3bf59d06d21ee9688","unresolved":false,"context_lines":[{"line_number":70,"context_line":"Proposed Change"},{"line_number":71,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"1. The user must be able to express the resource needs of a port."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"   1. Introduce ``qos_minimum_bandwidth_placement_rule`` with both egress"},{"line_number":76,"context_line":"      and ingress directions."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"      Unlike enforcement in the data plane, Placement can handle both"},{"line_number":79,"context_line":"      directions by the same effort."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"   2. Mark ``qos_minimum_bandwidth_placement_rule`` as supported QoS"},{"line_number":82,"context_line":"      policy rule for each existing QoS driver."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"      Placement enforcement is orthogonal to backend mechanisms. A user"},{"line_number":85,"context_line":"      can have placement enforcement for drivers not having data plane"},{"line_number":86,"context_line":"      enforcement (yet)."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"   When both placement and data plane enforcement is desired a policy must"},{"line_number":89,"context_line":"   contain rules of (egress/ingress variants of) both rule types:"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"   * ``qos_minimum_bandwidth_rule``: data plane enforcement"},{"line_number":92,"context_line":"   * ``qos_minimum_bandwidth_placement_rule``: placement enforcement"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"   Technically the data plane and placement enforcing rules can have"},{"line_number":95,"context_line":"   different bandwidth (``min_kbps``) values. However this would mean"},{"line_number":96,"context_line":"   that the resources allocated and the resources used are different"},{"line_number":97,"context_line":"   which is clearly unwanted. The admin responsible for the policy"},{"line_number":98,"context_line":"   must keep the bandwidth values in sync. If a rule update grows the"},{"line_number":99,"context_line":"   guaranteed minimum bandwidth then the rules must be updated in the"},{"line_number":100,"context_line":"   following order: placement rule, data plane rule."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"   But if a rule update decreases the guaranteed minimum bandwidth then"},{"line_number":103,"context_line":"   the update order must be reversed. The same applies for rule creation"},{"line_number":104,"context_line":"   for policies that are already in effect."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"2. Neutron must convey the resource needs of a port to Nova."}],"source_content_type":"text/x-rst","patch_set":9,"id":"9f6a8fd7_0421c54d","line":103,"range":{"start_line":73,"start_character":3,"end_line":103,"end_character":49},"updated":"2018-05-01 22:01:01.000000000","message":"I have gone through this spec twice and I have +1ed the corresponding Nova spec. I still fail to see the admin / user oriented reason of having this qos_minimum_bandwidth_placement_rule. I strongly oppose it. We need to see this from the point of view of and **OpenStack admin / user**. Note the emphasis on **OpenStack admin / user**. As and admin / user, I want to specify my minimum bandwidth requirements once and then see them enforced across all the necessary components of my OpenStack system. I don\u0027t want to be burdened with specifying my minimum bandwidth requirements for placement and for the data plane separately. Furthermore, I don\u0027t want to be given the additional task of keeping two separate minimum bandwidth specification requirements consistent with each other. How is this a good API design?\n\nUnder what use case the admin / user will derive a benefit from having two separate minimum bandwidth specifications that is not achievable having only one such specification?","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9b23c5ef2a9e561335f0e46bb23fa9b2e34145a1","unresolved":false,"context_lines":[{"line_number":70,"context_line":"Proposed Change"},{"line_number":71,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"1. The user must be able to express the resource needs of a port."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"   1. Introduce ``qos_minimum_bandwidth_placement_rule`` with both egress"},{"line_number":76,"context_line":"      and ingress directions."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"      Unlike enforcement in the data plane, Placement can handle both"},{"line_number":79,"context_line":"      directions by the same effort."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"   2. Mark ``qos_minimum_bandwidth_placement_rule`` as supported QoS"},{"line_number":82,"context_line":"      policy rule for each existing QoS driver."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"      Placement enforcement is orthogonal to backend mechanisms. A user"},{"line_number":85,"context_line":"      can have placement enforcement for drivers not having data plane"},{"line_number":86,"context_line":"      enforcement (yet)."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"   When both placement and data plane enforcement is desired a policy must"},{"line_number":89,"context_line":"   contain rules of (egress/ingress variants of) both rule types:"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"   * ``qos_minimum_bandwidth_rule``: data plane enforcement"},{"line_number":92,"context_line":"   * ``qos_minimum_bandwidth_placement_rule``: placement enforcement"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"   Technically the data plane and placement enforcing rules can have"},{"line_number":95,"context_line":"   different bandwidth (``min_kbps``) values. However this would mean"},{"line_number":96,"context_line":"   that the resources allocated and the resources used are different"},{"line_number":97,"context_line":"   which is clearly unwanted. The admin responsible for the policy"},{"line_number":98,"context_line":"   must keep the bandwidth values in sync. If a rule update grows the"},{"line_number":99,"context_line":"   guaranteed minimum bandwidth then the rules must be updated in the"},{"line_number":100,"context_line":"   following order: placement rule, data plane rule."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"   But if a rule update decreases the guaranteed minimum bandwidth then"},{"line_number":103,"context_line":"   the update order must be reversed. The same applies for rule creation"},{"line_number":104,"context_line":"   for policies that are already in effect."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"2. Neutron must convey the resource needs of a port to Nova."}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_ad992820","line":103,"range":{"start_line":73,"start_character":3,"end_line":103,"end_character":49},"in_reply_to":"9f6a8fd7_0421c54d","updated":"2018-05-03 14:09:21.000000000","message":"For this I can see some argument in PS4:\nhttps://review.openstack.org/#/c/508149/4/specs/rocky/minimum-bandwidth-allocation-placement-api.rst@76\n\nBence and Slawek seen 2 options:\n* Documenting that the already existing qos_minimum_bandwidth_rule mean different things (like if the feature will be ready placement enforcement for all reference backends, but only sriov will support and only egress direction on the dataplane)\n\n* Having 2 rule types, one for the legacy qos_minimum_bandwidth_rule and one for the new placement enforced one: qos_minimum_bandwidth_placement_rule.\n\nFrom Slawek one argument was on the side of the new rule type that the existing validators could be easier to use.","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"89ced0e4c9e2f7d8f76dfaf3bf59d06d21ee9688","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    resource_provider_bandwidths \u003d br0:EGRESS:INGRESS,br1:EGRESS:INGRESS"},{"line_number":162,"context_line":"    resource_provider_traits \u003d \\"},{"line_number":163,"context_line":"        br0:NET_VNIC_TYPE_VIRTIO:CUSTOM_GUARANTEED_BW, \\"},{"line_number":164,"context_line":"        br1:NET_VNIC_TYPE_VIRTIO:CUSTOM_GUARANTEED_BW:CUSTOM_BEST_EFFORT_BW"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    # Examples:"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"9f6a8fd7_09f8fec1","line":164,"range":{"start_line":163,"start_character":0,"end_line":164,"end_character":75},"updated":"2018-05-01 22:01:01.000000000","message":"I think this is out of synch with what is shown in the RP model L294 and onwards. I understand that the model being proposed is the one in L294","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9b23c5ef2a9e561335f0e46bb23fa9b2e34145a1","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    resource_provider_bandwidths \u003d br0:EGRESS:INGRESS,br1:EGRESS:INGRESS"},{"line_number":162,"context_line":"    resource_provider_traits \u003d \\"},{"line_number":163,"context_line":"        br0:NET_VNIC_TYPE_VIRTIO:CUSTOM_GUARANTEED_BW, \\"},{"line_number":164,"context_line":"        br1:NET_VNIC_TYPE_VIRTIO:CUSTOM_GUARANTEED_BW:CUSTOM_BEST_EFFORT_BW"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    # Examples:"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_6d13100f","line":164,"range":{"start_line":163,"start_character":0,"end_line":164,"end_character":75},"in_reply_to":"9f6a8fd7_09f8fec1","updated":"2018-05-03 14:09:21.000000000","message":"I synched it with the rp tree, hope everything is fine.","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"89ced0e4c9e2f7d8f76dfaf3bf59d06d21ee9688","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    [sriov_nic]"},{"line_number":186,"context_line":"    physical_device_mappings \u003d physnet0:eth0,physnet0:eth1,physnet1:eth2"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    resource_provider_bandwidths \u003d eth0:EGRESS:INGRESS,eth1:EGRESS:INGRESS"},{"line_number":189,"context_line":"    resource_provider_traits \u003d eth0:TRAIT1,eth1:TRAIT1:TRAIT2"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"How required bandwidth for a Neutron port is modeled"},{"line_number":192,"context_line":"----------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9f6a8fd7_c901a6b1","line":189,"range":{"start_line":188,"start_character":0,"end_line":189,"end_character":61},"updated":"2018-05-01 22:01:01.000000000","message":"I think this is out of synch with what is shown in the RP model L294 and onwards. I understand that the model being proposed is the one in L294","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9b23c5ef2a9e561335f0e46bb23fa9b2e34145a1","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    [sriov_nic]"},{"line_number":186,"context_line":"    physical_device_mappings \u003d physnet0:eth0,physnet0:eth1,physnet1:eth2"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    resource_provider_bandwidths \u003d eth0:EGRESS:INGRESS,eth1:EGRESS:INGRESS"},{"line_number":189,"context_line":"    resource_provider_traits \u003d eth0:TRAIT1,eth1:TRAIT1:TRAIT2"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"How required bandwidth for a Neutron port is modeled"},{"line_number":192,"context_line":"----------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_ad3288a6","line":189,"range":{"start_line":188,"start_character":0,"end_line":189,"end_character":61},"in_reply_to":"9f6a8fd7_c901a6b1","updated":"2018-05-03 14:09:21.000000000","message":"I synched it with the rp tree, but the resource_provider_bandwidths as I see is correct.","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"89ced0e4c9e2f7d8f76dfaf3bf59d06d21ee9688","unresolved":false,"context_lines":[{"line_number":366,"context_line":""},{"line_number":367,"context_line":"Both have pros and cons. Direct reporting involves fewer components"},{"line_number":368,"context_line":"therefore it\u0027s more efficient and more reliable. On the other hand"},{"line_number":369,"context_line":"liveness of the resource information may be important information in"},{"line_number":370,"context_line":"itself. Nova has the compute heartbeat mechanism to ensure scheduler"},{"line_number":371,"context_line":"considers the live Placement records only. In case liveness of Neutron"},{"line_number":372,"context_line":"resource information is needed the only practical way is to build"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9f6a8fd7_29e142fd","line":369,"range":{"start_line":369,"start_character":0,"end_line":369,"end_character":8},"updated":"2018-05-01 22:01:01.000000000","message":"freshness?","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9b23c5ef2a9e561335f0e46bb23fa9b2e34145a1","unresolved":false,"context_lines":[{"line_number":366,"context_line":""},{"line_number":367,"context_line":"Both have pros and cons. Direct reporting involves fewer components"},{"line_number":368,"context_line":"therefore it\u0027s more efficient and more reliable. On the other hand"},{"line_number":369,"context_line":"liveness of the resource information may be important information in"},{"line_number":370,"context_line":"itself. Nova has the compute heartbeat mechanism to ensure scheduler"},{"line_number":371,"context_line":"considers the live Placement records only. In case liveness of Neutron"},{"line_number":372,"context_line":"resource information is needed the only practical way is to build"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_adc04852","line":369,"range":{"start_line":369,"start_character":0,"end_line":369,"end_character":8},"in_reply_to":"9f6a8fd7_29e142fd","updated":"2018-05-03 14:09:21.000000000","message":"Done","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"89ced0e4c9e2f7d8f76dfaf3bf59d06d21ee9688","unresolved":false,"context_lines":[{"line_number":368,"context_line":"therefore it\u0027s more efficient and more reliable. On the other hand"},{"line_number":369,"context_line":"liveness of the resource information may be important information in"},{"line_number":370,"context_line":"itself. Nova has the compute heartbeat mechanism to ensure scheduler"},{"line_number":371,"context_line":"considers the live Placement records only. In case liveness of Neutron"},{"line_number":372,"context_line":"resource information is needed the only practical way is to build"},{"line_number":373,"context_line":"on the Neutron-agent heartbeat mechanism. Otherwise the reporting"},{"line_number":374,"context_line":"and heartbeat mechanism would take different paths. If resource"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9f6a8fd7_e9ea6ad6","line":371,"range":{"start_line":371,"start_character":51,"end_line":371,"end_character":59},"updated":"2018-05-01 22:01:01.000000000","message":"freshness?","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9b23c5ef2a9e561335f0e46bb23fa9b2e34145a1","unresolved":false,"context_lines":[{"line_number":368,"context_line":"therefore it\u0027s more efficient and more reliable. On the other hand"},{"line_number":369,"context_line":"liveness of the resource information may be important information in"},{"line_number":370,"context_line":"itself. Nova has the compute heartbeat mechanism to ensure scheduler"},{"line_number":371,"context_line":"considers the live Placement records only. In case liveness of Neutron"},{"line_number":372,"context_line":"resource information is needed the only practical way is to build"},{"line_number":373,"context_line":"on the Neutron-agent heartbeat mechanism. Otherwise the reporting"},{"line_number":374,"context_line":"and heartbeat mechanism would take different paths. If resource"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_6dba30df","line":371,"range":{"start_line":371,"start_character":51,"end_line":371,"end_character":59},"in_reply_to":"9f6a8fd7_e9ea6ad6","updated":"2018-05-03 14:09:21.000000000","message":"Done","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"89ced0e4c9e2f7d8f76dfaf3bf59d06d21ee9688","unresolved":false,"context_lines":[{"line_number":373,"context_line":"on the Neutron-agent heartbeat mechanism. Otherwise the reporting"},{"line_number":374,"context_line":"and heartbeat mechanism would take different paths. If resource"},{"line_number":375,"context_line":"information is reported through the agent heartbeat mechanism then"},{"line_number":376,"context_line":"liveness of resource information is known by Neutron-server and other"},{"line_number":377,"context_line":"components (for example a nova scheduler filter) could query it from"},{"line_number":378,"context_line":"Neutron-server."},{"line_number":379,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"9f6a8fd7_a9beb2d1","line":376,"range":{"start_line":376,"start_character":0,"end_line":376,"end_character":8},"updated":"2018-05-01 22:01:01.000000000","message":"ditto","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9b23c5ef2a9e561335f0e46bb23fa9b2e34145a1","unresolved":false,"context_lines":[{"line_number":373,"context_line":"on the Neutron-agent heartbeat mechanism. Otherwise the reporting"},{"line_number":374,"context_line":"and heartbeat mechanism would take different paths. If resource"},{"line_number":375,"context_line":"information is reported through the agent heartbeat mechanism then"},{"line_number":376,"context_line":"liveness of resource information is known by Neutron-server and other"},{"line_number":377,"context_line":"components (for example a nova scheduler filter) could query it from"},{"line_number":378,"context_line":"Neutron-server."},{"line_number":379,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_0dcffc7f","line":376,"range":{"start_line":376,"start_character":0,"end_line":376,"end_character":8},"in_reply_to":"9f6a8fd7_a9beb2d1","updated":"2018-05-03 14:09:21.000000000","message":"Done","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"89ced0e4c9e2f7d8f76dfaf3bf59d06d21ee9688","unresolved":false,"context_lines":[{"line_number":429,"context_line":"be derived from it). The values of these fields shall be formatted so"},{"line_number":430,"context_line":"they can be readily pasted into requests sent to the Placement API."},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"Agent resource providers shall be identified by their already existing"},{"line_number":433,"context_line":"Neutron agent UUIDs."},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"Neutron-agents shall generate UUIDs for physical network interface"},{"line_number":436,"context_line":"resource providers. Version 5 (name-based) UUIDs should be used by"},{"line_number":437,"context_line":"hashing names like ``HOSTNAME:OVS-BRIDGE-NAME`` for ovs-agent and"},{"line_number":438,"context_line":"``HOSTNAME:PF-NAME`` for sriov-agent since this way the UUIDs will"},{"line_number":439,"context_line":"be stable through an agent restart."},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"Synchronization of resource information reported"},{"line_number":442,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9f6a8fd7_84fe3503","line":439,"range":{"start_line":432,"start_character":0,"end_line":439,"end_character":35},"updated":"2018-05-01 22:01:01.000000000","message":"Should we show these UUIDs in the tree at L294?","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9b23c5ef2a9e561335f0e46bb23fa9b2e34145a1","unresolved":false,"context_lines":[{"line_number":429,"context_line":"be derived from it). The values of these fields shall be formatted so"},{"line_number":430,"context_line":"they can be readily pasted into requests sent to the Placement API."},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"Agent resource providers shall be identified by their already existing"},{"line_number":433,"context_line":"Neutron agent UUIDs."},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"Neutron-agents shall generate UUIDs for physical network interface"},{"line_number":436,"context_line":"resource providers. Version 5 (name-based) UUIDs should be used by"},{"line_number":437,"context_line":"hashing names like ``HOSTNAME:OVS-BRIDGE-NAME`` for ovs-agent and"},{"line_number":438,"context_line":"``HOSTNAME:PF-NAME`` for sriov-agent since this way the UUIDs will"},{"line_number":439,"context_line":"be stable through an agent restart."},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"Synchronization of resource information reported"},{"line_number":442,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5f7c97a3_6daf9094","line":439,"range":{"start_line":432,"start_character":0,"end_line":439,"end_character":35},"in_reply_to":"9f6a8fd7_84fe3503","updated":"2018-05-03 14:09:21.000000000","message":"I added the note for the uuid, please check.","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"89ced0e4c9e2f7d8f76dfaf3bf59d06d21ee9688","unresolved":false,"context_lines":[{"line_number":591,"context_line":"Upgrade"},{"line_number":592,"context_line":"-------"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"* When upgrading a system with ``minimum_bandwidth`` rules to the"},{"line_number":595,"context_line":"  joint use of ``minimum_bandwidth`` and ``minimum_bandwidth_placement``"},{"line_number":596,"context_line":"  we see three options:"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"  1. It is the responsibility of the admin to create the"},{"line_number":599,"context_line":"     allocations in Placement for all ports using the newly created"},{"line_number":600,"context_line":"     ``minimum_bandwidth_placement`` rule. Please note: the previous implies"},{"line_number":601,"context_line":"     and enforces that bandwidth is never overallocated."},{"line_number":602,"context_line":""},{"line_number":603,"context_line":"  2. Add tooling for 1. as described in the \u0027Upgrade impact\u0027 section of [2]_."},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"  3. The admin is free to leave the first use of"},{"line_number":606,"context_line":"     ``minimum_bandwidth_placement`` later than the software version"},{"line_number":607,"context_line":"     upgrade. It is also possible to use policies containing"},{"line_number":608,"context_line":"     ``minimum_bandwidth_placement`` rules only for newly created"},{"line_number":609,"context_line":"     ports and leave all ports of the old policies (containing only"},{"line_number":610,"context_line":"     ``minimum_bandwidth``) alone until they all go out of use."},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"* The desired upgrade order of components is the following:"},{"line_number":613,"context_line":"  Placement, Nova, Neutron"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9f6a8fd7_84a075a7","line":610,"range":{"start_line":594,"start_character":1,"end_line":610,"end_character":63},"updated":"2018-05-01 22:01:01.000000000","message":"See my comment to L103. This adds to my reasons to oppose the qos_minimum_bandwidth_placement_rule. We also need a migration where the admin has a lot to do","commit_id":"4794b71e7305bda78f97b448da8df9c809438fc9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9b23c5ef2a9e561335f0e46bb23fa9b2e34145a1","unresolved":false,"context_lines":[{"line_number":296,"context_line":"  Compute RP (name\u003dhostname)"},{"line_number":297,"context_line":"   +"},{"line_number":298,"context_line":"   |"},{"line_number":299,"context_line":"   +-------+Network agent RP (for OVS agent), uuid \u003d agent_uuid"},{"line_number":300,"context_line":"   |          inventory: # later, model number of OVS ports here"},{"line_number":301,"context_line":"   |             +"},{"line_number":302,"context_line":"   |             |"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_8dd22c34","line":299,"range":{"start_line":299,"start_character":46,"end_line":299,"end_character":63},"updated":"2018-05-03 14:09:21.000000000","message":"Miguel: For agent rps I noted that the uuid will be the agent uuid already existing.","commit_id":"6484b56f06bed825b0a574267bbbe920976ae12f"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9b23c5ef2a9e561335f0e46bb23fa9b2e34145a1","unresolved":false,"context_lines":[{"line_number":301,"context_line":"   |             +"},{"line_number":302,"context_line":"   |             |"},{"line_number":303,"context_line":"   |             +------+Physical network interface RP,"},{"line_number":304,"context_line":"   |             |       uuid \u003d uuid5(hostname:br0)"},{"line_number":305,"context_line":"   |             |         traits: CUSTOM_PHYSNET_1, CUSTOM_VNIC_TYPE_NORMAL"},{"line_number":306,"context_line":"   |             |         inventory:"},{"line_number":307,"context_line":"   |             |         {NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND: 10000,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_cdefc4e7","line":304,"range":{"start_line":304,"start_character":25,"end_line":304,"end_character":51},"updated":"2018-05-03 14:09:21.000000000","message":"Miguel: For physical network interface rps I noted that the uuid will be uuid5 generated for the hostname and the bridgename or nic name in case of sriov.","commit_id":"6484b56f06bed825b0a574267bbbe920976ae12f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":54,"context_line":"The most straightforward use case is when a user, who has paid a premium"},{"line_number":55,"context_line":"service that guarantees a minimum network bandwidth, wants to spawn a"},{"line_number":56,"context_line":"Nova server. The scheduler needs to know how much bandwidth is already"},{"line_number":57,"context_line":"in use in each RP representing a physical network device in each compute"},{"line_number":58,"context_line":"host and how much bandwidth the user is requesting."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Data plane only enforcement was merged in Newton for SR-IOV egress"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_8f44a448","line":57,"range":{"start_line":57,"start_character":15,"end_line":57,"end_character":32},"updated":"2018-05-14 20:08:51.000000000","message":"At this point we haven\u0027t talked about RPs yet, so I would remove this","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"The most straightforward use case is when a user, who has paid a premium"},{"line_number":55,"context_line":"service that guarantees a minimum network bandwidth, wants to spawn a"},{"line_number":56,"context_line":"Nova server. The scheduler needs to know how much bandwidth is already"},{"line_number":57,"context_line":"in use in each RP representing a physical network device in each compute"},{"line_number":58,"context_line":"host and how much bandwidth the user is requesting."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Data plane only enforcement was merged in Newton for SR-IOV egress"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_27c24b5a","line":57,"range":{"start_line":57,"start_character":15,"end_line":57,"end_character":32},"in_reply_to":"5f7c97a3_8f44a448","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4e2a198e9cff0604ccf98d923cae331576099e94","unresolved":false,"context_lines":[{"line_number":61,"context_line":"(see `Newton Release Notes` [6]_)."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Placement only enforcement may be a viable feature for users able"},{"line_number":64,"context_line":"to control all traffic (eg. in a single tenant private cloud). Such"},{"line_number":65,"context_line":"placement only enforcement can be also used together with the bandwidth"},{"line_number":66,"context_line":"limit rule. The admin can set two rules in a QoS policy, both with"},{"line_number":67,"context_line":"the same bandwidth values and then each server on such chosen compute"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_e4a0d144","line":64,"range":{"start_line":64,"start_character":24,"end_line":64,"end_character":27},"updated":"2018-05-15 08:49:13.000000000","message":"shouldn\u0027t be \"e.g.\"?","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":61,"context_line":"(see `Newton Release Notes` [6]_)."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Placement only enforcement may be a viable feature for users able"},{"line_number":64,"context_line":"to control all traffic (eg. in a single tenant private cloud). Such"},{"line_number":65,"context_line":"placement only enforcement can be also used together with the bandwidth"},{"line_number":66,"context_line":"limit rule. The admin can set two rules in a QoS policy, both with"},{"line_number":67,"context_line":"the same bandwidth values and then each server on such chosen compute"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_d3a6b90f","line":64,"range":{"start_line":64,"start_character":24,"end_line":64,"end_character":27},"in_reply_to":"5f7c97a3_e4a0d144","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":114,"context_line":"3. Neutron must populate the Placement DB with the available resources."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"   Report information on available resources to the Placement service"},{"line_number":117,"context_line":"   using the Placement API [1]_. This information includes resource"},{"line_number":118,"context_line":"   providers, traits and inventories as documented in the \u0027Networking"},{"line_number":119,"context_line":"   RP model\u0027 section below."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"   The cloud admin must be able to control (by configuration) what is"},{"line_number":122,"context_line":"   reported to Placement. To ease the configuration work autodiscovery"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_0fb894e2","line":119,"range":{"start_line":117,"start_character":59,"end_line":119,"end_character":27},"updated":"2018-05-14 20:08:51.000000000","message":"Here we are stating the how but IMO we should list the what: bandwidth inventories, the physnets associated to each physical interface and the VNIC types supported","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":114,"context_line":"3. Neutron must populate the Placement DB with the available resources."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"   Report information on available resources to the Placement service"},{"line_number":117,"context_line":"   using the Placement API [1]_. This information includes resource"},{"line_number":118,"context_line":"   providers, traits and inventories as documented in the \u0027Networking"},{"line_number":119,"context_line":"   RP model\u0027 section below."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"   The cloud admin must be able to control (by configuration) what is"},{"line_number":122,"context_line":"   reported to Placement. To ease the configuration work autodiscovery"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_7a245a5e","line":119,"range":{"start_line":117,"start_character":59,"end_line":119,"end_character":27},"in_reply_to":"5f7c97a3_0fb894e2","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    resource_provider_bandwidths \u003d eth0:EGRESS:INGRESS,eth1:EGRESS:INGRESS"},{"line_number":183,"context_line":"    resource_provider_traits \u003d \\"},{"line_number":184,"context_line":"        eth0:CUSTOM_PHYSNET_0:CUSTOM_PHYSNET_1,CUSTOM_VNIC_TYPE_DIRECT, \\"},{"line_number":185,"context_line":"        eth2:CUSTOM_PHYSNET_1:CUSTOM_VNIC_TYPE_DIRECT"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"How required bandwidth for a Neutron port is modeled"},{"line_number":188,"context_line":"----------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_8fbfc4a8","line":185,"updated":"2018-05-14 20:08:51.000000000","message":"While I like the way you use examples to show the concepts, I think we need to formalize a little bit more what\u0027s the role of Placement traits. I would add here a paragraph explaining that for each physical interface or bridge associated to one, we will use Placement traits to indicate what are the physnets associated and the VNICs supported.\n\nThis by the way will help readers to understand the following section, where we explain the \"required\" field of the resource_request attribute","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    resource_provider_bandwidths \u003d eth0:EGRESS:INGRESS,eth1:EGRESS:INGRESS"},{"line_number":183,"context_line":"    resource_provider_traits \u003d \\"},{"line_number":184,"context_line":"        eth0:CUSTOM_PHYSNET_0:CUSTOM_PHYSNET_1,CUSTOM_VNIC_TYPE_DIRECT, \\"},{"line_number":185,"context_line":"        eth2:CUSTOM_PHYSNET_1:CUSTOM_VNIC_TYPE_DIRECT"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"How required bandwidth for a Neutron port is modeled"},{"line_number":188,"context_line":"----------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_518620bb","line":185,"in_reply_to":"5f7c97a3_8fbfc4a8","updated":"2018-05-15 14:55:25.000000000","message":"Rereading this config piece I just realized everything listed under \u0027resource_provider_traits\u0027 is duplicated information. The physnet traits can be inferred from bridge/physical_device_mappings. The vnic_type traits are practically already hardcoded in each agent.\n\nTherefore I\u0027d like to drop \u0027resource_provider_traits\u0027 from the agent config to save the admin from the headache of maintaining the same information in two places. If and when we need custom traits beyond the physnet and vnic_type traits we can bring something like this back easily.\n\nOn the other hand I hear that you\u0027d like to see more on the traits we\u0027ll use, so I added a few paragraphs to \u0027How required bandwidth for a Neutron port is modeled\u0027, so now the traits are mentioned quite early in the document.","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"The required minimum network bandwidth needed for a port is modeled"},{"line_number":191,"context_line":"defining a QoS policy along with one or more QoS minimum bandwidth rules"},{"line_number":192,"context_line":"[4]_. However neither Nova nor Placement knows about any QoS policy"},{"line_number":193,"context_line":"rule directly. Neutron translates the resource needs of a port into a"},{"line_number":194,"context_line":"standard port attribute describing the needed resource classes, amounts"},{"line_number":195,"context_line":"and traits."}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_f9208a9d","line":192,"range":{"start_line":192,"start_character":41,"end_line":192,"end_character":46},"updated":"2018-05-14 20:08:51.000000000","message":"Nit: know","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"The required minimum network bandwidth needed for a port is modeled"},{"line_number":191,"context_line":"defining a QoS policy along with one or more QoS minimum bandwidth rules"},{"line_number":192,"context_line":"[4]_. However neither Nova nor Placement knows about any QoS policy"},{"line_number":193,"context_line":"rule directly. Neutron translates the resource needs of a port into a"},{"line_number":194,"context_line":"standard port attribute describing the needed resource classes, amounts"},{"line_number":195,"context_line":"and traits."}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_33b7ed3c","line":192,"range":{"start_line":192,"start_character":41,"end_line":192,"end_character":46},"in_reply_to":"5f7c97a3_f9208a9d","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":200,"context_line":"The resources needed by a port are expressed via the new attribute"},{"line_number":201,"context_line":"``resource_request`` extending the port as follows."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"The API extension is named ``port-resource-request``."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"Figure: resource_request in the port"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_19b8e6e2","line":203,"range":{"start_line":203,"start_character":0,"end_line":203,"end_character":53},"updated":"2018-05-14 20:08:51.000000000","message":"For better reading flow, I would move this sentence / paragraph after L219 below as:\n\nThe ``resource_request`` port attribute will be implemented by a new API extension named ``port_resource_request``","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":200,"context_line":"The resources needed by a port are expressed via the new attribute"},{"line_number":201,"context_line":"``resource_request`` extending the port as follows."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"The API extension is named ``port-resource-request``."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"Figure: resource_request in the port"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_b37c5d72","line":203,"range":{"start_line":203,"start_character":0,"end_line":203,"end_character":53},"in_reply_to":"5f7c97a3_19b8e6e2","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"If a nova server boot request has a port defined and this port has a"},{"line_number":222,"context_line":"``resource_request`` attribute, that means the Placement Service must"},{"line_number":223,"context_line":"enforce the minimum bandwidth requirements."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":226,"context_line":"it has Inventories of the new ``NET_BANDWIDTH_*`` Resource Classes and"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_cf3cdc30","line":223,"updated":"2018-05-14 20:08:51.000000000","message":"I would explain here that the content of the \"required\" field correspond to the traits associated to the RPs. See comment to L185. This way, we tie it all together. While it may be evident to us, because we\u0027ve been talking about this for weeks, it may not be that evident to other readers","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"542cc33e90899e5202dba7e54c94a7bb946584b9","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"If a nova server boot request has a port defined and this port has a"},{"line_number":222,"context_line":"``resource_request`` attribute, that means the Placement Service must"},{"line_number":223,"context_line":"enforce the minimum bandwidth requirements."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":226,"context_line":"it has Inventories of the new ``NET_BANDWIDTH_*`` Resource Classes and"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_770d4ce6","line":223,"in_reply_to":"5f7c97a3_67e04327","updated":"2018-05-15 14:42:11.000000000","message":"Today, Nova does the port creation (when you specify a network in the instance creation request) in the compute node, i.e., after the placement decision has been made. We won\u0027t be able to support this use case until Nova moves the port creation to the conductor, that is, prior to taking the placement decision","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"If a nova server boot request has a port defined and this port has a"},{"line_number":222,"context_line":"``resource_request`` attribute, that means the Placement Service must"},{"line_number":223,"context_line":"enforce the minimum bandwidth requirements."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":226,"context_line":"it has Inventories of the new ``NET_BANDWIDTH_*`` Resource Classes and"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_537aa9b9","line":223,"in_reply_to":"5f7c97a3_67e04327","updated":"2018-05-15 14:55:25.000000000","message":"You\u0027re basically right.\n\nThe root of the problem is that nova schedules first, only after that creates the port (from nova-compute). This is the wrong order. To solve this problem nova has to change: the port must be created earlier, AFAIU from the conductor already.\n\nThis is a problem nova folks are aware of (see [1]), however they don\u0027t see it as a priority and will likely be implemented only later. For us it means that \u0027nova boot --nic net-id\u003d...\u0027 is going to fail until port creation is moved to the conductor. This was documented and accepted in the nova spec (see [2]).\n\nSince this is a limitation of nova I just added a comment with a few references here.\n\n[1] https://specs.openstack.org/openstack/nova-specs/specs/pike/approved/prep-for-network-aware-scheduling-pike.html\n[2] https://review.openstack.org/#/c/502306/27/specs/rocky/approved/bandwidth-resource-provider.rst@107","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e4fb3d2ac0be7e63dfd21381d2dff7edde379449","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"If a nova server boot request has a port defined and this port has a"},{"line_number":222,"context_line":"``resource_request`` attribute, that means the Placement Service must"},{"line_number":223,"context_line":"enforce the minimum bandwidth requirements."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":226,"context_line":"it has Inventories of the new ``NET_BANDWIDTH_*`` Resource Classes and"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_77b46cf2","line":223,"in_reply_to":"5f7c97a3_770d4ce6","updated":"2018-05-15 14:46:02.000000000","message":"I know :) I just think that it should be clearly written here and in docs later as I think that it is quite common use case that user spawns instance giving network id only (there is one API call done from user to cloud instead of 2)","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4e2a198e9cff0604ccf98d923cae331576099e94","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"If a nova server boot request has a port defined and this port has a"},{"line_number":222,"context_line":"``resource_request`` attribute, that means the Placement Service must"},{"line_number":223,"context_line":"enforce the minimum bandwidth requirements."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":226,"context_line":"it has Inventories of the new ``NET_BANDWIDTH_*`` Resource Classes and"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_67e04327","line":223,"in_reply_to":"5f7c97a3_cf3cdc30","updated":"2018-05-15 08:49:13.000000000","message":"So IIUC is user will spawn instance with given network_id instead of port, then nova-compute creates port in Neutron and in such case, there will be no possibility to guarantee bandwidth for port, even if network has attached QoS policy with such rule type, am I right?\nIf my understanding is correct, this limitation should be IMO written here and later in docs.","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"If a nova server boot request has a port defined and this port has a"},{"line_number":222,"context_line":"``resource_request`` attribute, that means the Placement Service must"},{"line_number":223,"context_line":"enforce the minimum bandwidth requirements."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":226,"context_line":"it has Inventories of the new ``NET_BANDWIDTH_*`` Resource Classes and"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_d3b319e8","line":223,"in_reply_to":"5f7c97a3_cf3cdc30","updated":"2018-05-15 14:55:25.000000000","message":"Tried to explain this better in the next paragraph.","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4af9af43172dca22b973c3795463a14669393829","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"If a nova server boot request has a port defined and this port has a"},{"line_number":222,"context_line":"``resource_request`` attribute, that means the Placement Service must"},{"line_number":223,"context_line":"enforce the minimum bandwidth requirements."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":226,"context_line":"it has Inventories of the new ``NET_BANDWIDTH_*`` Resource Classes and"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_9ddfe20b","line":223,"in_reply_to":"5f7c97a3_d3b319e8","updated":"2018-05-15 19:57:42.000000000","message":"Thx :)","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":222,"context_line":"``resource_request`` attribute, that means the Placement Service must"},{"line_number":223,"context_line":"enforce the minimum bandwidth requirements."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":226,"context_line":"it has Inventories of the new ``NET_BANDWIDTH_*`` Resource Classes and"},{"line_number":227,"context_line":"there is enough bandwidth available. If a host doesn\u0027t have any Inventory"},{"line_number":228,"context_line":"for network bandwidth, it won\u0027t be a candidate for the Scheduler."}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_ef0c3895","line":225,"range":{"start_line":225,"start_character":40,"end_line":225,"end_character":46},"updated":"2018-05-14 20:08:51.000000000","message":"it has a physical network RP with","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":222,"context_line":"``resource_request`` attribute, that means the Placement Service must"},{"line_number":223,"context_line":"enforce the minimum bandwidth requirements."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":226,"context_line":"it has Inventories of the new ``NET_BANDWIDTH_*`` Resource Classes and"},{"line_number":227,"context_line":"there is enough bandwidth available. If a host doesn\u0027t have any Inventory"},{"line_number":228,"context_line":"for network bandwidth, it won\u0027t be a candidate for the Scheduler."}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_ae7cf071","line":225,"range":{"start_line":225,"start_character":40,"end_line":225,"end_character":46},"in_reply_to":"5f7c97a3_ef0c3895","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":226,"context_line":"it has Inventories of the new ``NET_BANDWIDTH_*`` Resource Classes and"},{"line_number":227,"context_line":"there is enough bandwidth available. If a host doesn\u0027t have any Inventory"},{"line_number":228,"context_line":"for network bandwidth, it won\u0027t be a candidate for the Scheduler."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"For multi-segment Neutron networks each static segment\u0027s physnet trait"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_ef8198c4","line":227,"range":{"start_line":227,"start_character":26,"end_line":227,"end_character":35},"updated":"2018-05-14 20:08:51.000000000","message":"available, as shown in the Networking RP model section","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":226,"context_line":"it has Inventories of the new ``NET_BANDWIDTH_*`` Resource Classes and"},{"line_number":227,"context_line":"there is enough bandwidth available. If a host doesn\u0027t have any Inventory"},{"line_number":228,"context_line":"for network bandwidth, it won\u0027t be a candidate for the Scheduler."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"For multi-segment Neutron networks each static segment\u0027s physnet trait"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_ce7fec63","line":227,"range":{"start_line":227,"start_character":26,"end_line":227,"end_character":35},"in_reply_to":"5f7c97a3_ef8198c4","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4e2a198e9cff0604ccf98d923cae331576099e94","unresolved":false,"context_lines":[{"line_number":225,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":226,"context_line":"it has Inventories of the new ``NET_BANDWIDTH_*`` Resource Classes and"},{"line_number":227,"context_line":"there is enough bandwidth available. If a host doesn\u0027t have any Inventory"},{"line_number":228,"context_line":"for network bandwidth, it won\u0027t be a candidate for the Scheduler."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"For multi-segment Neutron networks each static segment\u0027s physnet trait"},{"line_number":231,"context_line":"must be included in the ``resource_request`` attribute in a format that"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_87c8ffa5","line":228,"range":{"start_line":228,"start_character":55,"end_line":228,"end_character":56},"updated":"2018-05-15 08:49:13.000000000","message":"nitty nit: lowercase?","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":225,"context_line":"A host will satisfy the requirements if it has the required traits and"},{"line_number":226,"context_line":"it has Inventories of the new ``NET_BANDWIDTH_*`` Resource Classes and"},{"line_number":227,"context_line":"there is enough bandwidth available. If a host doesn\u0027t have any Inventory"},{"line_number":228,"context_line":"for network bandwidth, it won\u0027t be a candidate for the Scheduler."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"For multi-segment Neutron networks each static segment\u0027s physnet trait"},{"line_number":231,"context_line":"must be included in the ``resource_request`` attribute in a format that"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_6e9a58b9","line":228,"range":{"start_line":228,"start_character":55,"end_line":228,"end_character":56},"in_reply_to":"5f7c97a3_87c8ffa5","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":282,"context_line":"  just a preference but not a hard rule supporting this behavior is *out"},{"line_number":283,"context_line":"  of scope* of this spec but in theory it can be done by a new weigher"},{"line_number":284,"context_line":"  in nova-scheduler."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"Figure: networking RP model"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":".. code::"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_4f68cc1b","line":285,"updated":"2018-05-14 20:08:51.000000000","message":"Based on these assumptions, Neutron will construct in Placement a RP tree as follows:","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":282,"context_line":"  just a preference but not a hard rule supporting this behavior is *out"},{"line_number":283,"context_line":"  of scope* of this spec but in theory it can be done by a new weigher"},{"line_number":284,"context_line":"  in nova-scheduler."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"Figure: networking RP model"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":".. code::"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_2e01c0af","line":285,"in_reply_to":"5f7c97a3_4f68cc1b","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":345,"context_line":"                            NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND: 10000,"},{"line_number":346,"context_line":"                            NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND: 10000}"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"Custom traits will be used to indicate which physical network a given"},{"line_number":349,"context_line":"Physical network interface RP is connected to."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"Custom traits will be used to indicate which ``vnic_type`` a backend"},{"line_number":352,"context_line":"supports so different backend technologies can be distinguished."},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"The current purpose of agent RPs is to allow us detecting the deletion of an"},{"line_number":355,"context_line":"RP. Later we may also start to model agent-level resources and capabilities."}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_0f3df4db","line":352,"range":{"start_line":348,"start_character":0,"end_line":352,"end_character":64},"updated":"2018-05-14 20:08:51.000000000","message":"Something like this is what I had in mind in my comments to L185 and L223. Here, it is too late, the reader has to go back and figure out how this relates to what is explained above","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":345,"context_line":"                            NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND: 10000,"},{"line_number":346,"context_line":"                            NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND: 10000}"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"Custom traits will be used to indicate which physical network a given"},{"line_number":349,"context_line":"Physical network interface RP is connected to."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"Custom traits will be used to indicate which ``vnic_type`` a backend"},{"line_number":352,"context_line":"supports so different backend technologies can be distinguished."},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"The current purpose of agent RPs is to allow us detecting the deletion of an"},{"line_number":355,"context_line":"RP. Later we may also start to model agent-level resources and capabilities."}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_34dfd269","line":352,"range":{"start_line":348,"start_character":0,"end_line":352,"end_character":64},"in_reply_to":"5f7c97a3_0f3df4db","updated":"2018-05-15 14:55:25.000000000","message":"Please see the changes to \u0027How required bandwidth for a Neutron port is modeled\u0027.","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":388,"context_line":"* Neutron-agent\u0027s choice of a physical network interface."},{"line_number":389,"context_line":"  (Only in some cases like when multiple SR-IOV PFs back one physnet.)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"The later choices (of neutron-server and neutron-agent) must respect the"},{"line_number":392,"context_line":"first (in the allocation), otherwise resources could be used somewhere"},{"line_number":393,"context_line":"else than allocated."},{"line_number":394,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_6a533618","line":391,"range":{"start_line":391,"start_character":4,"end_line":391,"end_character":9},"updated":"2018-05-14 20:08:51.000000000","message":"latter","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":388,"context_line":"* Neutron-agent\u0027s choice of a physical network interface."},{"line_number":389,"context_line":"  (Only in some cases like when multiple SR-IOV PFs back one physnet.)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"The later choices (of neutron-server and neutron-agent) must respect the"},{"line_number":392,"context_line":"first (in the allocation), otherwise resources could be used somewhere"},{"line_number":393,"context_line":"else than allocated."},{"line_number":394,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_ce9a8c60","line":391,"range":{"start_line":391,"start_character":4,"end_line":391,"end_character":9},"in_reply_to":"5f7c97a3_6a533618","updated":"2018-05-15 14:55:25.000000000","message":"I meant the time-order of these choices.","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":389,"context_line":"  (Only in some cases like when multiple SR-IOV PFs back one physnet.)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"The later choices (of neutron-server and neutron-agent) must respect the"},{"line_number":392,"context_line":"first (in the allocation), otherwise resources could be used somewhere"},{"line_number":393,"context_line":"else than allocated."},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"The choice in the allocation can be easily communicated to Neutron"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_8a49f260","line":392,"range":{"start_line":392,"start_character":0,"end_line":392,"end_character":5},"updated":"2018-05-14 20:08:51.000000000","message":"former","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":423,"context_line":"* ``resource_provider_inventories``"},{"line_number":424,"context_line":"* ``resource_provider_traits``"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"The values must be (re-)evaluated after the agent configuration was"},{"line_number":427,"context_line":"(re-)read. Each heartbeat message shall contain all respective items"},{"line_number":428,"context_line":"known by the agent at that time. The extension of the ``configurations``"},{"line_number":429,"context_line":"fields intentionally mirrors the structure of the placement API (and"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_cae92ae6","line":426,"range":{"start_line":426,"start_character":63,"end_line":426,"end_character":67},"updated":"2018-05-14 20:08:51.000000000","message":"is","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":423,"context_line":"* ``resource_provider_inventories``"},{"line_number":424,"context_line":"* ``resource_provider_traits``"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"The values must be (re-)evaluated after the agent configuration was"},{"line_number":427,"context_line":"(re-)read. Each heartbeat message shall contain all respective items"},{"line_number":428,"context_line":"known by the agent at that time. The extension of the ``configurations``"},{"line_number":429,"context_line":"fields intentionally mirrors the structure of the placement API (and"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_0ebe44b3","line":426,"range":{"start_line":426,"start_character":63,"end_line":426,"end_character":67},"in_reply_to":"5f7c97a3_cae92ae6","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":424,"context_line":"* ``resource_provider_traits``"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"The values must be (re-)evaluated after the agent configuration was"},{"line_number":427,"context_line":"(re-)read. Each heartbeat message shall contain all respective items"},{"line_number":428,"context_line":"known by the agent at that time. The extension of the ``configurations``"},{"line_number":429,"context_line":"fields intentionally mirrors the structure of the placement API (and"},{"line_number":430,"context_line":"does not directly mirror the agent configuration format, though can"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_ca9a8ab7","line":427,"range":{"start_line":427,"start_character":52,"end_line":427,"end_character":62},"updated":"2018-05-14 20:08:51.000000000","message":"remove, not needed","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":424,"context_line":"* ``resource_provider_traits``"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"The values must be (re-)evaluated after the agent configuration was"},{"line_number":427,"context_line":"(re-)read. Each heartbeat message shall contain all respective items"},{"line_number":428,"context_line":"known by the agent at that time. The extension of the ``configurations``"},{"line_number":429,"context_line":"fields intentionally mirrors the structure of the placement API (and"},{"line_number":430,"context_line":"does not directly mirror the agent configuration format, though can"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_2ec4603f","line":427,"range":{"start_line":427,"start_character":52,"end_line":427,"end_character":62},"in_reply_to":"5f7c97a3_ca9a8ab7","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":432,"context_line":"they can be readily pasted into requests sent to the Placement API."},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"Agent resource providers shall be identified by their already existing"},{"line_number":435,"context_line":"Neutron agent UUIDs."},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"Neutron-agents shall generate UUIDs for physical network interface"},{"line_number":438,"context_line":"resource providers. Version 5 (name-based) UUIDs should be used by"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_0acba2a4","line":435,"updated":"2018-05-14 20:08:51.000000000","message":"I suggest referencing back to the RP tree shown below","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":432,"context_line":"they can be readily pasted into requests sent to the Placement API."},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"Agent resource providers shall be identified by their already existing"},{"line_number":435,"context_line":"Neutron agent UUIDs."},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"Neutron-agents shall generate UUIDs for physical network interface"},{"line_number":438,"context_line":"resource providers. Version 5 (name-based) UUIDs should be used by"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_ce012c6c","line":435,"in_reply_to":"5f7c97a3_0acba2a4","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":467,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"Neutron-server cannot progress to report resource information until"},{"line_number":470,"context_line":"the relevant Nova-compute host RP is created. (The reason being is that"},{"line_number":471,"context_line":"Nova-compute host RP UUID is unpredictable to Neutron.) We believe"},{"line_number":472,"context_line":"that while waiting for the Nova-compute host RP a Neutron-server can"},{"line_number":473,"context_line":"progress with its other functions."}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_aa42aea9","line":470,"range":{"start_line":470,"start_character":64,"end_line":470,"end_character":71},"updated":"2018-05-14 20:08:51.000000000","message":"the","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":467,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"Neutron-server cannot progress to report resource information until"},{"line_number":470,"context_line":"the relevant Nova-compute host RP is created. (The reason being is that"},{"line_number":471,"context_line":"Nova-compute host RP UUID is unpredictable to Neutron.) We believe"},{"line_number":472,"context_line":"that while waiting for the Nova-compute host RP a Neutron-server can"},{"line_number":473,"context_line":"progress with its other functions."}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_ce360c52","line":470,"range":{"start_line":470,"start_character":64,"end_line":470,"end_character":71},"in_reply_to":"5f7c97a3_aa42aea9","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":501,"context_line":"* The choices made by Placement and made by Neutron port binding must"},{"line_number":502,"context_line":"  be the same. Therefore the selection must be coordinated."},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"  If more than one Neutron backends can satisfy the resource requirements"},{"line_number":505,"context_line":"  of a port on the same host then it cannot happen that Placement chooses"},{"line_number":506,"context_line":"  one, but Neutron binds another."},{"line_number":507,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_8a2012f9","line":504,"range":{"start_line":504,"start_character":34,"end_line":504,"end_character":35},"updated":"2018-05-14 20:08:51.000000000","message":"remove","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":501,"context_line":"* The choices made by Placement and made by Neutron port binding must"},{"line_number":502,"context_line":"  be the same. Therefore the selection must be coordinated."},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"  If more than one Neutron backends can satisfy the resource requirements"},{"line_number":505,"context_line":"  of a port on the same host then it cannot happen that Placement chooses"},{"line_number":506,"context_line":"  one, but Neutron binds another."},{"line_number":507,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_0e1ac4ca","line":504,"range":{"start_line":504,"start_character":34,"end_line":504,"end_character":35},"in_reply_to":"5f7c97a3_8a2012f9","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":593,"context_line":"Upgrade"},{"line_number":594,"context_line":"-------"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"* When upgrading a system with ``minimum_bandwidth`` rules to the"},{"line_number":597,"context_line":"  joint use of ``minimum_bandwidth`` and ``minimum_bandwidth_placement``"},{"line_number":598,"context_line":"  we see three options:"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"  1. It is the responsibility of the admin to create the"},{"line_number":601,"context_line":"     allocations in Placement for all ports using the newly created"},{"line_number":602,"context_line":"     ``minimum_bandwidth_placement`` rule. Please note: the previous implies"},{"line_number":603,"context_line":"     and enforces that bandwidth is never overallocated."},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"  2. Add tooling for 1. as described in the \u0027Upgrade impact\u0027 section of [2]_."},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"  3. The admin is free to leave the first use of"},{"line_number":608,"context_line":"     ``minimum_bandwidth_placement`` later than the software version"},{"line_number":609,"context_line":"     upgrade. It is also possible to use policies containing"},{"line_number":610,"context_line":"     ``minimum_bandwidth_placement`` rules only for newly created"},{"line_number":611,"context_line":"     ports and leave all ports of the old policies (containing only"},{"line_number":612,"context_line":"     ``minimum_bandwidth``) alone until they all go out of use."},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"* The desired upgrade order of components is the following:"},{"line_number":615,"context_line":"  Placement, Nova, Neutron"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"  If for some reason the reverse Neutron-Nova order is desired than the"},{"line_number":618,"context_line":"  Neutron port API extension of ``resource_request`` must not be turned on"},{"line_number":619,"context_line":"  until both components are upgraded."},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"* Neutron-server must be able to handle agent heartbeats both with and without"},{"line_number":622,"context_line":"  resource information in the ``configurations``."},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"Work Items"},{"line_number":625,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_ca27eac9","line":622,"range":{"start_line":596,"start_character":2,"end_line":622,"end_character":49},"updated":"2018-05-14 20:08:51.000000000","message":"We need to update this section since we don\u0027t minimum_bandwidth_placement anymore","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4e2a198e9cff0604ccf98d923cae331576099e94","unresolved":false,"context_lines":[{"line_number":593,"context_line":"Upgrade"},{"line_number":594,"context_line":"-------"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"* When upgrading a system with ``minimum_bandwidth`` rules to the"},{"line_number":597,"context_line":"  joint use of ``minimum_bandwidth`` and ``minimum_bandwidth_placement``"},{"line_number":598,"context_line":"  we see three options:"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"  1. It is the responsibility of the admin to create the"},{"line_number":601,"context_line":"     allocations in Placement for all ports using the newly created"},{"line_number":602,"context_line":"     ``minimum_bandwidth_placement`` rule. Please note: the previous implies"},{"line_number":603,"context_line":"     and enforces that bandwidth is never overallocated."},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"  2. Add tooling for 1. as described in the \u0027Upgrade impact\u0027 section of [2]_."},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"  3. The admin is free to leave the first use of"},{"line_number":608,"context_line":"     ``minimum_bandwidth_placement`` later than the software version"},{"line_number":609,"context_line":"     upgrade. It is also possible to use policies containing"},{"line_number":610,"context_line":"     ``minimum_bandwidth_placement`` rules only for newly created"},{"line_number":611,"context_line":"     ports and leave all ports of the old policies (containing only"},{"line_number":612,"context_line":"     ``minimum_bandwidth``) alone until they all go out of use."},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"* The desired upgrade order of components is the following:"},{"line_number":615,"context_line":"  Placement, Nova, Neutron"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"  If for some reason the reverse Neutron-Nova order is desired than the"},{"line_number":618,"context_line":"  Neutron port API extension of ``resource_request`` must not be turned on"},{"line_number":619,"context_line":"  until both components are upgraded."},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"* Neutron-server must be able to handle agent heartbeats both with and without"},{"line_number":622,"context_line":"  resource information in the ``configurations``."},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"Work Items"},{"line_number":625,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_678cc3d6","line":622,"range":{"start_line":596,"start_character":2,"end_line":622,"end_character":49},"in_reply_to":"5f7c97a3_ca27eac9","updated":"2018-05-15 08:49:13.000000000","message":"+1","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":593,"context_line":"Upgrade"},{"line_number":594,"context_line":"-------"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"* When upgrading a system with ``minimum_bandwidth`` rules to the"},{"line_number":597,"context_line":"  joint use of ``minimum_bandwidth`` and ``minimum_bandwidth_placement``"},{"line_number":598,"context_line":"  we see three options:"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"  1. It is the responsibility of the admin to create the"},{"line_number":601,"context_line":"     allocations in Placement for all ports using the newly created"},{"line_number":602,"context_line":"     ``minimum_bandwidth_placement`` rule. Please note: the previous implies"},{"line_number":603,"context_line":"     and enforces that bandwidth is never overallocated."},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"  2. Add tooling for 1. as described in the \u0027Upgrade impact\u0027 section of [2]_."},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"  3. The admin is free to leave the first use of"},{"line_number":608,"context_line":"     ``minimum_bandwidth_placement`` later than the software version"},{"line_number":609,"context_line":"     upgrade. It is also possible to use policies containing"},{"line_number":610,"context_line":"     ``minimum_bandwidth_placement`` rules only for newly created"},{"line_number":611,"context_line":"     ports and leave all ports of the old policies (containing only"},{"line_number":612,"context_line":"     ``minimum_bandwidth``) alone until they all go out of use."},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"* The desired upgrade order of components is the following:"},{"line_number":615,"context_line":"  Placement, Nova, Neutron"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"  If for some reason the reverse Neutron-Nova order is desired than the"},{"line_number":618,"context_line":"  Neutron port API extension of ``resource_request`` must not be turned on"},{"line_number":619,"context_line":"  until both components are upgraded."},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"* Neutron-server must be able to handle agent heartbeats both with and without"},{"line_number":622,"context_line":"  resource information in the ``configurations``."},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"Work Items"},{"line_number":625,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_09a15ef8","line":622,"range":{"start_line":596,"start_character":2,"end_line":622,"end_character":49},"in_reply_to":"5f7c97a3_ca27eac9","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4fcb2f4d5bf1aa81d4f361a650022cd64607f1a2","unresolved":false,"context_lines":[{"line_number":631,"context_line":"* Extend agent heartbeat configuration with resource provider information."},{"line_number":632,"context_line":"* (We already have it): Persist extended agent configuration reported via"},{"line_number":633,"context_line":"  heartbeat."},{"line_number":634,"context_line":"* (Work in progress): Placement client in neutron-lib for the use of"},{"line_number":635,"context_line":"  neutron-server."},{"line_number":636,"context_line":"* Neutron-server initially diffs resource info reported by agent against"},{"line_number":637,"context_line":"  Placement."}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_ca104a5a","line":634,"range":{"start_line":634,"start_character":2,"end_line":634,"end_character":20},"updated":"2018-05-14 20:08:51.000000000","message":"This is done, isn\u0027t it?","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a17be00d7fa4ded1c7ab7b66dd83c2b01f1c65d6","unresolved":false,"context_lines":[{"line_number":631,"context_line":"* Extend agent heartbeat configuration with resource provider information."},{"line_number":632,"context_line":"* (We already have it): Persist extended agent configuration reported via"},{"line_number":633,"context_line":"  heartbeat."},{"line_number":634,"context_line":"* (Work in progress): Placement client in neutron-lib for the use of"},{"line_number":635,"context_line":"  neutron-server."},{"line_number":636,"context_line":"* Neutron-server initially diffs resource info reported by agent against"},{"line_number":637,"context_line":"  Placement."}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_49b2f64a","line":634,"range":{"start_line":634,"start_character":2,"end_line":634,"end_character":20},"in_reply_to":"5f7c97a3_ca104a5a","updated":"2018-05-15 14:55:25.000000000","message":"Done","commit_id":"c0e0c1a4174744bd707eecd66a2113ab4ecec0b7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"094461d4ce3bdac557120b3e9bb0351141dfed0b","unresolved":false,"context_lines":[{"line_number":248,"context_line":"a ``qos_minimum_bandwidth_rule``, that boot request is going to fail as"},{"line_number":249,"context_line":"documented in the \u0027Scoping\u0027 section of [2]_ until Nova is refactored to"},{"line_number":250,"context_line":"create the port earlier (that is before scheduling). See also `SPEC:"},{"line_number":251,"context_line":"Prep work for Network aware scheduling (Pike)` [11]_. (Nota bene: The"},{"line_number":252,"context_line":"title of this Nova spec is misleading, because we no longer treat this"},{"line_number":253,"context_line":"work as preparation.)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"For multi-segment Neutron networks each static segment\u0027s physnet trait"},{"line_number":256,"context_line":"must be included in the ``resource_request`` attribute in a format that"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_f0707d42","line":253,"range":{"start_line":251,"start_character":54,"end_line":253,"end_character":21},"updated":"2018-05-15 21:04:20.000000000","message":"we need to remove this","commit_id":"63e57c110656c100941de516d2ab454bca6a14b1"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"094461d4ce3bdac557120b3e9bb0351141dfed0b","unresolved":false,"context_lines":[{"line_number":295,"context_line":"  backend based on ``vnic_type`` of the Neutron port specified by the"},{"line_number":296,"context_line":"  end user during port create. Therefore physical device selection during"},{"line_number":297,"context_line":"  scheduling should consider the ``vnic_type`` of the port as well. This"},{"line_number":298,"context_line":"  can be done via ``vnic_type`` based traits."},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"* Two different backends (e.g. OVS and LinuxBridge) can give access to"},{"line_number":301,"context_line":"  the same physnet on the same compute host while they are also"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_f0ecfdbb","line":298,"range":{"start_line":298,"start_character":38,"end_line":298,"end_character":45},"updated":"2018-05-15 21:04:20.000000000","message":"traits previously described","commit_id":"63e57c110656c100941de516d2ab454bca6a14b1"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"094461d4ce3bdac557120b3e9bb0351141dfed0b","unresolved":false,"context_lines":[{"line_number":295,"context_line":"  backend based on ``vnic_type`` of the Neutron port specified by the"},{"line_number":296,"context_line":"  end user during port create. Therefore physical device selection during"},{"line_number":297,"context_line":"  scheduling should consider the ``vnic_type`` of the port as well. This"},{"line_number":298,"context_line":"  can be done via ``vnic_type`` based traits."},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"* Two different backends (e.g. OVS and LinuxBridge) can give access to"},{"line_number":301,"context_line":"  the same physnet on the same compute host while they are also"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_b00be58b","line":298,"range":{"start_line":298,"start_character":14,"end_line":298,"end_character":18},"updated":"2018-05-15 21:04:20.000000000","message":"via the","commit_id":"63e57c110656c100941de516d2ab454bca6a14b1"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"094461d4ce3bdac557120b3e9bb0351141dfed0b","unresolved":false,"context_lines":[{"line_number":374,"context_line":"                            NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND: 10000}"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"Custom traits will be used to indicate which physical network a given"},{"line_number":377,"context_line":"Physical network interface RP is connected to."},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"Custom traits will be used to indicate which ``vnic_type`` a backend"},{"line_number":380,"context_line":"supports so different backend technologies can be distinguished."}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_907b49f3","line":377,"range":{"start_line":377,"start_character":43,"end_line":377,"end_character":46},"updated":"2018-05-15 21:04:20.000000000","message":"to, as previously described","commit_id":"63e57c110656c100941de516d2ab454bca6a14b1"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"094461d4ce3bdac557120b3e9bb0351141dfed0b","unresolved":false,"context_lines":[{"line_number":377,"context_line":"Physical network interface RP is connected to."},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"Custom traits will be used to indicate which ``vnic_type`` a backend"},{"line_number":380,"context_line":"supports so different backend technologies can be distinguished."},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"The current purpose of agent RPs is to allow us detecting the deletion of an"},{"line_number":383,"context_line":"RP. Later we may also start to model agent-level resources and capabilities."}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_306a7519","line":380,"range":{"start_line":380,"start_character":50,"end_line":380,"end_character":64},"updated":"2018-05-15 21:04:20.000000000","message":"distinguished, as previously described","commit_id":"63e57c110656c100941de516d2ab454bca6a14b1"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"094461d4ce3bdac557120b3e9bb0351141dfed0b","unresolved":false,"context_lines":[{"line_number":644,"context_line":"* The desired upgrade order of components is the following:"},{"line_number":645,"context_line":"  Placement, Nova, Neutron"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"  If for some reason the reverse Neutron-Nova order is desired than the"},{"line_number":648,"context_line":"  Neutron port API extension of ``resource_request`` must not be turned on"},{"line_number":649,"context_line":"  until both components are upgraded."},{"line_number":650,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f7c97a3_706ead00","line":647,"range":{"start_line":647,"start_character":63,"end_line":647,"end_character":67},"updated":"2018-05-15 21:04:20.000000000","message":"then","commit_id":"63e57c110656c100941de516d2ab454bca6a14b1"},{"author":{"_account_id":14972,"name":"yogananth Subramanian","email":"ysubrama@redhat.com","username":"yogi"},"change_message_id":"c944603262b1f0fcda148919768e903b8b01c98b","unresolved":false,"context_lines":[{"line_number":84,"context_line":"      can have placement enforcement for drivers not having data plane"},{"line_number":85,"context_line":"      enforcement (yet)."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"   Due to the fact that we exposed (and likely want to expose further)"},{"line_number":88,"context_line":"   partial results of this development effort to end users, the meaning"},{"line_number":89,"context_line":"   of a ``qos_minimum_bandwidth_rule`` depends on OpenStack version,"},{"line_number":90,"context_line":"   Neutron backend driver and the rule\u0027s direction. A rule may be enforced"},{"line_number":91,"context_line":"   by placement and/or on the data plane. Therefore we must document, next"},{"line_number":92,"context_line":"   to the already existing support matrix in the `QoS devref` [10]_, which"},{"line_number":93,"context_line":"   combinations of versions, drivers, rule directions and (placement and/or"},{"line_number":94,"context_line":"   data plane) enforcements are supported."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"   Since Neutron\u0027s choice of backend is hidden from the cloud user, the"},{"line_number":97,"context_line":"   deployer must also clearly document which subset of the above support"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_845ae74d","line":94,"range":{"start_line":87,"start_character":2,"end_line":94,"end_character":42},"updated":"2018-08-30 05:50:02.000000000","message":"In case of ovs dpdk, ``qos_minimum_bandwidth_rule`` would be translated to bandwidth limit rule, since there is no minimum bandwidth rule for openvswith  based on `QoS devref` [10]_, would that be the right assumption.","commit_id":"dca619fd9e581a1863073460cde5b4d34db9dfa0"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"352ca48cbfab9c49c1b2594f2ee06365c85d64d7","unresolved":false,"context_lines":[{"line_number":84,"context_line":"      can have placement enforcement for drivers not having data plane"},{"line_number":85,"context_line":"      enforcement (yet)."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"   Due to the fact that we exposed (and likely want to expose further)"},{"line_number":88,"context_line":"   partial results of this development effort to end users, the meaning"},{"line_number":89,"context_line":"   of a ``qos_minimum_bandwidth_rule`` depends on OpenStack version,"},{"line_number":90,"context_line":"   Neutron backend driver and the rule\u0027s direction. A rule may be enforced"},{"line_number":91,"context_line":"   by placement and/or on the data plane. Therefore we must document, next"},{"line_number":92,"context_line":"   to the already existing support matrix in the `QoS devref` [10]_, which"},{"line_number":93,"context_line":"   combinations of versions, drivers, rule directions and (placement and/or"},{"line_number":94,"context_line":"   data plane) enforcements are supported."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"   Since Neutron\u0027s choice of backend is hidden from the cloud user, the"},{"line_number":97,"context_line":"   deployer must also clearly document which subset of the above support"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_55b6918c","line":94,"range":{"start_line":87,"start_character":2,"end_line":94,"end_character":42},"in_reply_to":"3f79a3b5_845ae74d","updated":"2018-08-31 14:43:28.000000000","message":"Minimum guarantees can be implemented by limiting the maximum of all other ports using the same physical interface, yes. However this spec is about enforcing the guarantee at vm scheduling. Not in the data plane.\n\nOn the other hand this would be a perfectly valid follow-up work to this spec.","commit_id":"dca619fd9e581a1863073460cde5b4d34db9dfa0"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"e2ea52c352a5145b3c0780f2244af89b2d8076a8","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    #   * will have a corresponding resource provider created in Placement"},{"line_number":152,"context_line":"    #   * must be listed as a key in resource_provider_bandwidths"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    resource_provider_bandwidths \u003d br0:EGRESS:INGRESS,br1:EGRESS:INGRESS"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    # Examples:"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"5f7c97a3_e7cee18d","line":154,"updated":"2018-07-27 15:38:53.000000000","message":"I scanned the spec comments on previous patchsets and couldn\u0027t spot a discussion about this, but I missed it, my apologies.\n\nWhy are we putting the onus on deployment tools to set these values, when Neutron has access to the same information? It is deployment tools that decide which physical device to connect the bridge to, sure, but Neutron can discover this information and then query the device to see its bandwidth. No?","commit_id":"dca619fd9e581a1863073460cde5b4d34db9dfa0"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"05354bac9e62bff4ab84190c7bc36c66efafcc65","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    #   * will have a corresponding resource provider created in Placement"},{"line_number":152,"context_line":"    #   * must be listed as a key in resource_provider_bandwidths"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    resource_provider_bandwidths \u003d br0:EGRESS:INGRESS,br1:EGRESS:INGRESS"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    # Examples:"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"5f7c97a3_5d6c2fce","line":154,"in_reply_to":"5f7c97a3_e7cee18d","updated":"2018-07-30 06:41:47.000000000","message":"Hi, your comment is valid, and this was discussed, see L121.\n\nSo autodiscovery is in the plan (with the right for the admin to overwrite the from config), but we agreed that is a mid-low prio item.\nIf you have any comments, ideas please share with us :-)","commit_id":"dca619fd9e581a1863073460cde5b4d34db9dfa0"}]}
