)]}'
{"specs/liberty/approved/nova-neutron-binding-negotiation.rst":[{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"1f3805d4765547888e2114ee342e7034d650628a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"This leaves three problems:"},{"line_number":33,"context_line":"    1. Nova cannot say that binding types are sometimes available and"},{"line_number":34,"context_line":"       sometimes not - for instance, vhostuser is available when a VM"},{"line_number":35,"context_line":"       is started with a hugepage flavor and not otherwise, or"},{"line_number":36,"context_line":"       vhostuser with a compute host running KVM and something else"},{"line_number":37,"context_line":"       for a different compute host running a different hypervisor."},{"line_number":38,"context_line":"    2. Neutron cannot easily provide different binding types in"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_32c2f1e9","line":35,"updated":"2015-06-18 20:40:37.000000000","message":"Can we get a link or something for what vhostuser is? I saw a Nova spec come up in the google search results, but links are always helpful","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"02f2e163e41f6a7a144b371ec4f0448ac598871b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"This leaves three problems:"},{"line_number":33,"context_line":"    1. Nova cannot say that binding types are sometimes available and"},{"line_number":34,"context_line":"       sometimes not - for instance, vhostuser is available when a VM"},{"line_number":35,"context_line":"       is started with a hugepage flavor and not otherwise, or"},{"line_number":36,"context_line":"       vhostuser with a compute host running KVM and something else"},{"line_number":37,"context_line":"       for a different compute host running a different hypervisor."},{"line_number":38,"context_line":"    2. Neutron cannot easily provide different binding types in"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_883dc92c","line":35,"in_reply_to":"fa32b979_32c2f1e9","updated":"2015-06-18 22:59:17.000000000","message":"http://lmgtfy.com/?q\u003dvhostuser","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"66129c1cbef3b9726fabab99d9597baa5a328d14","unresolved":false,"context_lines":[{"line_number":32,"context_line":"This leaves three problems:"},{"line_number":33,"context_line":"    1. Nova cannot say that binding types are sometimes available and"},{"line_number":34,"context_line":"       sometimes not - for instance, vhostuser is available when a VM"},{"line_number":35,"context_line":"       is started with a hugepage flavor and not otherwise, or"},{"line_number":36,"context_line":"       vhostuser with a compute host running KVM and something else"},{"line_number":37,"context_line":"       for a different compute host running a different hypervisor."},{"line_number":38,"context_line":"    2. Neutron cannot easily provide different binding types in"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_8e707173","line":35,"in_reply_to":"fa32b979_883dc92c","updated":"2015-06-18 23:51:34.000000000","message":"Yes, but that\u0027s not the point. I\u0027m asking you to actually include a link in the text - not be cheeky.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9d6e841513bddfc54aff562d08d69b12aa83acfc","unresolved":false,"context_lines":[{"line_number":32,"context_line":"This leaves three problems:"},{"line_number":33,"context_line":"    1. Nova cannot say that binding types are sometimes available and"},{"line_number":34,"context_line":"       sometimes not - for instance, vhostuser is available when a VM"},{"line_number":35,"context_line":"       is started with a hugepage flavor and not otherwise, or"},{"line_number":36,"context_line":"       vhostuser with a compute host running KVM and something else"},{"line_number":37,"context_line":"       for a different compute host running a different hypervisor."},{"line_number":38,"context_line":"    2. Neutron cannot easily provide different binding types in"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_a89d1f0c","line":35,"in_reply_to":"fa32b979_8e707173","updated":"2015-06-19 09:06:52.000000000","message":"Vhost user is a network backend in QEMU that instead of being connected to the kernel network stack via a TAP device, instead allows an external process to provide the network connectivity. As part of this, the external process needs to be able to map QEMU guest RAM, which (currently) requires that the guest be using huge pages. Details of just what vhostuser is aren\u0027t really relevant to the decision about approval of this spec - it suffices to just indicate that there are some VIF types that may be conditionally available for use depending on guest config, which is what is written here.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"1f3805d4765547888e2114ee342e7034d650628a","unresolved":false,"context_lines":[{"line_number":37,"context_line":"       for a different compute host running a different hypervisor."},{"line_number":38,"context_line":"    2. Neutron cannot easily provide different binding types in"},{"line_number":39,"context_line":"       different circumstances - for instance, vhostuser in some cases"},{"line_number":40,"context_line":"       and virtio in others based on a user expressed preference"},{"line_number":41,"context_line":"    3. Nova must have code added for new binding types that is in"},{"line_number":42,"context_line":"       perfect sync with Neutron; Neutron has to be correctly"},{"line_number":43,"context_line":"       configured to dodge absent binding_types"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_d2b4e582","line":40,"updated":"2015-06-18 20:40:37.000000000","message":"Do we have users that will be directly expressing a preference for virtio vs. vhostuser? Or is it more through a instance flavor type that the user picks that would make this choice? This may be worth expanding on a bit.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e0d5c9663ad989d9a5e6530082434dfca0a7438e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"       for a different compute host running a different hypervisor."},{"line_number":38,"context_line":"    2. Neutron cannot easily provide different binding types in"},{"line_number":39,"context_line":"       different circumstances - for instance, vhostuser in some cases"},{"line_number":40,"context_line":"       and virtio in others based on a user expressed preference"},{"line_number":41,"context_line":"    3. Nova must have code added for new binding types that is in"},{"line_number":42,"context_line":"       perfect sync with Neutron; Neutron has to be correctly"},{"line_number":43,"context_line":"       configured to dodge absent binding_types"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_d4631cdc","line":40,"in_reply_to":"fa32b979_08f45958","updated":"2015-06-22 12:06:51.000000000","message":"from a guest point of view it is not detectable to my knowledge which vhost backend is used. vhost-user was developed to be a transparent userspace replacement for kernel vhost. as such it is not expected that a user would expresses a preference for vhost-user vs kernel vhost directly. \n\nthey may express other requirements such as bandwidth with via qos or multi que support that could be used to select which back-end is more appropriate but at present there is no mechanism to directly request either backend implementation.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"02f2e163e41f6a7a144b371ec4f0448ac598871b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"       for a different compute host running a different hypervisor."},{"line_number":38,"context_line":"    2. Neutron cannot easily provide different binding types in"},{"line_number":39,"context_line":"       different circumstances - for instance, vhostuser in some cases"},{"line_number":40,"context_line":"       and virtio in others based on a user expressed preference"},{"line_number":41,"context_line":"    3. Nova must have code added for new binding types that is in"},{"line_number":42,"context_line":"       perfect sync with Neutron; Neutron has to be correctly"},{"line_number":43,"context_line":"       configured to dodge absent binding_types"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_08f45958","line":40,"in_reply_to":"fa32b979_d2b4e582","updated":"2015-06-18 22:59:17.000000000","message":"Well, there are examples of why you already do - for instance, mixed-mode SRIOV and non-SRIOV deployments do exactly this today, but do it by saying in the binding_profile that something special is happening and Neutron having absolute faith that Nova will return the right thing.  \n\nAnother case,  separate from the above, is where different machines run different hypervisors - vhostuser is great for supporting KVMs but not so good for older KVMs or pretty much anything else.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"1f3805d4765547888e2114ee342e7034d650628a","unresolved":false,"context_lines":[{"line_number":67,"context_line":"two perfectly synced pieces of code to create arbitrary name values on"},{"line_number":68,"context_line":"both sides, the name generation is the sole responsibility of Neutron."},{"line_number":69,"context_line":"This actually works today, but the older plugging types don\u0027t make use"},{"line_number":70,"context_line":"of the facility; we propose making this the default."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Project Priority"},{"line_number":73,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_f2b7a982","line":70,"updated":"2015-06-18 20:40:37.000000000","message":"Amen - this is good","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"c73cd7329c1a833626e171856347c16e7188c375","unresolved":false,"context_lines":[{"line_number":81,"context_line":"a \u0027preferred_binding_types\u0027 field containing a comma separated list,"},{"line_number":82,"context_line":"(with optional, ignored spaces) of binding types it can make use of"},{"line_number":83,"context_line":"to Neutron.  The Neutron driver should treat this list of types as the"},{"line_number":84,"context_line":"supported and preferred list of types."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The binding types in the list will consist of a bracketed list"},{"line_number":87,"context_line":"containing binding_type strings.  The name of the binding_type"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_0c3e1b28","line":84,"updated":"2015-06-23 14:37:50.000000000","message":"Do you mean VIF type names here?  I.e. \u0027ovs\u0027, \u0027ivs\u0027 etc., per the values of the VIF_TYPE_* constants in nova/network/model.py.\n\nWith the os-vif plan, I guess this would change to a list of names like \u0027VIFConfigBridge\u0027, \u0027VIFConfigEthernet\u0027 etc.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"d642cc2fd64e73acad3c7562d22266534643be4a","unresolved":false,"context_lines":[{"line_number":81,"context_line":"a \u0027preferred_binding_types\u0027 field containing a comma separated list,"},{"line_number":82,"context_line":"(with optional, ignored spaces) of binding types it can make use of"},{"line_number":83,"context_line":"to Neutron.  The Neutron driver should treat this list of types as the"},{"line_number":84,"context_line":"supported and preferred list of types."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The binding types in the list will consist of a bracketed list"},{"line_number":87,"context_line":"containing binding_type strings.  The name of the binding_type"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_6764a021","line":84,"in_reply_to":"fa32b979_0c3e1b28","updated":"2015-06-23 14:44:51.000000000","message":"The details of what the vif type names look like don\u0027t especially matter - the API would simply consider them to be opaque string identifiers. You are right though, the legacy VIF type names we already know \u0027ovs\u0027, \u0027ivs\u0027 etc. For the os-vif plan, I suggested the names would simply match the versioned object name, so VIFConfigBridge, etc as you suggest.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"10574f5d9e201dc0f2747c22497e7464d99c6916","unresolved":false,"context_lines":[{"line_number":82,"context_line":"(with optional, ignored spaces) of binding types it can make use of"},{"line_number":83,"context_line":"to Neutron.  The Neutron driver should treat this list of types as the"},{"line_number":84,"context_line":"supported and preferred list of types."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The binding types in the list will consist of a bracketed list"},{"line_number":87,"context_line":"containing binding_type strings.  The name of the binding_type"},{"line_number":88,"context_line":"indicates the contract between Nova and Neutron that determines where"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_7ee871b3","line":85,"updated":"2015-06-24 16:41:15.000000000","message":"Just want to throw some thoughts here.\ngiven a compute node, would things like the type of hypervisor or if huge page is on have been determined after it boots up?  Instead of passing this information every time nova binds a port, I think that this information (which may also include the VIF type names supported by nova compute running on this host) can be passed by the neutron agent at its registration time. Neutron can use this information to aid in the determination of VIF types.\n\nI think that this would make nova/neutron interaction simpler, and would solve the use case described in this spec.\n\n\nIt also comes down to how nova compute determines the preferred_binding_types, which seems to be missing in this spec. If the list is generated at run time (for example, based on particular information about an instance), then certainly it requires passing this info every time.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"d7cf77fd6ce450fe9ec5a5f40d0f8b7cb6584eb8","unresolved":false,"context_lines":[{"line_number":82,"context_line":"(with optional, ignored spaces) of binding types it can make use of"},{"line_number":83,"context_line":"to Neutron.  The Neutron driver should treat this list of types as the"},{"line_number":84,"context_line":"supported and preferred list of types."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The binding types in the list will consist of a bracketed list"},{"line_number":87,"context_line":"containing binding_type strings.  The name of the binding_type"},{"line_number":88,"context_line":"indicates the contract between Nova and Neutron that determines where"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_1fdeffdc","line":85,"in_reply_to":"fa32b979_7ee871b3","updated":"2015-06-24 17:25:42.000000000","message":"I\u0027d expect the list of preferred vif types to be generated by a new API in the nova/virt/driver.py class - ie nova would query the hypervisor version to get this listing. It might not change at runtime in the common case, but I think it is unwise to bet on that long term. It is much more future proof to allow it to be dynamically provided at time of use IMHO.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"c73cd7329c1a833626e171856347c16e7188c375","unresolved":false,"context_lines":[{"line_number":88,"context_line":"indicates the contract between Nova and Neutron that determines where"},{"line_number":89,"context_line":"packets will land (e.g. a TAP device, a bridge, an OVS port; and"},{"line_number":90,"context_line":"potentially, agreement on the naming of that element or other"},{"line_number":91,"context_line":"identifying information), as it does now."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"The preferred_binding_types are a recommendation and not a requirement"},{"line_number":94,"context_line":"to Neutron.  As such, Nova should assume that it may be ignored,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_0c537b6c","line":91,"updated":"2015-06-23 14:37:50.000000000","message":"Can you give an example?  I got lost at \u0027bracketed\u0027.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"1f3805d4765547888e2114ee342e7034d650628a","unresolved":false,"context_lines":[{"line_number":95,"context_line":"resulting in the following three rules:"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    - Older Neutron implementations will ignore this and return a"},{"line_number":98,"context_line":"      binding type from the currently existing set. Nova must reject"},{"line_number":99,"context_line":"      any binding that is not in the list and otherwise bind using"},{"line_number":100,"context_line":"      that binding_type.  Nova can assume that Neutron has chosen its"},{"line_number":101,"context_line":"      first supported value from the list of preferences provided."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_92b3bd97","line":98,"updated":"2015-06-18 20:40:37.000000000","message":"I wonder if we need to worry about (if I understand correctly) having Nova interact with an older version of Neutron that doesn\u0027t support this binding type negotiation? The only thing I can think of is partial upgrades or during an upgrade - but I haven\u0027t thought of all the interactions.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"66129c1cbef3b9726fabab99d9597baa5a328d14","unresolved":false,"context_lines":[{"line_number":95,"context_line":"resulting in the following three rules:"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    - Older Neutron implementations will ignore this and return a"},{"line_number":98,"context_line":"      binding type from the currently existing set. Nova must reject"},{"line_number":99,"context_line":"      any binding that is not in the list and otherwise bind using"},{"line_number":100,"context_line":"      that binding_type.  Nova can assume that Neutron has chosen its"},{"line_number":101,"context_line":"      first supported value from the list of preferences provided."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_6e23ad56","line":98,"in_reply_to":"fa32b979_08c219e9","updated":"2015-06-18 23:51:34.000000000","message":"My question - again - is if we NEED this rule? Are there real scenarios where we will have an older Neutron talking to a newer Nova and vice versa?","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"84ce65fd540eadbc43e756abd4339212191f6e71","unresolved":false,"context_lines":[{"line_number":95,"context_line":"resulting in the following three rules:"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    - Older Neutron implementations will ignore this and return a"},{"line_number":98,"context_line":"      binding type from the currently existing set. Nova must reject"},{"line_number":99,"context_line":"      any binding that is not in the list and otherwise bind using"},{"line_number":100,"context_line":"      that binding_type.  Nova can assume that Neutron has chosen its"},{"line_number":101,"context_line":"      first supported value from the list of preferences provided."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_9c8f24cc","line":98,"in_reply_to":"fa32b979_28802f8b","updated":"2015-06-19 19:53:55.000000000","message":"I\u0027m being defensive, but the scenarios are twofold:\n\n1. in a hitless upgrade, one is always upgraded first and the other second, so +1/-1 compatibility is pretty much a requirement in all circumstnces\n2. evil evil people will insist on running mixed version platoforms.  (They\u0027re not *really* evil, obviously - they\u0027re not running nova-network - but I think it\u0027s worth keeping out of their way because ninja hitmen.)","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9d6e841513bddfc54aff562d08d69b12aa83acfc","unresolved":false,"context_lines":[{"line_number":95,"context_line":"resulting in the following three rules:"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    - Older Neutron implementations will ignore this and return a"},{"line_number":98,"context_line":"      binding type from the currently existing set. Nova must reject"},{"line_number":99,"context_line":"      any binding that is not in the list and otherwise bind using"},{"line_number":100,"context_line":"      that binding_type.  Nova can assume that Neutron has chosen its"},{"line_number":101,"context_line":"      first supported value from the list of preferences provided."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_28802f8b","line":98,"in_reply_to":"fa32b979_6e23ad56","updated":"2015-06-19 09:06:52.000000000","message":"Yes, it is always a requirement that Nova be able to talk to older Neutron in a back compatible manner. We do not expect upgrades to be done lock-step across all nova services - there will often be times when we\u0027re running mis-matched versions in middle of upgrades that can take considerable time. The converse is also true, old Nova must be able to talk to new Neutron without failing.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"02f2e163e41f6a7a144b371ec4f0448ac598871b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"resulting in the following three rules:"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    - Older Neutron implementations will ignore this and return a"},{"line_number":98,"context_line":"      binding type from the currently existing set. Nova must reject"},{"line_number":99,"context_line":"      any binding that is not in the list and otherwise bind using"},{"line_number":100,"context_line":"      that binding_type.  Nova can assume that Neutron has chosen its"},{"line_number":101,"context_line":"      first supported value from the list of preferences provided."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_08c219e9","line":98,"in_reply_to":"fa32b979_92b3bd97","updated":"2015-06-18 22:59:17.000000000","message":"I\u0027m sorry, this paragraph is saying precisely what you ask - what happens when Nova talks to a Neutron that doesn\u0027t support binding_type and ignores it - and says what happens.  Would you prefer this to be in a bigger font?","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":6681,"name":"Brent Eagles","email":"beagles@redhat.com","username":"beagles"},"change_message_id":"a91aab59610cd0c0d765a3ae85602b29d075d94b","unresolved":false,"context_lines":[{"line_number":99,"context_line":"      any binding that is not in the list and otherwise bind using"},{"line_number":100,"context_line":"      that binding_type.  Nova can assume that Neutron has chosen its"},{"line_number":101,"context_line":"      first supported value from the list of preferences provided."},{"line_number":102,"context_line":"      This maintains current behaviour."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    - Newer Neutron implementations will change behaviour.  When they"},{"line_number":105,"context_line":"      see this value, they will use this in determining a binding type"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_6dcbe9a4","line":102,"updated":"2015-06-24 15:30:51.000000000","message":"I had to re-read this a couple of times - maybe actually TOO much coffee this time. To clarify, does this mean \"old neutron returns a type, if it is in the list nova will treat it like it was a negotiated type, if it is not in the list it will fail\"?","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"811017c73f519d62015cba1131dc77094cce22d7","unresolved":false,"context_lines":[{"line_number":99,"context_line":"      any binding that is not in the list and otherwise bind using"},{"line_number":100,"context_line":"      that binding_type.  Nova can assume that Neutron has chosen its"},{"line_number":101,"context_line":"      first supported value from the list of preferences provided."},{"line_number":102,"context_line":"      This maintains current behaviour."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    - Newer Neutron implementations will change behaviour.  When they"},{"line_number":105,"context_line":"      see this value, they will use this in determining a binding type"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_74c88da8","line":102,"in_reply_to":"fa32b979_6dcbe9a4","updated":"2015-06-24 17:59:39.000000000","message":"yes the current behaviour is that neutron returns a vif_binding type without consulting nova. so if nova receives a type from neutron that is not in the preferred_binding_list it will fail to bind it as the preferred_binding_list is a list of vif types that nova has determined it can bind. \n\ntoday nova would just try to bind in and it would either fail or worse \"succeed\" in booting the vm with no network connectivity and no error e.g. when you boot a vm with vhost-user and no hugepages.\n\ni guess the behaviour discripbed above where it would pro-actively fail if its not in the list without trying to boot the vm is slightly different then the current behaviour however it is likely that the end result would be the same as today, the vm failed to boot with network connectivity.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"1f3805d4765547888e2114ee342e7034d650628a","unresolved":false,"context_lines":[{"line_number":101,"context_line":"      first supported value from the list of preferences provided."},{"line_number":102,"context_line":"      This maintains current behaviour."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    - Newer Neutron implementations will change behaviour.  When they"},{"line_number":105,"context_line":"      see this value, they will use this in determining a binding type"},{"line_number":106,"context_line":"      to use.  They will choose the first binding type they support."},{"line_number":107,"context_line":"      Note that the binding types supported by Neutron may change due"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_b2ae012c","line":104,"updated":"2015-06-18 20:40:37.000000000","message":"Sort of the same comment - how likely are we to support newer versions of Neutron interacting with older versions of Nova?","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"66129c1cbef3b9726fabab99d9597baa5a328d14","unresolved":false,"context_lines":[{"line_number":101,"context_line":"      first supported value from the list of preferences provided."},{"line_number":102,"context_line":"      This maintains current behaviour."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    - Newer Neutron implementations will change behaviour.  When they"},{"line_number":105,"context_line":"      see this value, they will use this in determining a binding type"},{"line_number":106,"context_line":"      to use.  They will choose the first binding type they support."},{"line_number":107,"context_line":"      Note that the binding types supported by Neutron may change due"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_8ee5d109","line":104,"in_reply_to":"fa32b979_687ac5be","updated":"2015-06-18 23:51:34.000000000","message":"Does it though? I think it takes a very brave individual to do mixed versions of OpenStack services.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9d6e841513bddfc54aff562d08d69b12aa83acfc","unresolved":false,"context_lines":[{"line_number":101,"context_line":"      first supported value from the list of preferences provided."},{"line_number":102,"context_line":"      This maintains current behaviour."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    - Newer Neutron implementations will change behaviour.  When they"},{"line_number":105,"context_line":"      see this value, they will use this in determining a binding type"},{"line_number":106,"context_line":"      to use.  They will choose the first binding type they support."},{"line_number":107,"context_line":"      Note that the binding types supported by Neutron may change due"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_e816c757","line":104,"in_reply_to":"fa32b979_8ee5d109","updated":"2015-06-19 09:06:52.000000000","message":"Mixed versions is an 100% expected scenario users will *always* encounter when doing upgrades. We do not require Nova deployments to upgrade every single service in one go - it is impossible todo that for any non-trivially sized deployment. Maintainers will do rolling upgrades across their compute hosts, so for some (potentially quite long) period of time there will be a mixture of old and new Nova compute hosts running and talking to Neutron","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"84ce65fd540eadbc43e756abd4339212191f6e71","unresolved":false,"context_lines":[{"line_number":101,"context_line":"      first supported value from the list of preferences provided."},{"line_number":102,"context_line":"      This maintains current behaviour."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    - Newer Neutron implementations will change behaviour.  When they"},{"line_number":105,"context_line":"      see this value, they will use this in determining a binding type"},{"line_number":106,"context_line":"      to use.  They will choose the first binding type they support."},{"line_number":107,"context_line":"      Note that the binding types supported by Neutron may change due"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_9c7de4b3","line":104,"in_reply_to":"fa32b979_8ee5d109","updated":"2015-06-19 19:53:55.000000000","message":"v3 Keystone API examples exist in the wild.  I\u0027m trying to avoid this being an obvious showstopper to doing it for Nova-Neutron and I don\u0027t think  it\u0027s too much of an effort, so I was spelling out the ways in which it would function.  It doesn\u0027t really add work to the coding.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"02f2e163e41f6a7a144b371ec4f0448ac598871b","unresolved":false,"context_lines":[{"line_number":101,"context_line":"      first supported value from the list of preferences provided."},{"line_number":102,"context_line":"      This maintains current behaviour."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    - Newer Neutron implementations will change behaviour.  When they"},{"line_number":105,"context_line":"      see this value, they will use this in determining a binding type"},{"line_number":106,"context_line":"      to use.  They will choose the first binding type they support."},{"line_number":107,"context_line":"      Note that the binding types supported by Neutron may change due"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_687ac5be","line":104,"in_reply_to":"fa32b979_b2ae012c","updated":"2015-06-18 22:59:17.000000000","message":"This is missing, and for backward compatible reasons should be expected to work.  The answer is in fact \u0027I can choose to run Neutron-L with Nova-K\u0027 and this sort of thing happens in the wild, and backward compatibility must take care of this.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"1f3805d4765547888e2114ee342e7034d650628a","unresolved":false,"context_lines":[{"line_number":117,"context_line":"preference is passed, maintaining historical behaviour in the face of"},{"line_number":118,"context_line":"a hypervisor driver that does not support the new protocol, or an"},{"line_number":119,"context_line":"older version of Nova.  That is, no expression of preference is read"},{"line_number":120,"context_line":"as \u0027use your own best judgement\u0027."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"A notable example of what could be done: with libvirt/kvm, the"},{"line_number":123,"context_line":"\u0027vhostuser\u0027 binding type will only appear in the preferences list if"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_52a9b522","line":120,"updated":"2015-06-18 20:40:37.000000000","message":"We may even want to actually specify the behavior and remove the ambiguity - although this is more of an editorial comment on my part.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"02f2e163e41f6a7a144b371ec4f0448ac598871b","unresolved":false,"context_lines":[{"line_number":117,"context_line":"preference is passed, maintaining historical behaviour in the face of"},{"line_number":118,"context_line":"a hypervisor driver that does not support the new protocol, or an"},{"line_number":119,"context_line":"older version of Nova.  That is, no expression of preference is read"},{"line_number":120,"context_line":"as \u0027use your own best judgement\u0027."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"A notable example of what could be done: with libvirt/kvm, the"},{"line_number":123,"context_line":"\u0027vhostuser\u0027 binding type will only appear in the preferences list if"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_c3589233","line":120,"in_reply_to":"fa32b979_52a9b522","updated":"2015-06-18 22:59:17.000000000","message":"We can specify the behaviour all we want here but this has already been decided for older versions (nothing is changing Kilo\u0027s behaviour at this point) , so I went with \u0027Neutron will do something unpredictable same as it does today and we have to deal with the results\u0027.  It\u0027s also conveniently defensive programming.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"1f3805d4765547888e2114ee342e7034d650628a","unresolved":false,"context_lines":[{"line_number":120,"context_line":"as \u0027use your own best judgement\u0027."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"A notable example of what could be done: with libvirt/kvm, the"},{"line_number":123,"context_line":"\u0027vhostuser\u0027 binding type will only appear in the preferences list if"},{"line_number":124,"context_line":"the memory of the VM is going to be stored in a shared file that qemu"},{"line_number":125,"context_line":"will hold open (at the moment, this implies that hugepages are set in"},{"line_number":126,"context_line":"the flavor).  This is a requirement for a successful vhostuser"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_72a4f949","line":123,"updated":"2015-06-18 20:40:37.000000000","message":"whose preference list?","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"02f2e163e41f6a7a144b371ec4f0448ac598871b","unresolved":false,"context_lines":[{"line_number":120,"context_line":"as \u0027use your own best judgement\u0027."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"A notable example of what could be done: with libvirt/kvm, the"},{"line_number":123,"context_line":"\u0027vhostuser\u0027 binding type will only appear in the preferences list if"},{"line_number":124,"context_line":"the memory of the VM is going to be stored in a shared file that qemu"},{"line_number":125,"context_line":"will hold open (at the moment, this implies that hugepages are set in"},{"line_number":126,"context_line":"the flavor).  This is a requirement for a successful vhostuser"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_e376f6a2","line":123,"in_reply_to":"fa32b979_72a4f949","updated":"2015-06-18 22:59:17.000000000","message":"The one that Nova passes, to Neutron; the only preference list referred to in the whole spec...","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"84ce65fd540eadbc43e756abd4339212191f6e71","unresolved":false,"context_lines":[{"line_number":120,"context_line":"as \u0027use your own best judgement\u0027."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"A notable example of what could be done: with libvirt/kvm, the"},{"line_number":123,"context_line":"\u0027vhostuser\u0027 binding type will only appear in the preferences list if"},{"line_number":124,"context_line":"the memory of the VM is going to be stored in a shared file that qemu"},{"line_number":125,"context_line":"will hold open (at the moment, this implies that hugepages are set in"},{"line_number":126,"context_line":"the flavor).  This is a requirement for a successful vhostuser"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_fc10b05b","line":123,"in_reply_to":"fa32b979_aeb21504","updated":"2015-06-19 19:53:55.000000000","message":"Told you I needed more sleep ;)\n\nSo the thing I was referring to was at line 80, top of the proposed change:\n\n\"When Nova calls Neutron it will populate the vif binding:profile with a \u0027preferred_binding_types\u0027 field containing a comma separated list, (with optional, ignored spaces) of binding types it can make use of to Neutron.  The Neutron driver should treat this list of types as the supported and preferred list of types.\"\n\nI can refer to it as the \u0027preferred_binding_list\u0027 here if that helps.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"66129c1cbef3b9726fabab99d9597baa5a328d14","unresolved":false,"context_lines":[{"line_number":120,"context_line":"as \u0027use your own best judgement\u0027."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"A notable example of what could be done: with libvirt/kvm, the"},{"line_number":123,"context_line":"\u0027vhostuser\u0027 binding type will only appear in the preferences list if"},{"line_number":124,"context_line":"the memory of the VM is going to be stored in a shared file that qemu"},{"line_number":125,"context_line":"will hold open (at the moment, this implies that hugepages are set in"},{"line_number":126,"context_line":"the flavor).  This is a requirement for a successful vhostuser"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_aeb21504","line":123,"in_reply_to":"fa32b979_e376f6a2","updated":"2015-06-18 23:51:34.000000000","message":"ok, so please clarify that sentence. If I am asking, that means it wasn\u0027t clear to me when reading it.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"811017c73f519d62015cba1131dc77094cce22d7","unresolved":false,"context_lines":[{"line_number":120,"context_line":"as \u0027use your own best judgement\u0027."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"A notable example of what could be done: with libvirt/kvm, the"},{"line_number":123,"context_line":"\u0027vhostuser\u0027 binding type will only appear in the preferences list if"},{"line_number":124,"context_line":"the memory of the VM is going to be stored in a shared file that qemu"},{"line_number":125,"context_line":"will hold open (at the moment, this implies that hugepages are set in"},{"line_number":126,"context_line":"the flavor).  This is a requirement for a successful vhostuser"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_b5e0cf97","line":123,"in_reply_to":"fa32b979_fc10b05b","updated":"2015-06-24 17:59:39.000000000","message":"+1 \u0027preferred_binding_list\u0027","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"c73cd7329c1a833626e171856347c16e7188c375","unresolved":false,"context_lines":[{"line_number":169,"context_line":"---------------"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Care must be taken to ensure that incorrect Neutron-returned values"},{"line_number":172,"context_line":"are with the valid set, or Nova may take inappropriate actions that"},{"line_number":173,"context_line":"could in the worst case pose a security risk."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Notifications impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_47115c03","line":172,"updated":"2015-06-23 14:37:50.000000000","message":"\"with\" -\u003e \"within\"?  Otherwise I don\u0027t understand what you mean here.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"1f3805d4765547888e2114ee342e7034d650628a","unresolved":false,"context_lines":[{"line_number":190,"context_line":"Other deployer impact"},{"line_number":191,"context_line":"---------------------"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"None."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Developer impact"},{"line_number":196,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_1266cd29","line":193,"updated":"2015-06-18 20:40:37.000000000","message":"There may actually be some deployer impact, maybe just restate part of the problem statement about mixed hypervisor environments and how this will fix it.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"84ce65fd540eadbc43e756abd4339212191f6e71","unresolved":false,"context_lines":[{"line_number":190,"context_line":"Other deployer impact"},{"line_number":191,"context_line":"---------------------"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"None."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Developer impact"},{"line_number":196,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_7efed506","line":193,"in_reply_to":"fa32b979_1266cd29","updated":"2015-06-19 19:53:55.000000000","message":"I hadn\u0027t really considered positive deployer impact, but you\u0027re right.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"1f3805d4765547888e2114ee342e7034d650628a","unresolved":false,"context_lines":[{"line_number":212,"context_line":"  mleroy"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Work Items"},{"line_number":215,"context_line":"----------"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Dependencies"},{"line_number":218,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_326991f9","line":215,"updated":"2015-06-18 20:40:37.000000000","message":"I\u0027d like to see some work items","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"02f2e163e41f6a7a144b371ec4f0448ac598871b","unresolved":false,"context_lines":[{"line_number":212,"context_line":"  mleroy"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Work Items"},{"line_number":215,"context_line":"----------"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Dependencies"},{"line_number":218,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_636bc6b7","line":215,"in_reply_to":"fa32b979_326991f9","updated":"2015-06-18 22:59:17.000000000","message":"1. write work items\n2. ?\n3. profit","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"1f3805d4765547888e2114ee342e7034d650628a","unresolved":false,"context_lines":[{"line_number":239,"context_line":"References"},{"line_number":240,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"None."},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"History"},{"line_number":245,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_d26b85ef","line":242,"updated":"2015-06-18 20:40:37.000000000","message":"Do we need a reference to the vhostuser? I\u0027m a little behind on virt drivers and had to google it.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"02f2e163e41f6a7a144b371ec4f0448ac598871b","unresolved":false,"context_lines":[{"line_number":239,"context_line":"References"},{"line_number":240,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"None."},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"History"},{"line_number":245,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_c3a6520e","line":242,"in_reply_to":"fa32b979_d26b85ef","updated":"2015-06-18 22:59:17.000000000","message":"I\u0027ll dig something out.","commit_id":"4539b59838ef8190dc5df12f4f8083eeed0a8081"},{"author":{"_account_id":13997,"name":"SHIGEMATSU Mitsuhiro","email":"shigematsu.mitsuhiro@lab.ntt.co.jp","username":"pshige"},"change_message_id":"784b17f3c4372b3b087104cca7241df670ce1002","unresolved":false,"context_lines":[{"line_number":55,"context_line":"Use Cases"},{"line_number":56,"context_line":"----------"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"When using a driver that supports vhostuser, you want want it to use"},{"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":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"da20952f_ce01ba06","line":58,"updated":"2015-09-06 10:54:38.000000000","message":"s/want want/want/","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"b848a10978453303e4cbfa53b96379fe2a0ac5c9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"Use Cases"},{"line_number":56,"context_line":"----------"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"When using a driver that supports vhostuser, you want want it to use"},{"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":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a1a9d01_434d60c2","line":58,"in_reply_to":"da20952f_ce01ba06","updated":"2015-10-01 04:20:24.000000000","message":"Done","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"45825fb1edce78918eb8be2bfe3132e7f8800c2d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"Project Priority"},{"line_number":83,"context_line":"-----------------"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"None."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Proposed change"},{"line_number":88,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba3cc151_66059178","line":85,"updated":"2015-07-01 09:19:51.000000000","message":"I think we might want to make this a priority (due to the spec that depends on this work), but lets do that as a follow on change.","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"b9cc1f8ab58d77b2edaeb4f7311fb59e556b75d2","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        ... current information"},{"line_number":111,"context_line":"        \"preferred_binding_types\": [\"vhostuser\", \"ovs\", \"ivs\"]"},{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The preferred_binding_types are a recommendation and not a requirement"},{"line_number":115,"context_line":"to Neutron.  As such, Nova should assume that it may be ignored,"},{"line_number":116,"context_line":"resulting in the following three rules:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba3cc151_1c5974fe","line":113,"updated":"2015-07-01 09:46:08.000000000","message":"The VIF config object / plugins spec extends on this conceptual idea, but will require more information than just the name shown here. It will imply two sets of data, the VIF type and version, and the VIF plugin and version. We\u0027re also thinking the VIF plugin might need to express what min VIF type version it supports.\n\nRather than try to implement this negotiation based on the current VIF types, and then re-implement it based on the new VIF object/plugins design, I wonder if its  better to just go straight to the latter.","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"8cd1bcabbf0e89c4389f03138ad78e750df004fd","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        ... current information"},{"line_number":111,"context_line":"        \"preferred_binding_types\": [\"vhostuser\", \"ovs\", \"ivs\"]"},{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The preferred_binding_types are a recommendation and not a requirement"},{"line_number":115,"context_line":"to Neutron.  As such, Nova should assume that it may be ignored,"},{"line_number":116,"context_line":"resulting in the following three rules:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a50d1a3_7d51d3d7","line":113,"in_reply_to":"ba3cc151_1c5974fe","updated":"2015-07-20 23:18:10.000000000","message":"I think there\u0027s value in this before the next thing comes along.  But in any case if we assume a component separator between the elements for your spec (say \u0027:\u0027) then the name here and the name there can share the same namespace.","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"45825fb1edce78918eb8be2bfe3132e7f8800c2d","unresolved":false,"context_lines":[{"line_number":122,"context_line":"      first supported value from the list of preferences provided."},{"line_number":123,"context_line":"      In summary: Neutron will return whatever it returns and Nova"},{"line_number":124,"context_line":"      will confirm that it\u0027s acceptable and not evil."},{"line_number":125,"context_line":"      This maintains current behaviour."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    - Newer Neutron implementations will change behaviour.  When they"},{"line_number":128,"context_line":"      see this value, they will use this in determining a binding type"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba3cc151_a67879f3","line":125,"updated":"2015-07-01 09:19:51.000000000","message":"Thats nice if that is true. cool.\n\nI was expecting that we would need to discover the neutron aPI version, and only send it to new APIs.","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f6a88c1c76c2faa42df898c30ba245cc10c48762","unresolved":false,"context_lines":[{"line_number":122,"context_line":"      first supported value from the list of preferences provided."},{"line_number":123,"context_line":"      In summary: Neutron will return whatever it returns and Nova"},{"line_number":124,"context_line":"      will confirm that it\u0027s acceptable and not evil."},{"line_number":125,"context_line":"      This maintains current behaviour."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    - Newer Neutron implementations will change behaviour.  When they"},{"line_number":128,"context_line":"      see this value, they will use this in determining a binding type"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba3cc151_57421910","line":125,"in_reply_to":"ba3cc151_a67879f3","updated":"2015-07-09 11:26:29.000000000","message":"because the information is carried by the  binding_profile it should be ignored by older neutrons so a version check should not be required.","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"8cfd06eba95c212a34127492410880afbf4c7459","unresolved":false,"context_lines":[{"line_number":149,"context_line":"an operator choice for an extended period) and vice-versa."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"A notable example of what could be done: with libvirt/kvm, the \u0027vhostuser\u0027"},{"line_number":152,"context_line":"binding type will only appear in the preferred_bindings_type preferences"},{"line_number":153,"context_line":"list if the memory of the VM is going to be stored in a shared file that"},{"line_number":154,"context_line":"qemu will hold open (at the moment, this implies that hugepages are set in"},{"line_number":155,"context_line":"the flavor).  This is a requirement for a successful vhostuser binding."}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba3cc151_f24a9482","line":152,"updated":"2015-07-08 14:49:55.000000000","message":"s/bindings_type/binding_types/","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"45825fb1edce78918eb8be2bfe3132e7f8800c2d","unresolved":false,"context_lines":[{"line_number":184,"context_line":"REST API impact"},{"line_number":185,"context_line":"---------------"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"Nova will pass information in the binding:profile dictionary to be"},{"line_number":188,"context_line":"consumed by neutron.  Neutron\u0027s port binding extension will modified"},{"line_number":189,"context_line":"to define the optional \u0027preferred_binding_types\u0027 within"},{"line_number":190,"context_line":"binding:profile.  Neutron L2 plugins supporting"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba3cc151_46396d40","line":187,"updated":"2015-07-01 09:19:51.000000000","message":"This should be Nova REST API impact only really.\n\nBut I get why its here, we can fix that up later.","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"45825fb1edce78918eb8be2bfe3132e7f8800c2d","unresolved":false,"context_lines":[{"line_number":264,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"We do not depend on, but must be wary of, the currently active"},{"line_number":267,"context_line":"refactoring of the Nova code for Neutron binding."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"Testing"},{"line_number":270,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba3cc151_c6eeddb3","line":267,"updated":"2015-07-01 09:19:51.000000000","message":"I think you really depend on Neutron accepting these new parameters.\n\nDo you have a Neutron spec for that work?","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"8cd1bcabbf0e89c4389f03138ad78e750df004fd","unresolved":false,"context_lines":[{"line_number":264,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"We do not depend on, but must be wary of, the currently active"},{"line_number":267,"context_line":"refactoring of the Nova code for Neutron binding."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"Testing"},{"line_number":270,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba3cc151_c8e307a3","line":267,"in_reply_to":"ba3cc151_c6eeddb3","updated":"2015-07-20 23:18:10.000000000","message":"In fact we are not dependent on Neutron adding a feature thanks to the backward compatibility, but it\u0027s not doing much good unless you\u0027re running a version of Neutron that makes use of the info,.","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f6a88c1c76c2faa42df898c30ba245cc10c48762","unresolved":false,"context_lines":[{"line_number":264,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"We do not depend on, but must be wary of, the currently active"},{"line_number":267,"context_line":"refactoring of the Nova code for Neutron binding."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"Testing"},{"line_number":270,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba3cc151_7aeb8413","line":267,"in_reply_to":"ba3cc151_c6eeddb3","updated":"2015-07-09 11:26:29.000000000","message":"i think there will be a dependency loop here if we ad neutron as a dependency \n\nafter all they will also want to add nova as a dependency for the neutron change.\nthough you could add it for completeness.\n\nthe change as proposed can be utilised by the ml2 mech drivers without modifying neutron.","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"45825fb1edce78918eb8be2bfe3132e7f8800c2d","unresolved":false,"context_lines":[{"line_number":273,"context_line":"binding and that it is respected."},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"Confirm that Nova accepts and reacts correctly to supported,"},{"line_number":276,"context_line":"unsupported and out-of-list but known binding types."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Documentation Impact"},{"line_number":279,"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":6,"id":"ba3cc151_a694f9e1","line":276,"updated":"2015-07-01 09:19:51.000000000","message":"It would be nice to have one the 3rd pary CI\u0027s test the use case you mention around hugepages.","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f6a88c1c76c2faa42df898c30ba245cc10c48762","unresolved":false,"context_lines":[{"line_number":273,"context_line":"binding and that it is respected."},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"Confirm that Nova accepts and reacts correctly to supported,"},{"line_number":276,"context_line":"unsupported and out-of-list but known binding types."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Documentation Impact"},{"line_number":279,"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":6,"id":"ba3cc151_57d219d2","line":276,"in_reply_to":"ba3cc151_a694f9e1","updated":"2015-07-09 11:26:29.000000000","message":"if this is approved we will add support for it to the networking-ovs-dpdk mech driver. this will then be tested by our intel-networking-ci on the neutron side.\n\non the nova side perhaps we could add a test case to our intel-compute-ci which is currently testing feature such as cpu pinning, hugepages,etc...","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"45825fb1edce78918eb8be2bfe3132e7f8800c2d","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"The Nova-Neutron interface is poorly documented and should be"},{"line_number":282,"context_line":"comprehensively documented as a part of this change, in dev"},{"line_number":283,"context_line":"documentation."},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"References"},{"line_number":286,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba3cc151_06ada530","line":283,"updated":"2015-07-01 09:19:51.000000000","message":"That would be super awesome.\n\nNote: john needs to learn more adjectives.","commit_id":"5384051254cb823c5cb1f4eda64c669110cf2155"}],"specs/mitaka/approved/nova-neutron-binding-negotiation.rst":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"90d54bf7239b24b0516cb2f81676e70622b116a4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"      binding types)"},{"line_number":28,"context_line":"    - Nova can predict, when it\u0027s told that a binding has happened,"},{"line_number":29,"context_line":"      many pieces of information, including the names of bridges and"},{"line_number":30,"context_line":"      veths that Neutron will create"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"This leaves three problems:"},{"line_number":33,"context_line":"    1. Nova cannot say that binding types are sometimes available and"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_391360ba","line":30,"updated":"2015-10-20 00:00:43.000000000","message":"This spec doesn\u0027t do anything to address this point though, does it? I didn\u0027t see anything about passing bridge and interface names.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"acb9a7333246587bee4427b25d111a5d1f4827ff","unresolved":false,"context_lines":[{"line_number":27,"context_line":"      binding types)"},{"line_number":28,"context_line":"    - Nova can predict, when it\u0027s told that a binding has happened,"},{"line_number":29,"context_line":"      many pieces of information, including the names of bridges and"},{"line_number":30,"context_line":"      veths that Neutron will create"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"This leaves three problems:"},{"line_number":33,"context_line":"    1. Nova cannot say that binding types are sometimes available and"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_2205b912","line":30,"in_reply_to":"3a29b11f_1b22f152","updated":"2015-10-23 12:03:26.000000000","message":"we can use this opertunity to define new vif_type and paramater as part of \nhttps://review.openstack.org/#/c/193668/\n\ni dont think the vif_types need to be defined in this spec.\n\ni agree that this spec does not address this point but it is a factor in the motivation to add a negotiation mechanism so i think its appropriate to include for context.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"cbf6fef07a4e15db626407698d13e719ad2a3ea2","unresolved":false,"context_lines":[{"line_number":27,"context_line":"      binding types)"},{"line_number":28,"context_line":"    - Nova can predict, when it\u0027s told that a binding has happened,"},{"line_number":29,"context_line":"      many pieces of information, including the names of bridges and"},{"line_number":30,"context_line":"      veths that Neutron will create"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"This leaves three problems:"},{"line_number":33,"context_line":"    1. Nova cannot say that binding types are sometimes available and"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_1b22f152","line":30,"in_reply_to":"3a29b11f_391360ba","updated":"2015-10-20 16:47:53.000000000","message":"Fair comment.  I was thinking that this gives us the opportunity to invent nicer binding types that allow that information to transfer without breaking the old ones immediately, giving us an upgrade path, but it\u0027s not written down here.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"34951a178544d34591001c6de8d24eae4039e20f","unresolved":false,"context_lines":[{"line_number":90,"context_line":"When Nova calls Neutron it will populate the vif binding:profile with"},{"line_number":91,"context_line":"a \u0027preferred_binding_types\u0027 field containing a comma separated list,"},{"line_number":92,"context_line":"(with optional, ignored spaces) of binding types it can make use of"},{"line_number":93,"context_line":"to Neutron.  The Neutron driver should treat this list of types as the"},{"line_number":94,"context_line":"supported and preferred list of types.  It should recognise that the"},{"line_number":95,"context_line":"binding types are specific to each binding - they will not necessarily"},{"line_number":96,"context_line":"be identical from one binding to the next, based on information"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_23c58b8d","line":93,"updated":"2015-11-04 13:19:55.000000000","message":"You propose a comma-separated string field for preferred_binding_types above, but then use a list of strings in the below example. I prefer the list of strings.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"14331e9b80221bce618df6d7ba4e679a61c4dd70","unresolved":false,"context_lines":[{"line_number":90,"context_line":"When Nova calls Neutron it will populate the vif binding:profile with"},{"line_number":91,"context_line":"a \u0027preferred_binding_types\u0027 field containing a comma separated list,"},{"line_number":92,"context_line":"(with optional, ignored spaces) of binding types it can make use of"},{"line_number":93,"context_line":"to Neutron.  The Neutron driver should treat this list of types as the"},{"line_number":94,"context_line":"supported and preferred list of types.  It should recognise that the"},{"line_number":95,"context_line":"binding types are specific to each binding - they will not necessarily"},{"line_number":96,"context_line":"be identical from one binding to the next, based on information"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da85f559_22997c7c","line":93,"in_reply_to":"fa80f949_23c58b8d","updated":"2015-11-11 22:27:41.000000000","message":"Noted.  It was a header before, where - like \u0027Accepts:\u0027 - it would take comma separated options, which is why the confusion.  I\u0027ll clarify (and use a list, since we\u0027re in a datastructure now).","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"34951a178544d34591001c6de8d24eae4039e20f","unresolved":false,"context_lines":[{"line_number":97,"context_line":"available to Nova about (for instance) which binding types will work."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"The binding types in the list will consist of a list"},{"line_number":100,"context_line":"containing binding_type strings.  The name of the binding_type"},{"line_number":101,"context_line":"indicates the contract between Nova and Neutron that determines where"},{"line_number":102,"context_line":"packets will land (e.g. a TAP device, a bridge, an OVS port; and"},{"line_number":103,"context_line":"potentially, agreement on the naming of that element or other"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_83f8f7e6","line":100,"updated":"2015-11-04 13:19:55.000000000","message":"\"The binding types in the list will consist of a list containing binding_type strings.\"?\n\nI think it would be simpler and clearer to just say \"The binding_profile:preferred_binding_types field shall be a list of strings.\"","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"34951a178544d34591001c6de8d24eae4039e20f","unresolved":false,"context_lines":[{"line_number":104,"context_line":"identifying information), as it does now."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The format will look like (in JSON)::"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    \"binding_profile\": {"},{"line_number":110,"context_line":"        ... current information"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_63b073de","line":107,"updated":"2015-11-04 13:19:55.000000000","message":"It would be useful to, in addition to the expected request payload, also show the exact Network API REST call.\n\nSo, something like:\n\n POST /v2.0/ports/\n\nYou may also want to note that the Neutron API extension for port binding extended information [1] needs to be enabled (have I mentioned that I hate API extensions, BTW?).\n\n[1] http://developer.openstack.org/api-ref-networking-v2-ext.html#port_binding-ext","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"63c8ddeaa0fd894d528b46cf3481a065497440e8","unresolved":false,"context_lines":[{"line_number":104,"context_line":"identifying information), as it does now."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The format will look like (in JSON)::"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    \"binding_profile\": {"},{"line_number":110,"context_line":"        ... current information"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_466cbd07","line":107,"in_reply_to":"da85f559_62b3040b","updated":"2015-11-28 16:28:03.000000000","message":"if we wanted to capture that level of detail perhaps we could include it as\ndevref?","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"14331e9b80221bce618df6d7ba4e679a61c4dd70","unresolved":false,"context_lines":[{"line_number":104,"context_line":"identifying information), as it does now."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The format will look like (in JSON)::"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    \"binding_profile\": {"},{"line_number":110,"context_line":"        ... current information"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da85f559_62b3040b","line":107,"in_reply_to":"fa80f949_63b073de","updated":"2015-11-11 22:27:41.000000000","message":"Typically binding is done on an update (i.e. PUT) and not a POST.  I think this is maybe asking for a little too much detail, to be honest - I know this interface is short of documentation, but I don\u0027t want to stick it into this spec beyond the specific changed bits - but I\u0027ll do my best to clarify.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"34951a178544d34591001c6de8d24eae4039e20f","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The format will look like (in JSON)::"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    \"binding_profile\": {"},{"line_number":110,"context_line":"        ... current information"},{"line_number":111,"context_line":"        \"preferred_binding_types\": [\"vhostuser\", \"ovs\", \"ivs\"]"},{"line_number":112,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_630cf394","line":109,"updated":"2015-11-04 13:19:55.000000000","message":"There is no such key in the request payload for Neutron\u0027s POST /v2.0/ports API call. I think you mean \"binding:profile\"?","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"14331e9b80221bce618df6d7ba4e679a61c4dd70","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The format will look like (in JSON)::"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    \"binding_profile\": {"},{"line_number":110,"context_line":"        ... current information"},{"line_number":111,"context_line":"        \"preferred_binding_types\": [\"vhostuser\", \"ovs\", \"ivs\"]"},{"line_number":112,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da85f559_82b628f7","line":109,"in_reply_to":"fa80f949_630cf394","updated":"2015-11-11 22:27:41.000000000","message":"yup.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"157813c9fc3b6fdb20c64a4d0b1268343e17693b","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    \"binding_profile\": {"},{"line_number":110,"context_line":"        ... current information"},{"line_number":111,"context_line":"        \"preferred_binding_types\": [\"vhostuser\", \"ovs\", \"ivs\"]"},{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The preferred_binding_types are a recommendation and not a requirement"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_16568a29","line":111,"updated":"2015-11-04 13:32:54.000000000","message":"Sorry, I am being dense, what is ivs?","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"cf46d658692329e58f07fd95c47d7bfd574fc2a6","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    \"binding_profile\": {"},{"line_number":110,"context_line":"        ... current information"},{"line_number":111,"context_line":"        \"preferred_binding_types\": [\"vhostuser\", \"ovs\", \"ivs\"]"},{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The preferred_binding_types are a recommendation and not a requirement"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_59576202","line":111,"updated":"2015-11-04 13:40:16.000000000","message":"another vswitch type used by floodlight. \u0027indigo virtual switch\u0027","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"34951a178544d34591001c6de8d24eae4039e20f","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        ... current information"},{"line_number":111,"context_line":"        \"preferred_binding_types\": [\"vhostuser\", \"ovs\", \"ivs\"]"},{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The preferred_binding_types are a recommendation and not a requirement"},{"line_number":115,"context_line":"to Neutron.  As such, Nova should assume that it may be ignored,"},{"line_number":116,"context_line":"resulting in the following three rules:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_c62b6d81","line":113,"updated":"2015-11-04 13:19:55.000000000","message":"Please show the output of the *response* payload that you are proposing to change in the POST /v2.0/ports API call. Are you planning to have a new binding:vif_types dict in the returned response that would have binding profile information for each requested preferred vif type?\n\nSo, something like this?\n\n {\n   \"port\": {\n     \"binding:vif_types\": {\n       \"vhostuser\": {\n         \"binding:profile\": { ... }\n       },\n       \"vhostuser\": {\n         \"binding:profile\": { ... }\n       },\n       \"vhostuser\": {\n         \"binding:profile\": { ... }\n       }\n    },\n     ...\n }","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"63c8ddeaa0fd894d528b46cf3481a065497440e8","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        ... current information"},{"line_number":111,"context_line":"        \"preferred_binding_types\": [\"vhostuser\", \"ovs\", \"ivs\"]"},{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The preferred_binding_types are a recommendation and not a requirement"},{"line_number":115,"context_line":"to Neutron.  As such, Nova should assume that it may be ignored,"},{"line_number":116,"context_line":"resulting in the following three rules:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_e67b71bc","line":113,"in_reply_to":"da85f559_c2951033","updated":"2015-11-28 16:28:03.000000000","message":"the binding:profile is not a property of the vif type but rather the port see\nhttp://pastebin.ubuntu.com/8137126/ for an example \n\nbut in this case the response would look like\n\n\"port\": {\n   \"binding:profile\": { \n       \"preferred_binding_types\": [\"vhostuser\", \"ovs\", \"ivs\"],\n       ....\n    },     \n   \"binding:vif_details\":{},\n   \"binding:vif_type\": \"unbound\"\n   ...\n\n}\n\nwhen the neutron port is bound, the  vif_details and vif_type \nwill be updated appropriately by neutron based on what the backend supports and the preference expressed by nova.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"157813c9fc3b6fdb20c64a4d0b1268343e17693b","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        ... current information"},{"line_number":111,"context_line":"        \"preferred_binding_types\": [\"vhostuser\", \"ovs\", \"ivs\"]"},{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The preferred_binding_types are a recommendation and not a requirement"},{"line_number":115,"context_line":"to Neutron.  As such, Nova should assume that it may be ignored,"},{"line_number":116,"context_line":"resulting in the following three rules:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_26cb5955","line":113,"in_reply_to":"fa80f949_c62b6d81","updated":"2015-11-04 13:32:54.000000000","message":"I think we should reference that here I guess, even if just to say you get the same response you always did?","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b99788ef6d416f96bb1034ffa96eeea821ce7068","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        ... current information"},{"line_number":111,"context_line":"        \"preferred_binding_types\": [\"vhostuser\", \"ovs\", \"ivs\"]"},{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The preferred_binding_types are a recommendation and not a requirement"},{"line_number":115,"context_line":"to Neutron.  As such, Nova should assume that it may be ignored,"},{"line_number":116,"context_line":"resulting in the following three rules:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_c6d84d56","line":113,"in_reply_to":"fa80f949_c62b6d81","updated":"2015-11-04 13:21:45.000000000","message":"Sorry, obviously that should be:\n\n {\n   \"port\": {\n     \"binding:vif_types\": {\n       \"vhostuser\": {\n         \"binding:profile\": { ... }\n       },\n       \"ovs\": {\n         \"binding:profile\": { ... }\n       },\n       \"ivs\": {\n         \"binding:profile\": { ... }\n       }\n    },\n     ...\n }","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"14331e9b80221bce618df6d7ba4e679a61c4dd70","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        ... current information"},{"line_number":111,"context_line":"        \"preferred_binding_types\": [\"vhostuser\", \"ovs\", \"ivs\"]"},{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The preferred_binding_types are a recommendation and not a requirement"},{"line_number":115,"context_line":"to Neutron.  As such, Nova should assume that it may be ignored,"},{"line_number":116,"context_line":"resulting in the following three rules:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da85f559_c2951033","line":113,"in_reply_to":"fa80f949_c62b6d81","updated":"2015-11-11 22:27:41.000000000","message":"Why would I need such a structure?\n\nAt this point, the result has been decided and the return of the selected binding type is passed back the same way as it always has been, so it\u0027s not a change and doesn\u0027t need documenting.\n\nThis suggests it can offer multiple options back to Nova, but that\u0027s not the case.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"34951a178544d34591001c6de8d24eae4039e20f","unresolved":false,"context_lines":[{"line_number":132,"context_line":"      if the binding:profile expresses a desire for SR-IOV then the"},{"line_number":133,"context_line":"      Neutron driver may choose to only support an SR-IOV binding and"},{"line_number":134,"context_line":"      return that preference (providing Nova is willing to accept it)."},{"line_number":135,"context_line":"      In summary: Neutron will respect the will of Nova in all things."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    - Neutron will return binding_failed if no type given is"},{"line_number":138,"context_line":"      supported.  In summary: dammit."}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_0653b5e2","line":135,"updated":"2015-11-04 13:19:55.000000000","message":"The problem I see with this is that Neutron is making a decision about the binding vif_type when Neutron doesn\u0027t have all the information needed to make this decision.\n\nTo wit, what happens if Nova passes preferred_vif_types of [\"vhostuser\", \"ovs\", \"ivs\"] and Neutron determines that *it* can support vhostuser, and so only passes back information for the vhostuser vif type port binding profile. And then Nova goes plug the VIF (via a call to os_vif, but that\u0027s just a detail...) and fails for some unforeseen reason. Now what? Does Nova make yet another call to Neutron passing preferred_vif_types of [\"ovs\", \"ivs\"] and Neutron then passes binding profile information for \"ovs\" back?\n\nWhy not just have Neutron pass binding profile information for all vif types that it can and return all the information back to Nova so that Nova can retry a plug operation using a different vif type if and when a preferred vif type plug operation fails?","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"63c8ddeaa0fd894d528b46cf3481a065497440e8","unresolved":false,"context_lines":[{"line_number":132,"context_line":"      if the binding:profile expresses a desire for SR-IOV then the"},{"line_number":133,"context_line":"      Neutron driver may choose to only support an SR-IOV binding and"},{"line_number":134,"context_line":"      return that preference (providing Nova is willing to accept it)."},{"line_number":135,"context_line":"      In summary: Neutron will respect the will of Nova in all things."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    - Neutron will return binding_failed if no type given is"},{"line_number":138,"context_line":"      supported.  In summary: dammit."}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_c18f3773","line":135,"in_reply_to":"da85f559_6225445a","updated":"2015-11-28 16:28:03.000000000","message":"i agree with ian\u0027s summery here. presently nova does not have a voice in the conversation regarding what vif type to use. the decision is entirely made by neutron without consulting nova.\n\nif nova can support a vif_type and neutron select that, then if nova or the os-vif library cannot plug the interface when the vm is booted, nova can simply reschedule as it would today.  \n\nas for returning all the vif types neutron supports and allowing nova to try to plug each one, to do that nova with the libvirt driver for example would also have to regenerate the libvirt xml for the vm as the interface definition could change based on vif type.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"157813c9fc3b6fdb20c64a4d0b1268343e17693b","unresolved":false,"context_lines":[{"line_number":132,"context_line":"      if the binding:profile expresses a desire for SR-IOV then the"},{"line_number":133,"context_line":"      Neutron driver may choose to only support an SR-IOV binding and"},{"line_number":134,"context_line":"      return that preference (providing Nova is willing to accept it)."},{"line_number":135,"context_line":"      In summary: Neutron will respect the will of Nova in all things."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    - Neutron will return binding_failed if no type given is"},{"line_number":138,"context_line":"      supported.  In summary: dammit."}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_e6c8f176","line":135,"in_reply_to":"fa80f949_0653b5e2","updated":"2015-11-04 13:32:54.000000000","message":"I guess neutron has to do something different in each case?\n\nMaybe we then need Nova to reply with which one worked? But thats making nova-\u003eneutron chattier, which seems bad.\n\nI like your retry idea though, it would be good to cover that.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"14331e9b80221bce618df6d7ba4e679a61c4dd70","unresolved":false,"context_lines":[{"line_number":132,"context_line":"      if the binding:profile expresses a desire for SR-IOV then the"},{"line_number":133,"context_line":"      Neutron driver may choose to only support an SR-IOV binding and"},{"line_number":134,"context_line":"      return that preference (providing Nova is willing to accept it)."},{"line_number":135,"context_line":"      In summary: Neutron will respect the will of Nova in all things."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    - Neutron will return binding_failed if no type given is"},{"line_number":138,"context_line":"      supported.  In summary: dammit."}],"source_content_type":"text/x-rst","patch_set":7,"id":"da85f559_6225445a","line":135,"in_reply_to":"fa80f949_e6c8f176","updated":"2015-11-11 22:27:41.000000000","message":"Neutron does have all of the information.  There is no valid reason for Nova to ask for a binding type that will cause it issues.  The mechanism you suggest for a retry with an abbreviated list would work, if there turns out to be a reason in the future, but it\u0027s not really a bother right now and I wouldn\u0027t complexify this document and the change with it.\n\nTo clarify further:\n\nWhat happens today is that Nova says nothing, Neutron chooses a binding type that is (as far as it knows) appropriate to the purpose (and sometimes dependent on binding_profile information), and - importantly - *takes action to put packets in the agreed upon place* - and Nova attempts to use the packets there.  If Nova cannot, for some reason, use the packets, then Nova fails the VM run, unbinds, and a reschedule occurs.  There is no retry mechanism with a different binding type today.  There is no legitmate reason for the binding to fail, except for the possibility that Neutron guessed a wrong binding type - that\u0027s technically a config error.\n\nIn the Brave New World, Nova would say \u0027I accept these binding types\u0027.  It would provide additional information in the binding_profile, and - importantly - it *would not send* binding types it could not make use of.  That\u0027s key here - the list of binding types is appropriate to the call, not a static list used for every call.  If, after all that, Nova cannot actually finalise the binding on its side, then this is again an internal error: either it should not have requested that type in the first place or the type is valid but something went wrong (e.g. it tried to run a CLI command and the command failed for some reason).\n\nThe correct action in the face of a software error is a little hard to pin down, but I think a cleanup and reschedule to another machine is probably the best chance for success, so I wouldn\u0027t change that here.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"90d54bf7239b24b0516cb2f81676e70622b116a4","unresolved":false,"context_lines":[{"line_number":135,"context_line":"      In summary: Neutron will respect the will of Nova in all things."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    - Neutron will return binding_failed if no type given is"},{"line_number":138,"context_line":"      supported.  In summary: dammit."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Neutron can be trusted to use a preconfigured binding_type if no"},{"line_number":141,"context_line":"preference is passed, maintaining historical behaviour in the face of"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_998cf480","line":138,"updated":"2015-10-20 00:00:43.000000000","message":"This makes the behavior between old Neutron and new Neutron a little different. In the old version, it ignores the list and returns its preference. But, IIUC, the new version will just fail if it can\u0027t meet the constraints in the list.\n\nWouldn\u0027t it be more consistent to have the fallback of the previous behavior of selecting a default? If not, we need to make sure that distinction is clear.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"acb9a7333246587bee4427b25d111a5d1f4827ff","unresolved":false,"context_lines":[{"line_number":135,"context_line":"      In summary: Neutron will respect the will of Nova in all things."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    - Neutron will return binding_failed if no type given is"},{"line_number":138,"context_line":"      supported.  In summary: dammit."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Neutron can be trusted to use a preconfigured binding_type if no"},{"line_number":141,"context_line":"preference is passed, maintaining historical behaviour in the face of"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_bddeca3b","line":138,"in_reply_to":"3a29b11f_1916a455","updated":"2015-10-23 12:03:26.000000000","message":"i think an explicit rejection by neutron to configure the binding_type when nova has explicitly told neutron it cant support it is the correct approach.\n\ni may have a change of behavior on upgrade but explicit failures are generally better the silent ones.\n\n+1 to maintaining spec as is","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"4e4a2596c87ae891b44601bfd8eb85f44da1f8f9","unresolved":false,"context_lines":[{"line_number":135,"context_line":"      In summary: Neutron will respect the will of Nova in all things."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    - Neutron will return binding_failed if no type given is"},{"line_number":138,"context_line":"      supported.  In summary: dammit."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Neutron can be trusted to use a preconfigured binding_type if no"},{"line_number":141,"context_line":"preference is passed, maintaining historical behaviour in the face of"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_1916a455","line":138,"in_reply_to":"3a29b11f_998cf480","updated":"2015-10-20 00:14:54.000000000","message":"I think it\u0027s OK for new Neutron to return binding_failed *if it recognizes it is talking to new Nova*. It recognizes this by seeing the preferred_binding_types list. If new Neutron doesn\u0027t see the preferred_binding_types then it should behave like old Neutron.\n\nI think.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"157813c9fc3b6fdb20c64a4d0b1268343e17693b","unresolved":false,"context_lines":[{"line_number":135,"context_line":"      In summary: Neutron will respect the will of Nova in all things."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    - Neutron will return binding_failed if no type given is"},{"line_number":138,"context_line":"      supported.  In summary: dammit."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Neutron can be trusted to use a preconfigured binding_type if no"},{"line_number":141,"context_line":"preference is passed, maintaining historical behaviour in the face of"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_e6ad5189","line":138,"in_reply_to":"3a29b11f_bddeca3b","updated":"2015-11-04 13:32:54.000000000","message":"I like the explicit-ness here","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"90d54bf7239b24b0516cb2f81676e70622b116a4","unresolved":false,"context_lines":[{"line_number":142,"context_line":"a hypervisor driver that does not support the new protocol, or an"},{"line_number":143,"context_line":"older version of Nova.  That is, no expression of preference is read"},{"line_number":144,"context_line":"as \u0027use your own best judgement\u0027.  In summary: Neutron has an opinion"},{"line_number":145,"context_line":"in reserve in case Nova is too old to express a preference."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"This list of behaviours means that a newer Neutron will work with"},{"line_number":148,"context_line":"older Novas (this happens regularly at upgrade time and may be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_19eb04b2","line":145,"updated":"2015-10-20 00:00:43.000000000","message":"But if Neutron is too old to understand Nova\u0027s preference, it will ignore it.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"4e4a2596c87ae891b44601bfd8eb85f44da1f8f9","unresolved":false,"context_lines":[{"line_number":142,"context_line":"a hypervisor driver that does not support the new protocol, or an"},{"line_number":143,"context_line":"older version of Nova.  That is, no expression of preference is read"},{"line_number":144,"context_line":"as \u0027use your own best judgement\u0027.  In summary: Neutron has an opinion"},{"line_number":145,"context_line":"in reserve in case Nova is too old to express a preference."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"This list of behaviours means that a newer Neutron will work with"},{"line_number":148,"context_line":"older Novas (this happens regularly at upgrade time and may be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_fc7cf673","line":145,"in_reply_to":"3a29b11f_19eb04b2","updated":"2015-10-20 00:14:54.000000000","message":"Are you expressing an issue (which I don\u0027t see) or just clarifying?","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"cbf6fef07a4e15db626407698d13e719ad2a3ea2","unresolved":false,"context_lines":[{"line_number":142,"context_line":"a hypervisor driver that does not support the new protocol, or an"},{"line_number":143,"context_line":"older version of Nova.  That is, no expression of preference is read"},{"line_number":144,"context_line":"as \u0027use your own best judgement\u0027.  In summary: Neutron has an opinion"},{"line_number":145,"context_line":"in reserve in case Nova is too old to express a preference."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"This list of behaviours means that a newer Neutron will work with"},{"line_number":148,"context_line":"older Novas (this happens regularly at upgrade time and may be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_dba0f9a1","line":145,"in_reply_to":"3a29b11f_2ee6b1b4","updated":"2015-10-20 16:47:53.000000000","message":"Yes, so we have the 4 old-new combos listed here and how they will operate.  Between the two of you, you have the right of how it works, but given your comments, do you want any clarifications?","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"acb9a7333246587bee4427b25d111a5d1f4827ff","unresolved":false,"context_lines":[{"line_number":142,"context_line":"a hypervisor driver that does not support the new protocol, or an"},{"line_number":143,"context_line":"older version of Nova.  That is, no expression of preference is read"},{"line_number":144,"context_line":"as \u0027use your own best judgement\u0027.  In summary: Neutron has an opinion"},{"line_number":145,"context_line":"in reserve in case Nova is too old to express a preference."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"This list of behaviours means that a newer Neutron will work with"},{"line_number":148,"context_line":"older Novas (this happens regularly at upgrade time and may be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_5d98d677","line":145,"in_reply_to":"3a29b11f_8d780091","updated":"2015-10-23 12:03:26.000000000","message":"+1","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"37674f5d8d30b3090053d2e81945a94ae097c7be","unresolved":false,"context_lines":[{"line_number":142,"context_line":"a hypervisor driver that does not support the new protocol, or an"},{"line_number":143,"context_line":"older version of Nova.  That is, no expression of preference is read"},{"line_number":144,"context_line":"as \u0027use your own best judgement\u0027.  In summary: Neutron has an opinion"},{"line_number":145,"context_line":"in reserve in case Nova is too old to express a preference."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"This list of behaviours means that a newer Neutron will work with"},{"line_number":148,"context_line":"older Novas (this happens regularly at upgrade time and may be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_8d780091","line":145,"in_reply_to":"3a29b11f_dba0f9a1","updated":"2015-10-20 19:54:39.000000000","message":"I think this spec is good, but a \"not covered here\" note at line 30 and adding Kevin\u0027s clarification at line 145 would be nice.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"dc1d603aac9f41189f6aa5015cc913068cf82f8e","unresolved":false,"context_lines":[{"line_number":142,"context_line":"a hypervisor driver that does not support the new protocol, or an"},{"line_number":143,"context_line":"older version of Nova.  That is, no expression of preference is read"},{"line_number":144,"context_line":"as \u0027use your own best judgement\u0027.  In summary: Neutron has an opinion"},{"line_number":145,"context_line":"in reserve in case Nova is too old to express a preference."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"This list of behaviours means that a newer Neutron will work with"},{"line_number":148,"context_line":"older Novas (this happens regularly at upgrade time and may be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_2ee6b1b4","line":145,"in_reply_to":"3a29b11f_fc7cf673","updated":"2015-10-20 03:26:49.000000000","message":"Just clarifying. Since that\u0027s the desired behavior just be sure to point it out.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"de84b7e12d1f141e7adc7bd76ae7890a54cd3bd2","unresolved":false,"context_lines":[{"line_number":200,"context_line":"---------------"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Care must be taken to ensure that incorrect Neutron-returned values"},{"line_number":203,"context_line":"are within the valid set, or Nova may take inappropriate actions that"},{"line_number":204,"context_line":"could in the worst case pose a security risk."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"Notifications impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_c68dad32","line":203,"updated":"2015-11-04 13:25:15.000000000","message":"IMHO, constants for vif types should live in the os_vif library, and Neutron should import that library for constant strings. That way we keep os_vif as the single source of truth for that.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"14331e9b80221bce618df6d7ba4e679a61c4dd70","unresolved":false,"context_lines":[{"line_number":200,"context_line":"---------------"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Care must be taken to ensure that incorrect Neutron-returned values"},{"line_number":203,"context_line":"are within the valid set, or Nova may take inappropriate actions that"},{"line_number":204,"context_line":"could in the worst case pose a security risk."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"Notifications impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da85f559_e21ff4b4","line":203,"in_reply_to":"da85f559_0c07ebca","updated":"2015-11-11 22:27:41.000000000","message":"Happy with that, but that\u0027s a benefit the other change is bringing and is documented there.  I can\u0027t lay claim to the benefits of it, so I think this accurately describes a risk (one which already exists and this doesn\u0027t improve upon, to be fair).\n\nThe changes are inter-related, but this is not an example of that; it\u0027s simply restating an existing risk that the other change might mitigate.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c5bb4d61db94f28d344337169958ef34ad6c5f96","unresolved":false,"context_lines":[{"line_number":200,"context_line":"---------------"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Care must be taken to ensure that incorrect Neutron-returned values"},{"line_number":203,"context_line":"are within the valid set, or Nova may take inappropriate actions that"},{"line_number":204,"context_line":"could in the worst case pose a security risk."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"Notifications impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da85f559_0c07ebca","line":203,"in_reply_to":"fa80f949_c68dad32","updated":"2015-11-11 12:38:10.000000000","message":"+1 I think thats why I feel these things are so heavily related.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"157813c9fc3b6fdb20c64a4d0b1268343e17693b","unresolved":false,"context_lines":[{"line_number":266,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"We do not depend on, but must be wary of, the currently active"},{"line_number":269,"context_line":"refactoring of the Nova code for Neutron binding."},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"We absolutely do *not* depend on Neutron changes for this to"},{"line_number":272,"context_line":"continue functioning as it does, due to the aforementioned"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_466bfd1e","line":269,"updated":"2015-11-04 13:32:54.000000000","message":"If we don\u0027t depend on OS VIF lib, I think we end up having to implement this twice.\n\nThe OS VIF Lib infrastructure should allow us to version the list of supported types, which should really help with upgrade cases, where you can tell if data is missing, etc.\n\nHere is an IRC debate:\n\n[13:06:41]  \u003cdanpb\u003e\tso the os vif lib will need negotiation support\n\n[13:07:17]  \u003cdanpb\u003e\ti guess my concern with doing it in parallel is whether we\u0027d implement negotiation once, then find it doesn\u0027t do what we need and then have to do it again\n\n[13:07:26]  \u003cdanpb\u003e\tand end up having to support 2 negotiation mechanisms :(\n\n[13:07:38]  \u003cjohnthetubaguy\u003e\tyeah, that seems like a valid concern to me\n\n[13:08:41]  \u003cdanpb\u003e\tthat\u0027s not neccessarily to say we shouldn\u0027t approve the spec\n\n[13:08:53]  \u003cdanpb\u003e\tit could just be something we resolve during impl time\n\n...\n\n[13:09:58]  \u003cjohnthetubaguy\u003e\tI think we are saying, lets add the API using the OS VIF lib object-ey approach, to start with, so we don\u0027t have to do it twice, and that sounds good to me\n\n[13:11:19]  \u003cdanpb\u003e\tjohnthetubaguy: yeah, that\u0027s pretty much exactly what i\u0027m saying","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"14331e9b80221bce618df6d7ba4e679a61c4dd70","unresolved":false,"context_lines":[{"line_number":266,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"We do not depend on, but must be wary of, the currently active"},{"line_number":269,"context_line":"refactoring of the Nova code for Neutron binding."},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"We absolutely do *not* depend on Neutron changes for this to"},{"line_number":272,"context_line":"continue functioning as it does, due to the aforementioned"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da85f559_82eaa872","line":269,"in_reply_to":"fa80f949_466bfd1e","updated":"2015-11-11 22:27:41.000000000","message":"I agree that the os_vif lib would change things. I think the obvious way it would change things is to add a version to the \u0027preferred\u0027 structure, either in the string or by changing the format from string to dict.  That wouldn\u0027t be backward compatible with *this* change, but if they\u0027re done in the same cycle that shouldn\u0027t cause us issues, I think?\n\nOtherwise I could put a dict up top in place of the preferred type string right now, so that we have that expansibility.\n\nI just like doing the changes independently because it gives us a working and tested system half way through the process before we move on to the second stage change, plus this documentation\u0027s already fairly extensive and burying it in the vif lib spec wouldn\u0027t add clarity. Two smaller changes seems preferable to one biggie.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"157813c9fc3b6fdb20c64a4d0b1268343e17693b","unresolved":false,"context_lines":[{"line_number":271,"context_line":"We absolutely do *not* depend on Neutron changes for this to"},{"line_number":272,"context_line":"continue functioning as it does, due to the aforementioned"},{"line_number":273,"context_line":"backward compatibility.  It will only have an active effect when"},{"line_number":274,"context_line":"Neutron also gets changed."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"Testing"},{"line_number":277,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa80f949_66f3a10b","line":274,"updated":"2015-11-04 13:32:54.000000000","message":"It would be nice to get some agreement from Neutron on this API, and this general approach. I know thats a bit chicken and egg.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"14331e9b80221bce618df6d7ba4e679a61c4dd70","unresolved":false,"context_lines":[{"line_number":271,"context_line":"We absolutely do *not* depend on Neutron changes for this to"},{"line_number":272,"context_line":"continue functioning as it does, due to the aforementioned"},{"line_number":273,"context_line":"backward compatibility.  It will only have an active effect when"},{"line_number":274,"context_line":"Neutron also gets changed."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"Testing"},{"line_number":277,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da85f559_c29bd016","line":274,"in_reply_to":"fa80f949_66f3a10b","updated":"2015-11-11 22:27:41.000000000","message":"I\u0027ll see what I can do.","commit_id":"527e1d0f9095ac84727820943cdfe274a4ef3d71"}]}
