)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"d39527c22a2fb2ba490c6ad1b4bac808c0a72653","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Andreas Scheuring \u003candreas.scheuring@de.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-18 15:12:45 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Spec for distributed portbindings"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The goals is to allow a port to be bound to multiple hosts and"},{"line_number":10,"context_line":"externalize that via the ReST API."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7aa08908_8d10fd5a","line":7,"updated":"2016-06-07 16:05:41.000000000","message":"Can we refer this port as \"migrated\" port rather than \"distributed\" port?\nWe already have DVR and HA router ports(DEVICE_OWNER_DVR_INTERFACE, DEVICE_OWNER_HA_REPLICATED_INT, DEVICE_OWNER_ROUTER_SNAT) as distributed ports i.e these ports will always be present on multiple agents at same time.","commit_id":"5b939fc08fa4d370eb78aac0b08ca15c0096d7c7"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ccd190598c1f17f2eceea882c1618c03842ddf18","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The goals is to allow a port to be bound to multiple hosts and"},{"line_number":10,"context_line":"externalize that via the ReST API."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I12d1310b8df30f5fbae4cb9c8e804d34c20ee7c9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9abb7d3a_b32de5ff","line":11,"updated":"2016-06-02 07:24:34.000000000","message":"is there a RFE bug for this spec?","commit_id":"5b939fc08fa4d370eb78aac0b08ca15c0096d7c7"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"2e1df19cf0f6e52267d84f631f2868af891f3da0","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The goals is to allow a port to be bound to multiple hosts and"},{"line_number":10,"context_line":"externalize that via the ReST API."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I12d1310b8df30f5fbae4cb9c8e804d34c20ee7c9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9abb7d3a_497685d9","line":11,"in_reply_to":"9abb7d3a_b32de5ff","updated":"2016-06-02 09:41:35.000000000","message":"yes, there is! Will add the link to the commit message with the next version. Currently you can find the URL in the spec itself","commit_id":"5b939fc08fa4d370eb78aac0b08ca15c0096d7c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":10,"context_line":"for live migration. This spec proposes to allow a port to have"},{"line_number":11,"context_line":"a second inactive binding. During migration, the host that"},{"line_number":12,"context_line":"runs the instance has the active binding, while the binding"},{"line_number":13,"context_line":"belongingto the other host is inactive."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"A new API is required to externalize this new inactive binding."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"7a77a97e_d21afe7b","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":11},"updated":"2016-11-22 17:10:08.000000000","message":"belonging to, or maybe \u0027that belongs\u0027","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":12,"context_line":"runs the instance has the active binding, while the binding"},{"line_number":13,"context_line":"belongingto the other host is inactive."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"A new API is required to externalize this new inactive binding."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partial-Bug: #1580880"},{"line_number":18,"context_line":"Change-Id: I12d1310b8df30f5fbae4cb9c8e804d34c20ee7c9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"7a77a97e_72068a21","line":15,"range":{"start_line":15,"start_character":25,"end_line":15,"end_character":36},"updated":"2016-11-22 17:10:08.000000000","message":"expose you mean?","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"A new API is required to externalize this new inactive binding."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partial-Bug: #1580880"},{"line_number":18,"context_line":"Change-Id: I12d1310b8df30f5fbae4cb9c8e804d34c20ee7c9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"7a77a97e_95187077","line":17,"updated":"2016-11-22 17:10:08.000000000","message":"(irrelevant to the patch per se, but shouldn\u0027t the bug be targeted for Ocata?)","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"}],"specs/newton/distributed_portbinding.rst":[{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"aea932076986474a4a382c6975b767df5d48aa2f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Today only DVR ports can be bound to multiple hosts. Having a port bound to"},{"line_number":14,"context_line":"multiple hosts does also make sense for a compute port during live migration."},{"line_number":15,"context_line":"For a certain period of time the port could be bound to the source and"},{"line_number":16,"context_line":"target at the same time (Although only one is being used)."},{"line_number":17,"context_line":"The information of both bindings needs to be accessible and set from Nova via"},{"line_number":18,"context_line":"some API."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"bab6814e_5f969b4c","line":16,"updated":"2016-05-26 11:49:50.000000000","message":"Grammatically this sentence would work just as well without the parentheses and with \"Although\" lowercased, but don\u0027t spin a new patch just for this comment.","commit_id":"5b939fc08fa4d370eb78aac0b08ca15c0096d7c7"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"6b16fa0e33b2ea806620e3995811cf4ed596d66b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Today only DVR ports can be bound to multiple hosts. Having a port bound to"},{"line_number":14,"context_line":"multiple hosts does also make sense for a compute port during live migration."},{"line_number":15,"context_line":"For a certain period of time the port could be bound to the source and"},{"line_number":16,"context_line":"target at the same time (Although only one is being used)."},{"line_number":17,"context_line":"The information of both bindings needs to be accessible and set from Nova via"},{"line_number":18,"context_line":"some API."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_6411715d","line":16,"in_reply_to":"bab6814e_5f969b4c","updated":"2016-06-17 09:00:44.000000000","message":"Done","commit_id":"5b939fc08fa4d370eb78aac0b08ca15c0096d7c7"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"aea932076986474a4a382c6975b767df5d48aa2f","unresolved":false,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":"Assumption"},{"line_number":341,"context_line":"* only multiple compute bindings for migration will be externalised"},{"line_number":342,"context_line":"* only  2 bindings are allowed"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"Proposal: Introduce binding fields for migration target"},{"line_number":345,"context_line":"* binding:target_vif_type (read only)"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bab6814e_ffb78f82","line":342,"range":{"start_line":342,"start_character":6,"end_line":342,"end_character":7},"updated":"2016-05-26 11:49:50.000000000","message":"nit: remove extra space","commit_id":"5b939fc08fa4d370eb78aac0b08ca15c0096d7c7"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"6b16fa0e33b2ea806620e3995811cf4ed596d66b","unresolved":false,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":"Assumption"},{"line_number":341,"context_line":"* only multiple compute bindings for migration will be externalised"},{"line_number":342,"context_line":"* only  2 bindings are allowed"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"Proposal: Introduce binding fields for migration target"},{"line_number":345,"context_line":"* binding:target_vif_type (read only)"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_24176955","line":342,"range":{"start_line":342,"start_character":6,"end_line":342,"end_character":7},"in_reply_to":"bab6814e_ffb78f82","updated":"2016-06-17 09:00:44.000000000","message":"Done","commit_id":"5b939fc08fa4d370eb78aac0b08ca15c0096d7c7"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"21c31d7041c6c9db342d5fb0200fe89cb696abe8","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    In the live migration process, port binding is triggered by Nova after"},{"line_number":26,"context_line":"    the migration already succeeded. If port binding fails, the instance is"},{"line_number":27,"context_line":"    stuck in error state. If portbinding for the target node would be done in"},{"line_number":28,"context_line":"    pre_live_migration, migration could be aborted on a binding failure and the"},{"line_number":29,"context_line":"    instance would still be active on the migration source host. But we"},{"line_number":30,"context_line":"    cannot just do so, as some TOR mech drivers would shut down the source"},{"line_number":31,"context_line":"    port after the binding has been updated, although the instance is still"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_0b8984c9","line":28,"range":{"start_line":27,"start_character":26,"end_line":28,"end_character":22},"updated":"2016-06-23 22:57:09.000000000","message":"Is there corresponding work going on in Nova for this?  Or, is this just a \"wouldn\u0027t it be cool if\" kind of thing?","commit_id":"49df8d0c23494d2f93dbd88fdb5d318e3ff19a00"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"7dfee45cb4cb88578f4345a473781711b22146a1","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    In the live migration process, port binding is triggered by Nova after"},{"line_number":26,"context_line":"    the migration already succeeded. If port binding fails, the instance is"},{"line_number":27,"context_line":"    stuck in error state. If portbinding for the target node would be done in"},{"line_number":28,"context_line":"    pre_live_migration, migration could be aborted on a binding failure and the"},{"line_number":29,"context_line":"    instance would still be active on the migration source host. But we"},{"line_number":30,"context_line":"    cannot just do so, as some TOR mech drivers would shut down the source"},{"line_number":31,"context_line":"    port after the binding has been updated, although the instance is still"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_5156875c","line":28,"range":{"start_line":27,"start_character":26,"end_line":28,"end_character":22},"in_reply_to":"3aaa91ec_0b8984c9","updated":"2016-06-24 09:21:05.000000000","message":"will link the bp","commit_id":"49df8d0c23494d2f93dbd88fdb5d318e3ff19a00"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"21c31d7041c6c9db342d5fb0200fe89cb696abe8","unresolved":false,"context_lines":[{"line_number":36,"context_line":"* Live Migration between hosts running different l2 agents"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    Another use case is live migration between hosts that run different l2"},{"line_number":39,"context_line":"    agents. This requires that Nova updates the instance definition before"},{"line_number":40,"context_line":"    migration is executed (in case of libvirt, update the domain.xml with"},{"line_number":41,"context_line":"    target interface definition)."},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_4b7d4cb0","line":39,"range":{"start_line":39,"start_character":12,"end_line":39,"end_character":43},"updated":"2016-06-23 22:57:09.000000000","message":"ditto","commit_id":"49df8d0c23494d2f93dbd88fdb5d318e3ff19a00"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3c5957cfccd87db0cb638a6371f286b44bee4f1b","unresolved":false,"context_lines":[{"line_number":127,"context_line":"all attachments (DVR, distributed dhcp,..)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Therefore a new sub-resource for a port called \u0027binding\u0027 with the following"},{"line_number":130,"context_line":"API is required:"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"List Ports"},{"line_number":133,"context_line":"~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a9d85d2_9503560f","line":130,"updated":"2016-06-20 10:03:45.000000000","message":"Do you expose that in OSC client?","commit_id":"49df8d0c23494d2f93dbd88fdb5d318e3ff19a00"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"101cb79b92392147e950489693794a34934f4fce","unresolved":false,"context_lines":[{"line_number":127,"context_line":"all attachments (DVR, distributed dhcp,..)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Therefore a new sub-resource for a port called \u0027binding\u0027 with the following"},{"line_number":130,"context_line":"API is required:"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"List Ports"},{"line_number":133,"context_line":"~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a9d85d2_9a6d3e35","line":130,"in_reply_to":"5a9d85d2_9503560f","updated":"2016-06-20 11:20:47.000000000","message":"Short answer: yes\n\nLong blabla: It needs to be exposed in a way that it can be accessed by nova. If nova already uses the OSC or plans to use it in the future, then yes! \n\nI have not yet spent any thoughts about the design there...","commit_id":"49df8d0c23494d2f93dbd88fdb5d318e3ff19a00"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"21c31d7041c6c9db342d5fb0200fe89cb696abe8","unresolved":false,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"All binding attributes shall be removed from the PORT API."},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"Changes to Nova"},{"line_number":288,"context_line":"---------------"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"Context: Nova migration happens in 3 stages. Today the following actions"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_ae283e87","line":287,"range":{"start_line":287,"start_character":0,"end_line":287,"end_character":15},"updated":"2016-06-23 22:57:09.000000000","message":"We can\u0027t spec out changes to Nova in a Neutron spec!  Where is the corresponding Nova work?","commit_id":"49df8d0c23494d2f93dbd88fdb5d318e3ff19a00"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"7dfee45cb4cb88578f4345a473781711b22146a1","unresolved":false,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"All binding attributes shall be removed from the PORT API."},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"Changes to Nova"},{"line_number":288,"context_line":"---------------"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"Context: Nova migration happens in 3 stages. Today the following actions"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_7172a312","line":287,"range":{"start_line":287,"start_character":0,"end_line":287,"end_character":15},"in_reply_to":"3aaa91ec_ae283e87","updated":"2016-06-24 09:21:05.000000000","message":"yeah - that was just a summary of the nova bp. Will add a link here instead!","commit_id":"49df8d0c23494d2f93dbd88fdb5d318e3ff19a00"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5542842084c201375aae1358118ba05a2e009b81","unresolved":false,"context_lines":[{"line_number":70,"context_line":"Valid for all bindings:"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"* binding:vnic_type"},{"line_number":73,"context_line":"* binding:profile"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Datamodel Changes"},{"line_number":76,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_b4b946ef","line":73,"updated":"2016-07-02 00:59:34.000000000","message":"Are we 100% positive that vnic_type and profile are valid for all bindings? There may be cases where this is not necessarily true.","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"2cdb025b209a459c2d0492383cf93945a0c130d6","unresolved":false,"context_lines":[{"line_number":70,"context_line":"Valid for all bindings:"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"* binding:vnic_type"},{"line_number":73,"context_line":"* binding:profile"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Datamodel Changes"},{"line_number":76,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_f2ee22eb","line":73,"in_reply_to":"1aa78d24_b4b946ef","updated":"2016-07-04 08:57:28.000000000","message":"IMO those attributes are port specific attributes, that can be set via the Neutron API. Today I don\u0027t see a use case for setting those values per binding. But let me bring this into the ML2 group!","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5542842084c201375aae1358118ba05a2e009b81","unresolved":false,"context_lines":[{"line_number":78,"context_line":"Database changes to support ports bound to multiple hosts have been discussed"},{"line_number":79,"context_line":"in the bug `[2]`_. In addition the binding:host_id field must be moved to the"},{"line_number":80,"context_line":"table with the host_specific fields. To summarize:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Remove the tables (including the columns)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"* ml2_port_bindings"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_74c87e75","line":81,"updated":"2016-07-02 00:59:34.000000000","message":"Have you considered another way of tackling this? What about making host primary key with port_id in ml2_port_bindings and be done (aside from the complication and steps involved in performing the data migration) with it? We\u0027d need to pull status and device_id from the dvr table, but that\u0027s \u0027minor\u0027\n\nIn other words, I am not 100% convinced we need two tables.","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"2cdb025b209a459c2d0492383cf93945a0c130d6","unresolved":false,"context_lines":[{"line_number":78,"context_line":"Database changes to support ports bound to multiple hosts have been discussed"},{"line_number":79,"context_line":"in the bug `[2]`_. In addition the binding:host_id field must be moved to the"},{"line_number":80,"context_line":"table with the host_specific fields. To summarize:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Remove the tables (including the columns)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"* ml2_port_bindings"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_b2749acf","line":81,"in_reply_to":"1aa78d24_74c87e75","updated":"2016-07-04 08:57:28.000000000","message":"I get your point. If binding:vnic_type and binding:profile are meant to be specific per binding as well (like questioned above), then your approach is the only valid solution.\n\nAssuming there is a difference between port and binding specific attributes, your proposal has the charm of making the refactoring much more easy to the cost of potential data duplication (vnic_type \u0026 profile). Haven\u0027t considered this approach as I wanted to model a clear relationship between port and binding specific attributes. \n\nTechnically I think the better approach would be to move all data from the bindings table into the distributed (dvr) bindings table, but that\u0027s an implementation detail","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"f830021f0f6081e4e4c09a3f8419342442951e0e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"Database changes to support ports bound to multiple hosts have been discussed"},{"line_number":79,"context_line":"in the bug `[2]`_. In addition the binding:host_id field must be moved to the"},{"line_number":80,"context_line":"table with the host_specific fields. To summarize:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Remove the tables (including the columns)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"* ml2_port_bindings"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_8b409b08","line":81,"in_reply_to":"1aa78d24_b2749acf","updated":"2016-07-07 08:08:07.000000000","message":"Brought this up in yesterdays ml2 meeting [1] and we continued discussion in Neutron channel afterwards [2].\n\nOne potential use case for having a profile defined per binding would be live migration with sriov (once it is working out). We couldn\u0027t find a use case for vnic_type, but we\u0027re also not sure that there will never exist one. Especially with having this blueprint in mind, the old schema normalization might not be the right approach anymore. \nI took the todo to figure out, what it means merging protbindings table into the dvr (now distributed)-bindings table. The challenge is, to make sure, that on multiple bindings all afected rows get updated, as things like the vnic_type is stored in every binding. But this sounds feasible.\n\n\n[1] http://eavesdrop.openstack.org/meetings/networking_ml2/2016/networking_ml2.2016-07-06-16.01.log.html\n[2] http://eavesdrop.openstack.org/irclogs/%23openstack-neutron/%23openstack-neutron.2016-07-06.log.html#t2016-07-06T17:01:39","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5542842084c201375aae1358118ba05a2e009b81","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  * vif_details"},{"line_number":119,"context_line":"  * device_id (router-id)"},{"line_number":120,"context_line":"  * status"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"API Changes"},{"line_number":123,"context_line":"-----------"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_1492da57","line":121,"updated":"2016-07-02 00:59:34.000000000","message":"Just sanitizing the schema would be a huge step forward. At this point I am not sure we can chew much more than this in Newton. Furthermore, the main user of this API is Nova, unless I am mistaken, and since non-priority feature freeze is already in effect, I\u0027d rather put a stop on any API work Neutron side, for the Newton timeframe. We\u0027re about to reach a point where we are at capacity for Newton, and at this point my suggestion would be to split this spec in half, and target the second half for Ocata.\n\nThis can give us more time to elaborate here (or in some other form) on how the Nova/Neutron interaction is supposed to change to adopt this new model.","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"2cdb025b209a459c2d0492383cf93945a0c130d6","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  * vif_details"},{"line_number":119,"context_line":"  * device_id (router-id)"},{"line_number":120,"context_line":"  * status"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"API Changes"},{"line_number":123,"context_line":"-----------"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_554d6071","line":121,"in_reply_to":"1aa78d24_1492da57","updated":"2016-07-04 08:57:28.000000000","message":"agree!","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5542842084c201375aae1358118ba05a2e009b81","unresolved":false,"context_lines":[{"line_number":122,"context_line":"API Changes"},{"line_number":123,"context_line":"-----------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Portbinding Extension API needs to be adapted. The base question is, if"},{"line_number":126,"context_line":"multiple bindings should be externalised for the migration case only, or for"},{"line_number":127,"context_line":"all attachments (DVR, distributed dhcp,..)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_146ada1a","line":125,"updated":"2016-07-02 00:59:34.000000000","message":"I don\u0027t think it can. There may be plugins that use it, but either way we should try to keep it untouched. The so called MultiBinding can set a fresh start and the Single PortBinding\u0027s implementation can be simplified to call into the MultiBinding to reduce code maintenance.\n\nNow Nova may want to be still happy to call into the Single Port Binding for regular boot phase, however the scary part is: who is gonna touch the ML2 binding logic? To me this is the biggest dark hole of this spec.","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"2cdb025b209a459c2d0492383cf93945a0c130d6","unresolved":false,"context_lines":[{"line_number":122,"context_line":"API Changes"},{"line_number":123,"context_line":"-----------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Portbinding Extension API needs to be adapted. The base question is, if"},{"line_number":126,"context_line":"multiple bindings should be externalised for the migration case only, or for"},{"line_number":127,"context_line":"all attachments (DVR, distributed dhcp,..)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_d5ce7082","line":125,"in_reply_to":"1aa78d24_146ada1a","updated":"2016-07-04 08:57:28.000000000","message":"got you! Keeping the existing extension untouched sounds reasonable! This would also eliminate the effort to stay backwards compatible!\n\n\nI\u0027m not sure what you mean by \"who is gonna touch the ML2 binding logic\". Doing those refactorings of course needs to be part of this effort! Or are you just missing some thoughts on how to unify the binding code?","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5542842084c201375aae1358118ba05a2e009b81","unresolved":false,"context_lines":[{"line_number":123,"context_line":"-----------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Portbinding Extension API needs to be adapted. The base question is, if"},{"line_number":126,"context_line":"multiple bindings should be externalised for the migration case only, or for"},{"line_number":127,"context_line":"all attachments (DVR, distributed dhcp,..)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Therefore a new sub-resource for a port called \u0027binding\u0027 with the following"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_7476be3f","line":126,"updated":"2016-07-02 00:59:34.000000000","message":"externalized? I am not sure I follow, but I don\u0027t think we can adapt the extension. We\u0027d need a new one for posting multiple bindings. The existing extension\u0027 implementation can be revised to call into the multi-binding one.","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"2cdb025b209a459c2d0492383cf93945a0c130d6","unresolved":false,"context_lines":[{"line_number":123,"context_line":"-----------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Portbinding Extension API needs to be adapted. The base question is, if"},{"line_number":126,"context_line":"multiple bindings should be externalised for the migration case only, or for"},{"line_number":127,"context_line":"all attachments (DVR, distributed dhcp,..)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Therefore a new sub-resource for a port called \u0027binding\u0027 with the following"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_35a6d4c1","line":126,"in_reply_to":"1aa78d24_7476be3f","updated":"2016-07-04 08:57:28.000000000","message":"got you!","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5542842084c201375aae1358118ba05a2e009b81","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Portbinding Extension API needs to be adapted. The base question is, if"},{"line_number":126,"context_line":"multiple bindings should be externalised for the migration case only, or for"},{"line_number":127,"context_line":"all attachments (DVR, distributed dhcp,..)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Therefore a new sub-resource for a port called \u0027binding\u0027 with the following"},{"line_number":130,"context_line":"API is required:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_d45cd2ef","line":127,"updated":"2016-07-02 00:59:34.000000000","message":"Why do you bring up distributed dhcp? Let\u0027s please not scope creep.","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"2cdb025b209a459c2d0492383cf93945a0c130d6","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Portbinding Extension API needs to be adapted. The base question is, if"},{"line_number":126,"context_line":"multiple bindings should be externalised for the migration case only, or for"},{"line_number":127,"context_line":"all attachments (DVR, distributed dhcp,..)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Therefore a new sub-resource for a port called \u0027binding\u0027 with the following"},{"line_number":130,"context_line":"API is required:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_1577583b","line":127,"in_reply_to":"1aa78d24_d45cd2ef","updated":"2016-07-04 08:57:28.000000000","message":"This was mentioned as potential future use case in the related bug report https://bugs.launchpad.net/neutron/+bug/1367391\n\nBut I don\u0027t see it on the radar, so I\u0027ll remove that fictious use case","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5542842084c201375aae1358118ba05a2e009b81","unresolved":false,"context_lines":[{"line_number":126,"context_line":"multiple bindings should be externalised for the migration case only, or for"},{"line_number":127,"context_line":"all attachments (DVR, distributed dhcp,..)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Therefore a new sub-resource for a port called \u0027binding\u0027 with the following"},{"line_number":130,"context_line":"API is required:"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"List Ports"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_f4d0eecb","line":129,"updated":"2016-07-02 00:59:34.000000000","message":"are you sure binding is spelled correctly?","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"2cdb025b209a459c2d0492383cf93945a0c130d6","unresolved":false,"context_lines":[{"line_number":126,"context_line":"multiple bindings should be externalised for the migration case only, or for"},{"line_number":127,"context_line":"all attachments (DVR, distributed dhcp,..)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Therefore a new sub-resource for a port called \u0027binding\u0027 with the following"},{"line_number":130,"context_line":"API is required:"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"List Ports"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_b523e404","line":129,"in_reply_to":"1aa78d24_f4d0eecb","updated":"2016-07-04 08:57:28.000000000","message":"I\u0027m sorry but I don\u0027t get your point. Can you provide more context? \n\nOr are you saying it should be the plural (bindings) instead? If so, I agree.","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5542842084c201375aae1358118ba05a2e009b81","unresolved":false,"context_lines":[{"line_number":282,"context_line":"Existing PORT API"},{"line_number":283,"context_line":"~~~~~~~~~~~~~~~~~"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"All binding attributes shall be removed from the PORT API."},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"Changes to Nova"},{"line_number":288,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_f49e2e06","line":285,"updated":"2016-07-02 00:59:34.000000000","message":"What does this mean? I don\u0027t understand this is even feasible.","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"2cdb025b209a459c2d0492383cf93945a0c130d6","unresolved":false,"context_lines":[{"line_number":282,"context_line":"Existing PORT API"},{"line_number":283,"context_line":"~~~~~~~~~~~~~~~~~"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"All binding attributes shall be removed from the PORT API."},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"Changes to Nova"},{"line_number":288,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_38524914","line":285,"in_reply_to":"1aa78d24_f49e2e06","updated":"2016-07-04 08:57:28.000000000","message":"For example the current show port API (with portbinding extension) also returns binding specific attributes like vif_type or vif_details. As those details are now accessible via the new binding API, we could remove it from that shwo Port API.\n\nIf not we need a way to express an accumulation of bindings in the existing single attribute. (e.g. what vif_type should be showed, if one binding has bridge but another one ovs?)","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5542842084c201375aae1358118ba05a2e009b81","unresolved":false,"context_lines":[{"line_number":300,"context_line":"* Restrict compute owned ports to 2 bindings internally?"},{"line_number":301,"context_line":"* Something to consider with hierachical portbinding \u0026 binding_levels?"},{"line_number":302,"context_line":"* how is the port_status being reflected in such cases?"},{"line_number":303,"context_line":"* l2pop?"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_74935efb","line":303,"updated":"2016-07-02 00:59:34.000000000","message":"These question marks are not helping boost confidence...","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"2cdb025b209a459c2d0492383cf93945a0c130d6","unresolved":false,"context_lines":[{"line_number":300,"context_line":"* Restrict compute owned ports to 2 bindings internally?"},{"line_number":301,"context_line":"* Something to consider with hierachical portbinding \u0026 binding_levels?"},{"line_number":302,"context_line":"* how is the port_status being reflected in such cases?"},{"line_number":303,"context_line":"* l2pop?"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_5818f584","line":303,"in_reply_to":"1aa78d24_74935efb","updated":"2016-07-04 08:57:28.000000000","message":"agree! I\u0027ll provide answers in the next round.","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5542842084c201375aae1358118ba05a2e009b81","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":""},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"#2 Update existing Port object - Migration only solution"},{"line_number":322,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"Assumption"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_14749acd","line":321,"updated":"2016-07-02 00:59:34.000000000","message":"If the primary use case is supporting live migration, we could simplify all of this and simply create a migration-profile extension that contains information to capture the two compute hosts. There is really no other use case I can see and it feels that we\u0027re overkilling it a bit with the current proposal.","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"2cdb025b209a459c2d0492383cf93945a0c130d6","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":""},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"#2 Update existing Port object - Migration only solution"},{"line_number":322,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"Assumption"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_83179250","line":321,"in_reply_to":"1aa78d24_14749acd","updated":"2016-07-04 08:57:28.000000000","message":"I agree. However on the ML2 meetup we decided to rather go with a general purpose solution (like proposed here). So I need to bring this thought back to the group!","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5542842084c201375aae1358118ba05a2e009b81","unresolved":false,"context_lines":[{"line_number":322,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"Assumption"},{"line_number":325,"context_line":"* only multiple compute bindings for migration will be externalised"},{"line_number":326,"context_line":"* only 2 bindings are allowed"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"Proposal: Introduce binding fields for migration target"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_f4b58e7e","line":325,"updated":"2016-07-02 00:59:34.000000000","message":"I am sorry, but I don\u0027t understand what you mean here?","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"2cdb025b209a459c2d0492383cf93945a0c130d6","unresolved":false,"context_lines":[{"line_number":322,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"Assumption"},{"line_number":325,"context_line":"* only multiple compute bindings for migration will be externalised"},{"line_number":326,"context_line":"* only 2 bindings are allowed"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"Proposal: Introduce binding fields for migration target"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_63d0a654","line":325,"in_reply_to":"1aa78d24_f4b58e7e","updated":"2016-07-04 08:57:28.000000000","message":"basically it\u0027s about extending the current portbidning extension and add 3 new fields: \n- migration_target_vif_type\n- migraiton_target_vif_details\n- migration_target_host\n\nWe need to make sure, that only compute bindings can be set via this api and be retrieved via this API. For example a DVR portbinding should not use the new fields at all!","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5542842084c201375aae1358118ba05a2e009b81","unresolved":false,"context_lines":[{"line_number":362,"context_line":"#3 Update existing Port object - General purpose solution"},{"line_number":363,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"* A infinite number of bindings is allowed"},{"line_number":366,"context_line":"* All of those bindings are treated equally"},{"line_number":367,"context_line":"* For DVR, the list could get very long...."},{"line_number":368,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_f443ce6a","line":365,"updated":"2016-07-02 00:59:34.000000000","message":"I stopped reading at \u0027infinite\u0027 :)","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"2cdb025b209a459c2d0492383cf93945a0c130d6","unresolved":false,"context_lines":[{"line_number":362,"context_line":"#3 Update existing Port object - General purpose solution"},{"line_number":363,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"* A infinite number of bindings is allowed"},{"line_number":366,"context_line":"* All of those bindings are treated equally"},{"line_number":367,"context_line":"* For DVR, the list could get very long...."},{"line_number":368,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1aa78d24_fe1a696d","line":365,"in_reply_to":"1aa78d24_f443ce6a","updated":"2016-07-04 08:57:28.000000000","message":"I don\u0027t think that this is a good proposal anyhow, so that\u0027s fine!","commit_id":"a4704898b07ff9b952be7043072fda76033e4bfd"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d00add200cd5ebad2cfdd185f0a31eebf19842c8","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Bug `[5]`_ merges the distributed and the normal porbinding table, but still"},{"line_number":96,"context_line":"keeps the same behavior like today (like that compute ports can only have"},{"line_number":97,"context_line":"one binding). The also a normal port is a distributed port, but with just"},{"line_number":98,"context_line":"one binding."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"The proposal is to allow multiple bindings (exactly 2) for compute ports as"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1aa78d24_001d9872","line":97,"range":{"start_line":97,"start_character":14,"end_line":97,"end_character":17},"updated":"2016-07-13 09:53:58.000000000","message":"Remove?","commit_id":"3f5cea8196e64ca2446667b58c9ee7a5753215be"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"19a12fa4d5206208f6e46d420a9dddeca25c1cc7","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Bug `[5]`_ merges the distributed and the normal porbinding table, but still"},{"line_number":96,"context_line":"keeps the same behavior like today (like that compute ports can only have"},{"line_number":97,"context_line":"one binding). The also a normal port is a distributed port, but with just"},{"line_number":98,"context_line":"one binding."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"The proposal is to allow multiple bindings (exactly 2) for compute ports as"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1aa78d24_2ba83adb","line":97,"range":{"start_line":97,"start_character":14,"end_line":97,"end_character":17},"in_reply_to":"1aa78d24_001d9872","updated":"2016-07-14 08:54:16.000000000","message":"Done","commit_id":"3f5cea8196e64ca2446667b58c9ee7a5753215be"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d00add200cd5ebad2cfdd185f0a31eebf19842c8","unresolved":false,"context_lines":[{"line_number":97,"context_line":"one binding). The also a normal port is a distributed port, but with just"},{"line_number":98,"context_line":"one binding."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"The proposal is to allow multiple bindings (exactly 2) for compute ports as"},{"line_number":101,"context_line":"well."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Alternative: Go with current portbindings schema"},{"line_number":104,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1aa78d24_abdf4567","line":101,"range":{"start_line":100,"start_character":0,"end_line":101,"end_character":5},"updated":"2016-07-13 09:53:58.000000000","message":"Is there a possible future work that can take advantage from multiple bindings? Otherwise, it might be easier to implement a feature specific to live migration with something like \u0027additional temporary binding\u0027.\n\nThat said, target node port will have temporary binding in pre-live-migration just in order to obtain necessary information for migration. In case of failure in migration, temporary port binding will be removed. If migration was successful, original binding would be removed and temporary would become the real one.\n\nBasically I\u0027m saying that having multiple binding may bring unnecessary complexity so it might be better to come up with solution needled specifically for migration use-case.\n\nJust a thought :)","commit_id":"3f5cea8196e64ca2446667b58c9ee7a5753215be"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"e5e44e977e99fc73f3f4160910e2147274c610b9","unresolved":false,"context_lines":[{"line_number":97,"context_line":"one binding). The also a normal port is a distributed port, but with just"},{"line_number":98,"context_line":"one binding."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"The proposal is to allow multiple bindings (exactly 2) for compute ports as"},{"line_number":101,"context_line":"well."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Alternative: Go with current portbindings schema"},{"line_number":104,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1aa78d24_00f0f365","line":101,"range":{"start_line":100,"start_character":0,"end_line":101,"end_character":5},"in_reply_to":"1aa78d24_abdf4567","updated":"2016-07-13 11:22:10.000000000","message":"In any case we need to process the portbinding code (which is tightly coupled to create/update/delete port and the database models). The portbinding logic will trigger the mechanism drivers which are responsible for setting vif_type and details, which are the required pieces that nova needs. \n\nWith this background I\u0027m not sure how a migration specific solution would look like. Maybe we could introduce another migration_binding table, that would hold the migration target binding. Then the code requires a few \u0027if migration\u0027 branches, that would do something special for the migration case.\nAlternatively we could have a new migration column in the existing table that indicates whether a binding is temporal binding or not (default False). Having that we always know which binding is the original one and could externalize that via existing port API only, instead of showing vif_type \u0027distributed\u0027 like explained further below.\n\nIs it that what you had in mind?\n\n\nIf bug 5 gets merged - I think it is pretty easy to allow multiple ports for compute as well - it would maninly be the API effort, cause everything else should be in place since then...(assuming it works out).","commit_id":"3f5cea8196e64ca2446667b58c9ee7a5753215be"}],"specs/newton/multi_portbinding.rst":[{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"6f481b75be3f1e441471055925b4acbdf54f49e0","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Multiple Portbindings for Compute attachments"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Include the URL of your launchpad RFE:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://bugs.launchpad.net/neutron/+bug/example-id"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_35360c51","line":11,"updated":"2016-04-29 02:48:34.000000000","message":"Remove this instruction line.","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"6de1bc893cdf7d418c01bb2110a2febde5310127","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Multiple Portbindings for Compute attachments"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Include the URL of your launchpad RFE:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://bugs.launchpad.net/neutron/+bug/example-id"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_275534f9","line":11,"in_reply_to":"1a122d0e_35360c51","updated":"2016-04-29 14:57:35.000000000","message":"Done","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"6f481b75be3f1e441471055925b4acbdf54f49e0","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Include the URL of your launchpad RFE:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://bugs.launchpad.net/neutron/+bug/example-id"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Today only DVR ports can be bound to multiple hosts. Having a port bound to"},{"line_number":16,"context_line":"multiple hosts does also make sense for a compute port during live migration."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_f52f74f3","line":13,"updated":"2016-04-29 02:48:34.000000000","message":"Do you have an RFE bug ID? Either create one or remove the example URL if RFE bug is not needed.","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"6de1bc893cdf7d418c01bb2110a2febde5310127","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Include the URL of your launchpad RFE:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://bugs.launchpad.net/neutron/+bug/example-id"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Today only DVR ports can be bound to multiple hosts. Having a port bound to"},{"line_number":16,"context_line":"multiple hosts does also make sense for a compute port during live migration."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_a7b78438","line":13,"in_reply_to":"1a122d0e_f52f74f3","updated":"2016-04-29 14:57:35.000000000","message":"yeah, need to create one, pushed this spec for todays discussion..","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"6f481b75be3f1e441471055925b4acbdf54f49e0","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Today only DVR ports can be bound to multiple hosts. Having a port bound to"},{"line_number":16,"context_line":"multiple hosts does also make sense for a compute port during live migration."},{"line_number":17,"context_line":"For a certain period of time the port could be bound to both, the source and"},{"line_number":18,"context_line":"target node, at the same time (Although only one is being used)."},{"line_number":19,"context_line":"The information of both bindings needs to be accessible and set from Nova via"},{"line_number":20,"context_line":"some API."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_9541e0ab","line":17,"updated":"2016-04-29 02:48:34.000000000","message":"the commas after \"both\" and \"node\" are extraneous. The sentence is fine without them.","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"6de1bc893cdf7d418c01bb2110a2febde5310127","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Today only DVR ports can be bound to multiple hosts. Having a port bound to"},{"line_number":16,"context_line":"multiple hosts does also make sense for a compute port during live migration."},{"line_number":17,"context_line":"For a certain period of time the port could be bound to both, the source and"},{"line_number":18,"context_line":"target node, at the same time (Although only one is being used)."},{"line_number":19,"context_line":"The information of both bindings needs to be accessible and set from Nova via"},{"line_number":20,"context_line":"some API."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_47c1507f","line":17,"in_reply_to":"1a122d0e_9541e0ab","updated":"2016-04-29 14:57:35.000000000","message":"Done","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"6f481b75be3f1e441471055925b4acbdf54f49e0","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"* Instance in error state when portbinding fails"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    In the live migration process, port binding is triggered by nova after"},{"line_number":28,"context_line":"    the migration already succeeded. If port binding fails, the instance is stuck"},{"line_number":29,"context_line":"    in error state. If portbinding for the target node would be done in"},{"line_number":30,"context_line":"    pre_live_migration, migration could be aborted on a binding failure and the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_d547d8b9","line":27,"range":{"start_line":27,"start_character":64,"end_line":27,"end_character":68},"updated":"2016-04-29 02:48:34.000000000","message":"Capitalize Nova","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"6f481b75be3f1e441471055925b4acbdf54f49e0","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    in error state. If portbinding for the target node would be done in"},{"line_number":30,"context_line":"    pre_live_migration, migration could be aborted on a binding failure and the"},{"line_number":31,"context_line":"    instance would still be active on the migration source host. But we"},{"line_number":32,"context_line":"    cannot just do so, as some TOR mech drivers would shout down the source port"},{"line_number":33,"context_line":"    after the binding has been updated, although the instance is still active on"},{"line_number":34,"context_line":"    the source. If we could bind a compute port to both hosts, such drivers could"},{"line_number":35,"context_line":"    keep the source port open, and already process the target port in parallel."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_b5421ca9","line":32,"range":{"start_line":32,"start_character":54,"end_line":32,"end_character":59},"updated":"2016-04-29 02:48:34.000000000","message":"shout -\u003e shut (at least I assume you didn\u0027t intend \"shout down\")","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"6f481b75be3f1e441471055925b4acbdf54f49e0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"* Live Migration between hosts running different l2 agents"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    Another use case is live migration between hosts that run different l2 agents."},{"line_number":40,"context_line":"    This requires that nova updates the instance definition before migration is"},{"line_number":41,"context_line":"    executed (in case of libvirt, update the domain.xml with target interface"},{"line_number":42,"context_line":"    definition)."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_550aa879","line":40,"range":{"start_line":40,"start_character":23,"end_line":40,"end_character":27},"updated":"2016-04-29 02:48:34.000000000","message":"Capitalize Nova","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"6de1bc893cdf7d418c01bb2110a2febde5310127","unresolved":false,"context_lines":[{"line_number":37,"context_line":"* Live Migration between hosts running different l2 agents"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    Another use case is live migration between hosts that run different l2 agents."},{"line_number":40,"context_line":"    This requires that nova updates the instance definition before migration is"},{"line_number":41,"context_line":"    executed (in case of libvirt, update the domain.xml with target interface"},{"line_number":42,"context_line":"    definition)."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_476f9091","line":40,"range":{"start_line":40,"start_character":23,"end_line":40,"end_character":27},"in_reply_to":"1a122d0e_550aa879","updated":"2016-04-29 14:57:35.000000000","message":"Done","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"6f481b75be3f1e441471055925b4acbdf54f49e0","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Proposed Change"},{"line_number":60,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"When having mulitple bindings per host, some of the binding attributes are"},{"line_number":63,"context_line":"the same cross all bindings, som are bindng specific."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Binding specific:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_1562f03d","line":62,"range":{"start_line":62,"start_character":12,"end_line":62,"end_character":20},"updated":"2016-04-29 02:48:34.000000000","message":"mulitple -\u003e multiple","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"6de1bc893cdf7d418c01bb2110a2febde5310127","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Proposed Change"},{"line_number":60,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"When having mulitple bindings per host, some of the binding attributes are"},{"line_number":63,"context_line":"the same cross all bindings, som are bindng specific."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Binding specific:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_a70144b1","line":62,"range":{"start_line":62,"start_character":12,"end_line":62,"end_character":20},"in_reply_to":"1a122d0e_1562f03d","updated":"2016-04-29 14:57:35.000000000","message":"Done","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"6f481b75be3f1e441471055925b4acbdf54f49e0","unresolved":false,"context_lines":[{"line_number":60,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"When having mulitple bindings per host, some of the binding attributes are"},{"line_number":63,"context_line":"the same cross all bindings, som are bindng specific."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Binding specific:"},{"line_number":66,"context_line":"* binding:host_id"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_b5705c09","line":63,"range":{"start_line":63,"start_character":37,"end_line":63,"end_character":43},"updated":"2016-04-29 02:48:34.000000000","message":"bindng -\u003e binding","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"6f481b75be3f1e441471055925b4acbdf54f49e0","unresolved":false,"context_lines":[{"line_number":60,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"When having mulitple bindings per host, some of the binding attributes are"},{"line_number":63,"context_line":"the same cross all bindings, som are bindng specific."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Binding specific:"},{"line_number":66,"context_line":"* binding:host_id"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_d57518fa","line":63,"range":{"start_line":63,"start_character":29,"end_line":63,"end_character":32},"updated":"2016-04-29 02:48:34.000000000","message":"som -\u003e some","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"6de1bc893cdf7d418c01bb2110a2febde5310127","unresolved":false,"context_lines":[{"line_number":60,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"When having mulitple bindings per host, some of the binding attributes are"},{"line_number":63,"context_line":"the same cross all bindings, som are bindng specific."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Binding specific:"},{"line_number":66,"context_line":"* binding:host_id"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_67228c53","line":63,"range":{"start_line":63,"start_character":29,"end_line":63,"end_character":32},"in_reply_to":"1a122d0e_d57518fa","updated":"2016-04-29 14:57:35.000000000","message":"Done","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"6f481b75be3f1e441471055925b4acbdf54f49e0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"* binding:vif_type (Read Only)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Valid for all bindings:"},{"line_number":71,"context_line":"* binding:vnic_ype"},{"line_number":72,"context_line":"* binding:profile"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Datamodel changes"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_b5197cd3","line":71,"range":{"start_line":71,"start_character":10,"end_line":71,"end_character":18},"updated":"2016-04-29 02:48:34.000000000","message":"vnic_ype -\u003e vnic_type","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"6de1bc893cdf7d418c01bb2110a2febde5310127","unresolved":false,"context_lines":[{"line_number":68,"context_line":"* binding:vif_type (Read Only)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Valid for all bindings:"},{"line_number":71,"context_line":"* binding:vnic_ype"},{"line_number":72,"context_line":"* binding:profile"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Datamodel changes"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_27db7450","line":71,"range":{"start_line":71,"start_character":10,"end_line":71,"end_character":18},"in_reply_to":"1a122d0e_b5197cd3","updated":"2016-04-29 14:57:35.000000000","message":"Done","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"6f481b75be3f1e441471055925b4acbdf54f49e0","unresolved":false,"context_lines":[{"line_number":71,"context_line":"* binding:vnic_ype"},{"line_number":72,"context_line":"* binding:profile"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Datamodel changes"},{"line_number":75,"context_line":"-----------------"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Database changes to support ports bound to multiple hosts have been discussed"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_f57db4e7","line":74,"range":{"start_line":74,"start_character":10,"end_line":74,"end_character":17},"updated":"2016-04-29 02:48:34.000000000","message":"changes -\u003e Changes","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"6de1bc893cdf7d418c01bb2110a2febde5310127","unresolved":false,"context_lines":[{"line_number":71,"context_line":"* binding:vnic_ype"},{"line_number":72,"context_line":"* binding:profile"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Datamodel changes"},{"line_number":75,"context_line":"-----------------"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Database changes to support ports bound to multiple hosts have been discussed"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_a7c66465","line":74,"range":{"start_line":74,"start_character":10,"end_line":74,"end_character":17},"in_reply_to":"1a122d0e_f57db4e7","updated":"2016-04-29 14:57:35.000000000","message":"Done","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"063eb3e2c509b6f1e8370298bdbb779124aadb5b","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Remove the tables (including the columns)"},{"line_number":82,"context_line":"* ml2_port_bindings"},{"line_number":83,"context_line":"  * port_id (FK, PK)"},{"line_number":84,"context_line":"  * host"},{"line_number":85,"context_line":"  * vnic_type"},{"line_number":86,"context_line":"  * profile"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_e98e7d77","line":83,"updated":"2016-04-29 07:51:55.000000000","message":"You need to use another bullet type like \"-\" here if you want to do a nested bulleted list. Same thing a couple of times below, this is also causing Jenkins to fail currently.","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"6de1bc893cdf7d418c01bb2110a2febde5310127","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Remove the tables (including the columns)"},{"line_number":82,"context_line":"* ml2_port_bindings"},{"line_number":83,"context_line":"  * port_id (FK, PK)"},{"line_number":84,"context_line":"  * host"},{"line_number":85,"context_line":"  * vnic_type"},{"line_number":86,"context_line":"  * profile"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_278094f6","line":83,"in_reply_to":"1a122d0e_e98e7d77","updated":"2016-04-29 14:57:35.000000000","message":"Done","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"6f481b75be3f1e441471055925b4acbdf54f49e0","unresolved":false,"context_lines":[{"line_number":162,"context_line":"apply. For more details, see https://review.openstack.org/#/c/274097"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"* pre_live_migration: nova requests port information and does plug_vif"},{"line_number":165,"context_line":"* migration_operation: instnace definion is modified, migration executed"},{"line_number":166,"context_line":"* post_live_migration: binding:host_id is set to target host"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"In nova pre_live_migration, nova would update the port with the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_75d884ef","line":165,"range":{"start_line":165,"start_character":23,"end_line":165,"end_character":31},"updated":"2016-04-29 02:48:34.000000000","message":"instnace -\u003e instance\ndefinion -\u003e definition","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"6de1bc893cdf7d418c01bb2110a2febde5310127","unresolved":false,"context_lines":[{"line_number":162,"context_line":"apply. For more details, see https://review.openstack.org/#/c/274097"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"* pre_live_migration: nova requests port information and does plug_vif"},{"line_number":165,"context_line":"* migration_operation: instnace definion is modified, migration executed"},{"line_number":166,"context_line":"* post_live_migration: binding:host_id is set to target host"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"In nova pre_live_migration, nova would update the port with the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_a7ab0474","line":165,"range":{"start_line":165,"start_character":23,"end_line":165,"end_character":31},"in_reply_to":"1a122d0e_75d884ef","updated":"2016-04-29 14:57:35.000000000","message":"Done","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"6f481b75be3f1e441471055925b4acbdf54f49e0","unresolved":false,"context_lines":[{"line_number":165,"context_line":"* migration_operation: instnace definion is modified, migration executed"},{"line_number":166,"context_line":"* post_live_migration: binding:host_id is set to target host"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"In nova pre_live_migration, nova would update the port with the"},{"line_number":169,"context_line":"binding:target_vif_type set to the target host_id. ML2 would then process the"},{"line_number":170,"context_line":"portbinding and return the port including the target_vif_type and the"},{"line_number":171,"context_line":"target_vif_details. Before migration, nova could query the port information"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_15f03066","line":168,"range":{"start_line":168,"start_character":3,"end_line":168,"end_character":7},"updated":"2016-04-29 02:48:34.000000000","message":"capitalize Nova","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"6de1bc893cdf7d418c01bb2110a2febde5310127","unresolved":false,"context_lines":[{"line_number":165,"context_line":"* migration_operation: instnace definion is modified, migration executed"},{"line_number":166,"context_line":"* post_live_migration: binding:host_id is set to target host"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"In nova pre_live_migration, nova would update the port with the"},{"line_number":169,"context_line":"binding:target_vif_type set to the target host_id. ML2 would then process the"},{"line_number":170,"context_line":"portbinding and return the port including the target_vif_type and the"},{"line_number":171,"context_line":"target_vif_details. Before migration, nova could query the port information"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_c7ba80bf","line":168,"range":{"start_line":168,"start_character":3,"end_line":168,"end_character":7},"in_reply_to":"1a122d0e_15f03066","updated":"2016-04-29 14:57:35.000000000","message":"Done","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"6f481b75be3f1e441471055925b4acbdf54f49e0","unresolved":false,"context_lines":[{"line_number":316,"context_line":"  * Only show the single binding, like today?"},{"line_number":317,"context_line":"  * Otherwise the request gets too big."},{"line_number":318,"context_line":"* Restrict compute owned ports to 2 bindings internally?"},{"line_number":319,"context_line":"* Something to consider with hierachical portbinding \u0026 biding_levels?"},{"line_number":320,"context_line":"* how is the port_status being reflected in such cases?"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_55e628b0","line":319,"range":{"start_line":319,"start_character":55,"end_line":319,"end_character":68},"updated":"2016-04-29 02:48:34.000000000","message":"biding_levels -\u003e binding_levels","commit_id":"37ada9c47e90a4c83d4395d0427901a44508fa84"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"5c6bfa2d9cba79ab2b03b6e972121e682e8df9ed","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Multiple Portbindings for Compute attachments"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/neutron/+bug/example-id"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Today only DVR ports can be bound to multiple hosts. Having a port bound to"},{"line_number":14,"context_line":"multiple hosts does also make sense for a compute port during live migration."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_ba6c3709","line":11,"range":{"start_line":11,"start_character":40,"end_line":11,"end_character":47},"updated":"2016-05-04 15:25:03.000000000","message":"Still needs the bug ID before this is ready to merge.","commit_id":"2cb906cdf7646bc0416cf574b4e93a3722933396"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a683af88dd961280a9924753d3afa52c12b69976","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Multiple Portbindings for Compute attachments"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/neutron/+bug/example-id"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Today only DVR ports can be bound to multiple hosts. Having a port bound to"},{"line_number":14,"context_line":"multiple hosts does also make sense for a compute port during live migration."}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_3eb8b974","line":11,"range":{"start_line":11,"start_character":40,"end_line":11,"end_character":47},"in_reply_to":"1a122d0e_ba6c3709","updated":"2016-05-11 16:20:54.000000000","message":"agree, will open one!","commit_id":"2cb906cdf7646bc0416cf574b4e93a3722933396"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"23e97ed5e93c8dbde3fc6eb442822e68ea6ed9b2","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Multiple Portbindings for Compute attachments"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/neutron/+bug/example-id"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Today only DVR ports can be bound to multiple hosts. Having a port bound to"},{"line_number":14,"context_line":"multiple hosts does also make sense for a compute port during live migration."}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_9107fc80","line":11,"range":{"start_line":11,"start_character":40,"end_line":11,"end_character":47},"in_reply_to":"dab17558_14a7910b","updated":"2016-05-12 07:01:43.000000000","message":"done! https://bugs.launchpad.net/neutron/+bug/1580880\n\nAnyhow I will update this spec with more api details. Having something in gerrit is helpful for my own documentation \u0026 discussion :)\n\nThanks!","commit_id":"2cb906cdf7646bc0416cf574b4e93a3722933396"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"4d574542bfca0039050b2649f30d04ec230d5001","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Multiple Portbindings for Compute attachments"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/neutron/+bug/example-id"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Today only DVR ports can be bound to multiple hosts. Having a port bound to"},{"line_number":14,"context_line":"multiple hosts does also make sense for a compute port during live migration."}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_14a7910b","line":11,"range":{"start_line":11,"start_character":40,"end_line":11,"end_character":47},"in_reply_to":"dab17558_3eb8b974","updated":"2016-05-11 18:04:48.000000000","message":"Please make it an RFE bug with [RFE] in the title and tagged rfe.  The drivers team will review that first and then decide if a spec will be necessary.  So, put a basic description of the use case there.","commit_id":"2cb906cdf7646bc0416cf574b4e93a3722933396"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"5c6bfa2d9cba79ab2b03b6e972121e682e8df9ed","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    stuck in error state. If portbinding for the target node would be done in"},{"line_number":28,"context_line":"    pre_live_migration, migration could be aborted on a binding failure and the"},{"line_number":29,"context_line":"    instance would still be active on the migration source host. But we"},{"line_number":30,"context_line":"    cannot just do so, as some TOR mech drivers would shout down the source"},{"line_number":31,"context_line":"    port after the binding has been updated, although the instance is still"},{"line_number":32,"context_line":"    active on the source. If we could bind a compute port to both hosts, such"},{"line_number":33,"context_line":"    drivers could keep the source port open, and already process the target"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_fa5d0f49","line":30,"range":{"start_line":30,"start_character":54,"end_line":30,"end_character":59},"updated":"2016-05-04 15:25:03.000000000","message":"do you really mean shout? I think you mean shut.","commit_id":"2cb906cdf7646bc0416cf574b4e93a3722933396"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a683af88dd961280a9924753d3afa52c12b69976","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    stuck in error state. If portbinding for the target node would be done in"},{"line_number":28,"context_line":"    pre_live_migration, migration could be aborted on a binding failure and the"},{"line_number":29,"context_line":"    instance would still be active on the migration source host. But we"},{"line_number":30,"context_line":"    cannot just do so, as some TOR mech drivers would shout down the source"},{"line_number":31,"context_line":"    port after the binding has been updated, although the instance is still"},{"line_number":32,"context_line":"    active on the source. If we could bind a compute port to both hosts, such"},{"line_number":33,"context_line":"    drivers could keep the source port open, and already process the target"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_fe9ab112","line":30,"range":{"start_line":30,"start_character":54,"end_line":30,"end_character":59},"in_reply_to":"1a122d0e_fa5d0f49","updated":"2016-05-11 16:20:54.000000000","message":"you\u0027re right!","commit_id":"2cb906cdf7646bc0416cf574b4e93a3722933396"},{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"129b27f6881638a2279a2a9577d916389abc49ef","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    downside is, that it is more error prone)."},{"line_number":65,"context_line":"    Portbinding is still triggered in post_live_migration. So there\u0027s a"},{"line_number":66,"context_line":"    huge gap, between the target becomes active and the port is bound to the"},{"line_number":67,"context_line":"    target, which could cause TOR switch drivers to still block the traffic."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Proposed Change"},{"line_number":70,"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":5,"id":"1a122d0e_a8fec302","line":67,"updated":"2016-05-04 10:37:20.000000000","message":"When the switch to post-copy completes the target becomes active and the migration becomes irreversible. This is similar to the completion of a regular migration. The main difference is the copy continues in the background after the switch, but that is largely irrelevant.\n\nWhen Nova implements post-copy the port binding to the target should be done when the switch to post-copy completes, not when the entire migration finishes. So I think from Neutron\u0027s point of view there should be no difference - Nova can indicate when to do it.","commit_id":"2cb906cdf7646bc0416cf574b4e93a3722933396"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"23e97ed5e93c8dbde3fc6eb442822e68ea6ed9b2","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    downside is, that it is more error prone)."},{"line_number":65,"context_line":"    Portbinding is still triggered in post_live_migration. So there\u0027s a"},{"line_number":66,"context_line":"    huge gap, between the target becomes active and the port is bound to the"},{"line_number":67,"context_line":"    target, which could cause TOR switch drivers to still block the traffic."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Proposed Change"},{"line_number":70,"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":5,"id":"dab17558_d1850408","line":67,"in_reply_to":"1a122d0e_a8fec302","updated":"2016-05-12 07:01:43.000000000","message":"Hi Paul - somehow I missed that comment, sorry. Ok, so when nova can trigger the binding right at the moment when the switchover happens, we\u0027re fine. Nice! So I\u0027ll remove this use case!","commit_id":"2cb906cdf7646bc0416cf574b4e93a3722933396"}],"specs/newton/portbinding_information_for_nova.rst":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Today, the portbinding to the migration target host happens in the"},{"line_number":22,"context_line":"post_live_migration stage. But this is too late. In some cases it is essential"},{"line_number":23,"context_line":"for Nova to have the portbinding information for the target host already"},{"line_number":24,"context_line":"available in pre_live_migration."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Neutron needs to provide a way to allow such an early binding. The proposal is"},{"line_number":27,"context_line":"to have a compute port bound to the source AND target host during migration."}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_6f4b1c88","line":24,"updated":"2016-07-19 21:18:34.000000000","message":"I suppose simply binding to the target host in the pre live migration step removes the binding to the source host too early for some drivers. It might be helpful to state this here.\n\nIn other words, state that there\u0027s no point of time where the binding can switch from one to the other atomically in one instant and there has to be a period of overlap. You might include a few words about why.\n\nUpdate: You\u0027ve got some good information about this on L425.  So, you\u0027ve considered the problem, I still just want it mentioned here briefly.","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a478adf62a045d79ff1a2ce9f248f38f5b266a32","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Today, the portbinding to the migration target host happens in the"},{"line_number":22,"context_line":"post_live_migration stage. But this is too late. In some cases it is essential"},{"line_number":23,"context_line":"for Nova to have the portbinding information for the target host already"},{"line_number":24,"context_line":"available in pre_live_migration."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Neutron needs to provide a way to allow such an early binding. The proposal is"},{"line_number":27,"context_line":"to have a compute port bound to the source AND target host during migration."}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_a2e50fdd","line":24,"in_reply_to":"dada55a8_6f4b1c88","updated":"2016-07-20 12:55:14.000000000","message":"Done","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"to have a compute port bound to the source AND target host during migration."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Problem Description"},{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"* Instance in error state when portbinding fails"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_aaa3424e","line":30,"updated":"2016-07-19 21:18:34.000000000","message":"Note:  I mentally lumped these in to two categories.  This might not be quite right from your perspective but it helped me wrap my head around it.\n\n1. Keep source running if port binding to target host fails\n2. Handle differences in binding details between hosts.","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a478adf62a045d79ff1a2ce9f248f38f5b266a32","unresolved":false,"context_lines":[{"line_number":27,"context_line":"to have a compute port bound to the source AND target host during migration."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Problem Description"},{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"* Instance in error state when portbinding fails"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_ae95fb87","line":30,"in_reply_to":"dada55a8_aaa3424e","updated":"2016-07-20 12:55:14.000000000","message":"that makes sense!","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":71,"context_line":"in pre_live_migration."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"This can be achieved by allowing a compute port to be bound to multiple hosts,"},{"line_number":74,"context_line":"like a DVR port can today, namely to the migration source and to the migration"},{"line_number":75,"context_line":"target host. This additional portbinding needs to be set"},{"line_number":76,"context_line":"via the ReST API. The result must contain the binding information"},{"line_number":77,"context_line":"(like vif_type, vif_details and so on)."}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_659fbdb4","line":74,"updated":"2016-07-19 21:18:34.000000000","message":"I have a couple of questions about what happens when a port is bound to multiple hosts.\n\n1. What happens when floating IPs are bound to such a port? DVR floating IPs are routed directly to the host where the port is bound. What will DVR do when the port is bound in two places?\n2. Do we need to consider what happens with l2pop when the port is bound to two hosts?\n\nUpdate: I see your section on l2pop below.","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":92,"context_line":" * remove one of the bindings (you cannot remove the last binding)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"List Ports"},{"line_number":96,"context_line":"~~~~~~~~~~"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"GET /v2.0/ports/​{port_id}​/migrationbindings"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_0597e148","line":95,"range":{"start_line":95,"start_character":0,"end_line":95,"end_character":10},"updated":"2016-07-19 21:18:34.000000000","message":"*List Port Bindings","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"List Ports"},{"line_number":96,"context_line":"~~~~~~~~~~"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"GET /v2.0/ports/​{port_id}​/migrationbindings"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":".. list-table:: Response Parameters"},{"line_number":101,"context_line":"   :header-rows: 1"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_45839998","line":98,"range":{"start_line":98,"start_character":28,"end_line":98,"end_character":45},"updated":"2016-07-19 21:18:34.000000000","message":"I notice here that you\u0027ve switched to a less generic, more use case centric, API definition to handle these bindings. At first glance, I think I like it but I want to let it sync it a little bit.","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"  * len(existing_bindings) \u003c 1: Return error"},{"line_number":168,"context_line":"  * len(existing_bindings) \u003d\u003d 1: OK, creation allowed"},{"line_number":169,"context_line":"  * len(existing_bindings) \u003e 1 Return error"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"POST /v2.0/ports/​{port_id}​/migrationbindings"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_a5d535ba","line":169,"updated":"2016-07-19 21:18:34.000000000","message":"tl;dr: From Newton on, it will be an error to try to bind a port to a host if the port has an IP address on a subnet that the host can\u0027t reach in a routed network [1].\n\nLonger version:  With routed networks in Newton, we have deferred IP allocation on ports. This means that IPs are not allocated until host binding information is provided because hosts can only reach a subset of the subnets on the network.\n\nThis also means that when a port has an IP address, it will be an error to try to bind the port to a host that can\u0027t reach the subnet. I haven\u0027t actually coded this yet but I will very soon.\n\nI\u0027m not sure how you need to work this in to this spec but you should be aware of it.\n\n[1] http://specs.openstack.org/openstack/neutron-specs/specs/newton/routed-networks.html","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a478adf62a045d79ff1a2ce9f248f38f5b266a32","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"  * len(existing_bindings) \u003c 1: Return error"},{"line_number":168,"context_line":"  * len(existing_bindings) \u003d\u003d 1: OK, creation allowed"},{"line_number":169,"context_line":"  * len(existing_bindings) \u003e 1 Return error"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"POST /v2.0/ports/​{port_id}​/migrationbindings"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_a1122007","line":169,"in_reply_to":"dada55a8_a5d535ba","updated":"2016-07-20 12:55:14.000000000","message":"will have a look!","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Delete Binding"},{"line_number":249,"context_line":"~~~~~~~~~~~~~~"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"DELETE /v2.0/ports/​{port_id}​/migrationbindings/{host_id}"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":".. list-table:: Request parameters"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_c53ca9e4","line":250,"updated":"2016-07-19 21:18:34.000000000","message":"You should mention your restriction here that the last one cannot be deleted.","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a478adf62a045d79ff1a2ce9f248f38f5b266a32","unresolved":false,"context_lines":[{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Delete Binding"},{"line_number":249,"context_line":"~~~~~~~~~~~~~~"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"DELETE /v2.0/ports/​{port_id}​/migrationbindings/{host_id}"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":".. list-table:: Request parameters"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_8e247760","line":250,"in_reply_to":"dada55a8_c53ca9e4","updated":"2016-07-20 12:55:14.000000000","message":"Done","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":272,"context_line":"be represented as such in the existing APIs. That means the following values"},{"line_number":273,"context_line":"are set like this:"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"* binding:vif_type \u003d \u0027distributed\u0027"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"* binding:vif_details \u003d {}"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_e508cd2f","line":275,"range":{"start_line":275,"start_character":2,"end_line":275,"end_character":34},"updated":"2016-07-19 21:18:34.000000000","message":"This seems strange to me. I\u0027m not sure what I don\u0027t like about it but it doesn\u0027t sit well.\n\nWhy not show the source port binding until it is deleted and then show the target? Or, if we end up with some atomic transition (L356) between the two bindings, show the one that is the active port.","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a478adf62a045d79ff1a2ce9f248f38f5b266a32","unresolved":false,"context_lines":[{"line_number":272,"context_line":"be represented as such in the existing APIs. That means the following values"},{"line_number":273,"context_line":"are set like this:"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"* binding:vif_type \u003d \u0027distributed\u0027"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"* binding:vif_details \u003d {}"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_d0cf2427","line":275,"range":{"start_line":275,"start_character":2,"end_line":275,"end_character":34},"in_reply_to":"dada55a8_e508cd2f","updated":"2016-07-20 12:55:14.000000000","message":"makes sense. If there are multiple bindings and just one of them is activated - show this!","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":314,"context_line":"Today, a distributed port is identified along the device_owner. Now a new"},{"line_number":315,"context_line":"identification is required, as a compute port can be a distributed, or still"},{"line_number":316,"context_line":"a normal port. Such an identifier might get introduced with patch `[6]`_"},{"line_number":317,"context_line":"which is part of the effort `[7]`_. For distributed ports, the vif_type in the"},{"line_number":318,"context_line":"ml2_portbindings table is set to \u0027distributed\u0027 instead of \u0027unbound\u0027. Now a"},{"line_number":319,"context_line":"distributed port can be identified by the portbindings vif_type, instead of"},{"line_number":320,"context_line":"the device owner. Note: the real vif_type of a distributed binding is still"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_6fa31350","line":317,"range":{"start_line":317,"start_character":63,"end_line":317,"end_character":71},"updated":"2016-07-19 21:18:34.000000000","message":"Using vif_type for this seems a little bit hacky to me.  I think I tend to like the more generic unification at the DB level.  Might have to think about it some more.","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a478adf62a045d79ff1a2ce9f248f38f5b266a32","unresolved":false,"context_lines":[{"line_number":314,"context_line":"Today, a distributed port is identified along the device_owner. Now a new"},{"line_number":315,"context_line":"identification is required, as a compute port can be a distributed, or still"},{"line_number":316,"context_line":"a normal port. Such an identifier might get introduced with patch `[6]`_"},{"line_number":317,"context_line":"which is part of the effort `[7]`_. For distributed ports, the vif_type in the"},{"line_number":318,"context_line":"ml2_portbindings table is set to \u0027distributed\u0027 instead of \u0027unbound\u0027. Now a"},{"line_number":319,"context_line":"distributed port can be identified by the portbindings vif_type, instead of"},{"line_number":320,"context_line":"the device owner. Note: the real vif_type of a distributed binding is still"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_10b37c99","line":317,"range":{"start_line":317,"start_character":63,"end_line":317,"end_character":71},"in_reply_to":"dada55a8_6fa31350","updated":"2016-07-20 12:55:14.000000000","message":"I\u0027m with you here. Just was picking this up, as threre\u0027s a patchset out proposing it. I would rather create a new column \u0027binding_type\u0027 or so for that.","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":316,"context_line":"a normal port. Such an identifier might get introduced with patch `[6]`_"},{"line_number":317,"context_line":"which is part of the effort `[7]`_. For distributed ports, the vif_type in the"},{"line_number":318,"context_line":"ml2_portbindings table is set to \u0027distributed\u0027 instead of \u0027unbound\u0027. Now a"},{"line_number":319,"context_line":"distributed port can be identified by the portbindings vif_type, instead of"},{"line_number":320,"context_line":"the device owner. Note: the real vif_type of a distributed binding is still"},{"line_number":321,"context_line":"stored in ml2_distributed_portbindings table)."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"*Create binding for migration target*"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_0f837799","line":320,"range":{"start_line":319,"start_character":17,"end_line":320,"end_character":16},"updated":"2016-07-19 21:18:34.000000000","message":"Why is this desirable?","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a478adf62a045d79ff1a2ce9f248f38f5b266a32","unresolved":false,"context_lines":[{"line_number":316,"context_line":"a normal port. Such an identifier might get introduced with patch `[6]`_"},{"line_number":317,"context_line":"which is part of the effort `[7]`_. For distributed ports, the vif_type in the"},{"line_number":318,"context_line":"ml2_portbindings table is set to \u0027distributed\u0027 instead of \u0027unbound\u0027. Now a"},{"line_number":319,"context_line":"distributed port can be identified by the portbindings vif_type, instead of"},{"line_number":320,"context_line":"the device owner. Note: the real vif_type of a distributed binding is still"},{"line_number":321,"context_line":"stored in ml2_distributed_portbindings table)."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"*Create binding for migration target*"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_adeb3777","line":320,"range":{"start_line":319,"start_character":17,"end_line":320,"end_character":16},"in_reply_to":"dada55a8_0f837799","updated":"2016-07-20 12:55:14.000000000","message":"device_owner will be compute for normal and for distributed ports. So we either need to change the device owner, or we need a new identifier. This is important, as for distributed ports another code path is executed than for normal ports. Anyhow, this is only relevant for this alternative where we keep the 2 flavors distributed and normal ports. This would not be relevant after a unification of the binding code and db.","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":328,"context_line":"* Set the vif_type in portbindings table to \u0027distributed\u0027"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"* Process portbinding logic for distributed ports with migration target host"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"*Remove a binding*"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"* Remove the binding to be deleted from the distributed_binding table"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_6f167356","line":331,"updated":"2016-07-19 21:18:34.000000000","message":"This all sounds kind of hacky.","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a478adf62a045d79ff1a2ce9f248f38f5b266a32","unresolved":false,"context_lines":[{"line_number":328,"context_line":"* Set the vif_type in portbindings table to \u0027distributed\u0027"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"* Process portbinding logic for distributed ports with migration target host"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"*Remove a binding*"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"* Remove the binding to be deleted from the distributed_binding table"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_8d9753eb","line":331,"in_reply_to":"dada55a8_6f167356","updated":"2016-07-20 12:55:14.000000000","message":"I\u0027m with you!","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":353,"context_line":"MAC1 is reachable via vxlan-def."},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"To get around this, it is desired to have a separation between the creation"},{"line_number":356,"context_line":"of a binding, and its activation (sending out fdb entries)."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"The following mechanism driver API methods are relevant for this problem"},{"line_number":359,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_60d4cb46","line":356,"updated":"2016-07-19 21:18:34.000000000","message":"For l2pop and floating IPs, it feels like we still need an atomic transition between one port binding and the other.  Like, only one can be active at any given time.  This reminds me of the work that Swami has worked on [1] for live migration and floating IPs with DVR.\n\n[1] https://review.openstack.org/#/c/275073/","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a478adf62a045d79ff1a2ce9f248f38f5b266a32","unresolved":false,"context_lines":[{"line_number":353,"context_line":"MAC1 is reachable via vxlan-def."},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"To get around this, it is desired to have a separation between the creation"},{"line_number":356,"context_line":"of a binding, and its activation (sending out fdb entries)."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"The following mechanism driver API methods are relevant for this problem"},{"line_number":359,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_e1941844","line":356,"in_reply_to":"dada55a8_60d4cb46","updated":"2016-07-20 12:55:14.000000000","message":"will have a look!\n\nI would assume that the floating IP is always on the activated port. As the plan is to activate the port explicitly (process update_port again) I don\u0027t see an issue there. It should be the same behavior like today.","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":374,"context_line":"  sets the vif_type and vif_details. It is required already in creation stage."},{"line_number":375,"context_line":"  L2pop does not implement this method at all."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"A new identifier for this special non-activated portbinding is required."},{"line_number":378,"context_line":"This could be a new field \u0027binding_type\u0027 in the portbindings table. Per default"},{"line_number":379,"context_line":"it is set to \u0027classic\u0027 or \u0027normal\u0027. )."},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"Note: This new filed might be used for distributed ports later on as well."},{"line_number":382,"context_line":"Patch `[6]`_ to establishes such an identifier and sets the value to"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_a02a432a","line":379,"range":{"start_line":377,"start_character":0,"end_line":379,"end_character":38},"updated":"2016-07-19 21:18:34.000000000","message":"I\u0027m not sure I understand this new field.  Seems like it is supposed to be \"distributed-migration\" when there is more than one binding and \"normal\" otherwise.  Is that true?  Why not just count them?","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a478adf62a045d79ff1a2ce9f248f38f5b266a32","unresolved":false,"context_lines":[{"line_number":374,"context_line":"  sets the vif_type and vif_details. It is required already in creation stage."},{"line_number":375,"context_line":"  L2pop does not implement this method at all."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"A new identifier for this special non-activated portbinding is required."},{"line_number":378,"context_line":"This could be a new field \u0027binding_type\u0027 in the portbindings table. Per default"},{"line_number":379,"context_line":"it is set to \u0027classic\u0027 or \u0027normal\u0027. )."},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"Note: This new filed might be used for distributed ports later on as well."},{"line_number":382,"context_line":"Patch `[6]`_ to establishes such an identifier and sets the value to"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_5075f42f","line":379,"range":{"start_line":377,"start_character":0,"end_line":379,"end_character":38},"in_reply_to":"dada55a8_a02a432a","updated":"2016-07-20 12:55:14.000000000","message":"The point is, that today all distributed ports created and activated at the same time. So today all ports are activated ports. We need some identifier to specify the new flavor, that a port is created but not activated. This could either be a new column in the db, or maybe we could reuse the existing status column of the dvr table (which is not used by normal ports today).\n\nCounting will give you an idea if a port is distribute or not, but not if it is activated or just has been created.","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":378,"context_line":"This could be a new field \u0027binding_type\u0027 in the portbindings table. Per default"},{"line_number":379,"context_line":"it is set to \u0027classic\u0027 or \u0027normal\u0027. )."},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"Note: This new filed might be used for distributed ports later on as well."},{"line_number":382,"context_line":"Patch `[6]`_ to establishes such an identifier and sets the value to"},{"line_number":383,"context_line":"\u0027distributed\u0027 for distributed ports."},{"line_number":384,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_00222f52","line":381,"range":{"start_line":381,"start_character":15,"end_line":381,"end_character":20},"updated":"2016-07-19 21:18:34.000000000","message":"*field","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a478adf62a045d79ff1a2ce9f248f38f5b266a32","unresolved":false,"context_lines":[{"line_number":378,"context_line":"This could be a new field \u0027binding_type\u0027 in the portbindings table. Per default"},{"line_number":379,"context_line":"it is set to \u0027classic\u0027 or \u0027normal\u0027. )."},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"Note: This new filed might be used for distributed ports later on as well."},{"line_number":382,"context_line":"Patch `[6]`_ to establishes such an identifier and sets the value to"},{"line_number":383,"context_line":"\u0027distributed\u0027 for distributed ports."},{"line_number":384,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_b02390a6","line":381,"range":{"start_line":381,"start_character":15,"end_line":381,"end_character":20},"in_reply_to":"dada55a8_00222f52","updated":"2016-07-20 12:55:14.000000000","message":"Done","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":385,"context_line":"Now the logic could look like this"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"* When a create binding request comes in via the new migration extension, it"},{"line_number":388,"context_line":"  will set the ports binding_type to \u0027distributed-migration\u0027."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"* The existing portbinding logic will check for this value and skip the call to"},{"line_number":391,"context_line":"  update_port_postcommit if it is set."}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_00ccef68","line":388,"updated":"2016-07-19 21:18:34.000000000","message":"So, \"normal\" -\u003e \"distributed-migration\"","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a478adf62a045d79ff1a2ce9f248f38f5b266a32","unresolved":false,"context_lines":[{"line_number":385,"context_line":"Now the logic could look like this"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"* When a create binding request comes in via the new migration extension, it"},{"line_number":388,"context_line":"  will set the ports binding_type to \u0027distributed-migration\u0027."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"* The existing portbinding logic will check for this value and skip the call to"},{"line_number":391,"context_line":"  update_port_postcommit if it is set."}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_9beaedaa","line":388,"in_reply_to":"dada55a8_00ccef68","updated":"2016-07-20 12:55:14.000000000","message":"removed that section, as I\u0027m explaining more details now further up","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":417,"context_line":"Alternatives"},{"line_number":418,"context_line":"------------"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"#1 API that tells nova if normal portbinding can be done in pre_live_migration"},{"line_number":421,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"The requirement is, that we have the portbinding information for the target"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_db648ae6","line":420,"updated":"2016-07-19 21:18:34.000000000","message":"I think I\u0027d just shorten this title to \"Move port binding to pre_live_migration\" and cover the \"API to tell nova\" part in the body.  I was confused by the title.","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56ee65db0d3c4d5fd714d81e065fe3fd71db097d","unresolved":false,"context_lines":[{"line_number":448,"context_line":"migration would fail when portbinding fails. We could also use the result of"},{"line_number":449,"context_line":"this simulation to modify the xml - however in post_live_migraiton, binding"},{"line_number":450,"context_line":"is triggered again - there\u0027s no guarantee, that the result of the binding"},{"line_number":451,"context_line":"is the same again."},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"#3 General purpose portbinding API"},{"line_number":454,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_3b1fa660","line":451,"updated":"2016-07-19 21:18:34.000000000","message":"Good point.  There is a chance that conditions could change.  But, it is probably much less likely.","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a478adf62a045d79ff1a2ce9f248f38f5b266a32","unresolved":false,"context_lines":[{"line_number":448,"context_line":"migration would fail when portbinding fails. We could also use the result of"},{"line_number":449,"context_line":"this simulation to modify the xml - however in post_live_migraiton, binding"},{"line_number":450,"context_line":"is triggered again - there\u0027s no guarantee, that the result of the binding"},{"line_number":451,"context_line":"is the same again."},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"#3 General purpose portbinding API"},{"line_number":454,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dada55a8_61f028ff","line":451,"in_reply_to":"dada55a8_3b1fa660","updated":"2016-07-20 12:55:14.000000000","message":"This would be much simpler to implement! So maybe it\u0027s worthwhile thinking if it really can change (I\u0027m not 100% sure here)\n\nThe implementation would be similar to what is proposed in this spec, but without persistence. Which means no database rework no binding logic rework! We would just need the split of \n- creating a binding (simulation only)\n- creating and activating a binding (normal behavior)\n\nI don\u0027t see an issue with the reference implementations and l2pop. If we skip the calls to update_port_*commit methods during binding simulation. But as always, I\u0027m, not 100% sure what lives outside of neutron.\n\nAlternatively we could store the result of the binding in some new table and on portbinding request to the new host, we could compare those results. If they are not equal - set vif_type to \"binding_failed\".\n\nThis change feels much more lightweight than what is proposed...\n\nThoughts?","commit_id":"779f1b6121f0f8191b27796cbc1c3b92650bca8e"},{"author":{"_account_id":2888,"name":"Mathieu Rohon","email":"mathieu.rohon@gmail.com","username":"mathieu-rohon"},"change_message_id":"d931d9e6179b4d9c5e8708935a92f0faa506ab8b","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/neutron/+bug/1580880"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Nova Live Migration consitst of 3 stages"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"* pre_live_migration - executed before migration"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_fc34514b","line":13,"range":{"start_line":13,"start_character":20,"end_line":13,"end_character":28},"updated":"2016-07-27 15:42:54.000000000","message":"nit : consists?","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/neutron/+bug/1580880"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Nova Live Migration consitst of 3 stages"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"* pre_live_migration - executed before migration"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_382cd1aa","line":13,"range":{"start_line":13,"start_character":20,"end_line":13,"end_character":28},"in_reply_to":"bacf61ea_fc34514b","updated":"2016-08-24 13:02:42.000000000","message":"Done","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Nova Live Migration consitst of 3 stages"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"* pre_live_migration - executed before migration"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* live_migration_operation - migration itself"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_cc34eafc","line":15,"updated":"2016-07-28 23:37:16.000000000","message":"point of clarification: I think we know the landing target at this point, ie. the host to which the VM is migrating to. Perhaps highlighting this aspect may help the paragraph below.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Nova Live Migration consitst of 3 stages"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"* pre_live_migration - executed before migration"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* live_migration_operation - migration itself"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_6364dee3","line":15,"in_reply_to":"bacf61ea_96a5f448","updated":"2016-08-24 13:02:42.000000000","message":"Done","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Nova Live Migration consitst of 3 stages"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"* pre_live_migration - executed before migration"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* live_migration_operation - migration itself"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_96a5f448","line":15,"in_reply_to":"bacf61ea_cc34eafc","updated":"2016-08-03 16:48:51.000000000","message":"Yeah, thats a good point, +1 that.\n\nKey bit, this is before the live-migration starts and before there is any VM on the destination.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"* pre_live_migration - executed before migration"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* live_migration_operation - migration itself"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* post_live_migration - executed after migration"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_d9283f88","line":17,"updated":"2016-08-03 16:48:51.000000000","message":"I think we actually need to split this into two stages:\n\n* before the VM is running on the destination, and after the VM is running on the destination, but we are still completing the live-migrate operation.\n\nBasically this is all about the new \"post copy\" feature here:\nhttp://specs.openstack.org/openstack/nova-specs/specs/newton/approved/auto-live-migration-completion.html","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"* pre_live_migration - executed before migration"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* live_migration_operation - migration itself"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* post_live_migration - executed after migration"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_e3cbaea3","line":17,"in_reply_to":"bacf61ea_d9283f88","updated":"2016-08-24 13:02:42.000000000","message":"Done","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* live_migration_operation - migration itself"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* post_live_migration - executed after migration"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Today, the portbinding to the migration target host happens in the"},{"line_number":22,"context_line":"post_live_migration stage. But this is too late. In some cases it is essential"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_39b4fbf0","line":19,"updated":"2016-08-03 16:48:51.000000000","message":"This is the point where the source VM no longer exists, and we tidy up any left behind bits at the source, like dangling volume connections, etc.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"* live_migration_operation - migration itself"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* post_live_migration - executed after migration"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Today, the portbinding to the migration target host happens in the"},{"line_number":22,"context_line":"post_live_migration stage. But this is too late. In some cases it is essential"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_e3272e62","line":19,"in_reply_to":"bacf61ea_39b4fbf0","updated":"2016-08-24 13:02:42.000000000","message":"Done","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":22,"context_line":"post_live_migration stage. But this is too late. In some cases it is essential"},{"line_number":23,"context_line":"for Nova to have the portbinding information for the target host already"},{"line_number":24,"context_line":"available in pre_live_migration. Just moving the portbinding from post to"},{"line_number":25,"context_line":"pre_live_migration will not work out with some mechanism drivers. The problem"},{"line_number":26,"context_line":"is, that the original binding would be removed from the source, although the"},{"line_number":27,"context_line":"instance is still active there. More details are further below in this spec."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_9f6df29a","line":25,"updated":"2016-07-28 23:37:16.000000000","message":"even if we kept both bindings, I guess mechanism drivers would need to be adapted, but I guess we can drill down into that later.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":22,"context_line":"post_live_migration stage. But this is too late. In some cases it is essential"},{"line_number":23,"context_line":"for Nova to have the portbinding information for the target host already"},{"line_number":24,"context_line":"available in pre_live_migration. Just moving the portbinding from post to"},{"line_number":25,"context_line":"pre_live_migration will not work out with some mechanism drivers. The problem"},{"line_number":26,"context_line":"is, that the original binding would be removed from the source, although the"},{"line_number":27,"context_line":"instance is still active there. More details are further below in this spec."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_7e30f19e","line":25,"in_reply_to":"bacf61ea_797cb320","updated":"2016-08-24 13:02:42.000000000","message":"Everything that is related to having 2 bindings should be covered by this spec. If you\u0027re missing some details there, we should enrich the spec with those details","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":22,"context_line":"post_live_migration stage. But this is too late. In some cases it is essential"},{"line_number":23,"context_line":"for Nova to have the portbinding information for the target host already"},{"line_number":24,"context_line":"available in pre_live_migration. Just moving the portbinding from post to"},{"line_number":25,"context_line":"pre_live_migration will not work out with some mechanism drivers. The problem"},{"line_number":26,"context_line":"is, that the original binding would be removed from the source, although the"},{"line_number":27,"context_line":"instance is still active there. More details are further below in this spec."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_797cb320","line":25,"in_reply_to":"bacf61ea_9f6df29a","updated":"2016-08-03 16:48:51.000000000","message":"probably easier if we make extra info available, and then have a follow on spec (or whatever) for those deeper changes? Is that normal?","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Neutron needs to provide a way to allow such an early binding, without removing"},{"line_number":30,"context_line":"the original binding from the source. The proposal is to have a compute port"},{"line_number":31,"context_line":"bound to the source AND target host during migration, where only one of the"},{"line_number":32,"context_line":"bindings is the active binding."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Problem Description"},{"line_number":35,"context_line":"\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":13,"id":"bacf61ea_1f0aa221","line":32,"updated":"2016-07-28 23:37:16.000000000","message":"Furthermore, there\u0027s a need to keep hold of the old target (the host where the VM is migrating from) in case of failures during any of the migration stages that require to rollback the entire operation. It would be nice to keep this information rather than having to update it again.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Neutron needs to provide a way to allow such an early binding, without removing"},{"line_number":30,"context_line":"the original binding from the source. The proposal is to have a compute port"},{"line_number":31,"context_line":"bound to the source AND target host during migration, where only one of the"},{"line_number":32,"context_line":"bindings is the active binding."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Problem Description"},{"line_number":35,"context_line":"\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":13,"id":"bacf61ea_b9fc6b3f","line":32,"in_reply_to":"bacf61ea_1f0aa221","updated":"2016-08-03 16:48:51.000000000","message":"Yeah, the rollback case is quite common for things like migration/resize, although currently the VM gets turned off for those operations, so the current method works just fine for that case. But it would be nice to have the same flow for both cases, so we don\u0027t get confused.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Neutron needs to provide a way to allow such an early binding, without removing"},{"line_number":30,"context_line":"the original binding from the source. The proposal is to have a compute port"},{"line_number":31,"context_line":"bound to the source AND target host during migration, where only one of the"},{"line_number":32,"context_line":"bindings is the active binding."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Problem Description"},{"line_number":35,"context_line":"\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":13,"id":"1ac06dbe_beeb89af","line":32,"in_reply_to":"bacf61ea_b9fc6b3f","updated":"2016-08-24 13:02:42.000000000","message":"added a note","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    stuck in error state. If portbinding for the target node would be done in"},{"line_number":46,"context_line":"    pre_live_migration, migration could be aborted on a binding failure and the"},{"line_number":47,"context_line":"    instance would still be active on the migration source host. But we"},{"line_number":48,"context_line":"    cannot just do so, as some TOR mech drivers would shut down the source"},{"line_number":49,"context_line":"    port after the binding has been updated, although the instance is still"},{"line_number":50,"context_line":"    active on the source. If we could bind a compute port to both hosts, such"},{"line_number":51,"context_line":"    drivers could keep the source port open, and already process the target"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_5f409aa5","line":48,"updated":"2016-07-28 23:37:16.000000000","message":"I guess this point and point made at line 25 means that perhaps certain drivers may not be capable of supporting a staged live migration, and as such we need to advertise when they are capable of doing so?","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    stuck in error state. If portbinding for the target node would be done in"},{"line_number":46,"context_line":"    pre_live_migration, migration could be aborted on a binding failure and the"},{"line_number":47,"context_line":"    instance would still be active on the migration source host. But we"},{"line_number":48,"context_line":"    cannot just do so, as some TOR mech drivers would shut down the source"},{"line_number":49,"context_line":"    port after the binding has been updated, although the instance is still"},{"line_number":50,"context_line":"    active on the source. If we could bind a compute port to both hosts, such"},{"line_number":51,"context_line":"    drivers could keep the source port open, and already process the target"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_f949c38f","line":48,"in_reply_to":"bacf61ea_5f409aa5","updated":"2016-08-03 16:48:51.000000000","message":"Yeah, needs to be some kind of capability system.\n\nI guess from an API user point of view (i.e. Nova view), this is just a no-op for drivers that don\u0027t support the new system?","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    stuck in error state. If portbinding for the target node would be done in"},{"line_number":46,"context_line":"    pre_live_migration, migration could be aborted on a binding failure and the"},{"line_number":47,"context_line":"    instance would still be active on the migration source host. But we"},{"line_number":48,"context_line":"    cannot just do so, as some TOR mech drivers would shut down the source"},{"line_number":49,"context_line":"    port after the binding has been updated, although the instance is still"},{"line_number":50,"context_line":"    active on the source. If we could bind a compute port to both hosts, such"},{"line_number":51,"context_line":"    drivers could keep the source port open, and already process the target"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_89865963","line":48,"in_reply_to":"bacf61ea_f949c38f","updated":"2016-08-24 13:02:42.000000000","message":"it depends on how this feature is implemented. We could also try to keep drivers as is and do all the magic in the ml2 plugin. \n\nI think the problem is a little more complex, as also hierachical binding exists. So we might need some indication that a combination of drivers supports this new mode. I\u0027ll add some sentences in the \"proposed changes\" section","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    A specialized variant of this use case is the migration from an agent with"},{"line_number":64,"context_line":"    one firewall driver to another (e.g. from ovs hybrid-fw driver to new ovs"},{"line_number":65,"context_line":"    conntrackd firewall driver)."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"* Live migration with MacVTap agent when different physnet mappings is used"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_e49d9abc","line":65,"updated":"2016-08-03 16:48:51.000000000","message":"So there are limits here. For live-migrate the networking must look the same to the guest on source and destination. For example, we can\u0027t switch from virtual to direct SRIOV (we possibly could in the macvtap case).\n\nIn resize/migrate where we power down the VM, we could do more drastic things, but thats likely to end in disaster.\n\nNot sure if we need to state that here, I guess we should. Not quite sure how we check for abi compatible moves on the libvirt side. It would be nice to say no XML tweaks, but thats not correct here.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    A specialized variant of this use case is the migration from an agent with"},{"line_number":64,"context_line":"    one firewall driver to another (e.g. from ovs hybrid-fw driver to new ovs"},{"line_number":65,"context_line":"    conntrackd firewall driver)."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"* Live migration with MacVTap agent when different physnet mappings is used"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_6922fd01","line":65,"in_reply_to":"bacf61ea_e49d9abc","updated":"2016-08-24 13:02:42.000000000","message":"There\u0027s a vnic type associated with a binding. The scenario you\u0027re referring to is a migration that also changes the vnic type. So could we just say, changing the vnic type during migration is not allowed?","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    For updating the definition in time, a portbinding for the migration target"},{"line_number":75,"context_line":"    node is required even before the migration started. Along the argumentation"},{"line_number":76,"context_line":"    above, we need a compute port bound to multiple hosts."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Proposed Change"},{"line_number":79,"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":13,"id":"bacf61ea_df63ea18","line":76,"updated":"2016-07-28 23:37:16.000000000","message":"when you say multiple do you intend at least two or at most two? For instance do we know if Nova would ever want to provide a list of potential destination targets to which a VM may migrate to (in case one fail another can be used as fallback)?","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    For updating the definition in time, a portbinding for the migration target"},{"line_number":75,"context_line":"    node is required even before the migration started. Along the argumentation"},{"line_number":76,"context_line":"    above, we need a compute port bound to multiple hosts."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Proposed Change"},{"line_number":79,"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":13,"id":"1ac06dbe_44ef28b0","line":76,"in_reply_to":"bacf61ea_643a4a36","updated":"2016-08-24 13:02:42.000000000","message":"Johns comment describes what I intended here.\n\nThe point is, that this kind of information is provided by neutron (taken from the physical_interface_mappings variable). As of today, only one interface per physical network is allowed. That means, we would need exactly 2 bindings, the existing binding which is active on the source and target binding. I will add a few more details.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    For updating the definition in time, a portbinding for the migration target"},{"line_number":75,"context_line":"    node is required even before the migration started. Along the argumentation"},{"line_number":76,"context_line":"    above, we need a compute port bound to multiple hosts."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Proposed Change"},{"line_number":79,"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":13,"id":"bacf61ea_643a4a36","line":76,"in_reply_to":"bacf61ea_df63ea18","updated":"2016-08-03 16:48:51.000000000","message":"Hmm, we could do that kind of thing, we were thinking about something a bit like that for watcher. But I think this just means \"bound to the source and destination hosts before the live-migrate starts\"?","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":95,"context_line":"   activating a binding."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"#4 Add an API to allow 2 portbindings, one active and one inactive, for a"},{"line_number":98,"context_line":"   compute port."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Note: Steps #1 and #2 can also be implemented without having this migration"},{"line_number":101,"context_line":"enhancement in mind."}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_57825301","line":98,"updated":"2016-08-03 16:48:51.000000000","message":"Nit: I think if you talk about the API interaction first, then about the #3, I think this will be easer to follow. I would be tempted about talking about the API interaction first.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":95,"context_line":"   activating a binding."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"#4 Add an API to allow 2 portbindings, one active and one inactive, for a"},{"line_number":98,"context_line":"   compute port."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Note: Steps #1 and #2 can also be implemented without having this migration"},{"line_number":101,"context_line":"enhancement in mind."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_d11c7315","line":98,"in_reply_to":"bacf61ea_57825301","updated":"2016-08-24 13:02:42.000000000","message":"reverted the order, but kept the numbers","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":97,"context_line":"#4 Add an API to allow 2 portbindings, one active and one inactive, for a"},{"line_number":98,"context_line":"   compute port."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Note: Steps #1 and #2 can also be implemented without having this migration"},{"line_number":101,"context_line":"enhancement in mind."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Nova would request the binding for the migration target host in"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_3f5a0651","line":100,"updated":"2016-07-28 23:37:16.000000000","message":"Step #1 and #2 are preparatory to #3 and #4, in other words.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":97,"context_line":"#4 Add an API to allow 2 portbindings, one active and one inactive, for a"},{"line_number":98,"context_line":"   compute port."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Note: Steps #1 and #2 can also be implemented without having this migration"},{"line_number":101,"context_line":"enhancement in mind."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Nova would request the binding for the migration target host in"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_11aa8b70","line":100,"in_reply_to":"bacf61ea_3f5a0651","updated":"2016-08-24 13:02:42.000000000","message":"yes. that\u0027s what the numbers should indicate. My point is just, even if we will not implement multiple bindings, implementing steps #1 and #2 might make sense for code cleanup. I remove this remark.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":105,"context_line":"source and target host, and for that time temporarily become a distributed"},{"line_number":106,"context_line":"port. In post_live_migration, the source binding will be"},{"line_number":107,"context_line":"removed. The port is a normal port again. For more details on the Nova"},{"line_number":108,"context_line":"implementation , see the related Nova Blueprint `[3]`_ and its spec `[4]`_."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"#1 Datamodel changes"},{"line_number":111,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_ff3eaed8","line":108,"updated":"2016-07-28 23:37:16.000000000","message":"what would be great here is a sequence diagram to visualize these interaction.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":105,"context_line":"source and target host, and for that time temporarily become a distributed"},{"line_number":106,"context_line":"port. In post_live_migration, the source binding will be"},{"line_number":107,"context_line":"removed. The port is a normal port again. For more details on the Nova"},{"line_number":108,"context_line":"implementation , see the related Nova Blueprint `[3]`_ and its spec `[4]`_."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"#1 Datamodel changes"},{"line_number":111,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_ecfef636","line":108,"in_reply_to":"bacf61ea_ff3eaed8","updated":"2016-08-24 13:02:42.000000000","message":"Will add one in one of the next patchsets.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":117,"context_line":"binding data is stored in a single table, but there are still two separate"},{"line_number":118,"context_line":"binding paths for normal and distributed ports (like prototype patch `[8]`_)."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"#2 Unify the bindig logic"},{"line_number":121,"context_line":"-------------------------"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Rework the binding code in a way, that only one portbinding logic exists."}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_1f45826f","line":120,"updated":"2016-07-28 23:37:16.000000000","message":"binding","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":117,"context_line":"binding data is stored in a single table, but there are still two separate"},{"line_number":118,"context_line":"binding paths for normal and distributed ports (like prototype patch `[8]`_)."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"#2 Unify the bindig logic"},{"line_number":121,"context_line":"-------------------------"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Rework the binding code in a way, that only one portbinding logic exists."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_6799811f","line":120,"in_reply_to":"bacf61ea_1f45826f","updated":"2016-08-24 13:02:42.000000000","message":"Done","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"This should be handled in a separate bug/blueprint."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Alternative to #1 and #2: Go with current portbindings schema and logic"},{"line_number":131,"context_line":"-----------------------------------------------------------------------"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Today two binding tables exist, one for normal, one for distributed"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_62fa25bf","line":130,"updated":"2016-07-28 23:37:16.000000000","message":"At this point I\u0027d suggest you to present pros and cons between the approach you present here as the alternative to Stage 1/2, otherwise this paragraph is rather difficult to parse.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"This should be handled in a separate bug/blueprint."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Alternative to #1 and #2: Go with current portbindings schema and logic"},{"line_number":131,"context_line":"-----------------------------------------------------------------------"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Today two binding tables exist, one for normal, one for distributed"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_652084b1","line":130,"in_reply_to":"bacf61ea_62fa25bf","updated":"2016-08-03 16:48:51.000000000","message":"I would kill this section, it sounds like its messy already, without having to parse this.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"This should be handled in a separate bug/blueprint."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Alternative to #1 and #2: Go with current portbindings schema and logic"},{"line_number":131,"context_line":"-----------------------------------------------------------------------"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Today two binding tables exist, one for normal, one for distributed"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_c2a6630f","line":130,"in_reply_to":"bacf61ea_652084b1","updated":"2016-08-24 13:02:42.000000000","message":"killed it!","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"#3 Split binding logic into 2 steps: create and activate"},{"line_number":178,"context_line":"--------------------------------------------------------"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Only one binding must be active at a time, to work properly with l2pop and"},{"line_number":181,"context_line":"other third party mechanism drivers (more details, in the alternatives"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_772037b1","line":178,"updated":"2016-08-03 16:48:51.000000000","message":"Nit: I can\u0027t really read this before I understand step 4.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"#3 Split binding logic into 2 steps: create and activate"},{"line_number":178,"context_line":"--------------------------------------------------------"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Only one binding must be active at a time, to work properly with l2pop and"},{"line_number":181,"context_line":"other third party mechanism drivers (more details, in the alternatives"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_1422f4a2","line":178,"in_reply_to":"bacf61ea_772037b1","updated":"2016-08-24 13:02:42.000000000","message":"yeah, I will present in top-down.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":2888,"name":"Mathieu Rohon","email":"mathieu.rohon@gmail.com","username":"mathieu-rohon"},"change_message_id":"d931d9e6179b4d9c5e8708935a92f0faa506ab8b","unresolved":false,"context_lines":[{"line_number":184,"context_line":"During creation, vif_details and so on must be created an stored in DB."},{"line_number":185,"context_line":"During activation, RPC events can be emitted."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"Such a split is not required for create_port*, as there will be now way to"},{"line_number":188,"context_line":"create a port right from the beginning with a migration binding. It\u0027s also"},{"line_number":189,"context_line":"not relevant for delete_port*, as with port deletion all bindings will get"},{"line_number":190,"context_line":"removed and deactivated. It is only relevant for udpate_port* scenarios."}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_f7b3ca08","line":187,"range":{"start_line":187,"start_character":64,"end_line":187,"end_character":67},"updated":"2016-07-27 15:42:54.000000000","message":"nit : now -\u003e no","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":184,"context_line":"During creation, vif_details and so on must be created an stored in DB."},{"line_number":185,"context_line":"During activation, RPC events can be emitted."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"Such a split is not required for create_port*, as there will be now way to"},{"line_number":188,"context_line":"create a port right from the beginning with a migration binding. It\u0027s also"},{"line_number":189,"context_line":"not relevant for delete_port*, as with port deletion all bindings will get"},{"line_number":190,"context_line":"removed and deactivated. It is only relevant for udpate_port* scenarios."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_b43320f5","line":187,"range":{"start_line":187,"start_character":64,"end_line":187,"end_character":67},"in_reply_to":"bacf61ea_f7b3ca08","updated":"2016-08-24 13:02:42.000000000","message":"reworked the whole section","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":2888,"name":"Mathieu Rohon","email":"mathieu.rohon@gmail.com","username":"mathieu-rohon"},"change_message_id":"d931d9e6179b4d9c5e8708935a92f0faa506ab8b","unresolved":false,"context_lines":[{"line_number":205,"context_line":"   * update_port_postcommit"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"     Those 2 methods need to be executed at activation time, as they either"},{"line_number":208,"context_line":"     emmit some RPC calls to agents (l2pop) or do some write interactions with"},{"line_number":209,"context_line":"     OpenStack external controllers (e.g. cisco mechanisms). For the reference"},{"line_number":210,"context_line":"     implementations (ovs, linuxbridge, macvtap, sr-iov) a provisioning block"},{"line_number":211,"context_line":"     is being set on update_port_*commit."}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_77c4fa3f","line":208,"range":{"start_line":208,"start_character":37,"end_line":208,"end_character":42},"updated":"2016-07-27 15:42:54.000000000","message":"not only l2pop, the plugin is sending a port_update rpc call to agents (AFAIR)","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":205,"context_line":"   * update_port_postcommit"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"     Those 2 methods need to be executed at activation time, as they either"},{"line_number":208,"context_line":"     emmit some RPC calls to agents (l2pop) or do some write interactions with"},{"line_number":209,"context_line":"     OpenStack external controllers (e.g. cisco mechanisms). For the reference"},{"line_number":210,"context_line":"     implementations (ovs, linuxbridge, macvtap, sr-iov) a provisioning block"},{"line_number":211,"context_line":"     is being set on update_port_*commit."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_d4ee9c20","line":208,"range":{"start_line":208,"start_character":37,"end_line":208,"end_character":42},"in_reply_to":"bacf61ea_77c4fa3f","updated":"2016-08-24 13:02:42.000000000","message":"you\u0027re right! in _bind_port_if_needed!","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":211,"context_line":"     is being set on update_port_*commit."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"To determine whether create or activate, or both should be processed, a new"},{"line_number":214,"context_line":"identifier is required. The distributed portbinding table already has a column"},{"line_number":215,"context_line":"\u0027status\u0027, which is not used for normal ports right now. We could use that"},{"line_number":216,"context_line":"to indicate that a binding is activated or not activated (Don\u0027t mix it up with"},{"line_number":217,"context_line":"\u0027active\u0027, \u0027inactive). But we could also introduce a new db column for that."}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_c2d67126","line":214,"updated":"2016-07-28 23:37:16.000000000","message":"new identifier where? I don\u0027t understand.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":211,"context_line":"     is being set on update_port_*commit."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"To determine whether create or activate, or both should be processed, a new"},{"line_number":214,"context_line":"identifier is required. The distributed portbinding table already has a column"},{"line_number":215,"context_line":"\u0027status\u0027, which is not used for normal ports right now. We could use that"},{"line_number":216,"context_line":"to indicate that a binding is activated or not activated (Don\u0027t mix it up with"},{"line_number":217,"context_line":"\u0027active\u0027, \u0027inactive). But we could also introduce a new db column for that."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_b7196224","line":214,"in_reply_to":"bacf61ea_c2d67126","updated":"2016-08-24 13:02:42.000000000","message":"elaborated more on that in the next patchset.\n\nMy point is, we need some indication whether to process the creation or the activation of the binding. this might end up in a few if-else statements in the update_port stack","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":214,"context_line":"identifier is required. The distributed portbinding table already has a column"},{"line_number":215,"context_line":"\u0027status\u0027, which is not used for normal ports right now. We could use that"},{"line_number":216,"context_line":"to indicate that a binding is activated or not activated (Don\u0027t mix it up with"},{"line_number":217,"context_line":"\u0027active\u0027, \u0027inactive). But we could also introduce a new db column for that."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"If an update_port is issued with a binding in status \u0027migration-inactive\u0027"},{"line_number":220,"context_line":"(explicitly requested by this new migration extension), all mech_driver calls"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_22b5cded","line":217,"updated":"2016-07-28 23:37:16.000000000","message":"to be honest this paragraph is a little hard to read.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":214,"context_line":"identifier is required. The distributed portbinding table already has a column"},{"line_number":215,"context_line":"\u0027status\u0027, which is not used for normal ports right now. We could use that"},{"line_number":216,"context_line":"to indicate that a binding is activated or not activated (Don\u0027t mix it up with"},{"line_number":217,"context_line":"\u0027active\u0027, \u0027inactive). But we could also introduce a new db column for that."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"If an update_port is issued with a binding in status \u0027migration-inactive\u0027"},{"line_number":220,"context_line":"(explicitly requested by this new migration extension), all mech_driver calls"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_5757f301","line":217,"in_reply_to":"bacf61ea_22b5cded","updated":"2016-08-03 16:48:51.000000000","message":"I think its easier if the spec chooses one way, then keeps the alternatives very separate, and only added if really needed. But thats just my nova based preference.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":214,"context_line":"identifier is required. The distributed portbinding table already has a column"},{"line_number":215,"context_line":"\u0027status\u0027, which is not used for normal ports right now. We could use that"},{"line_number":216,"context_line":"to indicate that a binding is activated or not activated (Don\u0027t mix it up with"},{"line_number":217,"context_line":"\u0027active\u0027, \u0027inactive). But we could also introduce a new db column for that."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"If an update_port is issued with a binding in status \u0027migration-inactive\u0027"},{"line_number":220,"context_line":"(explicitly requested by this new migration extension), all mech_driver calls"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_97c26651","line":217,"in_reply_to":"bacf61ea_5757f301","updated":"2016-08-24 13:02:42.000000000","message":"I reworked the whole section","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":2888,"name":"Mathieu Rohon","email":"mathieu.rohon@gmail.com","username":"mathieu-rohon"},"change_message_id":"d931d9e6179b4d9c5e8708935a92f0faa506ab8b","unresolved":false,"context_lines":[{"line_number":220,"context_line":"(explicitly requested by this new migration extension), all mech_driver calls"},{"line_number":221,"context_line":"update_port_*_commit are skipped, but only bind_port is executed."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"If and update_port is issued with a binding status migraton-active (explicitly"},{"line_number":224,"context_line":"requested by the migration extension on deletion of the second binding), only"},{"line_number":225,"context_line":"the activate methods are executed during portbinding logic. bind_port is being"},{"line_number":226,"context_line":"skipped."}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_d7ba066e","line":223,"range":{"start_line":223,"start_character":3,"end_line":223,"end_character":6},"updated":"2016-07-27 15:42:54.000000000","message":"nit : and-\u003e an","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":231,"context_line":"--------------------------------------------"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Add a Port extension, that offers an API to"},{"line_number":234,"context_line":" * add a second binding to a port"},{"line_number":235,"context_line":" * get the list of bindings for this port"},{"line_number":236,"context_line":" * remove one of the bindings (you cannot remove the last binding)"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_17129bb4","line":234,"range":{"start_line":234,"start_character":0,"end_line":234,"end_character":33},"updated":"2016-08-03 16:48:51.000000000","message":"So we already have this API that was added to warning about the migration being about the happen:\nhttps://review.openstack.org/#/c/275420/\n\nIt would be good to talk about what happens to that API. I think it probably just needs to stop being used by Nova, and somehow gets mapped into the new process below.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":231,"context_line":"--------------------------------------------"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Add a Port extension, that offers an API to"},{"line_number":234,"context_line":" * add a second binding to a port"},{"line_number":235,"context_line":" * get the list of bindings for this port"},{"line_number":236,"context_line":" * remove one of the bindings (you cannot remove the last binding)"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_f7c91a27","line":234,"range":{"start_line":234,"start_character":0,"end_line":234,"end_character":33},"in_reply_to":"bacf61ea_17129bb4","updated":"2016-08-24 13:02:42.000000000","message":"what this api does is informing neutron that a migration to target X is going to happen. Then neutron can start spinning up some stuff on the target node before migration gets executed. \n\nThe proposed API is called before migration and the call  contains the migration target -\u003e this is exactly what the other API does. \n\nSo the proposed API could replace the existing API here.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":233,"context_line":"Add a Port extension, that offers an API to"},{"line_number":234,"context_line":" * add a second binding to a port"},{"line_number":235,"context_line":" * get the list of bindings for this port"},{"line_number":236,"context_line":" * remove one of the bindings (you cannot remove the last binding)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"List Ports"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_97afabe2","line":236,"range":{"start_line":236,"start_character":30,"end_line":236,"end_character":66},"updated":"2016-08-03 16:48:51.000000000","message":"We unbind a port today in Nova, so surely that is possible?","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":233,"context_line":"Add a Port extension, that offers an API to"},{"line_number":234,"context_line":" * add a second binding to a port"},{"line_number":235,"context_line":" * get the list of bindings for this port"},{"line_number":236,"context_line":" * remove one of the bindings (you cannot remove the last binding)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"List Ports"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_570aae26","line":236,"range":{"start_line":236,"start_character":30,"end_line":236,"end_character":66},"in_reply_to":"bacf61ea_97afabe2","updated":"2016-08-24 13:02:42.000000000","message":"I made this more clear in the new version of the patchset. The proposed API is not meant as a general new api for managing bindings. It\u0027s just for the migration cases. The \"active\" binding should still be managed by the existing APIs. So unbinding would work as today.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":271,"context_line":"   * - vnic_type"},{"line_number":272,"context_line":"     - plain"},{"line_number":273,"context_line":"     - xsd:string"},{"line_number":274,"context_line":"     - Read-only. The VNIC type for this portbinding."},{"line_number":275,"context_line":"   * - profile"},{"line_number":276,"context_line":"     - plain"},{"line_number":277,"context_line":"     - xsd:dict"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_e288d524","line":274,"updated":"2016-07-28 23:37:16.000000000","message":"Do I understand correctly that the top-level attributes are attributes duplicated from the \u0027active\u0027 binding? Why not reference the binding itself?","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":271,"context_line":"   * - vnic_type"},{"line_number":272,"context_line":"     - plain"},{"line_number":273,"context_line":"     - xsd:string"},{"line_number":274,"context_line":"     - Read-only. The VNIC type for this portbinding."},{"line_number":275,"context_line":"   * - profile"},{"line_number":276,"context_line":"     - plain"},{"line_number":277,"context_line":"     - xsd:dict"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_dd4fd868","line":274,"in_reply_to":"bacf61ea_e288d524","updated":"2016-08-24 13:02:42.000000000","message":"yeah - I reworked the API a bit. Now the active binding is can be seen like today via the show port API. This new API only lists the single inactive binding.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":280,"context_line":"::"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    {"},{"line_number":283,"context_line":"        bindings: ["},{"line_number":284,"context_line":"            {"},{"line_number":285,"context_line":"                \"host_id\": \"host1\","},{"line_number":286,"context_line":"                \"vif_type\": \"ovs\""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_42cd615c","line":283,"updated":"2016-07-28 23:37:16.000000000","message":"do bindings need an identifier now? Perhaps the response could be simplified if we did? I am not sure I agree with the proposed representation where we duplicate attributes of the binding and we have no clear idea which binding is which.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"The following restrictions are considered when creating a new binding:"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"  * len(existing_bindings) \u003c 1: Return error"},{"line_number":312,"context_line":"  * len(existing_bindings) \u003d\u003d 1: OK, creation allowed"},{"line_number":313,"context_line":"  * len(existing_bindings) \u003e 1 Return error"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"Note: Creation of a binding will only trigger the creation. It will not trigger"},{"line_number":316,"context_line":"the activation of the binding."}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_0bd39660","line":313,"range":{"start_line":311,"start_character":0,"end_line":313,"end_character":43},"updated":"2016-08-03 16:48:51.000000000","message":"So this seems odd...\n\nSurely, we would allow all port bindings to be added using this new method? The old methods just become an alias for the new method.\n\nIts common for ports to have no binding when first created, so it seems correct to start and that state, then add one or more binding, and roll back from that point.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"The following restrictions are considered when creating a new binding:"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"  * len(existing_bindings) \u003c 1: Return error"},{"line_number":312,"context_line":"  * len(existing_bindings) \u003d\u003d 1: OK, creation allowed"},{"line_number":313,"context_line":"  * len(existing_bindings) \u003e 1 Return error"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"Note: Creation of a binding will only trigger the creation. It will not trigger"},{"line_number":316,"context_line":"the activation of the binding."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_4e4e903b","line":313,"range":{"start_line":311,"start_character":0,"end_line":313,"end_character":43},"in_reply_to":"bacf61ea_0bd39660","updated":"2016-08-24 13:02:42.000000000","message":"agree. This restriction only apply to the second (inactive) binding. I\u0027ll add more details here","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":388,"context_line":"~~~~~~~~~~~~~~"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"No use case for updating a binding, as only the host-id can be modified."},{"line_number":391,"context_line":"Instead of updating a binding you should create a new one and delete the old"},{"line_number":392,"context_line":"one."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"Delete Binding"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_225b0d89","line":391,"updated":"2016-07-28 23:37:16.000000000","message":"Do we want to take the opportunity to move away from host_id being effectively the identifier for the binding? Host names can change and I always felt that was potentially error prone.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":388,"context_line":"~~~~~~~~~~~~~~"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"No use case for updating a binding, as only the host-id can be modified."},{"line_number":391,"context_line":"Instead of updating a binding you should create a new one and delete the old"},{"line_number":392,"context_line":"one."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"Delete Binding"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_d7aac318","line":391,"in_reply_to":"bacf61ea_225b0d89","updated":"2016-08-03 16:48:51.000000000","message":"Seems like a good chance to add a uuid for the binding.\n\nThat would match what cinder has to attachements, I think.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":388,"context_line":"~~~~~~~~~~~~~~"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"No use case for updating a binding, as only the host-id can be modified."},{"line_number":391,"context_line":"Instead of updating a binding you should create a new one and delete the old"},{"line_number":392,"context_line":"one."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"Delete Binding"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_ce65601e","line":391,"in_reply_to":"bacf61ea_d7aac318","updated":"2016-08-24 13:02:42.000000000","message":"Using a UUID is not required for this feature, but of course it would work with. I personally would rather consider this as a separate effort.\n\nI\u0027m also not sure what it would buy us. What we need is an identifier for a host. If we don\u0027t use the hostname - we need something else. What would that be? AFAIK the hostname can be configured in a config file (cfg.CONF.host), so it can have any value (not necessarily the real hostname).","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":399,"context_line":""},{"line_number":400,"context_line":"  * len(existing_bindings) \u003c 2: Return error"},{"line_number":401,"context_line":"  * len(existing_bindings) \u003d\u003d 2: OK, continue with deletion"},{"line_number":402,"context_line":"  * len(existing_bindings) \u003e 1 Return error (would be a bug)"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"Note: If a binding get\u0027s deleted, the extensinon will trigger the activation"},{"line_number":405,"context_line":"of the second binding."}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_4bcd8eb6","line":402,"updated":"2016-08-03 16:48:51.000000000","message":"As above, it seems strange not to deal with all bindings in the same way.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":399,"context_line":""},{"line_number":400,"context_line":"  * len(existing_bindings) \u003c 2: Return error"},{"line_number":401,"context_line":"  * len(existing_bindings) \u003d\u003d 2: OK, continue with deletion"},{"line_number":402,"context_line":"  * len(existing_bindings) \u003e 1 Return error (would be a bug)"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"Note: If a binding get\u0027s deleted, the extensinon will trigger the activation"},{"line_number":405,"context_line":"of the second binding."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_89da4215","line":402,"in_reply_to":"bacf61ea_4bcd8eb6","updated":"2016-08-24 13:02:42.000000000","message":"That\u0027s a decision we have to make! The idea of this spec was to have a migration specific solution rather than a general purpose portbinding API, but I\u0027m open for suggestions here!","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":425,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"None! If there are multiple bindings available for a port, but only one"},{"line_number":428,"context_line":"of them is activated, then just the activated binding will be displayed in"},{"line_number":429,"context_line":"show port."},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"Floating IPs"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_02d529b8","line":428,"updated":"2016-07-28 23:37:16.000000000","message":"how do you mark one binding being the \u0027active\u0027 one?","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":425,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"None! If there are multiple bindings available for a port, but only one"},{"line_number":428,"context_line":"of them is activated, then just the activated binding will be displayed in"},{"line_number":429,"context_line":"show port."},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"Floating IPs"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_7ad81e80","line":428,"in_reply_to":"bacf61ea_02d529b8","updated":"2016-08-03 16:48:51.000000000","message":"Yeah, I am lost on how to do that.\n\nI also don\u0027t get how this API changes:\nhttps://review.openstack.org/#/c/275420/\n\nI think it needs mapping to the new system","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":425,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"None! If there are multiple bindings available for a port, but only one"},{"line_number":428,"context_line":"of them is activated, then just the activated binding will be displayed in"},{"line_number":429,"context_line":"show port."},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"Floating IPs"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_e936564f","line":428,"in_reply_to":"bacf61ea_7ad81e80","updated":"2016-08-24 13:02:42.000000000","message":"there will be a flag or so in the db indicating whether a binding is active or not.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":431,"context_line":"Floating IPs"},{"line_number":432,"context_line":"~~~~~~~~~~~~"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"Floating IPs will always be active on the acvtivated ports."},{"line_number":435,"context_line":""},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"More details on L2population and external mechanism drivers"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_42d721bf","line":434,"updated":"2016-07-28 23:37:16.000000000","message":"not sure what this means.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":431,"context_line":"Floating IPs"},{"line_number":432,"context_line":"~~~~~~~~~~~~"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"Floating IPs will always be active on the acvtivated ports."},{"line_number":435,"context_line":""},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"More details on L2population and external mechanism drivers"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_296b4e1f","line":434,"in_reply_to":"bacf61ea_42d721bf","updated":"2016-08-24 13:02:42.000000000","message":"My point was, that floating ips are only implemented on the host with the active binding. I\u0027ll remove this section totally.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":2888,"name":"Mathieu Rohon","email":"mathieu.rohon@gmail.com","username":"mathieu-rohon"},"change_message_id":"d931d9e6179b4d9c5e8708935a92f0faa506ab8b","unresolved":false,"context_lines":[{"line_number":437,"context_line":"More details on L2population and external mechanism drivers"},{"line_number":438,"context_line":"-----------------------------------------------------------"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"This is a more detailed elaboration we we can\u0027t have multiple activated"},{"line_number":441,"context_line":"bindings for compute ports during migration along the l2pop mechanism driver."},{"line_number":442,"context_line":"Potentially this problem exists for other external mechanism drivers as well."},{"line_number":443,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_1cf685d7","line":440,"range":{"start_line":440,"start_character":39,"end_line":440,"end_character":41},"updated":"2016-07-27 15:42:54.000000000","message":"nit: duplicated \u0027we\u0027","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":437,"context_line":"More details on L2population and external mechanism drivers"},{"line_number":438,"context_line":"-----------------------------------------------------------"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"This is a more detailed elaboration we we can\u0027t have multiple activated"},{"line_number":441,"context_line":"bindings for compute ports during migration along the l2pop mechanism driver."},{"line_number":442,"context_line":"Potentially this problem exists for other external mechanism drivers as well."},{"line_number":443,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_c9627a3d","line":440,"range":{"start_line":440,"start_character":39,"end_line":440,"end_character":41},"in_reply_to":"bacf61ea_1cf685d7","updated":"2016-08-24 13:02:42.000000000","message":"Done","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":2888,"name":"Mathieu Rohon","email":"mathieu.rohon@gmail.com","username":"mathieu-rohon"},"change_message_id":"d931d9e6179b4d9c5e8708935a92f0faa506ab8b","unresolved":false,"context_lines":[{"line_number":448,"context_line":"messages via RPC to the agents. Those agents will implement the forwarding"},{"line_number":449,"context_line":"rules on the host. The problem is, that now 2 rules for a mac and ip address"},{"line_number":450,"context_line":"exists. One rule says, MAC1 is reachable via vxlan-abc, the other rule says,"},{"line_number":451,"context_line":"MAC1 is reachable via vxlan-def."},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"To get around this, it is desired to have a separation between the creation"},{"line_number":454,"context_line":"of a binding, and its activation (sending out fdb entries)."}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_1d65dfe0","line":451,"range":{"start_line":451,"start_character":31,"end_line":451,"end_character":32},"updated":"2016-07-27 15:42:54.000000000","message":"So we should be able to send traffic to both destinations, by adding new flows in ovs. It needs to be checked for the vxlan module, for linuxbridge.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":448,"context_line":"messages via RPC to the agents. Those agents will implement the forwarding"},{"line_number":449,"context_line":"rules on the host. The problem is, that now 2 rules for a mac and ip address"},{"line_number":450,"context_line":"exists. One rule says, MAC1 is reachable via vxlan-abc, the other rule says,"},{"line_number":451,"context_line":"MAC1 is reachable via vxlan-def."},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"To get around this, it is desired to have a separation between the creation"},{"line_number":454,"context_line":"of a binding, and its activation (sending out fdb entries)."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_e3b2f205","line":451,"range":{"start_line":451,"start_character":31,"end_line":451,"end_character":32},"in_reply_to":"bacf61ea_1d65dfe0","updated":"2016-08-24 13:02:42.000000000","message":"you\u0027re right. I just checked with ovs and it\u0027s working. The flow just needs 2 output ports :)\n\nFor lb it might work as well with traffic control, but I haven\u0027t tried that.\n\nBut the point is, that we probably cannot rely on external mechanism drivers to support this.\n\nBut what about\n- having an API that checks if all mechanism drivers support \"multiple active bindings\" (via a new mech driver interface method)\n- if so create a second active binding\n- process like today and do the binding in post-live migration\n\npro:\n* no separation of binding creation and activation required\n\ncon:\n* unification of portbinding logic required","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":2888,"name":"Mathieu Rohon","email":"mathieu.rohon@gmail.com","username":"mathieu-rohon"},"change_message_id":"d931d9e6179b4d9c5e8708935a92f0faa506ab8b","unresolved":false,"context_lines":[{"line_number":451,"context_line":"MAC1 is reachable via vxlan-def."},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"To get around this, it is desired to have a separation between the creation"},{"line_number":454,"context_line":"of a binding, and its activation (sending out fdb entries)."},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"Changes to Nova"},{"line_number":457,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_5d8d977a","line":454,"range":{"start_line":454,"start_character":57,"end_line":454,"end_character":59},"updated":"2016-07-27 15:42:54.000000000","message":"It is also needed in case of live migration failure, to program the datapath only if the migration succeed, no?","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":451,"context_line":"MAC1 is reachable via vxlan-def."},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"To get around this, it is desired to have a separation between the creation"},{"line_number":454,"context_line":"of a binding, and its activation (sending out fdb entries)."},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"Changes to Nova"},{"line_number":457,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_a6ce48b5","line":454,"range":{"start_line":454,"start_character":57,"end_line":454,"end_character":59},"in_reply_to":"bacf61ea_5d8d977a","updated":"2016-08-24 13:02:42.000000000","message":"I think it would be beneficial to have the datapath programmed before migration (if that works out). My fear is more, that some mechanism drivers can\u0027t deal with that!","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3a2143f7d42301017a2854baab063036c6710c44","unresolved":false,"context_lines":[{"line_number":459,"context_line":"Nova would use that new API. The flow would look like this:"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"* pre_live_migration: Create second binding for target host"},{"line_number":462,"context_line":"* post_live_migration: Remove initial binding (and activate target binding)"},{"line_number":463,"context_line":"* rollback: Remove target binding"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"See the related Nova Blueprint `[3]`_ and its spec `[4]`_."}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_65151ae4","line":462,"updated":"2016-08-03 16:48:51.000000000","message":"We actually have to do that before, in the post_copy case.\n\nIn that case we ideally need to active the target, then delete the old binding in the later case. But I need to think through if we really need that, as I kinda like the delete making the other one active. Although I worry thats going to create problems later.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":459,"context_line":"Nova would use that new API. The flow would look like this:"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"* pre_live_migration: Create second binding for target host"},{"line_number":462,"context_line":"* post_live_migration: Remove initial binding (and activate target binding)"},{"line_number":463,"context_line":"* rollback: Remove target binding"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"See the related Nova Blueprint `[3]`_ and its spec `[4]`_."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_86b98cce","line":462,"in_reply_to":"bacf61ea_65151ae4","updated":"2016-08-24 13:02:42.000000000","message":"updated the spec","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f790eee461af3168dd96569f3383ec7f413a3436","unresolved":false,"context_lines":[{"line_number":460,"context_line":""},{"line_number":461,"context_line":"* pre_live_migration: Create second binding for target host"},{"line_number":462,"context_line":"* post_live_migration: Remove initial binding (and activate target binding)"},{"line_number":463,"context_line":"* rollback: Remove target binding"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"See the related Nova Blueprint `[3]`_ and its spec `[4]`_."},{"line_number":466,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bacf61ea_c2f1516c","line":463,"updated":"2016-07-28 23:37:16.000000000","message":"would that automatically reactivate the other binding?","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5c0fa3c3bc042d399dc658c286fe25327b43f0e7","unresolved":false,"context_lines":[{"line_number":460,"context_line":""},{"line_number":461,"context_line":"* pre_live_migration: Create second binding for target host"},{"line_number":462,"context_line":"* post_live_migration: Remove initial binding (and activate target binding)"},{"line_number":463,"context_line":"* rollback: Remove target binding"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"See the related Nova Blueprint `[3]`_ and its spec `[4]`_."},{"line_number":466,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_c601c46c","line":463,"in_reply_to":"bacf61ea_c2f1516c","updated":"2016-08-24 13:02:42.000000000","message":"before the post-copy migration was introduced, there was no rollback as soon as the instace was active on the target. so the binding to be removed would have been the binding that was never used. Now with post-copy migration, this might look different. Not sure if there\u0027s a rollback after the instance is active on the target. I need to clarify that.","commit_id":"f2080b7fb4b8d05b2312fac51bc9ef44b1f057c2"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"  * Create port: without any binding"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"  * Create port: directly with a active binding"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"  * Update port: add host_id (which adds the active binding)"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_6253d26b","line":161,"range":{"start_line":161,"start_character":31,"end_line":161,"end_character":32},"updated":"2016-08-29 19:28:45.000000000","message":"nit: a -\u003e an","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0a546c82bd9d23b372e5c0a4450e46f9a9f8d2ee","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"  * Create port: without any binding"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"  * Create port: directly with a active binding"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"  * Update port: add host_id (which adds the active binding)"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_7511995c","line":161,"range":{"start_line":161,"start_character":31,"end_line":161,"end_character":32},"in_reply_to":"fa7ab95a_6253d26b","updated":"2016-08-30 14:25:07.000000000","message":"Done","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":175,"context_line":"  * Set an inactive binding active and deactivate the original"},{"line_number":176,"context_line":"    binding"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"  * Remove a inactive binding"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Show a inactive binding"}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_42ddeede","line":178,"range":{"start_line":178,"start_character":11,"end_line":178,"end_character":12},"updated":"2016-08-29 19:28:45.000000000","message":"nit: a -\u003e an","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":178,"context_line":"  * Remove a inactive binding"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Show a inactive binding"},{"line_number":182,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"GET /v2.0/ports/​{port_id}​/migrationbinding"}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_62daf2e9","line":181,"range":{"start_line":181,"start_character":5,"end_line":181,"end_character":6},"updated":"2016-08-29 19:28:45.000000000","message":"nit: a -\u003e an","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0a546c82bd9d23b372e5c0a4450e46f9a9f8d2ee","unresolved":false,"context_lines":[{"line_number":178,"context_line":"  * Remove a inactive binding"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Show a inactive binding"},{"line_number":182,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"GET /v2.0/ports/​{port_id}​/migrationbinding"}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_3829c88a","line":181,"range":{"start_line":181,"start_character":5,"end_line":181,"end_character":6},"in_reply_to":"fa7ab95a_62daf2e9","updated":"2016-08-30 14:25:07.000000000","message":"Done","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":206,"context_line":"   * - vif_details"},{"line_number":207,"context_line":"     - plain"},{"line_number":208,"context_line":"     - xsd:dict"},{"line_number":209,"context_line":"     - Read-only. A dictionary that enables the application to pass information"},{"line_number":210,"context_line":"       about functions that the Networking API provides. To enable or disable"},{"line_number":211,"context_line":"       port filtering features such as security group and anti-MAC/IP spoofing,"},{"line_number":212,"context_line":"       specify port_filter: true or port_filter: false."}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_7d60d7cf","line":209,"range":{"start_line":209,"start_character":7,"end_line":209,"end_character":16},"updated":"2016-08-29 19:28:45.000000000","message":"This reads a little oddly. It starts with \"Read-only\" but then seems to talk about what can be sent. Is \"the application\" referring to Neutron? If not, how can \"the application\" pass information via a read-only parameter? Similarly the imperative \"specify port_filter\" seems inconsistent with a read-only parameter.","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0a546c82bd9d23b372e5c0a4450e46f9a9f8d2ee","unresolved":false,"context_lines":[{"line_number":206,"context_line":"   * - vif_details"},{"line_number":207,"context_line":"     - plain"},{"line_number":208,"context_line":"     - xsd:dict"},{"line_number":209,"context_line":"     - Read-only. A dictionary that enables the application to pass information"},{"line_number":210,"context_line":"       about functions that the Networking API provides. To enable or disable"},{"line_number":211,"context_line":"       port filtering features such as security group and anti-MAC/IP spoofing,"},{"line_number":212,"context_line":"       specify port_filter: true or port_filter: false."}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_d30a7d25","line":209,"range":{"start_line":209,"start_character":7,"end_line":209,"end_character":16},"in_reply_to":"fa7ab95a_7d60d7cf","updated":"2016-08-30 14:25:07.000000000","message":"that\u0027s a copy \u0026 paste from the current API docs...\nMy understanding is, that vif_details are set by the mechanism drivers and therefore read-only from API perspective. But the description is confusing I agree! Let me update it for this spec.\n\nJust realized that the rework on the API docs is going on - the description does not exist anymore in the official guide.","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":377,"context_line":"#2 Split binding logic into 2 steps: create and activate"},{"line_number":378,"context_line":"--------------------------------------------------------"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"Today, a binding is being created and activated at the same time. The existing"},{"line_number":381,"context_line":"binding logic must be split up in a way to support a separate creation"},{"line_number":382,"context_line":"and activation of a binding."},{"line_number":383,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_881b9772","line":380,"range":{"start_line":380,"start_character":20,"end_line":380,"end_character":25},"updated":"2016-08-29 19:28:45.000000000","message":"You can probably delete the word \"being\" from this sentence without changing the meaning.","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0a546c82bd9d23b372e5c0a4450e46f9a9f8d2ee","unresolved":false,"context_lines":[{"line_number":377,"context_line":"#2 Split binding logic into 2 steps: create and activate"},{"line_number":378,"context_line":"--------------------------------------------------------"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"Today, a binding is being created and activated at the same time. The existing"},{"line_number":381,"context_line":"binding logic must be split up in a way to support a separate creation"},{"line_number":382,"context_line":"and activation of a binding."},{"line_number":383,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_4e2c0299","line":380,"range":{"start_line":380,"start_character":20,"end_line":380,"end_character":25},"in_reply_to":"fa7ab95a_881b9772","updated":"2016-08-30 14:25:07.000000000","message":"Done","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":381,"context_line":"binding logic must be split up in a way to support a separate creation"},{"line_number":382,"context_line":"and activation of a binding."},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"* In creation, vif_details and so on must be created an stored in DB."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"* During activation, RPC events can be emitted and communication to third party"},{"line_number":387,"context_line":"  controller can be done."}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_9d2afb8e","line":384,"range":{"start_line":384,"start_character":53,"end_line":384,"end_character":55},"updated":"2016-08-29 19:28:45.000000000","message":"nit: an -\u003e and","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0a546c82bd9d23b372e5c0a4450e46f9a9f8d2ee","unresolved":false,"context_lines":[{"line_number":381,"context_line":"binding logic must be split up in a way to support a separate creation"},{"line_number":382,"context_line":"and activation of a binding."},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"* In creation, vif_details and so on must be created an stored in DB."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"* During activation, RPC events can be emitted and communication to third party"},{"line_number":387,"context_line":"  controller can be done."}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_ee4a3654","line":384,"range":{"start_line":384,"start_character":53,"end_line":384,"end_character":55},"in_reply_to":"fa7ab95a_9d2afb8e","updated":"2016-08-30 14:25:07.000000000","message":"Done","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":402,"context_line":"   * update_port_postcommit"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"     Those 2 methods need to be executed at activation time, as they either"},{"line_number":405,"context_line":"     emmit some RPC calls to agents (like l2pop mechanism driver does) or do"},{"line_number":406,"context_line":"     some write interactions to OpenStack external controllers (e.g. cisco"},{"line_number":407,"context_line":"     mechanisms). For the reference implementations (ovs, linuxbridge,"},{"line_number":408,"context_line":"     macvtap, sr-iov) a provisioning block is being set on update_port_*commit."}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_0855c7f8","line":405,"range":{"start_line":405,"start_character":5,"end_line":405,"end_character":10},"updated":"2016-08-29 19:28:45.000000000","message":"emmit -\u003e emit","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0a546c82bd9d23b372e5c0a4450e46f9a9f8d2ee","unresolved":false,"context_lines":[{"line_number":402,"context_line":"   * update_port_postcommit"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"     Those 2 methods need to be executed at activation time, as they either"},{"line_number":405,"context_line":"     emmit some RPC calls to agents (like l2pop mechanism driver does) or do"},{"line_number":406,"context_line":"     some write interactions to OpenStack external controllers (e.g. cisco"},{"line_number":407,"context_line":"     mechanisms). For the reference implementations (ovs, linuxbridge,"},{"line_number":408,"context_line":"     macvtap, sr-iov) a provisioning block is being set on update_port_*commit."}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_ee6156d4","line":405,"range":{"start_line":405,"start_character":5,"end_line":405,"end_character":10},"in_reply_to":"fa7ab95a_0855c7f8","updated":"2016-08-30 14:25:07.000000000","message":"Done","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":442,"context_line":"#1 Datamodel changes"},{"line_number":443,"context_line":"--------------------"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"During migration, 2 bindings Bindings exist for the port, but only one of"},{"line_number":446,"context_line":"them is active. The following changes to Neutron are required to achieve this:"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"Extend the PK of the existing portbinding table to be able to store"}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_c8de7f10","line":445,"range":{"start_line":445,"start_character":20,"end_line":445,"end_character":37},"updated":"2016-08-29 19:28:45.000000000","message":"bindings Bindings?","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0a546c82bd9d23b372e5c0a4450e46f9a9f8d2ee","unresolved":false,"context_lines":[{"line_number":442,"context_line":"#1 Datamodel changes"},{"line_number":443,"context_line":"--------------------"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"During migration, 2 bindings Bindings exist for the port, but only one of"},{"line_number":446,"context_line":"them is active. The following changes to Neutron are required to achieve this:"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"Extend the PK of the existing portbinding table to be able to store"}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_eeb8762c","line":445,"range":{"start_line":445,"start_character":20,"end_line":445,"end_character":37},"in_reply_to":"fa7ab95a_c8de7f10","updated":"2016-08-30 14:25:07.000000000","message":"Done","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":499,"context_line":"like done today."},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"This works fine for the reference implementations, but there are other"},{"line_number":502,"context_line":"mechanism drivers, that insist on the current behavior. Just imagine a ToR"},{"line_number":503,"context_line":"(Top of Rack) driver, that manages a hardware switch. If we update the"},{"line_number":504,"context_line":"portbinding before migration, this driver will trigger the switch to shut"},{"line_number":505,"context_line":"down the switch port for the source and wire the port for the migration target."}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_c84bdf85","line":502,"range":{"start_line":502,"start_character":17,"end_line":502,"end_character":18},"updated":"2016-08-29 19:28:45.000000000","message":"remove this comma\n(I\u0027m assuming the \"that insist on ...\" refers to the other drivers, not the reference. With the comma this sentence means: \"This works fine for the reference implementations that insist on the current behavior, but there are other mechanism drivers.\"","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0a546c82bd9d23b372e5c0a4450e46f9a9f8d2ee","unresolved":false,"context_lines":[{"line_number":499,"context_line":"like done today."},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"This works fine for the reference implementations, but there are other"},{"line_number":502,"context_line":"mechanism drivers, that insist on the current behavior. Just imagine a ToR"},{"line_number":503,"context_line":"(Top of Rack) driver, that manages a hardware switch. If we update the"},{"line_number":504,"context_line":"portbinding before migration, this driver will trigger the switch to shut"},{"line_number":505,"context_line":"down the switch port for the source and wire the port for the migration target."}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_2ed33e61","line":502,"range":{"start_line":502,"start_character":17,"end_line":502,"end_character":18},"in_reply_to":"fa7ab95a_c84bdf85","updated":"2016-08-30 14:25:07.000000000","message":"Done","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":507,"context_line":""},{"line_number":508,"context_line":"Similar problems should show up with l2pop."},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"Neutron should offer an API that nova can query if portbinding can be done"},{"line_number":511,"context_line":"already in pre_live_migration. This depends on the mechanism drivers configured"},{"line_number":512,"context_line":"in Neutron. Neutron should hold a internal (hard coded) whitelist with allowed"},{"line_number":513,"context_line":"combinations."}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_a82a1b8e","line":510,"range":{"start_line":510,"start_character":33,"end_line":510,"end_character":37},"updated":"2016-08-29 19:28:45.000000000","message":"nova -\u003e Nova","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0a546c82bd9d23b372e5c0a4450e46f9a9f8d2ee","unresolved":false,"context_lines":[{"line_number":507,"context_line":""},{"line_number":508,"context_line":"Similar problems should show up with l2pop."},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"Neutron should offer an API that nova can query if portbinding can be done"},{"line_number":511,"context_line":"already in pre_live_migration. This depends on the mechanism drivers configured"},{"line_number":512,"context_line":"in Neutron. Neutron should hold a internal (hard coded) whitelist with allowed"},{"line_number":513,"context_line":"combinations."}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_eebdd602","line":510,"range":{"start_line":510,"start_character":33,"end_line":510,"end_character":37},"in_reply_to":"fa7ab95a_a82a1b8e","updated":"2016-08-30 14:25:07.000000000","message":"Done","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":509,"context_line":""},{"line_number":510,"context_line":"Neutron should offer an API that nova can query if portbinding can be done"},{"line_number":511,"context_line":"already in pre_live_migration. This depends on the mechanism drivers configured"},{"line_number":512,"context_line":"in Neutron. Neutron should hold a internal (hard coded) whitelist with allowed"},{"line_number":513,"context_line":"combinations."},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"The downside of this approach is, that the current problems will be solved"}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_a8013b08","line":512,"range":{"start_line":512,"start_character":32,"end_line":512,"end_character":33},"updated":"2016-08-29 19:28:45.000000000","message":"a -\u003e an","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0a546c82bd9d23b372e5c0a4450e46f9a9f8d2ee","unresolved":false,"context_lines":[{"line_number":509,"context_line":""},{"line_number":510,"context_line":"Neutron should offer an API that nova can query if portbinding can be done"},{"line_number":511,"context_line":"already in pre_live_migration. This depends on the mechanism drivers configured"},{"line_number":512,"context_line":"in Neutron. Neutron should hold a internal (hard coded) whitelist with allowed"},{"line_number":513,"context_line":"combinations."},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"The downside of this approach is, that the current problems will be solved"}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_2e3a5e99","line":512,"range":{"start_line":512,"start_character":32,"end_line":512,"end_character":33},"in_reply_to":"fa7ab95a_a8013b08","updated":"2016-08-30 14:25:07.000000000","message":"Done","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":512,"context_line":"in Neutron. Neutron should hold a internal (hard coded) whitelist with allowed"},{"line_number":513,"context_line":"combinations."},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"The downside of this approach is, that the current problems will be solved"},{"line_number":516,"context_line":"not for everyone, but only for certain scenarios. But at least it would work"},{"line_number":517,"context_line":"for the reference implementations, when not using l2pop."},{"line_number":518,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_4315f03d","line":515,"range":{"start_line":515,"start_character":32,"end_line":515,"end_character":33},"updated":"2016-08-29 19:28:45.000000000","message":"remove this comma","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0a546c82bd9d23b372e5c0a4450e46f9a9f8d2ee","unresolved":false,"context_lines":[{"line_number":512,"context_line":"in Neutron. Neutron should hold a internal (hard coded) whitelist with allowed"},{"line_number":513,"context_line":"combinations."},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"The downside of this approach is, that the current problems will be solved"},{"line_number":516,"context_line":"not for everyone, but only for certain scenarios. But at least it would work"},{"line_number":517,"context_line":"for the reference implementations, when not using l2pop."},{"line_number":518,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_ae4e6e38","line":515,"range":{"start_line":515,"start_character":32,"end_line":515,"end_character":33},"in_reply_to":"fa7ab95a_4315f03d","updated":"2016-08-30 14:25:07.000000000","message":"Done","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":526,"context_line":"external controllers."},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"The real binding will be established, like today, in post_live_migration."},{"line_number":529,"context_line":"The problem is, that there\u0027s no guarantee, that the result of the real binding"},{"line_number":530,"context_line":"is the same as the result for the simulation again. However we could introduce"},{"line_number":531,"context_line":"some new method that indicates whether a mech driver guarantees that the result"},{"line_number":532,"context_line":"will be the same again for this host. If it\u0027s not supported, than process like"}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_c30660cd","line":529,"range":{"start_line":529,"start_character":14,"end_line":529,"end_character":15},"updated":"2016-08-29 19:28:45.000000000","message":"Both the commas in this line are unnecessary","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0a546c82bd9d23b372e5c0a4450e46f9a9f8d2ee","unresolved":false,"context_lines":[{"line_number":526,"context_line":"external controllers."},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"The real binding will be established, like today, in post_live_migration."},{"line_number":529,"context_line":"The problem is, that there\u0027s no guarantee, that the result of the real binding"},{"line_number":530,"context_line":"is the same as the result for the simulation again. However we could introduce"},{"line_number":531,"context_line":"some new method that indicates whether a mech driver guarantees that the result"},{"line_number":532,"context_line":"will be the same again for this host. If it\u0027s not supported, than process like"}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_ee54f6ca","line":529,"range":{"start_line":529,"start_character":14,"end_line":529,"end_character":15},"in_reply_to":"fa7ab95a_c30660cd","updated":"2016-08-30 14:25:07.000000000","message":"Setting all the commas seems to be a German habit ;)","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":529,"context_line":"The problem is, that there\u0027s no guarantee, that the result of the real binding"},{"line_number":530,"context_line":"is the same as the result for the simulation again. However we could introduce"},{"line_number":531,"context_line":"some new method that indicates whether a mech driver guarantees that the result"},{"line_number":532,"context_line":"will be the same again for this host. If it\u0027s not supported, than process like"},{"line_number":533,"context_line":"today."},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"#3 General purpose portbinding API"}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_e33284a6","line":532,"range":{"start_line":532,"start_character":61,"end_line":532,"end_character":65},"updated":"2016-08-29 19:28:45.000000000","message":"than -\u003e then","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0a546c82bd9d23b372e5c0a4450e46f9a9f8d2ee","unresolved":false,"context_lines":[{"line_number":529,"context_line":"The problem is, that there\u0027s no guarantee, that the result of the real binding"},{"line_number":530,"context_line":"is the same as the result for the simulation again. However we could introduce"},{"line_number":531,"context_line":"some new method that indicates whether a mech driver guarantees that the result"},{"line_number":532,"context_line":"will be the same again for this host. If it\u0027s not supported, than process like"},{"line_number":533,"context_line":"today."},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"#3 General purpose portbinding API"}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_8e844a0b","line":532,"range":{"start_line":532,"start_character":61,"end_line":532,"end_character":65},"in_reply_to":"fa7ab95a_e33284a6","updated":"2016-08-30 14:25:07.000000000","message":"Done","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"389328d82816670780cc36ba68098ce0aae6f6c1","unresolved":false,"context_lines":[{"line_number":537,"context_line":""},{"line_number":538,"context_line":"Create a new Portbinding Extension, that offers a general purpose API to"},{"line_number":539,"context_line":"create/update/delete portbindings in general. The API would look similar"},{"line_number":540,"context_line":"like the proposed one, but would not restrict the amount of bindings to 2. It"},{"line_number":541,"context_line":"would also allow deleting all bindings (proposal ensures, that always one"},{"line_number":542,"context_line":"binding is present)."},{"line_number":543,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_8318d81f","line":540,"range":{"start_line":540,"start_character":0,"end_line":540,"end_character":4},"updated":"2016-08-29 19:28:45.000000000","message":"like -\u003e to","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0a546c82bd9d23b372e5c0a4450e46f9a9f8d2ee","unresolved":false,"context_lines":[{"line_number":537,"context_line":""},{"line_number":538,"context_line":"Create a new Portbinding Extension, that offers a general purpose API to"},{"line_number":539,"context_line":"create/update/delete portbindings in general. The API would look similar"},{"line_number":540,"context_line":"like the proposed one, but would not restrict the amount of bindings to 2. It"},{"line_number":541,"context_line":"would also allow deleting all bindings (proposal ensures, that always one"},{"line_number":542,"context_line":"binding is present)."},{"line_number":543,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa7ab95a_ae7f4e13","line":540,"range":{"start_line":540,"start_character":0,"end_line":540,"end_character":4},"in_reply_to":"fa7ab95a_8318d81f","updated":"2016-08-30 14:25:07.000000000","message":"Done","commit_id":"56ea65e836b33f881b80458fb651760233c6bb20"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"74e1ff278e41b49c9fba002298b370d1bbd2b896","unresolved":false,"context_lines":[{"line_number":206,"context_line":"   * - vif_details"},{"line_number":207,"context_line":"     - plain"},{"line_number":208,"context_line":"     - xsd:dict"},{"line_number":209,"context_line":"     - Read-only. A dictionary that contains additional information to this"},{"line_number":210,"context_line":"       port."},{"line_number":211,"context_line":"   * - vnic_type"},{"line_number":212,"context_line":"     - plain"}],"source_content_type":"text/x-rst","patch_set":18,"id":"fa7ab95a_e81efc0a","line":209,"range":{"start_line":209,"start_character":68,"end_line":209,"end_character":70},"updated":"2016-09-01 20:47:36.000000000","message":"\"about\" would be better than \"to\", but don\u0027t push a new patch set just to change that word.","commit_id":"3a0fdce8cd0193870c63e2a91262b6079020301c"}],"specs/ocata/portbinding_information_for_nova.rst":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"1286089bf88f6bd137ab38a36e55efa358fcf9c6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    conntrackd firewall driver)."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"   Such a migration must only be allowed with source and target binding using"},{"line_number":79,"context_line":"   the same VNIC type."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* Live migration with MacVTap agent when different physnet mappings is used"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_93943d45","line":79,"updated":"2016-09-19 18:20:53.000000000","message":"Do we need to consider a case where the mac address of the port must change [1]?\n\n [1] https://review.openstack.org/#/c/361468/1//COMMIT_MSG","commit_id":"505301f450a8c5e6d0c72457f0d7731b265010ac"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"7a26a73535e1b5687f2248fb8d19d012cb69cc35","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    conntrackd firewall driver)."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"   Such a migration must only be allowed with source and target binding using"},{"line_number":79,"context_line":"   the same VNIC type."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* Live migration with MacVTap agent when different physnet mappings is used"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_6e15ad99","line":79,"in_reply_to":"7a8ec9b2_0b41940b","updated":"2016-09-21 07:20:31.000000000","message":"Just dumping my thoughts what that would mean in context of this spec:\n\n- On inactive portbinding create, Nova would also add the new MAC to be used.\n- As long as the binding is inactive, it would just be an attribute on it. The port still has its original MAC\n- On binding activation, some ml2 code updates that MAC of port with the MAC of the now activated binding.\n- probably it makes sense to restrict this to VNIC_TYPE direckt_physical (at the beginning). I\u0027m not sure about the implications when a MAC is changed during a Migration. For example external communication partner need to update their arp caches to reflect the new MAC and to not break existing communication (using the garps send out by libvirt?). Maybe that\u0027s working smoothly and is not a problem at all - need to think about that.\n\nIf it becomes part of this spec, I think it makes sense to make an extra work package out of it that is applied after the base changes are working properly.","commit_id":"505301f450a8c5e6d0c72457f0d7731b265010ac"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b274f4803c5c47ee2d69cea3e04d9bab027732ed","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    conntrackd firewall driver)."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"   Such a migration must only be allowed with source and target binding using"},{"line_number":79,"context_line":"   the same VNIC type."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* Live migration with MacVTap agent when different physnet mappings is used"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_0b41940b","line":79,"in_reply_to":"7a8ec9b2_4ad63dc4","updated":"2016-09-20 17:12:44.000000000","message":"I like this approach of the binding carrying a MAC address required for it to be successful.  At a high level that\u0027s what needs to be determined, if the underlying agent can\u0027t accommodate then failing early at that stage (or identifying where it would succeed) is preferred.","commit_id":"505301f450a8c5e6d0c72457f0d7731b265010ac"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"08b9452e0c40cb5ffee1ab17b0abc4983e3bc08d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    conntrackd firewall driver)."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"   Such a migration must only be allowed with source and target binding using"},{"line_number":79,"context_line":"   the same VNIC type."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* Live migration with MacVTap agent when different physnet mappings is used"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_4ad63dc4","line":79,"in_reply_to":"7a8ec9b2_93943d45","updated":"2016-09-20 15:29:32.000000000","message":"Thinking about this a little more. Mac address has been a property of the port, not of the binding. This would necessitate a change here. The mac address would have to be a property of the binding. I\u0027m not sure that this makes sense because a port without a binding should also have a mac address.\n\nSo, maybe the \"binding\" could carry a mac address that the port must use in order for the binding to be successful. If that binding is different than the current mac address for the port then the mac address for the port must be updated as part of the binding.\n\nI\u0027m really just thinking out loud here. Other thoughts are welcome, of course.\n\nI do think that since the mac address can be changed as part of live migration that we should think about this use case as part of this blueprint. I want to avoid allowing the mac address to be updated at any time when a port is bound.","commit_id":"505301f450a8c5e6d0c72457f0d7731b265010ac"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"569bb49bac877fd43ff49b6c799576db51b83a15","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"      \u003d\u003d\u003d Nova boot instance \u003d\u003d\u003d"},{"line_number":136,"context_line":"      Nova -\u003e Neutron [label \u003d \"Create port"},{"line_number":137,"context_line":"          POST /v2.0/ports {host_id:host}\"];"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"      \u003d\u003d\u003d Nova pre_livemigration \u003d\u003d\u003d"},{"line_number":140,"context_line":"      Nova -\u003e Neutron [label \u003d \"Create inactive binding"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9a89bdaa_27b667dc","line":137,"range":{"start_line":137,"start_character":36,"end_line":137,"end_character":40},"updated":"2016-09-12 13:22:40.000000000","message":"Should this be \"target\" rather than \"host\"? This is the same host_id as the one below that is referred to as \"target\", isn\u0027t it?","commit_id":"505301f450a8c5e6d0c72457f0d7731b265010ac"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"b16fee19a2e6b2ae9b6093d385b0d25abb0939be","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"      \u003d\u003d\u003d Nova boot instance \u003d\u003d\u003d"},{"line_number":136,"context_line":"      Nova -\u003e Neutron [label \u003d \"Create port"},{"line_number":137,"context_line":"          POST /v2.0/ports {host_id:host}\"];"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"      \u003d\u003d\u003d Nova pre_livemigration \u003d\u003d\u003d"},{"line_number":140,"context_line":"      Nova -\u003e Neutron [label \u003d \"Create inactive binding"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_5c77cb9e","line":137,"range":{"start_line":137,"start_character":36,"end_line":137,"end_character":40},"in_reply_to":"9a89bdaa_27b667dc","updated":"2016-09-21 07:24:31.000000000","message":"This diagram shows 2 things\n* Creating of an instance\n* Live migration of an instance\n\nOn creation the host is the source_host. On live migration, it gets updated to the target host.\n\nLet me update the diagram with the next respin tho make things clearer.","commit_id":"505301f450a8c5e6d0c72457f0d7731b265010ac"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"569bb49bac877fd43ff49b6c799576db51b83a15","unresolved":false,"context_lines":[{"line_number":141,"context_line":"          POST /v2.0/ports/{port-id}/migrationbinding {host_id:target}\"];"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"      \u003d\u003d\u003d Nova livemigration_operation \u003d\u003d\u003d"},{"line_number":144,"context_line":"      Nova -\u003e Nova [label \u003d\"Update instance definition and start migration\"];"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"      \u003d\u003d\u003d Nova livemigration_operation - instance active on target\u003d\u003d\u003d"},{"line_number":147,"context_line":"      Nova -\u003e Neutron [label \u003d\"Set inactive binding active"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9a89bdaa_67e78fe4","line":144,"range":{"start_line":144,"start_character":44,"end_line":144,"end_character":54},"updated":"2016-09-12 13:22:40.000000000","message":"I don\u0027t know if there\u0027s anything you can do in seqdiag to control breakpoints, but this is rendering with the word \"definition\" split over two lines.","commit_id":"505301f450a8c5e6d0c72457f0d7731b265010ac"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"b16fee19a2e6b2ae9b6093d385b0d25abb0939be","unresolved":false,"context_lines":[{"line_number":141,"context_line":"          POST /v2.0/ports/{port-id}/migrationbinding {host_id:target}\"];"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"      \u003d\u003d\u003d Nova livemigration_operation \u003d\u003d\u003d"},{"line_number":144,"context_line":"      Nova -\u003e Nova [label \u003d\"Update instance definition and start migration\"];"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"      \u003d\u003d\u003d Nova livemigration_operation - instance active on target\u003d\u003d\u003d"},{"line_number":147,"context_line":"      Nova -\u003e Neutron [label \u003d\"Set inactive binding active"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a8ec9b2_5c9eebb8","line":144,"range":{"start_line":144,"start_character":44,"end_line":144,"end_character":54},"in_reply_to":"9a89bdaa_67e78fe4","updated":"2016-09-21 07:24:31.000000000","message":"that works, will do.\nThanks!","commit_id":"505301f450a8c5e6d0c72457f0d7731b265010ac"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2dd3cbbf8e672064c1a39b80b2e6fbf7ae771a0f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"bound to the source AND target host during migration, where only one of the"},{"line_number":41,"context_line":"bindings is the active binding. After the new binding got activated, the old"},{"line_number":42,"context_line":"binding should still be kept (as inactive binding) for rollback and only be"},{"line_number":43,"context_line":"removed in the last stage as last step."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Problem Description"},{"line_number":46,"context_line":"\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":21,"id":"3a98d1f4_56515135","line":43,"updated":"2016-10-03 11:18:05.000000000","message":"Love this summary. For me I would put it all in the problem description, but thats way less important that this context being described.","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"315419f06b741d77a942d303386eae76207457cf","unresolved":false,"context_lines":[{"line_number":40,"context_line":"bound to the source AND target host during migration, where only one of the"},{"line_number":41,"context_line":"bindings is the active binding. After the new binding got activated, the old"},{"line_number":42,"context_line":"binding should still be kept (as inactive binding) for rollback and only be"},{"line_number":43,"context_line":"removed in the last stage as last step."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Problem Description"},{"line_number":46,"context_line":"\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":21,"id":"fa6399be_130606ce","line":43,"in_reply_to":"3a98d1f4_56515135","updated":"2016-10-20 12:42:33.000000000","message":"Done","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ddc4ad0e84c7185315b777504c64cb2f030c8883","unresolved":false,"context_lines":[{"line_number":100,"context_line":"This can be achieved by the following steps (Numbers indicate the order of"},{"line_number":101,"context_line":"implementation)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"#3 Add an API to allow 2 portbindings, one active and one inactive, for a"},{"line_number":104,"context_line":"   compute port."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"#2 Split binding process into 2 entities. One for creating a binding, one for"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_701b91ca","line":103,"updated":"2016-10-14 01:32:31.000000000","message":"I don\u0027t see any reason why the inversed order but ok.\n\nIrrespective of that I am not sure there\u0027s a strong order between 2 and 3.","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"315419f06b741d77a942d303386eae76207457cf","unresolved":false,"context_lines":[{"line_number":100,"context_line":"This can be achieved by the following steps (Numbers indicate the order of"},{"line_number":101,"context_line":"implementation)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"#3 Add an API to allow 2 portbindings, one active and one inactive, for a"},{"line_number":104,"context_line":"   compute port."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"#2 Split binding process into 2 entities. One for creating a binding, one for"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_530cfeeb","line":103,"in_reply_to":"fa6399be_3c4b965a","updated":"2016-10-20 12:42:33.000000000","message":"ok, let me try to adapt the proposal","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"24b8f42464b9a8cdecf5715b02350f9842420abc","unresolved":false,"context_lines":[{"line_number":100,"context_line":"This can be achieved by the following steps (Numbers indicate the order of"},{"line_number":101,"context_line":"implementation)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"#3 Add an API to allow 2 portbindings, one active and one inactive, for a"},{"line_number":104,"context_line":"   compute port."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"#2 Split binding process into 2 entities. One for creating a binding, one for"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_b7f0b892","line":103,"in_reply_to":"fa6399be_701b91ca","updated":"2016-10-14 07:34:25.000000000","message":"I got a comment to list those points \"top-down\" - from API to impl details for better understanding and context...\n\nIn a later comment your questioning #2 anyhow, so let me think about it. But my gut feeling says, that it does not make sense to implement an API when there\u0027s no backing code...","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"7c5320f9315762473d45d302c1e80a5fe6b58d57","unresolved":false,"context_lines":[{"line_number":100,"context_line":"This can be achieved by the following steps (Numbers indicate the order of"},{"line_number":101,"context_line":"implementation)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"#3 Add an API to allow 2 portbindings, one active and one inactive, for a"},{"line_number":104,"context_line":"   compute port."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"#2 Split binding process into 2 entities. One for creating a binding, one for"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_3c4b965a","line":103,"in_reply_to":"fa6399be_b7f0b892","updated":"2016-10-14 16:02:06.000000000","message":"After reading the entire proposal I am not sure #2 is really required for the sake of solving the live migration robustness problem","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2dd3cbbf8e672064c1a39b80b2e6fbf7ae771a0f","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"      \u003d\u003d\u003d Nova post_livemigration \u003d\u003d\u003d"},{"line_number":152,"context_line":"      Nova -\u003e Neutron [label \u003d\"Remove inactive binding"},{"line_number":153,"context_line":"          DELETE /v2.0/ports/{port-id}/migrationbinding\"];"},{"line_number":154,"context_line":"   }"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"3a98d1f4_44723b12","line":153,"updated":"2016-10-03 11:18:05.000000000","message":"I was expecting to see port binding as a first class citizen, so you get something more like:\n  DELETE ports/{port-uuid}/bindings/{binding-uuid}\n\nList port bindings would be:\n  GET ports/{port-uuid}/bindings","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"ff54f1dd0ca9a7e4293417295015a5558dd303aa","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"      \u003d\u003d\u003d Nova post_livemigration \u003d\u003d\u003d"},{"line_number":152,"context_line":"      Nova -\u003e Neutron [label \u003d\"Remove inactive binding"},{"line_number":153,"context_line":"          DELETE /v2.0/ports/{port-id}/migrationbinding\"];"},{"line_number":154,"context_line":"   }"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"3a98d1f4_942e068a","line":153,"in_reply_to":"3a98d1f4_44723b12","updated":"2016-10-04 08:03:51.000000000","message":"This looks like a general purpose portbinidng API that you\u0027re proposing here. \n\nI had this in the first patchset, but in PS10, Armando asked me to rather define a live migration centric API.\n\nThe problem with a general purpose portbinding API is, that also other portbinding types, like DVR need to be considered. Would such an API externalise an DVR portbinding as well? Thinks like that...","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"051a8c7892ffa6606fb60a02fb7dffaf4ff1e99d","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"      \u003d\u003d\u003d Nova post_livemigration \u003d\u003d\u003d"},{"line_number":152,"context_line":"      Nova -\u003e Neutron [label \u003d\"Remove inactive binding"},{"line_number":153,"context_line":"          DELETE /v2.0/ports/{port-id}/migrationbinding\"];"},{"line_number":154,"context_line":"   }"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_dcf6c1d6","line":153,"in_reply_to":"3a98d1f4_942e068a","updated":"2016-10-11 12:53:19.000000000","message":"I would like to see it deal with all Nova centric stuff first, then migrate the other uses across as needed. But as a Nova person, I would say that.\n\nI need to catch up with armax on the details and understand where he is coming from. I suspect I am missing context on neutron side of this somewhere.","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ddc4ad0e84c7185315b777504c64cb2f030c8883","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"      \u003d\u003d\u003d Nova post_livemigration \u003d\u003d\u003d"},{"line_number":152,"context_line":"      Nova -\u003e Neutron [label \u003d\"Remove inactive binding"},{"line_number":153,"context_line":"          DELETE /v2.0/ports/{port-id}/migrationbinding\"];"},{"line_number":154,"context_line":"   }"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_504ccdc7","line":153,"in_reply_to":"fa6399be_dcf6c1d6","updated":"2016-10-14 01:32:31.000000000","message":"My primary suggestion was to keep the scope of the spec small so that it\u0027s attainable in the scope of a single cycle with minimal impact to the codebase. A top-level port binding and everything that requires involves a more work compared to just adding a new attribute to an existing resource.\n\nThe applicability of a general purpose multi-port-binding extension is compelling, but we\u0027re usually pretty bad at mastering complexity, and without clear evidence of its need I suggest of erring on the side of caution and make things simpler from an implementation point of view.","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ddc4ad0e84c7185315b777504c64cb2f030c8883","unresolved":false,"context_lines":[{"line_number":167,"context_line":"This spec does not propose a general purpose API for adding bindings. Rather"},{"line_number":168,"context_line":"it proposes a specific API for managing a second inactive binding for a port."},{"line_number":169,"context_line":"The behavior of the existing portbinding API extension should be kept."},{"line_number":170,"context_line":"There should be no overlap between the proposed and the existing API."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"* The existing API will manage all the (active) bindings."},{"line_number":173,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_30011939","line":170,"updated":"2016-10-14 01:32:31.000000000","message":"I agree with this statement, primarily because there may be a number of backends whose support of this extension would lag behind, and thus Nova will have to fall back at least for a foreseeable future.","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ddc4ad0e84c7185315b777504c64cb2f030c8883","unresolved":false,"context_lines":[{"line_number":319,"context_line":"Note: Activation of an inactive binding will first deactivate an existing"},{"line_number":320,"context_line":"active binding."},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"POST /v2.0/ports/​{port_id}​/migrationbinding"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":".. list-table:: Request Parameters"},{"line_number":325,"context_line":"   :header-rows: 1"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_c31d7563","line":322,"updated":"2016-10-14 01:32:31.000000000","message":"shouldn\u0027t this be a PUT? Or are you saying that a POST is gonna be idempotent?","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"24b8f42464b9a8cdecf5715b02350f9842420abc","unresolved":false,"context_lines":[{"line_number":319,"context_line":"Note: Activation of an inactive binding will first deactivate an existing"},{"line_number":320,"context_line":"active binding."},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"POST /v2.0/ports/​{port_id}​/migrationbinding"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":".. list-table:: Request Parameters"},{"line_number":325,"context_line":"   :header-rows: 1"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_d7444cb8","line":322,"in_reply_to":"fa6399be_c31d7563","updated":"2016-10-14 07:34:25.000000000","message":"good catch! should be PUT!","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ddc4ad0e84c7185315b777504c64cb2f030c8883","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"For live migration, there is no use case for updating a inactive binding."},{"line_number":366,"context_line":"Only the host_id can be modified. Therefore one should delete the existing"},{"line_number":367,"context_line":"inactive binding and create a new one."},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"Delete inactive binding"},{"line_number":370,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_0343ed42","line":367,"updated":"2016-10-14 01:32:31.000000000","message":"are you saying that there\u0027s not gonna be a PUT operation exposed?","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"24b8f42464b9a8cdecf5715b02350f9842420abc","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"For live migration, there is no use case for updating a inactive binding."},{"line_number":366,"context_line":"Only the host_id can be modified. Therefore one should delete the existing"},{"line_number":367,"context_line":"inactive binding and create a new one."},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"Delete inactive binding"},{"line_number":370,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_17cec42d","line":367,"in_reply_to":"fa6399be_0343ed42","updated":"2016-10-14 07:34:25.000000000","message":"yes and no :) The only changeable attribute should be \"active\" to do the switch of the bindings. That\u0027s the only put operation. But that can be discussed....","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"4a3f28bd6d1d7c3912eb2ee154668cf59c0dfbee","unresolved":false,"context_lines":[{"line_number":387,"context_line":"This operation does not accept a request body and does not return a response"},{"line_number":388,"context_line":"body."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"Affects on existing APIs"},{"line_number":391,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"None!"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_a1ef9985","line":390,"updated":"2016-10-14 02:52:01.000000000","message":"One thing we should elaborate here is how the API behaves in face of error conditions. For instance today if binding fails the vif type is binding_error and the API returns 200. I think we want to reconsider that.","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"24b8f42464b9a8cdecf5715b02350f9842420abc","unresolved":false,"context_lines":[{"line_number":387,"context_line":"This operation does not accept a request body and does not return a response"},{"line_number":388,"context_line":"body."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"Affects on existing APIs"},{"line_number":391,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"None!"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_b79198f3","line":390,"in_reply_to":"fa6399be_a1ef9985","updated":"2016-10-14 07:34:25.000000000","message":"ok","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ddc4ad0e84c7185315b777504c64cb2f030c8883","unresolved":false,"context_lines":[{"line_number":394,"context_line":""},{"line_number":395,"context_line":"* Show Port will still just show the active binding"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"* Update Port with host_id will retrigger portbinding for another host"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"#2 Split binding logic into 2 steps: create and activate"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_b01e096e","line":397,"updated":"2016-10-14 01:32:31.000000000","message":"So let me make sure I get this straight:\n\nThe existing port binding extension will keep its semantic, no changes to it whatsoever. You propose the addition of a attribute \u0027migrationbinding\u0027 to the port resource. This has the same exact format of an existing portbinding with the addition of a \u0027switch\u0027 called active, which by default is \u0027false\u0027.\n\nA consumer of the API can CRUD this new attribute any time and any way it wants, when the active is set to True, this is a signal for Neutron to make the migrationbinding *the* actual portbinding. Hence the existing portbinding must be updated to match the migrationbinding.\n\nAm I on the right track? If so, I think this makes sense but I feel like the proposed model may end up making violate the HTTP semantic a bit. The use of a switch to trigger an operation in particular is perhaps where the problem lies IMO. It would be nice if migrationbinding would be exactly the same as a portbinding. By nature it\u0027s tracking the destination or target host where a port needs plumbing.\n\nIt can be CRUD in any way shape or form. Then we can consider exposing the activation trigger as an action on the resource rather than an attribute in the model. The execution of the action can be used to (atomically) update the portbinding and delete the migrationbinding.","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"7c5320f9315762473d45d302c1e80a5fe6b58d57","unresolved":false,"context_lines":[{"line_number":394,"context_line":""},{"line_number":395,"context_line":"* Show Port will still just show the active binding"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"* Update Port with host_id will retrigger portbinding for another host"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"#2 Split binding logic into 2 steps: create and activate"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_9ca102fb","line":397,"in_reply_to":"fa6399be_7ab1a746","updated":"2016-10-14 16:02:06.000000000","message":"Yes, this way we don\u0027t have to \u0027pollute\u0027 the model with an attribute that has no meaning other than triggering an action on the server part.","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"24b8f42464b9a8cdecf5715b02350f9842420abc","unresolved":false,"context_lines":[{"line_number":394,"context_line":""},{"line_number":395,"context_line":"* Show Port will still just show the active binding"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"* Update Port with host_id will retrigger portbinding for another host"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"#2 Split binding logic into 2 steps: create and activate"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_7ab1a746","line":397,"in_reply_to":"fa6399be_b01e096e","updated":"2016-10-14 07:34:25.000000000","message":"yes, you got me right! So let double check if I got your proposal right ;)\n\nThe API ports/{port-id}/migrationbinding would allow all kinds of CRUD operations that are possible with todays binding. The \"active\" attribute like proposed is not required. Rather the switch would happen via an action API\nports/{port-id}/migrationbinding/switch\n\nDid I get you right?","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ddc4ad0e84c7185315b777504c64cb2f030c8883","unresolved":false,"context_lines":[{"line_number":397,"context_line":"* Update Port with host_id will retrigger portbinding for another host"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"#2 Split binding logic into 2 steps: create and activate"},{"line_number":401,"context_line":"--------------------------------------------------------"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"Today, a binding is created and activated at the same time. The existing"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_234ab126","line":400,"updated":"2016-10-14 01:32:31.000000000","message":"I feel that from an ML2 standpoint, support for migrationbinding needs to be explicitly introduced via new mech drivers APIs that would need to be explicitly implemented by mech drivers. Applying a migrationbinding to an existing portbinding (i.e. calling update_port with the migrationbinding details) is effectively what \u0027activation\u0027 would do. I am not seeing why we would need to split the existing binding logic in two steps.","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"24b8f42464b9a8cdecf5715b02350f9842420abc","unresolved":false,"context_lines":[{"line_number":397,"context_line":"* Update Port with host_id will retrigger portbinding for another host"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"#2 Split binding logic into 2 steps: create and activate"},{"line_number":401,"context_line":"--------------------------------------------------------"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"Today, a binding is created and activated at the same time. The existing"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_baf09f92","line":400,"in_reply_to":"fa6399be_234ab126","updated":"2016-10-14 07:34:25.000000000","message":"To double check: The new mech_driver method you\u0027re proposing would probably internally call bind_port - cause there portbinding gets generated. What about emitting rpc events? I would not emit any \"update port\" or similar event except the event for setting up DVR on the target (to eliminate the portbinding profile attribute \"migration_to\" that got introduced recently).\n\nAnd on activation we would trigger an port_update with the details of the inactive binding?\n\nMy only concern is, that then bind_port is executed twice. We need to make sure that both calls to bind_port (create inactive binding and activate inactive binding) return the same result. If that\u0027s guaranteed, than this could work.\nIf we can\u0027t guarantee that, we should skip calling bind_port when doing the activation.\n\nSo what about\n- having a separate mech driver method for create inactive binding (that internally calls bind_port) but\n- skip bind_port when the activation via update_port is done?","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"7c5320f9315762473d45d302c1e80a5fe6b58d57","unresolved":false,"context_lines":[{"line_number":397,"context_line":"* Update Port with host_id will retrigger portbinding for another host"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"#2 Split binding logic into 2 steps: create and activate"},{"line_number":401,"context_line":"--------------------------------------------------------"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"Today, a binding is created and activated at the same time. The existing"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_dccc5abd","line":400,"in_reply_to":"fa6399be_baf09f92","updated":"2016-10-14 16:02:06.000000000","message":"The internals for a mech drivers that implements this newly extended API will have to be reworked to accommodate the new semantic. And that means that some smaller internal blocks could be extracted to do what you\u0027re saying and yet keep the existing bind_port semantic untouched.","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ddc4ad0e84c7185315b777504c64cb2f030c8883","unresolved":false,"context_lines":[{"line_number":466,"context_line":"--------------------"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"During migration, 2 bindings exist for the port, but only one of"},{"line_number":469,"context_line":"them is active. The following changes to Neutron are required to achieve this:"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"Extend the PK of the existing portbinding table to be able to store"},{"line_number":472,"context_line":"multiple bindings there. A new column is required to store the information if"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_436a4582","line":469,"updated":"2016-10-14 01:32:31.000000000","message":"Well by definition it seems only portbinding is the active one. The migrationbinding should be just a place to stash the details for the new target and allow Neutron to do something. Once Nova is ready to pull the trigger, the migrationbinding should flip over to be the portbinding and disappear.","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"24b8f42464b9a8cdecf5715b02350f9842420abc","unresolved":false,"context_lines":[{"line_number":466,"context_line":"--------------------"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"During migration, 2 bindings exist for the port, but only one of"},{"line_number":469,"context_line":"them is active. The following changes to Neutron are required to achieve this:"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"Extend the PK of the existing portbinding table to be able to store"},{"line_number":472,"context_line":"multiple bindings there. A new column is required to store the information if"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_9a6cbb36","line":469,"in_reply_to":"fa6399be_436a4582","updated":"2016-10-14 07:34:25.000000000","message":"I\u0027m sorry but I don\u0027t get your point. What exactly is your point? I don\u0027t see a mismatch between this paragraph and your comment...","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"7c5320f9315762473d45d302c1e80a5fe6b58d57","unresolved":false,"context_lines":[{"line_number":466,"context_line":"--------------------"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"During migration, 2 bindings exist for the port, but only one of"},{"line_number":469,"context_line":"them is active. The following changes to Neutron are required to achieve this:"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"Extend the PK of the existing portbinding table to be able to store"},{"line_number":472,"context_line":"multiple bindings there. A new column is required to store the information if"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_dc437a11","line":469,"in_reply_to":"fa6399be_9a6cbb36","updated":"2016-10-14 16:02:06.000000000","message":"I was mainly rephrasing for the sake of my own understanding :)","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ddc4ad0e84c7185315b777504c64cb2f030c8883","unresolved":false,"context_lines":[{"line_number":484,"context_line":"compute port."},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"The current binding logic does not distinguish between creating and activating"},{"line_number":487,"context_line":"a binding. If a second binding for a compute port is added, l2population"},{"line_number":488,"context_line":"processes the mechanism driver update_port_pre_commit and"},{"line_number":489,"context_line":"update_port_post_commit methods. The latter one sends out fdb_add/update/delete"},{"line_number":490,"context_line":"messages via RPC to the agents. Those agents will implement the forwarding"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_23e63115","line":487,"updated":"2016-10-14 01:32:31.000000000","message":"bear in mind that kevinbenton is thinking of looking at ways to kill the l2pop driver, but your point is well taken, there may be drivers that would not be able to interpret the presence of two bindings well, hence I think you\u0027d need explicit definition of new APIs to be used. l2pop is probably a corner case where in the premigration phase there\u0027s very little prep on the target host that can be done.","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"24b8f42464b9a8cdecf5715b02350f9842420abc","unresolved":false,"context_lines":[{"line_number":484,"context_line":"compute port."},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"The current binding logic does not distinguish between creating and activating"},{"line_number":487,"context_line":"a binding. If a second binding for a compute port is added, l2population"},{"line_number":488,"context_line":"processes the mechanism driver update_port_pre_commit and"},{"line_number":489,"context_line":"update_port_post_commit methods. The latter one sends out fdb_add/update/delete"},{"line_number":490,"context_line":"messages via RPC to the agents. Those agents will implement the forwarding"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_7d15213e","line":487,"in_reply_to":"fa6399be_23e63115","updated":"2016-10-14 07:34:25.000000000","message":"eliminating l2 pop, interesting...\n\nI think I need to adapt that paragraph a bit. It is still written for the case where we have 2 active bindings... Cause with the current proposal we would work around that issue by not calling the update_port_*_commit messages...\n\nBut I think the key message is, that some drivers might not support this new interface at the beginning and we need a way to deal with that. Also when hierarchical portbinding is used and one of the drivers does not implement the method the Neutron API needs to fail (need to think about return codes here as well)","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ddc4ad0e84c7185315b777504c64cb2f030c8883","unresolved":false,"context_lines":[{"line_number":510,"context_line":"* Neutron/Openstack Python Client support"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"Alternatives"},{"line_number":514,"context_line":"------------"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"#1 Move port binding to pre_live_migration"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_03d04d1e","line":513,"updated":"2016-10-14 01:32:31.000000000","message":"Honestly I think that anyone who understands the complexity of something like live migration would say that neither #1 nor #2 are viable alternatives, so I am not even sure why we track them (if not just for the sake of making this spec longer :))","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"24b8f42464b9a8cdecf5715b02350f9842420abc","unresolved":false,"context_lines":[{"line_number":510,"context_line":"* Neutron/Openstack Python Client support"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"Alternatives"},{"line_number":514,"context_line":"------------"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"#1 Move port binding to pre_live_migration"}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_5d5a1d2b","line":513,"in_reply_to":"fa6399be_03d04d1e","updated":"2016-10-14 07:34:25.000000000","message":"I agree with removing #1. Regarding #2: Honestly, I got the impression that your proposal goes into the direction of calling portbinding twice, like #2 is proposing- But I might be wrong ;) Let\u0027s continue discussion and then remove #2 as well if it makes sense.","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ddc4ad0e84c7185315b777504c64cb2f030c8883","unresolved":false,"context_lines":[{"line_number":565,"context_line":"binding is present)."},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"#4 API Actions"},{"line_number":568,"context_line":"~~~~~~~~~~~~~~"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"The new extension could implement API actions."},{"line_number":571,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa6399be_639ae96f","line":568,"updated":"2016-10-14 01:32:31.000000000","message":"I am actually thinking that your proposal +  an activation action is the answer.","commit_id":"b9de71f8e11da543c9938e56e2b59657b8814e9e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"670a74f7c2acf9280d5baf87f89ff9e41821a963","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"      \u003d\u003d\u003d Nova livemigration_operation - instance active on target\u003d\u003d\u003d"},{"line_number":147,"context_line":"      Nova -\u003e Neutron [label \u003d\"Set inactive binding active"},{"line_number":148,"context_line":"          POST /v2.0/ports/{port-id}/migrationbinding/activate\"];"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"      \u003d\u003d\u003d Nova post_livemigration \u003d\u003d\u003d"},{"line_number":151,"context_line":"      Nova -\u003e Neutron [label \u003d\"Remove inactive binding"}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_34a6edc1","line":148,"updated":"2016-10-21 17:52:41.000000000","message":"should probably be a PUT, but it\u0027s irrelevant","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"1f5223ec0d86ca0e1bb09558686cd49ee55e1bb4","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"      \u003d\u003d\u003d Nova livemigration_operation - instance active on target\u003d\u003d\u003d"},{"line_number":147,"context_line":"      Nova -\u003e Neutron [label \u003d\"Set inactive binding active"},{"line_number":148,"context_line":"          POST /v2.0/ports/{port-id}/migrationbinding/activate\"];"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"      \u003d\u003d\u003d Nova post_livemigration \u003d\u003d\u003d"},{"line_number":151,"context_line":"      Nova -\u003e Neutron [label \u003d\"Remove inactive binding"}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_60aa2872","line":148,"in_reply_to":"da6895a0_34a6edc1","updated":"2016-10-25 08:51:40.000000000","message":"Done","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"670a74f7c2acf9280d5baf87f89ff9e41821a963","unresolved":false,"context_lines":[{"line_number":318,"context_line":"* vif_details"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"If there is a requirement to use other parameters than in the original binding,"},{"line_number":321,"context_line":"this can be implemented in a future stage."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"Question: what should happen if creating of a binding fails, as it is not"},{"line_number":324,"context_line":"supported? 500 http error? Or a new 5xx http error?"}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_348d0d32","line":321,"updated":"2016-10-21 17:52:41.000000000","message":"So, in a summary, the migration binding process mirrors the existing one.","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"1f5223ec0d86ca0e1bb09558686cd49ee55e1bb4","unresolved":false,"context_lines":[{"line_number":318,"context_line":"* vif_details"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"If there is a requirement to use other parameters than in the original binding,"},{"line_number":321,"context_line":"this can be implemented in a future stage."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"Question: what should happen if creating of a binding fails, as it is not"},{"line_number":324,"context_line":"supported? 500 http error? Or a new 5xx http error?"}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_dd867f12","line":321,"in_reply_to":"da6895a0_348d0d32","updated":"2016-10-25 08:51:40.000000000","message":"yes, mirrors the existing one on another host.","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"670a74f7c2acf9280d5baf87f89ff9e41821a963","unresolved":false,"context_lines":[{"line_number":321,"context_line":"this can be implemented in a future stage."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"Question: what should happen if creating of a binding fails, as it is not"},{"line_number":324,"context_line":"supported? 500 http error? Or a new 5xx http error?"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Update inactive binding"}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_b4791d32","line":324,"updated":"2016-10-21 17:52:41.000000000","message":"I\u0027d personally favor an approach where a return code be returned rather than a 200 with a bogus vif_type.\n\nAnother point worth discussing is: I wonder if we should accommodate situations where the binding cannot be determined synchronously, and to avoid overloading the port status field, perhaps we may want to consider including a status attribute on the migration binding.","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"1f5223ec0d86ca0e1bb09558686cd49ee55e1bb4","unresolved":false,"context_lines":[{"line_number":321,"context_line":"this can be implemented in a future stage."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"Question: what should happen if creating of a binding fails, as it is not"},{"line_number":324,"context_line":"supported? 500 http error? Or a new 5xx http error?"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Update inactive binding"}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_2093d0a4","line":324,"in_reply_to":"da6895a0_b4791d32","updated":"2016-10-25 08:51:40.000000000","message":"I agree. 2 questions:\n- would we consider that as a server or a client error? I think both is valid, I tend to say this is a client error (4xx), as the user requested the binding for a host that can not serve it. Thoughts?\n\n- I don\u0027t get your 2nd point. AFAIK, portbinding is a synchronous process and the result of this process is part of the request result. Are you saying that there is a asynrchonous way of doing a portbinding? Or are you requesting to implement that? If I get your idea right, you would like to have an additional status field at the migration binding that indicates \u0027binding in process\u0027, \u0027binding succeeded\u0027, \u0027binding failed\u0027? but doing so, we need to get back to http return code 200 again. Did I get you right there?","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"670a74f7c2acf9280d5baf87f89ff9e41821a963","unresolved":false,"context_lines":[{"line_number":327,"context_line":"Update inactive binding"},{"line_number":328,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"PUT /v2.0/ports/​{port_id}​/migrationbinding"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":".. list-table:: Request Parameters"},{"line_number":333,"context_line":"   :header-rows: 1"}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_b4c75d44","line":330,"range":{"start_line":330,"start_character":16,"end_line":330,"end_character":17},"updated":"2016-10-21 17:52:41.000000000","message":"what are these dots? They don\u0027t get rendered on the html page.","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"1f5223ec0d86ca0e1bb09558686cd49ee55e1bb4","unresolved":false,"context_lines":[{"line_number":327,"context_line":"Update inactive binding"},{"line_number":328,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"PUT /v2.0/ports/​{port_id}​/migrationbinding"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":".. list-table:: Request Parameters"},{"line_number":333,"context_line":"   :header-rows: 1"}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_60bb080f","line":330,"in_reply_to":"da6895a0_b4c75d44","updated":"2016-10-25 08:51:40.000000000","message":"hhm just had a brief look at the rendered version, it\u0027s looking fine IMO.","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"670a74f7c2acf9280d5baf87f89ff9e41821a963","unresolved":false,"context_lines":[{"line_number":361,"context_line":"                }"},{"line_number":362,"context_line":"                \"vnic_type\": \u0027NORMAL\u0027,"},{"line_number":363,"context_line":"                \"profile\": {\"foo\":\"bar\"},"},{"line_number":364,"context_line":"                \"active\": True"},{"line_number":365,"context_line":"        }"},{"line_number":366,"context_line":"    }"},{"line_number":367,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_b4ce7d58","line":364,"updated":"2016-10-21 17:52:41.000000000","message":"this should be removed.","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"1f5223ec0d86ca0e1bb09558686cd49ee55e1bb4","unresolved":false,"context_lines":[{"line_number":361,"context_line":"                }"},{"line_number":362,"context_line":"                \"vnic_type\": \u0027NORMAL\u0027,"},{"line_number":363,"context_line":"                \"profile\": {\"foo\":\"bar\"},"},{"line_number":364,"context_line":"                \"active\": True"},{"line_number":365,"context_line":"        }"},{"line_number":366,"context_line":"    }"},{"line_number":367,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_1d92b757","line":364,"in_reply_to":"da6895a0_b4ce7d58","updated":"2016-10-25 08:51:40.000000000","message":"Done","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"670a74f7c2acf9280d5baf87f89ff9e41821a963","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        }"},{"line_number":366,"context_line":"    }"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"The only attribute that can be changed is the host_id. All other attributes"},{"line_number":369,"context_line":"are taken from the original binding or are generated by the binding"},{"line_number":370,"context_line":"process. For more details see Section :ref:`create_binding`."},{"line_number":371,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_b423dd04","line":368,"updated":"2016-10-21 17:52:41.000000000","message":"if the intention is to allow only the host_id to be changed and prevent any other attribute, then perhaps it\u0027s slightly more formalized to introduce another action attribute and be more explicit.","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"1f5223ec0d86ca0e1bb09558686cd49ee55e1bb4","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        }"},{"line_number":366,"context_line":"    }"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"The only attribute that can be changed is the host_id. All other attributes"},{"line_number":369,"context_line":"are taken from the original binding or are generated by the binding"},{"line_number":370,"context_line":"process. For more details see Section :ref:`create_binding`."},{"line_number":371,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_a030c09f","line":368,"in_reply_to":"da6895a0_b423dd04","updated":"2016-10-25 08:51:40.000000000","message":"the point is that this might change in the future (I remember some use case with ironic and one with sr-iov, where you might want to update the profile). \nWe could also think of skipping the update API at all. A 2nd create could override the existing binding... or the user would need to delete the exsting and create a new one. I\u0027m fine with either!","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"670a74f7c2acf9280d5baf87f89ff9e41821a963","unresolved":false,"context_lines":[{"line_number":373,"context_line":"this can be implemented in a future stage."},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"Question: what should happen if updating the binding fails, as it is not"},{"line_number":376,"context_line":"supported? 500 http error? Or a new 5xx http error?"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"Activating an inactive binding"}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_3430ad56","line":376,"updated":"2016-10-21 17:52:41.000000000","message":"same as before.","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"1f5223ec0d86ca0e1bb09558686cd49ee55e1bb4","unresolved":false,"context_lines":[{"line_number":373,"context_line":"this can be implemented in a future stage."},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"Question: what should happen if updating the binding fails, as it is not"},{"line_number":376,"context_line":"supported? 500 http error? Or a new 5xx http error?"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"Activating an inactive binding"}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_00224c52","line":376,"in_reply_to":"da6895a0_3430ad56","updated":"2016-10-25 08:51:40.000000000","message":"Done","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"670a74f7c2acf9280d5baf87f89ff9e41821a963","unresolved":false,"context_lines":[{"line_number":415,"context_line":"* Update Port with host_id will retrigger portbinding for another host"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"* On failed portbinding, still the vif_type is set to \"binding_failed\" and http"},{"line_number":418,"context_line":"  cod 2xx is used."},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"#2 Business logic"},{"line_number":421,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_748865e8","line":418,"updated":"2016-10-21 17:52:41.000000000","message":"for the existing binding API you mean? If so, yes.","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"1f5223ec0d86ca0e1bb09558686cd49ee55e1bb4","unresolved":false,"context_lines":[{"line_number":415,"context_line":"* Update Port with host_id will retrigger portbinding for another host"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"* On failed portbinding, still the vif_type is set to \"binding_failed\" and http"},{"line_number":418,"context_line":"  cod 2xx is used."},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"#2 Business logic"},{"line_number":421,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_7d3813a1","line":418,"in_reply_to":"da6895a0_748865e8","updated":"2016-10-25 08:51:40.000000000","message":"yes, that\u0027s what I meant.","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"670a74f7c2acf9280d5baf87f89ff9e41821a963","unresolved":false,"context_lines":[{"line_number":646,"context_line":""},{"line_number":647,"context_line":""},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"References"},{"line_number":650,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":".. _[1]: https://bugs.launchpad.net/neutron/+bug/1550400"}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_14600935","line":649,"updated":"2016-10-21 17:52:41.000000000","message":"Any words on accessibility/visibility of this API? I assume it would be admin-only, though this is a bit of a point of grief in that that forces nova to use admin creds when talking to neutron...","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"1f5223ec0d86ca0e1bb09558686cd49ee55e1bb4","unresolved":false,"context_lines":[{"line_number":646,"context_line":""},{"line_number":647,"context_line":""},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"References"},{"line_number":650,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":".. _[1]: https://bugs.launchpad.net/neutron/+bug/1550400"}],"source_content_type":"text/x-rst","patch_set":22,"id":"da6895a0_00a5eca0","line":649,"in_reply_to":"da6895a0_14600935","updated":"2016-10-25 08:51:40.000000000","message":"Interesting point. i don\u0027t see a use case for a user. So admin only would make sense. I guess this is an area where I need some guidance - I\u0027ll put this question on the nova-neutron agenda..","commit_id":"c4b46abd5a725b5693788a9cf47a587a567fbde3"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"fb4dadb01359018bdc461036329cd18ad94885fb","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Provide Portbinding information for Nova Live Migration"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/neutron/+bug/1580880"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ba5da102_1416e1f0","line":8,"range":{"start_line":8,"start_character":20,"end_line":8,"end_character":21},"updated":"2016-11-01 18:36:08.000000000","message":"nit (just in case I don\u0027t find any other things to comment on): capitalize all \"long\" words in title case","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"b9beb545336acbad39d1d82381efd38c5ad8c779","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Provide Portbinding information for Nova Live Migration"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/neutron/+bug/1580880"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a629dbe_da40a10a","line":8,"range":{"start_line":8,"start_character":20,"end_line":8,"end_character":21},"in_reply_to":"ba5da102_1416e1f0","updated":"2016-11-07 09:32:39.000000000","message":"Done","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"fb4dadb01359018bdc461036329cd18ad94885fb","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Neutron needs to provide a way to allow such an early binding, without removing"},{"line_number":42,"context_line":"the original binding from the source. The proposal is to have a compute port"},{"line_number":43,"context_line":"bound to the source AND target host during migration, where only one of the"},{"line_number":44,"context_line":"bindings is the active binding. After the new binding got activated, the old"},{"line_number":45,"context_line":"binding should still be kept (as inactive binding) for rollback and only be"},{"line_number":46,"context_line":"removed in the last stage as last step."},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"ba5da102_3ae3cf34","line":44,"range":{"start_line":44,"start_character":54,"end_line":44,"end_character":57},"updated":"2016-11-01 18:36:08.000000000","message":"tiny nit: \"is\" or \"gets\" would be better than \"got\"","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"b9beb545336acbad39d1d82381efd38c5ad8c779","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Neutron needs to provide a way to allow such an early binding, without removing"},{"line_number":42,"context_line":"the original binding from the source. The proposal is to have a compute port"},{"line_number":43,"context_line":"bound to the source AND target host during migration, where only one of the"},{"line_number":44,"context_line":"bindings is the active binding. After the new binding got activated, the old"},{"line_number":45,"context_line":"binding should still be kept (as inactive binding) for rollback and only be"},{"line_number":46,"context_line":"removed in the last stage as last step."},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a629dbe_ba620dac","line":44,"range":{"start_line":44,"start_character":54,"end_line":44,"end_character":57},"in_reply_to":"ba5da102_3ae3cf34","updated":"2016-11-07 09:32:39.000000000","message":"Done","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"130dda940bf2b9e4c51d6f081585ef8fb0421230","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            },"},{"line_number":183,"context_line":"            {"},{"line_number":184,"context_line":"                \"host_id\": \"host2\","},{"line_number":185,"context_line":"                \"vif_type\": \"lb\""},{"line_number":186,"context_line":"                \"vif_details\": {"},{"line_number":187,"context_line":"                    \"port_filter\": true,"},{"line_number":188,"context_line":"                    },"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ba5da102_fa18c186","line":185,"updated":"2016-10-28 16:50:18.000000000","message":"nit: AFAIR it\u0027s \"linuxbridge\" instead of \"lb\"","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"b9beb545336acbad39d1d82381efd38c5ad8c779","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            },"},{"line_number":183,"context_line":"            {"},{"line_number":184,"context_line":"                \"host_id\": \"host2\","},{"line_number":185,"context_line":"                \"vif_type\": \"lb\""},{"line_number":186,"context_line":"                \"vif_details\": {"},{"line_number":187,"context_line":"                    \"port_filter\": true,"},{"line_number":188,"context_line":"                    },"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a629dbe_fa2ac52b","line":185,"in_reply_to":"ba5da102_fa18c186","updated":"2016-11-07 09:32:39.000000000","message":"just looked it up, it\u0027s \"bridge\"","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"130dda940bf2b9e4c51d6f081585ef8fb0421230","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                    },"},{"line_number":189,"context_line":"                \"profile\": {},"},{"line_number":190,"context_line":"                \"vnic_type\": \"normal\","},{"line_number":191,"context_line":"                \"status\": \"active\""},{"line_number":192,"context_line":"            },"},{"line_number":193,"context_line":"        ]"},{"line_number":194,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ba5da102_1a1c9576","line":191,"updated":"2016-10-28 16:50:18.000000000","message":"both bindings are active?","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"b9beb545336acbad39d1d82381efd38c5ad8c779","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                    },"},{"line_number":189,"context_line":"                \"profile\": {},"},{"line_number":190,"context_line":"                \"vnic_type\": \"normal\","},{"line_number":191,"context_line":"                \"status\": \"active\""},{"line_number":192,"context_line":"            },"},{"line_number":193,"context_line":"        ]"},{"line_number":194,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a629dbe_5a76513f","line":191,"in_reply_to":"ba5da102_1a1c9576","updated":"2016-11-07 09:32:39.000000000","message":"good catch!","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"fb4dadb01359018bdc461036329cd18ad94885fb","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"* Should there be a limit for creating bindings?"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"* Do we need a mechanism to ensure that only 1 binidng can be active for"},{"line_number":365,"context_line":"  a compute port? I think so!"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"* Should the creation of a binding be restricted to ports with compute"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ba5da102_9a0dbbea","line":364,"range":{"start_line":364,"start_character":47,"end_line":364,"end_character":54},"updated":"2016-11-01 18:36:08.000000000","message":"binidng -\u003e binding","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"b9beb545336acbad39d1d82381efd38c5ad8c779","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"* Should there be a limit for creating bindings?"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"* Do we need a mechanism to ensure that only 1 binidng can be active for"},{"line_number":365,"context_line":"  a compute port? I think so!"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"* Should the creation of a binding be restricted to ports with compute"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a629dbe_da98a16d","line":364,"range":{"start_line":364,"start_character":47,"end_line":364,"end_character":54},"in_reply_to":"ba5da102_9a0dbbea","updated":"2016-11-07 09:32:39.000000000","message":"Done","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"130dda940bf2b9e4c51d6f081585ef8fb0421230","unresolved":false,"context_lines":[{"line_number":365,"context_line":"  a compute port? I think so!"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"* Should the creation of a binding be restricted to ports with compute"},{"line_number":368,"context_line":"  bindings? What about creating bindings for a router, dhcp port?"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Should we have a capability to create a binding based on an existing binding"},{"line_number":371,"context_line":"  (for live migration)? Or should nova take care of creating the second"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ba5da102_5a160d56","line":368,"updated":"2016-10-28 16:50:18.000000000","message":"I don\u0027t know about router ports but for dhcp port I don\u0027t know how it can be useful","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"b9beb545336acbad39d1d82381efd38c5ad8c779","unresolved":false,"context_lines":[{"line_number":365,"context_line":"  a compute port? I think so!"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"* Should the creation of a binding be restricted to ports with compute"},{"line_number":368,"context_line":"  bindings? What about creating bindings for a router, dhcp port?"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Should we have a capability to create a binding based on an existing binding"},{"line_number":371,"context_line":"  (for live migration)? Or should nova take care of creating the second"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a629dbe_daafc17b","line":368,"in_reply_to":"ba5da102_5a160d56","updated":"2016-11-07 09:32:39.000000000","message":"I\u0027m not sure either...","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"130dda940bf2b9e4c51d6f081585ef8fb0421230","unresolved":false,"context_lines":[{"line_number":380,"context_line":"  explicit activation?"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"* Would we consider a failed binding as an client issue (4xx code) or a server"},{"line_number":383,"context_line":"  issue (5xx code)? Ideas for concrete http codes?"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"* Can we make the MAC address part of a binding (sr-iov migration?)"},{"line_number":386,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"ba5da102_9a08a52f","line":383,"updated":"2016-10-28 16:50:18.000000000","message":"IMHO it\u0027s server issue","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"b9beb545336acbad39d1d82381efd38c5ad8c779","unresolved":false,"context_lines":[{"line_number":380,"context_line":"  explicit activation?"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"* Would we consider a failed binding as an client issue (4xx code) or a server"},{"line_number":383,"context_line":"  issue (5xx code)? Ideas for concrete http codes?"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"* Can we make the MAC address part of a binding (sr-iov migration?)"},{"line_number":386,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a629dbe_7a1dd5bc","line":383,"in_reply_to":"ba5da102_9a08a52f","updated":"2016-11-07 09:32:39.000000000","message":"I personally tend more to a client error, as the user can recover from it when specifying a different host - but I guess we could also argue the other way round (he cannot recover from it on this host). collecting more opinions here...","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"130dda940bf2b9e4c51d6f081585ef8fb0421230","unresolved":false,"context_lines":[{"line_number":454,"context_line":"  the status field of a binding."},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"* Should this automatically deactivate all active bindings? Or is deactivate"},{"line_number":457,"context_line":"  an explicit step?"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"Delete binding"},{"line_number":460,"context_line":"~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ba5da102_da021d0b","line":457,"updated":"2016-10-28 16:50:18.000000000","message":"if deacitvate will be explicit step, will it be possible to deactivate binding when is only one?","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"b9beb545336acbad39d1d82381efd38c5ad8c779","unresolved":false,"context_lines":[{"line_number":454,"context_line":"  the status field of a binding."},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"* Should this automatically deactivate all active bindings? Or is deactivate"},{"line_number":457,"context_line":"  an explicit step?"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"Delete binding"},{"line_number":460,"context_line":"~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a629dbe_1a6db932","line":457,"in_reply_to":"ba5da102_da021d0b","updated":"2016-11-07 09:32:39.000000000","message":"good question - I don\u0027t think it makes sense. I\u0027ll add this thought to the document","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"130dda940bf2b9e4c51d6f081585ef8fb0421230","unresolved":false,"context_lines":[{"line_number":462,"context_line":"DELETE /v2.0/ports/​{port_id}​/bindings/{host_id}"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"This operation does not accept a request body and does not return a response"},{"line_number":465,"context_line":"body."},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"Overlap existing vs new APIs"},{"line_number":468,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ba5da102_f5fff2fe","line":465,"updated":"2016-10-28 16:50:18.000000000","message":"can active binding be removed?","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"b9beb545336acbad39d1d82381efd38c5ad8c779","unresolved":false,"context_lines":[{"line_number":462,"context_line":"DELETE /v2.0/ports/​{port_id}​/bindings/{host_id}"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"This operation does not accept a request body and does not return a response"},{"line_number":465,"context_line":"body."},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"Overlap existing vs new APIs"},{"line_number":468,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a629dbe_5afc913e","line":465,"in_reply_to":"ba5da102_f5fff2fe","updated":"2016-11-07 09:32:39.000000000","message":"yes, this would be the same like updating a port with host \"\"","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"fb4dadb01359018bdc461036329cd18ad94885fb","unresolved":false,"context_lines":[{"line_number":489,"context_line":"  * - Delete port: Remove port with all its bindings"},{"line_number":490,"context_line":"    - n/a"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"Affects on existing APIs"},{"line_number":493,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"None! For the existing APIs"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ba5da102_9adbfb4e","line":492,"range":{"start_line":492,"start_character":0,"end_line":492,"end_character":7},"updated":"2016-11-01 18:36:08.000000000","message":"Affects -\u003e Effects","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"b9beb545336acbad39d1d82381efd38c5ad8c779","unresolved":false,"context_lines":[{"line_number":489,"context_line":"  * - Delete port: Remove port with all its bindings"},{"line_number":490,"context_line":"    - n/a"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"Affects on existing APIs"},{"line_number":493,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"None! For the existing APIs"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a629dbe_fa48058a","line":492,"range":{"start_line":492,"start_character":0,"end_line":492,"end_character":7},"in_reply_to":"ba5da102_9adbfb4e","updated":"2016-11-07 09:32:39.000000000","message":"Done","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"fb4dadb01359018bdc461036329cd18ad94885fb","unresolved":false,"context_lines":[{"line_number":530,"context_line":"multiple bindings there. A new column is required to store the information if"},{"line_number":531,"context_line":"a port is the active or the inactive port."},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"Alternative: Bug `[5]`_ merges the distributed and the normal porbinding table."},{"line_number":534,"context_line":"Now all binding data is stored in a single table (using port_id and host_id"},{"line_number":535,"context_line":"as PK), but there are still two separate binding paths for normal and"},{"line_number":536,"context_line":"distributed ports (like prototype patch `[8]`_)."}],"source_content_type":"text/x-rst","patch_set":26,"id":"ba5da102_1d19a522","line":533,"range":{"start_line":533,"start_character":62,"end_line":533,"end_character":72},"updated":"2016-11-01 18:36:08.000000000","message":"porbinding -\u003e portbinding","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"b9beb545336acbad39d1d82381efd38c5ad8c779","unresolved":false,"context_lines":[{"line_number":530,"context_line":"multiple bindings there. A new column is required to store the information if"},{"line_number":531,"context_line":"a port is the active or the inactive port."},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"Alternative: Bug `[5]`_ merges the distributed and the normal porbinding table."},{"line_number":534,"context_line":"Now all binding data is stored in a single table (using port_id and host_id"},{"line_number":535,"context_line":"as PK), but there are still two separate binding paths for normal and"},{"line_number":536,"context_line":"distributed ports (like prototype patch `[8]`_)."}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a629dbe_1a25b9c1","line":533,"range":{"start_line":533,"start_character":62,"end_line":533,"end_character":72},"in_reply_to":"ba5da102_1d19a522","updated":"2016-11-07 09:32:39.000000000","message":"Done","commit_id":"4e44a08764a6b678494a8ddcf6bc9ea3cf8b35dc"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"04a0f89858fc11a064476b3cdaa13b43eb6f4947","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"Questions on Create Binding:"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"* Should there be a limit for creating bindings?"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"* Do we need a mechanism to ensure that only 1 binding can be active for"},{"line_number":365,"context_line":"  a compute port? I think so!"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_adf899c4","line":362,"updated":"2016-11-09 16:05:49.000000000","message":"I think migration bindings shouldn\u0027t count toward the quota?  I would think you could only create 1 migration binding tied to an existing active binding anyhow.","commit_id":"137753ec5662a0618787e3674f01712f7fb92686"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a9b8136b15b7fb0e4fadec241fc67a5ae1cb0da5","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"Questions on Create Binding:"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"* Should there be a limit for creating bindings?"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"* Do we need a mechanism to ensure that only 1 binding can be active for"},{"line_number":365,"context_line":"  a compute port? I think so!"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_74c37389","line":362,"in_reply_to":"9a629dbe_adf899c4","updated":"2016-11-10 16:59:24.000000000","message":"agree for migration bindings.\n\nBasically this question comes from the summit discussion. There Nova argued that Neutron shouldn\u0027t know anything about migration. It should rather offer some general that is not tied to migration. So the question is also, should other bindings be included as well? And if so, how to deal with them?","commit_id":"137753ec5662a0618787e3674f01712f7fb92686"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"04a0f89858fc11a064476b3cdaa13b43eb6f4947","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"* Should there be a limit for creating bindings?"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"* Do we need a mechanism to ensure that only 1 binding can be active for"},{"line_number":365,"context_line":"  a compute port? I think so!"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"* Should the creation of a binding be restricted to ports with compute"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_2a32af5f","line":364,"updated":"2016-11-09 16:05:49.000000000","message":"Agree, think it\u0027s safe to assume this.","commit_id":"137753ec5662a0618787e3674f01712f7fb92686"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"04a0f89858fc11a064476b3cdaa13b43eb6f4947","unresolved":false,"context_lines":[{"line_number":364,"context_line":"* Do we need a mechanism to ensure that only 1 binding can be active for"},{"line_number":365,"context_line":"  a compute port? I think so!"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"* Should the creation of a binding be restricted to ports with compute"},{"line_number":368,"context_line":"  bindings? What about creating bindings for a router, dhcp port?"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Should we have a capability to create a binding based on an existing binding"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_6a0f4788","line":367,"updated":"2016-11-09 16:05:49.000000000","message":"In the context of a migration binding, would the router be applicable at this point?  I wouldn\u0027t think so.","commit_id":"137753ec5662a0618787e3674f01712f7fb92686"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a9b8136b15b7fb0e4fadec241fc67a5ae1cb0da5","unresolved":false,"context_lines":[{"line_number":364,"context_line":"* Do we need a mechanism to ensure that only 1 binding can be active for"},{"line_number":365,"context_line":"  a compute port? I think so!"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"* Should the creation of a binding be restricted to ports with compute"},{"line_number":368,"context_line":"  bindings? What about creating bindings for a router, dhcp port?"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Should we have a capability to create a binding based on an existing binding"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_340f3b89","line":367,"in_reply_to":"9a629dbe_6a0f4788","updated":"2016-11-10 16:59:24.000000000","message":"No it wouldn\u0027t. This question refers more to the general question about the scope of this new API. Cause if it\u0027s a general portbinding API, why should we treat router bindings differently?\n\nSo I think we need to answer the main question about the scope first!","commit_id":"137753ec5662a0618787e3674f01712f7fb92686"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"04a0f89858fc11a064476b3cdaa13b43eb6f4947","unresolved":false,"context_lines":[{"line_number":367,"context_line":"* Should the creation of a binding be restricted to ports with compute"},{"line_number":368,"context_line":"  bindings? What about creating bindings for a router, dhcp port?"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Should we have a capability to create a binding based on an existing binding"},{"line_number":371,"context_line":"  (for live migration)? Or should nova take care of creating the second"},{"line_number":372,"context_line":"  binding with exactly the same data?"},{"line_number":373,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_8a049b4a","line":370,"updated":"2016-11-09 16:05:49.000000000","message":"For live migration, I think it would be more suitable to create the binding from another binding.  Could we do both?  Allow override if params are defined?","commit_id":"137753ec5662a0618787e3674f01712f7fb92686"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a9b8136b15b7fb0e4fadec241fc67a5ae1cb0da5","unresolved":false,"context_lines":[{"line_number":367,"context_line":"* Should the creation of a binding be restricted to ports with compute"},{"line_number":368,"context_line":"  bindings? What about creating bindings for a router, dhcp port?"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Should we have a capability to create a binding based on an existing binding"},{"line_number":371,"context_line":"  (for live migration)? Or should nova take care of creating the second"},{"line_number":372,"context_line":"  binding with exactly the same data?"},{"line_number":373,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_d79c41c2","line":370,"in_reply_to":"9a629dbe_8a049b4a","updated":"2016-11-10 16:59:24.000000000","message":"maybe, yes. The point here is again, this might work if the API would be live migration centric. If it is not, we must have something that works for everybody... I would not implement such a \"based on\" feature at the beginning. And if so, we should come up with a separate API for it","commit_id":"137753ec5662a0618787e3674f01712f7fb92686"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"04a0f89858fc11a064476b3cdaa13b43eb6f4947","unresolved":false,"context_lines":[{"line_number":371,"context_line":"  (for live migration)? Or should nova take care of creating the second"},{"line_number":372,"context_line":"  binding with exactly the same data?"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"* Shall this API replace the existing API in the future (today a binding"},{"line_number":375,"context_line":"  for a port gets created by setting the binding:host parameter)."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"* Should status be a attribute of create? Or would we always create inactive"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_2d06491d","line":374,"updated":"2016-11-09 16:05:49.000000000","message":"Possibly, what about a binding type: normal, migration.  This could be placed in the binding:profile with type\u003dnormal or type\u003dmigration to designate it\u0027s function.\n\nIf this is the case, does it make sense to create another resource?","commit_id":"137753ec5662a0618787e3674f01712f7fb92686"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a9b8136b15b7fb0e4fadec241fc67a5ae1cb0da5","unresolved":false,"context_lines":[{"line_number":371,"context_line":"  (for live migration)? Or should nova take care of creating the second"},{"line_number":372,"context_line":"  binding with exactly the same data?"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"* Shall this API replace the existing API in the future (today a binding"},{"line_number":375,"context_line":"  for a port gets created by setting the binding:host parameter)."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"* Should status be a attribute of create? Or would we always create inactive"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_32cd8bb7","line":374,"in_reply_to":"9a629dbe_2d06491d","updated":"2016-11-10 16:59:24.000000000","message":"hhmm I don\u0027t like placing something in the profile...I think we can live without any special indication here. My question was just more general, if we should design the new API in a way, that it covers everything of the existing API...","commit_id":"137753ec5662a0618787e3674f01712f7fb92686"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"04a0f89858fc11a064476b3cdaa13b43eb6f4947","unresolved":false,"context_lines":[{"line_number":374,"context_line":"* Shall this API replace the existing API in the future (today a binding"},{"line_number":375,"context_line":"  for a port gets created by setting the binding:host parameter)."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"* Should status be a attribute of create? Or would we always create inactive"},{"line_number":378,"context_line":"  port and then force the user to activate it via the activate API? Or should"},{"line_number":379,"context_line":"  the first binding become activated by default, while all others need"},{"line_number":380,"context_line":"  explicit activation?"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_ad95f987","line":377,"updated":"2016-11-09 16:05:49.000000000","message":"If you are creating a migration binding, it should be inactive with the required workflow of activating the binding when you are ready.","commit_id":"137753ec5662a0618787e3674f01712f7fb92686"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a9b8136b15b7fb0e4fadec241fc67a5ae1cb0da5","unresolved":false,"context_lines":[{"line_number":374,"context_line":"* Shall this API replace the existing API in the future (today a binding"},{"line_number":375,"context_line":"  for a port gets created by setting the binding:host parameter)."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"* Should status be a attribute of create? Or would we always create inactive"},{"line_number":378,"context_line":"  port and then force the user to activate it via the activate API? Or should"},{"line_number":379,"context_line":"  the first binding become activated by default, while all others need"},{"line_number":380,"context_line":"  explicit activation?"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_f2c07352","line":377,"in_reply_to":"9a629dbe_ad95f987","updated":"2016-11-10 16:59:24.000000000","message":"I think Neutron shouldn\u0027t know anything about migration. we could assume that implicitly. If somebody adds a binding for a compute resource, it should active if it\u0027s the first binding and inactive if it\u0027s the second binding...","commit_id":"137753ec5662a0618787e3674f01712f7fb92686"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"04a0f89858fc11a064476b3cdaa13b43eb6f4947","unresolved":false,"context_lines":[{"line_number":382,"context_line":"* Would we consider a failed binding as an client issue (4xx code) or a server"},{"line_number":383,"context_line":"  issue (5xx code)? Ideas for concrete http codes?"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"* Can we make the MAC address part of a binding (sr-iov migration?)"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"Update binding"},{"line_number":388,"context_line":"~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_adc33988","line":385,"updated":"2016-11-09 16:05:49.000000000","message":"So this depends on if we plan to GARP the new port binding when it activates.  I would believe that creating a new MAC would be in the best interest instead of trying to move the MAC.","commit_id":"137753ec5662a0618787e3674f01712f7fb92686"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a9b8136b15b7fb0e4fadec241fc67a5ae1cb0da5","unresolved":false,"context_lines":[{"line_number":382,"context_line":"* Would we consider a failed binding as an client issue (4xx code) or a server"},{"line_number":383,"context_line":"  issue (5xx code)? Ideas for concrete http codes?"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"* Can we make the MAC address part of a binding (sr-iov migration?)"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"Update binding"},{"line_number":388,"context_line":"~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9a629dbe_b27c3bb6","line":385,"in_reply_to":"9a629dbe_adc33988","updated":"2016-11-10 16:59:24.000000000","message":"Maybe I need to elaborate a little more here. A resize is a special case of a live migration. It\u0027s live migration where source \u003d\u003d target host. Now if you do a resize with an sr-iov device attached, you\u0027ll get a new MAC address assigned. Now if the MAC address would be part of the binding (and 2 bindings would exist) we could have 2 different MAC addresses for a port. (one valid on the source, the other one valid on the target). Need to ask Moshe again, if I understood this correctly...","commit_id":"137753ec5662a0618787e3674f01712f7fb92686"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a229da29c1d4c9fd80837c595ddfbf9a0f634023","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Problem Description"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"To achieve live migration, it is required that Neutron allow port binding"},{"line_number":40,"context_line":"on the target compute host during the pre_live_migration stage, without"},{"line_number":41,"context_line":"removing the original port binding on the source compute."},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a629dbe_aa04c917","line":39,"updated":"2016-11-10 15:29:17.000000000","message":"This is not true. Live migration is already working today, although port binding is done in post live migration. To lift the restrictions, this early portbinding is required.","commit_id":"943317bb540b30b780a30c21e871fdcad6b7efdc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a229da29c1d4c9fd80837c595ddfbf9a0f634023","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            \"id\": \"46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2\","},{"line_number":206,"context_line":"            \"updated_at\": \"2016-03-08T20:19:41\","},{"line_number":207,"context_line":"            \"security_groups\": [],"},{"line_number":208,"context_line":"            \"device_id\": \"5e3898d7-11be-483e-9732-b2f5eccd2b2e\","},{"line_number":209,"context_line":"            \"bindings\": ["},{"line_number":210,"context_line":"                {"},{"line_number":211,"context_line":"                    \"host_id\": \"host1\","}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a629dbe_cf44afb8","line":208,"updated":"2016-11-10 15:29:17.000000000","message":"we must keep the existing binding:xx attributes here for backwardscompatibility. I guess there\u0027s a process of how to deprecate an API properly","commit_id":"943317bb540b30b780a30c21e871fdcad6b7efdc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a229da29c1d4c9fd80837c595ddfbf9a0f634023","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            \"updated_at\": \"2016-03-08T20:19:41\","},{"line_number":207,"context_line":"            \"security_groups\": [],"},{"line_number":208,"context_line":"            \"device_id\": \"5e3898d7-11be-483e-9732-b2f5eccd2b2e\","},{"line_number":209,"context_line":"            \"bindings\": ["},{"line_number":210,"context_line":"                {"},{"line_number":211,"context_line":"                    \"host_id\": \"host1\","},{"line_number":212,"context_line":"                    \"vif_type\": \"ovs\""}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a629dbe_afa85b21","line":209,"updated":"2016-11-10 15:29:17.000000000","message":"the challenge with this approach is, that the list might become very long, e.g. for DVR (300 Nodes can mean up to 300 bindings)\nIf this is only for compute ports (where only 2 bindings can exist) I would be fine with that","commit_id":"943317bb540b30b780a30c21e871fdcad6b7efdc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a229da29c1d4c9fd80837c595ddfbf9a0f634023","unresolved":false,"context_lines":[{"line_number":328,"context_line":"::"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    {"},{"line_number":331,"context_line":"        \"bindings\": ["},{"line_number":332,"context_line":"            {\"host_id\": \"target-host\"}"},{"line_number":333,"context_line":"        ]"},{"line_number":334,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a629dbe_0a1935d7","line":331,"updated":"2016-11-10 15:29:17.000000000","message":"I\u0027m not sure if this is along the API style guide (if some exist :P). Just from reading this, I would assume that you set the bindings attribute with this API. In this example you would set it to exactly {\"host_id:\"target_id\"}.\n\nBut what you\u0027re proposing here, is that this command also can add a second binding, right? For adding a second binding I would have expected something like this:\n{\"host_id\": \"target-host\", \"host_id2\": \"target_host2\"}. Where target-host is the already existing binding and target_host2 the new one.\n\nI guess it\u0027s a more general question: How can list entries of an API entity be created/updated/deleted? Maybe it makes sense to have a look at existing ones (like allowed_address_pairs) to learn from them. \n\nI\u0027m not an API expert - so maybe I\u0027m totally wrong!","commit_id":"943317bb540b30b780a30c21e871fdcad6b7efdc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a229da29c1d4c9fd80837c595ddfbf9a0f634023","unresolved":false,"context_lines":[{"line_number":402,"context_line":"  already active, the binding will default to inactive, requiring the operator"},{"line_number":403,"context_line":"  to activate the binding."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"* An inactive binding should not count against the quota limit."},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"* A compute port can only have 1 active binding at a time."},{"line_number":408,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a629dbe_af04db17","line":405,"updated":"2016-11-10 15:29:17.000000000","message":"I\u0027m not aware of a quota for bindings. Probably you mean that a port with 2 bindings should only be counted once for port quotas?","commit_id":"943317bb540b30b780a30c21e871fdcad6b7efdc"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a229da29c1d4c9fd80837c595ddfbf9a0f634023","unresolved":false,"context_lines":[{"line_number":464,"context_line":"Delete binding"},{"line_number":465,"context_line":"~~~~~~~~~~~~~~"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"DELETE /v2.0/ports/​{port_id}​/bindings/{host_id}"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"This operation does not accept a request body and does not return a response"},{"line_number":470,"context_line":"body."}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a629dbe_ca71fd45","line":467,"updated":"2016-11-10 15:29:17.000000000","message":"hhmm... This is totally different than what is proposed above. I guess this ribles down to the general question stated above: how to do CUD operations on list attributes...","commit_id":"943317bb540b30b780a30c21e871fdcad6b7efdc"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"1f79f9be5c371a08a3d5064181207f724835a192","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"* live_migration_operation - migration itself which consists of 2 substages:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  * before the VM is running on the destination compute."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  * after VM is running on the destination compute, but migration is still in"},{"line_number":23,"context_line":"    progress (post copy migration)."}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a629dbe_2d0ee08b","line":20,"updated":"2016-11-21 19:56:28.000000000","message":"Can we specify that the VM is created on the destination compute and is not active in the pre copy phase?","commit_id":"7ef61ee7d4896f40cb874dfd2d6e8e0408d331bd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a1c4677c200e212d54f8470dfc3a6f3fed57e2d6","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"* live_migration_operation - migration itself which consists of 2 substages:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  * before the VM is running on the destination compute."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  * after VM is running on the destination compute, but migration is still in"},{"line_number":23,"context_line":"    progress (post copy migration)."}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a629dbe_c57279b0","line":20,"updated":"2016-11-14 08:41:11.000000000","message":"just learned that this phase is named \"pre-copy\"","commit_id":"7ef61ee7d4896f40cb874dfd2d6e8e0408d331bd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a1c4677c200e212d54f8470dfc3a6f3fed57e2d6","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  * before the VM is running on the destination compute."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  * after VM is running on the destination compute, but migration is still in"},{"line_number":23,"context_line":"    progress (post copy migration)."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"* post_live_migration - executed after migration; source VM does not exist"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a629dbe_65644de5","line":22,"updated":"2016-11-14 08:41:11.000000000","message":"this phase is name \"post-copy\"","commit_id":"7ef61ee7d4896f40cb874dfd2d6e8e0408d331bd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a1c4677c200e212d54f8470dfc3a6f3fed57e2d6","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Problem Description"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"For live migration advancements, it is required that Neutron allow port binding"},{"line_number":40,"context_line":"on the target compute host during the pre_live_migration stage, without"},{"line_number":41,"context_line":"removing the original port binding on the source compute."},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a629dbe_a5bae508","line":39,"range":{"start_line":39,"start_character":61,"end_line":39,"end_character":66},"updated":"2016-11-14 08:41:11.000000000","message":"nit: allows","commit_id":"7ef61ee7d4896f40cb874dfd2d6e8e0408d331bd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a1c4677c200e212d54f8470dfc3a6f3fed57e2d6","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    The solution is to move the port binding to the pre_live_migration stage,"},{"line_number":61,"context_line":"    where there is an opportunity to fail the port binding earlier.  This would"},{"line_number":62,"context_line":"    prevent the instance from being stuck in an errored state after the"},{"line_number":63,"context_line":"    migration is complete and fail the migration at a pre live migration stage."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    The issue with moving the port binding to the pre_live_migration stage is"},{"line_number":66,"context_line":"    that some drivers will shutdown the port binding on the source compute"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a629dbe_a5682589","line":63,"updated":"2016-11-14 08:41:11.000000000","message":"maybe state that the instance resides active on the source host in this case","commit_id":"7ef61ee7d4896f40cb874dfd2d6e8e0408d331bd"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"1f79f9be5c371a08a3d5064181207f724835a192","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    The solution is to move the port binding to the pre_live_migration stage,"},{"line_number":61,"context_line":"    where there is an opportunity to fail the port binding earlier.  This would"},{"line_number":62,"context_line":"    prevent the instance from being stuck in an errored state after the"},{"line_number":63,"context_line":"    migration is complete and fail the migration at a pre live migration stage."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    The issue with moving the port binding to the pre_live_migration stage is"},{"line_number":66,"context_line":"    that some drivers will shutdown the port binding on the source compute"}],"source_content_type":"text/x-rst","patch_set":30,"id":"7a77a97e_20c5ca5a","line":63,"in_reply_to":"9a629dbe_a5682589","updated":"2016-11-21 19:56:28.000000000","message":"+1","commit_id":"7ef61ee7d4896f40cb874dfd2d6e8e0408d331bd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a1c4677c200e212d54f8470dfc3a6f3fed57e2d6","unresolved":false,"context_lines":[{"line_number":160,"context_line":"* Rollback performed before the instance is active on target: Remove inactive"},{"line_number":161,"context_line":"  binding."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"* Rollback performed after the instance is active on target: From a Neutron"},{"line_number":164,"context_line":"  standpoint, if the binding is active on the target host, Nova will need to"},{"line_number":165,"context_line":"  set the source binding back to active::"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a629dbe_457bc929","line":163,"updated":"2016-11-14 08:41:11.000000000","message":"just thinking about that case in more detail. I guess there are 2 cases\n1) migration fails due to some nova or neutron error\n2) migration fails, as libvirt migration fails\n\nI think we need a better understanding of what happens in such an error secenario.\n1) Will nova migrate back the instance?\n2) Will libvirt rebuild the instance on the source?\n\nAFAIK now rollback happens to day, once the instance is active on the target.\n\nSo not sure if setting the source binding back to active is the right thing to do","commit_id":"7ef61ee7d4896f40cb874dfd2d6e8e0408d331bd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a1c4677c200e212d54f8470dfc3a6f3fed57e2d6","unresolved":false,"context_lines":[{"line_number":257,"context_line":"      - plain"},{"line_number":258,"context_line":"      - xsd:string"},{"line_number":259,"context_line":"      - The VIF type for this port binding determined during"},{"line_number":260,"context_line":"       portbinding"},{"line_number":261,"context_line":"    * - vif_details"},{"line_number":262,"context_line":"      - plain"},{"line_number":263,"context_line":"      - xsd:dict"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a629dbe_65c60d4b","line":260,"updated":"2016-11-14 08:41:11.000000000","message":"indent","commit_id":"7ef61ee7d4896f40cb874dfd2d6e8e0408d331bd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a1c4677c200e212d54f8470dfc3a6f3fed57e2d6","unresolved":false,"context_lines":[{"line_number":262,"context_line":"      - plain"},{"line_number":263,"context_line":"      - xsd:dict"},{"line_number":264,"context_line":"      - A dictionary containing additional details for this specific"},{"line_number":265,"context_line":"       binding. The details are set by a mechanism driver."},{"line_number":266,"context_line":"    * - vnic_type"},{"line_number":267,"context_line":"      - plain"},{"line_number":268,"context_line":"      - xsd:string"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a629dbe_a5c0252c","line":265,"updated":"2016-11-14 08:41:11.000000000","message":"indent","commit_id":"7ef61ee7d4896f40cb874dfd2d6e8e0408d331bd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a1c4677c200e212d54f8470dfc3a6f3fed57e2d6","unresolved":false,"context_lines":[{"line_number":329,"context_line":"      - plain"},{"line_number":330,"context_line":"      - xsd:string"},{"line_number":331,"context_line":"      - The VNIC type for this port binding."},{"line_number":332,"context_line":"    * - profile (optional)"},{"line_number":333,"context_line":"      - plain"},{"line_number":334,"context_line":"      - xsd:dict"},{"line_number":335,"context_line":"      - A dictionary holding the vif profile."}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a629dbe_25a33551","line":332,"updated":"2016-11-14 08:41:11.000000000","message":"default \u003d {}","commit_id":"7ef61ee7d4896f40cb874dfd2d6e8e0408d331bd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a1c4677c200e212d54f8470dfc3a6f3fed57e2d6","unresolved":false,"context_lines":[{"line_number":351,"context_line":"    {"},{"line_number":352,"context_line":"        binding: {"},{"line_number":353,"context_line":"            \"host_id\": \"target-host_id\","},{"line_number":354,"context_line":"            \"vif_type\": \"ovs\""},{"line_number":355,"context_line":"            \"vif_details\": {"},{"line_number":356,"context_line":"                \"port_filter\": true,"},{"line_number":357,"context_line":"                \"ovs_hybrid_plug\": true"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a629dbe_85f16198","line":354,"updated":"2016-11-14 08:41:11.000000000","message":"target-vif_type","commit_id":"7ef61ee7d4896f40cb874dfd2d6e8e0408d331bd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a1c4677c200e212d54f8470dfc3a6f3fed57e2d6","unresolved":false,"context_lines":[{"line_number":375,"context_line":""},{"line_number":376,"context_line":"* A compute port can only have 1 active binding at a time."},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"* At this time, creation of a binding will be limited to compute ports."},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"* The existing API is not touched, which will return host_id:{host_id} as the"},{"line_number":381,"context_line":"  current active binding."}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a629dbe_e5ca1d1a","line":378,"updated":"2016-11-14 08:41:11.000000000","message":"to precise: port.device_owner starts with \u0027compute:\u0027","commit_id":"7ef61ee7d4896f40cb874dfd2d6e8e0408d331bd"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"a1c4677c200e212d54f8470dfc3a6f3fed57e2d6","unresolved":false,"context_lines":[{"line_number":399,"context_line":"      - plain"},{"line_number":400,"context_line":"      - xsd:dict"},{"line_number":401,"context_line":"      - A *binding* object"},{"line_number":402,"context_line":"    * - vnic_type (optional, default \u003d \u0027normal\u0027)"},{"line_number":403,"context_line":"      - plain"},{"line_number":404,"context_line":"      - xsd:string"},{"line_number":405,"context_line":"      - The VNIC type for this port binding."}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a629dbe_a5e1059d","line":402,"updated":"2016-11-14 08:41:11.000000000","message":"remove the default here. Update shouldn\u0027t deal with defaults.","commit_id":"7ef61ee7d4896f40cb874dfd2d6e8e0408d331bd"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"1f79f9be5c371a08a3d5064181207f724835a192","unresolved":false,"context_lines":[{"line_number":723,"context_line":".. _[5]: https://bugs.launchpad.net/neutron/+bug/1367391"},{"line_number":724,"context_line":".. _[6]: https://review.openstack.org/#/c/340031/"},{"line_number":725,"context_line":".. _[7]: https://bugs.launchpad.net/neutron/+bug/1595043"},{"line_number":726,"context_line":".. _[8]: https://review.openstack.org/340410"}],"source_content_type":"text/x-rst","patch_set":30,"id":"7a77a97e_433650b5","line":726,"updated":"2016-11-21 19:56:28.000000000","message":"Including [1] to the reference list will be helpful\n\n[1] https://review.openstack.org/#/c/375580","commit_id":"7ef61ee7d4896f40cb874dfd2d6e8e0408d331bd"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":26,"context_line":"  anymore. Used for finalizing the migration."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Today, port binding occurs on the target compute host during migration,"},{"line_number":29,"context_line":"considered now in the post_live__migration stage.  This, unfortunately, is"},{"line_number":30,"context_line":"too late in the process as there are instances where Nova requires this"},{"line_number":31,"context_line":"information in the pre_live_migration stage.  We simply cannot move the port"},{"line_number":32,"context_line":"binding to the pre_live_migration stage as the original port binding would be"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_f5c9a4ad","line":29,"range":{"start_line":29,"start_character":31,"end_line":29,"end_character":33},"updated":"2016-11-22 17:10:08.000000000","message":"redundant _?","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":26,"context_line":"  anymore. Used for finalizing the migration."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Today, port binding occurs on the target compute host during migration,"},{"line_number":29,"context_line":"considered now in the post_live__migration stage.  This, unfortunately, is"},{"line_number":30,"context_line":"too late in the process as there are instances where Nova requires this"},{"line_number":31,"context_line":"information in the pre_live_migration stage.  We simply cannot move the port"},{"line_number":32,"context_line":"binding to the pre_live_migration stage as the original port binding would be"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_e2f113cf","line":29,"range":{"start_line":29,"start_character":31,"end_line":29,"end_character":33},"in_reply_to":"7a77a97e_f5c9a4ad","updated":"2016-11-23 16:56:09.000000000","message":"not too redundant here.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Today, port binding occurs on the target compute host during migration,"},{"line_number":29,"context_line":"considered now in the post_live__migration stage.  This, unfortunately, is"},{"line_number":30,"context_line":"too late in the process as there are instances where Nova requires this"},{"line_number":31,"context_line":"information in the pre_live_migration stage.  We simply cannot move the port"},{"line_number":32,"context_line":"binding to the pre_live_migration stage as the original port binding would be"},{"line_number":33,"context_line":"deleted, causing issues due to the instance being active still on the original"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_55bfb8fb","line":30,"range":{"start_line":30,"start_character":37,"end_line":30,"end_character":46},"updated":"2016-11-22 17:10:08.000000000","message":"cases you mean? the \u0027instance\u0027 term is a bit overloaded.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Today, port binding occurs on the target compute host during migration,"},{"line_number":29,"context_line":"considered now in the post_live__migration stage.  This, unfortunately, is"},{"line_number":30,"context_line":"too late in the process as there are instances where Nova requires this"},{"line_number":31,"context_line":"information in the pre_live_migration stage.  We simply cannot move the port"},{"line_number":32,"context_line":"binding to the pre_live_migration stage as the original port binding would be"},{"line_number":33,"context_line":"deleted, causing issues due to the instance being active still on the original"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_82b93fec","line":30,"range":{"start_line":30,"start_character":37,"end_line":30,"end_character":46},"in_reply_to":"7a77a97e_55bfb8fb","updated":"2016-11-23 16:56:09.000000000","message":"agree","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"ea8ede4aebc2e18fa546a82fe7cf84f24274da49","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Problem Description"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"For live migration advancements, it is required that Neutron allow port binding"},{"line_number":40,"context_line":"on the target compute host during the pre_live_migration stage, without"},{"line_number":41,"context_line":"removing the original port binding on the source compute."},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_7bb6b73e","line":39,"range":{"start_line":39,"start_character":19,"end_line":39,"end_character":31},"updated":"2016-11-22 22:39:41.000000000","message":"I\u0027m not sure if \"advancements\" really means anything here. You don\u0027t need to remove it, but if you\u0027re trying to say something specific I may be missing it.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Problem Description"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"For live migration advancements, it is required that Neutron allow port binding"},{"line_number":40,"context_line":"on the target compute host during the pre_live_migration stage, without"},{"line_number":41,"context_line":"removing the original port binding on the source compute."},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_956790b6","line":39,"range":{"start_line":39,"start_character":61,"end_line":39,"end_character":66},"updated":"2016-11-22 17:10:08.000000000","message":"nit: allows","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Problem Description"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"For live migration advancements, it is required that Neutron allow port binding"},{"line_number":40,"context_line":"on the target compute host during the pre_live_migration stage, without"},{"line_number":41,"context_line":"removing the original port binding on the source compute."},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_c2797731","line":39,"range":{"start_line":39,"start_character":19,"end_line":39,"end_character":31},"in_reply_to":"5a74a57a_7bb6b73e","updated":"2016-11-23 16:56:09.000000000","message":"improvements might be better here","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    The solution is to move the port binding to the pre_live_migration stage,"},{"line_number":61,"context_line":"    where there is an opportunity to fail the port binding earlier.  This would"},{"line_number":62,"context_line":"    prevent the instance from being stuck in an errored state after the"},{"line_number":63,"context_line":"    migration is complete and fail the migration at a pre live migration stage."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    The issue with moving the port binding to the pre_live_migration stage is"},{"line_number":66,"context_line":"    that some drivers will shutdown the port binding on the source compute"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_95ecf0f4","line":63,"range":{"start_line":63,"start_character":54,"end_line":63,"end_character":72},"updated":"2016-11-22 17:10:08.000000000","message":"pre_live_migration","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    The solution is to move the port binding to the pre_live_migration stage,"},{"line_number":61,"context_line":"    where there is an opportunity to fail the port binding earlier.  This would"},{"line_number":62,"context_line":"    prevent the instance from being stuck in an errored state after the"},{"line_number":63,"context_line":"    migration is complete and fail the migration at a pre live migration stage."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    The issue with moving the port binding to the pre_live_migration stage is"},{"line_number":66,"context_line":"    that some drivers will shutdown the port binding on the source compute"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_02744f33","line":63,"range":{"start_line":63,"start_character":54,"end_line":63,"end_character":72},"in_reply_to":"7a77a97e_95ecf0f4","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    Another case to consider is the chance that the migration occurs between"},{"line_number":76,"context_line":"    two hosts running different l2 agents.  The requirement here is on Nova"},{"line_number":77,"context_line":"    to update the instance definition before the migration is executed. In the"},{"line_number":78,"context_line":"    base of libvirt, Nova would update the domain.xml with the target"},{"line_number":79,"context_line":"    interface definition.  For more information, refer to `[3]`_ and `[4]`_."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    A special case to consider is where a migration occurs between agents"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_559ed854","line":78,"range":{"start_line":78,"start_character":4,"end_line":78,"end_character":8},"updated":"2016-11-22 17:10:08.000000000","message":"case?","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    Another case to consider is the chance that the migration occurs between"},{"line_number":76,"context_line":"    two hosts running different l2 agents.  The requirement here is on Nova"},{"line_number":77,"context_line":"    to update the instance definition before the migration is executed. In the"},{"line_number":78,"context_line":"    base of libvirt, Nova would update the domain.xml with the target"},{"line_number":79,"context_line":"    interface definition.  For more information, refer to `[3]`_ and `[4]`_."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    A special case to consider is where a migration occurs between agents"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_22b6abdc","line":78,"range":{"start_line":78,"start_character":4,"end_line":78,"end_character":8},"in_reply_to":"7a77a97e_559ed854","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":165,"context_line":"  standpoint, if the binding is active on the target host, Nova will need to"},{"line_number":166,"context_line":"  set the source binding back to active::"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    PUT /v2.0/ports/{port_id}/bindings/{host_id}/activate"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"For more details on the Nova implementation , see the related Nova"},{"line_number":171,"context_line":"Blueprint `[3]`_ and its Spec `[4]`_."}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_21411a3a","line":168,"updated":"2016-11-22 17:10:08.000000000","message":"From neutron perspective, I don\u0027t see why we can\u0027t have all inactive bindings. Wouldn\u0027t it simplify neutron side if we would just expose activate and deactivate actions and would NOT constrain any variation of binding activation states.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":165,"context_line":"  standpoint, if the binding is active on the target host, Nova will need to"},{"line_number":166,"context_line":"  set the source binding back to active::"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    PUT /v2.0/ports/{port_id}/bindings/{host_id}/activate"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"For more details on the Nova implementation , see the related Nova"},{"line_number":171,"context_line":"Blueprint `[3]`_ and its Spec `[4]`_."}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_c23c1732","line":168,"in_reply_to":"7a77a97e_21411a3a","updated":"2016-11-23 16:56:09.000000000","message":"The idea here was to not interrupt the normal operation of compute bindings.  This really is an extension for the sole purpose of live migration and hidden from normal users.  If we were to go a different direction here it would deviate entirely from this spec.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":170,"context_line":"For more details on the Nova implementation , see the related Nova"},{"line_number":171,"context_line":"Blueprint `[3]`_ and its Spec `[4]`_."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Binding API Extension for Ports"},{"line_number":174,"context_line":"-------------------------------"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":".. _list_binding:"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_26c4d090","line":173,"updated":"2016-11-22 17:10:08.000000000","message":"How does it fit the current \u0027binding\u0027 extension? Will we support both in ml2, with the \u0027binding\u0027 one exposing just active binding info? Do they coexist, or the new extension trumps the old one?","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":170,"context_line":"For more details on the Nova implementation , see the related Nova"},{"line_number":171,"context_line":"Blueprint `[3]`_ and its Spec `[4]`_."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Binding API Extension for Ports"},{"line_number":174,"context_line":"-------------------------------"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":".. _list_binding:"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_c2233704","line":173,"in_reply_to":"7a77a97e_26c4d090","updated":"2016-11-23 16:56:09.000000000","message":"Above. They will coexist.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":178,"context_line":"List Bindings"},{"line_number":179,"context_line":"~~~~~~~~~~~~~"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"GET /v2.0/ports/​{port_id}​/bindings"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"::"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_3b594d5c","line":181,"range":{"start_line":181,"start_character":16,"end_line":181,"end_character":17},"updated":"2016-11-22 17:10:08.000000000","message":"what\u0027s that red thingy? looks like a non printable \u003c200b\u003e.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":178,"context_line":"List Bindings"},{"line_number":179,"context_line":"~~~~~~~~~~~~~"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"GET /v2.0/ports/​{port_id}​/bindings"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"::"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_c26a571a","line":181,"range":{"start_line":181,"start_character":16,"end_line":181,"end_character":17},"in_reply_to":"7a77a97e_3b594d5c","updated":"2016-11-23 16:56:09.000000000","message":"I have no idea, doesn\u0027t show as anything in my editor hmmm","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        bindings: ["},{"line_number":187,"context_line":"            {"},{"line_number":188,"context_line":"                \"host_id\": \"source-host_id\","},{"line_number":189,"context_line":"                \"vif_type\": \"ovs\""},{"line_number":190,"context_line":"                \"vif_details\": {"},{"line_number":191,"context_line":"                    \"port_filter\": true,"},{"line_number":192,"context_line":"                    \"ovs_hybrid_plug\": true"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_a65d40ee","line":189,"updated":"2016-11-22 17:10:08.000000000","message":"nit: , missing","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        bindings: ["},{"line_number":187,"context_line":"            {"},{"line_number":188,"context_line":"                \"host_id\": \"source-host_id\","},{"line_number":189,"context_line":"                \"vif_type\": \"ovs\""},{"line_number":190,"context_line":"                \"vif_details\": {"},{"line_number":191,"context_line":"                    \"port_filter\": true,"},{"line_number":192,"context_line":"                    \"ovs_hybrid_plug\": true"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_825f7f71","line":189,"in_reply_to":"7a77a97e_a65d40ee","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            },"},{"line_number":198,"context_line":"            {"},{"line_number":199,"context_line":"                \"host_id\": \"target-host_id\","},{"line_number":200,"context_line":"                \"vif_type\": \"bridge\""},{"line_number":201,"context_line":"                \"vif_details\": {"},{"line_number":202,"context_line":"                    \"port_filter\": true,"},{"line_number":203,"context_line":"                    },"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_e65738c8","line":200,"updated":"2016-11-22 17:10:08.000000000","message":"ditto","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            },"},{"line_number":198,"context_line":"            {"},{"line_number":199,"context_line":"                \"host_id\": \"target-host_id\","},{"line_number":200,"context_line":"                \"vif_type\": \"bridge\""},{"line_number":201,"context_line":"                \"vif_details\": {"},{"line_number":202,"context_line":"                    \"port_filter\": true,"},{"line_number":203,"context_line":"                    },"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_42cc8735","line":200,"in_reply_to":"7a77a97e_e65738c8","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":225,"context_line":"Questions on List Bindings:"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"* Should only compute bindings get listed? Or all kind of bindings,"},{"line_number":228,"context_line":"  including DVR bindings?"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"* Should all the details be listed, or just a subset?"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_46f38c9f","line":228,"updated":"2016-11-22 17:10:08.000000000","message":"We can leave API definition open for more types, just return NotImplemented in the first phase.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":225,"context_line":"Questions on List Bindings:"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"* Should only compute bindings get listed? Or all kind of bindings,"},{"line_number":228,"context_line":"  including DVR bindings?"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"* Should all the details be listed, or just a subset?"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_e2e593a8","line":228,"in_reply_to":"7a77a97e_46f38c9f","updated":"2016-11-23 16:56:09.000000000","message":"Agree, perfect.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":227,"context_line":"* Should only compute bindings get listed? Or all kind of bindings,"},{"line_number":228,"context_line":"  including DVR bindings?"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"* Should all the details be listed, or just a subset?"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"* That list might get pretty long for DVR ports. How  and when to limit the"},{"line_number":233,"context_line":"  output?"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_26ce9083","line":230,"updated":"2016-11-22 17:10:08.000000000","message":"It\u0027s better to include all we easily get access to. But... which details do you think we could want to hide?","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":227,"context_line":"* Should only compute bindings get listed? Or all kind of bindings,"},{"line_number":228,"context_line":"  including DVR bindings?"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"* Should all the details be listed, or just a subset?"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"* That list might get pretty long for DVR ports. How  and when to limit the"},{"line_number":233,"context_line":"  output?"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_02fa8f42","line":230,"in_reply_to":"7a77a97e_26ce9083","updated":"2016-11-23 16:56:09.000000000","message":"Nothing intended here to hide, just an open question.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":230,"context_line":"* Should all the details be listed, or just a subset?"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"* That list might get pretty long for DVR ports. How  and when to limit the"},{"line_number":233,"context_line":"  output?"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":".. _show_binding:"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_06851406","line":233,"updated":"2016-11-22 17:10:08.000000000","message":"We have pagination built in API layer.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":230,"context_line":"* Should all the details be listed, or just a subset?"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"* That list might get pretty long for DVR ports. How  and when to limit the"},{"line_number":233,"context_line":"  output?"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":".. _show_binding:"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_82a4df57","line":233,"in_reply_to":"7a77a97e_06851406","updated":"2016-11-23 16:56:09.000000000","message":"Agree.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":253,"context_line":"    * - host_id"},{"line_number":254,"context_line":"      - plain"},{"line_number":255,"context_line":"      - xsd:string"},{"line_number":256,"context_line":"      - The UUID of the host where the port is allocated."},{"line_number":257,"context_line":"    * - vif_type"},{"line_number":258,"context_line":"      - plain"},{"line_number":259,"context_line":"      - xsd:string"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_26a3f09f","line":256,"range":{"start_line":256,"start_character":12,"end_line":256,"end_character":16},"updated":"2016-11-22 17:10:08.000000000","message":"is it really a UUID though? I think atm it\u0027s just a host name.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":253,"context_line":"    * - host_id"},{"line_number":254,"context_line":"      - plain"},{"line_number":255,"context_line":"      - xsd:string"},{"line_number":256,"context_line":"      - The UUID of the host where the port is allocated."},{"line_number":257,"context_line":"    * - vif_type"},{"line_number":258,"context_line":"      - plain"},{"line_number":259,"context_line":"      - xsd:string"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_e5767d3d","line":256,"range":{"start_line":256,"start_character":12,"end_line":256,"end_character":16},"in_reply_to":"7a77a97e_26a3f09f","updated":"2016-11-23 16:56:09.000000000","message":"Correct, hostname.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":282,"context_line":"    {"},{"line_number":283,"context_line":"        binding: {"},{"line_number":284,"context_line":"             \"host_id\": \"target-host_id\","},{"line_number":285,"context_line":"             \"vif_type\": \"target-vif-type\""},{"line_number":286,"context_line":"             \"vif_details\": {"},{"line_number":287,"context_line":"                 \"port_filter\": true,"},{"line_number":288,"context_line":"                 },"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_26d130fc","line":285,"updated":"2016-11-22 17:10:08.000000000","message":"nit: , missing","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":282,"context_line":"    {"},{"line_number":283,"context_line":"        binding: {"},{"line_number":284,"context_line":"             \"host_id\": \"target-host_id\","},{"line_number":285,"context_line":"             \"vif_type\": \"target-vif-type\""},{"line_number":286,"context_line":"             \"vif_details\": {"},{"line_number":287,"context_line":"                 \"port_filter\": true,"},{"line_number":288,"context_line":"                 },"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_65998d6e","line":285,"in_reply_to":"7a77a97e_26d130fc","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    * - host_id (mandatory)"},{"line_number":326,"context_line":"      - plain"},{"line_number":327,"context_line":"      - xsd:string"},{"line_number":328,"context_line":"      - The UUID of the host where the port is allocated."},{"line_number":329,"context_line":"    * - vnic_type (optional, default \u003d \u0027normal\u0027)"},{"line_number":330,"context_line":"      - plain"},{"line_number":331,"context_line":"      - xsd:string"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_662088f8","line":328,"range":{"start_line":328,"start_character":12,"end_line":328,"end_character":17},"updated":"2016-11-22 17:10:08.000000000","message":"ditto on UUID-ness of the field","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    * - host_id (mandatory)"},{"line_number":326,"context_line":"      - plain"},{"line_number":327,"context_line":"      - xsd:string"},{"line_number":328,"context_line":"      - The UUID of the host where the port is allocated."},{"line_number":329,"context_line":"    * - vnic_type (optional, default \u003d \u0027normal\u0027)"},{"line_number":330,"context_line":"      - plain"},{"line_number":331,"context_line":"      - xsd:string"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_c5a0a193","line":328,"range":{"start_line":328,"start_character":12,"end_line":328,"end_character":17},"in_reply_to":"7a77a97e_662088f8","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":352,"context_line":"    {"},{"line_number":353,"context_line":"        binding: {"},{"line_number":354,"context_line":"            \"host_id\": \"target-host_id\","},{"line_number":355,"context_line":"            \"vif_type\": \"ovs\""},{"line_number":356,"context_line":"            \"vif_details\": {"},{"line_number":357,"context_line":"                \"port_filter\": true,"},{"line_number":358,"context_line":"                \"ovs_hybrid_plug\": true"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_e659f88f","line":355,"updated":"2016-11-22 17:10:08.000000000","message":"nit: , missing","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":352,"context_line":"    {"},{"line_number":353,"context_line":"        binding: {"},{"line_number":354,"context_line":"            \"host_id\": \"target-host_id\","},{"line_number":355,"context_line":"            \"vif_type\": \"ovs\""},{"line_number":356,"context_line":"            \"vif_details\": {"},{"line_number":357,"context_line":"                \"port_filter\": true,"},{"line_number":358,"context_line":"                \"ovs_hybrid_plug\": true"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_45bbb1c4","line":355,"in_reply_to":"7a77a97e_e659f88f","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":356,"context_line":"            \"vif_details\": {"},{"line_number":357,"context_line":"                \"port_filter\": true,"},{"line_number":358,"context_line":"                \"ovs_hybrid_plug\": true"},{"line_number":359,"context_line":"                }"},{"line_number":360,"context_line":"             \"vnic_type\": \u0027NORMAL\u0027,"},{"line_number":361,"context_line":"             \"profile\": {},"},{"line_number":362,"context_line":"             \"status\": \"active\""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_c19dc6bc","line":359,"updated":"2016-11-22 17:10:08.000000000","message":"ditto","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":356,"context_line":"            \"vif_details\": {"},{"line_number":357,"context_line":"                \"port_filter\": true,"},{"line_number":358,"context_line":"                \"ovs_hybrid_plug\": true"},{"line_number":359,"context_line":"                }"},{"line_number":360,"context_line":"             \"vnic_type\": \u0027NORMAL\u0027,"},{"line_number":361,"context_line":"             \"profile\": {},"},{"line_number":362,"context_line":"             \"status\": \"active\""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_a5cac54d","line":359,"in_reply_to":"7a77a97e_c19dc6bc","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":365,"context_line":""},{"line_number":366,"context_line":"If the binding fails, a new return code of 4xx or 5xx should be returned. This"},{"line_number":367,"context_line":"differs from today where a failed binding returns a 2xx response code and the"},{"line_number":368,"context_line":"vif_type is set to \"binding_failed\"."},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"Import key features of update/create binding:"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_864924ba","line":368,"updated":"2016-11-22 17:10:08.000000000","message":"the type will still be failed, right?","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":365,"context_line":""},{"line_number":366,"context_line":"If the binding fails, a new return code of 4xx or 5xx should be returned. This"},{"line_number":367,"context_line":"differs from today where a failed binding returns a 2xx response code and the"},{"line_number":368,"context_line":"vif_type is set to \"binding_failed\"."},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"Import key features of update/create binding:"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_65834dcd","line":368,"in_reply_to":"7a77a97e_864924ba","updated":"2016-11-23 16:56:09.000000000","message":"correct, same VIF_TYPE_BINDING_FAILED \u003d \u0027binding_failed\u0027","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":367,"context_line":"differs from today where a failed binding returns a 2xx response code and the"},{"line_number":368,"context_line":"vif_type is set to \"binding_failed\"."},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"Import key features of update/create binding:"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"* By default, the status will be active when creating a port binding.  If"},{"line_number":373,"context_line":"  a binding is created, doesn\u0027t exist already, and an existing binding is"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_e17ba279","line":370,"range":{"start_line":370,"start_character":0,"end_line":370,"end_character":6},"updated":"2016-11-22 17:10:08.000000000","message":"Important?","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":367,"context_line":"differs from today where a failed binding returns a 2xx response code and the"},{"line_number":368,"context_line":"vif_type is set to \"binding_failed\"."},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"Import key features of update/create binding:"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"* By default, the status will be active when creating a port binding.  If"},{"line_number":373,"context_line":"  a binding is created, doesn\u0027t exist already, and an existing binding is"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_c56a611a","line":370,"range":{"start_line":370,"start_character":0,"end_line":370,"end_character":6},"in_reply_to":"7a77a97e_e17ba279","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":370,"context_line":"Import key features of update/create binding:"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"* By default, the status will be active when creating a port binding.  If"},{"line_number":373,"context_line":"  a binding is created, doesn\u0027t exist already, and an existing binding is"},{"line_number":374,"context_line":"  already active, the binding will default to inactive, requiring the"},{"line_number":375,"context_line":"  operator to activate the new binding."},{"line_number":376,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_86f76458","line":373,"range":{"start_line":373,"start_character":24,"end_line":373,"end_character":45},"updated":"2016-11-22 17:10:08.000000000","message":"and what if it exists?","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"4746cb7fabd92ee981fbe01938b0ca7fde58a055","unresolved":false,"context_lines":[{"line_number":370,"context_line":"Import key features of update/create binding:"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"* By default, the status will be active when creating a port binding.  If"},{"line_number":373,"context_line":"  a binding is created, doesn\u0027t exist already, and an existing binding is"},{"line_number":374,"context_line":"  already active, the binding will default to inactive, requiring the"},{"line_number":375,"context_line":"  operator to activate the new binding."},{"line_number":376,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_d3303d0a","line":373,"range":{"start_line":373,"start_character":24,"end_line":373,"end_character":45},"in_reply_to":"7a77a97e_86f76458","updated":"2016-11-22 17:49:07.000000000","message":"If the binding exists already, I would think we would return a 4xx to the user indicating the binding already exists.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":370,"context_line":"Import key features of update/create binding:"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"* By default, the status will be active when creating a port binding.  If"},{"line_number":373,"context_line":"  a binding is created, doesn\u0027t exist already, and an existing binding is"},{"line_number":374,"context_line":"  already active, the binding will default to inactive, requiring the"},{"line_number":375,"context_line":"  operator to activate the new binding."},{"line_number":376,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_65d18dcd","line":373,"range":{"start_line":373,"start_character":24,"end_line":373,"end_character":45},"in_reply_to":"7a77a97e_d3303d0a","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":374,"context_line":"  already active, the binding will default to inactive, requiring the"},{"line_number":375,"context_line":"  operator to activate the new binding."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"* A compute port can only have 1 active binding at a time."},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"* At this time, creation of a binding will be limited to compute ports."},{"line_number":380,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_a630e008","line":377,"updated":"2016-11-22 17:10:08.000000000","message":"Is it a job for neutron to enforce it? Seems like a detail specific to instances that does not necessarily apply for other types of ports; in which case, maybe it\u0027s more correct to implement the constraint from nova side?","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":374,"context_line":"  already active, the binding will default to inactive, requiring the"},{"line_number":375,"context_line":"  operator to activate the new binding."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"* A compute port can only have 1 active binding at a time."},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"* At this time, creation of a binding will be limited to compute ports."},{"line_number":380,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_c586e1b8","line":377,"in_reply_to":"7a77a97e_a630e008","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"4746cb7fabd92ee981fbe01938b0ca7fde58a055","unresolved":false,"context_lines":[{"line_number":374,"context_line":"  already active, the binding will default to inactive, requiring the"},{"line_number":375,"context_line":"  operator to activate the new binding."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"* A compute port can only have 1 active binding at a time."},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"* At this time, creation of a binding will be limited to compute ports."},{"line_number":380,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_136d5504","line":377,"in_reply_to":"7a77a97e_a630e008","updated":"2016-11-22 17:49:07.000000000","message":"I guess the right view here is anything using the PortBinding table can only have 1 binding, which in this case is only the compute ports.  Not really an enforcement, it\u0027s just the way it is.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":420,"context_line":"    {"},{"line_number":421,"context_line":"        binding: {"},{"line_number":422,"context_line":"            \"host_id\": \"target-host_id\","},{"line_number":423,"context_line":"            \"vif_type\": \"ovs\""},{"line_number":424,"context_line":"            \"vif_details\": {"},{"line_number":425,"context_line":"                \"port_filter\": true,"},{"line_number":426,"context_line":"                \"ovs_hybrid_plug\": true"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_616232da","line":423,"updated":"2016-11-22 17:10:08.000000000","message":"nit: , missing","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":420,"context_line":"    {"},{"line_number":421,"context_line":"        binding: {"},{"line_number":422,"context_line":"            \"host_id\": \"target-host_id\","},{"line_number":423,"context_line":"            \"vif_type\": \"ovs\""},{"line_number":424,"context_line":"            \"vif_details\": {"},{"line_number":425,"context_line":"                \"port_filter\": true,"},{"line_number":426,"context_line":"                \"ovs_hybrid_plug\": true"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_45c1f1e3","line":423,"in_reply_to":"7a77a97e_616232da","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            \"vif_details\": {"},{"line_number":425,"context_line":"                \"port_filter\": true,"},{"line_number":426,"context_line":"                \"ovs_hybrid_plug\": true"},{"line_number":427,"context_line":"                }"},{"line_number":428,"context_line":"            \"vnic_type\": \u0027NORMAL\u0027,"},{"line_number":429,"context_line":"            \"profile\": {\"foo\":\"bar\"},"},{"line_number":430,"context_line":"            \"status\": \"active\""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_815d8e17","line":427,"updated":"2016-11-22 17:10:08.000000000","message":"ditto","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            \"vif_details\": {"},{"line_number":425,"context_line":"                \"port_filter\": true,"},{"line_number":426,"context_line":"                \"ovs_hybrid_plug\": true"},{"line_number":427,"context_line":"                }"},{"line_number":428,"context_line":"            \"vnic_type\": \u0027NORMAL\u0027,"},{"line_number":429,"context_line":"            \"profile\": {\"foo\":\"bar\"},"},{"line_number":430,"context_line":"            \"status\": \"active\""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_65b6ed8b","line":427,"in_reply_to":"7a77a97e_815d8e17","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":447,"context_line":"    {"},{"line_number":448,"context_line":"        binding: {"},{"line_number":449,"context_line":"            \"host_id\": \"target-host_id\","},{"line_number":450,"context_line":"            \"vif_type\": \"ovs\""},{"line_number":451,"context_line":"            \"vif_details\": {"},{"line_number":452,"context_line":"                \"port_filter\": true,"},{"line_number":453,"context_line":"                \"ovs_hybrid_plug\": true"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_e16d62cd","line":450,"updated":"2016-11-22 17:10:08.000000000","message":"nit: , missing","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":447,"context_line":"    {"},{"line_number":448,"context_line":"        binding: {"},{"line_number":449,"context_line":"            \"host_id\": \"target-host_id\","},{"line_number":450,"context_line":"            \"vif_type\": \"ovs\""},{"line_number":451,"context_line":"            \"vif_details\": {"},{"line_number":452,"context_line":"                \"port_filter\": true,"},{"line_number":453,"context_line":"                \"ovs_hybrid_plug\": true"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_85bb0972","line":450,"in_reply_to":"7a77a97e_e16d62cd","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":451,"context_line":"            \"vif_details\": {"},{"line_number":452,"context_line":"                \"port_filter\": true,"},{"line_number":453,"context_line":"                \"ovs_hybrid_plug\": true"},{"line_number":454,"context_line":"                }"},{"line_number":455,"context_line":"            \"vnic_type\": \u0027NORMAL\u0027,"},{"line_number":456,"context_line":"            \"profile\": {\"foo\":\"bar\"},"},{"line_number":457,"context_line":"            \"status\": \"active\""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_01717ea8","line":454,"updated":"2016-11-22 17:10:08.000000000","message":"ditto","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":451,"context_line":"            \"vif_details\": {"},{"line_number":452,"context_line":"                \"port_filter\": true,"},{"line_number":453,"context_line":"                \"ovs_hybrid_plug\": true"},{"line_number":454,"context_line":"                }"},{"line_number":455,"context_line":"            \"vnic_type\": \u0027NORMAL\u0027,"},{"line_number":456,"context_line":"            \"profile\": {\"foo\":\"bar\"},"},{"line_number":457,"context_line":"            \"status\": \"active\""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_a5b0058d","line":454,"in_reply_to":"7a77a97e_01717ea8","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":480,"context_line":"  exists does not activate the binding.  The operator will be required to"},{"line_number":481,"context_line":"  explicitly activate the binding."},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"Overlap Existing vs New APIs"},{"line_number":484,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"All the functionality of the existing API will be covered by the new API as"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_c1eb0611","line":483,"range":{"start_line":483,"start_character":0,"end_line":483,"end_character":28},"updated":"2016-11-22 17:10:08.000000000","message":"Overlap between Existing and New APIs","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":480,"context_line":"  exists does not activate the binding.  The operator will be required to"},{"line_number":481,"context_line":"  explicitly activate the binding."},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"Overlap Existing vs New APIs"},{"line_number":484,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"All the functionality of the existing API will be covered by the new API as"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_656d0d04","line":483,"range":{"start_line":483,"start_character":0,"end_line":483,"end_character":28},"in_reply_to":"7a77a97e_c1eb0611","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":484,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"All the functionality of the existing API will be covered by the new API as"},{"line_number":487,"context_line":"well. This section describes the overlap"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":".. list-table:: Overlap existing vs. new API"},{"line_number":490,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_21dd9a70","line":487,"updated":"2016-11-22 17:10:08.000000000","message":"nit: missing trailing dot","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":484,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"All the functionality of the existing API will be covered by the new API as"},{"line_number":487,"context_line":"well. This section describes the overlap"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":".. list-table:: Overlap existing vs. new API"},{"line_number":490,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_057ff9aa","line":487,"in_reply_to":"7a77a97e_21dd9a70","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":490,"context_line":""},{"line_number":491,"context_line":"  * - Existing API"},{"line_number":492,"context_line":"    - New API"},{"line_number":493,"context_line":"  * - Show port with active binding"},{"line_number":494,"context_line":"    - n/a"},{"line_number":495,"context_line":"  * - Create port: directly with an active binding"},{"line_number":496,"context_line":"    - n/a"},{"line_number":497,"context_line":"  * - Update port: add host_id (which adds the active binding)"}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_a15d2aee","line":494,"range":{"start_line":493,"start_character":6,"end_line":494,"end_character":9},"updated":"2016-11-22 17:10:08.000000000","message":"I can\u0027t check rendering for the spec because docs job failed; but it seems like those two entries are mixed. Or what does \u0027n/a\u0027 mean?","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":490,"context_line":""},{"line_number":491,"context_line":"  * - Existing API"},{"line_number":492,"context_line":"    - New API"},{"line_number":493,"context_line":"  * - Show port with active binding"},{"line_number":494,"context_line":"    - n/a"},{"line_number":495,"context_line":"  * - Create port: directly with an active binding"},{"line_number":496,"context_line":"    - n/a"},{"line_number":497,"context_line":"  * - Update port: add host_id (which adds the active binding)"}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_38041c14","line":494,"range":{"start_line":493,"start_character":6,"end_line":494,"end_character":9},"in_reply_to":"7a77a97e_a15d2aee","updated":"2016-11-23 16:56:09.000000000","message":"meaning the new api doesn\u0027t replace or expand on the current operation.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":522,"context_line":"API Visibility"},{"line_number":523,"context_line":"~~~~~~~~~~~~~~"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"A normal user should not be able to trigger any create/update/delete"},{"line_number":526,"context_line":"actions. This should only be possible via some special service user or the"},{"line_number":527,"context_line":"admin role."},{"line_number":528,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_41f456ce","line":525,"updated":"2016-11-22 17:10:08.000000000","message":"nit: and activate I believe too","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":522,"context_line":"API Visibility"},{"line_number":523,"context_line":"~~~~~~~~~~~~~~"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"A normal user should not be able to trigger any create/update/delete"},{"line_number":526,"context_line":"actions. This should only be possible via some special service user or the"},{"line_number":527,"context_line":"admin role."},{"line_number":528,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_184da072","line":525,"in_reply_to":"7a77a97e_41f456ce","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"45eabd3698a45f6992ad231bd1dfe1bbe93b814a","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":"During migration, 2 bindings exist for the port, but only one of"},{"line_number":555,"context_line":"them is active. The following changes to Neutron are required to achieve this:"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"* Extend the PK of the existing PortBinding table to include \u0027host\u0027, allowing"},{"line_number":558,"context_line":"  for multiple port bindings to be stored."},{"line_number":559,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_5e0fe287","line":556,"updated":"2016-11-22 14:29:39.000000000","message":"Can we use \u0027Distributed Port Binding\u0027 existing data model? It has everything we need to implement the multiple port binding.\n\nIn that case, we will not be forced to add anything to ml2_portbinding table.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"99940a90d9c6eda56eddde50fbfa39841d82ad9c","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":"During migration, 2 bindings exist for the port, but only one of"},{"line_number":555,"context_line":"them is active. The following changes to Neutron are required to achieve this:"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"* Extend the PK of the existing PortBinding table to include \u0027host\u0027, allowing"},{"line_number":558,"context_line":"  for multiple port bindings to be stored."},{"line_number":559,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_25e3dc06","line":556,"in_reply_to":"7a77a97e_1682a300","updated":"2016-11-23 16:37:19.000000000","message":"So we have two options here:\n1) extend the PortBinding and later do the refactoring to use DistributedPortBinding everywhere. \nThis also includes using PortBinding OVO to migrate the data and handle the case where \u0027host\u0027 primary key is empty.\nWe should be backward compatible when mixed version of neutron-server will be running in parallel.\n\nRunning mixed version of neutron-server is a separate story, since in Newton new feature is not active, and in case of Load Balancing nova can hit two different version of neutron\u0027s API.\n\nIs it safe to add new primary key while expand phase and neutron server running?\n\n2) Use DistributedPortBinding and also refactor in other places to use the DistributedPortBinding, for create_port for example.\nWhat about scenario having Newton and Ocata neutron-server running together? We should still have support for PortBinding table for Newton release, meaning DistributedPortBinding should read from and write to PortBinding to be backward compatible.\n\nHow would fetching data from PortBinding and adding new functionality to DistributedPortBinding affect existing usage of DistributedPortBinding scenarios?","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"d7a42711075c205a0237a1c06ef3739c3e98a344","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":"During migration, 2 bindings exist for the port, but only one of"},{"line_number":555,"context_line":"them is active. The following changes to Neutron are required to achieve this:"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"* Extend the PK of the existing PortBinding table to include \u0027host\u0027, allowing"},{"line_number":558,"context_line":"  for multiple port bindings to be stored."},{"line_number":559,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_f3792794","line":556,"in_reply_to":"7a77a97e_25e3dc06","updated":"2016-11-29 09:42:44.000000000","message":"\"Is it safe to add new primary key while expand phase and neutron server running?\" -\u003e As also port_id is part of the PK, and compute bindings can only have one binding today - it sould be safe to do the extension.\n\nUsing Distributed portbinding right from the beginning is not too complex - I had this already running [1]. If that makes things easier for upgrades, I think it\u0027s worth having a look at it\n\n[1] https://review.openstack.org/340410","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":"During migration, 2 bindings exist for the port, but only one of"},{"line_number":555,"context_line":"them is active. The following changes to Neutron are required to achieve this:"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"* Extend the PK of the existing PortBinding table to include \u0027host\u0027, allowing"},{"line_number":558,"context_line":"  for multiple port bindings to be stored."},{"line_number":559,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_c1a306b0","line":556,"in_reply_to":"7a77a97e_5e0fe287","updated":"2016-11-22 17:10:08.000000000","message":"That\u0027s a reasonable question I believe.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"4746cb7fabd92ee981fbe01938b0ca7fde58a055","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":"During migration, 2 bindings exist for the port, but only one of"},{"line_number":555,"context_line":"them is active. The following changes to Neutron are required to achieve this:"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"* Extend the PK of the existing PortBinding table to include \u0027host\u0027, allowing"},{"line_number":558,"context_line":"  for multiple port bindings to be stored."},{"line_number":559,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_1682a300","line":556,"in_reply_to":"7a77a97e_c1a306b0","updated":"2016-11-22 17:49:07.000000000","message":"The main hesitation here was the work to merge the two tables is enough to warrant it\u0027s own initiative.  We thought it might be best to increment the PortBinding table to mirror DistributedPortBinding, get the feature in and tests written.  Then, the merge is just a refactor.","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ea1e3fca930d79b48d3873cb82171d48927b1439","unresolved":false,"context_lines":[{"line_number":614,"context_line":"Update Port Binding Status"},{"line_number":615,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"Currently, Neutron has no capability to support multiple bindings on one port,"},{"line_number":618,"context_line":"and the addition of this capability will require new methods to updated"},{"line_number":619,"context_line":"existing binding status::"},{"line_number":620,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"7a77a97e_c1df860a","line":617,"range":{"start_line":617,"start_character":23,"end_line":617,"end_character":77},"updated":"2016-11-22 17:10:08.000000000","message":"not if you ignore DVR/HA","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"8b86b5e9c286af1a3d5ba3139764344e337329b6","unresolved":false,"context_lines":[{"line_number":614,"context_line":"Update Port Binding Status"},{"line_number":615,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"Currently, Neutron has no capability to support multiple bindings on one port,"},{"line_number":618,"context_line":"and the addition of this capability will require new methods to updated"},{"line_number":619,"context_line":"existing binding status::"},{"line_number":620,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"5a74a57a_38797c94","line":617,"range":{"start_line":617,"start_character":23,"end_line":617,"end_character":77},"in_reply_to":"7a77a97e_c1df860a","updated":"2016-11-23 16:56:09.000000000","message":"Done","commit_id":"7427e7f61f6b99bc6c3b138ae09dc74fdcc7d3ac"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"90820d5ce18c21d4146190022ba1b10ecdc2538d","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"* live_migration_operation - migration itself which consists of 2 substages:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  * before the VM is running on the destination compute."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  * after VM is running on the destination compute, but migration is still in"},{"line_number":23,"context_line":"    progress (post copy migration)."}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_107cecea","line":20,"range":{"start_line":20,"start_character":36,"end_line":20,"end_character":47},"updated":"2016-11-28 22:51:10.000000000","message":"nit: migration target and destination compute are the same? is it valuable to mention it?","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"a073496b92135adbcf6c8a97146d4aa126003e50","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"* live_migration_operation - migration itself which consists of 2 substages:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  * before the VM is running on the destination compute."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  * after VM is running on the destination compute, but migration is still in"},{"line_number":23,"context_line":"    progress (post copy migration)."}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_e475f1ca","line":20,"range":{"start_line":20,"start_character":36,"end_line":20,"end_character":47},"in_reply_to":"5a74a57a_107cecea","updated":"2016-11-28 23:02:00.000000000","message":"might be yes","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"d9365e01506913bf6865d5d1561a07ea01f19c05","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"* live_migration_operation - migration itself which consists of 2 substages:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  * before the VM is running on the destination compute."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  * after VM is running on the destination compute, but migration is still in"},{"line_number":23,"context_line":"    progress (post copy migration)."}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_f2b9f8cc","line":20,"range":{"start_line":20,"start_character":36,"end_line":20,"end_character":47},"in_reply_to":"5a74a57a_46fdbc6c","updated":"2016-11-30 00:55:19.000000000","message":"Done","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"aa8cde50d7b967a44b89b6bff84e2133c3d5dd96","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"* live_migration_operation - migration itself which consists of 2 substages:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  * before the VM is running on the destination compute."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  * after VM is running on the destination compute, but migration is still in"},{"line_number":23,"context_line":"    progress (post copy migration)."}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_46fdbc6c","line":20,"range":{"start_line":20,"start_character":36,"end_line":20,"end_character":47},"in_reply_to":"5a74a57a_e475f1ca","updated":"2016-11-29 09:34:50.000000000","message":"I think they are the same - staying consistent might help.","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"aa8cde50d7b967a44b89b6bff84e2133c3d5dd96","unresolved":false,"context_lines":[{"line_number":161,"context_line":"* Rollback performed before the instance is active on target: Remove"},{"line_number":162,"context_line":"  inactive binding."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"* Rollback performed after the instance is active on target: From a Neutron"},{"line_number":165,"context_line":"  standpoint, if the binding is active on the target host, Nova will need to"},{"line_number":166,"context_line":"  set the source binding back to active::"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_e64888b5","line":164,"updated":"2016-11-29 09:34:50.000000000","message":"I\u0027m still not sure if nova should do that. AFAIK nova will not migrate back the instance, once it is active on the target...","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"d9365e01506913bf6865d5d1561a07ea01f19c05","unresolved":false,"context_lines":[{"line_number":161,"context_line":"* Rollback performed before the instance is active on target: Remove"},{"line_number":162,"context_line":"  inactive binding."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"* Rollback performed after the instance is active on target: From a Neutron"},{"line_number":165,"context_line":"  standpoint, if the binding is active on the target host, Nova will need to"},{"line_number":166,"context_line":"  set the source binding back to active::"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_12fd946e","line":164,"in_reply_to":"5a74a57a_e64888b5","updated":"2016-11-30 00:55:19.000000000","message":"Done","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"95d6b7df7e515714078a91f78dafafa823506202","unresolved":false,"context_lines":[{"line_number":183,"context_line":"::"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    {"},{"line_number":186,"context_line":"        bindings: ["},{"line_number":187,"context_line":"            {"},{"line_number":188,"context_line":"                \"host_id\": \"source-host_id\","},{"line_number":189,"context_line":"                \"vif_type\": \"ovs\","}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_d5767dd7","line":186,"updated":"2016-11-30 16:52:11.000000000","message":"\"bindings\"","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"aa8cde50d7b967a44b89b6bff84e2133c3d5dd96","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                    },"},{"line_number":204,"context_line":"                \"profile\": {},"},{"line_number":205,"context_line":"                \"vnic_type\": \"normal\","},{"line_number":206,"context_line":"                \"status\": \"down\""},{"line_number":207,"context_line":"            },"},{"line_number":208,"context_line":"        ]"},{"line_number":209,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_b08a4562","line":206,"range":{"start_line":206,"start_character":27,"end_line":206,"end_character":31},"updated":"2016-11-29 09:34:50.000000000","message":"Further down you mention that you need a new constant INACTIVE in neutron-lib. Seems like a contradiction to have down here.","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"aa8cde50d7b967a44b89b6bff84e2133c3d5dd96","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":"More parameters see :ref:`show_binding`"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"Import key features of update/create binding:"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"* Compute bindings will currently be listed and a request for unsupported"},{"line_number":228,"context_line":"  bindings will return \u0027NotImplemented\u0027 until the capability is introduced."}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_5a42f0ae","line":225,"range":{"start_line":225,"start_character":23,"end_line":225,"end_character":36},"updated":"2016-11-29 09:34:50.000000000","message":"list bindings?","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"aa8cde50d7b967a44b89b6bff84e2133c3d5dd96","unresolved":false,"context_lines":[{"line_number":273,"context_line":"    * - status"},{"line_number":274,"context_line":"      - plain"},{"line_number":275,"context_line":"      - xsd:String"},{"line_number":276,"context_line":"      - Status of the binding"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"::"},{"line_number":279,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_064d8499","line":276,"updated":"2016-11-29 09:34:50.000000000","message":"maybe add a rerference to the chapter further down describing the states","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"d9365e01506913bf6865d5d1561a07ea01f19c05","unresolved":false,"context_lines":[{"line_number":273,"context_line":"    * - status"},{"line_number":274,"context_line":"      - plain"},{"line_number":275,"context_line":"      - xsd:String"},{"line_number":276,"context_line":"      - Status of the binding"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"::"},{"line_number":279,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_52254c08","line":276,"in_reply_to":"5a74a57a_064d8499","updated":"2016-11-30 00:55:19.000000000","message":"Done","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"95d6b7df7e515714078a91f78dafafa823506202","unresolved":false,"context_lines":[{"line_number":278,"context_line":"::"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    {"},{"line_number":281,"context_line":"        binding: {"},{"line_number":282,"context_line":"             \"host_id\": \"target-host_id\","},{"line_number":283,"context_line":"             \"vif_type\": \"target-vif-type\","},{"line_number":284,"context_line":"             \"vif_details\": {"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_956c050a","line":281,"updated":"2016-11-30 16:52:11.000000000","message":"\"binding\"","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"aa8cde50d7b967a44b89b6bff84e2133c3d5dd96","unresolved":false,"context_lines":[{"line_number":297,"context_line":"  * probably some additional fields are of interest (router_id, something"},{"line_number":298,"context_line":"    else?)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"  * Today a dvr port is shown with vif_type \u003d \u0027distributed\u0027, although it has"},{"line_number":301,"context_line":"    a real vif_type like \u0027ovs\u0027. How to deal with that in this API?"},{"line_number":302,"context_line":"    Should there be an extra flag showing, whether a port is distributed or"},{"line_number":303,"context_line":"    not?"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_5a9910c3","line":300,"updated":"2016-11-29 09:34:50.000000000","message":"Good question. As you mentioned, in the db it has a real vif_type. In the code differentiation between a distributed and a normal binding is done via the device_owner attribute of the port. I\u0027m not sure if the \"distributed\" has a meaning. My gut feeling says, show the real vif_type. Maybe Anil has some insights there - he was working a lot with this stuff in the router ha context.\n\nIt\u0027s a similar issue with the host_id - for a dvr port it is just blank. But I guess here it makes even more sense to show the real host...","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"d9365e01506913bf6865d5d1561a07ea01f19c05","unresolved":false,"context_lines":[{"line_number":297,"context_line":"  * probably some additional fields are of interest (router_id, something"},{"line_number":298,"context_line":"    else?)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"  * Today a dvr port is shown with vif_type \u003d \u0027distributed\u0027, although it has"},{"line_number":301,"context_line":"    a real vif_type like \u0027ovs\u0027. How to deal with that in this API?"},{"line_number":302,"context_line":"    Should there be an extra flag showing, whether a port is distributed or"},{"line_number":303,"context_line":"    not?"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_92e444ad","line":300,"in_reply_to":"5a74a57a_5a9910c3","updated":"2016-11-30 00:55:19.000000000","message":"Done","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"95d6b7df7e515714078a91f78dafafa823506202","unresolved":false,"context_lines":[{"line_number":336,"context_line":"::"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    {"},{"line_number":339,"context_line":"        binding: {"},{"line_number":340,"context_line":"            \"host_id\": \"target-host_id\""},{"line_number":341,"context_line":"        }"},{"line_number":342,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_d5af5d29","line":339,"updated":"2016-11-30 16:52:11.000000000","message":"\"binding\"","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"95d6b7df7e515714078a91f78dafafa823506202","unresolved":false,"context_lines":[{"line_number":348,"context_line":"::"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"    {"},{"line_number":351,"context_line":"        binding: {"},{"line_number":352,"context_line":"            \"host_id\": \"target-host_id\","},{"line_number":353,"context_line":"            \"vif_type\": \"ovs\","},{"line_number":354,"context_line":"            \"vif_details\": {"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_35a7b150","line":351,"updated":"2016-11-30 16:52:11.000000000","message":"same","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"aa8cde50d7b967a44b89b6bff84e2133c3d5dd96","unresolved":false,"context_lines":[{"line_number":374,"context_line":""},{"line_number":375,"context_line":"* If a binding being added already exists, a 4xx will be returned."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"* A compute port can only have 1 active binding at a time. This is not an"},{"line_number":378,"context_line":"  enforcement by Neutron, but a result of the operation surrounding PortBinding."},{"line_number":379,"context_line":"  This feature expands the capability of having multiple inactive bindings, but"},{"line_number":380,"context_line":"  maintains the operation, as it stands today, of compute having only 1 active"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_ba99447b","line":377,"updated":"2016-11-29 09:34:50.000000000","message":"I\u0027m not sure if I get this. Are you saying that Neutron would allow 2 active bindings, if the operator requests them?","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"d9365e01506913bf6865d5d1561a07ea01f19c05","unresolved":false,"context_lines":[{"line_number":374,"context_line":""},{"line_number":375,"context_line":"* If a binding being added already exists, a 4xx will be returned."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"* A compute port can only have 1 active binding at a time. This is not an"},{"line_number":378,"context_line":"  enforcement by Neutron, but a result of the operation surrounding PortBinding."},{"line_number":379,"context_line":"  This feature expands the capability of having multiple inactive bindings, but"},{"line_number":380,"context_line":"  maintains the operation, as it stands today, of compute having only 1 active"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_d2931cff","line":377,"in_reply_to":"5a74a57a_ba99447b","updated":"2016-11-30 00:55:19.000000000","message":"Done","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"aa8cde50d7b967a44b89b6bff84e2133c3d5dd96","unresolved":false,"context_lines":[{"line_number":385,"context_line":"* The existing API is not touched, which will return host_id:{host_id} as the"},{"line_number":386,"context_line":"  current active binding."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* Activating an existing binding will deactivate any currently active bindings,"},{"line_number":389,"context_line":"  where there is more than 1 binding."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"Update Binding"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_1afdd86d","line":388,"updated":"2016-11-29 09:34:50.000000000","message":"for compute ports only I guess, right?","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"d9365e01506913bf6865d5d1561a07ea01f19c05","unresolved":false,"context_lines":[{"line_number":385,"context_line":"* The existing API is not touched, which will return host_id:{host_id} as the"},{"line_number":386,"context_line":"  current active binding."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* Activating an existing binding will deactivate any currently active bindings,"},{"line_number":389,"context_line":"  where there is more than 1 binding."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"Update Binding"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_7285e8ab","line":388,"in_reply_to":"5a74a57a_1afdd86d","updated":"2016-11-30 00:55:19.000000000","message":"Done","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"95d6b7df7e515714078a91f78dafafa823506202","unresolved":false,"context_lines":[{"line_number":409,"context_line":"::"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    {"},{"line_number":412,"context_line":"        binding: {"},{"line_number":413,"context_line":"            \"vnic_type\": \u0027NORMAL\u0027,"},{"line_number":414,"context_line":"            \"profile\": {}"},{"line_number":415,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_b5482189","line":412,"updated":"2016-11-30 16:52:11.000000000","message":"same","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"95d6b7df7e515714078a91f78dafafa823506202","unresolved":false,"context_lines":[{"line_number":422,"context_line":"::"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    {"},{"line_number":425,"context_line":"        binding: {"},{"line_number":426,"context_line":"            \"host_id\": \"target-host_id\","},{"line_number":427,"context_line":"            \"vif_type\": \"ovs\","},{"line_number":428,"context_line":"            \"vif_details\": {"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_f55a994f","line":425,"updated":"2016-11-30 16:52:11.000000000","message":"same","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"95d6b7df7e515714078a91f78dafafa823506202","unresolved":false,"context_lines":[{"line_number":449,"context_line":"::"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    {"},{"line_number":452,"context_line":"        binding: {"},{"line_number":453,"context_line":"            \"host_id\": \"target-host_id\","},{"line_number":454,"context_line":"            \"vif_type\": \"ovs\","},{"line_number":455,"context_line":"            \"vif_details\": {"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_1558f555","line":452,"updated":"2016-11-30 16:52:11.000000000","message":"same","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"aa8cde50d7b967a44b89b6bff84e2133c3d5dd96","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            \"status\": \"active\""},{"line_number":462,"context_line":"        }"},{"line_number":463,"context_line":"    }"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"Activating a binding that is inactive will deactivate any existing active"},{"line_number":466,"context_line":"bindings, as a compute port can only have 1 binding active at a time."},{"line_number":467,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_3ae9b4b7","line":464,"updated":"2016-11-29 09:34:50.000000000","message":"we should restrict that to compute ports as well at the beginning.","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"d9365e01506913bf6865d5d1561a07ea01f19c05","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            \"status\": \"active\""},{"line_number":462,"context_line":"        }"},{"line_number":463,"context_line":"    }"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"Activating a binding that is inactive will deactivate any existing active"},{"line_number":466,"context_line":"bindings, as a compute port can only have 1 binding active at a time."},{"line_number":467,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_dd240db4","line":464,"in_reply_to":"5a74a57a_3ae9b4b7","updated":"2016-11-30 00:55:19.000000000","message":"Done","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"aa8cde50d7b967a44b89b6bff84e2133c3d5dd96","unresolved":false,"context_lines":[{"line_number":517,"context_line":"* Show Port will still just show the binding like today. For compute"},{"line_number":518,"context_line":"  ports, it would only show the active binding."},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"* Update Port with host_id will still re-trigger port binding for another host."},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"* vif_type is set to \"binding_failed\" and http code 2xx is still used"},{"line_number":523,"context_line":"  on failed port binding when binding is triggered via the existing"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_3d852ece","line":520,"updated":"2016-11-29 09:34:50.000000000","message":"Interesting corner case: Somebody created an inactive binding for that host1 before. And then he tries to update the existing active binding via the existing api (which triggers the binding to host1)\n\nI think that should be possible to not change the behavior of the existing API. But should the original binding the be kept as inactive? Or should we rather fail.","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"d9365e01506913bf6865d5d1561a07ea01f19c05","unresolved":false,"context_lines":[{"line_number":517,"context_line":"* Show Port will still just show the binding like today. For compute"},{"line_number":518,"context_line":"  ports, it would only show the active binding."},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"* Update Port with host_id will still re-trigger port binding for another host."},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"* vif_type is set to \"binding_failed\" and http code 2xx is still used"},{"line_number":523,"context_line":"  on failed port binding when binding is triggered via the existing"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_3df7c1f6","line":520,"in_reply_to":"5a74a57a_3d852ece","updated":"2016-11-30 00:55:19.000000000","message":"Done","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"4df4bf8976bd040520e4af191ba9bb8c8d5288c5","unresolved":false,"context_lines":[{"line_number":558,"context_line":"During migration, 2 bindings exist for the port, but only one of"},{"line_number":559,"context_line":"them is active. The following changes to Neutron are required to achieve this:"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"* Extend the PK of the existing PortBinding table to include \u0027host\u0027, allowing"},{"line_number":562,"context_line":"  for multiple port bindings to be stored."},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"* A new column \u0027status\u0027 is also required to store if a port is \u0027active\u0027 or"},{"line_number":565,"context_line":"  \u0027inactive\u0027."}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_79da4d18","line":562,"range":{"start_line":561,"start_character":2,"end_line":562,"end_character":42},"updated":"2016-11-29 13:18:48.000000000","message":"We need to check, if adding host to primary key is safe operation in \u0027expand\u0027 phase, while having Newton neutron server running. If by any chance it would break the Newton server, then we are not allowed to do it in expand phase.","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"d9365e01506913bf6865d5d1561a07ea01f19c05","unresolved":false,"context_lines":[{"line_number":558,"context_line":"During migration, 2 bindings exist for the port, but only one of"},{"line_number":559,"context_line":"them is active. The following changes to Neutron are required to achieve this:"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"* Extend the PK of the existing PortBinding table to include \u0027host\u0027, allowing"},{"line_number":562,"context_line":"  for multiple port bindings to be stored."},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"* A new column \u0027status\u0027 is also required to store if a port is \u0027active\u0027 or"},{"line_number":565,"context_line":"  \u0027inactive\u0027."}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_7dd93983","line":562,"range":{"start_line":561,"start_character":2,"end_line":562,"end_character":42},"in_reply_to":"5a74a57a_240b3c2d","updated":"2016-11-30 00:55:19.000000000","message":"Done","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"6285d46e82741ca3fa544af5ff592c691ecb97a9","unresolved":false,"context_lines":[{"line_number":558,"context_line":"During migration, 2 bindings exist for the port, but only one of"},{"line_number":559,"context_line":"them is active. The following changes to Neutron are required to achieve this:"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"* Extend the PK of the existing PortBinding table to include \u0027host\u0027, allowing"},{"line_number":562,"context_line":"  for multiple port bindings to be stored."},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"* A new column \u0027status\u0027 is also required to store if a port is \u0027active\u0027 or"},{"line_number":565,"context_line":"  \u0027inactive\u0027."}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_240b3c2d","line":562,"range":{"start_line":561,"start_character":2,"end_line":562,"end_character":42},"in_reply_to":"5a74a57a_79da4d18","updated":"2016-11-29 17:27:11.000000000","message":"If we extend the PrimaryKey it adds a NOT NULL constraint on the host that leads to test failures. [1]\n\nInstead of extending the Primary Key to include we can have a unique constraint on the port_id and host. That will allow null values. Will that server our purpose?\n\n\n[1] http://logs.openstack.org/93/404293/1/check/gate-neutron-python27-ubuntu-xenial/3d7d74b/testr_results.html.gz","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"0187a0a6ae5e2c48fa5552b9fc4d4c9a8909627a","unresolved":false,"context_lines":[{"line_number":558,"context_line":"During migration, 2 bindings exist for the port, but only one of"},{"line_number":559,"context_line":"them is active. The following changes to Neutron are required to achieve this:"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"* Extend the PK of the existing PortBinding table to include \u0027host\u0027, allowing"},{"line_number":562,"context_line":"  for multiple port bindings to be stored."},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"* A new column \u0027status\u0027 is also required to store if a port is \u0027active\u0027 or"},{"line_number":565,"context_line":"  \u0027inactive\u0027."}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_79aa2387","line":562,"range":{"start_line":561,"start_character":2,"end_line":562,"end_character":42},"in_reply_to":"5a74a57a_7dd93983","updated":"2016-11-30 07:54:00.000000000","message":"hhmm..I wonder how it\u0027s done with DVR - probably they set host to \u0027\u0027 instead of NULL. Cause when trying to merge those tables in the past I didn\u0027t encounter any issues...","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"aa8cde50d7b967a44b89b6bff84e2133c3d5dd96","unresolved":false,"context_lines":[{"line_number":597,"context_line":"Since the PK is expanded to \u0027host\u0027, get_port_binding_host() will need an"},{"line_number":598,"context_line":"additional parameter passed to include \u0027host\u0027::"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"    def get_port_binding_host(session, port_id, host):"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"And the query adjusted to accommodate the host param::"},{"line_number":603,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_b04325ae","line":600,"updated":"2016-11-29 09:34:50.000000000","message":"this method returns the portbindings host for a given port. It\u0027s not returning a binding object. Due to that passing in host does not make sense (this method finds out the host). I guess it should return the active binding host only.","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"d9365e01506913bf6865d5d1561a07ea01f19c05","unresolved":false,"context_lines":[{"line_number":597,"context_line":"Since the PK is expanded to \u0027host\u0027, get_port_binding_host() will need an"},{"line_number":598,"context_line":"additional parameter passed to include \u0027host\u0027::"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"    def get_port_binding_host(session, port_id, host):"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"And the query adjusted to accommodate the host param::"},{"line_number":603,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"5a74a57a_bde3d132","line":600,"in_reply_to":"5a74a57a_b04325ae","updated":"2016-11-30 00:55:19.000000000","message":"Done","commit_id":"282a2a29a2507310055779f97c51cc249a4d3938"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":26,"context_line":"  anymore. Used for finalizing the migration."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Today, port binding occurs on the target compute host during migration,"},{"line_number":29,"context_line":"considered now in the post_live__migration stage.  This, unfortunately, is"},{"line_number":30,"context_line":"too late in the process as there are cases where Nova requires this"},{"line_number":31,"context_line":"information in the pre_live_migration stage.  We simply cannot move the port"},{"line_number":32,"context_line":"binding to the pre_live_migration stage as the original port binding would be"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_27f14bce","line":29,"range":{"start_line":29,"start_character":31,"end_line":29,"end_character":33},"updated":"2016-12-08 13:40:40.000000000","message":"So why do we have two _s here?","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":26,"context_line":"  anymore. Used for finalizing the migration."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Today, port binding occurs on the target compute host during migration,"},{"line_number":29,"context_line":"considered now in the post_live__migration stage.  This, unfortunately, is"},{"line_number":30,"context_line":"too late in the process as there are cases where Nova requires this"},{"line_number":31,"context_line":"information in the pre_live_migration stage.  We simply cannot move the port"},{"line_number":32,"context_line":"binding to the pre_live_migration stage as the original port binding would be"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_ce65621e","line":29,"range":{"start_line":29,"start_character":31,"end_line":29,"end_character":33},"in_reply_to":"3a71b18c_27f14bce","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"For more details on the Nova implementation , see the related Nova"},{"line_number":171,"context_line":"Blueprint `[3]`_ and its Spec `[4]`_.  Neutron will not dictate the implemented"},{"line_number":172,"context_line":"capabilities of Nova liv migration and will support either path, to rollback"},{"line_number":173,"context_line":"or to not rollback."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Binding API Extension for Ports"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_c7b417d3","line":172,"range":{"start_line":172,"start_character":21,"end_line":172,"end_character":24},"updated":"2016-12-08 13:40:40.000000000","message":"live","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"For more details on the Nova implementation , see the related Nova"},{"line_number":171,"context_line":"Blueprint `[3]`_ and its Spec `[4]`_.  Neutron will not dictate the implemented"},{"line_number":172,"context_line":"capabilities of Nova liv migration and will support either path, to rollback"},{"line_number":173,"context_line":"or to not rollback."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Binding API Extension for Ports"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_4e7a32be","line":172,"range":{"start_line":172,"start_character":21,"end_line":172,"end_character":24},"in_reply_to":"3a71b18c_c7b417d3","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":180,"context_line":"List Bindings"},{"line_number":181,"context_line":"~~~~~~~~~~~~~"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"GET /v2.0/ports/​{port_id}​/bindings"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"::"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_c71097ab","line":183,"range":{"start_line":183,"start_character":16,"end_line":183,"end_character":17},"updated":"2016-12-08 13:40:40.000000000","message":"Those spurious chars should be removed.","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":180,"context_line":"List Bindings"},{"line_number":181,"context_line":"~~~~~~~~~~~~~"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"GET /v2.0/ports/​{port_id}​/bindings"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"::"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_4e615204","line":183,"range":{"start_line":183,"start_character":16,"end_line":183,"end_character":17},"in_reply_to":"3a71b18c_c71097ab","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"More parameters see :ref:`show_binding`"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"Import key features of list bindings:"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"* Compute bindings will currently be listed and a request for unsupported"},{"line_number":230,"context_line":"  bindings will return \u0027NotImplemented\u0027 until the capability is introduced."}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_a782bbc6","line":227,"range":{"start_line":227,"start_character":0,"end_line":227,"end_character":6},"updated":"2016-12-08 13:40:40.000000000","message":"Important?","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"More parameters see :ref:`show_binding`"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"Import key features of list bindings:"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"* Compute bindings will currently be listed and a request for unsupported"},{"line_number":230,"context_line":"  bindings will return \u0027NotImplemented\u0027 until the capability is introduced."}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_ae52e632","line":227,"range":{"start_line":227,"start_character":0,"end_line":227,"end_character":6},"in_reply_to":"3a71b18c_a782bbc6","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":253,"context_line":"    * - host_id"},{"line_number":254,"context_line":"      - plain"},{"line_number":255,"context_line":"      - xsd:string"},{"line_number":256,"context_line":"      - The hostname of the host where the port is allocated."},{"line_number":257,"context_line":"    * - vif_type"},{"line_number":258,"context_line":"      - plain"},{"line_number":259,"context_line":"      - xsd:string"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_479007ed","line":256,"range":{"start_line":256,"start_character":8,"end_line":256,"end_character":32},"updated":"2016-12-08 13:40:40.000000000","message":"nit: hostname of the host -\u003e hostname","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":253,"context_line":"    * - host_id"},{"line_number":254,"context_line":"      - plain"},{"line_number":255,"context_line":"      - xsd:string"},{"line_number":256,"context_line":"      - The hostname of the host where the port is allocated."},{"line_number":257,"context_line":"    * - vif_type"},{"line_number":258,"context_line":"      - plain"},{"line_number":259,"context_line":"      - xsd:string"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_ae29069d","line":256,"range":{"start_line":256,"start_character":8,"end_line":256,"end_character":32},"in_reply_to":"3a71b18c_479007ed","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":292,"context_line":"         }"},{"line_number":293,"context_line":"    }"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"Import key features of show binding:"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"* DVR ports exposed in this resource will show the real vif_type of"},{"line_number":298,"context_line":"  \u0027distributed\u0027 ports as they are stored in DistributedPortBindings, i.e. ovs."}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_47e2c7a0","line":295,"range":{"start_line":295,"start_character":0,"end_line":295,"end_character":6},"updated":"2016-12-08 13:40:40.000000000","message":"Important?","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":292,"context_line":"         }"},{"line_number":293,"context_line":"    }"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"Import key features of show binding:"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"* DVR ports exposed in this resource will show the real vif_type of"},{"line_number":298,"context_line":"  \u0027distributed\u0027 ports as they are stored in DistributedPortBindings, i.e. ovs."}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_0e111a5d","line":295,"range":{"start_line":295,"start_character":0,"end_line":295,"end_character":6},"in_reply_to":"3a71b18c_47e2c7a0","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":302,"context_line":"Create Binding"},{"line_number":303,"context_line":"~~~~~~~~~~~~~~"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"POST /v2.0/ports/​{port_id}​/bindings"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"..  list-table:: Request Parameters"},{"line_number":308,"context_line":"    :header-rows: 1"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_47f9e74c","line":305,"range":{"start_line":305,"start_character":17,"end_line":305,"end_character":18},"updated":"2016-12-08 13:40:40.000000000","message":"remove","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":302,"context_line":"Create Binding"},{"line_number":303,"context_line":"~~~~~~~~~~~~~~"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"POST /v2.0/ports/​{port_id}​/bindings"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"..  list-table:: Request Parameters"},{"line_number":308,"context_line":"    :header-rows: 1"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_6e0a8e27","line":305,"range":{"start_line":305,"start_character":17,"end_line":305,"end_character":18},"in_reply_to":"3a71b18c_47f9e74c","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":318,"context_line":"    * - host_id (mandatory)"},{"line_number":319,"context_line":"      - plain"},{"line_number":320,"context_line":"      - xsd:string"},{"line_number":321,"context_line":"      - The hostname of the host where the port is allocated."},{"line_number":322,"context_line":"    * - vnic_type (optional, default \u003d \u0027normal\u0027)"},{"line_number":323,"context_line":"      - plain"},{"line_number":324,"context_line":"      - xsd:string"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_67bb4376","line":321,"range":{"start_line":321,"start_character":8,"end_line":321,"end_character":32},"updated":"2016-12-08 13:40:40.000000000","message":"same nit","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":318,"context_line":"    * - host_id (mandatory)"},{"line_number":319,"context_line":"      - plain"},{"line_number":320,"context_line":"      - xsd:string"},{"line_number":321,"context_line":"      - The hostname of the host where the port is allocated."},{"line_number":322,"context_line":"    * - vnic_type (optional, default \u003d \u0027normal\u0027)"},{"line_number":323,"context_line":"      - plain"},{"line_number":324,"context_line":"      - xsd:string"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_8e052a15","line":321,"range":{"start_line":321,"start_character":8,"end_line":321,"end_character":32},"in_reply_to":"3a71b18c_67bb4376","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":385,"context_line":"Update Binding"},{"line_number":386,"context_line":"~~~~~~~~~~~~~~"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"PUT /v2.0/ports/​{port_id}​/bindings/{host_id}"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"..  list-table:: Request Parameters"},{"line_number":391,"context_line":"    :header-rows: 1"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_874e9f94","line":388,"range":{"start_line":388,"start_character":16,"end_line":388,"end_character":17},"updated":"2016-12-08 13:40:40.000000000","message":"remove","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":385,"context_line":"Update Binding"},{"line_number":386,"context_line":"~~~~~~~~~~~~~~"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"PUT /v2.0/ports/​{port_id}​/bindings/{host_id}"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"..  list-table:: Request Parameters"},{"line_number":391,"context_line":"    :header-rows: 1"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_71118f51","line":388,"range":{"start_line":388,"start_character":16,"end_line":388,"end_character":17},"in_reply_to":"3a71b18c_874e9f94","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":436,"context_line":"Activating an Inactive Binding"},{"line_number":437,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"PUT /v2.0/ports/​{port_id}​/bindings/{host_id}/activate"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"Response parameters"},{"line_number":442,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_4a480e5c","line":439,"range":{"start_line":439,"start_character":16,"end_line":439,"end_character":17},"updated":"2016-12-08 13:40:40.000000000","message":"remove","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":436,"context_line":"Activating an Inactive Binding"},{"line_number":437,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"PUT /v2.0/ports/​{port_id}​/bindings/{host_id}/activate"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"Response parameters"},{"line_number":442,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_b117a743","line":439,"range":{"start_line":439,"start_character":16,"end_line":439,"end_character":17},"in_reply_to":"3a71b18c_4a480e5c","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":543,"context_line":"sub resource extension will be `portbindings_extended.py` and have a parent"},{"line_number":544,"context_line":"resource of `ports`."},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"The following methods will be added to the plugin v2 base class:"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"* `get_port_bindings()`"},{"line_number":549,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_4abbae0e","line":546,"updated":"2016-12-08 13:40:40.000000000","message":"why isn\u0027t it another default-loaded service plugin like tag one?","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":543,"context_line":"sub resource extension will be `portbindings_extended.py` and have a parent"},{"line_number":544,"context_line":"resource of `ports`."},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"The following methods will be added to the plugin v2 base class:"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"* `get_port_bindings()`"},{"line_number":549,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_b1eb27db","line":546,"in_reply_to":"3a71b18c_4abbae0e","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":"* `update_port_binding()`"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"* `delete_port_binding()`"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"ML2 Changes"},{"line_number":559,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_4a52cede","line":556,"updated":"2016-12-08 13:40:40.000000000","message":"don\u0027t we need activate too?","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":"* `update_port_binding()`"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"* `delete_port_binding()`"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"ML2 Changes"},{"line_number":559,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_f1bf5fcd","line":556,"in_reply_to":"3a71b18c_4a52cede","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":607,"context_line":"------------------"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"Will provide update.  Extension of PK to PortBinding is not an option and most"},{"line_number":610,"context_line":"likely we will move operations to DistributedPortBinding while still writting"},{"line_number":611,"context_line":"to PortBinding for the purpose of OVO."},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"Changes to Mechanism Drivers"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_ca109eab","line":610,"range":{"start_line":610,"start_character":69,"end_line":610,"end_character":77},"updated":"2016-12-08 13:40:40.000000000","message":"writing","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":607,"context_line":"------------------"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"Will provide update.  Extension of PK to PortBinding is not an option and most"},{"line_number":610,"context_line":"likely we will move operations to DistributedPortBinding while still writting"},{"line_number":611,"context_line":"to PortBinding for the purpose of OVO."},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"Changes to Mechanism Drivers"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_f1a67fbf","line":610,"range":{"start_line":610,"start_character":69,"end_line":610,"end_character":77},"in_reply_to":"3a71b18c_ca109eab","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5f6c01480ea18bdc94b85190bed0b0c6dbcd5afb","unresolved":false,"context_lines":[{"line_number":630,"context_line":"Plug Inactive VIF"},{"line_number":631,"context_line":"~~~~~~~~~~~~~~~~~"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"During the live_migration_operation, the agent will detect the vif plug and"},{"line_number":634,"context_line":"attempt to retrieve information about the binding.  Once received, the agent"},{"line_number":635,"context_line":"will detect the status as \u0027inactive\u0027 and not connect the vif. The agent will"},{"line_number":636,"context_line":"only act on an RPC activate message from Neutron API to connect the vif."}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_e0bf675e","line":633,"range":{"start_line":633,"start_character":63,"end_line":633,"end_character":71},"updated":"2016-12-07 16:43:35.000000000","message":"I guess we need to be carefull with this term. vif plug is a nova operation. For \n- linuxbridge it does nothing that gets detected by the agent\n- ovs normal it does nothing that gets detected by the agent\n- ovs hybrid it creates a veth pair (interconnect br-int - linuxbridge) that gets detected by the agent\n\nin the ovs normal and lb case, the agent gets triggered when libvirt creates the tap device -\u003e but that\u0027s not the nova plug_vif operation...\n\nSo not sure what exactly you mean - also in the paragraph below. Maybe adding some context helps...","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":630,"context_line":"Plug Inactive VIF"},{"line_number":631,"context_line":"~~~~~~~~~~~~~~~~~"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"During the live_migration_operation, the agent will detect the vif plug and"},{"line_number":634,"context_line":"attempt to retrieve information about the binding.  Once received, the agent"},{"line_number":635,"context_line":"will detect the status as \u0027inactive\u0027 and not connect the vif. The agent will"},{"line_number":636,"context_line":"only act on an RPC activate message from Neutron API to connect the vif."}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_ec1a267c","line":633,"range":{"start_line":633,"start_character":63,"end_line":633,"end_character":71},"in_reply_to":"3a71b18c_e0bf675e","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"5f6c01480ea18bdc94b85190bed0b0c6dbcd5afb","unresolved":false,"context_lines":[{"line_number":633,"context_line":"During the live_migration_operation, the agent will detect the vif plug and"},{"line_number":634,"context_line":"attempt to retrieve information about the binding.  Once received, the agent"},{"line_number":635,"context_line":"will detect the status as \u0027inactive\u0027 and not connect the vif. The agent will"},{"line_number":636,"context_line":"only act on an RPC activate message from Neutron API to connect the vif."},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"RPC Activate/Deactivate"},{"line_number":639,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_20cebfb4","line":636,"updated":"2016-12-07 16:43:35.000000000","message":"hhhmm so today the agent attempts to retrieve the information about the port (and not the binding specifically). So if no changes to the agents are planned, he will always see the active binding.\n\nNow if the inactive binding gets activated, this should result in a port_update rpc message (as the active binding got updated). The agent sees this message and starts plumbing the interface (e.g. configure security groups) accordingly. After that it could send out a garp messsage.\n\nAs soon as the networking (tap) device disappears on the migration source, the port should get deconfigured automatically. The only case where this might be different is the post-copy migration... but then the agent should also get the update_port message and maybe some extra code is needed to do the deconfiguration there\n\nMaybe I\u0027m missing some important details here, but from my point of view now additional messages are required...","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":633,"context_line":"During the live_migration_operation, the agent will detect the vif plug and"},{"line_number":634,"context_line":"attempt to retrieve information about the binding.  Once received, the agent"},{"line_number":635,"context_line":"will detect the status as \u0027inactive\u0027 and not connect the vif. The agent will"},{"line_number":636,"context_line":"only act on an RPC activate message from Neutron API to connect the vif."},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"RPC Activate/Deactivate"},{"line_number":639,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_2c117e5d","line":636,"in_reply_to":"3a71b18c_20cebfb4","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":635,"context_line":"will detect the status as \u0027inactive\u0027 and not connect the vif. The agent will"},{"line_number":636,"context_line":"only act on an RPC activate message from Neutron API to connect the vif."},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"RPC Activate/Deactivate"},{"line_number":639,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"A new RPC message will be introduced when activate binding is called, see"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_a508f329","line":638,"updated":"2016-12-08 13:40:40.000000000","message":"I think instead of having another RPC interface for that, we should embed the data about all bindings into port update message. In case of RPC callbacks that we consider switching to as part of push-notifications, that would mean bindings field being part of Port object.","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":635,"context_line":"will detect the status as \u0027inactive\u0027 and not connect the vif. The agent will"},{"line_number":636,"context_line":"only act on an RPC activate message from Neutron API to connect the vif."},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"RPC Activate/Deactivate"},{"line_number":639,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"A new RPC message will be introduced when activate binding is called, see"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_4c14fa4b","line":638,"in_reply_to":"3a71b18c_a508f329","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"d3caa395fea93349b872a77f7b380a0fd3c845cf","unresolved":false,"context_lines":[{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    $ openstack port binding update {ARGS} \u003cport\u003e \u003chost\u003e"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    $ openstack port binding delete {ARGS} \u003cport\u003e"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"Security Impact"},{"line_number":684,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_78a7c70a","line":681,"updated":"2016-12-06 15:56:48.000000000","message":"Need \u003chost\u003e","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    $ openstack port binding update {ARGS} \u003cport\u003e \u003chost\u003e"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    $ openstack port binding delete {ARGS} \u003cport\u003e"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"Security Impact"},{"line_number":684,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_f194bf37","line":681,"in_reply_to":"3a71b18c_78a7c70a","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":679,"context_line":"    $ openstack port binding update {ARGS} \u003cport\u003e \u003chost\u003e"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    $ openstack port binding delete {ARGS} \u003cport\u003e"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"Security Impact"},{"line_number":684,"context_line":"---------------"},{"line_number":685,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_a51f135a","line":682,"updated":"2016-12-08 13:40:40.000000000","message":"activate too?","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":679,"context_line":"    $ openstack port binding update {ARGS} \u003cport\u003e \u003chost\u003e"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    $ openstack port binding delete {ARGS} \u003cport\u003e"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"Security Impact"},{"line_number":684,"context_line":"---------------"},{"line_number":685,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_51a653ae","line":682,"in_reply_to":"3a71b18c_a51f135a","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":708,"context_line":"Other Deployer Impact"},{"line_number":709,"context_line":"---------------------"},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"During upgrade, it is mandatory when performing an online upgrade, that the"},{"line_number":712,"context_line":"agents be upgraded first, prior to the API being updated.  This is due to the"},{"line_number":713,"context_line":"agents potentially receiving RPC messages during a live migration and not"},{"line_number":714,"context_line":"having support for the new operation."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"Developer Impact"},{"line_number":717,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_65733bb5","line":714,"range":{"start_line":711,"start_character":0,"end_line":714,"end_character":37},"updated":"2016-12-08 13:40:40.000000000","message":"That\u0027s wrong, we can\u0027t do it. We always upgrade server first, then agents. The old agents will consume old binding info. It means that server should send it both ways in Ocata.","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":708,"context_line":"Other Deployer Impact"},{"line_number":709,"context_line":"---------------------"},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"During upgrade, it is mandatory when performing an online upgrade, that the"},{"line_number":712,"context_line":"agents be upgraded first, prior to the API being updated.  This is due to the"},{"line_number":713,"context_line":"agents potentially receiving RPC messages during a live migration and not"},{"line_number":714,"context_line":"having support for the new operation."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"Developer Impact"},{"line_number":717,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_91ac6b8d","line":714,"range":{"start_line":711,"start_character":0,"end_line":714,"end_character":37},"in_reply_to":"3a71b18c_65733bb5","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":762,"context_line":"Tempest Tests"},{"line_number":763,"context_line":"-------------"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"Addition of a scenario test, `bindings.py`, to walk through the creation of a"},{"line_number":766,"context_line":"source migration instance, creation of the inactive binding on a secondary"},{"line_number":767,"context_line":"host, creation of a secondary target migration instance, activating the"},{"line_number":768,"context_line":"inactive binding, deactivating the source migration active binding."}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_455f1f0e","line":765,"range":{"start_line":765,"start_character":30,"end_line":765,"end_character":41},"updated":"2016-12-08 13:40:40.000000000","message":"test_bindings?","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":762,"context_line":"Tempest Tests"},{"line_number":763,"context_line":"-------------"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"Addition of a scenario test, `bindings.py`, to walk through the creation of a"},{"line_number":766,"context_line":"source migration instance, creation of the inactive binding on a secondary"},{"line_number":767,"context_line":"host, creation of a secondary target migration instance, activating the"},{"line_number":768,"context_line":"inactive binding, deactivating the source migration active binding."}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_5142d3ae","line":765,"range":{"start_line":765,"start_character":30,"end_line":765,"end_character":41},"in_reply_to":"3a71b18c_455f1f0e","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":765,"context_line":"Addition of a scenario test, `bindings.py`, to walk through the creation of a"},{"line_number":766,"context_line":"source migration instance, creation of the inactive binding on a secondary"},{"line_number":767,"context_line":"host, creation of a secondary target migration instance, activating the"},{"line_number":768,"context_line":"inactive binding, deactivating the source migration active binding."},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"Functional Tests"},{"line_number":771,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_05ac47ec","line":768,"updated":"2016-12-08 13:40:40.000000000","message":"...and then validating connectivity still working.\n\nI believe we will need to validate connectivity during migration too.","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":765,"context_line":"Addition of a scenario test, `bindings.py`, to walk through the creation of a"},{"line_number":766,"context_line":"source migration instance, creation of the inactive binding on a secondary"},{"line_number":767,"context_line":"host, creation of a secondary target migration instance, activating the"},{"line_number":768,"context_line":"inactive binding, deactivating the source migration active binding."},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"Functional Tests"},{"line_number":771,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_3137174e","line":768,"in_reply_to":"3a71b18c_05ac47ec","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":770,"context_line":"Functional Tests"},{"line_number":771,"context_line":"----------------"},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"Unknown."},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"API Tests"},{"line_number":776,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_45b63f3e","line":773,"updated":"2016-12-08 13:40:40.000000000","message":"What does it mean? I think it\u0027s clear that we will need some functional tests, maybe fullstack too.","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":770,"context_line":"Functional Tests"},{"line_number":771,"context_line":"----------------"},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"Unknown."},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"API Tests"},{"line_number":776,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_91054b15","line":773,"in_reply_to":"3a71b18c_45b63f3e","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":775,"context_line":"API Tests"},{"line_number":776,"context_line":"---------"},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"- Bindings resource (CRUD)"},{"line_number":779,"context_line":""},{"line_number":780,"context_line":"Documentation Impact"},{"line_number":781,"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":35,"id":"3a71b18c_059367a4","line":778,"updated":"2016-12-08 13:40:40.000000000","message":"We will also need to have a mixed test that e.g. sets bindings using new API and then checks the state exposed by the old extension.","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":775,"context_line":"API Tests"},{"line_number":776,"context_line":"---------"},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"- Bindings resource (CRUD)"},{"line_number":779,"context_line":""},{"line_number":780,"context_line":"Documentation Impact"},{"line_number":781,"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":35,"id":"1a6eadb0_f1659f44","line":778,"in_reply_to":"3a71b18c_059367a4","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":785,"context_line":"User Documentation"},{"line_number":786,"context_line":"------------------"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"Document the new bindings sub resource extension usage."},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"Developer Documentation"},{"line_number":791,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_25e78341","line":788,"updated":"2016-12-08 13:40:40.000000000","message":"Since it\u0027s admin-only API for nova, what would you like to expose to usual users?","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":785,"context_line":"User Documentation"},{"line_number":786,"context_line":"------------------"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"Document the new bindings sub resource extension usage."},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"Developer Documentation"},{"line_number":791,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_51de53dd","line":788,"in_reply_to":"3a71b18c_25e78341","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"72ab498cdedfab8a8d63e8cd81cb9c4d17a643fc","unresolved":false,"context_lines":[{"line_number":790,"context_line":"Developer Documentation"},{"line_number":791,"context_line":"-----------------------"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"Yes."},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"References"},{"line_number":796,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3a71b18c_e5dcab76","line":793,"updated":"2016-12-08 13:40:40.000000000","message":"What would you like to document for developers?","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"f17783278916fc265185417cb4b439800e3a32fb","unresolved":false,"context_lines":[{"line_number":790,"context_line":"Developer Documentation"},{"line_number":791,"context_line":"-----------------------"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"Yes."},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"References"},{"line_number":796,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1a6eadb0_71aeef2e","line":793,"in_reply_to":"3a71b18c_e5dcab76","updated":"2016-12-16 18:34:22.000000000","message":"Done","commit_id":"13e749b8711ac39ba3f7b463b9062c6e86d86588"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"063d4c5b8b91bb485e917a5856bb37a60f4b1ffd","unresolved":false,"context_lines":[{"line_number":544,"context_line":"resource of `ports`."},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"The following methods will be added to the newly created service plugin"},{"line_number":547,"context_line":"`bindings`:"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"* `get_port_bindings()`"},{"line_number":550,"context_line":""}],"source_content_type":"text/x-rst","patch_set":38,"id":"1a6eadb0_f8da97e8","line":547,"updated":"2016-12-19 18:22:55.000000000","message":"`services\\bindings\\bindings_plugin.py`","commit_id":"e6349e2a912e8508024a170eef11a39c27214130"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"016aca547ce62bbc9ec576a5b26feea552e261f5","unresolved":false,"context_lines":[{"line_number":544,"context_line":"resource of `ports`."},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"The following methods will be added to the newly created service plugin"},{"line_number":547,"context_line":"`bindings`:"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"* `get_port_bindings()`"},{"line_number":550,"context_line":""}],"source_content_type":"text/x-rst","patch_set":38,"id":"ba5201f7_ba6ef12c","line":547,"in_reply_to":"1a6eadb0_f8da97e8","updated":"2017-01-11 21:43:01.000000000","message":"Done","commit_id":"e6349e2a912e8508024a170eef11a39c27214130"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"3e795484a7e7293ad5500b799c179cdb7b984bcd","unresolved":false,"context_lines":[{"line_number":613,"context_line":"------------------"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"Will provide update.  Extension of PK to PortBinding is not an option and most"},{"line_number":616,"context_line":"likely we will move operations to DistributedPortBinding while still writing"},{"line_number":617,"context_line":"to PortBinding for the purpose of OVO."},{"line_number":618,"context_line":""},{"line_number":619,"context_line":"Changes to Mechanism Drivers"}],"source_content_type":"text/x-rst","patch_set":38,"id":"1a6eadb0_907c00b7","line":616,"updated":"2016-12-20 09:00:29.000000000","message":"We should mention the no-downtime-upgrade blueperints here, which will have affect on the work. Maybe write 1 or 2 sentences on how we deal with the new concept.\n\nhttps://blueprints.launchpad.net/openstack/?searchtext\u003donline-upgrades","commit_id":"e6349e2a912e8508024a170eef11a39c27214130"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"016aca547ce62bbc9ec576a5b26feea552e261f5","unresolved":false,"context_lines":[{"line_number":613,"context_line":"------------------"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"Will provide update.  Extension of PK to PortBinding is not an option and most"},{"line_number":616,"context_line":"likely we will move operations to DistributedPortBinding while still writing"},{"line_number":617,"context_line":"to PortBinding for the purpose of OVO."},{"line_number":618,"context_line":""},{"line_number":619,"context_line":"Changes to Mechanism Drivers"}],"source_content_type":"text/x-rst","patch_set":38,"id":"ba5201f7_8780f5c0","line":616,"in_reply_to":"1a6eadb0_907c00b7","updated":"2017-01-11 21:43:01.000000000","message":"Done","commit_id":"e6349e2a912e8508024a170eef11a39c27214130"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"3e795484a7e7293ad5500b799c179cdb7b984bcd","unresolved":false,"context_lines":[{"line_number":651,"context_line":"* Activate will result in a `port_update` containing the relative binding"},{"line_number":652,"context_line":"  information for the host and dictate the transition from inactive to active."},{"line_number":653,"context_line":"  This will allow for a GARP to be sent out, updating the topology to a change"},{"line_number":654,"context_line":"  in status."},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"* Deactivate will result in a `port_update` containing the relative binding"},{"line_number":657,"context_line":"  information for the host and dictate the transition from active to inactive."}],"source_content_type":"text/x-rst","patch_set":38,"id":"1a6eadb0_70dbe41b","line":654,"updated":"2016-12-20 09:00:29.000000000","message":"Activating a binding makes only sense if the corresponding VIF has already been created by nova. If the binding gets activated, but the VIF does not yet exist - I guess the neutron agent will just do nothing.\n\nMaybe it is helpful to have a sequence diagram here showing the following:\n\n- Inactive binding create\n- Live migration trigger, nova createsn VIF on target\n- neutron agent detects that vif on target and asks server for details (still active on source - will ignore it)\n- activation of the target binding - processing it in the target agent - reporting it as up on the target\n- deactivation of the source port or deletion of the source vif (depending on what happens first)\n\nOf interesst are alos the Port status changes during that process (if there are some).\n\nI guess it helps to have a look at[1] which describes todays flow in migration and port status changes\n\n[1] https://review.openstack.org/#/c/274097/\n-\u003e we should name that as reference here","commit_id":"e6349e2a912e8508024a170eef11a39c27214130"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"016aca547ce62bbc9ec576a5b26feea552e261f5","unresolved":false,"context_lines":[{"line_number":651,"context_line":"* Activate will result in a `port_update` containing the relative binding"},{"line_number":652,"context_line":"  information for the host and dictate the transition from inactive to active."},{"line_number":653,"context_line":"  This will allow for a GARP to be sent out, updating the topology to a change"},{"line_number":654,"context_line":"  in status."},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"* Deactivate will result in a `port_update` containing the relative binding"},{"line_number":657,"context_line":"  information for the host and dictate the transition from active to inactive."}],"source_content_type":"text/x-rst","patch_set":38,"id":"ba5201f7_f9595636","line":654,"in_reply_to":"1a6eadb0_70dbe41b","updated":"2017-01-11 21:43:01.000000000","message":"I\u0027ll get a diagram up.","commit_id":"e6349e2a912e8508024a170eef11a39c27214130"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"3e795484a7e7293ad5500b799c179cdb7b984bcd","unresolved":false,"context_lines":[{"line_number":655,"context_line":""},{"line_number":656,"context_line":"* Deactivate will result in a `port_update` containing the relative binding"},{"line_number":657,"context_line":"  information for the host and dictate the transition from active to inactive."},{"line_number":658,"context_line":"  This will allow for a removal of the VIF plumbing and stage the VIF for"},{"line_number":659,"context_line":"  deletion when the instance is removed."},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"Other changes"},{"line_number":662,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":38,"id":"1a6eadb0_d0911848","line":659,"range":{"start_line":658,"start_character":2,"end_line":659,"end_character":40},"updated":"2016-12-20 09:00:29.000000000","message":"Neutron does not do any cleanup for a vif on live migration. this all happens on nova side. So even without having the port-update event received, nova could remove the vif. But I guess that\u0027s fine, as the agent would detect the removal and report the port on the migration source as down. Which allows the port for the target to become online once it\u0027s agent processed it.","commit_id":"e6349e2a912e8508024a170eef11a39c27214130"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"016aca547ce62bbc9ec576a5b26feea552e261f5","unresolved":false,"context_lines":[{"line_number":655,"context_line":""},{"line_number":656,"context_line":"* Deactivate will result in a `port_update` containing the relative binding"},{"line_number":657,"context_line":"  information for the host and dictate the transition from active to inactive."},{"line_number":658,"context_line":"  This will allow for a removal of the VIF plumbing and stage the VIF for"},{"line_number":659,"context_line":"  deletion when the instance is removed."},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"Other changes"},{"line_number":662,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":38,"id":"ba5201f7_ea526866","line":659,"range":{"start_line":658,"start_character":2,"end_line":659,"end_character":40},"in_reply_to":"1a6eadb0_d0911848","updated":"2017-01-11 21:43:01.000000000","message":"Nova technically can\u0027t delete the port as the port still exists, just it\u0027s on the different host.  So, we\u0027ll need to treat it like it\u0027s being deleted on the host from the agent\u0027s perspective.","commit_id":"e6349e2a912e8508024a170eef11a39c27214130"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d0cc8e31eb0bcce27e84914aad6bfc8e73584b4f","unresolved":false,"context_lines":[{"line_number":557,"context_line":"* `delete_port_binding()`"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"An additional sub resource will be added to `portbindings_extended.py`"},{"line_number":560,"context_line":"to facilitate \u0027activate\u0027:"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"* `update_binding_activate`"},{"line_number":563,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"9a57fde8_be62ced6","line":560,"updated":"2017-01-12 17:43:50.000000000","message":"I think it\u0027s done with member_actions not subresources.","commit_id":"6a15fda01112996c69712141cbf36425a49fb1d7"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"ca3c3d325cac3a061b90ce4b2d666d1c2af137de","unresolved":false,"context_lines":[{"line_number":557,"context_line":"* `delete_port_binding()`"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"An additional sub resource will be added to `portbindings_extended.py`"},{"line_number":560,"context_line":"to facilitate \u0027activate\u0027:"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"* `update_binding_activate`"},{"line_number":563,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"7a3c09a3_a76986c0","line":560,"in_reply_to":"9a57fde8_be62ced6","updated":"2017-01-16 16:42:50.000000000","message":"Done","commit_id":"6a15fda01112996c69712141cbf36425a49fb1d7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d0cc8e31eb0bcce27e84914aad6bfc8e73584b4f","unresolved":false,"context_lines":[{"line_number":589,"context_line":""},{"line_number":590,"context_line":"New methods will be introduced in support of the new sub resource under ports,"},{"line_number":591,"context_line":"but the current `create_port()`, `update_port()` and `delete_port()` will be"},{"line_number":592,"context_line":"modified to only action on `active` bindings in the PortBinding table."},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"Today, `create_port()` adds an empty unbound binding in PortBinding and the"},{"line_number":595,"context_line":"following changes will be made in support of this spec:"}],"source_content_type":"text/x-rst","patch_set":40,"id":"9a57fde8_be900e97","line":592,"range":{"start_line":592,"start_character":17,"end_line":592,"end_character":23},"updated":"2017-01-12 17:43:50.000000000","message":"-\u003e act","commit_id":"6a15fda01112996c69712141cbf36425a49fb1d7"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"ca3c3d325cac3a061b90ce4b2d666d1c2af137de","unresolved":false,"context_lines":[{"line_number":589,"context_line":""},{"line_number":590,"context_line":"New methods will be introduced in support of the new sub resource under ports,"},{"line_number":591,"context_line":"but the current `create_port()`, `update_port()` and `delete_port()` will be"},{"line_number":592,"context_line":"modified to only action on `active` bindings in the PortBinding table."},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"Today, `create_port()` adds an empty unbound binding in PortBinding and the"},{"line_number":595,"context_line":"following changes will be made in support of this spec:"}],"source_content_type":"text/x-rst","patch_set":40,"id":"7a3c09a3_27eaf60f","line":592,"range":{"start_line":592,"start_character":17,"end_line":592,"end_character":23},"in_reply_to":"9a57fde8_be900e97","updated":"2017-01-16 16:42:50.000000000","message":"Done","commit_id":"6a15fda01112996c69712141cbf36425a49fb1d7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d0cc8e31eb0bcce27e84914aad6bfc8e73584b4f","unresolved":false,"context_lines":[{"line_number":605,"context_line":"Finally, `delete_port()` will be adjusted for `active` status with the"},{"line_number":606,"context_line":"following changes:"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"* Delete will only action on the `active` binding in the PortBinding table."},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"Data Model Changes"},{"line_number":611,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":40,"id":"9a57fde8_7eddc66f","line":608,"range":{"start_line":608,"start_character":19,"end_line":608,"end_character":25},"updated":"2017-01-12 17:43:50.000000000","message":"act","commit_id":"6a15fda01112996c69712141cbf36425a49fb1d7"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"ca3c3d325cac3a061b90ce4b2d666d1c2af137de","unresolved":false,"context_lines":[{"line_number":605,"context_line":"Finally, `delete_port()` will be adjusted for `active` status with the"},{"line_number":606,"context_line":"following changes:"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"* Delete will only action on the `active` binding in the PortBinding table."},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"Data Model Changes"},{"line_number":611,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":40,"id":"7a3c09a3_c792129f","line":608,"range":{"start_line":608,"start_character":19,"end_line":608,"end_character":25},"in_reply_to":"9a57fde8_7eddc66f","updated":"2017-01-16 16:42:50.000000000","message":"Done","commit_id":"6a15fda01112996c69712141cbf36425a49fb1d7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d0cc8e31eb0bcce27e84914aad6bfc8e73584b4f","unresolved":false,"context_lines":[{"line_number":618,"context_line":""},{"line_number":619,"context_line":"Online upgrades  with Blueprint `[9]`_ has introduced additional steps in model"},{"line_number":620,"context_line":"changes, but due to the expansion only changes detailed here, no additional"},{"line_number":621,"context_line":"work is needed to accommodate OVO."},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"Changes to Mechanism Drivers"},{"line_number":624,"context_line":"----------------------------"}],"source_content_type":"text/x-rst","patch_set":40,"id":"9a57fde8_d91a4c6e","line":621,"updated":"2017-01-12 17:43:50.000000000","message":"I see that some code in Newton, for example, get_locked_port_and_binding, assumes there is a single binding per port (see it calls .one) What if newer Nova created another binding while some Neutron nodes are still using Newton code? Will they fail on binding update attempt? Or we don\u0027t expect the new Nova code to be delivered before all Neutron servers are upgraded?","commit_id":"6a15fda01112996c69712141cbf36425a49fb1d7"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"ca3c3d325cac3a061b90ce4b2d666d1c2af137de","unresolved":false,"context_lines":[{"line_number":618,"context_line":""},{"line_number":619,"context_line":"Online upgrades  with Blueprint `[9]`_ has introduced additional steps in model"},{"line_number":620,"context_line":"changes, but due to the expansion only changes detailed here, no additional"},{"line_number":621,"context_line":"work is needed to accommodate OVO."},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"Changes to Mechanism Drivers"},{"line_number":624,"context_line":"----------------------------"}],"source_content_type":"text/x-rst","patch_set":40,"id":"7a3c09a3_a7fa66bb","line":621,"in_reply_to":"9a57fde8_d91a4c6e","updated":"2017-01-16 16:42:50.000000000","message":"Is there a way in OVO today to handle this?","commit_id":"6a15fda01112996c69712141cbf36425a49fb1d7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d0cc8e31eb0bcce27e84914aad6bfc8e73584b4f","unresolved":false,"context_lines":[{"line_number":640,"context_line":"Activate RPC Port Update/Delete"},{"line_number":641,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"The existing `port_update` and `port_delete` RPC message will be adjusted to"},{"line_number":644,"context_line":"send the specific binding information for the host regardless of state."},{"line_number":645,"context_line":"This will allow the addition of additional plumbing to occur as follows:"},{"line_number":646,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"9a57fde8_99ac44ef","line":643,"range":{"start_line":643,"start_character":0,"end_line":643,"end_character":73},"updated":"2017-01-12 17:43:50.000000000","message":"We are actually working on introducing objects (that including bindings) instead of those messages as part of push-notifications blueprint. You may want to plan for that.","commit_id":"6a15fda01112996c69712141cbf36425a49fb1d7"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"ca3c3d325cac3a061b90ce4b2d666d1c2af137de","unresolved":false,"context_lines":[{"line_number":640,"context_line":"Activate RPC Port Update/Delete"},{"line_number":641,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"The existing `port_update` and `port_delete` RPC message will be adjusted to"},{"line_number":644,"context_line":"send the specific binding information for the host regardless of state."},{"line_number":645,"context_line":"This will allow the addition of additional plumbing to occur as follows:"},{"line_number":646,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"7a3c09a3_5fe8aab4","line":643,"range":{"start_line":643,"start_character":0,"end_line":643,"end_character":73},"in_reply_to":"9a57fde8_99ac44ef","updated":"2017-01-16 16:42:50.000000000","message":"Done","commit_id":"6a15fda01112996c69712141cbf36425a49fb1d7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d0cc8e31eb0bcce27e84914aad6bfc8e73584b4f","unresolved":false,"context_lines":[{"line_number":804,"context_line":"Functional Tests"},{"line_number":805,"context_line":"----------------"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"Additional functional tests will be added to `ml2\\test_plugin.py` to expand"},{"line_number":808,"context_line":"on the current port binding tests. This will accommodate for a status check"},{"line_number":809,"context_line":"in the case of adding an inactive binding."},{"line_number":810,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"9a57fde8_d4e4d33c","line":807,"range":{"start_line":807,"start_character":49,"end_line":807,"end_character":50},"updated":"2017-01-12 17:43:50.000000000","message":"/?","commit_id":"6a15fda01112996c69712141cbf36425a49fb1d7"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"ca3c3d325cac3a061b90ce4b2d666d1c2af137de","unresolved":false,"context_lines":[{"line_number":804,"context_line":"Functional Tests"},{"line_number":805,"context_line":"----------------"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"Additional functional tests will be added to `ml2\\test_plugin.py` to expand"},{"line_number":808,"context_line":"on the current port binding tests. This will accommodate for a status check"},{"line_number":809,"context_line":"in the case of adding an inactive binding."},{"line_number":810,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"7a3c09a3_7f71e6df","line":807,"range":{"start_line":807,"start_character":49,"end_line":807,"end_character":50},"in_reply_to":"9a57fde8_d4e4d33c","updated":"2017-01-16 16:42:50.000000000","message":"Done","commit_id":"6a15fda01112996c69712141cbf36425a49fb1d7"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"2a02cd8878900d1eac75673102da7a789531804d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"removing the original port binding on the source compute."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The proposal is to have a port binding on the source AND target compute hosts"},{"line_number":44,"context_line":"where only one port binding is active.  After instance migration is complete,"},{"line_number":45,"context_line":"the target port binding is activated and the source port binding is"},{"line_number":46,"context_line":"deactivated, but not deleted.  The original port binding on the source compute"},{"line_number":47,"context_line":"host is kept for rollback purposes and will only be removed during the"},{"line_number":48,"context_line":"post_live_migration stage."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The issues can be divided in 2 categories:"}],"source_content_type":"text/x-rst","patch_set":41,"id":"7a3c09a3_64d65550","line":47,"range":{"start_line":44,"start_character":40,"end_line":47,"end_character":34},"updated":"2017-01-18 08:59:12.000000000","message":"It\u0027s impossible to rollback live migration at this point. This would mean another live migration to move VM back. Once instance is active on destination it becomes its primary host, so I\u0027m not sure that this case is valid there.","commit_id":"3bef3e80adeac318903a554bc1a8c11455bafa56"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"697a12fbf2760205cc980093f9f5c1d6553bf624","unresolved":false,"context_lines":[{"line_number":41,"context_line":"removing the original port binding on the source compute."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The proposal is to have a port binding on the source AND target compute hosts"},{"line_number":44,"context_line":"where only one port binding is active.  After instance migration is complete,"},{"line_number":45,"context_line":"the target port binding is activated and the source port binding is"},{"line_number":46,"context_line":"deactivated, but not deleted.  The original port binding on the source compute"},{"line_number":47,"context_line":"host is kept for rollback purposes and will only be removed during the"},{"line_number":48,"context_line":"post_live_migration stage."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The issues can be divided in 2 categories:"}],"source_content_type":"text/x-rst","patch_set":41,"id":"7a3c09a3_571e540c","line":47,"range":{"start_line":44,"start_character":40,"end_line":47,"end_character":34},"in_reply_to":"7a3c09a3_64d65550","updated":"2017-01-18 15:59:15.000000000","message":"Done","commit_id":"3bef3e80adeac318903a554bc1a8c11455bafa56"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"30c8a52c8f6453f3e3e2d1af7b10e604fb947a00","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    {"},{"line_number":188,"context_line":"        \"bindings\": ["},{"line_number":189,"context_line":"            {"},{"line_number":190,"context_line":"                \"host_id\": \"source-host_id\","},{"line_number":191,"context_line":"                \"vif_type\": \"ovs\","},{"line_number":192,"context_line":"                \"vif_details\": {"},{"line_number":193,"context_line":"                    \"port_filter\": true,"}],"source_content_type":"text/x-rst","patch_set":41,"id":"7a3c09a3_faebbd10","line":190,"range":{"start_line":190,"start_character":17,"end_line":190,"end_character":24},"updated":"2017-01-18 15:30:13.000000000","message":"I\u0027m thinking if host_id should be \u0027host\u0027, because the value is hostname, not any uuid.","commit_id":"3bef3e80adeac318903a554bc1a8c11455bafa56"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"697a12fbf2760205cc980093f9f5c1d6553bf624","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    {"},{"line_number":188,"context_line":"        \"bindings\": ["},{"line_number":189,"context_line":"            {"},{"line_number":190,"context_line":"                \"host_id\": \"source-host_id\","},{"line_number":191,"context_line":"                \"vif_type\": \"ovs\","},{"line_number":192,"context_line":"                \"vif_details\": {"},{"line_number":193,"context_line":"                    \"port_filter\": true,"}],"source_content_type":"text/x-rst","patch_set":41,"id":"7a3c09a3_f7974037","line":190,"range":{"start_line":190,"start_character":17,"end_line":190,"end_character":24},"in_reply_to":"7a3c09a3_faebbd10","updated":"2017-01-18 15:59:15.000000000","message":"The current portbindings extension implements it as host_id.  I\u0027d suggest we maintain consistency.","commit_id":"3bef3e80adeac318903a554bc1a8c11455bafa56"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"30c8a52c8f6453f3e3e2d1af7b10e604fb947a00","unresolved":false,"context_lines":[{"line_number":613,"context_line":"In addition, a `status` column will be introduced in the expansion where states"},{"line_number":614,"context_line":"`active`, `down`, and `inactive` will be values."},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"Online upgrades  with Blueprint `[9]`_ has introduced additional steps in model"},{"line_number":617,"context_line":"changes, but due to the expansion only changes detailed here, no additional"},{"line_number":618,"context_line":"work is needed to accommodate OVO."},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"Changes to Mechanism Drivers"},{"line_number":621,"context_line":"----------------------------"}],"source_content_type":"text/x-rst","patch_set":41,"id":"7a3c09a3_f1303058","line":618,"range":{"start_line":616,"start_character":0,"end_line":618,"end_character":34},"updated":"2017-01-18 15:30:13.000000000","message":"It is not true. Modifications in db schema is triggering equivalent changes in OVO. It should be stated here, that \"Online upgrades requires to add \u0027host\u0027 to primary_keys and new field \u0027status\u0027 for Port Binding OVO. Version of the object should be bumped if push-notification will be merged first, and PortBinding object will be present on the RPC wire. Defining default value for \u0027status\u0027 field would not require to do the online data migration.\"","commit_id":"3bef3e80adeac318903a554bc1a8c11455bafa56"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"697a12fbf2760205cc980093f9f5c1d6553bf624","unresolved":false,"context_lines":[{"line_number":613,"context_line":"In addition, a `status` column will be introduced in the expansion where states"},{"line_number":614,"context_line":"`active`, `down`, and `inactive` will be values."},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"Online upgrades  with Blueprint `[9]`_ has introduced additional steps in model"},{"line_number":617,"context_line":"changes, but due to the expansion only changes detailed here, no additional"},{"line_number":618,"context_line":"work is needed to accommodate OVO."},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"Changes to Mechanism Drivers"},{"line_number":621,"context_line":"----------------------------"}],"source_content_type":"text/x-rst","patch_set":41,"id":"7a3c09a3_c24fe068","line":618,"range":{"start_line":616,"start_character":0,"end_line":618,"end_character":34},"in_reply_to":"7a3c09a3_f1303058","updated":"2017-01-18 15:59:15.000000000","message":"Done","commit_id":"3bef3e80adeac318903a554bc1a8c11455bafa56"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"78fb79d36627db85610350b6b372ecaacbd21945","unresolved":false,"context_lines":[{"line_number":645,"context_line":""},{"line_number":646,"context_line":"* Activate will result in a `port_update`, which will pass the relative binding"},{"line_number":647,"context_line":"  information for the host and dictate the transition from inactive to active"},{"line_number":648,"context_line":"  in the `get_devices_details_list_and_failed_devices` response.This will allow"},{"line_number":649,"context_line":"  for a GARP to be sent out, updating the topology to a change in status."},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"* Activate will result in a `port_delete` rpc call to the source host, removing"}],"source_content_type":"text/x-rst","patch_set":41,"id":"7a3c09a3_16908494","line":648,"updated":"2017-01-17 19:36:19.000000000","message":"missing space after dot","commit_id":"3bef3e80adeac318903a554bc1a8c11455bafa56"},{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"697a12fbf2760205cc980093f9f5c1d6553bf624","unresolved":false,"context_lines":[{"line_number":645,"context_line":""},{"line_number":646,"context_line":"* Activate will result in a `port_update`, which will pass the relative binding"},{"line_number":647,"context_line":"  information for the host and dictate the transition from inactive to active"},{"line_number":648,"context_line":"  in the `get_devices_details_list_and_failed_devices` response.This will allow"},{"line_number":649,"context_line":"  for a GARP to be sent out, updating the topology to a change in status."},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"* Activate will result in a `port_delete` rpc call to the source host, removing"}],"source_content_type":"text/x-rst","patch_set":41,"id":"7a3c09a3_2270a4a3","line":648,"in_reply_to":"7a3c09a3_16908494","updated":"2017-01-18 15:59:15.000000000","message":"Done","commit_id":"3bef3e80adeac318903a554bc1a8c11455bafa56"}]}
