)]}'
{"specs/ocata/approved/vif-plugging-negotiation.rst":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f9931f5c2c9777119790cdd773c90450ee0050ff","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Improve Nova-Neutron port binding through negotiation"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Include the URL of your launchpad blueprint:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://blueprints.launchpad.net/nova/+spec/nova-neutron-binding-negotiation"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_c7064fcd","line":11,"updated":"2016-11-02 18:19:26.000000000","message":"Nit: you can drop this line.","commit_id":"e8820d5bdef2ee87c9dc6af0ab9e1ebc955cc6a5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f9931f5c2c9777119790cdd773c90450ee0050ff","unresolved":false,"context_lines":[{"line_number":67,"context_line":"when it\u0027s possible, virtio in all cases - and Neutron\u0027s code would be"},{"line_number":68,"context_line":"able to choose from the available options based on what it could"},{"line_number":69,"context_line":"implement.  The interface would be the best available to both sides"},{"line_number":70,"context_line":"that satisfies the requirement."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Proposed change"},{"line_number":73,"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":1,"id":"ba5da102_ccef5685","line":70,"updated":"2016-11-02 18:19:26.000000000","message":"I am all for shorter specs, but I think its worth noting the use case of mixing bare metal and virtual resources in the same cloud and/or multiple hypervisors or network technologies in the same cloud.","commit_id":"e8820d5bdef2ee87c9dc6af0ab9e1ebc955cc6a5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9c77761d2adcfdc28e18b9c25bba1a77d445df19","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        \"preferred_binding_types\": [\"type1:version-number\","},{"line_number":97,"context_line":"                                    \"type2:version-number\","},{"line_number":98,"context_line":"                                    \"type-3:version-number\"]"},{"line_number":99,"context_line":"    }"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"The preferred_types are a recommendation and not a requirement"},{"line_number":102,"context_line":"to Neutron - the version of Neutron running may not understand what"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_e3882425","line":99,"updated":"2016-10-28 13:20:07.000000000","message":"Rather than inventing a JSON format, we need to just use the versioned object serialization format.\n\nEssentially we\u0027ll call\n\n  info \u003d os_vif.host_info()\n  info.obj_reset_changes()\n  dict \u003d info.obj_to_primitive()\n  data \u003d json.dumps(dict)\n\nSo \u0027data\u0027 here will be a JSON document of the serialized os-vif object. Neutron will do the reverse\n\n  dict \u003d json.loads(data)\n  os_vif.objects.host_info.HostInfo.obj_from_primitive(dict)","commit_id":"e8820d5bdef2ee87c9dc6af0ab9e1ebc955cc6a5"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"e5cb4b0c4a29f4ee9b566194d4f2da9710c1d121","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        \"preferred_binding_types\": [\"type1:version-number\","},{"line_number":97,"context_line":"                                    \"type2:version-number\","},{"line_number":98,"context_line":"                                    \"type-3:version-number\"]"},{"line_number":99,"context_line":"    }"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"The preferred_types are a recommendation and not a requirement"},{"line_number":102,"context_line":"to Neutron - the version of Neutron running may not understand what"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_9140a737","line":99,"in_reply_to":"ba5da102_0c422e68","updated":"2016-11-06 00:23:53.000000000","message":"I\u0027m happy that we use a serialised object here if you think it\u0027s appropriate - the only issue is that I don\u0027t think the hostinfo object is the right object to use because I think this is per-port not per-host.  I\u0027m going to leave this unchanged for the moment, but if you want to give me words to use (or simply edit the spec yourselves) I will change it accordingly.","commit_id":"e8820d5bdef2ee87c9dc6af0ab9e1ebc955cc6a5"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"e5cb4b0c4a29f4ee9b566194d4f2da9710c1d121","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        \"preferred_binding_types\": [\"type1:version-number\","},{"line_number":97,"context_line":"                                    \"type2:version-number\","},{"line_number":98,"context_line":"                                    \"type-3:version-number\"]"},{"line_number":99,"context_line":"    }"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"The preferred_types are a recommendation and not a requirement"},{"line_number":102,"context_line":"to Neutron - the version of Neutron running may not understand what"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_ab8e9e2b","line":99,"in_reply_to":"ba5da102_3ec64d9a","updated":"2016-11-06 00:23:53.000000000","message":"OK, though as previously discussed (and this may be just a naming thing) we don\u0027t want information on the \u0027host\u0027, we want information on the binding types appropriate for that port (which will be different in different circumstances that do not relate to the host alone).","commit_id":"e8820d5bdef2ee87c9dc6af0ab9e1ebc955cc6a5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f9931f5c2c9777119790cdd773c90450ee0050ff","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        \"preferred_binding_types\": [\"type1:version-number\","},{"line_number":97,"context_line":"                                    \"type2:version-number\","},{"line_number":98,"context_line":"                                    \"type-3:version-number\"]"},{"line_number":99,"context_line":"    }"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"The preferred_types are a recommendation and not a requirement"},{"line_number":102,"context_line":"to Neutron - the version of Neutron running may not understand what"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_0c422e68","line":99,"in_reply_to":"ba5da102_3ec64d9a","updated":"2016-11-02 18:19:26.000000000","message":"Right, the current agreement is to serialize o.vo objects from os-vif for the interchange format, mostly to get the versioning sorted.\n\nFor reference, this spec current documents the currently agreed plan:\nhttp://specs.openstack.org/openstack/nova-specs/specs/newton/implemented/os-vif-library.html#rest-api-impact","commit_id":"e8820d5bdef2ee87c9dc6af0ab9e1ebc955cc6a5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"38d31fc3120f072edaf17058e74d5dd6871ff3cb","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        \"preferred_binding_types\": [\"type1:version-number\","},{"line_number":97,"context_line":"                                    \"type2:version-number\","},{"line_number":98,"context_line":"                                    \"type-3:version-number\"]"},{"line_number":99,"context_line":"    }"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"The preferred_types are a recommendation and not a requirement"},{"line_number":102,"context_line":"to Neutron - the version of Neutron running may not understand what"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_3ec64d9a","line":99,"in_reply_to":"ba5da102_53013a37","updated":"2016-11-02 10:07:58.000000000","message":"os-vif should be involved in both directions\n\n- Nova -\u003e Neutron:  Nova sends a serialized copy of os-vif HostInfo object, which describes supported plugins + vif types\n- Neutron -\u003e Nova:  Neutron sends a serialized copy of the os-vif VIF sub-class object, which describes the chosen VIF type.\n\nSo that \u0027preferred_binding_types\u0027 field as you describe above is not something we would ever send from Nova. We would send the serialized HostInfo object.","commit_id":"e8820d5bdef2ee87c9dc6af0ab9e1ebc955cc6a5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"fe708a1ad4468fa1087d4a0ad81c2ff44e6e1d28","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        \"preferred_binding_types\": [\"type1:version-number\","},{"line_number":97,"context_line":"                                    \"type2:version-number\","},{"line_number":98,"context_line":"                                    \"type-3:version-number\"]"},{"line_number":99,"context_line":"    }"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"The preferred_types are a recommendation and not a requirement"},{"line_number":102,"context_line":"to Neutron - the version of Neutron running may not understand what"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_72024771","line":99,"in_reply_to":"ba5da102_ab8e9e2b","updated":"2016-11-14 11:50:26.000000000","message":"Yeah, that sounds more like a naming thing.\n\nI guess I am fine if its a new object that doesn\u0027t exist in os-vif today, its just I feel we should just go with some object serialised, to match the currently agreed plan.\n\nWe should probably just go through the data that needs to be in the object. I assume its basically a list of preferred binding types for the given port?","commit_id":"e8820d5bdef2ee87c9dc6af0ab9e1ebc955cc6a5"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"e6c0375113451c27737430b657896bd49e7b60f7","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        \"preferred_binding_types\": [\"type1:version-number\","},{"line_number":97,"context_line":"                                    \"type2:version-number\","},{"line_number":98,"context_line":"                                    \"type-3:version-number\"]"},{"line_number":99,"context_line":"    }"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"The preferred_types are a recommendation and not a requirement"},{"line_number":102,"context_line":"to Neutron - the version of Neutron running may not understand what"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_53013a37","line":99,"in_reply_to":"ba5da102_e3882425","updated":"2016-11-02 10:00:49.000000000","message":"First, we\u0027re not really inventing a JSON format here, we\u0027re adding a key to a dict in the existing format to show the list of acceptable types.  Second, I may be wrong, but what you seem to be producing there is a serialised object, whereas if you read what I\u0027ve put above this should be acceptable VIF types in preference order - so a list of type names, not object content of a specific type.\n\nI\u0027ve not said anything in this about how osvif objects might come across the boundary.  I would imagine you\u0027d stuff them into another field in binding-details (which is Neutron-Nova; this is Nova-Neutron).  But that\u0027s not relevant to this spec in particular.\n\nCan you confirm if this is still a relevant comment in light of all that, and if so how I make use of it?","commit_id":"e8820d5bdef2ee87c9dc6af0ab9e1ebc955cc6a5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9c77761d2adcfdc28e18b9c25bba1a77d445df19","unresolved":false,"context_lines":[{"line_number":249,"context_line":"4. Test"},{"line_number":250,"context_line":"5. In the Other Place, fix all remaining in tree code"},{"line_number":251,"context_line":"6. Extol the virtues of the new interface to the out of tree"},{"line_number":252,"context_line":"   Neutron driver maintainers"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_a3ae2c83","line":252,"updated":"2016-10-28 13:20:07.000000000","message":"We\u0027ll need some improvements in os-vif to deal with this\n\n- os_vif.objects.instance_info.InstanceInfo will need to gain some extra fields to provide info such as the emulated NIC model, the guest page size, etc\n- os_vif.host_info() method will need to be passed the InstanceInfo object, which it would then pass into the plugins, so they can filter which vif types they report based on the instance info\n\nIn temrs of the data Nova get back from Neutron, we\u0027ll want to get a serialized instance of the vif type. eg Neutron would do\n\n vif \u003d os_vif.objects.vif.VIFOpenVSwitch(...)\n dict \u003d vif.obj_to_primitive()\n data \u003d jsons.dumps(dict)\n\nWe\u0027ll want to define a new VIF type \"VIF_TYPE_OS_VIF\" whose only port binding attribute is this json serialized vif object. Nova would receive that and load it with obj_from_primitive()","commit_id":"e8820d5bdef2ee87c9dc6af0ab9e1ebc955cc6a5"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"e5cb4b0c4a29f4ee9b566194d4f2da9710c1d121","unresolved":false,"context_lines":[{"line_number":249,"context_line":"4. Test"},{"line_number":250,"context_line":"5. In the Other Place, fix all remaining in tree code"},{"line_number":251,"context_line":"6. Extol the virtues of the new interface to the out of tree"},{"line_number":252,"context_line":"   Neutron driver maintainers"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_6ba80678","line":252,"in_reply_to":"ba5da102_9eecb9f4","updated":"2016-11-06 00:23:53.000000000","message":"I\u0027ve added the reference John gave.  I think the changes are largely intertwingled rather than cleanly dependent, but nevertheless the relationship is there.","commit_id":"e8820d5bdef2ee87c9dc6af0ab9e1ebc955cc6a5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f9931f5c2c9777119790cdd773c90450ee0050ff","unresolved":false,"context_lines":[{"line_number":249,"context_line":"4. Test"},{"line_number":250,"context_line":"5. In the Other Place, fix all remaining in tree code"},{"line_number":251,"context_line":"6. Extol the virtues of the new interface to the out of tree"},{"line_number":252,"context_line":"   Neutron driver maintainers"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_47b15f46","line":252,"in_reply_to":"ba5da102_9eecb9f4","updated":"2016-11-02 18:19:26.000000000","message":"os-vif is a big part of this change, in the way Nova has currently planned the change. I think this becomes easier once that is worked into the spec.\n\nWe should list these changes as a dependency (i.e. we need os-vif changes, and a os-vif release, and an os-vif lower bound requirements bump, etc)","commit_id":"e8820d5bdef2ee87c9dc6af0ab9e1ebc955cc6a5"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"e6c0375113451c27737430b657896bd49e7b60f7","unresolved":false,"context_lines":[{"line_number":249,"context_line":"4. Test"},{"line_number":250,"context_line":"5. In the Other Place, fix all remaining in tree code"},{"line_number":251,"context_line":"6. Extol the virtues of the new interface to the out of tree"},{"line_number":252,"context_line":"   Neutron driver maintainers"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_de2c719b","line":252,"in_reply_to":"ba5da102_a3ae2c83","updated":"2016-11-02 10:00:49.000000000","message":"I would consider doing this as a one-step process: given the information about the requested VM, including its flavour and the emulated VIF type requested (if any), os-vif\u0027s objects should have a method associated that allows them to decide if they\u0027re in the running or not and with what priority.  That\u0027s all point (1) in the list above.\n\nAgain, as for the serialisation, that\u0027s required to finish the work but not really the detail that this spec is trying to describe.  Probably up-front work before this gets done, in fact.","commit_id":"e8820d5bdef2ee87c9dc6af0ab9e1ebc955cc6a5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"38d31fc3120f072edaf17058e74d5dd6871ff3cb","unresolved":false,"context_lines":[{"line_number":249,"context_line":"4. Test"},{"line_number":250,"context_line":"5. In the Other Place, fix all remaining in tree code"},{"line_number":251,"context_line":"6. Extol the virtues of the new interface to the out of tree"},{"line_number":252,"context_line":"   Neutron driver maintainers"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_9eecb9f4","line":252,"in_reply_to":"ba5da102_de2c719b","updated":"2016-11-02 10:07:58.000000000","message":"Well the spec needs to describe all work associated with getting the feature done, and the os-vif work is part of that scope, so needs to be listed as a work item here, or as a dependancy below.","commit_id":"e8820d5bdef2ee87c9dc6af0ab9e1ebc955cc6a5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8a0131932c8c1cfea1546a44f2ee0a08f6976b58","unresolved":false,"context_lines":[{"line_number":75,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"When Nova calls Neutron it will populate the vif binding:profile with"},{"line_number":78,"context_line":"a \u0027preferred_binding_types\u0027 field containing a comma separated list,"},{"line_number":79,"context_line":"(with optional, ignored spaces) of os-vif types it can make use of to"},{"line_number":80,"context_line":"Neutron, along with the version or versions directly supported.  The"},{"line_number":81,"context_line":"Neutron driver should treat this list of types as the supported and"},{"line_number":82,"context_line":"preferred list of types.  It should recognise that the types are"},{"line_number":83,"context_line":"specific to each attempt at binding - they will not necessarily be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_99171f54","line":80,"range":{"start_line":78,"start_character":0,"end_line":80,"end_character":62},"updated":"2016-11-14 20:38:36.000000000","message":"we probably should pass a filtered list of os-vif HostPluginInfo object here similar to the list stored in the host_info class.\n\nthe HostPluginInfo class itself may not be the most appropriate class to send over the wire but i do think an array of HostPluginInfo object would be a good starting point.\n\n \nhttps://github.com/openstack/os-vif/blob/c71db0f233317f137f70c62703be26b0d673d186/os_vif/objects/host_info.py#L66-L94\n\nthat said my main concern with using the HostPluginInfo is i am not sure it carries enough info to convey enough information to cater for different flavors of a specific vif-type.  \n\nif we are use the HostPluginInfo directly or event just the string name of the vif_type, we are forced to model subtypes of vhost-user port as different vif_types as is the case in https://review.openstack.org/#/c/375533/8/doc/source/vif_types.rst. having the ability to pass metadata in addition to the vif_type such as profiles would allow a small set of vif_types to be shared between multiple plguins more easily.","commit_id":"ae037f3a54865044b5038ec8f092d5acd7342879"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"979a5d688252ce22cf65c14c3d4561b6483ef0d2","unresolved":false,"context_lines":[{"line_number":75,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"When Nova calls Neutron it will populate the vif binding:profile with"},{"line_number":78,"context_line":"a \u0027preferred_binding_types\u0027 field containing a comma separated list,"},{"line_number":79,"context_line":"(with optional, ignored spaces) of os-vif types it can make use of to"},{"line_number":80,"context_line":"Neutron, along with the version or versions directly supported.  The"},{"line_number":81,"context_line":"Neutron driver should treat this list of types as the supported and"},{"line_number":82,"context_line":"preferred list of types.  It should recognise that the types are"},{"line_number":83,"context_line":"specific to each attempt at binding - they will not necessarily be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_4a4c1cc8","line":80,"range":{"start_line":78,"start_character":0,"end_line":80,"end_character":62},"in_reply_to":"7a77a97e_99171f54","updated":"2016-11-17 18:24:58.000000000","message":"We should send HostInfo, thats a collection of HostPluginInfo:\nhttps://github.com/openstack/os-vif/blob/c71db0f233317f137f70c62703be26b0d673d186/os_vif/objects/host_info.py#L98\n\nThe problem is naming here I think...\n\nNova is sending to Neutron, in the HostInfo, what os-vif says is possible for the current port we are binding to the given instance. So os-vif gets passed all the information about the VM and its flavor, and gives all the possible options for the given VM, given the installed/configured os-vif plugins.","commit_id":"ae037f3a54865044b5038ec8f092d5acd7342879"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8a0131932c8c1cfea1546a44f2ee0a08f6976b58","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    \"binding_profile\": {"},{"line_number":97,"context_line":"        ... current information"},{"line_number":98,"context_line":"        \"preferred_binding_types\": [\"type1:version-number\","},{"line_number":99,"context_line":"                                    \"type2:version-number\","},{"line_number":100,"context_line":"                                    \"type-3:version-number\"]"},{"line_number":101,"context_line":"    }"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The preferred_types are a recommendation and not a requirement"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_3c3ef9b8","line":100,"range":{"start_line":98,"start_character":35,"end_line":100,"end_character":60},"updated":"2016-11-14 20:38:36.000000000","message":"here i would just reuse the serialised form of the oslo versioned objects.","commit_id":"ae037f3a54865044b5038ec8f092d5acd7342879"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"979a5d688252ce22cf65c14c3d4561b6483ef0d2","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    \"binding_profile\": {"},{"line_number":97,"context_line":"        ... current information"},{"line_number":98,"context_line":"        \"preferred_binding_types\": [\"type1:version-number\","},{"line_number":99,"context_line":"                                    \"type2:version-number\","},{"line_number":100,"context_line":"                                    \"type-3:version-number\"]"},{"line_number":101,"context_line":"    }"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The preferred_types are a recommendation and not a requirement"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_0a04e447","line":100,"range":{"start_line":98,"start_character":35,"end_line":100,"end_character":60},"in_reply_to":"7a77a97e_3c3ef9b8","updated":"2016-11-17 18:24:58.000000000","message":"right, the json here is just a serialised HostInfo object.","commit_id":"ae037f3a54865044b5038ec8f092d5acd7342879"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"215d0914ad8200fc8499c41152332ec6c35d1882","unresolved":false,"context_lines":[{"line_number":152,"context_line":"preferred_binding_type information to Neutron during the binding"},{"line_number":153,"context_line":"process.  Given the current use of the os-vif lib, this is a matter of"},{"line_number":154,"context_line":"selecting types it has provided that may be used, discarding"},{"line_number":155,"context_line":"unworkable ones and letting the remainder be preference-ordered."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Alternatives"},{"line_number":158,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_85c38556","line":155,"updated":"2016-11-17 18:39:38.000000000","message":"So what I expect is something like this:\n\nNova need to call os_vif.objects.HostInfo.filter_vif_types() to get the host info, see:\n\nhttps://github.com/openstack/os-vif/blob/4cdd962bc3a6ea5bfd22eb8825d1d5efa94c3f7e/os_vif/objects/host_info.py#L128\n\nThat call needs modifying to take an object that describes the current host configuration and current VM properties, such that os_vif is able to return HostInfo. Those objects are both likely versioned objects, that can be used by the individual plugins to decide if they are appropriate for the current \"context\".\n\nThat means we have a method on HostInfo to get the list of supported plugins, through the medium of o.vo objects. That is what we should then serialise and pass to neutron. Its worth noting that includes version negotiation, there may be two versions of the same plugin reporting.\n\nThats all work in os_vif we need to get this all working. I think?\n\nOn the neutron side, os-vif can be used to populate the binding information that we would serialised and pass to Nova, that passes that to os-vif to perform the host binding.","commit_id":"ae037f3a54865044b5038ec8f092d5acd7342879"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a327af02a8086bf0201dc5bafe7b085bd9ca0959","unresolved":false,"context_lines":[{"line_number":152,"context_line":"preferred_binding_type information to Neutron during the binding"},{"line_number":153,"context_line":"process.  Given the current use of the os-vif lib, this is a matter of"},{"line_number":154,"context_line":"selecting types it has provided that may be used, discarding"},{"line_number":155,"context_line":"unworkable ones and letting the remainder be preference-ordered."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Alternatives"},{"line_number":158,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_a596c1ed","line":155,"in_reply_to":"7a77a97e_85c38556","updated":"2016-11-17 18:47:47.000000000","message":"For example, huge_pages\u003dTrue/False would be populated in some server_context object, then passed into filter_vif_types","commit_id":"ae037f3a54865044b5038ec8f092d5acd7342879"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"b1380d60af191da58a92e5f3a7db8da4e3555b80","unresolved":false,"context_lines":[{"line_number":97,"context_line":"The initial object will consist of a structure implementing the"},{"line_number":98,"context_line":"following format - likely a clone of HostInfo, initially, but"},{"line_number":99,"context_line":"duplicated because it has a different purpose and will evolve"},{"line_number":100,"context_line":"differently in future versions (see below about host specificity):"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"set(types):"},{"line_number":103,"context_line":"    tuple(os-vif plugin, supported version format)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_5dca0f1c","line":100,"updated":"2016-11-18 09:02:14.000000000","message":"No, really do *not* need a new object. The HostInfo object was created for this *exact* purpose - it has no other purpose - it exists solely to serve as the data representation for negotiation.","commit_id":"cb87fe929573a23d8f6a62a8457a058284969050"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"6fb9a554a399c3a3ce52359f2191df9d3dc8aa01","unresolved":false,"context_lines":[{"line_number":97,"context_line":"The initial object will consist of a structure implementing the"},{"line_number":98,"context_line":"following format - likely a clone of HostInfo, initially, but"},{"line_number":99,"context_line":"duplicated because it has a different purpose and will evolve"},{"line_number":100,"context_line":"differently in future versions (see below about host specificity):"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"set(types):"},{"line_number":103,"context_line":"    tuple(os-vif plugin, supported version format)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_9a67e6e9","line":100,"in_reply_to":"7a77a97e_1debf4b1","updated":"2016-11-22 00:22:16.000000000","message":"I\u0027m saying that \u0027HostInfo\u0027 is not the right name for this type, and that\u0027s all I\u0027m saying.  I\u0027ll leave it as \u0027we will use the HostInfo type\u0027, but I reserve the right to change its name as we make the change (which you can review at the time, in context) if it simply doesn\u0027t suit the task.","commit_id":"cb87fe929573a23d8f6a62a8457a058284969050"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"582bc1aff2fad4f85c641370b8f1d3c53fec423a","unresolved":false,"context_lines":[{"line_number":97,"context_line":"The initial object will consist of a structure implementing the"},{"line_number":98,"context_line":"following format - likely a clone of HostInfo, initially, but"},{"line_number":99,"context_line":"duplicated because it has a different purpose and will evolve"},{"line_number":100,"context_line":"differently in future versions (see below about host specificity):"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"set(types):"},{"line_number":103,"context_line":"    tuple(os-vif plugin, supported version format)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_483232a8","line":100,"in_reply_to":"7a77a97e_3f6c609b","updated":"2016-11-18 18:34:42.000000000","message":"The spec makes this clear - the information being passed to Neutron here is the list of os-vif plugins that *a specific port* can use to plug in, and not the list of os-vif plugins *that exist for a host* (because while the plugging mechanisms are presumably drawn from this, some may be inapplicable).  If the \u0027host\u0027 is virtual this counts double, because I don\u0027t want to limit us to using the same plugging type list for all interfaces on a VM - we don\u0027t use the same plugging type for all interfaces even today.\n\nAlso, if this object exists solely for negotiation then it should have a name that reflects that - the reason I suggested a different object is because I assumed, since the HostInfo object already existed, that it had other uses in the code.  If its use is purely to inform Neutron of available plugging methods then it can be used as is, but it deserves a rename.","commit_id":"cb87fe929573a23d8f6a62a8457a058284969050"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"84e4b13923465c4736562a4c44a959978ec49bf4","unresolved":false,"context_lines":[{"line_number":97,"context_line":"The initial object will consist of a structure implementing the"},{"line_number":98,"context_line":"following format - likely a clone of HostInfo, initially, but"},{"line_number":99,"context_line":"duplicated because it has a different purpose and will evolve"},{"line_number":100,"context_line":"differently in future versions (see below about host specificity):"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"set(types):"},{"line_number":103,"context_line":"    tuple(os-vif plugin, supported version format)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_1debf4b1","line":100,"in_reply_to":"7a77a97e_483232a8","updated":"2016-11-21 10:15:38.000000000","message":"You are creating a problem where none exists. The HostInfo class does not require that you have a single set of data for the host. All it does is define a data structure for reporting information.  How you then populate the data in that class is entirely up to the particular usage scenario. It can be used to report data about the host as a whole, or it can be used to report data about the setup of the specific VIF port currently being plugged - there\u0027s absoutely no difference in the data format - merely how its populated. In all cases it is reporting what host is capable of supporting for the particular usage scenario, so its name is accurate, whether used to report filtered per-port data or simply the installed data","commit_id":"cb87fe929573a23d8f6a62a8457a058284969050"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9ca69c4726e3ff3e4f6c0fcfaa3bc5fa7b409ea7","unresolved":false,"context_lines":[{"line_number":97,"context_line":"The initial object will consist of a structure implementing the"},{"line_number":98,"context_line":"following format - likely a clone of HostInfo, initially, but"},{"line_number":99,"context_line":"duplicated because it has a different purpose and will evolve"},{"line_number":100,"context_line":"differently in future versions (see below about host specificity):"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"set(types):"},{"line_number":103,"context_line":"    tuple(os-vif plugin, supported version format)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_df59ac36","line":100,"in_reply_to":"7a77a97e_5dca0f1c","updated":"2016-11-18 11:54:14.000000000","message":"I agree it could do with a new name, but as you say, it exists only for this negotiation API.","commit_id":"cb87fe929573a23d8f6a62a8457a058284969050"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"6d1b281108f04c8dd556f1362fc7320c4f3a2d91","unresolved":false,"context_lines":[{"line_number":97,"context_line":"The initial object will consist of a structure implementing the"},{"line_number":98,"context_line":"following format - likely a clone of HostInfo, initially, but"},{"line_number":99,"context_line":"duplicated because it has a different purpose and will evolve"},{"line_number":100,"context_line":"differently in future versions (see below about host specificity):"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"set(types):"},{"line_number":103,"context_line":"    tuple(os-vif plugin, supported version format)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_7a5ccaed","line":100,"in_reply_to":"7a77a97e_9a67e6e9","updated":"2016-11-22 00:28:06.000000000","message":"To add to that, note the description currently in os-vif (https://github.com/openstack/os-vif/blob/88c21d7d69905308f021c7546609b9c30b761806/doc/source/host_info.rst#hostinfo): \u0027This class provides information about the host as a whole. This currently means a list of plugins installed on the host. In the future this may include further information about the host OS state.\u0027  The datastructure described here doesn\u0027t refer to the host or the host OS and might well in the future care about information about the port, so that description doesn\u0027t really fit.  Again, it might simply be appropriate to change the description.","commit_id":"cb87fe929573a23d8f6a62a8457a058284969050"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"d173310882e5da2ae0f7e4b8454a436ac43185f1","unresolved":false,"context_lines":[{"line_number":97,"context_line":"The initial object will consist of a structure implementing the"},{"line_number":98,"context_line":"following format - likely a clone of HostInfo, initially, but"},{"line_number":99,"context_line":"duplicated because it has a different purpose and will evolve"},{"line_number":100,"context_line":"differently in future versions (see below about host specificity):"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"set(types):"},{"line_number":103,"context_line":"    tuple(os-vif plugin, supported version format)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_3f6c609b","line":100,"in_reply_to":"7a77a97e_df59ac36","updated":"2016-11-18 11:57:40.000000000","message":"I don\u0027t see any problem with the name - it is describing the available Host plugins for a particular VIF. So HostInfo is accurate IMHO, unless you want to create some pointlessly verbose name like HostInfoForGuestVIF. So I see no reason to need/want to change its name.","commit_id":"cb87fe929573a23d8f6a62a8457a058284969050"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a28cbd2007d44c7249b435868acb33549533d090","unresolved":false,"context_lines":[{"line_number":80,"context_line":"implementation shall consist of a set - a list of os-vif binding object"},{"line_number":81,"context_line":"types with usable versions, with no consideration"},{"line_number":82,"context_line":"to preference and no additional detail - but with the intention that this"},{"line_number":83,"context_line":"object may be refined and enhanced in the future to include other"},{"line_number":84,"context_line":"information relevant to Neutron\u0027s choice and the form of return"},{"line_number":85,"context_line":"value it will use."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The Neutron driver should treat this list of types as the supported and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a6eadb0_5a6d5f31","line":84,"range":{"start_line":83,"start_character":35,"end_line":84,"end_character":38},"updated":"2016-12-13 01:07:35.000000000","message":"on such parameter that wew will need to pas are the port profies.\n\neffectively what wee need to pass are a list of os-vif plugins available on the host. for each plugin we pass the list of vif_types its supports. for each vif type for each plugin we list the port profiles that can be used with that vif with that plugin.\n\ne.g. the VIFHostDevice type when use with the sriov plugin will be able to use  the VIFPortProfile8021Qbg or VIFPortProfile8021Qbh but with the ovs pluging VIFHostDevice  will be able to use only the VIFPortProfileOpenVSwitch when the hardware dataplane for ovs is enabled upstream.","commit_id":"5fc319951617f885ec7cce68ab63bc98009609ad"}],"specs/pike/approved/vif-plugging-negotiation.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The binding process is mainly driven by a lot of tacitly agreed information:"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    - Neutron knows which binding type to give Nova to suit Nova\u0027s"},{"line_number":26,"context_line":"      hypervisor backend (as different hypervisors support different"},{"line_number":27,"context_line":"      binding types)"},{"line_number":28,"context_line":"    - Nova will be able to work with whatever binding type Neutron chooses."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This leaves two problems:"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_54ac7d35","line":28,"range":{"start_line":25,"start_character":0,"end_line":28,"end_character":75},"updated":"2017-02-09 17:18:38.000000000","message":"I can\u0027t verify this (the build has gone), but I don\u0027t think this should be indented.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ef4a711d2bbd6641902081592c486e81f19b0ac","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The binding process is mainly driven by a lot of tacitly agreed information:"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    - Neutron knows which binding type to give Nova to suit Nova\u0027s"},{"line_number":26,"context_line":"      hypervisor backend (as different hypervisors support different"},{"line_number":27,"context_line":"      binding types)"},{"line_number":28,"context_line":"    - Nova will be able to work with whatever binding type Neutron chooses."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This leaves two problems:"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba2be162_4e006e34","line":28,"range":{"start_line":25,"start_character":0,"end_line":28,"end_character":75},"in_reply_to":"1a430d35_54ac7d35","updated":"2017-03-06 14:54:07.000000000","message":"this look mostly correct to me.\nthough i would personally reduce to \n - Neutron... \ninstead of \n    - Neutron ...\n\nfrom a rendering point of view i think it will be fine either way.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"      hypervisor backend (as different hypervisors support different"},{"line_number":27,"context_line":"      binding types)"},{"line_number":28,"context_line":"    - Nova will be able to work with whatever binding type Neutron chooses."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This leaves two problems:"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    1. Nova cannot say that binding types are sometimes available and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_908ce380","line":29,"updated":"2017-03-20 14:32:18.000000000","message":"Don\u0027t we sometimes for the user when creating the port to give lots of information the system already knows? I am thinking about booting an ironic instance, and creating ports up front.\n\nWe should really stop implementation details like that leaking out of the API for no reason. The user should simple express their intent, not how to implement their intent.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d870cde77b795ecc1225f335f20feb0bc61ecb3a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"      hypervisor backend (as different hypervisors support different"},{"line_number":27,"context_line":"      binding types)"},{"line_number":28,"context_line":"    - Nova will be able to work with whatever binding type Neutron chooses."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This leaves two problems:"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    1. Nova cannot say that binding types are sometimes available and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_4100d001","line":29,"in_reply_to":"1a1ced50_908ce380","updated":"2017-03-20 20:45:44.000000000","message":"@johnthetubaguy: ++","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"12df45839a67769f4ec259fef6294ee3f491f96e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"       different circumstances - for instance, vhostuser in some cases"},{"line_number":39,"context_line":"       and virtio in others based on a user expressed preference on"},{"line_number":40,"context_line":"       the port or network that Nova does not know or recognise"},{"line_number":41,"context_line":"    3. In some cases, a cloud may support one plugging type on one"},{"line_number":42,"context_line":"       host and one on another - perhaps because multiple software"},{"line_number":43,"context_line":"       switches are used, or perhaps because the cloud mixes virtual"},{"line_number":44,"context_line":"       resources or physical resources of different types"}],"source_content_type":"text/x-rst","patch_set":5,"id":"da36d5c6_f03504da","line":41,"updated":"2017-02-22 15:11:17.000000000","message":"As long as the switching technology used on one specific host is determined, neutron will return correct binding information. I do not understand why this (mixing different switching technology among different servers) is a problem. Please correct me or elaborate.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"       different circumstances - for instance, vhostuser in some cases"},{"line_number":39,"context_line":"       and virtio in others based on a user expressed preference on"},{"line_number":40,"context_line":"       the port or network that Nova does not know or recognise"},{"line_number":41,"context_line":"    3. In some cases, a cloud may support one plugging type on one"},{"line_number":42,"context_line":"       host and one on another - perhaps because multiple software"},{"line_number":43,"context_line":"       switches are used, or perhaps because the cloud mixes virtual"},{"line_number":44,"context_line":"       resources or physical resources of different types"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_f058b7fc","line":41,"in_reply_to":"da36d5c6_f03504da","updated":"2017-03-20 14:32:18.000000000","message":"currently there is one binding to represent two host connections, if each connection has different information, I don\u0027t know how that would work today. This seems a good problem to state.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This leaves two problems:"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    1. Nova cannot say that binding types are sometimes available and"},{"line_number":33,"context_line":"       sometimes not - for instance, vhostuser is available when a VM"},{"line_number":34,"context_line":"       is started with a hugepage flavor and not otherwise, or"},{"line_number":35,"context_line":"       vhostuser with a compute host running KVM and something else"},{"line_number":36,"context_line":"       for a different compute host running a different hypervisor."},{"line_number":37,"context_line":"    2. Neutron cannot easily provide different binding types in"},{"line_number":38,"context_line":"       different circumstances - for instance, vhostuser in some cases"},{"line_number":39,"context_line":"       and virtio in others based on a user expressed preference on"},{"line_number":40,"context_line":"       the port or network that Nova does not know or recognise"},{"line_number":41,"context_line":"    3. In some cases, a cloud may support one plugging type on one"},{"line_number":42,"context_line":"       host and one on another - perhaps because multiple software"},{"line_number":43,"context_line":"       switches are used, or perhaps because the cloud mixes virtual"},{"line_number":44,"context_line":"       resources or physical resources of different types"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"[For the unfamiliar, vhostuser is a binding type that relates to using"},{"line_number":47,"context_line":"shared memory between the softswitch that Neutron controls and the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_9719877c","line":44,"range":{"start_line":32,"start_character":0,"end_line":44,"end_character":57},"updated":"2017-02-09 17:18:38.000000000","message":"dedent, also a newline between each point makes this easier to read in plain text","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d870cde77b795ecc1225f335f20feb0bc61ecb3a","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This leaves two problems:"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    1. Nova cannot say that binding types are sometimes available and"},{"line_number":33,"context_line":"       sometimes not - for instance, vhostuser is available when a VM"},{"line_number":34,"context_line":"       is started with a hugepage flavor and not otherwise, or"},{"line_number":35,"context_line":"       vhostuser with a compute host running KVM and something else"},{"line_number":36,"context_line":"       for a different compute host running a different hypervisor."},{"line_number":37,"context_line":"    2. Neutron cannot easily provide different binding types in"},{"line_number":38,"context_line":"       different circumstances - for instance, vhostuser in some cases"},{"line_number":39,"context_line":"       and virtio in others based on a user expressed preference on"},{"line_number":40,"context_line":"       the port or network that Nova does not know or recognise"},{"line_number":41,"context_line":"    3. In some cases, a cloud may support one plugging type on one"},{"line_number":42,"context_line":"       host and one on another - perhaps because multiple software"},{"line_number":43,"context_line":"       switches are used, or perhaps because the cloud mixes virtual"},{"line_number":44,"context_line":"       resources or physical resources of different types"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"[For the unfamiliar, vhostuser is a binding type that relates to using"},{"line_number":47,"context_line":"shared memory between the softswitch that Neutron controls and the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_41837056","line":44,"range":{"start_line":32,"start_character":0,"end_line":44,"end_character":57},"in_reply_to":"1a1ced50_70bf67fb","updated":"2017-03-20 20:45:44.000000000","message":"I also do not understand why problem #3 is an actual problem. Are you saying that an OpenStack cloud only supports one vif plug type at a time? Because clearly that\u0027s not correct... Ian, could you elaborate a bit here, please?","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ef4a711d2bbd6641902081592c486e81f19b0ac","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This leaves two problems:"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    1. Nova cannot say that binding types are sometimes available and"},{"line_number":33,"context_line":"       sometimes not - for instance, vhostuser is available when a VM"},{"line_number":34,"context_line":"       is started with a hugepage flavor and not otherwise, or"},{"line_number":35,"context_line":"       vhostuser with a compute host running KVM and something else"},{"line_number":36,"context_line":"       for a different compute host running a different hypervisor."},{"line_number":37,"context_line":"    2. Neutron cannot easily provide different binding types in"},{"line_number":38,"context_line":"       different circumstances - for instance, vhostuser in some cases"},{"line_number":39,"context_line":"       and virtio in others based on a user expressed preference on"},{"line_number":40,"context_line":"       the port or network that Nova does not know or recognise"},{"line_number":41,"context_line":"    3. In some cases, a cloud may support one plugging type on one"},{"line_number":42,"context_line":"       host and one on another - perhaps because multiple software"},{"line_number":43,"context_line":"       switches are used, or perhaps because the cloud mixes virtual"},{"line_number":44,"context_line":"       resources or physical resources of different types"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"[For the unfamiliar, vhostuser is a binding type that relates to using"},{"line_number":47,"context_line":"shared memory between the softswitch that Neutron controls and the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba2be162_ce9a9e13","line":44,"range":{"start_line":32,"start_character":0,"end_line":44,"end_character":57},"in_reply_to":"1a430d35_9719877c","updated":"2017-03-06 14:54:07.000000000","message":"these are sub bullets of the heading this leaves two problesm so i actually think this is indented correctly.\n\nthat said i would delete problem 3","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This leaves two problems:"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    1. Nova cannot say that binding types are sometimes available and"},{"line_number":33,"context_line":"       sometimes not - for instance, vhostuser is available when a VM"},{"line_number":34,"context_line":"       is started with a hugepage flavor and not otherwise, or"},{"line_number":35,"context_line":"       vhostuser with a compute host running KVM and something else"},{"line_number":36,"context_line":"       for a different compute host running a different hypervisor."},{"line_number":37,"context_line":"    2. Neutron cannot easily provide different binding types in"},{"line_number":38,"context_line":"       different circumstances - for instance, vhostuser in some cases"},{"line_number":39,"context_line":"       and virtio in others based on a user expressed preference on"},{"line_number":40,"context_line":"       the port or network that Nova does not know or recognise"},{"line_number":41,"context_line":"    3. In some cases, a cloud may support one plugging type on one"},{"line_number":42,"context_line":"       host and one on another - perhaps because multiple software"},{"line_number":43,"context_line":"       switches are used, or perhaps because the cloud mixes virtual"},{"line_number":44,"context_line":"       resources or physical resources of different types"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"[For the unfamiliar, vhostuser is a binding type that relates to using"},{"line_number":47,"context_line":"shared memory between the softswitch that Neutron controls and the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_70bf67fb","line":44,"range":{"start_line":32,"start_character":0,"end_line":44,"end_character":57},"in_reply_to":"ba2be162_ce9a9e13","updated":"2017-03-20 14:32:18.000000000","message":"problem 3 seems really important, buy maybe its more about not forcing the user to know about all that.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":42,"context_line":"       host and one on another - perhaps because multiple software"},{"line_number":43,"context_line":"       switches are used, or perhaps because the cloud mixes virtual"},{"line_number":44,"context_line":"       resources or physical resources of different types"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"[For the unfamiliar, vhostuser is a binding type that relates to using"},{"line_number":47,"context_line":"shared memory between the softswitch that Neutron controls and the"},{"line_number":48,"context_line":"VM that Nova runs.  It works with QEMU and uses a socket to"},{"line_number":49,"context_line":"negotiate the shared memory, and in order to work requires that the"},{"line_number":50,"context_line":"memory is in a file that can be mmap()\u0027ed by the switch.  This only"},{"line_number":51,"context_line":"happens in Nova at present when hugepages are used.  In other cases"},{"line_number":52,"context_line":"the binding cannot succeed and, at present, another binding type"},{"line_number":53,"context_line":"cannot be chosen because Neutron is unaware that it will fail.]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Use Cases"},{"line_number":56,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_7405f912","line":53,"range":{"start_line":45,"start_character":0,"end_line":53,"end_character":63},"updated":"2017-02-09 17:18:38.000000000","message":"This could probably be formatted as a citation [1]\n\n[1] http://docutils.sourceforge.net/docs/user/rst/quickref.html#citations","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"       host and one on another - perhaps because multiple software"},{"line_number":43,"context_line":"       switches are used, or perhaps because the cloud mixes virtual"},{"line_number":44,"context_line":"       resources or physical resources of different types"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"[For the unfamiliar, vhostuser is a binding type that relates to using"},{"line_number":47,"context_line":"shared memory between the softswitch that Neutron controls and the"},{"line_number":48,"context_line":"VM that Nova runs.  It works with QEMU and uses a socket to"},{"line_number":49,"context_line":"negotiate the shared memory, and in order to work requires that the"},{"line_number":50,"context_line":"memory is in a file that can be mmap()\u0027ed by the switch.  This only"},{"line_number":51,"context_line":"happens in Nova at present when hugepages are used.  In other cases"},{"line_number":52,"context_line":"the binding cannot succeed and, at present, another binding type"},{"line_number":53,"context_line":"cannot be chosen because Neutron is unaware that it will fail.]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Use Cases"},{"line_number":56,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_b02c7f4b","line":53,"range":{"start_line":45,"start_character":0,"end_line":53,"end_character":63},"in_reply_to":"1a430d35_7405f912","updated":"2017-03-20 14:32:18.000000000","message":"sure, but this is fine.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":59,"context_line":"vhostuser in some circumstances and fall back to virtio in others."},{"line_number":60,"context_line":"For instance:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    - vhostuser when hugepages are on, but"},{"line_number":63,"context_line":"    - virtio when it\u0027s off, and"},{"line_number":64,"context_line":"    - virtio when the hw_vif_type is set to an unsuitable value on the"},{"line_number":65,"context_line":"      image (since vhostuser compels a VM to use the virtio VIF type"},{"line_number":66,"context_line":"      internally)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"In this case, Nova would be able to express its preference - vhostuser"},{"line_number":69,"context_line":"when it\u0027s possible, virtio in all cases - and Neutron\u0027s code would be"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_570f1f2e","line":66,"range":{"start_line":62,"start_character":0,"end_line":66,"end_character":17},"updated":"2017-02-09 17:18:38.000000000","message":"dedent","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d870cde77b795ecc1225f335f20feb0bc61ecb3a","unresolved":false,"context_lines":[{"line_number":59,"context_line":"vhostuser in some circumstances and fall back to virtio in others."},{"line_number":60,"context_line":"For instance:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    - vhostuser when hugepages are on, but"},{"line_number":63,"context_line":"    - virtio when it\u0027s off, and"},{"line_number":64,"context_line":"    - virtio when the hw_vif_type is set to an unsuitable value on the"},{"line_number":65,"context_line":"      image (since vhostuser compels a VM to use the virtio VIF type"},{"line_number":66,"context_line":"      internally)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"In this case, Nova would be able to express its preference - vhostuser"},{"line_number":69,"context_line":"when it\u0027s possible, virtio in all cases - and Neutron\u0027s code would be"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_a12a642a","line":66,"range":{"start_line":62,"start_character":0,"end_line":66,"end_character":17},"in_reply_to":"1a1ced50_9016a3ef","updated":"2017-03-20 20:45:44.000000000","message":"For the record, \"virtio when the hw_vif_type is set to an unsuitable value on the image (since vhostuser compels a VM to use the virtio VIF type internally)\" doesn\u0027t make any sense to a lay person. Reduced, that sentence implies the following \"use vhostuser, but use virtio, but vhostuser is virtio internally\" which doesn\u0027t make logical sense. Perhaps consider placing some qualifying words and specifics to make the above read sensibly.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ef4a711d2bbd6641902081592c486e81f19b0ac","unresolved":false,"context_lines":[{"line_number":59,"context_line":"vhostuser in some circumstances and fall back to virtio in others."},{"line_number":60,"context_line":"For instance:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    - vhostuser when hugepages are on, but"},{"line_number":63,"context_line":"    - virtio when it\u0027s off, and"},{"line_number":64,"context_line":"    - virtio when the hw_vif_type is set to an unsuitable value on the"},{"line_number":65,"context_line":"      image (since vhostuser compels a VM to use the virtio VIF type"},{"line_number":66,"context_line":"      internally)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"In this case, Nova would be able to express its preference - vhostuser"},{"line_number":69,"context_line":"when it\u0027s possible, virtio in all cases - and Neutron\u0027s code would be"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba2be162_ee420267","line":66,"range":{"start_line":62,"start_character":0,"end_line":66,"end_character":17},"in_reply_to":"1a430d35_570f1f2e","updated":"2017-03-06 14:54:07.000000000","message":"\" - ...\"\nis a little nicer then \n\"    - ...\"\nbut when rendered i don\u0027t think this will effect the html at all.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"vhostuser in some circumstances and fall back to virtio in others."},{"line_number":60,"context_line":"For instance:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    - vhostuser when hugepages are on, but"},{"line_number":63,"context_line":"    - virtio when it\u0027s off, and"},{"line_number":64,"context_line":"    - virtio when the hw_vif_type is set to an unsuitable value on the"},{"line_number":65,"context_line":"      image (since vhostuser compels a VM to use the virtio VIF type"},{"line_number":66,"context_line":"      internally)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"In this case, Nova would be able to express its preference - vhostuser"},{"line_number":69,"context_line":"when it\u0027s possible, virtio in all cases - and Neutron\u0027s code would be"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_9016a3ef","line":66,"range":{"start_line":62,"start_character":0,"end_line":66,"end_character":17},"in_reply_to":"ba2be162_ee420267","updated":"2017-03-20 14:32:18.000000000","message":"yeah, this should be fine.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":66,"context_line":"      internally)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"In this case, Nova would be able to express its preference - vhostuser"},{"line_number":69,"context_line":"when it\u0027s possible, virtio in all cases - and Neutron\u0027s code would be"},{"line_number":70,"context_line":"able to choose from the available options based on what it could"},{"line_number":71,"context_line":"implement.  The interface would be the best available to both sides"},{"line_number":72,"context_line":"that satisfies the requirement."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_9730a7ea","line":69,"range":{"start_line":69,"start_character":30,"end_line":69,"end_character":38},"updated":"2017-02-09 17:18:38.000000000","message":"all other cases?","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":66,"context_line":"      internally)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"In this case, Nova would be able to express its preference - vhostuser"},{"line_number":69,"context_line":"when it\u0027s possible, virtio in all cases - and Neutron\u0027s code would be"},{"line_number":70,"context_line":"able to choose from the available options based on what it could"},{"line_number":71,"context_line":"implement.  The interface would be the best available to both sides"},{"line_number":72,"context_line":"that satisfies the requirement."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_30e88fe2","line":69,"range":{"start_line":69,"start_character":30,"end_line":69,"end_character":38},"in_reply_to":"1a430d35_9730a7ea","updated":"2017-03-20 14:32:18.000000000","message":"I think virt-io is possible in all cases, for libvirt. I guess thats what is meant here?","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d870cde77b795ecc1225f335f20feb0bc61ecb3a","unresolved":false,"context_lines":[{"line_number":74,"context_line":"Proposed change"},{"line_number":75,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"When Nova calls Neutron it will populate the vif binding:profile with"},{"line_number":78,"context_line":"a \u0027preferred_binding_types\u0027 field containing an os-vif HostInfo"},{"line_number":79,"context_line":"versioned object listing os-vif types it can make use of.  The first"},{"line_number":80,"context_line":"implementation shall consist of a set - a list of os-vif binding object"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_c1a4c0a7","line":77,"range":{"start_line":77,"start_character":0,"end_line":77,"end_character":23},"updated":"2017-03-20 20:45:44.000000000","message":"\"When Nova calls Neutron\" \u003c-- please be specific about what Nova is actually calling in Neutron. For instance, you could put:\n\n \"When Nova calls Neutron\u0027s PUT /ports REST API to update information about a port ...\"","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d870cde77b795ecc1225f335f20feb0bc61ecb3a","unresolved":false,"context_lines":[{"line_number":74,"context_line":"Proposed change"},{"line_number":75,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"When Nova calls Neutron it will populate the vif binding:profile with"},{"line_number":78,"context_line":"a \u0027preferred_binding_types\u0027 field containing an os-vif HostInfo"},{"line_number":79,"context_line":"versioned object listing os-vif types it can make use of.  The first"},{"line_number":80,"context_line":"implementation shall consist of a set - a list of os-vif binding object"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_a1b8a4e6","line":77,"range":{"start_line":77,"start_character":45,"end_line":77,"end_character":48},"updated":"2017-03-20 20:45:44.000000000","message":"s/vif/port/\n\nVIFs don\u0027t have binding profiles, ports do. Let\u0027s be as clear and explicit as possible.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":75,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"When Nova calls Neutron it will populate the vif binding:profile with"},{"line_number":78,"context_line":"a \u0027preferred_binding_types\u0027 field containing an os-vif HostInfo"},{"line_number":79,"context_line":"versioned object listing os-vif types it can make use of.  The first"},{"line_number":80,"context_line":"implementation shall consist of a set - a list of os-vif binding object"},{"line_number":81,"context_line":"types with usable versions, with no consideration"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_901ce3c2","line":78,"range":{"start_line":78,"start_character":3,"end_line":78,"end_character":26},"updated":"2017-03-20 14:32:18.000000000","message":"I am curious why this is not a top level key here. I guess this makes it possible in a backwards compatible kind of way, but it seems a touch odd.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":75,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"When Nova calls Neutron it will populate the vif binding:profile with"},{"line_number":78,"context_line":"a \u0027preferred_binding_types\u0027 field containing an os-vif HostInfo"},{"line_number":79,"context_line":"versioned object listing os-vif types it can make use of.  The first"},{"line_number":80,"context_line":"implementation shall consist of a set - a list of os-vif binding object"},{"line_number":81,"context_line":"types with usable versions, with no consideration"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_d79eafb7","line":78,"range":{"start_line":78,"start_character":3,"end_line":78,"end_character":26},"updated":"2017-02-09 17:18:38.000000000","message":"format as ``code``","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d870cde77b795ecc1225f335f20feb0bc61ecb3a","unresolved":false,"context_lines":[{"line_number":75,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"When Nova calls Neutron it will populate the vif binding:profile with"},{"line_number":78,"context_line":"a \u0027preferred_binding_types\u0027 field containing an os-vif HostInfo"},{"line_number":79,"context_line":"versioned object listing os-vif types it can make use of.  The first"},{"line_number":80,"context_line":"implementation shall consist of a set - a list of os-vif binding object"},{"line_number":81,"context_line":"types with usable versions, with no consideration"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_017978f6","line":78,"range":{"start_line":78,"start_character":3,"end_line":78,"end_character":26},"in_reply_to":"1a1ced50_901ce3c2","updated":"2017-03-20 20:45:44.000000000","message":"s/preferred_binding_types/supported_binding_types/\n\nSee note below on removing the whole \"preferred\" notion from this negotiation. Let Nova say what it supports and let Neutron decide what\u0027s best...","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":77,"context_line":"When Nova calls Neutron it will populate the vif binding:profile with"},{"line_number":78,"context_line":"a \u0027preferred_binding_types\u0027 field containing an os-vif HostInfo"},{"line_number":79,"context_line":"versioned object listing os-vif types it can make use of.  The first"},{"line_number":80,"context_line":"implementation shall consist of a set - a list of os-vif binding object"},{"line_number":81,"context_line":"types with usable versions, with no consideration"},{"line_number":82,"context_line":"to preference and no additional detail - but with the intention that this"},{"line_number":83,"context_line":"object may be refined and enhanced in the future to include other"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_f0fef769","line":80,"range":{"start_line":80,"start_character":31,"end_line":80,"end_character":38},"updated":"2017-03-20 14:32:18.000000000","message":"Interesting, I was expecting an ordered list here.\n\nI am unsure were the preference would come from, maybe the flavor config? Or is it something neutron already can decide about, based on what is available on that host? or something like that?","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d870cde77b795ecc1225f335f20feb0bc61ecb3a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"When Nova calls Neutron it will populate the vif binding:profile with"},{"line_number":78,"context_line":"a \u0027preferred_binding_types\u0027 field containing an os-vif HostInfo"},{"line_number":79,"context_line":"versioned object listing os-vif types it can make use of.  The first"},{"line_number":80,"context_line":"implementation shall consist of a set - a list of os-vif binding object"},{"line_number":81,"context_line":"types with usable versions, with no consideration"},{"line_number":82,"context_line":"to preference and no additional detail - but with the intention that this"},{"line_number":83,"context_line":"object may be refined and enhanced in the future to include other"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_a1eb44af","line":80,"range":{"start_line":80,"start_character":31,"end_line":80,"end_character":38},"in_reply_to":"1a1ced50_f0fef769","updated":"2017-03-20 20:45:44.000000000","message":"I think what Ian\u0027s trying to say here is that Nova isn\u0027t the one that should be telling Neutron what its preferences are. Instead, just tell Neutron what Nova can support and let Neutron decide what\u0027s best.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":79,"context_line":"versioned object listing os-vif types it can make use of.  The first"},{"line_number":80,"context_line":"implementation shall consist of a set - a list of os-vif binding object"},{"line_number":81,"context_line":"types with usable versions, with no consideration"},{"line_number":82,"context_line":"to preference and no additional detail - but with the intention that this"},{"line_number":83,"context_line":"object may be refined and enhanced in the future to include other"},{"line_number":84,"context_line":"information relevant to Neutron\u0027s choice and the form of return"},{"line_number":85,"context_line":"value it will use."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The Neutron driver should treat this list of types as the supported and"},{"line_number":88,"context_line":"preferred list of types, and should recognise that only the specified"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_d02e5bf9","line":85,"range":{"start_line":82,"start_character":38,"end_line":85,"end_character":18},"updated":"2017-03-20 14:32:18.000000000","message":"Part of me wants to exclude that information here. It seems a touch confusing.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":84,"context_line":"information relevant to Neutron\u0027s choice and the form of return"},{"line_number":85,"context_line":"value it will use."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The Neutron driver should treat this list of types as the supported and"},{"line_number":88,"context_line":"preferred list of types, and should recognise that only the specified"},{"line_number":89,"context_line":"version formats will be acceptable to Nova.  It should recognise"},{"line_number":90,"context_line":"that the types are specific to each attempt at binding - they will"},{"line_number":91,"context_line":"not necessarily be identical from one binding to the next, based"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_90730315","line":88,"range":{"start_line":87,"start_character":68,"end_line":88,"end_character":9},"updated":"2017-03-20 14:32:18.000000000","message":"What do you mean by preferred here, if its considered as a set?","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d870cde77b795ecc1225f335f20feb0bc61ecb3a","unresolved":false,"context_lines":[{"line_number":84,"context_line":"information relevant to Neutron\u0027s choice and the form of return"},{"line_number":85,"context_line":"value it will use."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The Neutron driver should treat this list of types as the supported and"},{"line_number":88,"context_line":"preferred list of types, and should recognise that only the specified"},{"line_number":89,"context_line":"version formats will be acceptable to Nova.  It should recognise"},{"line_number":90,"context_line":"that the types are specific to each attempt at binding - they will"},{"line_number":91,"context_line":"not necessarily be identical from one binding to the next, based"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_81ff2866","line":88,"range":{"start_line":87,"start_character":68,"end_line":88,"end_character":9},"in_reply_to":"1a1ced50_90730315","updated":"2017-03-20 20:45:44.000000000","message":"Yeah, recommend removing \"and preferred\"","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":91,"context_line":"not necessarily be identical from one binding to the next, based"},{"line_number":92,"context_line":"on information available to Nova about (for instance) which"},{"line_number":93,"context_line":"binding types will work, not even"},{"line_number":94,"context_line":"on another port for the same VM on the same host."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"The name of the type, in the nature of os-vif, indicates the contract"},{"line_number":97,"context_line":"between Nova and Neutron"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_10ec738e","line":94,"updated":"2017-03-20 14:32:18.000000000","message":"Are you just trying to say the information is unique to the VM and the host its on, and by implication, it can\u0027t be cached in any way?","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":98,"context_line":"that determines where packets will land (e.g. a TAP device, a bridge,"},{"line_number":99,"context_line":"an OVS port; and potentially, agreement on the naming of that element"},{"line_number":100,"context_line":"or other identifying information)."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The preferred_types should be treated by Nova as a recommendation and"},{"line_number":104,"context_line":"not a requirement"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_975ee710","line":101,"updated":"2017-02-09 17:18:38.000000000","message":"nit: extra newline","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":100,"context_line":"or other identifying information)."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The preferred_types should be treated by Nova as a recommendation and"},{"line_number":104,"context_line":"not a requirement"},{"line_number":105,"context_line":"to Neutron - the version of Neutron running may not understand what"},{"line_number":106,"context_line":"it\u0027s being told.  As such, Nova should assume that it may be ignored,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_57ab9fd6","line":103,"range":{"start_line":103,"start_character":4,"end_line":103,"end_character":19},"updated":"2017-02-09 17:18:38.000000000","message":"``preferred_binding_types``","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":123,"context_line":"      if the binding:profile expresses a desire for SR-IOV then the"},{"line_number":124,"context_line":"      Neutron driver may choose to only support an SR-IOV binding and"},{"line_number":125,"context_line":"      return that (providing Nova is willing to accept it)."},{"line_number":126,"context_line":"      In summary: Neutron will respect the will of Nova in all things."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    - Neutron will return binding_failed if no type given is"},{"line_number":129,"context_line":"      supported.  In summary: dammit."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_8b73d614","line":126,"updated":"2017-03-20 14:32:18.000000000","message":"The aim here is to start returning the os-vif objects we say we support.\n\nI think we need to clear up the definition of \"preference\" here here. os-vif list should only include sr-iov as a valid option, if thats what we want to day.\n\nBy respect the will, I guess you mean it will fail if it can\u0027t provide a compatible os-vif type, which you cover later. Thats probably the main point.\n\nI do wonder if we should talk about the version negotiation around the os-vif types as well, just for clarity.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":125,"context_line":"      return that (providing Nova is willing to accept it)."},{"line_number":126,"context_line":"      In summary: Neutron will respect the will of Nova in all things."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    - Neutron will return binding_failed if no type given is"},{"line_number":129,"context_line":"      supported.  In summary: dammit."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Neutron can be trusted to use a preconfigured type if no preference is"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_b735a3a9","line":128,"range":{"start_line":128,"start_character":26,"end_line":128,"end_character":40},"updated":"2017-02-09 17:18:38.000000000","message":"``code``","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":106,"context_line":"it\u0027s being told.  As such, Nova should assume that it may be ignored,"},{"line_number":107,"context_line":"resulting in the following three rules:"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    - Older Neutron implementations will ignore this and use a"},{"line_number":110,"context_line":"      different binding type or incompatible version. Nova must reject"},{"line_number":111,"context_line":"      any binding that is not"},{"line_number":112,"context_line":"      in the list (because it has already said it is not supported)"},{"line_number":113,"context_line":"      and otherwise bind using that binding type given.  In summary:"},{"line_number":114,"context_line":"      Neutron will"},{"line_number":115,"context_line":"      return whatever it returns and Nova will confirm that it\u0027s"},{"line_number":116,"context_line":"      acceptable and not evil.  This maintains current behaviour."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    - Newer Neutron implementations will change behaviour.  When they"},{"line_number":119,"context_line":"      see this value, they will use this in determining a binding type"},{"line_number":120,"context_line":"      to use.  They will choose the first binding type they support."},{"line_number":121,"context_line":"      Note that the binding types supported by Neutron may change due"},{"line_number":122,"context_line":"      to additional information in the binding:profile; for instance,"},{"line_number":123,"context_line":"      if the binding:profile expresses a desire for SR-IOV then the"},{"line_number":124,"context_line":"      Neutron driver may choose to only support an SR-IOV binding and"},{"line_number":125,"context_line":"      return that (providing Nova is willing to accept it)."},{"line_number":126,"context_line":"      In summary: Neutron will respect the will of Nova in all things."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    - Neutron will return binding_failed if no type given is"},{"line_number":129,"context_line":"      supported.  In summary: dammit."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Neutron can be trusted to use a preconfigured type if no preference is"},{"line_number":132,"context_line":"passed, maintaining historical behaviour in the face of a hypervisor"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_57c0ff7c","line":129,"range":{"start_line":109,"start_character":0,"end_line":129,"end_character":37},"updated":"2017-02-09 17:18:38.000000000","message":"dedent","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":140,"context_line":"operator choice for an extended period) and vice-versa."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"On implementation, the plan is to write"},{"line_number":143,"context_line":"osvif.filter_vif_type(instance_context) on the os-vif plugging types,"},{"line_number":144,"context_line":"taking versioned-object context information about the VM and the machine."},{"line_number":145,"context_line":"The VIF type code can interpret for itself whether (given host-specific"},{"line_number":146,"context_line":"details, and also VM-specific details such as the presence of hugepages"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_d72f8f3c","line":143,"range":{"start_line":143,"start_character":0,"end_line":143,"end_character":39},"updated":"2017-02-09 17:18:38.000000000","message":"``code``","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d870cde77b795ecc1225f335f20feb0bc61ecb3a","unresolved":false,"context_lines":[{"line_number":140,"context_line":"operator choice for an extended period) and vice-versa."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"On implementation, the plan is to write"},{"line_number":143,"context_line":"osvif.filter_vif_type(instance_context) on the os-vif plugging types,"},{"line_number":144,"context_line":"taking versioned-object context information about the VM and the machine."},{"line_number":145,"context_line":"The VIF type code can interpret for itself whether (given host-specific"},{"line_number":146,"context_line":"details, and also VM-specific details such as the presence of hugepages"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_a47272ab","line":143,"range":{"start_line":143,"start_character":0,"end_line":143,"end_character":39},"in_reply_to":"1a430d35_d72f8f3c","updated":"2017-03-20 20:45:44.000000000","message":"I\u0027m not entirely sure what you mean by \"osvif.filter_vif_type(instance_context)\"?\n\nAre you referring to writing a new os_vif module-level function that would accept some sort of instance \"context\" object and would return a list of VIF plugins that the host supports?","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":145,"context_line":"The VIF type code can interpret for itself whether (given host-specific"},{"line_number":146,"context_line":"details, and also VM-specific details such as the presence of hugepages"},{"line_number":147,"context_line":"or the interface backends that the hypervisor can use for this VM and"},{"line_number":148,"context_line":"interface) whether the VIF"},{"line_number":149,"context_line":"plugging type will be usable in this context.  If it returns true, the"},{"line_number":150,"context_line":"VIF type will be included in the list; if false, Neutron will not"},{"line_number":151,"context_line":"be informed.  A new method on HostInfo will be used to filter all VIF"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_9716e7ef","line":148,"range":{"start_line":148,"start_character":11,"end_line":148,"end_character":18},"updated":"2017-02-09 17:18:38.000000000","message":"duplicate","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":142,"context_line":"On implementation, the plan is to write"},{"line_number":143,"context_line":"osvif.filter_vif_type(instance_context) on the os-vif plugging types,"},{"line_number":144,"context_line":"taking versioned-object context information about the VM and the machine."},{"line_number":145,"context_line":"The VIF type code can interpret for itself whether (given host-specific"},{"line_number":146,"context_line":"details, and also VM-specific details such as the presence of hugepages"},{"line_number":147,"context_line":"or the interface backends that the hypervisor can use for this VM and"},{"line_number":148,"context_line":"interface) whether the VIF"},{"line_number":149,"context_line":"plugging type will be usable in this context.  If it returns true, the"},{"line_number":150,"context_line":"VIF type will be included in the list; if false, Neutron will not"},{"line_number":151,"context_line":"be informed.  A new method on HostInfo will be used to filter all VIF"},{"line_number":152,"context_line":"types available for the host to determine supported"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_b79f6364","line":149,"range":{"start_line":145,"start_character":0,"end_line":149,"end_character":46},"updated":"2017-02-09 17:18:38.000000000","message":"How about:\n\n\u003e The VIF type code can interpret for itself whether the VIF plugging type will be usable in this context. This will be based on host- and VM-specific details such as the presence of hugepages or the interface backends that the hypervisor can use for this VM and interface.","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":162,"context_line":"use a vhostuser binding when the Nova VM cannot make use of it."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"The code change will involve changing the drivers to pass the"},{"line_number":165,"context_line":"preferred_binding_type information to Neutron during the binding"},{"line_number":166,"context_line":"process.  Given the current use of the os-vif lib, this is a matter of"},{"line_number":167,"context_line":"selecting types it has provided that may be used, discarding"},{"line_number":168,"context_line":"unworkable ones and letting the remainder be preference-ordered."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_5791df51","line":165,"range":{"start_line":165,"start_character":0,"end_line":165,"end_character":22},"updated":"2017-02-09 17:18:38.000000000","message":"``code``","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d870cde77b795ecc1225f335f20feb0bc61ecb3a","unresolved":false,"context_lines":[{"line_number":165,"context_line":"preferred_binding_type information to Neutron during the binding"},{"line_number":166,"context_line":"process.  Given the current use of the os-vif lib, this is a matter of"},{"line_number":167,"context_line":"selecting types it has provided that may be used, discarding"},{"line_number":168,"context_line":"unworkable ones and letting the remainder be preference-ordered."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Alternatives"},{"line_number":171,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_44de1e12","line":168,"updated":"2017-03-20 20:45:44.000000000","message":"So, were you thinking that the compute manager would call things kind of like in this pseudo-code?\n\n import os_vif\n ...\n def _spawn(self, instance, network_info, ...):\n     host_info \u003d os_vif.objects.HostInfo(...)\n     all_vif_plugins \u003d os_vif.plugins()\n     supported_vif_types \u003d [\n         plugin.supported_vif_types(instance, host_info)\n         for plugin in all_vif_plugins\n     ]\n     chosen_vif_types \u003d {}\n     for p in network_info[\u0027ports\u0027]:\n         p_id \u003d p[\u0027id\u0027]\n         np \u003d neutron_client.ports.find(p_id)\n         chosen_vif_types[p_id] \u003d np.choose_vif_type(supported_vif_types)\n\n     ...\n     for p in network_info[\u0027ports\u0027]:\n         # Construct the vif plugin/type according to what Neutron chose","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"1. incorporate a binding_type list for os-vif types, a validation step"},{"line_number":257,"context_line":"   (\u0027will the VM support this type\u0027) and a mechanism for preference"},{"line_number":258,"context_line":"   ordering"},{"line_number":259,"context_line":"2. Add code to pass this to Neutron and to validate the returned"},{"line_number":260,"context_line":"   binding from Neutron is within the list"},{"line_number":261,"context_line":"3. Elsewhere, add respect to at least one driver in Neutron for"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_ef69b5bf","line":258,"updated":"2017-03-20 14:32:18.000000000","message":"I think we should describe how you intent to change this interface:\nhttps://github.com/openstack/os-vif/blob/master/os_vif/__init__.py#L121\n\nit seems like we need to be passing more data into that method?","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":257,"context_line":"   (\u0027will the VM support this type\u0027) and a mechanism for preference"},{"line_number":258,"context_line":"   ordering"},{"line_number":259,"context_line":"2. Add code to pass this to Neutron and to validate the returned"},{"line_number":260,"context_line":"   binding from Neutron is within the list"},{"line_number":261,"context_line":"3. Elsewhere, add respect to at least one driver in Neutron for"},{"line_number":262,"context_line":"   the preferred_binding_type list, along with the ML2 driver"},{"line_number":263,"context_line":"   interface and the plugin interface"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_afa6dd0d","line":260,"updated":"2017-03-20 14:32:18.000000000","message":"Can\u0027t you do this using the existing interface?","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":260,"context_line":"   binding from Neutron is within the list"},{"line_number":261,"context_line":"3. Elsewhere, add respect to at least one driver in Neutron for"},{"line_number":262,"context_line":"   the preferred_binding_type list, along with the ML2 driver"},{"line_number":263,"context_line":"   interface and the plugin interface"},{"line_number":264,"context_line":"4. Test"},{"line_number":265,"context_line":"5. In the Other Place, fix all remaining in tree code"},{"line_number":266,"context_line":"6. Extol the virtues of the new interface to the out of tree"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_ef97f58d","line":263,"updated":"2017-03-20 14:32:18.000000000","message":"Do you mean implement the vhostuser negotiation?","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d23f7e9561631e3333bb49a8704f4c7ec8316d6b","unresolved":false,"context_lines":[{"line_number":262,"context_line":"   the preferred_binding_type list, along with the ML2 driver"},{"line_number":263,"context_line":"   interface and the plugin interface"},{"line_number":264,"context_line":"4. Test"},{"line_number":265,"context_line":"5. In the Other Place, fix all remaining in tree code"},{"line_number":266,"context_line":"6. Extol the virtues of the new interface to the out of tree"},{"line_number":267,"context_line":"   Neutron driver maintainers"},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_2fbbcd28","line":265,"updated":"2017-03-20 14:32:18.000000000","message":"What does this mean? Seems we are mixing Nova and neutron work in here maybe?","commit_id":"7a835c264095682ef16446ef569b457987ec050e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41541aa9c187f3c0bb71f59016c6ffd33bda1466","unresolved":false,"context_lines":[{"line_number":294,"context_line":"unsupported and out-of-list but known binding types."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"Intel have previously agreed that the hugepage dependent change"},{"line_number":297,"context_line":"mentioned above will be tested by their 3rd party CI."},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"Documentation Impact"},{"line_number":300,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a430d35_d7b94fcd","line":297,"range":{"start_line":297,"start_character":40,"end_line":297,"end_character":43},"updated":"2017-02-09 17:18:38.000000000","message":"third","commit_id":"7a835c264095682ef16446ef569b457987ec050e"}]}
