)]}'
{"specs/victoria/port-numa-affinity-policy.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"03618d9ba5b5d4fea298442c3982e6df94532577","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Currently Nova allows to define the \"numa_affinity_policy\" for PCI devices."},{"line_number":20,"context_line":"Those PCI devices could be, for example, network cards. When a port is created"},{"line_number":21,"context_line":"using this physical device (an SR-IOV port with VNIC type \"direct\" or"},{"line_number":22,"context_line":"\"direct-physical\"), Nova will select the host to spawn the virtual machine"},{"line_number":23,"context_line":"depending on the host NUMA topology availability and the NUMA nodes associated"},{"line_number":24,"context_line":"to this PCI network device [1]_."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_4adda312","line":22,"range":{"start_line":21,"start_character":58,"end_line":22,"end_character":17},"updated":"2020-07-10 11:32:57.000000000","message":"or macvtap and i think virtio-forwarder.\n\nif you use sriov in any form we apply the legacy policy unless you override that in the flavor or image. users dont currently have a way to express a requirement outside of the falvor or image they choose.","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7c98beba5e907fb56db7c8f0f6ce377040239a81","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Currently Nova allows to define the \"numa_affinity_policy\" for PCI devices."},{"line_number":20,"context_line":"Those PCI devices could be, for example, network cards. When a port is created"},{"line_number":21,"context_line":"using this physical device (an SR-IOV port with VNIC type \"direct\" or"},{"line_number":22,"context_line":"\"direct-physical\"), Nova will select the host to spawn the virtual machine"},{"line_number":23,"context_line":"depending on the host NUMA topology availability and the NUMA nodes associated"},{"line_number":24,"context_line":"to this PCI network device [1]_."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_733cdee0","line":22,"range":{"start_line":21,"start_character":58,"end_line":22,"end_character":17},"in_reply_to":"bf51134e_4adda312","updated":"2020-07-10 14:33:41.000000000","message":"I\u0027ll add those ones too.","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"03618d9ba5b5d4fea298442c3982e6df94532577","unresolved":false,"context_lines":[{"line_number":23,"context_line":"depending on the host NUMA topology availability and the NUMA nodes associated"},{"line_number":24,"context_line":"to this PCI network device [1]_."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"However this filtering cannot be done currently for other backends than SR-IOV."},{"line_number":27,"context_line":"For example, Open vSwitch with DPDK will run the PMD threads attached to"},{"line_number":28,"context_line":"specific CPU cores (and to specific NUMA nodes) [2]_. In order to optimize the"},{"line_number":29,"context_line":"port performance, that should be created on the same NUMA nodes of the PMD"},{"line_number":30,"context_line":"threads."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Open vSwitch with hardware offload is another NUMA node sensitive example. The"},{"line_number":33,"context_line":"hardware accelerator (network card) will be placed in a specific NUMA node; to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_4a2be3e9","line":30,"range":{"start_line":26,"start_character":0,"end_line":30,"end_character":8},"updated":"2020-07-10 11:32:57.000000000","message":"this is not correct \n\nthe numa aware vswitch spec\nhttps://specs.openstack.org/openstack/nova-specs/specs/rocky/implemented/numa-aware-vswitches.html\n\nadded static config driven appoch which is not visabel to end users and there is no way for end users to express policy over it.\n\nif its configured you get numa affinity between numa instance and the netwrok physnet or tunnel provider.\n\nso the behavior is to apply the legacy policy.\n\nif numa info is avaiable we use it and enforece affintiy if\nno numa info is in the config we ignore the netwrok numa affintiy. that is the default policy for sriov too.","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7c98beba5e907fb56db7c8f0f6ce377040239a81","unresolved":false,"context_lines":[{"line_number":23,"context_line":"depending on the host NUMA topology availability and the NUMA nodes associated"},{"line_number":24,"context_line":"to this PCI network device [1]_."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"However this filtering cannot be done currently for other backends than SR-IOV."},{"line_number":27,"context_line":"For example, Open vSwitch with DPDK will run the PMD threads attached to"},{"line_number":28,"context_line":"specific CPU cores (and to specific NUMA nodes) [2]_. In order to optimize the"},{"line_number":29,"context_line":"port performance, that should be created on the same NUMA nodes of the PMD"},{"line_number":30,"context_line":"threads."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Open vSwitch with hardware offload is another NUMA node sensitive example. The"},{"line_number":33,"context_line":"hardware accelerator (network card) will be placed in a specific NUMA node; to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_f300ee04","line":30,"range":{"start_line":26,"start_character":0,"end_line":30,"end_character":8},"in_reply_to":"bf51134e_4a2be3e9","updated":"2020-07-10 14:33:41.000000000","message":"I should have rephrased that paragraph before. I should not talk about NUMA nodes but NUMA policies. Thanks","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"03618d9ba5b5d4fea298442c3982e6df94532577","unresolved":false,"context_lines":[{"line_number":28,"context_line":"specific CPU cores (and to specific NUMA nodes) [2]_. In order to optimize the"},{"line_number":29,"context_line":"port performance, that should be created on the same NUMA nodes of the PMD"},{"line_number":30,"context_line":"threads."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Open vSwitch with hardware offload is another NUMA node sensitive example. The"},{"line_number":33,"context_line":"hardware accelerator (network card) will be placed in a specific NUMA node; to"},{"line_number":34,"context_line":"improve the performance, the traffic should not came from other nodes."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Proposed Change"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_ea1ab7c3","line":34,"range":{"start_line":31,"start_character":0,"end_line":34,"end_character":70},"updated":"2020-07-10 11:32:57.000000000","message":"from a nova point of view hardware offloaded ovs is just sriov and the exsting sriov numa affinity extra specs and polices are enforced. this includes netronomes virtio-forwarded hardware offloaded ovs as well as meloxes approch which uses vnic type driect","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7c98beba5e907fb56db7c8f0f6ce377040239a81","unresolved":false,"context_lines":[{"line_number":28,"context_line":"specific CPU cores (and to specific NUMA nodes) [2]_. In order to optimize the"},{"line_number":29,"context_line":"port performance, that should be created on the same NUMA nodes of the PMD"},{"line_number":30,"context_line":"threads."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Open vSwitch with hardware offload is another NUMA node sensitive example. The"},{"line_number":33,"context_line":"hardware accelerator (network card) will be placed in a specific NUMA node; to"},{"line_number":34,"context_line":"improve the performance, the traffic should not came from other nodes."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Proposed Change"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_7e2305a8","line":34,"range":{"start_line":31,"start_character":0,"end_line":34,"end_character":70},"in_reply_to":"bf51134e_ea1ab7c3","updated":"2020-07-10 14:33:41.000000000","message":"Correct, I\u0027ll remove this use case because it\u0027s already covered with the current functionality.","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7ab920130bee77e9f4795eb5ea47c6532d447079","unresolved":false,"context_lines":[{"line_number":42,"context_line":"scheluding the virtual machine, independently of the network backend."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Of course, Nova should have the network backend NUMA information topology. For"},{"line_number":45,"context_line":"example, since [3]_, Nova can be statically configured with the physical"},{"line_number":46,"context_line":"networks NUMA location. With the port \"numa_affinity_policy\" parameter, the"},{"line_number":47,"context_line":"Nova scheduler will filter those hosts matching the required policy."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"This RFE proposes to add a new parameter to the \"port\" object. This parameter,"},{"line_number":50,"context_line":"\"numa_affinity_policy\", will be an string defining the NUMA affinity policy,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_6571d144","line":47,"range":{"start_line":45,"start_character":21,"end_line":47,"end_character":68},"updated":"2020-07-09 06:30:11.000000000","message":"So why should neutron port be involved at all? Nova has physnet info (either from port provided or from server request), physnet-NUMA mapping and affinity policy could be taken from flavor I believe. I might be missing something.","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2005448ed1662f5ab0ccfdb3299b4c8bf6478c4b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"scheluding the virtual machine, independently of the network backend."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Of course, Nova should have the network backend NUMA information topology. For"},{"line_number":45,"context_line":"example, since [3]_, Nova can be statically configured with the physical"},{"line_number":46,"context_line":"networks NUMA location. With the port \"numa_affinity_policy\" parameter, the"},{"line_number":47,"context_line":"Nova scheduler will filter those hosts matching the required policy."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"This RFE proposes to add a new parameter to the \"port\" object. This parameter,"},{"line_number":50,"context_line":"\"numa_affinity_policy\", will be an string defining the NUMA affinity policy,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_391fe76c","line":47,"range":{"start_line":45,"start_character":21,"end_line":47,"end_character":68},"in_reply_to":"bf51134e_2aa66fc2","updated":"2020-07-10 15:44:12.000000000","message":"Ah, I didn\u0027t account for the case with multiple ports, thanks","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7c98beba5e907fb56db7c8f0f6ce377040239a81","unresolved":false,"context_lines":[{"line_number":42,"context_line":"scheluding the virtual machine, independently of the network backend."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Of course, Nova should have the network backend NUMA information topology. For"},{"line_number":45,"context_line":"example, since [3]_, Nova can be statically configured with the physical"},{"line_number":46,"context_line":"networks NUMA location. With the port \"numa_affinity_policy\" parameter, the"},{"line_number":47,"context_line":"Nova scheduler will filter those hosts matching the required policy."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"This RFE proposes to add a new parameter to the \"port\" object. This parameter,"},{"line_number":50,"context_line":"\"numa_affinity_policy\", will be an string defining the NUMA affinity policy,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_1ea9297b","line":47,"range":{"start_line":45,"start_character":21,"end_line":47,"end_character":68},"in_reply_to":"bf51134e_2aa66fc2","updated":"2020-07-10 14:33:41.000000000","message":"I\u0027ll add this info to the spec.","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e3e4cfe6d1049e82ef0985cf9f5fefc33736d5e5","unresolved":false,"context_lines":[{"line_number":42,"context_line":"scheluding the virtual machine, independently of the network backend."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Of course, Nova should have the network backend NUMA information topology. For"},{"line_number":45,"context_line":"example, since [3]_, Nova can be statically configured with the physical"},{"line_number":46,"context_line":"networks NUMA location. With the port \"numa_affinity_policy\" parameter, the"},{"line_number":47,"context_line":"Nova scheduler will filter those hosts matching the required policy."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"This RFE proposes to add a new parameter to the \"port\" object. This parameter,"},{"line_number":50,"context_line":"\"numa_affinity_policy\", will be an string defining the NUMA affinity policy,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_a6d47dea","line":47,"range":{"start_line":45,"start_character":21,"end_line":47,"end_character":68},"in_reply_to":"bf51134e_6571d144","updated":"2020-07-10 08:22:48.000000000","message":"And you are right, the phynet can have a set of NUMA nodes defined statically in the Nova config and the flavor can define a PCI NUMA affinity policy.\n\nBut this spec superseeds this parameter and includes all type of ports, not only the PCI ones (SR-IOV).\n\nThat will be very useful for DPDK OVS ports (with PMD threads pinned to certain cores and NUMA nodes) or HW offload OVS, where the NIC is located in a specific NUMA node PCI bus.\n\nOf course, this is an extension and the default policy for a port, if enabled, will be \"None\".","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d2e4152ed22018c30a7876e0f429cbaf93d0d8ab","unresolved":false,"context_lines":[{"line_number":42,"context_line":"scheluding the virtual machine, independently of the network backend."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Of course, Nova should have the network backend NUMA information topology. For"},{"line_number":45,"context_line":"example, since [3]_, Nova can be statically configured with the physical"},{"line_number":46,"context_line":"networks NUMA location. With the port \"numa_affinity_policy\" parameter, the"},{"line_number":47,"context_line":"Nova scheduler will filter those hosts matching the required policy."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"This RFE proposes to add a new parameter to the \"port\" object. This parameter,"},{"line_number":50,"context_line":"\"numa_affinity_policy\", will be an string defining the NUMA affinity policy,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_c476cad8","line":47,"range":{"start_line":45,"start_character":21,"end_line":47,"end_character":68},"in_reply_to":"bf51134e_a6d47dea","updated":"2020-07-10 09:32:45.000000000","message":"Extending to all types of ports makes sense, but why can\u0027t this be done in flavor: PCI NUMA affinity policy -\u003e NUMA affinity policy? So neutron provides port with type and physnet (as usual), and nova decides which NUMA to place the VM based on these and on flavor\u0027s NUMA policy. My concern is that having additional source of NUMA affinity policy complicates things.","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36bee038329d68b1d307dd087805679b8144e3b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"scheluding the virtual machine, independently of the network backend."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Of course, Nova should have the network backend NUMA information topology. For"},{"line_number":45,"context_line":"example, since [3]_, Nova can be statically configured with the physical"},{"line_number":46,"context_line":"networks NUMA location. With the port \"numa_affinity_policy\" parameter, the"},{"line_number":47,"context_line":"Nova scheduler will filter those hosts matching the required policy."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"This RFE proposes to add a new parameter to the \"port\" object. This parameter,"},{"line_number":50,"context_line":"\"numa_affinity_policy\", will be an string defining the NUMA affinity policy,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_2aa66fc2","line":47,"range":{"start_line":45,"start_character":21,"end_line":47,"end_character":68},"in_reply_to":"bf51134e_c476cad8","updated":"2020-07-10 11:15:24.000000000","message":"https://specs.openstack.org/openstack/nova-specs/specs/ussuri/implemented/vm-scoped-sriov-numa-affinity.html#alternatives\n\nthis was always intended to be a follow on to the flavor appoch.\n\nthe flaovr based approch only works if you want the same policy for all prots.\n\nso if we had a new hw:port_numa_affinity extra spec that applied to all port and you set it to strict.\nthat would mean that if you have a vm with an ovs managment port and an sriov data plane port, the vm could only be schduled on a host with sirov port that report numa affinity and has numa aware vstich configured.\n\nthat could result in a no valid host on a public cloud where you have no viablity into if they configured numa aware vswtichs or not.\n\nif you jsut use the existing extra spec and set strict for the sriov ports and they do have numa aware vswtch configured it might still fail if it can meet the sriov requirement but not the vswitch affinity. if the vswitch port is jsut used for manament and you dont care about affiniy there is no way to express that today.\n\n\na per port policy allows you to actully say what your requirement are and if you dont use this feature it will have no effect  on behavior.\n\nthere are other networking relaated features that are confriugred by image porpeites like multi queue and vif_model that similarly should proably be \nspecifed per port instead in a similar way but that is out of scope for now, i could see this  extention growing to include those aspecs if customer express interest in that.\n\nwe have had 1 custome ask for per port ability to enabel virtio multiqueue alsthough there usecase was not partaclly compelling.\n\nfor me expressing qualitiave aspecs of neutron ports via the neuton service and not nova flaour or glance images makes a lot of sense in the long run.","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"03618d9ba5b5d4fea298442c3982e6df94532577","unresolved":false,"context_lines":[{"line_number":51,"context_line":"based on the PCINUMAAffinityPolicy [4]_ enum defined in Nova. That field could"},{"line_number":52,"context_line":"have different values: \"required\", \"legacy\" and \"preferred\"."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"By default, the value of this new parameter will be \"None\", to keep"},{"line_number":55,"context_line":"backwards compatibility."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Neutron will extend the \"port\" resource to add this new field, that will be"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_0a73ab17","line":54,"range":{"start_line":54,"start_character":53,"end_line":54,"end_character":57},"updated":"2020-07-10 11:32:57.000000000","message":"at first glance legacy woudl seem like a good default but since we want the new port peramater to take precedece over the falvor and image property we dont want to use legacy as the default.\n\nthe default as should be  None or unset as is being proposed so that the precedence can be applied only when the user configures the feature.\n\nif we used legacy as the default here we would have to invert the precedence and give the image and flavor prcednece over the port to not change behavior on the nova side which is not what we want.","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7c98beba5e907fb56db7c8f0f6ce377040239a81","unresolved":false,"context_lines":[{"line_number":51,"context_line":"based on the PCINUMAAffinityPolicy [4]_ enum defined in Nova. That field could"},{"line_number":52,"context_line":"have different values: \"required\", \"legacy\" and \"preferred\"."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"By default, the value of this new parameter will be \"None\", to keep"},{"line_number":55,"context_line":"backwards compatibility."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Neutron will extend the \"port\" resource to add this new field, that will be"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_3351c637","line":54,"range":{"start_line":54,"start_character":53,"end_line":54,"end_character":57},"in_reply_to":"bf51134e_0a73ab17","updated":"2020-07-10 14:33:41.000000000","message":"I need to clarify this in this spec. The Neutron stored value can be (None, required, preferred, legacy).\n\nIf \"None\" is stored, no \"required\" parameter (trait) will be passed in the \"request_resources\" dict. That will be backwards compatible.\n\nIf any other option is selected, the corresponding trait will be passed in the \"required\" list.","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"03618d9ba5b5d4fea298442c3982e6df94532577","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"For logging resource::"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    openstack port create"},{"line_number":131,"context_line":"       [--numa_affinity_policy \u003cnap\u003e]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_6aeb4777","line":131,"range":{"start_line":130,"start_character":2,"end_line":131,"end_character":37},"updated":"2020-07-10 11:32:57.000000000","message":"am since this will be a new extention\ncan we conditionally block update of this attibute while the port is attached to an instnace.\n\nnova should not  act on the new affinity if it was modifed while attached so it would be nice to block that at the api level if we can.\n\nupdating it is fine but only when its not attached.\n\non a related not nova does not today support attaching inteface with resouce requests to a vm.\nwe will have to reject ports with numa affinity to initally unless we add addional code to validate the numa affinity in the driver code. that is possibel to do and is a nova change but jsut makeing people ware.\n\nthis is primarly intended for use with new instances attach and move oepration will eventurally be supported but that will have to be figured out on the nova side.","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7c98beba5e907fb56db7c8f0f6ce377040239a81","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"For logging resource::"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    openstack port create"},{"line_number":131,"context_line":"       [--numa_affinity_policy \u003cnap\u003e]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf51134e_5edd6112","line":131,"range":{"start_line":130,"start_character":2,"end_line":131,"end_character":37},"in_reply_to":"bf51134e_6aeb4777","updated":"2020-07-10 14:33:41.000000000","message":"I missed that part (but I\u0027ve implemented it!)\n\nI have the needed code to, in case of having a bound port, reject this operation. \n\nI\u0027ll add this info.","commit_id":"8a246df8869e6eb3aa75bb1cff73eff5b41d71e6"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"a5655fa30363870becf24d527219ba18a7dacd71","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"However this filtering cannot be done currently for other backends than SR-IOV."},{"line_number":27,"context_line":"For example, Open vSwitch with DPDK will run the PMD threads attached to"},{"line_number":28,"context_line":"specific CPU cores (and to specific NUMA nodes) [2]_. Nova will represent"},{"line_number":29,"context_line":"this information assigning a set of NUMA nodes to each defined physica or"},{"line_number":30,"context_line":"tunneled network [3]_. If the port NUMA affinity policy is provided, Nova will"},{"line_number":31,"context_line":"enforce it during the scheduling."}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf51134e_b5213350","line":28,"range":{"start_line":28,"start_character":59,"end_line":28,"end_character":63},"updated":"2020-07-11 07:26:41.000000000","message":"does?","commit_id":"30dff05fd84d64f5cc70fe31f200dfaf9c5e74f1"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"544262be1c49ac5f70436f73094853066300f0e2","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"However this filtering cannot be done currently for other backends than SR-IOV."},{"line_number":27,"context_line":"For example, Open vSwitch with DPDK will run the PMD threads attached to"},{"line_number":28,"context_line":"specific CPU cores (and to specific NUMA nodes) [2]_. Nova will represent"},{"line_number":29,"context_line":"this information assigning a set of NUMA nodes to each defined physica or"},{"line_number":30,"context_line":"tunneled network [3]_. If the port NUMA affinity policy is provided, Nova will"},{"line_number":31,"context_line":"enforce it during the scheduling."}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf51134e_c2f5fdcc","line":28,"range":{"start_line":28,"start_character":59,"end_line":28,"end_character":63},"in_reply_to":"bf51134e_b5213350","updated":"2020-07-13 17:11:27.000000000","message":"Exactly, this is a current feature","commit_id":"30dff05fd84d64f5cc70fe31f200dfaf9c5e74f1"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"a5655fa30363870becf24d527219ba18a7dacd71","unresolved":false,"context_lines":[{"line_number":26,"context_line":"However this filtering cannot be done currently for other backends than SR-IOV."},{"line_number":27,"context_line":"For example, Open vSwitch with DPDK will run the PMD threads attached to"},{"line_number":28,"context_line":"specific CPU cores (and to specific NUMA nodes) [2]_. Nova will represent"},{"line_number":29,"context_line":"this information assigning a set of NUMA nodes to each defined physica or"},{"line_number":30,"context_line":"tunneled network [3]_. If the port NUMA affinity policy is provided, Nova will"},{"line_number":31,"context_line":"enforce it during the scheduling."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf51134e_5529b734","line":29,"range":{"start_line":29,"start_character":63,"end_line":29,"end_character":70},"updated":"2020-07-11 07:26:41.000000000","message":"physical","commit_id":"30dff05fd84d64f5cc70fe31f200dfaf9c5e74f1"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"544262be1c49ac5f70436f73094853066300f0e2","unresolved":false,"context_lines":[{"line_number":26,"context_line":"However this filtering cannot be done currently for other backends than SR-IOV."},{"line_number":27,"context_line":"For example, Open vSwitch with DPDK will run the PMD threads attached to"},{"line_number":28,"context_line":"specific CPU cores (and to specific NUMA nodes) [2]_. Nova will represent"},{"line_number":29,"context_line":"this information assigning a set of NUMA nodes to each defined physica or"},{"line_number":30,"context_line":"tunneled network [3]_. If the port NUMA affinity policy is provided, Nova will"},{"line_number":31,"context_line":"enforce it during the scheduling."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf51134e_22ff99ab","line":29,"range":{"start_line":29,"start_character":63,"end_line":29,"end_character":70},"in_reply_to":"bf51134e_5529b734","updated":"2020-07-13 17:11:27.000000000","message":"Done","commit_id":"30dff05fd84d64f5cc70fe31f200dfaf9c5e74f1"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"789404700d6da5ff994f69211e28a7bf82f0dc2f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Proposed Change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"The goal of this RFE is to create a \"numa_affinity_policy\" parameter applicable"},{"line_number":38,"context_line":"to all ports. This information will be provided to Nova that will use it while"},{"line_number":39,"context_line":"scheluding the virtual machine, independently of the network backend."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_43086c2c","line":37,"range":{"start_line":37,"start_character":17,"end_line":37,"end_character":20},"updated":"2020-07-20 16:12:50.000000000","message":"We are past the RFE stage. Change this to specification","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b053455d91298d72477bf81276f98f2897fcf000","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Proposed Change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"The goal of this RFE is to create a \"numa_affinity_policy\" parameter applicable"},{"line_number":38,"context_line":"to all ports. This information will be provided to Nova that will use it while"},{"line_number":39,"context_line":"scheluding the virtual machine, independently of the network backend."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_8e4aaba9","line":37,"range":{"start_line":37,"start_character":17,"end_line":37,"end_character":20},"in_reply_to":"bf51134e_43086c2c","updated":"2020-07-20 16:40:51.000000000","message":"Done","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"789404700d6da5ff994f69211e28a7bf82f0dc2f","unresolved":false,"context_lines":[{"line_number":43,"context_line":"networks NUMA location. With the port \"numa_affinity_policy\" parameter, the"},{"line_number":44,"context_line":"Nova scheduler will filter those hosts matching the required policy."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"This RFE covers the missing cases defined in [4]_. Defining the NUMA"},{"line_number":47,"context_line":"affinity policy per port (interface), includes all type of ports, not only the"},{"line_number":48,"context_line":"SR-IOV interfaces. It also avoids defining the NUMA affinity in the Nova"},{"line_number":49,"context_line":"flavor; instead of this, a generic flavor can be used with ports with"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_2e071f1b","line":46,"range":{"start_line":46,"start_character":5,"end_line":46,"end_character":8},"updated":"2020-07-20 16:12:50.000000000","message":"specification","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b053455d91298d72477bf81276f98f2897fcf000","unresolved":false,"context_lines":[{"line_number":43,"context_line":"networks NUMA location. With the port \"numa_affinity_policy\" parameter, the"},{"line_number":44,"context_line":"Nova scheduler will filter those hosts matching the required policy."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"This RFE covers the missing cases defined in [4]_. Defining the NUMA"},{"line_number":47,"context_line":"affinity policy per port (interface), includes all type of ports, not only the"},{"line_number":48,"context_line":"SR-IOV interfaces. It also avoids defining the NUMA affinity in the Nova"},{"line_number":49,"context_line":"flavor; instead of this, a generic flavor can be used with ports with"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_aee20f9f","line":46,"range":{"start_line":46,"start_character":5,"end_line":46,"end_character":8},"in_reply_to":"bf51134e_2e071f1b","updated":"2020-07-20 16:40:51.000000000","message":"Done","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"789404700d6da5ff994f69211e28a7bf82f0dc2f","unresolved":false,"context_lines":[{"line_number":49,"context_line":"flavor; instead of this, a generic flavor can be used with ports with"},{"line_number":50,"context_line":"different policies."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This RFE proposes to add a new parameter to the \"port\" object. This parameter,"},{"line_number":53,"context_line":"\"numa_affinity_policy\", will be an string defining the NUMA affinity policy,"},{"line_number":54,"context_line":"based on the PCINUMAAffinityPolicy [5]_ enum defined in Nova. That field could"},{"line_number":55,"context_line":"have different values: \"required\", \"legacy\" and \"preferred\"."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_8e174b46","line":52,"range":{"start_line":52,"start_character":5,"end_line":52,"end_character":8},"updated":"2020-07-20 16:12:50.000000000","message":"specification","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b053455d91298d72477bf81276f98f2897fcf000","unresolved":false,"context_lines":[{"line_number":49,"context_line":"flavor; instead of this, a generic flavor can be used with ports with"},{"line_number":50,"context_line":"different policies."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This RFE proposes to add a new parameter to the \"port\" object. This parameter,"},{"line_number":53,"context_line":"\"numa_affinity_policy\", will be an string defining the NUMA affinity policy,"},{"line_number":54,"context_line":"based on the PCINUMAAffinityPolicy [5]_ enum defined in Nova. That field could"},{"line_number":55,"context_line":"have different values: \"required\", \"legacy\" and \"preferred\"."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_8edf4bd5","line":52,"range":{"start_line":52,"start_character":5,"end_line":52,"end_character":8},"in_reply_to":"bf51134e_8e174b46","updated":"2020-07-20 16:40:51.000000000","message":"Done","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"789404700d6da5ff994f69211e28a7bf82f0dc2f","unresolved":false,"context_lines":[{"line_number":55,"context_line":"have different values: \"required\", \"legacy\" and \"preferred\"."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"This information will be populated in the \"port\" dictionary when informing to"},{"line_number":58,"context_line":"Nova. This parameter will be a trait added in the \"resource_request\" parameter,"},{"line_number":59,"context_line":"in the \"required\" list."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"By default, the value of this new parameter will be \"None\", to keep"},{"line_number":62,"context_line":"backwards compatibility. In this case, no trait will be added to the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_ce782391","line":59,"range":{"start_line":58,"start_character":6,"end_line":59,"end_character":23},"updated":"2020-07-20 16:12:50.000000000","message":"This refers to the request from Nova to placement, right? I would clarify it, so make this spec clearer","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b053455d91298d72477bf81276f98f2897fcf000","unresolved":false,"context_lines":[{"line_number":55,"context_line":"have different values: \"required\", \"legacy\" and \"preferred\"."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"This information will be populated in the \"port\" dictionary when informing to"},{"line_number":58,"context_line":"Nova. This parameter will be a trait added in the \"resource_request\" parameter,"},{"line_number":59,"context_line":"in the \"required\" list."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"By default, the value of this new parameter will be \"None\", to keep"},{"line_number":62,"context_line":"backwards compatibility. In this case, no trait will be added to the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_2ee8bf7a","line":59,"range":{"start_line":58,"start_character":6,"end_line":59,"end_character":23},"in_reply_to":"bf51134e_ce782391","updated":"2020-07-20 16:40:51.000000000","message":"Done","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"789404700d6da5ff994f69211e28a7bf82f0dc2f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"numa_affinity_policy str      CRU  None          enum (including None)"},{"line_number":81,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"This child table will depend on \"ports\" table. Each register will have a 1:1"},{"line_number":84,"context_line":"relationship with a \"port\" register and will be deleted when the \"port\""},{"line_number":85,"context_line":"register is deleted too."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_ee9887cd","line":83,"range":{"start_line":83,"start_character":29,"end_line":83,"end_character":31},"updated":"2020-07-20 16:12:50.000000000","message":"on the","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"789404700d6da5ff994f69211e28a7bf82f0dc2f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"numa_affinity_policy str      CRU  None          enum (including None)"},{"line_number":81,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"This child table will depend on \"ports\" table. Each register will have a 1:1"},{"line_number":84,"context_line":"relationship with a \"port\" register and will be deleted when the \"port\""},{"line_number":85,"context_line":"register is deleted too."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_aeb68f3d","line":83,"range":{"start_line":83,"start_character":52,"end_line":83,"end_character":60},"updated":"2020-07-20 16:12:50.000000000","message":"row","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b053455d91298d72477bf81276f98f2897fcf000","unresolved":false,"context_lines":[{"line_number":80,"context_line":"numa_affinity_policy str      CRU  None          enum (including None)"},{"line_number":81,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"This child table will depend on \"ports\" table. Each register will have a 1:1"},{"line_number":84,"context_line":"relationship with a \"port\" register and will be deleted when the \"port\""},{"line_number":85,"context_line":"register is deleted too."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_0e3e9bd9","line":83,"range":{"start_line":83,"start_character":52,"end_line":83,"end_character":60},"in_reply_to":"bf51134e_aeb68f3d","updated":"2020-07-20 16:40:51.000000000","message":"Done","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b053455d91298d72477bf81276f98f2897fcf000","unresolved":false,"context_lines":[{"line_number":80,"context_line":"numa_affinity_policy str      CRU  None          enum (including None)"},{"line_number":81,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"This child table will depend on \"ports\" table. Each register will have a 1:1"},{"line_number":84,"context_line":"relationship with a \"port\" register and will be deleted when the \"port\""},{"line_number":85,"context_line":"register is deleted too."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_6e22b7bc","line":83,"range":{"start_line":83,"start_character":29,"end_line":83,"end_character":31},"in_reply_to":"bf51134e_ee9887cd","updated":"2020-07-20 16:40:51.000000000","message":"Done","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"789404700d6da5ff994f69211e28a7bf82f0dc2f","unresolved":false,"context_lines":[{"line_number":81,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"This child table will depend on \"ports\" table. Each register will have a 1:1"},{"line_number":84,"context_line":"relationship with a \"port\" register and will be deleted when the \"port\""},{"line_number":85,"context_line":"register is deleted too."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_ee81a74f","line":84,"range":{"start_line":84,"start_character":27,"end_line":84,"end_character":35},"updated":"2020-07-20 16:12:50.000000000","message":"row","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b053455d91298d72477bf81276f98f2897fcf000","unresolved":false,"context_lines":[{"line_number":81,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"This child table will depend on \"ports\" table. Each register will have a 1:1"},{"line_number":84,"context_line":"relationship with a \"port\" register and will be deleted when the \"port\""},{"line_number":85,"context_line":"register is deleted too."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_ae2ccfac","line":84,"range":{"start_line":84,"start_character":27,"end_line":84,"end_character":35},"in_reply_to":"bf51134e_ee81a74f","updated":"2020-07-20 16:40:51.000000000","message":"Done","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"789404700d6da5ff994f69211e28a7bf82f0dc2f","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"This child table will depend on \"ports\" table. Each register will have a 1:1"},{"line_number":84,"context_line":"relationship with a \"port\" register and will be deleted when the \"port\""},{"line_number":85,"context_line":"register is deleted too."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"REST API Impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_ae8faf73","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":8},"updated":"2020-07-20 16:12:50.000000000","message":"row","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b053455d91298d72477bf81276f98f2897fcf000","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"This child table will depend on \"ports\" table. Each register will have a 1:1"},{"line_number":84,"context_line":"relationship with a \"port\" register and will be deleted when the \"port\""},{"line_number":85,"context_line":"register is deleted too."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"REST API Impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_ee17e753","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":8},"in_reply_to":"bf51134e_ae8faf73","updated":"2020-07-20 16:40:51.000000000","message":"Done","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"789404700d6da5ff994f69211e28a7bf82f0dc2f","unresolved":false,"context_lines":[{"line_number":88,"context_line":"REST API Impact"},{"line_number":89,"context_line":"---------------"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"The parameter \"numa_affinity_policy\" in \"port\" API:"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":".. code-block:: python"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_ceeb0310","line":91,"range":{"start_line":91,"start_character":37,"end_line":91,"end_character":39},"updated":"2020-07-20 16:12:50.000000000","message":"in the","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b053455d91298d72477bf81276f98f2897fcf000","unresolved":false,"context_lines":[{"line_number":88,"context_line":"REST API Impact"},{"line_number":89,"context_line":"---------------"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"The parameter \"numa_affinity_policy\" in \"port\" API:"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":".. code-block:: python"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_2e127f63","line":91,"range":{"start_line":91,"start_character":37,"end_line":91,"end_character":39},"in_reply_to":"bf51134e_ceeb0310","updated":"2020-07-20 16:40:51.000000000","message":"Done","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"789404700d6da5ff994f69211e28a7bf82f0dc2f","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    }"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"The parameter could be updated only if the port is not bound. That check does"},{"line_number":110,"context_line":"not depend on the API but on the server."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_0ef69bfa","line":109,"range":{"start_line":109,"start_character":14,"end_line":109,"end_character":19},"updated":"2020-07-20 16:12:50.000000000","message":"can","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b053455d91298d72477bf81276f98f2897fcf000","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    }"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"The parameter could be updated only if the port is not bound. That check does"},{"line_number":110,"context_line":"not depend on the API but on the server."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf51134e_0e17bb53","line":109,"range":{"start_line":109,"start_character":14,"end_line":109,"end_character":19},"in_reply_to":"bf51134e_0ef69bfa","updated":"2020-07-20 16:40:51.000000000","message":"Done","commit_id":"11e21ff0771766161058ebdbe642118456ddf024"}]}
