)]}'
{"specs/version1/active-active-distributor.rst":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":12,"context_line":"https://blueprints.launchpad.net/octavia/+spec/active-active-topology"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"** NOTE ** Work in Progress"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"General Remarks and Issues (Mitaka mid-cycle)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_dc70ada6","line":15,"updated":"2016-01-23 00:34:07.000000000","message":"For merge, please remove this comment.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":15,"context_line":"** NOTE ** Work in Progress"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"General Remarks and Issues (Mitaka mid-cycle)"},{"line_number":19,"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":20,"context_line":""},{"line_number":21,"context_line":"1. DVR compatibility"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_dcb66df8","line":18,"updated":"2016-01-23 00:34:07.000000000","message":"This is good, but we really want a description of the solution in a spec file as opposed to just a list of issues.\nThis file may help to describe what OpenStack expects in a spec file:\nhttps://github.com/openstack/octavia/blob/master/specs/template.rst\n\nSpec files are intended to give the community an overview of the change and direction so that we can provide feedback before you get too far into coding and need to make major changes.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"  - A shared Distributor uses the least amount of resources, but may not"},{"line_number":29,"context_line":"    meet isolation requirements (performance and/or security). Also, the"},{"line_number":30,"context_line":"    Distributor might not   have the right permissions to connect to the"},{"line_number":31,"context_line":"    tenant front-end network; in particular, you cannot bind a neutron"},{"line_number":32,"context_line":"    port to a different account even if your are an admin."},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_fca251ad","line":30,"updated":"2016-01-23 00:34:07.000000000","message":"Extra space here","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"787809474be4d8a9d1bf3ec0acecb68b9e801456","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"  - A shared Distributor uses the least amount of resources, but may not"},{"line_number":29,"context_line":"    meet isolation requirements (performance and/or security). Also, the"},{"line_number":30,"context_line":"    Distributor might not   have the right permissions to connect to the"},{"line_number":31,"context_line":"    tenant front-end network; in particular, you cannot bind a neutron"},{"line_number":32,"context_line":"    port to a different account even if your are an admin."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"  - The implementation shall support both shared-Distributor and a"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_3f8bf669","line":31,"range":{"start_line":30,"start_character":28,"end_line":31,"end_character":28},"updated":"2016-01-23 04:14:01.000000000","message":"an admin is able to create a port on any tenant\u0027s network, so that should work.  You cannot update the tenant-id of any resource in neutron though (unless you do it via DB obviously).  What would be the reason for binding a neutron port to another account?","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"15013c4de3385f95c5381ca172c8af15a10f5aba","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  - A shared Distributor uses the least amount of resources, but may not"},{"line_number":29,"context_line":"    meet isolation requirements (performance and/or security). Also, the"},{"line_number":30,"context_line":"    Distributor might not   have the right permissions to connect to the"},{"line_number":31,"context_line":"    tenant front-end network; in particular, you cannot bind a neutron"},{"line_number":32,"context_line":"    port to a different account even if your are an admin."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"  - The implementation shall support both shared-Distributor and a"},{"line_number":35,"context_line":"    multi-Distributor configurations. In particular, an abstraction layer"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_8d8be1c2","line":32,"range":{"start_line":31,"start_character":45,"end_line":32,"end_character":31},"updated":"2016-01-23 01:51:35.000000000","message":"I think if you use a provider net you can though we shouldn\u0027t make our implementation dependent on that","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  - The implementation shall support both shared-Distributor and a"},{"line_number":35,"context_line":"    multi-Distributor configurations. In particular, an abstraction layer"},{"line_number":36,"context_line":"    would be used and the data-model shall include an association between"},{"line_number":37,"context_line":"    the load-balancer and Distributor."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":" 3. Affinity"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_fc057179","line":37,"updated":"2016-01-23 00:34:07.000000000","message":"This is good.  I think we should call out the design that supports both options.  I am thinking their will be a \"distributor\" driver that let\u0027s operators make the decision.  A high level description of that API would be good in the distributor spec.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"787809474be4d8a9d1bf3ec0acecb68b9e801456","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  - The implementation shall support both shared-Distributor and a"},{"line_number":35,"context_line":"    multi-Distributor configurations. In particular, an abstraction layer"},{"line_number":36,"context_line":"    would be used and the data-model shall include an association between"},{"line_number":37,"context_line":"    the load-balancer and Distributor."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":" 3. Affinity"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_ffd6be4d","line":37,"in_reply_to":"9a68dd71_ad8825c6","updated":"2016-01-23 04:14:01.000000000","message":"We\u0027ll also need to decide how and when the distributor interface methods are executed.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"15013c4de3385f95c5381ca172c8af15a10f5aba","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  - The implementation shall support both shared-Distributor and a"},{"line_number":35,"context_line":"    multi-Distributor configurations. In particular, an abstraction layer"},{"line_number":36,"context_line":"    would be used and the data-model shall include an association between"},{"line_number":37,"context_line":"    the load-balancer and Distributor."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":" 3. Affinity"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_ad8825c6","line":37,"in_reply_to":"9a68dd71_fc057179","updated":"2016-01-23 01:51:35.000000000","message":"I also like to see distributors which are completely SDN based. I think a design as Michael suggested would be good but make sure to keep that in mind.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    would be used and the data-model shall include an association between"},{"line_number":37,"context_line":"    the load-balancer and Distributor."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":" 3. Affinity"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"   - The Distributor shall support different modes of client-to-Amphora"},{"line_number":42,"context_line":"      affinity."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_1cc3a5ee","line":39,"updated":"2016-01-23 00:34:07.000000000","message":"Affinity might be confusing to some as it is used to describe service placement.  For example, nova uses affinity to describe where instances are placed.\n\nSomething like persistence or \"flow affinity\" might be more clear.  May others have other ideas/thoughts on this.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":41,"context_line":"   - The Distributor shall support different modes of client-to-Amphora"},{"line_number":42,"context_line":"      affinity."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"   - Affinity based only on source IP allows better SSL resume, since"},{"line_number":45,"context_line":"     there computing resume keys is much lighter weight than session"},{"line_number":46,"context_line":"     renegotiation (for RSA keys). (*Note* DSA keys have similar load"},{"line_number":47,"context_line":"     for new and resume). Without this type of affinity, when you scale"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_079d92bb","line":44,"updated":"2016-01-23 00:34:07.000000000","message":"Great to capture this here.\nI would like to see a list of initially supported modes.\nSOURCE IP\nSOURCE IP-PORT ?\nand any others.\n\nI expect this will be a short list.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":44,"context_line":"   - Affinity based only on source IP allows better SSL resume, since"},{"line_number":45,"context_line":"     there computing resume keys is much lighter weight than session"},{"line_number":46,"context_line":"     renegotiation (for RSA keys). (*Note* DSA keys have similar load"},{"line_number":47,"context_line":"     for new and resume). Without this type of affinity, when you scale"},{"line_number":48,"context_line":"     out the Amphorae it also increase the load, which negates the"},{"line_number":49,"context_line":"     benefit of scaling-out. On the other hand, this type of affinity"},{"line_number":50,"context_line":"     might lead to poor distribution of loads for some workloads (e.g.,"},{"line_number":51,"context_line":"     workload behind a single proxy)."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_e2adcc9b","line":49,"range":{"start_line":47,"start_character":26,"end_line":49,"end_character":28},"updated":"2016-01-23 00:34:07.000000000","message":"Can you explain this more?  With affinity we shouldn\u0027t be resuming sessions right?","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":55,"context_line":"       protocol). Also, the problem goes away if client supports TLS"},{"line_number":56,"context_line":"       tickets."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"   - Consistent hashing can be used to provide some affinity and minimize"},{"line_number":59,"context_line":"     mapping changes when an Amphora is added or removed from the cluster."},{"line_number":60,"context_line":"     Even with consistent hashing it should be noted that at about 1/N of"},{"line_number":61,"context_line":"     the traffic will be re-routed (where N is the number of Amphorae in"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_270bf68f","line":58,"updated":"2016-01-23 00:34:07.000000000","message":"Maybe a brief mention of rendezvous hashing and why it would not be a good option would be helpful here.\nAlso, a description of the variant of consistent hashing would be helpful.  Are we thinking of using the swift (http://docs.openstack.org/developer/swift/ring.html) code?  More of a AWS dynamo (http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf) approach, etc.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"15013c4de3385f95c5381ca172c8af15a10f5aba","unresolved":false,"context_lines":[{"line_number":55,"context_line":"       protocol). Also, the problem goes away if client supports TLS"},{"line_number":56,"context_line":"       tickets."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"   - Consistent hashing can be used to provide some affinity and minimize"},{"line_number":59,"context_line":"     mapping changes when an Amphora is added or removed from the cluster."},{"line_number":60,"context_line":"     Even with consistent hashing it should be noted that at about 1/N of"},{"line_number":61,"context_line":"     the traffic will be re-routed (where N is the number of Amphorae in"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_ad5d8548","line":58,"in_reply_to":"9a68dd71_270bf68f","updated":"2016-01-23 01:51:35.000000000","message":"I am very fond of katana hashing (https://github.com/RJ/ketama) so please include that. The section about hashing should also discuss how we increase/shrink the cluster and how hashing will support those events. Are we thinking about rehashing in that case?","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"f26766d43ae8e309d396868ecad1d8125c73108f","unresolved":false,"context_lines":[{"line_number":55,"context_line":"       protocol). Also, the problem goes away if client supports TLS"},{"line_number":56,"context_line":"       tickets."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"   - Consistent hashing can be used to provide some affinity and minimize"},{"line_number":59,"context_line":"     mapping changes when an Amphora is added or removed from the cluster."},{"line_number":60,"context_line":"     Even with consistent hashing it should be noted that at about 1/N of"},{"line_number":61,"context_line":"     the traffic will be re-routed (where N is the number of Amphorae in"}],"source_content_type":"text/x-rst","patch_set":5,"id":"da0c15f0_fbe8d918","line":58,"in_reply_to":"9a68dd71_270bf68f","updated":"2016-03-25 01:16:19.000000000","message":"will add this info in the spec. I am still trying to find more info about the rendezvous hashing but not able to find a lot of info. Please let me know if you have any links for the same.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"f26766d43ae8e309d396868ecad1d8125c73108f","unresolved":false,"context_lines":[{"line_number":55,"context_line":"       protocol). Also, the problem goes away if client supports TLS"},{"line_number":56,"context_line":"       tickets."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"   - Consistent hashing can be used to provide some affinity and minimize"},{"line_number":59,"context_line":"     mapping changes when an Amphora is added or removed from the cluster."},{"line_number":60,"context_line":"     Even with consistent hashing it should be noted that at about 1/N of"},{"line_number":61,"context_line":"     the traffic will be re-routed (where N is the number of Amphorae in"}],"source_content_type":"text/x-rst","patch_set":5,"id":"da0c15f0_5bac65ed","line":58,"in_reply_to":"9a68dd71_ad5d8548","updated":"2016-03-25 01:16:19.000000000","message":"@xgerman: will update to add this ketama info. About the inccreawe and decrease of the cluster, should we cover that in this spec, as it\u0027s a case of elasticity.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"   - Consistent hashing can be used to provide some affinity and minimize"},{"line_number":59,"context_line":"     mapping changes when an Amphora is added or removed from the cluster."},{"line_number":60,"context_line":"     Even with consistent hashing it should be noted that at about 1/N of"},{"line_number":61,"context_line":"     the traffic will be re-routed (where N is the number of Amphorae in"},{"line_number":62,"context_line":"     the cluster)."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"   - Flow tracking can be used to provide full affinity. It is possible to"},{"line_number":65,"context_line":"     use Connection-Tracking for this (e.g., through Open-Flow or"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_4775caf7","line":62,"range":{"start_line":60,"start_character":5,"end_line":62,"end_character":17},"updated":"2016-01-23 00:34:07.000000000","message":"This concerns me.  That out mean 1/N HTTPS terminated packets would fail the session and need to renegotiate.  Currently we can\u0027t peer sync TLS sessions.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"f26766d43ae8e309d396868ecad1d8125c73108f","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"   - Consistent hashing can be used to provide some affinity and minimize"},{"line_number":59,"context_line":"     mapping changes when an Amphora is added or removed from the cluster."},{"line_number":60,"context_line":"     Even with consistent hashing it should be noted that at about 1/N of"},{"line_number":61,"context_line":"     the traffic will be re-routed (where N is the number of Amphorae in"},{"line_number":62,"context_line":"     the cluster)."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"   - Flow tracking can be used to provide full affinity. It is possible to"},{"line_number":65,"context_line":"     use Connection-Tracking for this (e.g., through Open-Flow or"}],"source_content_type":"text/x-rst","patch_set":5,"id":"da0c15f0_bbe7813f","line":62,"range":{"start_line":60,"start_character":5,"end_line":62,"end_character":17},"in_reply_to":"9a68dd71_4775caf7","updated":"2016-03-25 01:16:19.000000000","message":"it\u0027s actually  K/N (will correct it in the next patch), K being the number of keys and N being the number of nodes. I think its the limitation of this hashing algorithm.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":65,"context_line":"     use Connection-Tracking for this (e.g., through Open-Flow or"},{"line_number":66,"context_line":"     IPtables); however, this might not scale well. Alternatively, the"},{"line_number":67,"context_line":"     Distributor can use a mechanism similar to sticky-tables to track"},{"line_number":68,"context_line":"     the flows."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"   - Per the agreement at the Mitaka mid-cycle, the default affinity shall"},{"line_number":71,"context_line":"     be based on source-IP only and consistent hashing; however,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_e2df0c38","line":68,"updated":"2016-01-23 00:34:07.000000000","message":"We should investigate other OpenStack flow classifiers (SFC, neutron, neutron-fwaas) and see if there is code to leverage here.  I\u0027m not sure IPTables is the best solution here.\nThe DPDK also has some very well implemented hashing libraries used for forwarding/classification that could be useful here.\nhttp://dpdk.org/doc/guides/prog_guide/hash_lib.html#hash-library","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3bd68e9ffe8ea2888e05e0bba319ec1601550f5b","unresolved":false,"context_lines":[{"line_number":65,"context_line":"     use Connection-Tracking for this (e.g., through Open-Flow or"},{"line_number":66,"context_line":"     IPtables); however, this might not scale well. Alternatively, the"},{"line_number":67,"context_line":"     Distributor can use a mechanism similar to sticky-tables to track"},{"line_number":68,"context_line":"     the flows."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"   - Per the agreement at the Mitaka mid-cycle, the default affinity shall"},{"line_number":71,"context_line":"     be based on source-IP only and consistent hashing; however,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_a801f339","line":68,"in_reply_to":"9a68dd71_2d38b5ee","updated":"2016-01-23 02:44:53.000000000","message":"https://github.com/openstack/networking-sfc/blob/master/networking_sfc/extensions/flowclassifier.py","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"f26766d43ae8e309d396868ecad1d8125c73108f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"     use Connection-Tracking for this (e.g., through Open-Flow or"},{"line_number":66,"context_line":"     IPtables); however, this might not scale well. Alternatively, the"},{"line_number":67,"context_line":"     Distributor can use a mechanism similar to sticky-tables to track"},{"line_number":68,"context_line":"     the flows."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"   - Per the agreement at the Mitaka mid-cycle, the default affinity shall"},{"line_number":71,"context_line":"     be based on source-IP only and consistent hashing; however,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"da0c15f0_dbd4f548","line":68,"in_reply_to":"9a68dd71_a801f339","updated":"2016-03-25 01:16:19.000000000","message":"investigating the stuff. Will update to include this info.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"15013c4de3385f95c5381ca172c8af15a10f5aba","unresolved":false,"context_lines":[{"line_number":65,"context_line":"     use Connection-Tracking for this (e.g., through Open-Flow or"},{"line_number":66,"context_line":"     IPtables); however, this might not scale well. Alternatively, the"},{"line_number":67,"context_line":"     Distributor can use a mechanism similar to sticky-tables to track"},{"line_number":68,"context_line":"     the flows."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"   - Per the agreement at the Mitaka mid-cycle, the default affinity shall"},{"line_number":71,"context_line":"     be based on source-IP only and consistent hashing; however,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_2d38b5ee","line":68,"in_reply_to":"9a68dd71_e2df0c38","updated":"2016-01-23 01:51:35.000000000","message":"Flow classifiers so far are only a concept in the DB (common classifiers) but we should be able to take advantage of packages marked with classifiers since a (potential) inspection layer could mark the packets eventually.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"15013c4de3385f95c5381ca172c8af15a10f5aba","unresolved":false,"context_lines":[{"line_number":68,"context_line":"     the flows."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"   - Per the agreement at the Mitaka mid-cycle, the default affinity shall"},{"line_number":71,"context_line":"     be based on source-IP only and consistent hashing; however,"},{"line_number":72,"context_line":"     abstraction will be used to allow other implementations at a later"},{"line_number":73,"context_line":"     time."},{"line_number":74,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_8d2761c9","line":71,"range":{"start_line":71,"start_character":17,"end_line":71,"end_character":23},"updated":"2016-01-23 01:51:35.000000000","message":"source-ip/port -- I think we need port as well","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"f26766d43ae8e309d396868ecad1d8125c73108f","unresolved":false,"context_lines":[{"line_number":68,"context_line":"     the flows."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"   - Per the agreement at the Mitaka mid-cycle, the default affinity shall"},{"line_number":71,"context_line":"     be based on source-IP only and consistent hashing; however,"},{"line_number":72,"context_line":"     abstraction will be used to allow other implementations at a later"},{"line_number":73,"context_line":"     time."},{"line_number":74,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"da0c15f0_1b466d23","line":71,"range":{"start_line":71,"start_character":17,"end_line":71,"end_character":23},"in_reply_to":"9a68dd71_8d2761c9","updated":"2016-03-25 01:16:19.000000000","message":"will update the correct info.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":71,"context_line":"     be based on source-IP only and consistent hashing; however,"},{"line_number":72,"context_line":"     abstraction will be used to allow other implementations at a later"},{"line_number":73,"context_line":"     time."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"4. High-Availability"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  - The Distributor should be highly-available (which is the main"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_4d9de964","line":74,"updated":"2016-01-23 02:38:02.000000000","message":"We also need to talk about draining here.  I would expect there to be some method for draining connections from the amphora.  Something like the ability to set a zero weight and not direct new connections to the same amphora.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"787809474be4d8a9d1bf3ec0acecb68b9e801456","unresolved":false,"context_lines":[{"line_number":71,"context_line":"     be based on source-IP only and consistent hashing; however,"},{"line_number":72,"context_line":"     abstraction will be used to allow other implementations at a later"},{"line_number":73,"context_line":"     time."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"4. High-Availability"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  - The Distributor should be highly-available (which is the main"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_9f5462fe","line":74,"in_reply_to":"9a68dd71_4d9de964","updated":"2016-01-23 04:14:01.000000000","message":"I have a feeling this will come after an initial build of the distributor.  Doesn\u0027t hurt to add it here though as I see this spec being implemented with many reviews and features.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"f26766d43ae8e309d396868ecad1d8125c73108f","unresolved":false,"context_lines":[{"line_number":71,"context_line":"     be based on source-IP only and consistent hashing; however,"},{"line_number":72,"context_line":"     abstraction will be used to allow other implementations at a later"},{"line_number":73,"context_line":"     time."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"4. High-Availability"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  - The Distributor should be highly-available (which is the main"}],"source_content_type":"text/x-rst","patch_set":5,"id":"da0c15f0_db519510","line":74,"in_reply_to":"9a68dd71_9f5462fe","updated":"2016-03-25 01:16:19.000000000","message":"@ johnsom: do we need to cover this part in this spec? as we were thinking of keeping the scale up and scale down in another spec?","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"4. High-Availability"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  - The Distributor should be highly-available (which is the main"},{"line_number":78,"context_line":"    motivation for the active-active topology)."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - A mechanism similar to the VRRP can be used."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_028a601b","line":77,"updated":"2016-01-23 00:34:07.000000000","message":"I think HA being the main motivation for A/A is an opinion.  Others might consider scale the main motivation.  Maybe remove the comment?","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"f26766d43ae8e309d396868ecad1d8125c73108f","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"4. High-Availability"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  - The Distributor should be highly-available (which is the main"},{"line_number":78,"context_line":"    motivation for the active-active topology)."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - A mechanism similar to the VRRP can be used."}],"source_content_type":"text/x-rst","patch_set":5,"id":"da0c15f0_1b5dcde9","line":77,"in_reply_to":"9a68dd71_028a601b","updated":"2016-03-25 01:16:19.000000000","message":"will do. I was thinking of adding a separate spec for HA, the way its done in case of amphoras. Please do let  me know about your thoughts.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":77,"context_line":"  - The Distributor should be highly-available (which is the main"},{"line_number":78,"context_line":"    motivation for the active-active topology)."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - A mechanism similar to the VRRP can be used."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"  - As a first step, the initial implementation will use a single"},{"line_number":83,"context_line":"    Distributor instance (i.e., will not be highly-available)."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_6271dc43","line":80,"updated":"2016-01-23 00:34:07.000000000","message":"VRRP would work nicely here.  I would consider VRRP the reference HA solution as we already use it in the project.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"787809474be4d8a9d1bf3ec0acecb68b9e801456","unresolved":false,"context_lines":[{"line_number":77,"context_line":"  - The Distributor should be highly-available (which is the main"},{"line_number":78,"context_line":"    motivation for the active-active topology)."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - A mechanism similar to the VRRP can be used."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"  - As a first step, the initial implementation will use a single"},{"line_number":83,"context_line":"    Distributor instance (i.e., will not be highly-available)."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_bc14d44c","line":80,"in_reply_to":"9a68dd71_6271dc43","updated":"2016-01-23 04:14:01.000000000","message":"I can see the argument that implementing HA of the distributor is up to the operator, much like it will be for the octavia api, controller, health manager, etc.  The distributor would have to be built in such a way that allows this though (stateless, shared-state, etc), then again that might be driver specific.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":82,"context_line":"  - As a first step, the initial implementation will use a single"},{"line_number":83,"context_line":"    Distributor instance (i.e., will not be highly-available)."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"5. Network"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":" - (@TODO Does the multi-tenant Distributor have enough access rights to be"},{"line_number":88,"context_line":"   able to attach itself to the tenant\u0027s front-end network?)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_47b70a3a","line":85,"updated":"2016-01-23 00:34:07.000000000","message":"Can we also call out that the distributor implementation will support IPv4 and IPv6 addressing?","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"f26766d43ae8e309d396868ecad1d8125c73108f","unresolved":false,"context_lines":[{"line_number":82,"context_line":"  - As a first step, the initial implementation will use a single"},{"line_number":83,"context_line":"    Distributor instance (i.e., will not be highly-available)."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"5. Network"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":" - (@TODO Does the multi-tenant Distributor have enough access rights to be"},{"line_number":88,"context_line":"   able to attach itself to the tenant\u0027s front-end network?)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"da0c15f0_3b0ff1e2","line":85,"in_reply_to":"9a68dd71_47b70a3a","updated":"2016-03-25 01:16:19.000000000","message":"will do.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"787809474be4d8a9d1bf3ec0acecb68b9e801456","unresolved":false,"context_lines":[{"line_number":85,"context_line":"5. Network"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":" - (@TODO Does the multi-tenant Distributor have enough access rights to be"},{"line_number":88,"context_line":"   able to attach itself to the tenant\u0027s front-end network?)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"6. Security"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_df009a03","line":88,"updated":"2016-01-23 04:14:01.000000000","message":"if it is using a user with admin role to send commands to neutron, it will be able to attach itself to any tenant\u0027s network.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"f26766d43ae8e309d396868ecad1d8125c73108f","unresolved":false,"context_lines":[{"line_number":85,"context_line":"5. Network"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":" - (@TODO Does the multi-tenant Distributor have enough access rights to be"},{"line_number":88,"context_line":"   able to attach itself to the tenant\u0027s front-end network?)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"6. Security"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"da0c15f0_bb0301b8","line":88,"in_reply_to":"9a68dd71_df009a03","updated":"2016-03-25 01:16:19.000000000","message":"Noted.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"6. Security"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"  The Distributor is multi-tenant. Although each tenant has its own"},{"line_number":93,"context_line":"  front-end network, the Distributor is connected to all, which might"},{"line_number":94,"context_line":"  allow leaks between these networks. The rationale is two fold; first,"},{"line_number":95,"context_line":"  the Distributor should be considered as a trusted infrastructure"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_e29b8c64","line":92,"range":{"start_line":92,"start_character":2,"end_line":92,"end_character":33},"updated":"2016-01-23 00:34:07.000000000","message":"One implementation of the distributor is multi-tenant.  We need to keep a single tenant option available in the design.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"f26766d43ae8e309d396868ecad1d8125c73108f","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"6. Security"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"  The Distributor is multi-tenant. Although each tenant has its own"},{"line_number":93,"context_line":"  front-end network, the Distributor is connected to all, which might"},{"line_number":94,"context_line":"  allow leaks between these networks. The rationale is two fold; first,"},{"line_number":95,"context_line":"  the Distributor should be considered as a trusted infrastructure"}],"source_content_type":"text/x-rst","patch_set":5,"id":"da0c15f0_9b00bdac","line":92,"range":{"start_line":92,"start_character":2,"end_line":92,"end_character":33},"in_reply_to":"9a68dd71_df273ab4","updated":"2016-03-25 01:16:19.000000000","message":"ok.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"787809474be4d8a9d1bf3ec0acecb68b9e801456","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"6. Security"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"  The Distributor is multi-tenant. Although each tenant has its own"},{"line_number":93,"context_line":"  front-end network, the Distributor is connected to all, which might"},{"line_number":94,"context_line":"  allow leaks between these networks. The rationale is two fold; first,"},{"line_number":95,"context_line":"  the Distributor should be considered as a trusted infrastructure"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_df273ab4","line":92,"range":{"start_line":92,"start_character":2,"end_line":92,"end_character":33},"in_reply_to":"9a68dd71_e29b8c64","updated":"2016-01-23 04:14:01.000000000","message":"I wonder if we can have the driver determine single or multi-tenant.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"863366623b1628e7fdcfba39823114f8b26bfd46","unresolved":false,"context_lines":[{"line_number":99,"context_line":"  communication inside a tenant network. Some tenants may want their"},{"line_number":100,"context_line":"  loadbalancer\u0027s VIP to remain private and their front-end network to be"},{"line_number":101,"context_line":"  isolated. In these cases, in order to accomplish active-active for"},{"line_number":102,"context_line":"  this tenant we would need a separate dedicated Distributor instance. A"},{"line_number":103,"context_line":"  dedicated Distributor instance might consume too many resources per"},{"line_number":104,"context_line":"  VIP, so should generally be avoided unless it is an absolute must."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_82cc106b","line":104,"range":{"start_line":102,"start_character":71,"end_line":104,"end_character":68},"updated":"2016-01-23 00:34:07.000000000","message":"Hmmm, this seems again like opinion and I\u0027m not sure it should be included in the spec.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"f26766d43ae8e309d396868ecad1d8125c73108f","unresolved":false,"context_lines":[{"line_number":99,"context_line":"  communication inside a tenant network. Some tenants may want their"},{"line_number":100,"context_line":"  loadbalancer\u0027s VIP to remain private and their front-end network to be"},{"line_number":101,"context_line":"  isolated. In these cases, in order to accomplish active-active for"},{"line_number":102,"context_line":"  this tenant we would need a separate dedicated Distributor instance. A"},{"line_number":103,"context_line":"  dedicated Distributor instance might consume too many resources per"},{"line_number":104,"context_line":"  VIP, so should generally be avoided unless it is an absolute must."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"da0c15f0_1b2b0d32","line":104,"range":{"start_line":102,"start_character":71,"end_line":104,"end_character":68},"in_reply_to":"9a68dd71_6d01cd05","updated":"2016-03-25 01:16:19.000000000","message":"Noted.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"15013c4de3385f95c5381ca172c8af15a10f5aba","unresolved":false,"context_lines":[{"line_number":99,"context_line":"  communication inside a tenant network. Some tenants may want their"},{"line_number":100,"context_line":"  loadbalancer\u0027s VIP to remain private and their front-end network to be"},{"line_number":101,"context_line":"  isolated. In these cases, in order to accomplish active-active for"},{"line_number":102,"context_line":"  this tenant we would need a separate dedicated Distributor instance. A"},{"line_number":103,"context_line":"  dedicated Distributor instance might consume too many resources per"},{"line_number":104,"context_line":"  VIP, so should generally be avoided unless it is an absolute must."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_6d01cd05","line":104,"range":{"start_line":102,"start_character":71,"end_line":104,"end_character":68},"in_reply_to":"9a68dd71_82cc106b","updated":"2016-01-23 01:51:35.000000000","message":"+1 sounds like opinion to me. If we use an SDN based distributor load shouldn\u0027t be an issue --","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"5d06576680d3db7e15a4a43d35bc9cd0a31bd546","unresolved":false,"context_lines":[{"line_number":90,"context_line":"6. Security"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"  The Distributor is multi-tenant. Although each tenant has its own"},{"line_number":93,"context_line":"  front-end network, the Distributor is connected to all, which might"},{"line_number":94,"context_line":"  allow leaks between these networks. The rationale is two fold; first,"},{"line_number":95,"context_line":"  the Distributor should be considered as a trusted infrastructure"},{"line_number":96,"context_line":"  component; second, all traffic is external traffic before it reaches"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba0121b8_7bda1b19","line":93,"updated":"2016-04-01 19:15:56.000000000","message":"Some deployment put the LB VIP into the tenants network leaving it to the tenant to assign a FIP for external routing. Now, with this implementation of a shared distributor in such a use case the distributor would need to connect to all tenant network using amphora which seems unrealistic unless you start routing -- soI would add that as an additional use case for per tenant distributors.","commit_id":"0ce3f4d57703c895d13625b49f6aafd5d3d02c96"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"0838c2b3bae5659a8de66e7cfa5729234451eb6a","unresolved":false,"context_lines":[{"line_number":90,"context_line":"6. Security"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"  The Distributor is multi-tenant. Although each tenant has its own"},{"line_number":93,"context_line":"  front-end network, the Distributor is connected to all, which might"},{"line_number":94,"context_line":"  allow leaks between these networks. The rationale is two fold; first,"},{"line_number":95,"context_line":"  the Distributor should be considered as a trusted infrastructure"},{"line_number":96,"context_line":"  component; second, all traffic is external traffic before it reaches"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba0121b8_a7d0fff8","line":93,"in_reply_to":"ba0121b8_7bda1b19","updated":"2016-04-03 07:48:39.000000000","message":"From the tenant network perspective, the Distributor is like an Amphora -- it should \"own\" the VIP port and attach to the tenant front-end. FIP assignment should work as it does for current single Amphora topology. The other active-active Amphorae will have to attach to the tenant front-end as well (like VRRP case), but do not have to participate in any routing -- just forwarding from the Distributor. \n\nThe Security issue here is that one Distributor attaches to several networks (each through its own port). From a network perspective, this probably can be done now to create a shared amphora that listens on several VIPs, by plugging several ports to the same Amphora (not that we want to do so). \n\nCan you explain more why you think attaching one Distributor to all networks is unrealistic. It seems like the natural approach for a HW-based Distributor and seems possible with an SDN-based SW Distributor. \n\nWill add to new version of doc to clarify this more.","commit_id":"0ce3f4d57703c895d13625b49f6aafd5d3d02c96"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"f1d526487050831bf2af4f80a6f427a8e6fcd5a5","unresolved":false,"context_lines":[{"line_number":90,"context_line":"6. Security"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"  The Distributor is multi-tenant. Although each tenant has its own"},{"line_number":93,"context_line":"  front-end network, the Distributor is connected to all, which might"},{"line_number":94,"context_line":"  allow leaks between these networks. The rationale is two fold; first,"},{"line_number":95,"context_line":"  the Distributor should be considered as a trusted infrastructure"},{"line_number":96,"context_line":"  component; second, all traffic is external traffic before it reaches"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba0121b8_c7f8934c","line":93,"in_reply_to":"ba0121b8_a7d0fff8","updated":"2016-04-03 08:56:19.000000000","message":"There is some port limit in Neutron for a single network. So depending on your network topology you might run into that - common ways to combat that is setting up multiple networks and routing between them or a provider net Realistically most operators would probably use a provider net anyway to combat scaling issues... but bringing that up anyway.","commit_id":"0ce3f4d57703c895d13625b49f6aafd5d3d02c96"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"d0efcdca0ac86bedb0cf314059d6f743fb3fc190","unresolved":false,"context_lines":[{"line_number":90,"context_line":"6. Security"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"  The Distributor is multi-tenant. Although each tenant has its own"},{"line_number":93,"context_line":"  front-end network, the Distributor is connected to all, which might"},{"line_number":94,"context_line":"  allow leaks between these networks. The rationale is two fold; first,"},{"line_number":95,"context_line":"  the Distributor should be considered as a trusted infrastructure"},{"line_number":96,"context_line":"  component; second, all traffic is external traffic before it reaches"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba0121b8_c51c0bc4","line":93,"in_reply_to":"ba0121b8_c7f8934c","updated":"2016-04-03 14:37:31.000000000","message":"Agree. Another workaround would be to add a new (shared) distributor whenever the limit is reached; i.e., each distributor will support several VIPs but the number of VIPs per distributor will not exceed Neutron limitations. \n\nWill add this to new version of doc. \n\nBTW, almost done working on major rewrite of Distributor doc, trying to capture and address all comments -- holding back on updating the current patch set as to finish approving the topology doc first (so we can finally start uploading some code).","commit_id":"0ce3f4d57703c895d13625b49f6aafd5d3d02c96"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":103,"context_line":"              └───────────────────────┘"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* In the above diagram, several tenants (A, B, C, ...) share the"},{"line_number":107,"context_line":"  Distributor, yet the Amphorae, and the front- and back-end (tenant)"},{"line_number":108,"context_line":"  networks are not shared between tenants."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"* The Distributor acts as a (one-legged) router, listening on each"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_793d3b2a","line":107,"range":{"start_line":106,"start_character":55,"end_line":107,"end_character":13},"updated":"2016-06-01 18:52:32.000000000","message":"I think the topology should assume that there are multiple distributors that may or may not be shared between tenants. The case of a single distributor is just a specialized case, and I\u0027d like to make sure our logic for dealing with the distributor in the code does NOT make the assumption there\u0027s only one of them. As such, I would like to see this spec updated according to this requirement.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"1a669fd04338b40ea2dd49b3b195bfc176404117","unresolved":false,"context_lines":[{"line_number":103,"context_line":"              └───────────────────────┘"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* In the above diagram, several tenants (A, B, C, ...) share the"},{"line_number":107,"context_line":"  Distributor, yet the Amphorae, and the front- and back-end (tenant)"},{"line_number":108,"context_line":"  networks are not shared between tenants."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"* The Distributor acts as a (one-legged) router, listening on each"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1ac06dbe_21e2822f","line":107,"range":{"start_line":106,"start_character":55,"end_line":107,"end_character":12},"updated":"2016-08-23 15:14:31.000000000","message":"We agreed that it will not be shared in that time","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"9689fcd68e047cb7c583c8835512ef22e15c1a1b","unresolved":false,"context_lines":[{"line_number":103,"context_line":"              └───────────────────────┘"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* In the above diagram, several tenants (A, B, C, ...) share the"},{"line_number":107,"context_line":"  Distributor, yet the Amphorae, and the front- and back-end (tenant)"},{"line_number":108,"context_line":"  networks are not shared between tenants."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"* The Distributor acts as a (one-legged) router, listening on each"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1ac06dbe_e411935e","line":107,"range":{"start_line":106,"start_character":55,"end_line":107,"end_character":12},"in_reply_to":"1ac06dbe_21e2822f","updated":"2016-08-23 16:28:52.000000000","message":"The spec should not preclude a shared Distributor.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":103,"context_line":"              └───────────────────────┘"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* In the above diagram, several tenants (A, B, C, ...) share the"},{"line_number":107,"context_line":"  Distributor, yet the Amphorae, and the front- and back-end (tenant)"},{"line_number":108,"context_line":"  networks are not shared between tenants."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"* The Distributor acts as a (one-legged) router, listening on each"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_1e496031","line":107,"range":{"start_line":106,"start_character":55,"end_line":107,"end_character":13},"in_reply_to":"7aa08908_d221124f","updated":"2016-06-09 14:54:50.000000000","message":"Agree. see reply to Stephen\u0027s comment.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":103,"context_line":"              └───────────────────────┘"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* In the above diagram, several tenants (A, B, C, ...) share the"},{"line_number":107,"context_line":"  Distributor, yet the Amphorae, and the front- and back-end (tenant)"},{"line_number":108,"context_line":"  networks are not shared between tenants."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"* The Distributor acts as a (one-legged) router, listening on each"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_4318fa1d","line":107,"range":{"start_line":106,"start_character":55,"end_line":107,"end_character":13},"in_reply_to":"9abb7d3a_793d3b2a","updated":"2016-06-09 14:54:50.000000000","message":"Agree. See \"Distributor Sharing\" section below. Added reference here to that section + clarification comments there.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"6d2c0a48a0fdeb78dbcd3589d179deeade03e2bc","unresolved":false,"context_lines":[{"line_number":103,"context_line":"              └───────────────────────┘"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* In the above diagram, several tenants (A, B, C, ...) share the"},{"line_number":107,"context_line":"  Distributor, yet the Amphorae, and the front- and back-end (tenant)"},{"line_number":108,"context_line":"  networks are not shared between tenants."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"* The Distributor acts as a (one-legged) router, listening on each"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_d221124f","line":107,"range":{"start_line":106,"start_character":55,"end_line":107,"end_character":13},"in_reply_to":"9abb7d3a_793d3b2a","updated":"2016-06-07 13:31:43.000000000","message":"What stephen is saying makes sense to me.\n\nOtherwise the specific distributor can become a bottleneck.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  Distributor, hence any traffic sent for each VIP is received by the"},{"line_number":116,"context_line":"  Distributor (and forwarded to an appropriate Amphora)."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"* ARP is disabled on all the Amphorae for the VIP interface."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* The Distributor distributes the traffic of each VIP to an Amphora in the"},{"line_number":121,"context_line":"  corresponding load-balancer Cluster."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_19618fa9","line":118,"range":{"start_line":118,"start_character":2,"end_line":118,"end_character":59},"updated":"2016-06-01 18:52:32.000000000","message":"I have implemented this in the past by putting the VIP ip address on a \u0027dummy\u0027 interface or loopback so that the local machine\u0027s processes can bind to the IP and / or respond to packets, but it won\u0027t ever ARP. It\u0027s important that the non-VIP IP address the amphorae have on the front-end networks do respond to ARP so the distributor can find them. XD )","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"6d2c0a48a0fdeb78dbcd3589d179deeade03e2bc","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  Distributor, hence any traffic sent for each VIP is received by the"},{"line_number":116,"context_line":"  Distributor (and forwarded to an appropriate Amphora)."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"* ARP is disabled on all the Amphorae for the VIP interface."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* The Distributor distributes the traffic of each VIP to an Amphora in the"},{"line_number":121,"context_line":"  corresponding load-balancer Cluster."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_32933651","line":118,"range":{"start_line":118,"start_character":2,"end_line":118,"end_character":59},"in_reply_to":"7aa08908_031b951c","updated":"2016-06-07 13:31:43.000000000","message":"I\u0027d say a feature available via amphora rest interface. It just depends on how you configure the interfaces.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  Distributor, hence any traffic sent for each VIP is received by the"},{"line_number":116,"context_line":"  Distributor (and forwarded to an appropriate Amphora)."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"* ARP is disabled on all the Amphorae for the VIP interface."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* The Distributor distributes the traffic of each VIP to an Amphora in the"},{"line_number":121,"context_line":"  corresponding load-balancer Cluster."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_6907d71c","line":118,"range":{"start_line":118,"start_character":2,"end_line":118,"end_character":59},"in_reply_to":"7aa08908_031b951c","updated":"2016-06-09 14:54:50.000000000","message":"We probably don\u0027t want a different image. The best way would be to add a flag to the post-plug-vip code to disable arp on creation.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":13438,"name":"Kobi Samoray","email":"kobi.samoray@broadcom.com","username":"ksamoray"},"change_message_id":"b87d956642be5682febf84b9f5f62d24363b837b","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  Distributor, hence any traffic sent for each VIP is received by the"},{"line_number":116,"context_line":"  Distributor (and forwarded to an appropriate Amphora)."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"* ARP is disabled on all the Amphorae for the VIP interface."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* The Distributor distributes the traffic of each VIP to an Amphora in the"},{"line_number":121,"context_line":"  corresponding load-balancer Cluster."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_031b951c","line":118,"range":{"start_line":118,"start_character":2,"end_line":118,"end_character":59},"in_reply_to":"9abb7d3a_19618fa9","updated":"2016-06-06 12:23:53.000000000","message":"@Stephen, does that require a feature in Amphora - e.g set VIP to non-ARP interface? Or a special image for A+A Amphora? Should that be addressed in this spec?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  Distributor, hence any traffic sent for each VIP is received by the"},{"line_number":116,"context_line":"  Distributor (and forwarded to an appropriate Amphora)."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"* ARP is disabled on all the Amphorae for the VIP interface."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* The Distributor distributes the traffic of each VIP to an Amphora in the"},{"line_number":121,"context_line":"  corresponding load-balancer Cluster."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_29782fc4","line":118,"range":{"start_line":118,"start_character":2,"end_line":118,"end_character":59},"in_reply_to":"9abb7d3a_19618fa9","updated":"2016-06-09 14:54:50.000000000","message":"I think that at a spec level it is good enough. As for implementation -- I agree with putting the VIP on the loopback -- this is the preferred way for turning arp off just for the VIP. The current code just turns arp off for all interfaces, which allows us to use the same network configuration as regular a Amphora. The Distributor is configured directly (SDN-like) so does not need arps from the Amphorae.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"1a669fd04338b40ea2dd49b3b195bfc176404117","unresolved":false,"context_lines":[{"line_number":125,"context_line":"  1. Internet clients access a tenant service through an externally"},{"line_number":126,"context_line":"     visible floating-IP (IPv4 or IPv6)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"  2. The GW router (shared) maps the floating IP into a loadbalancer\u0027s"},{"line_number":129,"context_line":"     internal VIP on the tenant\u0027s front-end network"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"  3. (1st packet to VIP only) the GW send an ``arp`` request on VIP"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1ac06dbe_813a5697","line":128,"range":{"start_line":128,"start_character":20,"end_line":128,"end_character":26},"updated":"2016-08-23 15:14:31.000000000","message":"Not any more","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":145,"context_line":"     active-active)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  7. The outgoing response packets from the Amphora are forwarded directly"},{"line_number":148,"context_line":"     to the GW router (that is, it does not pass through the Distributor)."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Affinity of Flows to Amphorae"},{"line_number":151,"context_line":"-----------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_390e138c","line":148,"range":{"start_line":148,"start_character":0,"end_line":148,"end_character":74},"updated":"2016-06-01 18:52:32.000000000","message":"Yay, direct return! +1 to this.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":162,"context_line":"  affinity level."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"- Since the Distributor is L3 and the \"heavy lifting\" is expected to be"},{"line_number":165,"context_line":"  done by the Amphorae, there are two practical affinity alternatives:"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"  *Source IP and source port*"},{"line_number":168,"context_line":"    In this mode, the Distributor must always send packets from the same"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_393d73dd","line":165,"range":{"start_line":165,"start_character":0,"end_line":165,"end_character":70},"updated":"2016-06-01 18:52:32.000000000","message":"Please change all the stuff after the comma to: \"this specification proposes implementing two practical affinity alternatives. Other affinity alternatives may be implemented at a later time.\"","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":162,"context_line":"  affinity level."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"- Since the Distributor is L3 and the \"heavy lifting\" is expected to be"},{"line_number":165,"context_line":"  done by the Amphorae, there are two practical affinity alternatives:"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"  *Source IP and source port*"},{"line_number":168,"context_line":"    In this mode, the Distributor must always send packets from the same"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_544c3270","line":165,"range":{"start_line":165,"start_character":0,"end_line":165,"end_character":70},"in_reply_to":"9abb7d3a_393d73dd","updated":"2016-06-09 14:54:50.000000000","message":"Done","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"6d2c0a48a0fdeb78dbcd3589d179deeade03e2bc","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    large workloads that have the same source IP (e.g., workload behind a"},{"line_number":192,"context_line":"    single nat or proxy)."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    **Note on TLS implications**:"},{"line_number":195,"context_line":"      In some (typical) TLS sessions the additional load incurred for each"},{"line_number":196,"context_line":"      new session is significantly larger than the load incurred for each"},{"line_number":197,"context_line":"      new connection on the same session; namely, the total load on each"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_923caae3","line":194,"updated":"2016-06-07 13:31:43.000000000","message":"very good point for using ip source by default.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":231,"context_line":"    can run on a VM. Thus, can be created and managed by Octavia similarly"},{"line_number":232,"context_line":"    to creation and management of Amphora VMs."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"  - OpenFlow rules are supported by several HW switches, so a the same"},{"line_number":235,"context_line":"    control plane can be used for both SW and HW implementations."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"* Outline of Rules"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_3c43a114","line":234,"range":{"start_line":234,"start_character":4,"end_line":234,"end_character":55},"updated":"2016-06-01 18:52:32.000000000","message":"Is this the reason you choose OpenFlow over, say, Linux LVS?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":231,"context_line":"    can run on a VM. Thus, can be created and managed by Octavia similarly"},{"line_number":232,"context_line":"    to creation and management of Amphora VMs."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"  - OpenFlow rules are supported by several HW switches, so a the same"},{"line_number":235,"context_line":"    control plane can be used for both SW and HW implementations."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"* Outline of Rules"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_beb80cc9","line":234,"range":{"start_line":234,"start_character":4,"end_line":234,"end_character":55},"in_reply_to":"7aa08908_ed026f0a","updated":"2016-06-09 14:54:50.000000000","message":"Agree. The Distributor is driver-based, so other implementations LVS/DPDK can be added.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"6d2c0a48a0fdeb78dbcd3589d179deeade03e2bc","unresolved":false,"context_lines":[{"line_number":231,"context_line":"    can run on a VM. Thus, can be created and managed by Octavia similarly"},{"line_number":232,"context_line":"    to creation and management of Amphora VMs."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"  - OpenFlow rules are supported by several HW switches, so a the same"},{"line_number":235,"context_line":"    control plane can be used for both SW and HW implementations."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"* Outline of Rules"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_ed026f0a","line":234,"range":{"start_line":234,"start_character":4,"end_line":234,"end_character":55},"in_reply_to":"9abb7d3a_3c43a114","updated":"2016-06-07 13:31:43.000000000","message":"May be this could be made driver-based ? , for example, DPDK could also handle very efficiently this without an outstanding amount of work.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":231,"context_line":"    can run on a VM. Thus, can be created and managed by Octavia similarly"},{"line_number":232,"context_line":"    to creation and management of Amphora VMs."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"  - OpenFlow rules are supported by several HW switches, so a the same"},{"line_number":235,"context_line":"    control plane can be used for both SW and HW implementations."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"* Outline of Rules"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_1e93205c","line":234,"range":{"start_line":234,"start_character":4,"end_line":234,"end_character":55},"in_reply_to":"9abb7d3a_3c43a114","updated":"2016-06-09 14:54:50.000000000","message":"Yes, although LVS is a viable option that is used elsewhere in similar setups.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":232,"context_line":"    to creation and management of Amphora VMs."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"  - OpenFlow rules are supported by several HW switches, so a the same"},{"line_number":235,"context_line":"    control plane can be used for both SW and HW implementations."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"* Outline of Rules"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_5c1f855a","line":235,"range":{"start_line":235,"start_character":0,"end_line":235,"end_character":65},"updated":"2016-06-01 18:52:32.000000000","message":"All the more reason not to assume a single distributor is being used.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":232,"context_line":"    to creation and management of Amphora VMs."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"  - OpenFlow rules are supported by several HW switches, so a the same"},{"line_number":235,"context_line":"    control plane can be used for both SW and HW implementations."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"* Outline of Rules"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_b124bab2","line":235,"range":{"start_line":235,"start_character":0,"end_line":235,"end_character":65},"in_reply_to":"9abb7d3a_5c1f855a","updated":"2016-06-09 14:54:50.000000000","message":"Agree.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"6d2c0a48a0fdeb78dbcd3589d179deeade03e2bc","unresolved":false,"context_lines":[{"line_number":232,"context_line":"    to creation and management of Amphora VMs."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"  - OpenFlow rules are supported by several HW switches, so a the same"},{"line_number":235,"context_line":"    control plane can be used for both SW and HW implementations."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"* Outline of Rules"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_2d647747","line":235,"range":{"start_line":235,"start_character":0,"end_line":235,"end_character":65},"in_reply_to":"9abb7d3a_5c1f855a","updated":"2016-06-07 13:31:43.000000000","message":"Correct.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":245,"context_line":"    of the ``bucket``. The hash can be set up to use different fields,"},{"line_number":246,"context_line":"    including by source IP only (default) and by source IP and source port."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"  - All buckets route traffic back on the in-port. This ensures that the"},{"line_number":249,"context_line":"    same front-end network is used (i.e., the Distributor does not route"},{"line_number":250,"context_line":"    between interfaces and does not mix traffic of different tenants)."},{"line_number":251,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_bce1512c","line":248,"range":{"start_line":248,"start_character":0,"end_line":248,"end_character":72},"updated":"2016-06-01 18:52:32.000000000","message":"Are you describing direct return here? (This paragraph is awkward-- trying to understand what you\u0027re describing here.)","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":245,"context_line":"    of the ``bucket``. The hash can be set up to use different fields,"},{"line_number":246,"context_line":"    including by source IP only (default) and by source IP and source port."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"  - All buckets route traffic back on the in-port. This ensures that the"},{"line_number":249,"context_line":"    same front-end network is used (i.e., the Distributor does not route"},{"line_number":250,"context_line":"    between interfaces and does not mix traffic of different tenants)."},{"line_number":251,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_91b9bece","line":248,"range":{"start_line":248,"start_character":0,"end_line":248,"end_character":72},"in_reply_to":"9abb7d3a_bce1512c","updated":"2016-06-09 14:54:50.000000000","message":"No. This is just saying that although the distributor may be connected to several networks (each LB VIP has a unique Distributor port), in never routes between those networks, since it only sends traffic back on the port it came from.\nChanged wording to clarify.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"* Handling Amphora failure"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"  - Initial implementation will assume a fixed size for each cluster (no"},{"line_number":268,"context_line":"    elasticity). The hashing will be \"consistent\" by virtue of never"},{"line_number":269,"context_line":"    changing the number of ``buckets``. If the cluster size is changed on"},{"line_number":270,"context_line":"    the fly (there should not be an API to do so) then there are no"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_3cad619b","line":267,"range":{"start_line":267,"start_character":41,"end_line":267,"end_character":51},"updated":"2016-06-01 18:52:32.000000000","message":"How is the fixed size determined? Configuration file for now?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"d5f79d10ef60c14c494c3ac43f7e3b2ac28831b7","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"* Handling Amphora failure"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"  - Initial implementation will assume a fixed size for each cluster (no"},{"line_number":268,"context_line":"    elasticity). The hashing will be \"consistent\" by virtue of never"},{"line_number":269,"context_line":"    changing the number of ``buckets``. If the cluster size is changed on"},{"line_number":270,"context_line":"    the fly (there should not be an API to do so) then there are no"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_78660abc","line":267,"range":{"start_line":267,"start_character":41,"end_line":267,"end_character":51},"in_reply_to":"7aa08908_714a3c29","updated":"2016-06-13 21:42:54.000000000","message":"add/delete lb from cluster can be used at the time of amp failover ?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"74c6227b6eaec882519e6d54b32f24996d63a32f","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"* Handling Amphora failure"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"  - Initial implementation will assume a fixed size for each cluster (no"},{"line_number":268,"context_line":"    elasticity). The hashing will be \"consistent\" by virtue of never"},{"line_number":269,"context_line":"    changing the number of ``buckets``. If the cluster size is changed on"},{"line_number":270,"context_line":"    the fly (there should not be an API to do so) then there are no"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_5c7e8de4","line":267,"range":{"start_line":267,"start_character":41,"end_line":267,"end_character":51},"in_reply_to":"7aa08908_78660abc","updated":"2016-06-14 10:27:34.000000000","message":"Yes. Add/remove is used during failover.\nWe suggest a simple, generic add/remove API for the Distributor, so we can add more configuration later (e.g., support growing/shrinking the cluster).","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"* Handling Amphora failure"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"  - Initial implementation will assume a fixed size for each cluster (no"},{"line_number":268,"context_line":"    elasticity). The hashing will be \"consistent\" by virtue of never"},{"line_number":269,"context_line":"    changing the number of ``buckets``. If the cluster size is changed on"},{"line_number":270,"context_line":"    the fly (there should not be an API to do so) then there are no"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_714a3c29","line":267,"range":{"start_line":267,"start_character":41,"end_line":267,"end_character":51},"in_reply_to":"7aa08908_f142c267","updated":"2016-06-09 23:03:27.000000000","message":"You\u0027re talking about stable size of cluster but you\u0027re adding method to add/delete LB from cluster? Its weird","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"* Handling Amphora failure"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"  - Initial implementation will assume a fixed size for each cluster (no"},{"line_number":268,"context_line":"    elasticity). The hashing will be \"consistent\" by virtue of never"},{"line_number":269,"context_line":"    changing the number of ``buckets``. If the cluster size is changed on"},{"line_number":270,"context_line":"    the fly (there should not be an API to do so) then there are no"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_f142c267","line":267,"range":{"start_line":267,"start_character":41,"end_line":267,"end_character":51},"in_reply_to":"9abb7d3a_3cad619b","updated":"2016-06-09 14:54:50.000000000","message":"yes. The main point here is not how to get this parameter but that it is fixed for the lifetime of an LB. The initial N+1 implementation does not support any elasticity, so does not need consistent hashing.  The cluster size will be initially take from configuration, but we may decide later to allow cluster size to be set per LB (eg via flavors).","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":280,"context_line":"  - This implementation is very similar to Active-Standby fail-over. There"},{"line_number":281,"context_line":"    will be a standby Amphora that can server traffic in case of failure."},{"line_number":282,"context_line":"    The differences from Active-Standby is that a single Amphora acts as a"},{"line_number":283,"context_line":"    standby for multiple ones; fail-over re-routing is handled through the"},{"line_number":284,"context_line":"    Distributor; and a whole cluster of Amphorae is active concurrently, to"},{"line_number":285,"context_line":"    enable support of large workloads."},{"line_number":286,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_bceb11db","line":283,"range":{"start_line":283,"start_character":16,"end_line":283,"end_character":24},"updated":"2016-06-01 18:52:32.000000000","message":"And VRRP is not used on the amphorae","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":280,"context_line":"  - This implementation is very similar to Active-Standby fail-over. There"},{"line_number":281,"context_line":"    will be a standby Amphora that can server traffic in case of failure."},{"line_number":282,"context_line":"    The differences from Active-Standby is that a single Amphora acts as a"},{"line_number":283,"context_line":"    standby for multiple ones; fail-over re-routing is handled through the"},{"line_number":284,"context_line":"    Distributor; and a whole cluster of Amphorae is active concurrently, to"},{"line_number":285,"context_line":"    enable support of large workloads."},{"line_number":286,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_3440b835","line":283,"range":{"start_line":283,"start_character":16,"end_line":283,"end_character":24},"in_reply_to":"9abb7d3a_bceb11db","updated":"2016-06-09 14:54:50.000000000","message":"changed wording to clarify","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"* Support Amphora failure recovery"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"  - Add failure recovery flow to monitor all active Amphorae in a cluster,"},{"line_number":334,"context_line":"    decommission a failed Amphora on the Distributor and replace it with"},{"line_number":335,"context_line":"    the standby."},{"line_number":336,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_7c87e9b4","line":333,"range":{"start_line":333,"start_character":17,"end_line":333,"end_character":59},"updated":"2016-06-01 18:52:32.000000000","message":"Worded awkwardly. Is the flow doing the monitoring? If not, then what? This sounds like something that needs to happen in the o-hm process. Is that the case? How would this differ from the current amphorae health monitoring we do?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"* Support Amphora failure recovery"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"  - Add failure recovery flow to monitor all active Amphorae in a cluster,"},{"line_number":334,"context_line":"    decommission a failed Amphora on the Distributor and replace it with"},{"line_number":335,"context_line":"    the standby."},{"line_number":336,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_d7121609","line":333,"range":{"start_line":333,"start_character":17,"end_line":333,"end_character":59},"in_reply_to":"9abb7d3a_7c87e9b4","updated":"2016-06-09 14:54:50.000000000","message":"Changed wording to clarify.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":351,"context_line":"    shall monitor its health and handle recovery. [P2]_ Spawn a new"},{"line_number":352,"context_line":"    Distributor if the number VIPs exceeds a given limit (to limit the"},{"line_number":353,"context_line":"    number of Neutron ports attached to one Distributor). [P2]_ Allow"},{"line_number":354,"context_line":"    operator to request a dedicated Distributor for a VIP (or per tenant)."},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"* Define a REST API for Distributor configuration (no SSH API)."},{"line_number":357,"context_line":"  See below for details."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_27770ea1","line":354,"range":{"start_line":354,"start_character":16,"end_line":354,"end_character":23},"updated":"2016-06-01 18:52:32.000000000","message":"How is this going to be handled initially? New API? Configuration file? Yet-to-be-written flavor framework?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":351,"context_line":"    shall monitor its health and handle recovery. [P2]_ Spawn a new"},{"line_number":352,"context_line":"    Distributor if the number VIPs exceeds a given limit (to limit the"},{"line_number":353,"context_line":"    number of Neutron ports attached to one Distributor). [P2]_ Allow"},{"line_number":354,"context_line":"    operator to request a dedicated Distributor for a VIP (or per tenant)."},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"* Define a REST API for Distributor configuration (no SSH API)."},{"line_number":357,"context_line":"  See below for details."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_97e08ece","line":354,"range":{"start_line":354,"start_character":16,"end_line":354,"end_character":23},"in_reply_to":"9abb7d3a_27770ea1","updated":"2016-06-09 14:54:50.000000000","message":"Initially, if topology is configured as active-active, one shared Distributor would be created at initialization. [P2] options TBD -- changed wording to clarify -- note that it depends if we want different setup per LB or just a global config.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"REST API Impact"},{"line_number":389,"context_line":"---------------"},{"line_number":390,"context_line":"Distributor will be running it\u0027s own rest API server."},{"line_number":391,"context_line":"Following api calls will be addressed."},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"1. Plug VIP / Unplug VIP"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_67f2b607","line":390,"range":{"start_line":390,"start_character":28,"end_line":390,"end_character":32},"updated":"2016-06-01 18:52:32.000000000","message":"Nit: its","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"REST API Impact"},{"line_number":389,"context_line":"---------------"},{"line_number":390,"context_line":"Distributor will be running it\u0027s own rest API server."},{"line_number":391,"context_line":"Following api calls will be addressed."},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"1. Plug VIP / Unplug VIP"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_57a62654","line":390,"range":{"start_line":390,"start_character":28,"end_line":390,"end_character":32},"in_reply_to":"9abb7d3a_67f2b607","updated":"2016-06-09 14:54:50.000000000","message":"Done","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":467,"context_line":"and their front-end network to be isolated. In these cases, in order to"},{"line_number":468,"context_line":"accomplish active-active for this tenant we would need a separate dedicated"},{"line_number":469,"context_line":"Distributor instance. A dedicated Distributor instance, implemented as a"},{"line_number":470,"context_line":"separate VM, might consume too many resources per VIP, so if dedicated"},{"line_number":471,"context_line":"Distributors are needed a lighter-weight implementation is probably required."},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"Notifications impact"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_47dfb239","line":470,"range":{"start_line":470,"start_character":13,"end_line":470,"end_character":53},"updated":"2016-06-01 18:52:32.000000000","message":"This sounds like premature optimization. You\u0027re already talking about a topology that is going to consume a lot of compute resources, because you don\u0027t need a distributor until you have two or more amphorae serving any given load balancer.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":467,"context_line":"and their front-end network to be isolated. In these cases, in order to"},{"line_number":468,"context_line":"accomplish active-active for this tenant we would need a separate dedicated"},{"line_number":469,"context_line":"Distributor instance. A dedicated Distributor instance, implemented as a"},{"line_number":470,"context_line":"separate VM, might consume too many resources per VIP, so if dedicated"},{"line_number":471,"context_line":"Distributors are needed a lighter-weight implementation is probably required."},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"Notifications impact"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_e2294e39","line":470,"range":{"start_line":470,"start_character":13,"end_line":470,"end_character":53},"in_reply_to":"9abb7d3a_47dfb239","updated":"2016-06-09 14:54:50.000000000","message":"I think supporting the possibility of a shared Distributor is not just a performance optimization, but a desired feature for other reasons (e.g, if a HW OpenFlow switch is used). The text above primarily addresses the security concerns.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":468,"context_line":"accomplish active-active for this tenant we would need a separate dedicated"},{"line_number":469,"context_line":"Distributor instance. A dedicated Distributor instance, implemented as a"},{"line_number":470,"context_line":"separate VM, might consume too many resources per VIP, so if dedicated"},{"line_number":471,"context_line":"Distributors are needed a lighter-weight implementation is probably required."},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"Notifications impact"},{"line_number":474,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_87e51a0a","line":471,"range":{"start_line":471,"start_character":24,"end_line":471,"end_character":76},"updated":"2016-06-01 18:52:32.000000000","message":"Just how heavy do you anticipate the distributor being? Heavier than an amphora? (That seems unlikely to me, at least initially).","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":468,"context_line":"accomplish active-active for this tenant we would need a separate dedicated"},{"line_number":469,"context_line":"Distributor instance. A dedicated Distributor instance, implemented as a"},{"line_number":470,"context_line":"separate VM, might consume too many resources per VIP, so if dedicated"},{"line_number":471,"context_line":"Distributors are needed a lighter-weight implementation is probably required."},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"Notifications impact"},{"line_number":474,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_ab343efb","line":471,"range":{"start_line":471,"start_character":24,"end_line":471,"end_character":76},"in_reply_to":"9abb7d3a_87e51a0a","updated":"2016-06-09 14:54:50.000000000","message":"Just a VM. Does less than a single Amphora, so probably underutilized for dedicated case if N is small.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":508,"context_line":"Documentation Impact"},{"line_number":509,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"Further Discussion"},{"line_number":512,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":".. Note::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_07312a5a","line":511,"range":{"start_line":511,"start_character":0,"end_line":511,"end_character":18},"updated":"2016-06-01 18:52:32.000000000","message":"Thanks for catching this discussion in this spec! I think it\u0027s really useful for people wondering how we might improve active-active Octavia in the future!","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"6d2c0a48a0fdeb78dbcd3589d179deeade03e2bc","unresolved":false,"context_lines":[{"line_number":546,"context_line":"  a hash (for randomizing key distribution) as"},{"line_number":547,"context_line":"  `chosen_amphora_id \u003d hash(sourceIP # port) mod number_of_amphorae`."},{"line_number":548,"context_line":"  When a new Amphora is added or remove the number of Amphorae changes;"},{"line_number":549,"context_line":"  thus, a different Amphora will be chosen for most flows."},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"- Below are the couple of ways to tackle this shuffling problem."},{"line_number":552,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_ff1b3619","line":549,"updated":"2016-06-07 13:31:43.000000000","message":"In openflow you can learn actions to force path on existing flows.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":546,"context_line":"  a hash (for randomizing key distribution) as"},{"line_number":547,"context_line":"  `chosen_amphora_id \u003d hash(sourceIP # port) mod number_of_amphorae`."},{"line_number":548,"context_line":"  When a new Amphora is added or remove the number of Amphorae changes;"},{"line_number":549,"context_line":"  thus, a different Amphora will be chosen for most flows."},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"- Below are the couple of ways to tackle this shuffling problem."},{"line_number":552,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_31e6f4e8","line":549,"in_reply_to":"7aa08908_aeb9eccd","updated":"2016-06-09 23:03:27.000000000","message":"Look into Neutron firewall driver using OVS. Performance is the best possible. Using kernel module you\u0027re switching packet into user space only once. After that flow is added into flow table and the rest of packets is send using only kernel space","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":546,"context_line":"  a hash (for randomizing key distribution) as"},{"line_number":547,"context_line":"  `chosen_amphora_id \u003d hash(sourceIP # port) mod number_of_amphorae`."},{"line_number":548,"context_line":"  When a new Amphora is added or remove the number of Amphorae changes;"},{"line_number":549,"context_line":"  thus, a different Amphora will be chosen for most flows."},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"- Below are the couple of ways to tackle this shuffling problem."},{"line_number":552,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_aeb9eccd","line":549,"in_reply_to":"7aa08908_ff1b3619","updated":"2016-06-09 14:54:50.000000000","message":"True. See *Full flow Tracking* below. \nI haven\u0027t tested this myself, but I think there were OVS performance problems with learning and adding a new rule for every new flow. The newer OVS utilized the Kernel connection-tracking to do better, but that has problems of its own (again, did not try this at large scale myself).","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":645,"context_line":"The current design uses L2 forwarding based only on L3 parameters and uses"},{"line_number":646,"context_line":"Direct Return routing (one-legged). The rational behind this approach is"},{"line_number":647,"context_line":"to keep the Distributor as light as possible and have the Amphorae do the"},{"line_number":648,"context_line":"bulk of the work. This allows one (or a few) Distributor instance(s) to"},{"line_number":649,"context_line":"serve all traffic even for very large workloads. Other approaches are"},{"line_number":650,"context_line":"possible."},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"2-legged Router"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_9166ecb8","line":649,"range":{"start_line":648,"start_character":45,"end_line":649,"end_character":47},"updated":"2016-06-09 05:29:32.000000000","message":"How about incoming traffic? All incoming data will be transferred thru this Distributor so you can loose performance - sending Gbs of data thru one 10Gb NIC. It will be a bottleneck in this implementation","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":645,"context_line":"The current design uses L2 forwarding based only on L3 parameters and uses"},{"line_number":646,"context_line":"Direct Return routing (one-legged). The rational behind this approach is"},{"line_number":647,"context_line":"to keep the Distributor as light as possible and have the Amphorae do the"},{"line_number":648,"context_line":"bulk of the work. This allows one (or a few) Distributor instance(s) to"},{"line_number":649,"context_line":"serve all traffic even for very large workloads. Other approaches are"},{"line_number":650,"context_line":"possible."},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"2-legged Router"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_2eacdc34","line":649,"range":{"start_line":648,"start_character":45,"end_line":649,"end_character":47},"in_reply_to":"7aa08908_9166ecb8","updated":"2016-06-09 14:54:50.000000000","message":"Agree, but I think it is a good enough for first reference implementation. We can always add more Distributors if too overloaded.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":676,"context_line":"  TCP connection."},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"- Need a different public IP for each Amphora (no VIP)"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"Pure SDN"},{"line_number":681,"context_line":"^^^^^^^^"},{"line_number":682,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_91e1cc2c","line":679,"updated":"2016-06-09 05:29:32.000000000","message":"There is also another way to load balance traffic using DNS to specific Distributor. You can run 2+ Distributors in active mode and DNS load balance between them but you will get duplicated flows/conntrackd informations between Distributors","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"74c6227b6eaec882519e6d54b32f24996d63a32f","unresolved":false,"context_lines":[{"line_number":676,"context_line":"  TCP connection."},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"- Need a different public IP for each Amphora (no VIP)"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"Pure SDN"},{"line_number":681,"context_line":"^^^^^^^^"},{"line_number":682,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_23f675f9","line":679,"in_reply_to":"7aa08908_111018a8","updated":"2016-06-14 10:27:34.000000000","message":"Even if Distributor is not deterministic there should not be a problem. Using DNS to resolve a Distributor, each TCP flow will go only to one Distributor (as DNS is resolved at client at most once per TCP connection). Hash-based distribution, even if not fully deterministic, should be good enough to send similar flows to the same LB.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":676,"context_line":"  TCP connection."},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"- Need a different public IP for each Amphora (no VIP)"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"Pure SDN"},{"line_number":681,"context_line":"^^^^^^^^"},{"line_number":682,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_e9e76e44","line":679,"in_reply_to":"7aa08908_91e1cc2c","updated":"2016-06-09 14:54:50.000000000","message":"The DNS suggestion here was *instead* of a Distributor. Having some DNS LB as an extra layer above the Distributor is a whole domain not covered here (applicable to availability zones, global LB, active-active distributor, ....). \nPer your specific concern wrt conn-tracking, I don\u0027t think it is a problem for the N+1 solution, as (1) the distribution is deterministic and (2) clients will use only one DNS answer per each flow.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":676,"context_line":"  TCP connection."},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"- Need a different public IP for each Amphora (no VIP)"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"Pure SDN"},{"line_number":681,"context_line":"^^^^^^^^"},{"line_number":682,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_111018a8","line":679,"in_reply_to":"7aa08908_e9e76e44","updated":"2016-06-09 23:03:27.000000000","message":"Implementation may provide determinism but may not","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":691,"context_line":"Distributor Sharing"},{"line_number":692,"context_line":"-------------------"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"- A shared Distributor uses the least amount of resources, but may not meet"},{"line_number":695,"context_line":"  isolation requirements (performance and/or security)."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"- The implementation should support both shared-Distributor and a"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_4e2341bd","line":694,"range":{"start_line":694,"start_character":32,"end_line":694,"end_character":57},"updated":"2016-06-09 05:29:32.000000000","message":"About which resources you\u0027re talking? What exactly Distributor require? In my opinion it may be a completely diskless VM with some amount of memory to server OVS or other configured by driver application like LVS or other","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"1a669fd04338b40ea2dd49b3b195bfc176404117","unresolved":false,"context_lines":[{"line_number":691,"context_line":"Distributor Sharing"},{"line_number":692,"context_line":"-------------------"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"- A shared Distributor uses the least amount of resources, but may not meet"},{"line_number":695,"context_line":"  isolation requirements (performance and/or security)."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"- The implementation should support both shared-Distributor and a"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1ac06dbe_21c3a258","line":694,"range":{"start_line":694,"start_character":4,"end_line":694,"end_character":57},"updated":"2016-08-23 15:14:31.000000000","message":"Not any more shared","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"9689fcd68e047cb7c583c8835512ef22e15c1a1b","unresolved":false,"context_lines":[{"line_number":691,"context_line":"Distributor Sharing"},{"line_number":692,"context_line":"-------------------"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"- A shared Distributor uses the least amount of resources, but may not meet"},{"line_number":695,"context_line":"  isolation requirements (performance and/or security)."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"- The implementation should support both shared-Distributor and a"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1ac06dbe_c7ad799c","line":694,"range":{"start_line":694,"start_character":4,"end_line":694,"end_character":57},"in_reply_to":"1ac06dbe_21c3a258","updated":"2016-08-23 16:28:52.000000000","message":"The spec should not preclude a shared Distributor.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":691,"context_line":"Distributor Sharing"},{"line_number":692,"context_line":"-------------------"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"- A shared Distributor uses the least amount of resources, but may not meet"},{"line_number":695,"context_line":"  isolation requirements (performance and/or security)."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"- The implementation should support both shared-Distributor and a"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_09e11aff","line":694,"range":{"start_line":694,"start_character":32,"end_line":694,"end_character":57},"in_reply_to":"7aa08908_4e2341bd","updated":"2016-06-09 14:54:50.000000000","message":"Agree, but a shared Distributor instance still has less overhead than multiple instances, one per LB.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":692,"context_line":"-------------------"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"- A shared Distributor uses the least amount of resources, but may not meet"},{"line_number":695,"context_line":"  isolation requirements (performance and/or security)."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"- The implementation should support both shared-Distributor and a"},{"line_number":698,"context_line":"  multi-Distributor configurations. In particular, an abstraction layer should"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_2e11955d","line":695,"range":{"start_line":695,"start_character":2,"end_line":695,"end_character":24},"updated":"2016-06-09 05:29:32.000000000","message":"This Distributor will be connected to multiple networks from different tenant - a lot of thinks may not work properly.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":692,"context_line":"-------------------"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"- A shared Distributor uses the least amount of resources, but may not meet"},{"line_number":695,"context_line":"  isolation requirements (performance and/or security)."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"- The implementation should support both shared-Distributor and a"},{"line_number":698,"context_line":"  multi-Distributor configurations. In particular, an abstraction layer should"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_f12f4ca5","line":695,"range":{"start_line":695,"start_character":2,"end_line":695,"end_character":24},"in_reply_to":"7aa08908_298176fc","updated":"2016-06-09 23:03:27.000000000","message":"Bug in firewall configuration will enable direct access to multiple tenant nets.\nConnectivity between two network may be broken because of short switching on Distributor. All configuration may decrease security of cloud","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":692,"context_line":"-------------------"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"- A shared Distributor uses the least amount of resources, but may not meet"},{"line_number":695,"context_line":"  isolation requirements (performance and/or security)."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"- The implementation should support both shared-Distributor and a"},{"line_number":698,"context_line":"  multi-Distributor configurations. In particular, an abstraction layer should"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_298176fc","line":695,"range":{"start_line":695,"start_character":2,"end_line":695,"end_character":24},"in_reply_to":"7aa08908_2e11955d","updated":"2016-06-09 14:54:50.000000000","message":"Can you give an example? \nAlso, is there a cleaner way to do this? -- perhaps more integrated into neutron.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"74c6227b6eaec882519e6d54b32f24996d63a32f","unresolved":false,"context_lines":[{"line_number":692,"context_line":"-------------------"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"- A shared Distributor uses the least amount of resources, but may not meet"},{"line_number":695,"context_line":"  isolation requirements (performance and/or security)."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"- The implementation should support both shared-Distributor and a"},{"line_number":698,"context_line":"  multi-Distributor configurations. In particular, an abstraction layer should"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_7f97fbeb","line":695,"range":{"start_line":695,"start_character":2,"end_line":695,"end_character":24},"in_reply_to":"7aa08908_f12f4ca5","updated":"2016-06-14 10:27:34.000000000","message":"(1) the BP does not *require* the Distributor to be shared -- specifically, as stated below, dedicated Distributor should be supported for users that share your concerns.\n(2) a shared Distributor is like other provider-managed network components -- does not add to threat model (beyond larger code).\n(3) the \"sharing\" is on the front-end networks, before TLS.\n(4) the \"sharing\" is only of an OVS switch -- there is no connection to the Distributor VM host, no FW involved nor any routing between ports. The same level of sharing exists now on the host OVS. In fact, a possible impl. of the Distributor would be to inject distribution rules directly into the host OVS -- unfortunately, this is not supported yet.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":694,"context_line":"- A shared Distributor uses the least amount of resources, but may not meet"},{"line_number":695,"context_line":"  isolation requirements (performance and/or security)."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"- The implementation should support both shared-Distributor and a"},{"line_number":698,"context_line":"  multi-Distributor configurations. In particular, an abstraction layer should"},{"line_number":699,"context_line":"  be used and the data-model should include an association between the"},{"line_number":700,"context_line":"  load-balancer and Distributor."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_31561806","line":697,"range":{"start_line":697,"start_character":41,"end_line":697,"end_character":59},"updated":"2016-06-09 05:29:32.000000000","message":"When you\u0027re running multiple load balancers to serve the content to clients do you really interested in situation when you\u0027re sharing Distributor?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":694,"context_line":"- A shared Distributor uses the least amount of resources, but may not meet"},{"line_number":695,"context_line":"  isolation requirements (performance and/or security)."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"- The implementation should support both shared-Distributor and a"},{"line_number":698,"context_line":"  multi-Distributor configurations. In particular, an abstraction layer should"},{"line_number":699,"context_line":"  be used and the data-model should include an association between the"},{"line_number":700,"context_line":"  load-balancer and Distributor."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_fa0c4e3d","line":697,"range":{"start_line":697,"start_character":41,"end_line":697,"end_character":59},"in_reply_to":"7aa08908_31561806","updated":"2016-06-09 14:54:50.000000000","message":"Can you clarify the comment. \nThe Distributor would probably be underutilized (compared to an Amphora doing TLS) even if distributing for several Amphorae.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"1a669fd04338b40ea2dd49b3b195bfc176404117","unresolved":false,"context_lines":[{"line_number":694,"context_line":"- A shared Distributor uses the least amount of resources, but may not meet"},{"line_number":695,"context_line":"  isolation requirements (performance and/or security)."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"- The implementation should support both shared-Distributor and a"},{"line_number":698,"context_line":"  multi-Distributor configurations. In particular, an abstraction layer should"},{"line_number":699,"context_line":"  be used and the data-model should include an association between the"},{"line_number":700,"context_line":"  load-balancer and Distributor."}],"source_content_type":"text/x-rst","patch_set":8,"id":"1ac06dbe_a184b20a","line":697,"range":{"start_line":697,"start_character":41,"end_line":697,"end_character":59},"in_reply_to":"7aa08908_7632965f","updated":"2016-08-23 15:14:31.000000000","message":"It will single tenant right now","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"d5f79d10ef60c14c494c3ac43f7e3b2ac28831b7","unresolved":false,"context_lines":[{"line_number":694,"context_line":"- A shared Distributor uses the least amount of resources, but may not meet"},{"line_number":695,"context_line":"  isolation requirements (performance and/or security)."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"- The implementation should support both shared-Distributor and a"},{"line_number":698,"context_line":"  multi-Distributor configurations. In particular, an abstraction layer should"},{"line_number":699,"context_line":"  be used and the data-model should include an association between the"},{"line_number":700,"context_line":"  load-balancer and Distributor."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_7632965f","line":697,"range":{"start_line":697,"start_character":41,"end_line":697,"end_character":59},"in_reply_to":"7aa08908_83c03b7e","updated":"2016-06-13 21:42:54.000000000","message":"There will be an option to have standalone distributor, but as of now for the initial version we will be having a shared one.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":694,"context_line":"- A shared Distributor uses the least amount of resources, but may not meet"},{"line_number":695,"context_line":"  isolation requirements (performance and/or security)."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"- The implementation should support both shared-Distributor and a"},{"line_number":698,"context_line":"  multi-Distributor configurations. In particular, an abstraction layer should"},{"line_number":699,"context_line":"  be used and the data-model should include an association between the"},{"line_number":700,"context_line":"  load-balancer and Distributor."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_83c03b7e","line":697,"range":{"start_line":697,"start_character":41,"end_line":697,"end_character":59},"in_reply_to":"7aa08908_fa0c4e3d","updated":"2016-06-09 23:03:27.000000000","message":"Again what about the biggest problem - network speed? In my opinion problem underutilized Distributor will never exist. You always may create a smaller flavor to server that machines. Where is the problem. We should make this as small as possible - not to make a one huge monolithic thing which when will break the all clients will loose money because of the rescheduling issues. Remember - if you need to reconfigure multiple interfaces, spin up multiple apps in different netns it will take time. In neutron is already problem with restarting ovs agent and multi hours flow table recreation procedure. Do you really want to fight with that?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":702,"context_line":"Distributor High-Availability"},{"line_number":703,"context_line":"-----------------------------"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"- The Distributor should be highly-available (as this is one of the"},{"line_number":706,"context_line":"  motivations for the active-active topology)."},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"- A mechanism similar to the VRRP can be used."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_ee65cd1d","line":705,"updated":"2016-06-09 05:29:32.000000000","message":"Here is information that Distributor should be HA on its own and next what you\u0027re writing is that there will be only one. It\u0027s weird","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"74c6227b6eaec882519e6d54b32f24996d63a32f","unresolved":false,"context_lines":[{"line_number":702,"context_line":"Distributor High-Availability"},{"line_number":703,"context_line":"-----------------------------"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"- The Distributor should be highly-available (as this is one of the"},{"line_number":706,"context_line":"  motivations for the active-active topology)."},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"- A mechanism similar to the VRRP can be used."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_ea3e87b6","line":705,"in_reply_to":"7aa08908_23b987ed","updated":"2016-06-14 10:27:34.000000000","message":"There is nothing in the BP that *requires* HW switch. VRRP is already suggested as next step.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"d5f79d10ef60c14c494c3ac43f7e3b2ac28831b7","unresolved":false,"context_lines":[{"line_number":702,"context_line":"Distributor High-Availability"},{"line_number":703,"context_line":"-----------------------------"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"- The Distributor should be highly-available (as this is one of the"},{"line_number":706,"context_line":"  motivations for the active-active topology)."},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"- A mechanism similar to the VRRP can be used."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_d670aa42","line":705,"in_reply_to":"7aa08908_23b987ed","updated":"2016-06-13 21:42:54.000000000","message":"VRRP will be added in the next phase, same as community did with the amps. h.w thing,  it\u0027s just an option.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":702,"context_line":"Distributor High-Availability"},{"line_number":703,"context_line":"-----------------------------"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"- The Distributor should be highly-available (as this is one of the"},{"line_number":706,"context_line":"  motivations for the active-active topology)."},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"- A mechanism similar to the VRRP can be used."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_fa7f2e64","line":705,"in_reply_to":"7aa08908_ee65cd1d","updated":"2016-06-09 14:54:50.000000000","message":"Agree, but one step at a time. \nWill add VRRP later or just use HW openFlow switch.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":702,"context_line":"Distributor High-Availability"},{"line_number":703,"context_line":"-----------------------------"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"- The Distributor should be highly-available (as this is one of the"},{"line_number":706,"context_line":"  motivations for the active-active topology)."},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"- A mechanism similar to the VRRP can be used."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_23b987ed","line":705,"in_reply_to":"7aa08908_fa7f2e64","updated":"2016-06-09 23:03:27.000000000","message":"I don\u0027t like that you\u0027re for all questions respond with - we will use HW openFlow switch. I\u0027m trying to making software, working one, to not be tightly coupled into HW world","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"6d2c0a48a0fdeb78dbcd3589d179deeade03e2bc","unresolved":false,"context_lines":[{"line_number":707,"context_line":""},{"line_number":708,"context_line":"- A mechanism similar to the VRRP can be used."},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"- Since the Distributor is stateless (for fixed cluster sizes and if no"},{"line_number":711,"context_line":"  connection tracking is used) it is possible to set up an active-active"},{"line_number":712,"context_line":"  configuration and advertise more than one Distributor (e.g, for ECMP)."},{"line_number":713,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_1f08c290","line":710,"updated":"2016-06-07 13:31:43.000000000","message":"Unless you learn flows to avoid the hashing issues.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":707,"context_line":""},{"line_number":708,"context_line":"- A mechanism similar to the VRRP can be used."},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"- Since the Distributor is stateless (for fixed cluster sizes and if no"},{"line_number":711,"context_line":"  connection tracking is used) it is possible to set up an active-active"},{"line_number":712,"context_line":"  configuration and advertise more than one Distributor (e.g, for ECMP)."},{"line_number":713,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_5acda285","line":710,"in_reply_to":"7aa08908_1f08c290","updated":"2016-06-09 14:54:50.000000000","message":"\"... if no connection tracking is used\" -- did you mean something else?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":707,"context_line":""},{"line_number":708,"context_line":"- A mechanism similar to the VRRP can be used."},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"- Since the Distributor is stateless (for fixed cluster sizes and if no"},{"line_number":711,"context_line":"  connection tracking is used) it is possible to set up an active-active"},{"line_number":712,"context_line":"  configuration and advertise more than one Distributor (e.g, for ECMP)."},{"line_number":713,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_439db358","line":710,"in_reply_to":"7aa08908_5acda285","updated":"2016-06-09 23:03:27.000000000","message":"Distributor will be statefull when you will use OVS flow tables, using generic hashing algorithm its true it will be stateless","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"6d2c0a48a0fdeb78dbcd3589d179deeade03e2bc","unresolved":false,"context_lines":[{"line_number":709,"context_line":""},{"line_number":710,"context_line":"- Since the Distributor is stateless (for fixed cluster sizes and if no"},{"line_number":711,"context_line":"  connection tracking is used) it is possible to set up an active-active"},{"line_number":712,"context_line":"  configuration and advertise more than one Distributor (e.g, for ECMP)."},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"- As a first step, the initial implementation will use a single Distributor"},{"line_number":715,"context_line":"  instance (i.e., will not be highly-available). Health Manager will monitor"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_820a951f","line":712,"updated":"2016-06-07 13:31:43.000000000","message":"with connection tracking (ideally in OVS, since iptables is slower) you have the chance to use conntrackd to sync several nodes.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":709,"context_line":""},{"line_number":710,"context_line":"- Since the Distributor is stateless (for fixed cluster sizes and if no"},{"line_number":711,"context_line":"  connection tracking is used) it is possible to set up an active-active"},{"line_number":712,"context_line":"  configuration and advertise more than one Distributor (e.g, for ECMP)."},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"- As a first step, the initial implementation will use a single Distributor"},{"line_number":715,"context_line":"  instance (i.e., will not be highly-available). Health Manager will monitor"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_5a6c8236","line":712,"in_reply_to":"7aa08908_2ee7d5ac","updated":"2016-06-09 14:54:50.000000000","message":"Miguel, can you explain this in more detail? \n(1) I thought (new) OVS and IPtables use the same connection tracking mechanism. \n(2) Is it possible to copy tracking info to another OVS?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":709,"context_line":""},{"line_number":710,"context_line":"- Since the Distributor is stateless (for fixed cluster sizes and if no"},{"line_number":711,"context_line":"  connection tracking is used) it is possible to set up an active-active"},{"line_number":712,"context_line":"  configuration and advertise more than one Distributor (e.g, for ECMP)."},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"- As a first step, the initial implementation will use a single Distributor"},{"line_number":715,"context_line":"  instance (i.e., will not be highly-available). Health Manager will monitor"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_a33e1727","line":712,"in_reply_to":"7aa08908_5a6c8236","updated":"2016-06-09 23:03:27.000000000","message":"1. OVS may ask conntrackd about states but it\u0027s optional - everything what you implement in learning mechanism will be used but it depends of you what you want\n2. Conntrackd alwasy is able to be clustered but ovs flow tables in my opinion not - may somebody agree with me or say how to do this?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":709,"context_line":""},{"line_number":710,"context_line":"- Since the Distributor is stateless (for fixed cluster sizes and if no"},{"line_number":711,"context_line":"  connection tracking is used) it is possible to set up an active-active"},{"line_number":712,"context_line":"  configuration and advertise more than one Distributor (e.g, for ECMP)."},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"- As a first step, the initial implementation will use a single Distributor"},{"line_number":715,"context_line":"  instance (i.e., will not be highly-available). Health Manager will monitor"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_2ee7d5ac","line":712,"in_reply_to":"7aa08908_820a951f","updated":"2016-06-09 05:29:32.000000000","message":"Does OVS flow tables are available from conntrackd? I thought that OVS can check in conntrackd state of current connection but flows need to be recreated from the scratch. I was just looking into some documentation and there is no info about how to copy flow tables between nodes","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":711,"context_line":"  connection tracking is used) it is possible to set up an active-active"},{"line_number":712,"context_line":"  configuration and advertise more than one Distributor (e.g, for ECMP)."},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"- As a first step, the initial implementation will use a single Distributor"},{"line_number":715,"context_line":"  instance (i.e., will not be highly-available). Health Manager will monitor"},{"line_number":716,"context_line":"  the Distributor health and initiate recovery if needed."},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"- The implementation should support plugging-in a hardware-based"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_8ebec9ab","line":715,"range":{"start_line":714,"start_character":57,"end_line":715,"end_character":10},"updated":"2016-06-09 05:29:32.000000000","message":"This is any level of HA. Recovery can take even minutes in heavy loaded environment. In my opinion minimum configuration is active/standby","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"d5f79d10ef60c14c494c3ac43f7e3b2ac28831b7","unresolved":false,"context_lines":[{"line_number":711,"context_line":"  connection tracking is used) it is possible to set up an active-active"},{"line_number":712,"context_line":"  configuration and advertise more than one Distributor (e.g, for ECMP)."},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"- As a first step, the initial implementation will use a single Distributor"},{"line_number":715,"context_line":"  instance (i.e., will not be highly-available). Health Manager will monitor"},{"line_number":716,"context_line":"  the Distributor health and initiate recovery if needed."},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"- The implementation should support plugging-in a hardware-based"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_b697de8e","line":715,"range":{"start_line":714,"start_character":57,"end_line":715,"end_character":10},"in_reply_to":"7aa08908_8ebec9ab","updated":"2016-06-13 21:42:54.000000000","message":"As first implementation  we will have single distributor solution. After stabilization, we can have a HA. The same way how HA was added to the Amphora.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":715,"context_line":"  instance (i.e., will not be highly-available). Health Manager will monitor"},{"line_number":716,"context_line":"  the Distributor health and initiate recovery if needed."},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"- The implementation should support plugging-in a hardware-based"},{"line_number":719,"context_line":"  implementation of the Distributor that may have its own high-availability"},{"line_number":720,"context_line":"  support."},{"line_number":721,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_aeac658c","line":718,"range":{"start_line":718,"start_character":2,"end_line":718,"end_character":64},"updated":"2016-06-09 05:29:32.000000000","message":"It sound like you\u0027re preparing that code to wipe it out and connect some HW stuff here - implementation suppose to be pluggable like whole project","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"d5f79d10ef60c14c494c3ac43f7e3b2ac28831b7","unresolved":false,"context_lines":[{"line_number":715,"context_line":"  instance (i.e., will not be highly-available). Health Manager will monitor"},{"line_number":716,"context_line":"  the Distributor health and initiate recovery if needed."},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"- The implementation should support plugging-in a hardware-based"},{"line_number":719,"context_line":"  implementation of the Distributor that may have its own high-availability"},{"line_number":720,"context_line":"  support."},{"line_number":721,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_9638e2d4","line":718,"range":{"start_line":718,"start_character":2,"end_line":718,"end_character":64},"in_reply_to":"7aa08908_2349878f","updated":"2016-06-13 21:42:54.000000000","message":"h.w based or the s.w based, the point in here in its pluggable.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":715,"context_line":"  instance (i.e., will not be highly-available). Health Manager will monitor"},{"line_number":716,"context_line":"  the Distributor health and initiate recovery if needed."},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"- The implementation should support plugging-in a hardware-based"},{"line_number":719,"context_line":"  implementation of the Distributor that may have its own high-availability"},{"line_number":720,"context_line":"  support."},{"line_number":721,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_dc618faa","line":718,"range":{"start_line":718,"start_character":2,"end_line":718,"end_character":64},"in_reply_to":"7aa08908_aeac658c","updated":"2016-06-09 14:54:50.000000000","message":"Our current code sets up OpenFlow rules. We want the back-end to either be an OVS VM or any other OpenFlow (HW) switch. Most of the code will remain the same even with HW.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":715,"context_line":"  instance (i.e., will not be highly-available). Health Manager will monitor"},{"line_number":716,"context_line":"  the Distributor health and initiate recovery if needed."},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"- The implementation should support plugging-in a hardware-based"},{"line_number":719,"context_line":"  implementation of the Distributor that may have its own high-availability"},{"line_number":720,"context_line":"  support."},{"line_number":721,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_2349878f","line":718,"range":{"start_line":718,"start_character":2,"end_line":718,"end_character":64},"in_reply_to":"7aa08908_dc618faa","updated":"2016-06-09 23:03:27.000000000","message":"About the code its true but from requirements perspective these two are completely different situations. As first implementation I would like to see secure single tenant solution. After stabilization of that and deep analyze of how everything is done create a way to create shared Distributor - what should be available only for administrators in my opinion","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"43a6887e89ca2a4a64c7d57b14f9493c5ee78934","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    **Note on TLS implications**:"},{"line_number":198,"context_line":"      In some (typical) TLS sessions the additional load incurred for each"},{"line_number":199,"context_line":"      new session is significantly larger than the load incurred for each"},{"line_number":200,"context_line":"      new connection on the same session; namely, the total load on each"},{"line_number":201,"context_line":"      Amphora will be more affected by the number of different source IPs"},{"line_number":202,"context_line":"      it serves than by the number of connections. Moreover, since the"},{"line_number":203,"context_line":"      total load on the Cluster incurred by all the connections depends on"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_9d849c5e","line":200,"range":{"start_line":200,"start_character":10,"end_line":200,"end_character":20},"updated":"2016-08-23 07:01:08.000000000","message":"Nit: request or connection","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"b6b7f06f510bd3abf3c5775d0cf7b184b7713f8c","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    **Note on TLS implications**:"},{"line_number":198,"context_line":"      In some (typical) TLS sessions the additional load incurred for each"},{"line_number":199,"context_line":"      new session is significantly larger than the load incurred for each"},{"line_number":200,"context_line":"      new connection on the same session; namely, the total load on each"},{"line_number":201,"context_line":"      Amphora will be more affected by the number of different source IPs"},{"line_number":202,"context_line":"      it serves than by the number of connections. Moreover, since the"},{"line_number":203,"context_line":"      total load on the Cluster incurred by all the connections depends on"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_0f768d6f","line":200,"range":{"start_line":200,"start_character":10,"end_line":200,"end_character":20},"in_reply_to":"1ac06dbe_9d849c5e","updated":"2016-08-23 16:19:16.000000000","message":"Done","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"c7735d5bb7ba8b49611d1227b2eafda7f4edf4cd","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    **Note on TLS implications**:"},{"line_number":198,"context_line":"      In some (typical) TLS sessions the additional load incurred for each"},{"line_number":199,"context_line":"      new session is significantly larger than the load incurred for each"},{"line_number":200,"context_line":"      new connection on the same session; namely, the total load on each"},{"line_number":201,"context_line":"      Amphora will be more affected by the number of different source IPs"},{"line_number":202,"context_line":"      it serves than by the number of connections. Moreover, since the"},{"line_number":203,"context_line":"      total load on the Cluster incurred by all the connections depends on"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_4f76c53e","line":200,"range":{"start_line":200,"start_character":10,"end_line":200,"end_character":20},"in_reply_to":"1ac06dbe_9d849c5e","updated":"2016-08-23 15:35:42.000000000","message":"specify the author is refering to reusing TLS session for new TCP connections.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"43a6887e89ca2a4a64c7d57b14f9493c5ee78934","unresolved":false,"context_lines":[{"line_number":247,"context_line":"  - The ``select`` method supports (OpenFlow v1.5) hashed-based selection"},{"line_number":248,"context_line":"    of the ``bucket``. The hash can be set up to use different fields,"},{"line_number":249,"context_line":"    including by source IP only (default) and by source IP and source port."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"  - All buckets route traffic back on the in-port (i.e., no forwarding"},{"line_number":252,"context_line":"    between ports). This ensures that the same front-end network is used"},{"line_number":253,"context_line":"    (i.e., the Distributor does not route between front-end networks;"},{"line_number":254,"context_line":"    therefore, does not mix traffic of different tenants)."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"  - The ``bucket`` actions do a re-write of the outgoing packets. It"},{"line_number":257,"context_line":"    supports re-write of the destination MAC to that of the specific"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_3d1648f1","line":254,"range":{"start_line":250,"start_character":0,"end_line":254,"end_character":57},"updated":"2016-08-23 07:01:08.000000000","message":"It seems to me we could further guarantee that different tenants\u0027 traffic is kept separate by using multiple OVS processes running in separate, per-VIP namespaces. However, I\u0027m not familiar enough with OVS to know whether is can be run within a network namespace, or whether this mode of operation is possible at all.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"b6b7f06f510bd3abf3c5775d0cf7b184b7713f8c","unresolved":false,"context_lines":[{"line_number":247,"context_line":"  - The ``select`` method supports (OpenFlow v1.5) hashed-based selection"},{"line_number":248,"context_line":"    of the ``bucket``. The hash can be set up to use different fields,"},{"line_number":249,"context_line":"    including by source IP only (default) and by source IP and source port."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"  - All buckets route traffic back on the in-port (i.e., no forwarding"},{"line_number":252,"context_line":"    between ports). This ensures that the same front-end network is used"},{"line_number":253,"context_line":"    (i.e., the Distributor does not route between front-end networks;"},{"line_number":254,"context_line":"    therefore, does not mix traffic of different tenants)."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"  - The ``bucket`` actions do a re-write of the outgoing packets. It"},{"line_number":257,"context_line":"    supports re-write of the destination MAC to that of the specific"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_2f71c944","line":254,"range":{"start_line":250,"start_character":0,"end_line":254,"end_character":57},"in_reply_to":"1ac06dbe_21ae0798","updated":"2016-08-23 16:19:16.000000000","message":"Yes. OVS does not allow this. OVS does allow using multiple bridges and that is what we used.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"5ae8fb301baf5342922f92d54edf36bb46e8093a","unresolved":false,"context_lines":[{"line_number":247,"context_line":"  - The ``select`` method supports (OpenFlow v1.5) hashed-based selection"},{"line_number":248,"context_line":"    of the ``bucket``. The hash can be set up to use different fields,"},{"line_number":249,"context_line":"    including by source IP only (default) and by source IP and source port."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"  - All buckets route traffic back on the in-port (i.e., no forwarding"},{"line_number":252,"context_line":"    between ports). This ensures that the same front-end network is used"},{"line_number":253,"context_line":"    (i.e., the Distributor does not route between front-end networks;"},{"line_number":254,"context_line":"    therefore, does not mix traffic of different tenants)."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"  - The ``bucket`` actions do a re-write of the outgoing packets. It"},{"line_number":257,"context_line":"    supports re-write of the destination MAC to that of the specific"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_21ae0798","line":254,"range":{"start_line":250,"start_character":0,"end_line":254,"end_character":57},"in_reply_to":"1ac06dbe_3d1648f1","updated":"2016-08-23 14:45:15.000000000","message":"No, we cannot use that in this way because OVS per host configured. Especially that we should use kernel module to speed up package switching","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5d4531fd621d1f200a94150e1f033a65ee39e20a","unresolved":false,"context_lines":[{"line_number":277,"context_line":"  - If an Amphora fails then remapping cannot be avoided -- all flows of"},{"line_number":278,"context_line":"    the failed Amphora must be remapped to a different one. Rather than"},{"line_number":279,"context_line":"    mapping these flows to existing Amphorae, the reference implementation"},{"line_number":280,"context_line":"    will map all flows to a *new* Amphora. This ensures that the cluster"},{"line_number":281,"context_line":"    size does change. The only change in the OpenFlow rules would be to"},{"line_number":282,"context_line":"    replace the MAC of the failed Amphora with that of the new Amphora."},{"line_number":283,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_273d608f","line":280,"updated":"2016-08-23 19:44:57.000000000","message":"Hmmm, new.  Does that mean a newly booted or spares pool amp?  Or a spun up, but idle amp?\nThis is confusing\nIs this configurable?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9a44c6c1a5333bbab94d607907eace560ad7b21e","unresolved":false,"context_lines":[{"line_number":277,"context_line":"  - If an Amphora fails then remapping cannot be avoided -- all flows of"},{"line_number":278,"context_line":"    the failed Amphora must be remapped to a different one. Rather than"},{"line_number":279,"context_line":"    mapping these flows to existing Amphorae, the reference implementation"},{"line_number":280,"context_line":"    will map all flows to a *new* Amphora. This ensures that the cluster"},{"line_number":281,"context_line":"    size does change. The only change in the OpenFlow rules would be to"},{"line_number":282,"context_line":"    replace the MAC of the failed Amphora with that of the new Amphora."},{"line_number":283,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_02be52fe","line":280,"in_reply_to":"1ac06dbe_273d608f","updated":"2016-08-23 19:55:44.000000000","message":"Updating verbiage to clarify.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"43a6887e89ca2a4a64c7d57b14f9493c5ee78934","unresolved":false,"context_lines":[{"line_number":278,"context_line":"    the failed Amphora must be remapped to a different one. Rather than"},{"line_number":279,"context_line":"    mapping these flows to existing Amphorae, the reference implementation"},{"line_number":280,"context_line":"    will map all flows to a *new* Amphora. This ensures that the cluster"},{"line_number":281,"context_line":"    size does change. The only change in the OpenFlow rules would be to"},{"line_number":282,"context_line":"    replace the MAC of the failed Amphora with that of the new Amphora."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"  - This implementation is very similar to Active-Standby fail-over. There"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_bd9cf85d","line":281,"range":{"start_line":281,"start_character":4,"end_line":281,"end_character":20},"updated":"2016-08-23 07:01:08.000000000","message":"Nit: cluster size does NOT change.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"b6b7f06f510bd3abf3c5775d0cf7b184b7713f8c","unresolved":false,"context_lines":[{"line_number":278,"context_line":"    the failed Amphora must be remapped to a different one. Rather than"},{"line_number":279,"context_line":"    mapping these flows to existing Amphorae, the reference implementation"},{"line_number":280,"context_line":"    will map all flows to a *new* Amphora. This ensures that the cluster"},{"line_number":281,"context_line":"    size does change. The only change in the OpenFlow rules would be to"},{"line_number":282,"context_line":"    replace the MAC of the failed Amphora with that of the new Amphora."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"  - This implementation is very similar to Active-Standby fail-over. There"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_cfaf557b","line":281,"range":{"start_line":281,"start_character":4,"end_line":281,"end_character":20},"in_reply_to":"1ac06dbe_bd9cf85d","updated":"2016-08-23 16:19:16.000000000","message":"Done","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"26857b7b9afd1664d39dfafd3ccbb1333ffae290","unresolved":false,"context_lines":[{"line_number":334,"context_line":""},{"line_number":335,"context_line":"* Support Amphora failure recovery"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"  - Modify the HM and failure recovery flows to monitor both the active"},{"line_number":338,"context_line":"    Amphorae in a cluster and the standby. If an active Amphora fails then"},{"line_number":339,"context_line":"    it needs to be decommissioned on the Distributor and replaced with"},{"line_number":340,"context_line":"    the standby."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_02e77240","line":337,"updated":"2016-08-23 20:20:28.000000000","message":"I don\u0027t think we need to modify the HM to monitor the amphora differently.  This should be the existing behavior.  We will need to update it to \"know about\" the distributor and notify it of deregistration.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"15c8c470113bb14f5312116c64d9b2b258452f9c","unresolved":false,"context_lines":[{"line_number":334,"context_line":""},{"line_number":335,"context_line":"* Support Amphora failure recovery"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"  - Modify the HM and failure recovery flows to monitor both the active"},{"line_number":338,"context_line":"    Amphorae in a cluster and the standby. If an active Amphora fails then"},{"line_number":339,"context_line":"    it needs to be decommissioned on the Distributor and replaced with"},{"line_number":340,"context_line":"    the standby."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_8cb6f4f6","line":337,"in_reply_to":"1ac06dbe_02e77240","updated":"2016-08-23 21:38:35.000000000","message":"Updated verbiage to clarify.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"26857b7b9afd1664d39dfafd3ccbb1333ffae290","unresolved":false,"context_lines":[{"line_number":339,"context_line":"    it needs to be decommissioned on the Distributor and replaced with"},{"line_number":340,"context_line":"    the standby."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"  - Failed Amphorae should be recreated as a standby. The standby Amphora"},{"line_number":343,"context_line":"    should also be monitored and recovered on failure."},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"* Distributor driver and Distributor image"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_8257e2c8","line":342,"updated":"2016-08-23 20:20:28.000000000","message":"How is this \"standby\" tracked.  Is it a new type/state for an amp?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"15c8c470113bb14f5312116c64d9b2b258452f9c","unresolved":false,"context_lines":[{"line_number":339,"context_line":"    it needs to be decommissioned on the Distributor and replaced with"},{"line_number":340,"context_line":"    the standby."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"  - Failed Amphorae should be recreated as a standby. The standby Amphora"},{"line_number":343,"context_line":"    should also be monitored and recovered on failure."},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"* Distributor driver and Distributor image"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_cc93cc59","line":342,"in_reply_to":"1ac06dbe_8257e2c8","updated":"2016-08-23 21:38:35.000000000","message":"Yes. Will clarify.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"26857b7b9afd1664d39dfafd3ccbb1333ffae290","unresolved":false,"context_lines":[{"line_number":352,"context_line":"    As is done for Amphorae, Distributor image should be installed with"},{"line_number":353,"context_line":"    public keys to allow secure configuration by the Octavia controller."},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"  - Reference implementation shall spawn a new Distributor VM as needed. It"},{"line_number":356,"context_line":"    shall monitor its health and handle recovery. [P2]_ Spawn a new"},{"line_number":357,"context_line":"    Distributor if the number VIPs exceeds a given limit (to limit the"},{"line_number":358,"context_line":"    number of Neutron ports attached to one Distributor). [P2]_ Add"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_e2eb36da","line":355,"updated":"2016-08-23 20:20:28.000000000","message":"I think we need some discussion of how the distributor lifecycle will be managed.  I.e. is the health manager managing these as well?  Is there a new entity that handles these?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"15c8c470113bb14f5312116c64d9b2b258452f9c","unresolved":false,"context_lines":[{"line_number":352,"context_line":"    As is done for Amphorae, Distributor image should be installed with"},{"line_number":353,"context_line":"    public keys to allow secure configuration by the Octavia controller."},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"  - Reference implementation shall spawn a new Distributor VM as needed. It"},{"line_number":356,"context_line":"    shall monitor its health and handle recovery. [P2]_ Spawn a new"},{"line_number":357,"context_line":"    Distributor if the number VIPs exceeds a given limit (to limit the"},{"line_number":358,"context_line":"    number of Neutron ports attached to one Distributor). [P2]_ Add"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_6fe0cacd","line":355,"in_reply_to":"1ac06dbe_e2eb36da","updated":"2016-08-23 21:38:35.000000000","message":"Based on our impromptu discussion of this, I\u0027m updating this to specify that the reference distributor implementation will do life-cycle management almost exactly the same way we do it with amphorae today. I am also adding a distributor_health table similar to the amphora_health table to keep distributor health state.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"43a6887e89ca2a4a64c7d57b14f9493c5ee78934","unresolved":false,"context_lines":[{"line_number":386,"context_line":"* status ``(sa.String(36), nullable\u003dTrue)``"},{"line_number":387,"context_line":"    Provisioning status"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"* IPs per LB"},{"line_number":390,"context_line":"    New VIFs are plugged into the Distributor when a new LB is created. We"},{"line_number":391,"context_line":"    may need to store the real IPs or Neutron port in order to support"},{"line_number":392,"context_line":"    fail-over from one Distributor instance to another."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_7d67204d","line":389,"range":{"start_line":389,"start_character":0,"end_line":389,"end_character":12},"updated":"2016-08-23 07:01:08.000000000","message":"This name is confusing to me given the description below. The description below is also somewhat confusing to me. Are you storing an integer in this field, or a list of IP addresses, or neutron port IDs or what?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"b6b7f06f510bd3abf3c5775d0cf7b184b7713f8c","unresolved":false,"context_lines":[{"line_number":386,"context_line":"* status ``(sa.String(36), nullable\u003dTrue)``"},{"line_number":387,"context_line":"    Provisioning status"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"* IPs per LB"},{"line_number":390,"context_line":"    New VIFs are plugged into the Distributor when a new LB is created. We"},{"line_number":391,"context_line":"    may need to store the real IPs or Neutron port in order to support"},{"line_number":392,"context_line":"    fail-over from one Distributor instance to another."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_8aec2b2b","line":389,"range":{"start_line":389,"start_character":0,"end_line":389,"end_character":12},"in_reply_to":"1ac06dbe_7d67204d","updated":"2016-08-23 16:19:16.000000000","message":"Added clarification.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"2c7ff9d9771914d485495f4129752af9c37a55ce","unresolved":false,"context_lines":[{"line_number":386,"context_line":"* status ``(sa.String(36), nullable\u003dTrue)``"},{"line_number":387,"context_line":"    Provisioning status"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"* IPs per LB"},{"line_number":390,"context_line":"    New VIFs are plugged into the Distributor when a new LB is created. We"},{"line_number":391,"context_line":"    may need to store the real IPs or Neutron port in order to support"},{"line_number":392,"context_line":"    fail-over from one Distributor instance to another."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_a4596037","line":389,"range":{"start_line":389,"start_character":0,"end_line":389,"end_character":12},"in_reply_to":"1ac06dbe_7d67204d","updated":"2016-08-23 15:43:24.000000000","message":"Talked with Lera, and we\u0027re not sure what this is. We think it\u0027s an outdated part of a previous spec revision, so we\u0027re going to just remove it for now.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"26857b7b9afd1664d39dfafd3ccbb1333ffae290","unresolved":false,"context_lines":[{"line_number":386,"context_line":"* status ``(sa.String(36), nullable\u003dTrue)``"},{"line_number":387,"context_line":"    Provisioning status"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"* IPs per LB"},{"line_number":390,"context_line":"    New VIFs are plugged into the Distributor when a new LB is created. We"},{"line_number":391,"context_line":"    may need to store the real IPs or Neutron port in order to support"},{"line_number":392,"context_line":"    fail-over from one Distributor instance to another."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_162fb388","line":389,"range":{"start_line":389,"start_character":0,"end_line":389,"end_character":12},"in_reply_to":"1ac06dbe_8aec2b2b","updated":"2016-08-23 20:20:28.000000000","message":"Yeah, I agree with Stephen on this.  This needs more clarification.\n\nHow does a distributor that restarts know it\u0027s list of registered \"member amphora\"?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"26857b7b9afd1664d39dfafd3ccbb1333ffae290","unresolved":false,"context_lines":[{"line_number":387,"context_line":"    Provisioning status"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"* IPs per LB"},{"line_number":390,"context_line":"    New VIFs are plugged into the Distributor when a new LB is created. We"},{"line_number":391,"context_line":"    may need to store the real IPs or Neutron port in order to support"},{"line_number":392,"context_line":"    fail-over from one Distributor instance to another."},{"line_number":393,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_8211a25f","line":390,"range":{"start_line":390,"start_character":8,"end_line":390,"end_character":12},"updated":"2016-08-23 20:20:28.000000000","message":"Is this the right term?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"15c8c470113bb14f5312116c64d9b2b258452f9c","unresolved":false,"context_lines":[{"line_number":387,"context_line":"    Provisioning status"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"* IPs per LB"},{"line_number":390,"context_line":"    New VIFs are plugged into the Distributor when a new LB is created. We"},{"line_number":391,"context_line":"    may need to store the real IPs or Neutron port in order to support"},{"line_number":392,"context_line":"    fail-over from one Distributor instance to another."},{"line_number":393,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_8fe9c6b9","line":390,"range":{"start_line":390,"start_character":8,"end_line":390,"end_character":12},"in_reply_to":"1ac06dbe_8211a25f","updated":"2016-08-23 21:38:35.000000000","message":"Virtual Interfaces? I\u0027m not sure. Happy to update this if you\u0027d rather we use a different term.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"26857b7b9afd1664d39dfafd3ccbb1333ffae290","unresolved":false,"context_lines":[{"line_number":396,"context_line":"Distributor will be running its own rest API server."},{"line_number":397,"context_line":"Following api calls will be addressed."},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"1. Plug VIP / Unplug VIP"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"   Connect to the VIP network and create new interface / Disconnect and"},{"line_number":402,"context_line":"   delete exiting one. Called directly by controller, not REST, similar to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_d6db5b7a","line":399,"updated":"2016-08-23 20:20:28.000000000","message":"To be consistent with Octavia and amps, this would be the \"PostVIPPlug\" interface.  Plug VIP is the neutron port plug, PostVIPPlus is the OS config and bring up of the plugged interface.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"15c8c470113bb14f5312116c64d9b2b258452f9c","unresolved":false,"context_lines":[{"line_number":396,"context_line":"Distributor will be running its own rest API server."},{"line_number":397,"context_line":"Following api calls will be addressed."},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"1. Plug VIP / Unplug VIP"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"   Connect to the VIP network and create new interface / Disconnect and"},{"line_number":402,"context_line":"   delete exiting one. Called directly by controller, not REST, similar to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_af3ac2e4","line":399,"in_reply_to":"1ac06dbe_d6db5b7a","updated":"2016-08-23 21:38:35.000000000","message":"Clarifying.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"26857b7b9afd1664d39dfafd3ccbb1333ffae290","unresolved":false,"context_lines":[{"line_number":399,"context_line":"1. Plug VIP / Unplug VIP"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"   Connect to the VIP network and create new interface / Disconnect and"},{"line_number":402,"context_line":"   delete exiting one. Called directly by controller, not REST, similar to"},{"line_number":403,"context_line":"   what is currently done for Amphorae."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"2. Create LB"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_9628c334","line":402,"range":{"start_line":402,"start_character":54,"end_line":402,"end_character":62},"updated":"2016-08-23 20:20:28.000000000","message":"What?  Not REST?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"15c8c470113bb14f5312116c64d9b2b258452f9c","unresolved":false,"context_lines":[{"line_number":399,"context_line":"1. Plug VIP / Unplug VIP"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"   Connect to the VIP network and create new interface / Disconnect and"},{"line_number":402,"context_line":"   delete exiting one. Called directly by controller, not REST, similar to"},{"line_number":403,"context_line":"   what is currently done for Amphorae."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"2. Create LB"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_4a533c17","line":402,"range":{"start_line":402,"start_character":54,"end_line":402,"end_character":62},"in_reply_to":"1ac06dbe_9628c334","updated":"2016-08-23 21:38:35.000000000","message":"It\u0027s REST. Fixing.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"c6a4c231250d636e4b11946c610140439187858f","unresolved":false,"context_lines":[{"line_number":644,"context_line":"    sticky-tables to track the flows. Note that the Distributor only needs to"},{"line_number":645,"context_line":"    track the mapping per source IP and source port (unlike Linux connection"},{"line_number":646,"context_line":"    tracking which follows the TCP state and related connections)."},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"Forwarding Data-path Implementation Alternatives"},{"line_number":649,"context_line":"------------------------------------------------"},{"line_number":650,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_ae1bf27f","line":647,"updated":"2016-08-23 17:43:10.000000000","message":"Can we add information regarding Ryu. I believe utilizing this binding is probably even valid as the ref impl as it provides a highly tested, stable and fault tolerant way of communicating with the flows.I would honestly like to see an abstraction layer around the ofp layer that way RYU or other controllers can easily be plugged in and utilized.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"a3597911587496aa1e4016b7554ce4853dea5f4c","unresolved":false,"context_lines":[{"line_number":644,"context_line":"    sticky-tables to track the flows. Note that the Distributor only needs to"},{"line_number":645,"context_line":"    track the mapping per source IP and source port (unlike Linux connection"},{"line_number":646,"context_line":"    tracking which follows the TCP state and related connections)."},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"Forwarding Data-path Implementation Alternatives"},{"line_number":649,"context_line":"------------------------------------------------"},{"line_number":650,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_09c3208a","line":647,"in_reply_to":"1ac06dbe_ae1bf27f","updated":"2016-08-23 17:46:48.000000000","message":"Here\u0027s a neutron spec detailing their switch to Ryu.\nhttps://specs.openstack.org/openstack/neutron-specs/specs/liberty/ovs-ofctl-to-python.html","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    single nat or proxy)."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    **Note on TLS implications**:"},{"line_number":198,"context_line":"      In some (typical) TLS sessions the additional load incurred for each"},{"line_number":199,"context_line":"      new session is significantly larger than the load incurred for each"},{"line_number":200,"context_line":"      new request or connection on the same session; namely, the total load"},{"line_number":201,"context_line":"      on each Amphora will be more affected by the number of different"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_b6fdff6f","line":198,"range":{"start_line":198,"start_character":28,"end_line":198,"end_character":36},"updated":"2016-08-23 21:58:58.000000000","message":"comma needed after sessions","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":211,"context_line":"      to the new Amphora might increase the overall Cluster load, negating"},{"line_number":212,"context_line":"      the benefit of scaling-out."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"      Session reuse helps with the certificate exchange phase; this, the"},{"line_number":215,"context_line":"      improvement depends on the keys used -- the improvement is greatest"},{"line_number":216,"context_line":"      with RSA and may be less important with other schemes; shared TLS"},{"line_number":217,"context_line":"      session tickets are another mechanism that may circumvent the"},{"line_number":218,"context_line":"      problem; also, upcoming versions of HA-Proxy may be able to obviate"},{"line_number":219,"context_line":"      this problem by synchronizing TLS state between Amphorae (similar to"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_b6e7bfaa","line":216,"range":{"start_line":214,"start_character":63,"end_line":216,"end_character":59},"updated":"2016-08-23 21:58:58.000000000","message":"redo sentence; a bit confusing as to what \u0027this\u0027 is","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":211,"context_line":"      to the new Amphora might increase the overall Cluster load, negating"},{"line_number":212,"context_line":"      the benefit of scaling-out."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"      Session reuse helps with the certificate exchange phase; this, the"},{"line_number":215,"context_line":"      improvement depends on the keys used -- the improvement is greatest"},{"line_number":216,"context_line":"      with RSA and may be less important with other schemes; shared TLS"},{"line_number":217,"context_line":"      session tickets are another mechanism that may circumvent the"},{"line_number":218,"context_line":"      problem; also, upcoming versions of HA-Proxy may be able to obviate"},{"line_number":219,"context_line":"      this problem by synchronizing TLS state between Amphorae (similar to"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_c011cd53","line":216,"range":{"start_line":214,"start_character":63,"end_line":216,"end_character":59},"in_reply_to":"1ac06dbe_b6e7bfaa","updated":"2016-08-23 22:19:56.000000000","message":"Clarifying.","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":22968,"name":"KRISHNA MOULI. TANKALA","email":"krishna-mouli.tankala@hpe.com","username":"mouli"},"change_message_id":"3a3c6e92826c80c3b56d4fe16c01e55b3314a515","unresolved":false,"context_lines":[{"line_number":234,"context_line":"    can run on a VM. Thus, can be created and managed by Octavia similarly"},{"line_number":235,"context_line":"    to creation and management of Amphora VMs."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"  - OpenFlow rules are supported by several HW switches, so a the same"},{"line_number":238,"context_line":"    control plane can be used for both SW and HW implementations."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"* Outline of Rules"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_7c988b6a","line":237,"range":{"start_line":237,"start_character":57,"end_line":237,"end_character":70},"updated":"2016-08-23 19:47:12.000000000","message":"Typo","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5ce1b2b2592def011ff61c4fa5bbb4b11bc0eda2","unresolved":false,"context_lines":[{"line_number":234,"context_line":"    can run on a VM. Thus, can be created and managed by Octavia similarly"},{"line_number":235,"context_line":"    to creation and management of Amphora VMs."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"  - OpenFlow rules are supported by several HW switches, so a the same"},{"line_number":238,"context_line":"    control plane can be used for both SW and HW implementations."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"* Outline of Rules"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_c2755a64","line":237,"range":{"start_line":237,"start_character":57,"end_line":237,"end_character":70},"in_reply_to":"1ac06dbe_7c988b6a","updated":"2016-08-23 19:56:38.000000000","message":"Fixed.","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":345,"context_line":"* Distributor driver and Distributor image"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"  - The Distributor should be supported similarly to an amphora; namely, have"},{"line_number":348,"context_line":"    its own abstract driver"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"  - Distributor image (for reference implementation) should include OVS"},{"line_number":351,"context_line":"    with a recent version (\u003e1.5) that supports hash-based bucket selection."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_b9b33009","line":348,"range":{"start_line":348,"start_character":21,"end_line":348,"end_character":27},"updated":"2016-08-23 21:58:58.000000000","message":"period needed after driver","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":345,"context_line":"* Distributor driver and Distributor image"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"  - The Distributor should be supported similarly to an amphora; namely, have"},{"line_number":348,"context_line":"    its own abstract driver"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"  - Distributor image (for reference implementation) should include OVS"},{"line_number":351,"context_line":"    with a recent version (\u003e1.5) that supports hash-based bucket selection."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_6029f989","line":348,"range":{"start_line":348,"start_character":21,"end_line":348,"end_character":27},"in_reply_to":"1ac06dbe_b9b33009","updated":"2016-08-23 22:19:56.000000000","message":"Done","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":362,"context_line":"* Define a REST API for Distributor configuration (no SSH API)."},{"line_number":363,"context_line":"  See below for details."},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"* Create data-model for Distributor"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"Alternatives"},{"line_number":368,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_0cc32458","line":365,"range":{"start_line":365,"start_character":24,"end_line":365,"end_character":35},"updated":"2016-08-23 21:58:58.000000000","message":"period needed after Distributor","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":362,"context_line":"* Define a REST API for Distributor configuration (no SSH API)."},{"line_number":363,"context_line":"  See below for details."},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"* Create data-model for Distributor"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"Alternatives"},{"line_number":368,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_a01f7159","line":365,"range":{"start_line":365,"start_character":24,"end_line":365,"end_character":35},"in_reply_to":"1ac06dbe_0cc32458","updated":"2016-08-23 22:19:56.000000000","message":"Done","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":444,"context_line":"     Identifier to determine to which loadbalancer VIP that is being updated."},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"   `failed_amphora` (``[amphora_id, mac_address]``)"},{"line_number":447,"context_line":"     Identifier and MACC of failed Amphora."},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"   `replacement_amphora` (``[amphora_id, mac_address]``)"},{"line_number":450,"context_line":"     Identifier and MACC of new Amphora."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_2c2f00a2","line":447,"range":{"start_line":447,"start_character":20,"end_line":447,"end_character":24},"updated":"2016-08-23 21:58:58.000000000","message":"nit:MAC","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":444,"context_line":"     Identifier to determine to which loadbalancer VIP that is being updated."},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"   `failed_amphora` (``[amphora_id, mac_address]``)"},{"line_number":447,"context_line":"     Identifier and MACC of failed Amphora."},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"   `replacement_amphora` (``[amphora_id, mac_address]``)"},{"line_number":450,"context_line":"     Identifier and MACC of new Amphora."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_e03de9c4","line":447,"range":{"start_line":447,"start_character":20,"end_line":447,"end_character":24},"in_reply_to":"1ac06dbe_2c2f00a2","updated":"2016-08-23 22:19:56.000000000","message":"Done","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":447,"context_line":"     Identifier and MACC of failed Amphora."},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"   `replacement_amphora` (``[amphora_id, mac_address]``)"},{"line_number":450,"context_line":"     Identifier and MACC of new Amphora."},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"4. Delete LB"},{"line_number":453,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_af080229","line":450,"range":{"start_line":450,"start_character":20,"end_line":450,"end_character":24},"updated":"2016-08-23 21:58:58.000000000","message":"as above","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":447,"context_line":"     Identifier and MACC of failed Amphora."},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"   `replacement_amphora` (``[amphora_id, mac_address]``)"},{"line_number":450,"context_line":"     Identifier and MACC of new Amphora."},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"4. Delete LB"},{"line_number":453,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_c038add5","line":450,"range":{"start_line":450,"start_character":20,"end_line":450,"end_character":24},"in_reply_to":"1ac06dbe_af080229","updated":"2016-08-23 22:19:56.000000000","message":"Done","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":524,"context_line":"  future/alternative design and some will hopefully make their way into, yet"},{"line_number":525,"context_line":"  to be written, related blueprints (e.g., auto-scaled topology)."},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"[P2]_ Handling a changes in Cluster size (manual or auto-scaled)"},{"line_number":528,"context_line":"----------------------------------------------------------------"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"- The Distributor shall support different mechanism for preserving affinity"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_afc922ae","line":527,"range":{"start_line":527,"start_character":15,"end_line":527,"end_character":16},"updated":"2016-08-23 21:58:58.000000000","message":"remove \u0027a\u0027 or replace with \u0027any\u0027?","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":524,"context_line":"  future/alternative design and some will hopefully make their way into, yet"},{"line_number":525,"context_line":"  to be written, related blueprints (e.g., auto-scaled topology)."},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"[P2]_ Handling a changes in Cluster size (manual or auto-scaled)"},{"line_number":528,"context_line":"----------------------------------------------------------------"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"- The Distributor shall support different mechanism for preserving affinity"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_e044c94a","line":527,"range":{"start_line":527,"start_character":15,"end_line":527,"end_character":16},"in_reply_to":"1ac06dbe_afc922ae","updated":"2016-08-23 22:19:56.000000000","message":"Just removing \u0027a\u0027","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":540,"context_line":""},{"line_number":541,"context_line":"  * When an Amphora is *added* to the Cluster (e.g., recovery of a failed"},{"line_number":542,"context_line":"    Amphora), some new flows should be distributed to the new Amphora;"},{"line_number":543,"context_line":"    however, most flows should still go to the same Amphora they were"},{"line_number":544,"context_line":"    distributed to before the new Amphora was added. For example, if the"},{"line_number":545,"context_line":"    affinity of flows to Amphorae is per Source IP and a new Amphora was just"},{"line_number":546,"context_line":"    added then the Distributor should forward packets from this IP only one"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_6f3a8a9a","line":543,"range":{"start_line":543,"start_character":59,"end_line":543,"end_character":60},"updated":"2016-08-23 21:58:58.000000000","message":"add \u0027that\u0027","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":540,"context_line":""},{"line_number":541,"context_line":"  * When an Amphora is *added* to the Cluster (e.g., recovery of a failed"},{"line_number":542,"context_line":"    Amphora), some new flows should be distributed to the new Amphora;"},{"line_number":543,"context_line":"    however, most flows should still go to the same Amphora they were"},{"line_number":544,"context_line":"    distributed to before the new Amphora was added. For example, if the"},{"line_number":545,"context_line":"    affinity of flows to Amphorae is per Source IP and a new Amphora was just"},{"line_number":546,"context_line":"    added then the Distributor should forward packets from this IP only one"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_008be568","line":543,"range":{"start_line":543,"start_character":59,"end_line":543,"end_character":60},"in_reply_to":"1ac06dbe_6f3a8a9a","updated":"2016-08-23 22:19:56.000000000","message":"Not actually necessary here. :)","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":547,"context_line":"    of only two Amphorae: either the same Amphora as before or the"},{"line_number":548,"context_line":"    Amphora that was added."},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"  Using a simple hash to maintain affinity does not meet this  goal."},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"  For example, suppose we maintain affinity (for a fixed cluster size) using"},{"line_number":553,"context_line":"  a hash (for randomizing key distribution) as"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_cf49fe32","line":550,"range":{"start_line":550,"start_character":61,"end_line":550,"end_character":63},"updated":"2016-08-23 21:58:58.000000000","message":"remove extra space","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":547,"context_line":"    of only two Amphorae: either the same Amphora as before or the"},{"line_number":548,"context_line":"    Amphora that was added."},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"  Using a simple hash to maintain affinity does not meet this  goal."},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"  For example, suppose we maintain affinity (for a fixed cluster size) using"},{"line_number":553,"context_line":"  a hash (for randomizing key distribution) as"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_a0f2d103","line":550,"range":{"start_line":550,"start_character":61,"end_line":550,"end_character":63},"in_reply_to":"1ac06dbe_cf49fe32","updated":"2016-08-23 22:19:56.000000000","message":"Done","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":627,"context_line":"  flows are remapped. The Distributor may support different modes, as follows."},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"  *None / Stateless*"},{"line_number":630,"context_line":"    In this mode the Distributor applies its most recent forwarding rules,"},{"line_number":631,"context_line":"    regardless of previous state. Some existing flows might be remapped to a"},{"line_number":632,"context_line":"    different Amphora and would be broken. The client would have to recover"},{"line_number":633,"context_line":"    and establish a connection with the new Amphora (it would be still be"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_8f84260b","line":630,"range":{"start_line":630,"start_character":16,"end_line":630,"end_character":17},"updated":"2016-08-23 21:58:58.000000000","message":"comma needed","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":627,"context_line":"  flows are remapped. The Distributor may support different modes, as follows."},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"  *None / Stateless*"},{"line_number":630,"context_line":"    In this mode the Distributor applies its most recent forwarding rules,"},{"line_number":631,"context_line":"    regardless of previous state. Some existing flows might be remapped to a"},{"line_number":632,"context_line":"    different Amphora and would be broken. The client would have to recover"},{"line_number":633,"context_line":"    and establish a connection with the new Amphora (it would be still be"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_a05771c8","line":630,"range":{"start_line":630,"start_character":16,"end_line":630,"end_character":17},"in_reply_to":"1ac06dbe_8f84260b","updated":"2016-08-23 22:19:56.000000000","message":"Done","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":630,"context_line":"    In this mode the Distributor applies its most recent forwarding rules,"},{"line_number":631,"context_line":"    regardless of previous state. Some existing flows might be remapped to a"},{"line_number":632,"context_line":"    different Amphora and would be broken. The client would have to recover"},{"line_number":633,"context_line":"    and establish a connection with the new Amphora (it would be still be"},{"line_number":634,"context_line":"    mapped to the same back-end, if possible). Combined with consistent (or"},{"line_number":635,"context_line":"    similar) hashing, this may be good enough for many web applications"},{"line_number":636,"context_line":"    that are built for failure anyway, and can restore their state upon"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_af98026b","line":633,"range":{"start_line":633,"start_character":62,"end_line":633,"end_character":64},"updated":"2016-08-23 21:58:58.000000000","message":"remove \u0027be\u0027","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":630,"context_line":"    In this mode the Distributor applies its most recent forwarding rules,"},{"line_number":631,"context_line":"    regardless of previous state. Some existing flows might be remapped to a"},{"line_number":632,"context_line":"    different Amphora and would be broken. The client would have to recover"},{"line_number":633,"context_line":"    and establish a connection with the new Amphora (it would be still be"},{"line_number":634,"context_line":"    mapped to the same back-end, if possible). Combined with consistent (or"},{"line_number":635,"context_line":"    similar) hashing, this may be good enough for many web applications"},{"line_number":636,"context_line":"    that are built for failure anyway, and can restore their state upon"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_805a35f0","line":633,"range":{"start_line":633,"start_character":62,"end_line":633,"end_character":64},"in_reply_to":"1ac06dbe_af98026b","updated":"2016-08-23 22:19:56.000000000","message":"Done","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":699,"context_line":"-------------------"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"- The implementation should support different Distributor sharing and"},{"line_number":702,"context_line":"  cardinality configurations,  including, single-shared Distributor,"},{"line_number":703,"context_line":"  multiple-dedicated Distributors, and multiple-shared Distributors. In"},{"line_number":704,"context_line":"  particular, an abstraction layer should be used and the data-model should"},{"line_number":705,"context_line":"  include an association between the load-balancer and Distributor."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_2fdb721c","line":702,"range":{"start_line":702,"start_character":30,"end_line":702,"end_character":31},"updated":"2016-08-23 21:58:58.000000000","message":"remove extra space","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":699,"context_line":"-------------------"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"- The implementation should support different Distributor sharing and"},{"line_number":702,"context_line":"  cardinality configurations,  including, single-shared Distributor,"},{"line_number":703,"context_line":"  multiple-dedicated Distributors, and multiple-shared Distributors. In"},{"line_number":704,"context_line":"  particular, an abstraction layer should be used and the data-model should"},{"line_number":705,"context_line":"  include an association between the load-balancer and Distributor."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_a025b15c","line":702,"range":{"start_line":702,"start_character":30,"end_line":702,"end_character":31},"in_reply_to":"1ac06dbe_2fdb721c","updated":"2016-08-23 22:19:56.000000000","message":"Done","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"097022e5bbc283ff34f0a4dffebf334f26335e4a","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This blueprint describes how Octavia implements a *Distributor* to support"},{"line_number":19,"context_line":"the *active-active* loadbalancer (LB) solution, as described in"},{"line_number":20,"context_line":"https://blueprints.launchpad.net/octavia/+spec/active-active-topology."},{"line_number":21,"context_line":"It presents the high-level Distributor design and suggests high-level code"},{"line_number":22,"context_line":"changes to the current code base to realize this design."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_2f5532c5","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":69},"updated":"2016-08-23 22:16:30.000000000","message":"You\u0027ve linked this in line 16, I would probably just say \"as described in the blueprint.\"","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This blueprint describes how Octavia implements a *Distributor* to support"},{"line_number":19,"context_line":"the *active-active* loadbalancer (LB) solution, as described in"},{"line_number":20,"context_line":"https://blueprints.launchpad.net/octavia/+spec/active-active-topology."},{"line_number":21,"context_line":"It presents the high-level Distributor design and suggests high-level code"},{"line_number":22,"context_line":"changes to the current code base to realize this design."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_74fd326d","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":69},"in_reply_to":"1ac06dbe_2f5532c5","updated":"2016-08-24 03:31:01.000000000","message":"Done","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"097022e5bbc283ff34f0a4dffebf334f26335e4a","unresolved":false,"context_lines":[{"line_number":22,"context_line":"changes to the current code base to realize this design."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"In a nutshell, in an *active-active* topology, an *Amphora Cluster* of two"},{"line_number":25,"context_line":"or more active Amphorae, collectively provide the loadbalancing service."},{"line_number":26,"context_line":"It is designed as a 2-step loadbalancing process; first, a lightweight"},{"line_number":27,"context_line":"*distribution* of VIP traffic over an Amphora Cluster; then, full-featured"},{"line_number":28,"context_line":"loadbalancing of traffic over the back-end members. Since a single"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_4f0b4ed6","line":25,"range":{"start_line":25,"start_character":23,"end_line":25,"end_character":24},"updated":"2016-08-23 22:16:30.000000000","message":"nit: no reason to have a comma here.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"changes to the current code base to realize this design."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"In a nutshell, in an *active-active* topology, an *Amphora Cluster* of two"},{"line_number":25,"context_line":"or more active Amphorae, collectively provide the loadbalancing service."},{"line_number":26,"context_line":"It is designed as a 2-step loadbalancing process; first, a lightweight"},{"line_number":27,"context_line":"*distribution* of VIP traffic over an Amphora Cluster; then, full-featured"},{"line_number":28,"context_line":"loadbalancing of traffic over the back-end members. Since a single"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_b4fb2a78","line":25,"range":{"start_line":25,"start_character":23,"end_line":25,"end_character":24},"in_reply_to":"1ac06dbe_4f0b4ed6","updated":"2016-08-24 03:31:01.000000000","message":"Done","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"097022e5bbc283ff34f0a4dffebf334f26335e4a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"incoming requests among these Amphorae -- that is the role of the"},{"line_number":32,"context_line":"*Distributor*."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"This blueprint uses terminology defined in Octavia glossary when available,"},{"line_number":35,"context_line":"and defines new terms to describe new components and features as necessary."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":".. _P2:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_8f28a634","line":34,"range":{"start_line":34,"start_character":40,"end_line":34,"end_character":50},"updated":"2016-08-23 22:16:30.000000000","message":"nit: in the Octavia","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"incoming requests among these Amphorae -- that is the role of the"},{"line_number":32,"context_line":"*Distributor*."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"This blueprint uses terminology defined in Octavia glossary when available,"},{"line_number":35,"context_line":"and defines new terms to describe new components and features as necessary."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":".. _P2:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_943d4e2d","line":34,"range":{"start_line":34,"start_character":40,"end_line":34,"end_character":50},"in_reply_to":"1ac06dbe_8f28a634","updated":"2016-08-24 03:31:01.000000000","message":"Done","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"097022e5bbc283ff34f0a4dffebf334f26335e4a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"  topology."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"* The operator should be able to select and configure the Distributor"},{"line_number":49,"context_line":"  (e.g., through an Octavia configuration file or [P2]_ through a Neutron"},{"line_number":50,"context_line":"  flavor)."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"* Octavia shall support a pluggable design for the Distributor, allowing"},{"line_number":53,"context_line":"  different implementations. In particular, the Distributor shall be"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_2f76d23d","line":50,"range":{"start_line":49,"start_character":47,"end_line":50,"end_character":8},"updated":"2016-08-23 22:16:30.000000000","message":"nit: I\u0027m not sure \"Neutron flavor\" should actually be mentioned here, since it may never exist.  Possibly just reference a vague \"structure\" of sorts, like \"or [P2]_ through a flavor framework\"","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":46,"context_line":"  topology."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"* The operator should be able to select and configure the Distributor"},{"line_number":49,"context_line":"  (e.g., through an Octavia configuration file or [P2]_ through a Neutron"},{"line_number":50,"context_line":"  flavor)."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"* Octavia shall support a pluggable design for the Distributor, allowing"},{"line_number":53,"context_line":"  different implementations. In particular, the Distributor shall be"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_740b727d","line":50,"range":{"start_line":49,"start_character":47,"end_line":50,"end_character":8},"in_reply_to":"1ac06dbe_2f76d23d","updated":"2016-08-24 03:31:01.000000000","message":"Done","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"097022e5bbc283ff34f0a4dffebf334f26335e4a","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* Octavia shall support different provisioning types for the Distributor;"},{"line_number":58,"context_line":"  including VM-based (the default, similar to current Amphorae),"},{"line_number":59,"context_line":"  [P2]_ container-based, and external (vendor-specific) hardware."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* The operator shall be able to configure the distribution policies,"},{"line_number":62,"context_line":"  including affinity and availability (see below for details)."}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_2fc4123e","line":59,"range":{"start_line":59,"start_character":25,"end_line":59,"end_character":64},"updated":"2016-08-23 22:16:30.000000000","message":"nit: and [P2]_ external (vendor-specific) hardware.\n\nJust to be more clear that this doesn\u0027t exist yet.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* Octavia shall support different provisioning types for the Distributor;"},{"line_number":58,"context_line":"  including VM-based (the default, similar to current Amphorae),"},{"line_number":59,"context_line":"  [P2]_ container-based, and external (vendor-specific) hardware."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* The operator shall be able to configure the distribution policies,"},{"line_number":62,"context_line":"  including affinity and availability (see below for details)."}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_94526e65","line":59,"range":{"start_line":59,"start_character":25,"end_line":59,"end_character":64},"in_reply_to":"1ac06dbe_2fc4123e","updated":"2016-08-24 03:31:01.000000000","message":"Done","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"097022e5bbc283ff34f0a4dffebf334f26335e4a","unresolved":false,"context_lines":[{"line_number":111,"context_line":"  security of a shared distributor can be implemented."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"* The Distributor acts as a (one-legged) router, listening on each"},{"line_number":114,"context_line":"  loadbalancers\u0027 VIPs and forwarding to one of its Amphorae."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* Each Load balancer\u0027s VIP is advertised and answered by the Distributor."},{"line_number":117,"context_line":"  An ``arp`` request for any of the VIP addresses is answered by the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_8ab6d4f6","line":114,"range":{"start_line":114,"start_character":20,"end_line":114,"end_character":21},"updated":"2016-08-23 22:16:30.000000000","message":"nit: a loadbalancer doesn\u0027t have multiple VIPs.  Wording should be \"listening on each loadbalancers\u0027 VIP and forwarding...\"","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":111,"context_line":"  security of a shared distributor can be implemented."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"* The Distributor acts as a (one-legged) router, listening on each"},{"line_number":114,"context_line":"  loadbalancers\u0027 VIPs and forwarding to one of its Amphorae."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* Each Load balancer\u0027s VIP is advertised and answered by the Distributor."},{"line_number":117,"context_line":"  An ``arp`` request for any of the VIP addresses is answered by the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_749ed207","line":114,"range":{"start_line":114,"start_character":20,"end_line":114,"end_character":21},"in_reply_to":"1ac06dbe_8ab6d4f6","updated":"2016-08-24 03:31:01.000000000","message":"Done","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"097022e5bbc283ff34f0a4dffebf334f26335e4a","unresolved":false,"context_lines":[{"line_number":113,"context_line":"* The Distributor acts as a (one-legged) router, listening on each"},{"line_number":114,"context_line":"  loadbalancers\u0027 VIPs and forwarding to one of its Amphorae."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* Each Load balancer\u0027s VIP is advertised and answered by the Distributor."},{"line_number":117,"context_line":"  An ``arp`` request for any of the VIP addresses is answered by the"},{"line_number":118,"context_line":"  Distributor, hence any traffic sent for each VIP is received by the"},{"line_number":119,"context_line":"  Distributor (and forwarded to an appropriate Amphora)."}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_0abf84aa","line":116,"range":{"start_line":116,"start_character":7,"end_line":116,"end_character":20},"updated":"2016-08-23 22:16:30.000000000","message":"nit: bullet above you write \"loadbalancer\" as one word.  Should stay consistent across the document.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":113,"context_line":"* The Distributor acts as a (one-legged) router, listening on each"},{"line_number":114,"context_line":"  loadbalancers\u0027 VIPs and forwarding to one of its Amphorae."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* Each Load balancer\u0027s VIP is advertised and answered by the Distributor."},{"line_number":117,"context_line":"  An ``arp`` request for any of the VIP addresses is answered by the"},{"line_number":118,"context_line":"  Distributor, hence any traffic sent for each VIP is received by the"},{"line_number":119,"context_line":"  Distributor (and forwarded to an appropriate Amphora)."}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_b48ccada","line":116,"range":{"start_line":116,"start_character":7,"end_line":116,"end_character":20},"in_reply_to":"1ac06dbe_0abf84aa","updated":"2016-08-24 03:31:01.000000000","message":"Done","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"097022e5bbc283ff34f0a4dffebf334f26335e4a","unresolved":false,"context_lines":[{"line_number":121,"context_line":"* ARP is disabled on all the Amphorae for the VIP interface."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"* The Distributor distributes the traffic of each VIP to an Amphora in the"},{"line_number":124,"context_line":"  corresponding load-balancer Cluster."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"* An example of high-level data flow:"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_ea05c845","line":124,"range":{"start_line":124,"start_character":16,"end_line":124,"end_character":29},"updated":"2016-08-23 22:16:30.000000000","message":"nit: parity with above references.  \"loadbalancer\"","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":121,"context_line":"* ARP is disabled on all the Amphorae for the VIP interface."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"* The Distributor distributes the traffic of each VIP to an Amphora in the"},{"line_number":124,"context_line":"  corresponding load-balancer Cluster."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"* An example of high-level data flow:"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_34bf3a62","line":124,"range":{"start_line":124,"start_character":16,"end_line":124,"end_character":29},"in_reply_to":"1ac06dbe_ea05c845","updated":"2016-08-24 03:31:01.000000000","message":"Done","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4f8be4b3b990ee670ffb3c480b48c03f6951d91d","unresolved":false,"context_lines":[{"line_number":388,"context_line":"* status ``(sa.String(36), nullable\u003dTrue)``"},{"line_number":389,"context_line":"    Provisioning status"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"* connected_ports (list of ``sa.String(36)``)"},{"line_number":392,"context_line":"    List of Neutron port IDs."},{"line_number":393,"context_line":"    New VIFs may be plugged into the Distributor when a new LB is created. We"},{"line_number":394,"context_line":"    may need to store the Neutron port IDs in order to support"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_16bfb3aa","line":391,"updated":"2016-08-23 20:29:38.000000000","message":"Ok, i\u0027m not sure this is much better.\nThis is a list of distributor VIP port IDs, right?","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5d796b72686d711087ca7350db28db19d02d8df3","unresolved":false,"context_lines":[{"line_number":388,"context_line":"* status ``(sa.String(36), nullable\u003dTrue)``"},{"line_number":389,"context_line":"    Provisioning status"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"* connected_ports (list of ``sa.String(36)``)"},{"line_number":392,"context_line":"    List of Neutron port IDs."},{"line_number":393,"context_line":"    New VIFs may be plugged into the Distributor when a new LB is created. We"},{"line_number":394,"context_line":"    may need to store the Neutron port IDs in order to support"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_8af534ee","line":391,"in_reply_to":"1ac06dbe_16bfb3aa","updated":"2016-08-23 22:20:03.000000000","message":"Updating the name to be more descriptive.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4f8be4b3b990ee670ffb3c480b48c03f6951d91d","unresolved":false,"context_lines":[{"line_number":413,"context_line":"     An identifier for the particular loadbalancer/VIP. Used for subsequent"},{"line_number":414,"context_line":"     register/unregister of Amphorae."},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"   `vip_subnet_id`"},{"line_number":417,"context_line":"     The UUID of the subnet on which the VIP resides (on which net to"},{"line_number":418,"context_line":"     answer ``arp`` requests)"},{"line_number":419,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_164973b7","line":416,"updated":"2016-08-23 20:29:38.000000000","message":"Should the distributor be talking to neutron?   Could the controller talk to neutron and plug the port?  Hmm, this brings up my question about who is managing the distributor lifecycle.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5d796b72686d711087ca7350db28db19d02d8df3","unresolved":false,"context_lines":[{"line_number":413,"context_line":"     An identifier for the particular loadbalancer/VIP. Used for subsequent"},{"line_number":414,"context_line":"     register/unregister of Amphorae."},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"   `vip_subnet_id`"},{"line_number":417,"context_line":"     The UUID of the subnet on which the VIP resides (on which net to"},{"line_number":418,"context_line":"     answer ``arp`` requests)"},{"line_number":419,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_6550eb0b","line":416,"in_reply_to":"1ac06dbe_164973b7","updated":"2016-08-23 22:20:03.000000000","message":"done","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4f8be4b3b990ee670ffb3c480b48c03f6951d91d","unresolved":false,"context_lines":[{"line_number":417,"context_line":"     The UUID of the subnet on which the VIP resides (on which net to"},{"line_number":418,"context_line":"     answer ``arp`` requests)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"   `tenant_id`"},{"line_number":421,"context_line":"     The UUID if the tenant who owns this VIP. (Might be needed to plug"},{"line_number":422,"context_line":"     into net)"},{"line_number":423,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_d6d99bf4","line":420,"updated":"2016-08-23 20:29:38.000000000","message":"project_id, tenant_id is deprecated","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4f8be4b3b990ee670ffb3c480b48c03f6951d91d","unresolved":false,"context_lines":[{"line_number":424,"context_line":"   `vip_address`"},{"line_number":425,"context_line":"     The IP of the VIP (for which IP to answer ``arp`` requests)"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"   `algorithm` (optional)"},{"line_number":428,"context_line":"     The distribution algorithm to use. Currently only supported algorithm"},{"line_number":429,"context_line":"     would be *hash* (uniform with no weights)."},{"line_number":430,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_96b8c376","line":427,"updated":"2016-08-23 20:29:38.000000000","message":"Data model?","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5d796b72686d711087ca7350db28db19d02d8df3","unresolved":false,"context_lines":[{"line_number":424,"context_line":"   `vip_address`"},{"line_number":425,"context_line":"     The IP of the VIP (for which IP to answer ``arp`` requests)"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"   `algorithm` (optional)"},{"line_number":428,"context_line":"     The distribution algorithm to use. Currently only supported algorithm"},{"line_number":429,"context_line":"     would be *hash* (uniform with no weights)."},{"line_number":430,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_85a7e709","line":427,"in_reply_to":"1ac06dbe_96b8c376","updated":"2016-08-23 22:20:03.000000000","message":"Looks like this is globally configurable. Though we will probably want to change this when we implement flavors.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4f8be4b3b990ee670ffb3c480b48c03f6951d91d","unresolved":false,"context_lines":[{"line_number":428,"context_line":"     The distribution algorithm to use. Currently only supported algorithm"},{"line_number":429,"context_line":"     would be *hash* (uniform with no weights)."},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"   `affinity` (optional)"},{"line_number":432,"context_line":"     The fields that will be used for affinity. Supported values will be"},{"line_number":433,"context_line":"     ``Source_IP`` or [P2]_ ``Source_IP_AND_port``."},{"line_number":434,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_d687dbb2","line":431,"updated":"2016-08-23 20:29:38.000000000","message":"This might be confusing with nova affinity/anti-affinity.  I suspect we want an anti-affinity option for creating the distributor \"amp\"","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5d796b72686d711087ca7350db28db19d02d8df3","unresolved":false,"context_lines":[{"line_number":428,"context_line":"     The distribution algorithm to use. Currently only supported algorithm"},{"line_number":429,"context_line":"     would be *hash* (uniform with no weights)."},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"   `affinity` (optional)"},{"line_number":432,"context_line":"     The fields that will be used for affinity. Supported values will be"},{"line_number":433,"context_line":"     ``Source_IP`` or [P2]_ ``Source_IP_AND_port``."},{"line_number":434,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_056777b7","line":431,"in_reply_to":"1ac06dbe_d687dbb2","updated":"2016-08-23 22:20:03.000000000","message":"That\u0027s true, but that wouldn\u0027t affect the back-end distributor API. In this case, this field describes what is being applied to the algorthm above. (Not sure it makes sense to separate these fields, as there are some combinations that probably don\u0027t make sense...)","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4f8be4b3b990ee670ffb3c480b48c03f6951d91d","unresolved":false,"context_lines":[{"line_number":435,"context_line":"   `vip_port_info` (``subnet_cidr, gateway, mac_address``)"},{"line_number":436,"context_line":"     Info about the VIP interface."},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"   `amphorae_macs` (list of ``[amphora_id, mac_address]``)"},{"line_number":439,"context_line":"     List of the active Amphorae that are members of the VIP cluster"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"3. Replace Amphora"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_b6b5ff7e","line":438,"updated":"2016-08-23 20:29:38.000000000","message":"Doesn\u0027t this need to be in the data model above?","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5d796b72686d711087ca7350db28db19d02d8df3","unresolved":false,"context_lines":[{"line_number":435,"context_line":"   `vip_port_info` (``subnet_cidr, gateway, mac_address``)"},{"line_number":436,"context_line":"     Info about the VIP interface."},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"   `amphorae_macs` (list of ``[amphora_id, mac_address]``)"},{"line_number":439,"context_line":"     List of the active Amphorae that are members of the VIP cluster"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"3. Replace Amphora"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_652f4b3f","line":438,"in_reply_to":"1ac06dbe_b6b5ff7e","updated":"2016-08-23 22:20:03.000000000","message":"Actually no-- the distributor is associated with the loadbalancer, which is associated with amphorae. So, keeping track of the amphorae MAC addresses in the distributor table should not be necessary.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"00ef04ddf5a341bc850debdd103ae4653f13be40","unresolved":false,"context_lines":[{"line_number":472,"context_line":"even use the GW HW to implement the Distributor). This"},{"line_number":473,"context_line":"approach might not be considered secure enough for some cases, such as, if"},{"line_number":474,"context_line":"LBaaS is used for internal tier-to-tier communication inside a tenant"},{"line_number":475,"context_line":"network. Some tenants may want their loadbalancer\u0027s VIP to remain private"},{"line_number":476,"context_line":"and their front-end network to be isolated. In these cases, in order to"},{"line_number":477,"context_line":"accomplish active-active for this tenant we would need a separate dedicated"},{"line_number":478,"context_line":"Distributor instance. A dedicated Distributor instance, implemented as a"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_6ca458b9","line":475,"updated":"2016-08-23 21:54:01.000000000","message":"I think we should have a goal, p2 or not, that allows the operator to use per-tenant distributors.  Moreover, there may be clouds that need dedicated distributors for bandwidth/processing power reasons and/or compliance requirements.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":472,"context_line":"even use the GW HW to implement the Distributor). This"},{"line_number":473,"context_line":"approach might not be considered secure enough for some cases, such as, if"},{"line_number":474,"context_line":"LBaaS is used for internal tier-to-tier communication inside a tenant"},{"line_number":475,"context_line":"network. Some tenants may want their loadbalancer\u0027s VIP to remain private"},{"line_number":476,"context_line":"and their front-end network to be isolated. In these cases, in order to"},{"line_number":477,"context_line":"accomplish active-active for this tenant we would need a separate dedicated"},{"line_number":478,"context_line":"Distributor instance. A dedicated Distributor instance, implemented as a"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_746d32cb","line":475,"in_reply_to":"1ac06dbe_6ca458b9","updated":"2016-08-24 03:31:01.000000000","message":"Based on our discussion today, I think we expect that to be delivered first, at least until tests can be developed to verify the security of the multi-tenant distributor. I\u0027ll update the discussion in this paragraph to be more clear on this point.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"00ef04ddf5a341bc850debdd103ae4653f13be40","unresolved":false,"context_lines":[{"line_number":476,"context_line":"and their front-end network to be isolated. In these cases, in order to"},{"line_number":477,"context_line":"accomplish active-active for this tenant we would need a separate dedicated"},{"line_number":478,"context_line":"Distributor instance. A dedicated Distributor instance, implemented as a"},{"line_number":479,"context_line":"separate VM, might consume too many resources per VIP, so if dedicated"},{"line_number":480,"context_line":"Distributors are needed a lighter-weight implementation is probably required."},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"Notifications impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_6c92984d","line":479,"updated":"2016-08-23 21:54:01.000000000","message":"This seems like opinion/speculation.  I would probably just drop this sentence.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":476,"context_line":"and their front-end network to be isolated. In these cases, in order to"},{"line_number":477,"context_line":"accomplish active-active for this tenant we would need a separate dedicated"},{"line_number":478,"context_line":"Distributor instance. A dedicated Distributor instance, implemented as a"},{"line_number":479,"context_line":"separate VM, might consume too many resources per VIP, so if dedicated"},{"line_number":480,"context_line":"Distributors are needed a lighter-weight implementation is probably required."},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"Notifications impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_5914af4b","line":479,"in_reply_to":"1ac06dbe_6c92984d","updated":"2016-08-24 03:31:01.000000000","message":"Agreed. Dropping.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"00ef04ddf5a341bc850debdd103ae4653f13be40","unresolved":false,"context_lines":[{"line_number":524,"context_line":"  This section captures some background, ideas, concerns, and remarks that"},{"line_number":525,"context_line":"  were raised by various people. Some of the items here can be considered for"},{"line_number":526,"context_line":"  future/alternative design and some will hopefully make their way into, yet"},{"line_number":527,"context_line":"  to be written, related blueprints (e.g., auto-scaled topology)."},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"[P2]_ Handling a changes in Cluster size (manual or auto-scaled)"},{"line_number":530,"context_line":"----------------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_2f6c129b","line":527,"updated":"2016-08-23 21:54:01.000000000","message":"We might want to consider moving this out to a different document.  The spec should really be focused on the \"what it is\".","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":524,"context_line":"  This section captures some background, ideas, concerns, and remarks that"},{"line_number":525,"context_line":"  were raised by various people. Some of the items here can be considered for"},{"line_number":526,"context_line":"  future/alternative design and some will hopefully make their way into, yet"},{"line_number":527,"context_line":"  to be written, related blueprints (e.g., auto-scaled topology)."},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"[P2]_ Handling a changes in Cluster size (manual or auto-scaled)"},{"line_number":530,"context_line":"----------------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_f433e2f3","line":527,"in_reply_to":"1ac06dbe_2f6c129b","updated":"2016-08-24 03:31:01.000000000","message":"I seem to recall asking Dean to capture this discussion in the specification, just so that we don\u0027t lose the design ideas, options we considered but didn\u0027t decide to build at this time, and potential future plans for active-active. If it\u0027s all the same to you, I\u0027d rather keep it here unless you can think of a better place to put this kind of discussion without it getting lost.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"00ef04ddf5a341bc850debdd103ae4653f13be40","unresolved":false,"context_lines":[{"line_number":538,"context_line":""},{"line_number":539,"context_line":"  * When an Amphora is removed from the Cluster (e.g., due to failure or"},{"line_number":540,"context_line":"    scale-down action), all its flows are broken; however, flows to other"},{"line_number":541,"context_line":"    Amphorae should not be affected."},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"  * When an Amphora is *added* to the Cluster (e.g., recovery of a failed"},{"line_number":544,"context_line":"    Amphora), some new flows should be distributed to the new Amphora;"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_af25a25c","line":541,"updated":"2016-08-23 21:54:01.000000000","message":"We should support a \"drain\" method to gracefully remove flows from an amphora.  I.e. weight of 0.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":538,"context_line":""},{"line_number":539,"context_line":"  * When an Amphora is removed from the Cluster (e.g., due to failure or"},{"line_number":540,"context_line":"    scale-down action), all its flows are broken; however, flows to other"},{"line_number":541,"context_line":"    Amphorae should not be affected."},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"  * When an Amphora is *added* to the Cluster (e.g., recovery of a failed"},{"line_number":544,"context_line":"    Amphora), some new flows should be distributed to the new Amphora;"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_7456d206","line":541,"in_reply_to":"1ac06dbe_af25a25c","updated":"2016-08-24 03:31:01.000000000","message":"Yeah, I think that was mentioned in this spec somewhere; I\u0027ll update the verbiage here.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"00ef04ddf5a341bc850debdd103ae4653f13be40","unresolved":false,"context_lines":[{"line_number":549,"context_line":"    of only two Amphorae: either the same Amphora as before or the"},{"line_number":550,"context_line":"    Amphora that was added."},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"  Using a simple hash to maintain affinity does not meet this  goal."},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"  For example, suppose we maintain affinity (for a fixed cluster size) using"},{"line_number":555,"context_line":"  a hash (for randomizing key distribution) as"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_0f15d6e3","line":552,"range":{"start_line":552,"start_character":62,"end_line":552,"end_character":63},"updated":"2016-08-23 21:54:01.000000000","message":"nit: Extra spaces.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":549,"context_line":"    of only two Amphorae: either the same Amphora as before or the"},{"line_number":550,"context_line":"    Amphora that was added."},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"  Using a simple hash to maintain affinity does not meet this  goal."},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"  For example, suppose we maintain affinity (for a fixed cluster size) using"},{"line_number":555,"context_line":"  a hash (for randomizing key distribution) as"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_143dde8e","line":552,"range":{"start_line":552,"start_character":62,"end_line":552,"end_character":63},"in_reply_to":"1ac06dbe_0f15d6e3","updated":"2016-08-24 03:31:01.000000000","message":"Done","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"00ef04ddf5a341bc850debdd103ae4653f13be40","unresolved":false,"context_lines":[{"line_number":583,"context_line":""},{"line_number":584,"context_line":"    * Ketama https://github.com/RJ/ketama"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"    * Openstack swift http://docs.openstack.org/developer/swift/ring.html"},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"    * Amazon dynamo"},{"line_number":589,"context_line":"      http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_6f2e0afc","line":586,"updated":"2016-08-23 21:54:01.000000000","message":"I have talked with the Oslo team about maybe making this into a Oslo library.  Let me know if we want to pursue that.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":583,"context_line":""},{"line_number":584,"context_line":"    * Ketama https://github.com/RJ/ketama"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"    * Openstack swift http://docs.openstack.org/developer/swift/ring.html"},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"    * Amazon dynamo"},{"line_number":589,"context_line":"      http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_3408dad9","line":586,"in_reply_to":"1ac06dbe_6f2e0afc","updated":"2016-08-24 03:31:01.000000000","message":"That seems like a smart idea to me. I\u0027ll add a note about this.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"00ef04ddf5a341bc850debdd103ae4653f13be40","unresolved":false,"context_lines":[{"line_number":706,"context_line":"Distributor Sharing"},{"line_number":707,"context_line":"-------------------"},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"- The initial implementation of the Distributor will not be shared between"},{"line_number":710,"context_line":"  tenants until tests can be written to verify the security of this solution."},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"- The implementation should support different Distributor sharing and"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_0a44a4b4","line":709,"updated":"2016-08-23 21:54:01.000000000","message":"Should this be here or in the main spec?","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":706,"context_line":"Distributor Sharing"},{"line_number":707,"context_line":"-------------------"},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"- The initial implementation of the Distributor will not be shared between"},{"line_number":710,"context_line":"  tenants until tests can be written to verify the security of this solution."},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"- The implementation should support different Distributor sharing and"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_94cc2e8a","line":709,"in_reply_to":"1ac06dbe_0a44a4b4","updated":"2016-08-24 03:31:01.000000000","message":"It\u0027s in both places actually. I think this is appropriate.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"00ef04ddf5a341bc850debdd103ae4653f13be40","unresolved":false,"context_lines":[{"line_number":722,"context_line":"Distributor High-Availability"},{"line_number":723,"context_line":"-----------------------------"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"- The Distributor should be highly-available (as this is one of the"},{"line_number":726,"context_line":"  motivations for the active-active topology)."},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"- A mechanism similar to the VRRP can be used."}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_2a2080f6","line":725,"updated":"2016-08-23 21:54:01.000000000","message":"Should this be in the main spec?","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fc36034d3fa1942eb6ec5fa8b79c443f0cbe445b","unresolved":false,"context_lines":[{"line_number":722,"context_line":"Distributor High-Availability"},{"line_number":723,"context_line":"-----------------------------"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"- The Distributor should be highly-available (as this is one of the"},{"line_number":726,"context_line":"  motivations for the active-active topology)."},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"- A mechanism similar to the VRRP can be used."}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_54847609","line":725,"in_reply_to":"1ac06dbe_2a2080f6","updated":"2016-08-24 03:31:01.000000000","message":"Since the initial revision won\u0027t necessarily have a highly-available distributor (though I understand the Haifa team is actually working on it now), it\u0027s probably better to list it here for now.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4b105795156d8b07dc26fc55bcbccb0be07da88c","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"REST API Impact"},{"line_number":412,"context_line":"---------------"},{"line_number":413,"context_line":"Distributor will be running its own rest API server."},{"line_number":414,"context_line":"Following API calls will be addressed."},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"1. Post VIP Plug"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1ac06dbe_290b377f","line":413,"updated":"2016-08-24 16:29:23.000000000","message":"We need to call out that this API should be protected with two way SSL.  Distributors should be issued certificates just like the amphora (maybe leverage the housekeeping cert rotation).","commit_id":"7b85418f6f5fa25ba575aa917197fe7e879bab1c"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5622564ba56a8aaeeb915e13e1f1e45a2762925e","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"REST API Impact"},{"line_number":412,"context_line":"---------------"},{"line_number":413,"context_line":"Distributor will be running its own rest API server."},{"line_number":414,"context_line":"Following API calls will be addressed."},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"1. Post VIP Plug"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1ac06dbe_09a3db50","line":413,"in_reply_to":"1ac06dbe_290b377f","updated":"2016-08-24 16:47:38.000000000","message":"Done","commit_id":"7b85418f6f5fa25ba575aa917197fe7e879bab1c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"73ebe5256c26c2fb6d7211f3020c433b4072db39","unresolved":false,"context_lines":[{"line_number":414,"context_line":"Following API calls will be addressed."},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"1. Post VIP Plug"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"   Adding a VIP network interface to the Distributor involves tasks which run"},{"line_number":419,"context_line":"   outside the Distributor itself. Once these are complete, the Distributor"},{"line_number":420,"context_line":"   must be configured to use the new interface. This is a REST call, similar"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1ac06dbe_65e39d34","line":417,"updated":"2016-08-24 15:52:27.000000000","message":"We probably want to model this after the post vip plug code in the amphora API.\nhttps://github.com/openstack/octavia/blob/master/octavia/amphorae/backends/agent/api_server/plug.py#L50\n\nFor example we probably want to include the parameters to allow future VRRP capability for the distributor.  I.e. the secondary address.","commit_id":"7b85418f6f5fa25ba575aa917197fe7e879bab1c"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5622564ba56a8aaeeb915e13e1f1e45a2762925e","unresolved":false,"context_lines":[{"line_number":414,"context_line":"Following API calls will be addressed."},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"1. Post VIP Plug"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"   Adding a VIP network interface to the Distributor involves tasks which run"},{"line_number":419,"context_line":"   outside the Distributor itself. Once these are complete, the Distributor"},{"line_number":420,"context_line":"   must be configured to use the new interface. This is a REST call, similar"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1ac06dbe_09babb6e","line":417,"in_reply_to":"1ac06dbe_65e39d34","updated":"2016-08-24 16:47:38.000000000","message":"Done","commit_id":"7b85418f6f5fa25ba575aa917197fe7e879bab1c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"46048dc3217c3874ea4475b070562f177edb1b89","unresolved":false,"context_lines":[{"line_number":424,"context_line":"Add table ``amphora_registration`` with the following columns. This describes"},{"line_number":425,"context_line":"which Amphorae are registered with which Distributors and in which order:"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"* distributor_id  ``(sa.String(36) , nullable\u003dFalse)``"},{"line_number":428,"context_line":"    ID of Distributor instance."},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"* amphora_id  ``(sa.String(36) , nullable\u003dFalse)``"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_2adcc545","line":427,"updated":"2016-08-24 17:22:03.000000000","message":"You also need load balancer ID in the shared distributor scenario","commit_id":"75f1d87b997f3514226f30103640017883f43e3c"}],"specs/version1/active-active-topology.rst":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d56544deedc06aa4eb9465b01f045752e3d432d8","unresolved":false,"context_lines":[{"line_number":8,"context_line":" designed / implemented only after initial release."},{"line_number":9,"context_line":""},{"line_number":10,"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"},{"line_number":11,"context_line":"Auto-Scaled, N+1 Amphorae Setup"},{"line_number":12,"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"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"@TODO change this"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_0edc1511","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":11},"updated":"2015-12-05 01:47:43.000000000","message":"As we discussed at the summit, I think it would be best to split active/active and auto-scale into two separate specs.","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"c355cc4e613223b8bd71fdbddf1da5948a7d6245","unresolved":false,"context_lines":[{"line_number":8,"context_line":" designed / implemented only after initial release."},{"line_number":9,"context_line":""},{"line_number":10,"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"},{"line_number":11,"context_line":"Auto-Scaled, N+1 Amphorae Setup"},{"line_number":12,"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"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"@TODO change this"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_1ccd3ab7","line":11,"in_reply_to":"7a740942_0edc1511","updated":"2015-12-10 17:07:30.000000000","message":"Done","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d56544deedc06aa4eb9465b01f045752e3d432d8","unresolved":false,"context_lines":[{"line_number":19,"context_line":"high-level service topology and suggests high-level code changes to the current"},{"line_number":20,"context_line":"code base to realize this scenario. In a nutshell, an elastic cluster of"},{"line_number":21,"context_line":"amphorae provides an LB service using an existing clustering solution. For the"},{"line_number":22,"context_line":"initial implementation, the proposal is to base on Heat Auto-Scaling."},{"line_number":23,"context_line":"Discussion regarding other possible choices and/or pluggable design will be"},{"line_number":24,"context_line":"held separately; Heat-based design is presented throughout this document."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_ee15099b","line":22,"range":{"start_line":22,"start_character":51,"end_line":22,"end_character":55},"updated":"2015-12-05 01:47:43.000000000","message":"I have concerns about using Heat.\nI don\u0027t like bringing in another system that is attempting workflow.  It seems like it is another chunk of infrastructure that isn\u0027t needed and is prone to failure.\nI will highlight additional thoughts below.","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"c355cc4e613223b8bd71fdbddf1da5948a7d6245","unresolved":false,"context_lines":[{"line_number":19,"context_line":"high-level service topology and suggests high-level code changes to the current"},{"line_number":20,"context_line":"code base to realize this scenario. In a nutshell, an elastic cluster of"},{"line_number":21,"context_line":"amphorae provides an LB service using an existing clustering solution. For the"},{"line_number":22,"context_line":"initial implementation, the proposal is to base on Heat Auto-Scaling."},{"line_number":23,"context_line":"Discussion regarding other possible choices and/or pluggable design will be"},{"line_number":24,"context_line":"held separately; Heat-based design is presented throughout this document."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_17443319","line":22,"in_reply_to":"7a740942_ee15099b","updated":"2015-12-10 17:07:30.000000000","message":"Replaced Heat with a more generic \"Cluster Manager\". \nShould really define what (minimal) properties we want from the Cluster.\nHeat is just a ref. impl. that also gives elasticity. \nPerhaps we can have an Octavia only impl.","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d56544deedc06aa4eb9465b01f045752e3d432d8","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* The *Amphora Cluster* shall provide the load-balancing services and support"},{"line_number":46,"context_line":"  the configurations that are supported by a single amphora topology, including"},{"line_number":47,"context_line":"  L7 load-balancing, SSL termination, etc."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"* The auto-scaled topology shall support various amphora types and"},{"line_number":50,"context_line":"  implementations; including, virtual machines, [P2] containers, and bare-metal"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_0e7895f1","line":47,"range":{"start_line":47,"start_character":2,"end_line":47,"end_character":19},"updated":"2015-12-05 01:47:43.000000000","message":"Not yet a capability in any topology. grin","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d56544deedc06aa4eb9465b01f045752e3d432d8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"  implementations; including, virtual machines, [P2] containers, and bare-metal"},{"line_number":51,"context_line":"  servers."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* The operator should be able to configure the high-availability requirements"},{"line_number":54,"context_line":"  for the load-balancing services. The operator shall be able to specify a"},{"line_number":55,"context_line":"  minimal number of healthy amphorae that must exist in the load-balancing"},{"line_number":56,"context_line":"  cluster. If the number of healthy amphorae drops under the desired number,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_4e553d4e","line":53,"range":{"start_line":53,"start_character":6,"end_line":53,"end_character":14},"updated":"2015-12-05 01:47:43.000000000","message":"Flavors might also specify this so I would hope it is not just a config file setting.\nFor example: gold is a minimum of 4 amphorae, platinum is a minimum of 10 amphora.","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"c355cc4e613223b8bd71fdbddf1da5948a7d6245","unresolved":false,"context_lines":[{"line_number":50,"context_line":"  implementations; including, virtual machines, [P2] containers, and bare-metal"},{"line_number":51,"context_line":"  servers."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* The operator should be able to configure the high-availability requirements"},{"line_number":54,"context_line":"  for the load-balancing services. The operator shall be able to specify a"},{"line_number":55,"context_line":"  minimal number of healthy amphorae that must exist in the load-balancing"},{"line_number":56,"context_line":"  cluster. If the number of healthy amphorae drops under the desired number,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_b720bf4a","line":53,"in_reply_to":"7a740942_4e553d4e","updated":"2015-12-10 17:07:30.000000000","message":"Done","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d56544deedc06aa4eb9465b01f045752e3d432d8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"  to match the workload on the load-balancing services. Upon increase in"},{"line_number":64,"context_line":"  demand, new amphorae shall be created and added to the cluster to provide a"},{"line_number":65,"context_line":"  minimal configurable quality-of-service (QoS) for the load-balancing"},{"line_number":66,"context_line":"  services. Upon decrease in demand, some amphorae shall be removed from the"},{"line_number":67,"context_line":"  cluster and deleted, minimizing resource usage while still providing"},{"line_number":68,"context_line":"  load-balancing services at the desired QoS."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* OpenStack Ceilometer will be used to monitor the QoS provided by the Amphora"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_4e03fd42","line":67,"range":{"start_line":66,"start_character":12,"end_line":67,"end_character":9},"updated":"2015-12-05 01:47:43.000000000","message":"We need to include some kind of buffer time so we don\u0027t end up yo-yo\u0027ing the cluster.\nWe also need to figure out how this works with long running sessions using persistence.  Example: someone using OpenVPN through the load balancer.","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d56544deedc06aa4eb9465b01f045752e3d432d8","unresolved":false,"context_lines":[{"line_number":67,"context_line":"  cluster and deleted, minimizing resource usage while still providing"},{"line_number":68,"context_line":"  load-balancing services at the desired QoS."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* OpenStack Ceilometer will be used to monitor the QoS provided by the Amphora"},{"line_number":71,"context_line":"  Cluster; and OpenStack Heat will be used to manage the Amphora Cluster and"},{"line_number":72,"context_line":"  apply scale-up and scale-down policies. The operator shall be able to"},{"line_number":73,"context_line":"  configure and control the desired quality-of-service for the load-balancing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_4e78ddc4","line":70,"range":{"start_line":70,"start_character":2,"end_line":70,"end_character":78},"updated":"2015-12-05 01:47:43.000000000","message":"I\u0027m not sure we need Ceilometer for this.  We already have the health manager collecting and handling this data (where Ceilometer would get the data).  Why can\u0027t we extend the health manager to accomplish this based on a driver based algorithm?\nThere has been a lot of talk about scalability and reliability issues with Ceilometer plus some operators are not using it in favor of StackTach.\nIt just seems like pulling in Ceilometer is another chunk of infrastructure and potential failure point.","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d56544deedc06aa4eb9465b01f045752e3d432d8","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  load-balancing services at the desired QoS."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* OpenStack Ceilometer will be used to monitor the QoS provided by the Amphora"},{"line_number":71,"context_line":"  Cluster; and OpenStack Heat will be used to manage the Amphora Cluster and"},{"line_number":72,"context_line":"  apply scale-up and scale-down policies. The operator shall be able to"},{"line_number":73,"context_line":"  configure and control the desired quality-of-service for the load-balancing"},{"line_number":74,"context_line":"  services through Ceilometer alarms (`Ceilometer::Alarm`) and Heat scaling"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_ee1bc97e","line":71,"range":{"start_line":71,"start_character":15,"end_line":71,"end_character":29},"updated":"2015-12-05 01:47:43.000000000","message":"Again, I don\u0027t think Heat is needed here.  The health manager already triggers amphora builds in a fail over scenario.  It seems like it would be fairly straight forward to extend it to do amphora cluster scaling.","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d56544deedc06aa4eb9465b01f045752e3d432d8","unresolved":false,"context_lines":[{"line_number":77,"context_line":"* An amphora cluster will collectively act to serve as a single logical"},{"line_number":78,"context_line":"  loadbalancer as defined in the Octavia glossary. Octavia will seamlessly"},{"line_number":79,"context_line":"  distribute incoming external traffic among the amphorae in the cluster. To"},{"line_number":80,"context_line":"  that end, Octavia will employ a *Distributor* component that will forward"},{"line_number":81,"context_line":"  external traffic towards the managed amphora instances. Conceptually, the"},{"line_number":82,"context_line":"  Distributor provides an extra level of load-balancing for an auto-scaled"},{"line_number":83,"context_line":"  Octavia application, albeit a simplified one. Octavia should be able to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_2930ebe7","line":80,"range":{"start_line":80,"start_character":35,"end_line":80,"end_character":46},"updated":"2015-12-05 01:47:43.000000000","message":"I would like to see details of the proposed reference implementation in the Active/Active spec.  This is the key component of Active/Active.\nHow do we handle persistence properly?\nHow does the hash re-balance when amphora are removed from the cluster?\nWhat are the limits on the scalability?\nHow is this not a single point of failure?","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d56544deedc06aa4eb9465b01f045752e3d432d8","unresolved":false,"context_lines":[{"line_number":85,"context_line":"  hardware-based)."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"* The detailed design of the Distributor component will be described in a"},{"line_number":88,"context_line":"  separate document. [P2] Octavia will support a highly-available Distributor"},{"line_number":89,"context_line":"  implementation and [P2] optionally support multiple per-tenant Distributors."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"  - @TODO Agree on naming of Distributor."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_6964b3e4","line":88,"range":{"start_line":88,"start_character":2,"end_line":88,"end_character":19},"updated":"2015-12-05 01:47:43.000000000","message":"See above comment about having a reference implementation description in the spec.","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"351a11398d52ef0dd4c97bcd2b9b5ab351664f08","unresolved":false,"context_lines":[{"line_number":97,"context_line":"* The following diagram illustrates the Auto-scaled topology:"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"::"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"                         Distributor                 Tenant"},{"line_number":102,"context_line":"    Internet               Network                   Network"},{"line_number":103,"context_line":"    (world)               (provider)                (internal)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_51dbbc7c","line":100,"updated":"2015-11-04 12:42:22.000000000","message":"Urg, I was hoping this would render better through sphinx than it does here in text form, but it does not seem to: http://octavia.io/review/234639/specs/version1/active-active-topology.html#high-level-topology-description","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"981244e59fe04262b073bd4c4bf6c881b3b50cf2","unresolved":false,"context_lines":[{"line_number":97,"context_line":"* The following diagram illustrates the Auto-scaled topology:"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"::"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"                         Distributor                 Tenant"},{"line_number":102,"context_line":"    Internet               Network                   Network"},{"line_number":103,"context_line":"    (world)               (provider)                (internal)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a8ffd7b_5758048a","line":100,"in_reply_to":"fa80f949_51dbbc7c","updated":"2015-12-03 09:33:38.000000000","message":"it looks good in firefox but messed up in chrome.","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d56544deedc06aa4eb9465b01f045752e3d432d8","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"  3. The (multi-tenant) Distributor distributes incoming connections over the"},{"line_number":142,"context_line":"     tenant\u0027s Amphora Cluster, by forwarding each new connection opened with a"},{"line_number":143,"context_line":"     loadbalancer\u0027s VIP to a front-end MAC address of an amphora in the cluster"},{"line_number":144,"context_line":"     (layer-2 forwarding). The front-end IPs of the amphorae are allocated on"},{"line_number":145,"context_line":"     the provider\u0027s (multi-tenant) Distributor network."},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_29ed4bef","line":143,"range":{"start_line":143,"start_character":29,"end_line":143,"end_character":79},"updated":"2015-12-05 01:47:43.000000000","message":"We need to discuss the return path for the traffic as amphora are full proxy.\nAlso, a discussion of DVR implications of the return path would be good.  Are we just going to saturate the network node doing NAT for the floating IP?","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d56544deedc06aa4eb9465b01f045752e3d432d8","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                      Management    Amphora Clusters      Back-end Pool"},{"line_number":210,"context_line":"                        Network     A(1..k), B(1..q)    A(1..m),B(1..r)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"* Both tenants A and B share the Distributor and the Distributor network; that"},{"line_number":213,"context_line":"  is, the Distributor listens on both loadbalancers\u0027 VIPs and forwards to"},{"line_number":214,"context_line":"  either A\u0027s or B\u0027s amphorae."},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_a9ae1b96","line":212,"range":{"start_line":212,"start_character":2,"end_line":212,"end_character":72},"updated":"2015-12-05 01:47:43.000000000","message":"Having two tenants share a network raises flags with the security folks.  We should have the operators vet this early.","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"c355cc4e613223b8bd71fdbddf1da5948a7d6245","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                      Management    Amphora Clusters      Back-end Pool"},{"line_number":210,"context_line":"                        Network     A(1..k), B(1..q)    A(1..m),B(1..r)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"* Both tenants A and B share the Distributor and the Distributor network; that"},{"line_number":213,"context_line":"  is, the Distributor listens on both loadbalancers\u0027 VIPs and forwards to"},{"line_number":214,"context_line":"  either A\u0027s or B\u0027s amphorae."},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_772fb7a1","line":212,"in_reply_to":"7a740942_a9ae1b96","updated":"2015-12-10 17:07:30.000000000","message":"Each LB now has own Distributor interface; no sharing of front-end network.","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"69599a49dc796d6f6d55852b3fdc58ded9869aa8","unresolved":false,"context_lines":[{"line_number":317,"context_line":"    and TLS configuration, as they do now."},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"  - @TODO Do we need to extend both the Amphora REST and ssh APIs? (e.g. to"},{"line_number":320,"context_line":"    toggle ARPing of the VIP). Can we limit support only to the REST driver?"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"* Compute driver for the auto-scaled topology *new*"},{"line_number":323,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_eb5e67e8","line":320,"updated":"2015-10-14 17:34:48.000000000","message":"REST is the driver we go forward with. SSH is being phased out...","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"351a11398d52ef0dd4c97bcd2b9b5ab351664f08","unresolved":false,"context_lines":[{"line_number":502,"context_line":""},{"line_number":503,"context_line":"  - Unconfigurable (hard coded)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"      + scaling_adjustment \u003d +-1 ; (We assume that all scale-up / down are +-1"},{"line_number":506,"context_line":"        amphora per event) (`Heat::ScalingPolicy::scaling_adjustment`)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"      + meter_name \u003d average cpu-util ; start with this metric since it"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_11ef74e9","line":505,"updated":"2015-11-04 12:42:22.000000000","message":"I feel like this would be ok to configure, but if it was configured too high, would it be more likely to cause flapping (within the bounds of the cooldown period, of course)?","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"351a11398d52ef0dd4c97bcd2b9b5ab351664f08","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        and/or other) (`Ceilometer::Alarm::meter_name \u003d\u003d cpu_util`)"},{"line_number":511,"context_line":"        (`Ceilometer::Alarm::statistic \u003d\u003d avg`)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"      + Scale down CPU threshold (in percentage)"},{"line_number":514,"context_line":"        (`Ceilometer::Alarm::threshold`)"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_91e28402","line":513,"updated":"2015-11-04 12:42:22.000000000","message":"This is listed in both Configurable and Unconfigurable?","commit_id":"2446b4b9bcd914fb31a3aab2ec02c88f9eb856b7"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"937d5305b04b55b2b61f50b9b3c3d3b3dd320837","unresolved":false,"context_lines":[{"line_number":293,"context_line":"  to active-passive (VRRP) support. Each amphora needs to store its IP and port"},{"line_number":294,"context_line":"  on it\u0027s front-end network. Each amphora should store a reference to its"},{"line_number":295,"context_line":"  Cluster. (@TODO perhaps use the vrrp fields for this, there is no need for"},{"line_number":296,"context_line":"  the ha_ip info and role). The status should be interpreted as referring to"},{"line_number":297,"context_line":"  the amphora only and not the load-balancing service (@TODO when do we change"},{"line_number":298,"context_line":"  the status of the loadbalancer). [P2]_ There should be references to the"},{"line_number":299,"context_line":"  Distributor(s); in case there are several Distributor instances (it may be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_aa25a65c","line":296,"updated":"2015-12-10 18:34:01.000000000","message":"I think if a amphora in an ACTIVE-ACTIVE topology dies we might see a disruption for TLS terminated traffic. Not sure how much we can scale those stick tables. So there might be a need to keep ACTIVE-PASSIVE to ensure SSL continues even in an ACTIVE-ACTIVE aka each ACTIVE amphora is backed by a a passive one. Probably needs more research...","commit_id":"500d5a162e26c4d76cdb9465a648a243361dca64"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"937d5305b04b55b2b61f50b9b3c3d3b3dd320837","unresolved":false,"context_lines":[{"line_number":299,"context_line":"  Distributor(s); in case there are several Distributor instances (it may be"},{"line_number":300,"context_line":"  possible to deduce this information from the Cluster)."},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"* Extend controller worker to support asynchronous execution of the amphora"},{"line_number":303,"context_line":"  configuration flows. This is required as the (external) Cluster Manager may"},{"line_number":304,"context_line":"  decide when add or remove an amphora. The flows do not need much change"},{"line_number":305,"context_line":"  (beyond those implied by the changes in the data model), since the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_4ac3e257","line":302,"updated":"2015-12-10 18:34:01.000000000","message":"For container we basically wrote an extra worker with its own flows reusing existing tasks. So extend is probably not the best word...","commit_id":"500d5a162e26c4d76cdb9465a648a243361dca64"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"937d5305b04b55b2b61f50b9b3c3d3b3dd320837","unresolved":false,"context_lines":[{"line_number":305,"context_line":"  (beyond those implied by the changes in the data model), since the"},{"line_number":306,"context_line":"  post-creation/pre-deletion configuration of each amphora is unchanged."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"* Extend controller worker to include Amphora (de-)registration with"},{"line_number":309,"context_line":"  Distributor."},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"* All the amphorae in the Cluster shall replicate the same listeners, pools,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_aaaa8683","line":308,"updated":"2015-12-10 18:34:01.000000000","message":"Add task...","commit_id":"500d5a162e26c4d76cdb9465a648a243361dca64"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"937d5305b04b55b2b61f50b9b3c3d3b3dd320837","unresolved":false,"context_lines":[{"line_number":313,"context_line":""},{"line_number":314,"context_line":"* Extend the amphora API to allow disabling of ``arp`` on the VIP. Initial"},{"line_number":315,"context_line":"  implementation will only support REST driver. (@TODO Do we need to support"},{"line_number":316,"context_line":"  ssh too)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"Compute driver for the active-active topology (*new*)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_0a8b9a1f","line":316,"updated":"2015-12-10 18:34:01.000000000","message":"SSH is being deprecated","commit_id":"500d5a162e26c4d76cdb9465a648a243361dca64"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"937d5305b04b55b2b61f50b9b3c3d3b3dd320837","unresolved":false,"context_lines":[{"line_number":322,"context_line":"* Add an active-active topology to the topology types"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"* Add a new driver to support creation of an Amphora Cluster via an external"},{"line_number":325,"context_line":"  Cluster Manager instead of Nova."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"* The Cluster Manager shall orchestrate creation and deletion of amphora"},{"line_number":328,"context_line":"  instances to meat the availability requirements. Nova post-creation and"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_0ab95acb","line":325,"updated":"2015-12-10 18:34:01.000000000","message":"not sure if that is needed for ACTIVE-ACTIVE... I think nova is fine for what is proposed. So might need to go into a different spec.","commit_id":"500d5a162e26c4d76cdb9465a648a243361dca64"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"937d5305b04b55b2b61f50b9b3c3d3b3dd320837","unresolved":false,"context_lines":[{"line_number":324,"context_line":"* Add a new driver to support creation of an Amphora Cluster via an external"},{"line_number":325,"context_line":"  Cluster Manager instead of Nova."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"* The Cluster Manager shall orchestrate creation and deletion of amphora"},{"line_number":328,"context_line":"  instances to meat the availability requirements. Nova post-creation and"},{"line_number":329,"context_line":"  pre-deletion hooks will be used to invoke Octavia post-creations and"},{"line_number":330,"context_line":"  pre-deletion amphora flows. [P2]_ E.g., handle graceful amphora removal,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_aae606e6","line":327,"updated":"2015-12-10 18:34:01.000000000","message":"we already have a way to detect/replace broken amphora. I am wondering how the cluster manager differs from our health manager...","commit_id":"500d5a162e26c4d76cdb9465a648a243361dca64"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"937d5305b04b55b2b61f50b9b3c3d3b3dd320837","unresolved":false,"context_lines":[{"line_number":334,"context_line":"* Change the flow of LB creation. The driver shall create a Cluster instance"},{"line_number":335,"context_line":"  for each new loadbalancer. It should wait for minimum number of amphorae in"},{"line_number":336,"context_line":"  the Cluster to be active before it can update the readiness of the"},{"line_number":337,"context_line":"  loadbalancer. This depends on the high-availability configuration given by"},{"line_number":338,"context_line":"  the operator (@TODO handle partially-healthy states). [P2]_ It may require a"},{"line_number":339,"context_line":"  minimal number of amphorae on multiple availability zones."},{"line_number":340,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_4a49a2b6","line":337,"updated":"2015-12-10 18:34:01.000000000","message":"Still confused. I think that needs to be explained better since in a simple way you probably just replace all broken amphora as our health manager does. I am not sure which other ways make sense. Reporting of Active/ERROR/Degraded should be fine tuned as proposed","commit_id":"500d5a162e26c4d76cdb9465a648a243361dca64"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"937d5305b04b55b2b61f50b9b3c3d3b3dd320837","unresolved":false,"context_lines":[{"line_number":341,"context_line":"* New data model for a Cluster which has a one-to-one mapping with the"},{"line_number":342,"context_line":"  loadbalancer. This defines the common properties of the Cluster (e.g., id,"},{"line_number":343,"context_line":"  size) and additional properties for the specific implementation. [P2]_ It"},{"line_number":344,"context_line":"  also defines the availability zones and the association of amphora to"},{"line_number":345,"context_line":"  Distributor (if more than one Distributor)."},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"* Add operator API to support configuration of an active-active Cluster. Add"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_6ab01e8c","line":344,"updated":"2015-12-10 18:34:01.000000000","message":"I think eventually we want to locate loadbalancers near the application racks. So if the application has Multi-AZ that should happen automatically. Also keep in mind that some clouds only have one AZ and AZ means different things for different people. Personally I would leave that out and address in a specific Multi-AZ blueprint...","commit_id":"500d5a162e26c4d76cdb9465a648a243361dca64"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"937d5305b04b55b2b61f50b9b3c3d3b3dd320837","unresolved":false,"context_lines":[{"line_number":429,"context_line":"  to the amphora; however, during the grace period, existing connections are"},{"line_number":430,"context_line":"  still forwarded to the removed amphora until all such connections close or"},{"line_number":431,"context_line":"  until a specified timeout has passed (whichever is first)."},{"line_number":432,"context_line":""},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"Packaging"},{"line_number":435,"context_line":"~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_85aa1bd1","line":432,"updated":"2015-12-10 18:34:01.000000000","message":"How is the distributor health being reported? How are we managing it?","commit_id":"500d5a162e26c4d76cdb9465a648a243361dca64"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":58,"context_line":"  bare-metal servers."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* The operator should be able to configure the high-availability"},{"line_number":61,"context_line":"  requirements for the active-active load-balancing services. The operator"},{"line_number":62,"context_line":"  shall be able to specify a minimal number of healthy Amphorae that must"},{"line_number":63,"context_line":"  exist in the load-balancing Amphora Cluster. If the number of healthy"},{"line_number":64,"context_line":"  Amphorae drops under the desired number, Octavia shall automatically and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_02bee064","line":61,"updated":"2016-01-23 02:38:02.000000000","message":"A P2 here would be to also manage by scalability.  We would want to manage by the minimum number of amphroa that meets the performance goals of the load balancer.  However, this section really talks to auto-scale, so maybe should be removed.  Basic health should be handled by maintaining the set number of amphora as opposed to a minimum number.  I would expect this would happen with the existing failover capability.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":58,"context_line":"  bare-metal servers."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* The operator should be able to configure the high-availability"},{"line_number":61,"context_line":"  requirements for the active-active load-balancing services. The operator"},{"line_number":62,"context_line":"  shall be able to specify a minimal number of healthy Amphorae that must"},{"line_number":63,"context_line":"  exist in the load-balancing Amphora Cluster. If the number of healthy"},{"line_number":64,"context_line":"  Amphorae drops under the desired number, Octavia shall automatically and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_8dc5df3d","line":61,"in_reply_to":"9a68dd71_02bee064","updated":"2016-03-07 17:29:09.000000000","message":"Done","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":74,"context_line":"  Conceptually, the Distributor provides an extra level of load-balancing"},{"line_number":75,"context_line":"  for an active-active Octavia application, albeit a simplified one. Octavia"},{"line_number":76,"context_line":"  should be able to support several Distributor implementations (e.g.,"},{"line_number":77,"context_line":"  software-based and hardware-based) and different affinity models."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"* The detailed design of the Distributor component will be described in a"},{"line_number":80,"context_line":"  separate document (see \"Distributor for Active-Active, N+1 Amphorae"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_2251a436","line":77,"updated":"2016-01-23 02:38:02.000000000","message":"We should include flow affinity as a requirement of the distributor as it impacts the load balancer.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":74,"context_line":"  Conceptually, the Distributor provides an extra level of load-balancing"},{"line_number":75,"context_line":"  for an active-active Octavia application, albeit a simplified one. Octavia"},{"line_number":76,"context_line":"  should be able to support several Distributor implementations (e.g.,"},{"line_number":77,"context_line":"  software-based and hardware-based) and different affinity models."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"* The detailed design of the Distributor component will be described in a"},{"line_number":80,"context_line":"  separate document (see \"Distributor for Active-Active, N+1 Amphorae"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_cddd2716","line":77,"in_reply_to":"9a68dd71_2251a436","updated":"2016-03-07 17:29:09.000000000","message":"Done","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  4. The Distributor distributes incoming connections over the tenant\u0027s"},{"line_number":139,"context_line":"     Amphora Cluster, by forwarding each new connection opened with a"},{"line_number":140,"context_line":"     loadbalancer\u0027s VIP to a front-end MAC address of an Amphora in the"},{"line_number":141,"context_line":"     Amphora Cluster (layer-2 forwarding)."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"  5. An Amphora receives the connection and accepts traffic addressed to the"},{"line_number":144,"context_line":"     loadbalancer\u0027s VIP. The front-end IPs of the Amphorae are allocated on"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_6da54d45","line":141,"updated":"2016-01-23 02:38:02.000000000","message":"We need to discuss the DVR implications.  Maybe just a reference to those issues here and a more in-depth discussion in the distributor doc.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  4. The Distributor distributes incoming connections over the tenant\u0027s"},{"line_number":139,"context_line":"     Amphora Cluster, by forwarding each new connection opened with a"},{"line_number":140,"context_line":"     loadbalancer\u0027s VIP to a front-end MAC address of an Amphora in the"},{"line_number":141,"context_line":"     Amphora Cluster (layer-2 forwarding)."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"  5. An Amphora receives the connection and accepts traffic addressed to the"},{"line_number":144,"context_line":"     loadbalancer\u0027s VIP. The front-end IPs of the Amphorae are allocated on"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_6d4a13ae","line":141,"in_reply_to":"9a68dd71_6da54d45","updated":"2016-03-07 17:29:09.000000000","message":"Done","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":224,"context_line":"* Octavia should support different Distributor implementations, similarly to"},{"line_number":225,"context_line":"  its support for different Amphora types. The operator should be able to"},{"line_number":226,"context_line":"  configure different types of algorithms for the Distributor. All"},{"line_number":227,"context_line":"  algorithms should provide affinity to allow TLS termination at the"},{"line_number":228,"context_line":"  amphora. See Distributor spec. for details."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"* Octavia controller shall seamlessly configure any newly created Amphora"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_a84a5324","line":227,"range":{"start_line":227,"start_character":28,"end_line":227,"end_character":36},"updated":"2016-01-23 02:38:02.000000000","message":"Persistence or \"flow affinity\" maybe?","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":224,"context_line":"* Octavia should support different Distributor implementations, similarly to"},{"line_number":225,"context_line":"  its support for different Amphora types. The operator should be able to"},{"line_number":226,"context_line":"  configure different types of algorithms for the Distributor. All"},{"line_number":227,"context_line":"  algorithms should provide affinity to allow TLS termination at the"},{"line_number":228,"context_line":"  amphora. See Distributor spec. for details."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"* Octavia controller shall seamlessly configure any newly created Amphora"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_adca5b18","line":227,"range":{"start_line":227,"start_character":28,"end_line":227,"end_character":36},"in_reply_to":"9a68dd71_a84a5324","updated":"2016-03-07 17:29:09.000000000","message":"Done","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":244,"context_line":"The active-active loadbalancers require the following high-level changes:"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"Amphora changes"},{"line_number":248,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"* Updated Amphora image to support active-active topology. Front-end has"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_c87f8715","line":247,"updated":"2016-01-23 02:38:02.000000000","message":"Most of these changes (amphora config, data model) would need to be done in the controller and not on the amphora.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":244,"context_line":"The active-active loadbalancers require the following high-level changes:"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"Amphora changes"},{"line_number":248,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"* Updated Amphora image to support active-active topology. Front-end has"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_edd463be","line":247,"in_reply_to":"9a68dd71_c87f8715","updated":"2016-03-07 17:29:09.000000000","message":"Done","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":247,"context_line":"Amphora changes"},{"line_number":248,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"* Updated Amphora image to support active-active topology. Front-end has"},{"line_number":251,"context_line":"  both a unique IP (to allow addressing by Distributor) and a VIP. It should"},{"line_number":252,"context_line":"  not answer ARP requests for the VIP address (all Amphorae in a single"},{"line_number":253,"context_line":"  Amphora Cluster serve the same VIP). Amphorae should continue to have a"},{"line_number":254,"context_line":"  management IP on the LB Network so Octavia can configure them. Amphorae"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_e8adab9b","line":251,"range":{"start_line":250,"start_character":58,"end_line":251,"end_character":66},"updated":"2016-01-23 02:38:02.000000000","message":"I am assuming this will stay the same is it currently is implemented.  You are not proposing another unique IP on the amphora right?","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":247,"context_line":"Amphora changes"},{"line_number":248,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"* Updated Amphora image to support active-active topology. Front-end has"},{"line_number":251,"context_line":"  both a unique IP (to allow addressing by Distributor) and a VIP. It should"},{"line_number":252,"context_line":"  not answer ARP requests for the VIP address (all Amphorae in a single"},{"line_number":253,"context_line":"  Amphora Cluster serve the same VIP). Amphorae should continue to have a"},{"line_number":254,"context_line":"  management IP on the LB Network so Octavia can configure them. Amphorae"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_481e37bc","line":251,"range":{"start_line":250,"start_character":59,"end_line":251,"end_character":66},"updated":"2016-01-23 02:38:02.000000000","message":"We may want to think about this more.  By having all of these amphora on the tenant network we would be burning IPs on their network.  We need operator feedback on this.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":247,"context_line":"Amphora changes"},{"line_number":248,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"* Updated Amphora image to support active-active topology. Front-end has"},{"line_number":251,"context_line":"  both a unique IP (to allow addressing by Distributor) and a VIP. It should"},{"line_number":252,"context_line":"  not answer ARP requests for the VIP address (all Amphorae in a single"},{"line_number":253,"context_line":"  Amphora Cluster serve the same VIP). Amphorae should continue to have a"},{"line_number":254,"context_line":"  management IP on the LB Network so Octavia can configure them. Amphorae"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_2dd76bc0","line":251,"range":{"start_line":250,"start_character":59,"end_line":251,"end_character":66},"in_reply_to":"9a68dd71_481e37bc","updated":"2016-03-07 17:29:09.000000000","message":"Done","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":247,"context_line":"Amphora changes"},{"line_number":248,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"* Updated Amphora image to support active-active topology. Front-end has"},{"line_number":251,"context_line":"  both a unique IP (to allow addressing by Distributor) and a VIP. It should"},{"line_number":252,"context_line":"  not answer ARP requests for the VIP address (all Amphorae in a single"},{"line_number":253,"context_line":"  Amphora Cluster serve the same VIP). Amphorae should continue to have a"},{"line_number":254,"context_line":"  management IP on the LB Network so Octavia can configure them. Amphorae"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_8de67fb2","line":251,"range":{"start_line":250,"start_character":58,"end_line":251,"end_character":66},"in_reply_to":"9a68dd71_e8adab9b","updated":"2016-03-07 17:29:09.000000000","message":"Done","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":253,"context_line":"  Amphora Cluster serve the same VIP). Amphorae should continue to have a"},{"line_number":254,"context_line":"  management IP on the LB Network so Octavia can configure them. Amphorae"},{"line_number":255,"context_line":"  should also generally support hot-plugging interfaces into back-end tenant"},{"line_number":256,"context_line":"  networks as they do in the current implementation. [P2]_ Finally, the"},{"line_number":257,"context_line":"  Amphora configuration may need to be changed to prevent synchronized"},{"line_number":258,"context_line":"  decisions by all Amphorae in the Amphora Cluster (e.g., we can randomize"},{"line_number":259,"context_line":"  the member list)."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"* Extend data model to support active-active Amphora. This is somewhat"},{"line_number":262,"context_line":"  similar to active-passive (VRRP) support. Each Amphora needs to store its"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_489dd764","line":259,"range":{"start_line":256,"start_character":59,"end_line":259,"end_character":19},"updated":"2016-01-23 02:38:02.000000000","message":"I think we should describe this as randomizing the member list.  As it is worded now, it is a bit confusing.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":253,"context_line":"  Amphora Cluster serve the same VIP). Amphorae should continue to have a"},{"line_number":254,"context_line":"  management IP on the LB Network so Octavia can configure them. Amphorae"},{"line_number":255,"context_line":"  should also generally support hot-plugging interfaces into back-end tenant"},{"line_number":256,"context_line":"  networks as they do in the current implementation. [P2]_ Finally, the"},{"line_number":257,"context_line":"  Amphora configuration may need to be changed to prevent synchronized"},{"line_number":258,"context_line":"  decisions by all Amphorae in the Amphora Cluster (e.g., we can randomize"},{"line_number":259,"context_line":"  the member list)."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"* Extend data model to support active-active Amphora. This is somewhat"},{"line_number":262,"context_line":"  similar to active-passive (VRRP) support. Each Amphora needs to store its"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_adf1bb6c","line":259,"range":{"start_line":256,"start_character":59,"end_line":259,"end_character":19},"in_reply_to":"9a68dd71_489dd764","updated":"2016-03-07 17:29:09.000000000","message":"Done","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":262,"context_line":"  similar to active-passive (VRRP) support. Each Amphora needs to store its"},{"line_number":263,"context_line":"  IP and port on it\u0027s front-end network (similar to ha_ipd and ha_port_id in"},{"line_number":264,"context_line":"  the current model) and it role should indicate it is in a cluster. The"},{"line_number":265,"context_line":"  status should be interpreted as referring to the Amphora only and not the"},{"line_number":266,"context_line":"  load-balancing service (@TODO when do we change the status of the"},{"line_number":267,"context_line":"  loadbalancer)."},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_2896633f","line":265,"range":{"start_line":265,"start_character":2,"end_line":265,"end_character":8},"updated":"2016-01-23 02:38:02.000000000","message":"We need to specify which status you are talking about.  We have two (operating and provisioning) status on almost all of the objects.  Is this amphora status?","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":262,"context_line":"  similar to active-passive (VRRP) support. Each Amphora needs to store its"},{"line_number":263,"context_line":"  IP and port on it\u0027s front-end network (similar to ha_ipd and ha_port_id in"},{"line_number":264,"context_line":"  the current model) and it role should indicate it is in a cluster. The"},{"line_number":265,"context_line":"  status should be interpreted as referring to the Amphora only and not the"},{"line_number":266,"context_line":"  load-balancing service (@TODO when do we change the status of the"},{"line_number":267,"context_line":"  loadbalancer)."},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_0d138f67","line":265,"range":{"start_line":265,"start_character":2,"end_line":265,"end_character":8},"in_reply_to":"9a68dd71_2896633f","updated":"2016-03-07 17:29:09.000000000","message":"Done","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":263,"context_line":"  IP and port on it\u0027s front-end network (similar to ha_ipd and ha_port_id in"},{"line_number":264,"context_line":"  the current model) and it role should indicate it is in a cluster. The"},{"line_number":265,"context_line":"  status should be interpreted as referring to the Amphora only and not the"},{"line_number":266,"context_line":"  load-balancing service (@TODO when do we change the status of the"},{"line_number":267,"context_line":"  loadbalancer)."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"* Rework some of the controller worker flows to support parallel and"},{"line_number":270,"context_line":"  asynchronous creation of Amphorae. This is required as the ACM may decide"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_68a8db77","line":267,"range":{"start_line":266,"start_character":32,"end_line":267,"end_character":14},"updated":"2016-01-23 02:38:02.000000000","message":"Is this about updating the health manager?","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":263,"context_line":"  IP and port on it\u0027s front-end network (similar to ha_ipd and ha_port_id in"},{"line_number":264,"context_line":"  the current model) and it role should indicate it is in a cluster. The"},{"line_number":265,"context_line":"  status should be interpreted as referring to the Amphora only and not the"},{"line_number":266,"context_line":"  load-balancing service (@TODO when do we change the status of the"},{"line_number":267,"context_line":"  loadbalancer)."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"* Rework some of the controller worker flows to support parallel and"},{"line_number":270,"context_line":"  asynchronous creation of Amphorae. This is required as the ACM may decide"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_595068d4","line":267,"range":{"start_line":266,"start_character":32,"end_line":267,"end_character":14},"in_reply_to":"9a68dd71_68a8db77","updated":"2016-03-07 17:29:09.000000000","message":"Done","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":266,"context_line":"  load-balancing service (@TODO when do we change the status of the"},{"line_number":267,"context_line":"  loadbalancer)."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"* Rework some of the controller worker flows to support parallel and"},{"line_number":270,"context_line":"  asynchronous creation of Amphorae. This is required as the ACM may decide"},{"line_number":271,"context_line":"  when to add or remove an Amphora. The flows do not need much change"},{"line_number":272,"context_line":"  (beyond those implied by the changes in the data model), since the"},{"line_number":273,"context_line":"  post-creation/pre-deletion configuration of each Amphora is unchanged."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_48f07791","line":270,"range":{"start_line":269,"start_character":2,"end_line":270,"end_character":35},"updated":"2016-01-23 02:38:02.000000000","message":"We already create amphora in parallel and asynchronous to other flows.  Probably just need to drop this sentence.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":266,"context_line":"  load-balancing service (@TODO when do we change the status of the"},{"line_number":267,"context_line":"  loadbalancer)."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"* Rework some of the controller worker flows to support parallel and"},{"line_number":270,"context_line":"  asynchronous creation of Amphorae. This is required as the ACM may decide"},{"line_number":271,"context_line":"  when to add or remove an Amphora. The flows do not need much change"},{"line_number":272,"context_line":"  (beyond those implied by the changes in the data model), since the"},{"line_number":273,"context_line":"  post-creation/pre-deletion configuration of each Amphora is unchanged."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_092de394","line":270,"range":{"start_line":269,"start_character":2,"end_line":270,"end_character":35},"in_reply_to":"9a68dd71_48f07791","updated":"2016-03-07 17:29:09.000000000","message":"reworded","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":267,"context_line":"  loadbalancer)."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"* Rework some of the controller worker flows to support parallel and"},{"line_number":270,"context_line":"  asynchronous creation of Amphorae. This is required as the ACM may decide"},{"line_number":271,"context_line":"  when to add or remove an Amphora. The flows do not need much change"},{"line_number":272,"context_line":"  (beyond those implied by the changes in the data model), since the"},{"line_number":273,"context_line":"  post-creation/pre-deletion configuration of each Amphora is unchanged."},{"line_number":274,"context_line":"  This is also similar to the failure recovery flow of VRRP."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_082d9ffd","line":271,"range":{"start_line":270,"start_character":38,"end_line":271,"end_character":35},"updated":"2016-01-23 02:38:02.000000000","message":"This is auto-scale.  It should be moved to another spec.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":267,"context_line":"  loadbalancer)."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"* Rework some of the controller worker flows to support parallel and"},{"line_number":270,"context_line":"  asynchronous creation of Amphorae. This is required as the ACM may decide"},{"line_number":271,"context_line":"  when to add or remove an Amphora. The flows do not need much change"},{"line_number":272,"context_line":"  (beyond those implied by the changes in the data model), since the"},{"line_number":273,"context_line":"  post-creation/pre-deletion configuration of each Amphora is unchanged."},{"line_number":274,"context_line":"  This is also similar to the failure recovery flow of VRRP."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_a9e94fe8","line":271,"range":{"start_line":270,"start_character":38,"end_line":271,"end_character":35},"in_reply_to":"9a68dd71_082d9ffd","updated":"2016-03-07 17:29:09.000000000","message":"reworded.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":271,"context_line":"  when to add or remove an Amphora. The flows do not need much change"},{"line_number":272,"context_line":"  (beyond those implied by the changes in the data model), since the"},{"line_number":273,"context_line":"  post-creation/pre-deletion configuration of each Amphora is unchanged."},{"line_number":274,"context_line":"  This is also similar to the failure recovery flow of VRRP."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"* Create a flow for the controller worker for (de-)registration of Amphorae"},{"line_number":277,"context_line":"  with Distributor."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_484717bc","line":274,"range":{"start_line":274,"start_character":30,"end_line":274,"end_character":59},"updated":"2016-01-23 02:38:02.000000000","message":"I think you mean the failover flow, which is VRRP aware, but not VRRP (existed prior to active/standby).","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":271,"context_line":"  when to add or remove an Amphora. The flows do not need much change"},{"line_number":272,"context_line":"  (beyond those implied by the changes in the data model), since the"},{"line_number":273,"context_line":"  post-creation/pre-deletion configuration of each Amphora is unchanged."},{"line_number":274,"context_line":"  This is also similar to the failure recovery flow of VRRP."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"* Create a flow for the controller worker for (de-)registration of Amphorae"},{"line_number":277,"context_line":"  with Distributor."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_098fa32a","line":274,"range":{"start_line":274,"start_character":30,"end_line":274,"end_character":59},"in_reply_to":"9a68dd71_484717bc","updated":"2016-03-07 17:29:09.000000000","message":"Done","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":273,"context_line":"  post-creation/pre-deletion configuration of each Amphora is unchanged."},{"line_number":274,"context_line":"  This is also similar to the failure recovery flow of VRRP."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"* Create a flow for the controller worker for (de-)registration of Amphorae"},{"line_number":277,"context_line":"  with Distributor."},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"* All the Amphorae in the Amphora Cluster shall replicate the same"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_280bc38f","line":276,"updated":"2016-01-23 02:38:02.000000000","message":"Probably a task instead of a flow.  Existing flows may need to accomplish this task.  If this is for auto-scale down, that should be covered in a different spec.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":273,"context_line":"  post-creation/pre-deletion configuration of each Amphora is unchanged."},{"line_number":274,"context_line":"  This is also similar to the failure recovery flow of VRRP."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"* Create a flow for the controller worker for (de-)registration of Amphorae"},{"line_number":277,"context_line":"  with Distributor."},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"* All the Amphorae in the Amphora Cluster shall replicate the same"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_142dfafd","line":276,"in_reply_to":"9a68dd71_280bc38f","updated":"2016-03-07 17:29:09.000000000","message":"Done","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":276,"context_line":"* Create a flow for the controller worker for (de-)registration of Amphorae"},{"line_number":277,"context_line":"  with Distributor."},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"* All the Amphorae in the Amphora Cluster shall replicate the same"},{"line_number":280,"context_line":"  listeners, pools, and TLS configuration, as they do now."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"* Extend the Amphora API to allow disabling of ``arp`` on the VIP."},{"line_number":283,"context_line":"  Implementation will only support REST driver (as ssh is depricated)."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_c8e467e1","line":280,"range":{"start_line":279,"start_character":3,"end_line":280,"end_character":58},"updated":"2016-01-23 02:38:02.000000000","message":"Probably don\u0027t need to re-state this in the changes section.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":276,"context_line":"* Create a flow for the controller worker for (de-)registration of Amphorae"},{"line_number":277,"context_line":"  with Distributor."},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"* All the Amphorae in the Amphora Cluster shall replicate the same"},{"line_number":280,"context_line":"  listeners, pools, and TLS configuration, as they do now."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"* Extend the Amphora API to allow disabling of ``arp`` on the VIP."},{"line_number":283,"context_line":"  Implementation will only support REST driver (as ssh is depricated)."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_4f1ecb5f","line":280,"range":{"start_line":279,"start_character":3,"end_line":280,"end_character":58},"in_reply_to":"9a68dd71_c8e467e1","updated":"2016-03-07 17:29:09.000000000","message":"rewarded.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2d830b78c2abc47ef07c9e3d6d004a851fbc8847","unresolved":false,"context_lines":[{"line_number":279,"context_line":"* All the Amphorae in the Amphora Cluster shall replicate the same"},{"line_number":280,"context_line":"  listeners, pools, and TLS configuration, as they do now."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"* Extend the Amphora API to allow disabling of ``arp`` on the VIP."},{"line_number":283,"context_line":"  Implementation will only support REST driver (as ssh is depricated)."},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_281983d7","line":282,"updated":"2016-01-23 02:38:02.000000000","message":"Probably the plug VIP interface would need to be updated.","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":279,"context_line":"* All the Amphorae in the Amphora Cluster shall replicate the same"},{"line_number":280,"context_line":"  listeners, pools, and TLS configuration, as they do now."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"* Extend the Amphora API to allow disabling of ``arp`` on the VIP."},{"line_number":283,"context_line":"  Implementation will only support REST driver (as ssh is depricated)."},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_ef7a3787","line":282,"in_reply_to":"9a68dd71_281983d7","updated":"2016-03-07 17:29:09.000000000","message":"Done","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"015b40e773b8d9b4a668f74aac6fc2b76d0fff86","unresolved":false,"context_lines":[{"line_number":367,"context_line":""},{"line_number":368,"context_line":"  - Status"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Spawn Distributors as needed. Manage health and life-cycle of the"},{"line_number":371,"context_line":"  Distributor(s). Create, connect, and configure Distributor networks as"},{"line_number":372,"context_line":"  necessary."},{"line_number":373,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a68dd71_8843cf41","line":370,"range":{"start_line":370,"start_character":2,"end_line":370,"end_character":7},"updated":"2016-01-23 01:56:11.000000000","message":"this seem to box us into a service vm model which I think is too narrow","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"1929118ca0710f336ddec13cd16aa7f1e69560a7","unresolved":false,"context_lines":[{"line_number":367,"context_line":""},{"line_number":368,"context_line":"  - Status"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Spawn Distributors as needed. Manage health and life-cycle of the"},{"line_number":371,"context_line":"  Distributor(s). Create, connect, and configure Distributor networks as"},{"line_number":372,"context_line":"  necessary."},{"line_number":373,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_7156055d","line":370,"range":{"start_line":370,"start_character":2,"end_line":370,"end_character":7},"in_reply_to":"9a68dd71_8843cf41","updated":"2016-03-07 17:29:09.000000000","message":"Done","commit_id":"31f4c53346a0a695813f815b0ff09db51b9ce01d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"5d06576680d3db7e15a4a43d35bc9cd0a31bd546","unresolved":false,"context_lines":[{"line_number":41,"context_line":"tenant\u0027s backend services as follows:"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"* The operator should be able to configure an active-active topology"},{"line_number":44,"context_line":"  through an Octavia configuration file or [P2]_ through a Neutron flavor,"},{"line_number":45,"context_line":"  which the loadbalancer shall support. Octavia shall support active-active"},{"line_number":46,"context_line":"  topologies in addition to the topologies that it currently supports."},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba0121b8_9b7c4fed","line":44,"updated":"2016-04-01 19:15:56.000000000","message":"I have seen patches[1] which do the first step to make that dynamic by LB creation -- I would add that case as well. \n\n[1] https://review.openstack.org/#/c/286365/","commit_id":"0ce3f4d57703c895d13625b49f6aafd5d3d02c96"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"5d06576680d3db7e15a4a43d35bc9cd0a31bd546","unresolved":false,"context_lines":[{"line_number":259,"context_line":"  network) and a VIP; however, it should not answer ARP requests for the"},{"line_number":260,"context_line":"  VIP address (all Amphorae in a single Amphora Cluster concurrently serve"},{"line_number":261,"context_line":"  the same VIP). Amphorae should continue to have a management IP on the LB"},{"line_number":262,"context_line":"  Network so Octavia can configure them. Amphorae should also generally"},{"line_number":263,"context_line":"  support hot-plugging interfaces into back-end tenant networks as they do"},{"line_number":264,"context_line":"  in the current implementation. [P2]_ Finally, the Amphora configuration"},{"line_number":265,"context_line":"  may need to be changed to randomize the member list, in order to prevent"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba0121b8_7bfb3b48","line":262,"updated":"2016-04-01 19:15:56.000000000","message":"some implementation use containers and mightn\u0027t be able to hot plug.","commit_id":"0ce3f4d57703c895d13625b49f6aafd5d3d02c96"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"c5e780808516f2e642c447bc97ae8cb6e1986411","unresolved":false,"context_lines":[{"line_number":259,"context_line":"  network) and a VIP; however, it should not answer ARP requests for the"},{"line_number":260,"context_line":"  VIP address (all Amphorae in a single Amphora Cluster concurrently serve"},{"line_number":261,"context_line":"  the same VIP). Amphorae should continue to have a management IP on the LB"},{"line_number":262,"context_line":"  Network so Octavia can configure them. Amphorae should also generally"},{"line_number":263,"context_line":"  support hot-plugging interfaces into back-end tenant networks as they do"},{"line_number":264,"context_line":"  in the current implementation. [P2]_ Finally, the Amphora configuration"},{"line_number":265,"context_line":"  may need to be changed to randomize the member list, in order to prevent"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba0121b8_e7195724","line":262,"in_reply_to":"ba0121b8_7bfb3b48","updated":"2016-04-03 07:30:26.000000000","message":"True, but is there a specific implication to active -active? Networkwise, Amphorae in active-active should be exactly like Amphorae in other topologies, just not answer arp.","commit_id":"0ce3f4d57703c895d13625b49f6aafd5d3d02c96"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"5d06576680d3db7e15a4a43d35bc9cd0a31bd546","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    another Octavia instance). This approach has the potential to provide"},{"line_number":438,"context_line":"    greater flexibility (e.g., provide NAT and/or more complex distribution"},{"line_number":439,"context_line":"    algorithms). It also potentially reuses existing code. However, we do"},{"line_number":440,"context_line":"    not want the Distributor to proxy connections so HA-Proxy cannot be"},{"line_number":441,"context_line":"    used. Furthermore, this approach might significantly increase the"},{"line_number":442,"context_line":"    overhead of the solution."},{"line_number":443,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba0121b8_dbb9a77b","line":440,"updated":"2016-04-01 19:15:56.000000000","message":"why?","commit_id":"0ce3f4d57703c895d13625b49f6aafd5d3d02c96"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"c5e780808516f2e642c447bc97ae8cb6e1986411","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    another Octavia instance). This approach has the potential to provide"},{"line_number":438,"context_line":"    greater flexibility (e.g., provide NAT and/or more complex distribution"},{"line_number":439,"context_line":"    algorithms). It also potentially reuses existing code. However, we do"},{"line_number":440,"context_line":"    not want the Distributor to proxy connections so HA-Proxy cannot be"},{"line_number":441,"context_line":"    used. Furthermore, this approach might significantly increase the"},{"line_number":442,"context_line":"    overhead of the solution."},{"line_number":443,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"ba0121b8_87e33b05","line":440,"in_reply_to":"ba0121b8_dbb9a77b","updated":"2016-04-03 07:30:26.000000000","message":"If the Distributor proxies connections than the amphorae do not see the real source -- this could be an issue with e.g. TLS.","commit_id":"0ce3f4d57703c895d13625b49f6aafd5d3d02c96"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":132,"context_line":"     floating-IP (IPv4 or IPv6)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  2. If IPv4, a gateway router maps the floating IP into a loadbalancer\u0027s"},{"line_number":135,"context_line":"     internal VIP on a the tenant\u0027s front-end network."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"  3. The (multi-tenant) Distributor receives incoming requests to the"},{"line_number":138,"context_line":"     loadbalancer\u0027s VIP. It acts as a one-legged direct return LB,"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_91d54ce6","line":135,"range":{"start_line":135,"start_character":33,"end_line":135,"end_character":34},"updated":"2016-06-09 05:29:32.000000000","message":"without \u0027","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":132,"context_line":"     floating-IP (IPv4 or IPv6)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  2. If IPv4, a gateway router maps the floating IP into a loadbalancer\u0027s"},{"line_number":135,"context_line":"     internal VIP on a the tenant\u0027s front-end network."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"  3. The (multi-tenant) Distributor receives incoming requests to the"},{"line_number":138,"context_line":"     loadbalancer\u0027s VIP. It acts as a one-legged direct return LB,"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_3c341349","line":135,"range":{"start_line":135,"start_character":33,"end_line":135,"end_character":34},"in_reply_to":"7aa08908_91d54ce6","updated":"2016-06-09 14:54:50.000000000","message":"I tried to write a flow for a single loadbalancer. \nJust want to make sure that this is wrong before I change the many instance of \"\u0027\" in this flow.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":135,"context_line":"     internal VIP on a the tenant\u0027s front-end network."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"  3. The (multi-tenant) Distributor receives incoming requests to the"},{"line_number":138,"context_line":"     loadbalancer\u0027s VIP. It acts as a one-legged direct return LB,"},{"line_number":139,"context_line":"     answering ``arp`` requests for the loadbalancer\u0027s VIP (see Distributor"},{"line_number":140,"context_line":"     spec.)."},{"line_number":141,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_f1065084","line":138,"range":{"start_line":138,"start_character":17,"end_line":138,"end_character":18},"updated":"2016-06-09 05:29:32.000000000","message":"the same","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"  3. The (multi-tenant) Distributor receives incoming requests to the"},{"line_number":138,"context_line":"     loadbalancer\u0027s VIP. It acts as a one-legged direct return LB,"},{"line_number":139,"context_line":"     answering ``arp`` requests for the loadbalancer\u0027s VIP (see Distributor"},{"line_number":140,"context_line":"     spec.)."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"  4. The Distributor distributes incoming connections over the tenant\u0027s"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_31fd786e","line":139,"range":{"start_line":139,"start_character":52,"end_line":139,"end_character":53},"updated":"2016-06-09 05:29:32.000000000","message":"\u0027","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":139,"context_line":"     answering ``arp`` requests for the loadbalancer\u0027s VIP (see Distributor"},{"line_number":140,"context_line":"     spec.)."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"  4. The Distributor distributes incoming connections over the tenant\u0027s"},{"line_number":143,"context_line":"     Amphora Cluster, by forwarding each new connection opened with a"},{"line_number":144,"context_line":"     loadbalancer\u0027s VIP to a front-end MAC address of an Amphora in the"},{"line_number":145,"context_line":"     Amphora Cluster (layer-2 forwarding). *Note*: the Distributor may"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_71fb8079","line":142,"range":{"start_line":142,"start_character":69,"end_line":142,"end_character":70},"updated":"2016-06-09 05:29:32.000000000","message":"I\u0027m not marking any more","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"75218877f40f2b310d03ab1de7d805808b11e3b3","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"  7. Out going traffic traverses from the back-end pool members, through"},{"line_number":160,"context_line":"     the Amphora and directly to the gateway (i.e., not through the"},{"line_number":161,"context_line":"     Distributor)."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Multi-tenant Support"},{"line_number":164,"context_line":"~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_a70fe62c","line":161,"updated":"2016-06-07 12:48:46.000000000","message":"how will the flow be with DVR  in place?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"  7. Out going traffic traverses from the back-end pool members, through"},{"line_number":160,"context_line":"     the Amphora and directly to the gateway (i.e., not through the"},{"line_number":161,"context_line":"     Distributor)."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Multi-tenant Support"},{"line_number":164,"context_line":"~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_9f689989","line":161,"in_reply_to":"7aa08908_a70fe62c","updated":"2016-06-09 14:54:50.000000000","message":"That is a good question that already came up in previous discussions. We have not tried our code with DVR yet.\nDo you know the recommended way to add a user-defined SW router to Neutron (especially with DVR)?\nIf needed, we can modify the Distributor to use L3 forwarding only -- use the Amphorae real IP rather than MAC and configure HAproxy to accept the IP and answer on the VIP.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":271,"context_line":"  in the current model) and its role should indicate it is in a cluster."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"  The provisioning status should be interpreted as referring to an Amphora"},{"line_number":274,"context_line":"  only and not the load-balancing service. The status of the laodbalancer"},{"line_number":275,"context_line":"  should correspond to the number of ``READY`` Amphorae in the Cluster; if"},{"line_number":276,"context_line":"  low enough it should be ``ERROR``, above that but still below the desired"},{"line_number":277,"context_line":"  number it should be ``DEGRADED``, and ``READY`` if there are enough"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_e254d4ca","line":274,"range":{"start_line":274,"start_character":61,"end_line":274,"end_character":73},"updated":"2016-06-01 18:52:32.000000000","message":"Nit: loadbalancer","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":271,"context_line":"  in the current model) and its role should indicate it is in a cluster."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"  The provisioning status should be interpreted as referring to an Amphora"},{"line_number":274,"context_line":"  only and not the load-balancing service. The status of the laodbalancer"},{"line_number":275,"context_line":"  should correspond to the number of ``READY`` Amphorae in the Cluster; if"},{"line_number":276,"context_line":"  low enough it should be ``ERROR``, above that but still below the desired"},{"line_number":277,"context_line":"  number it should be ``DEGRADED``, and ``READY`` if there are enough"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_e848e85d","line":274,"range":{"start_line":274,"start_character":61,"end_line":274,"end_character":73},"in_reply_to":"9abb7d3a_e254d4ca","updated":"2016-06-09 14:54:50.000000000","message":"Done","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":286,"context_line":"  Amphora is unchanged. This is also similar to the failure recovery flow,"},{"line_number":287,"context_line":"  where a recovery flow is triggered asynchronously."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* Create a flow (or task) for the controller worker for (de-)registration"},{"line_number":290,"context_line":"  of Amphorae with Distributor. The Distributor has to be aware of the"},{"line_number":291,"context_line":"  current ``READY`` Amphorae, to which it can forward traffic. [P2_] The"},{"line_number":292,"context_line":"  Distributor can monitor the Amphorae health and perform some of these"},{"line_number":293,"context_line":"  actions automatically."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_f1be5063","line":290,"range":{"start_line":289,"start_character":56,"end_line":290,"end_character":30},"updated":"2016-06-09 05:29:32.000000000","message":"What will be with this deregistered Amphorae? They will be changed into Active/Passive, Single topology or maybe they will create a new Active/active Cluster?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"74c6227b6eaec882519e6d54b32f24996d63a32f","unresolved":false,"context_lines":[{"line_number":286,"context_line":"  Amphora is unchanged. This is also similar to the failure recovery flow,"},{"line_number":287,"context_line":"  where a recovery flow is triggered asynchronously."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* Create a flow (or task) for the controller worker for (de-)registration"},{"line_number":290,"context_line":"  of Amphorae with Distributor. The Distributor has to be aware of the"},{"line_number":291,"context_line":"  current ``READY`` Amphorae, to which it can forward traffic. [P2_] The"},{"line_number":292,"context_line":"  Distributor can monitor the Amphorae health and perform some of these"},{"line_number":293,"context_line":"  actions automatically."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_6a9a9715","line":290,"range":{"start_line":289,"start_character":56,"end_line":290,"end_character":30},"in_reply_to":"7aa08908_c651b1da","updated":"2016-06-14 10:27:34.000000000","message":"For the N+1 case, the HM is similar but different to what we have now -- we detect a broken LB as we do now, but we cannot wait for the failed LB to be destroyed and replaced. Instead, we first remove the broken LB from the cluster and add the standby (+1) in its place -- this is where (de-)register is called. Then we destroy the broken LB and replace with new one (same as now). Finally, the replaced LB becomes the new standby (the +1) rather than being added back to the cluster. Note that the replaced LB has exactly the same configuration as before, the only difference is that the Distributor does not forward to it.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"d5f79d10ef60c14c494c3ac43f7e3b2ac28831b7","unresolved":false,"context_lines":[{"line_number":286,"context_line":"  Amphora is unchanged. This is also similar to the failure recovery flow,"},{"line_number":287,"context_line":"  where a recovery flow is triggered asynchronously."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* Create a flow (or task) for the controller worker for (de-)registration"},{"line_number":290,"context_line":"  of Amphorae with Distributor. The Distributor has to be aware of the"},{"line_number":291,"context_line":"  current ``READY`` Amphorae, to which it can forward traffic. [P2_] The"},{"line_number":292,"context_line":"  Distributor can monitor the Amphorae health and perform some of these"},{"line_number":293,"context_line":"  actions automatically."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_931e340a","line":290,"range":{"start_line":289,"start_character":56,"end_line":290,"end_character":30},"in_reply_to":"7aa08908_c651b1da","updated":"2016-06-13 21:42:54.000000000","message":"as dean mentioned this is used for failover of amps, failover happens when amps stop working.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":286,"context_line":"  Amphora is unchanged. This is also similar to the failure recovery flow,"},{"line_number":287,"context_line":"  where a recovery flow is triggered asynchronously."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* Create a flow (or task) for the controller worker for (de-)registration"},{"line_number":290,"context_line":"  of Amphorae with Distributor. The Distributor has to be aware of the"},{"line_number":291,"context_line":"  current ``READY`` Amphorae, to which it can forward traffic. [P2_] The"},{"line_number":292,"context_line":"  Distributor can monitor the Amphorae health and perform some of these"},{"line_number":293,"context_line":"  actions automatically."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_c651b1da","line":290,"range":{"start_line":289,"start_character":56,"end_line":290,"end_character":30},"in_reply_to":"7aa08908_e2d66026","updated":"2016-06-09 23:03:27.000000000","message":"Your removing working Amphora from Cluster - what will be next with that machine? It will create a new LB or what?\nWhy not to use working current failover implementation? It\u0027s destroying broken Amphora and replacing it with new one - using old configuration. It will not work in this situation? It looks like we gonna end having multiple HM services doing the same, using the same flows - probably copied into other files - and a huge overhead because of that.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":286,"context_line":"  Amphora is unchanged. This is also similar to the failure recovery flow,"},{"line_number":287,"context_line":"  where a recovery flow is triggered asynchronously."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* Create a flow (or task) for the controller worker for (de-)registration"},{"line_number":290,"context_line":"  of Amphorae with Distributor. The Distributor has to be aware of the"},{"line_number":291,"context_line":"  current ``READY`` Amphorae, to which it can forward traffic. [P2_] The"},{"line_number":292,"context_line":"  Distributor can monitor the Amphorae health and perform some of these"},{"line_number":293,"context_line":"  actions automatically."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_e2d66026","line":290,"range":{"start_line":289,"start_character":56,"end_line":290,"end_character":30},"in_reply_to":"7aa08908_f1be5063","updated":"2016-06-09 14:54:50.000000000","message":"Can you clarify? \nRegistration and de-registration are required on failure recovery scenarios (and with elasticity later down the road).","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":302,"context_line":"  of ``arp`` on the VIP."},{"line_number":303,"context_line":""},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"Amphora Cluster Manager driver for the active-active topology (*new*)"},{"line_number":306,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"* Add an active-active topology to the topology types"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_0231185a","line":305,"range":{"start_line":305,"start_character":0,"end_line":305,"end_character":69},"updated":"2016-06-01 18:52:32.000000000","message":"Will the initial / reference ACM driver just be a driver that is loaded by one of the existing controller worker processes, or will it be its own daemon?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":302,"context_line":"  of ``arp`` on the VIP."},{"line_number":303,"context_line":""},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"Amphora Cluster Manager driver for the active-active topology (*new*)"},{"line_number":306,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"* Add an active-active topology to the topology types"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_fee542a8","line":305,"range":{"start_line":305,"start_character":0,"end_line":305,"end_character":69},"in_reply_to":"9abb7d3a_0231185a","updated":"2016-06-09 14:54:50.000000000","message":"At this stage, it will be a driver running in the context of the CW.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":307,"context_line":""},{"line_number":308,"context_line":"* Add an active-active topology to the topology types"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"* Add a new driver to support creation/deletion of an Amphora Cluster via"},{"line_number":311,"context_line":"  an ACM."},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"* The ACM shall orchestrate creation and deletion of Amphora instances to"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_c2fd50b2","line":310,"range":{"start_line":310,"start_character":0,"end_line":310,"end_character":73},"updated":"2016-06-01 18:52:32.000000000","message":"So this would be an amphora driver, correct?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":307,"context_line":""},{"line_number":308,"context_line":"* Add an active-active topology to the topology types"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"* Add a new driver to support creation/deletion of an Amphora Cluster via"},{"line_number":311,"context_line":"  an ACM."},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"* The ACM shall orchestrate creation and deletion of Amphora instances to"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_c0f860e8","line":310,"range":{"start_line":310,"start_character":0,"end_line":310,"end_character":73},"in_reply_to":"9abb7d3a_c2fd50b2","updated":"2016-06-09 14:54:50.000000000","message":"The existing Nova driver will be still be used to create the compute nodes and the Amphora driver would still be used to configure each Amphora. The ACM driver handles the cluster operations, like creating n Amphorae, creating stand-by, etc.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"* Change the flow of LB creation. The ACM driver shall create an Amphora"},{"line_number":319,"context_line":"  Cluster instance for each new loadbalancer. It should maintain the"},{"line_number":320,"context_line":"  desired number of Amphorae in the Cluster and with meet the"},{"line_number":321,"context_line":"  high-availability configuration given by the operator. *Note*: a base"},{"line_number":322,"context_line":"  functionality is already supported by the Health Manager; it may be"},{"line_number":323,"context_line":"  enough to support a fixed cluster size."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_313a98e7","line":320,"range":{"start_line":320,"start_character":48,"end_line":320,"end_character":53},"updated":"2016-06-09 05:29:32.000000000","message":"del","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"* Change the flow of LB creation. The ACM driver shall create an Amphora"},{"line_number":319,"context_line":"  Cluster instance for each new loadbalancer. It should maintain the"},{"line_number":320,"context_line":"  desired number of Amphorae in the Cluster and with meet the"},{"line_number":321,"context_line":"  high-availability configuration given by the operator. *Note*: a base"},{"line_number":322,"context_line":"  functionality is already supported by the Health Manager; it may be"},{"line_number":323,"context_line":"  enough to support a fixed cluster size."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_e207807f","line":320,"range":{"start_line":320,"start_character":48,"end_line":320,"end_character":53},"in_reply_to":"7aa08908_313a98e7","updated":"2016-06-09 14:54:50.000000000","message":"Done","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":319,"context_line":"  Cluster instance for each new loadbalancer. It should maintain the"},{"line_number":320,"context_line":"  desired number of Amphorae in the Cluster and with meet the"},{"line_number":321,"context_line":"  high-availability configuration given by the operator. *Note*: a base"},{"line_number":322,"context_line":"  functionality is already supported by the Health Manager; it may be"},{"line_number":323,"context_line":"  enough to support a fixed cluster size."},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"* The ACM shall be responsible for providing health, performance, and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_7cecf7ba","line":322,"range":{"start_line":322,"start_character":44,"end_line":322,"end_character":58},"updated":"2016-06-09 05:29:32.000000000","message":"Health Manager is checking that all Amphorae are running. Do we really need something else for a/a? It\u0027s still keeping all Amphorae in state ACTIVE. If some is in ERROR or other state simply recreate using old configuration.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":319,"context_line":"  Cluster instance for each new loadbalancer. It should maintain the"},{"line_number":320,"context_line":"  desired number of Amphorae in the Cluster and with meet the"},{"line_number":321,"context_line":"  high-availability configuration given by the operator. *Note*: a base"},{"line_number":322,"context_line":"  functionality is already supported by the Health Manager; it may be"},{"line_number":323,"context_line":"  enough to support a fixed cluster size."},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"* The ACM shall be responsible for providing health, performance, and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_a21c58c2","line":322,"range":{"start_line":322,"start_character":44,"end_line":322,"end_character":58},"in_reply_to":"7aa08908_7cecf7ba","updated":"2016-06-09 14:54:50.000000000","message":"We need to handle failure differently -- typically use the +1 and recreate the failed Amphora as a new +1.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":319,"context_line":"  Cluster instance for each new loadbalancer. It should maintain the"},{"line_number":320,"context_line":"  desired number of Amphorae in the Cluster and with meet the"},{"line_number":321,"context_line":"  high-availability configuration given by the operator. *Note*: a base"},{"line_number":322,"context_line":"  functionality is already supported by the Health Manager; it may be"},{"line_number":323,"context_line":"  enough to support a fixed cluster size."},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"* The ACM shall be responsible for providing health, performance, and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_e675cd32","line":322,"range":{"start_line":322,"start_character":44,"end_line":322,"end_character":58},"in_reply_to":"7aa08908_a21c58c2","updated":"2016-06-09 23:03:27.000000000","message":"So we need only one additional step - if free Amphora in cluster configure - and like in normal situation create a new one","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"74c6227b6eaec882519e6d54b32f24996d63a32f","unresolved":false,"context_lines":[{"line_number":319,"context_line":"  Cluster instance for each new loadbalancer. It should maintain the"},{"line_number":320,"context_line":"  desired number of Amphorae in the Cluster and with meet the"},{"line_number":321,"context_line":"  high-availability configuration given by the operator. *Note*: a base"},{"line_number":322,"context_line":"  functionality is already supported by the Health Manager; it may be"},{"line_number":323,"context_line":"  enough to support a fixed cluster size."},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"* The ACM shall be responsible for providing health, performance, and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_65d5a841","line":322,"range":{"start_line":322,"start_character":44,"end_line":322,"end_character":58},"in_reply_to":"7aa08908_e675cd32","updated":"2016-06-14 10:27:34.000000000","message":"\"free Amphora\" \u003d\u003d standby? the +1?\nthen yes, we just use it and like create a new one too.\nI am not sure what you mean by \"configure\" -- the standby is already configured. Only configuration is telling the Distributor about it.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"d5f79d10ef60c14c494c3ac43f7e3b2ac28831b7","unresolved":false,"context_lines":[{"line_number":319,"context_line":"  Cluster instance for each new loadbalancer. It should maintain the"},{"line_number":320,"context_line":"  desired number of Amphorae in the Cluster and with meet the"},{"line_number":321,"context_line":"  high-availability configuration given by the operator. *Note*: a base"},{"line_number":322,"context_line":"  functionality is already supported by the Health Manager; it may be"},{"line_number":323,"context_line":"  enough to support a fixed cluster size."},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"* The ACM shall be responsible for providing health, performance, and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_b37d301e","line":322,"range":{"start_line":322,"start_character":44,"end_line":322,"end_character":58},"in_reply_to":"7aa08908_e675cd32","updated":"2016-06-13 21:42:54.000000000","message":"can you clarify the above comment ?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":322,"context_line":"  functionality is already supported by the Health Manager; it may be"},{"line_number":323,"context_line":"  enough to support a fixed cluster size."},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"* The ACM shall be responsible for providing health, performance, and"},{"line_number":326,"context_line":"  life-cycle management at the Cluster-level rather than at Amphora-level."},{"line_number":327,"context_line":"  Maintaining the loadbalancer status (as described above) by some function"},{"line_number":328,"context_line":"  of the collective status of all Amphorae in the Cluster is one example."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_62b3c40a","line":325,"range":{"start_line":325,"start_character":31,"end_line":325,"end_character":34},"updated":"2016-06-01 18:52:32.000000000","message":"And again, the ACM is abstracted out as a driver, right?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":322,"context_line":"  functionality is already supported by the Health Manager; it may be"},{"line_number":323,"context_line":"  enough to support a fixed cluster size."},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"* The ACM shall be responsible for providing health, performance, and"},{"line_number":326,"context_line":"  life-cycle management at the Cluster-level rather than at Amphora-level."},{"line_number":327,"context_line":"  Maintaining the loadbalancer status (as described above) by some function"},{"line_number":328,"context_line":"  of the collective status of all Amphorae in the Cluster is one example."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_0049c831","line":325,"range":{"start_line":325,"start_character":31,"end_line":325,"end_character":34},"in_reply_to":"9abb7d3a_62b3c40a","updated":"2016-06-09 14:54:50.000000000","message":"yes.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":337,"context_line":"  Cluster (e.g., id, min. size, desired size, etc.) and additional"},{"line_number":338,"context_line":"  properties for the specific implementation."},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"* Add operator API to support configuration of an active-active Amphora"},{"line_number":341,"context_line":"  Cluster. Add default configuration."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_c270b042","line":340,"range":{"start_line":340,"start_character":0,"end_line":340,"end_character":71},"updated":"2016-06-01 18:52:32.000000000","message":"I\u0027m thinking this should be [P2]? Initially, this kind of configuration should be done via configuration files, perhaps?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":337,"context_line":"  Cluster (e.g., id, min. size, desired size, etc.) and additional"},{"line_number":338,"context_line":"  properties for the specific implementation."},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"* Add operator API to support configuration of an active-active Amphora"},{"line_number":341,"context_line":"  Cluster. Add default configuration."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_dc1a4b7c","line":340,"range":{"start_line":340,"start_character":0,"end_line":340,"end_character":71},"in_reply_to":"9abb7d3a_c270b042","updated":"2016-06-09 05:29:32.000000000","message":"Agree","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":337,"context_line":"  Cluster (e.g., id, min. size, desired size, etc.) and additional"},{"line_number":338,"context_line":"  properties for the specific implementation."},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"* Add operator API to support configuration of an active-active Amphora"},{"line_number":341,"context_line":"  Cluster. Add default configuration."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_803138a5","line":340,"range":{"start_line":340,"start_character":0,"end_line":340,"end_character":71},"in_reply_to":"9abb7d3a_c270b042","updated":"2016-06-09 14:54:50.000000000","message":"Agree.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9d258671e868d9999adb3b9c03112da4daf7dc89","unresolved":false,"context_lines":[{"line_number":352,"context_line":"  and configuring the Distributor to answer ``arp`` requests for the VIP."},{"line_number":353,"context_line":"  The Distributor shall have a separate interface for each loadbalancer and"},{"line_number":354,"context_line":"  shall not allow any routing between different ports; in particular,"},{"line_number":355,"context_line":"  Amphorae of different tenants must not be able to communicate with each"},{"line_number":356,"context_line":"  other."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"* Adding a new Amphora requires attaching it to the front-end and back-end"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_82c86856","line":355,"range":{"start_line":355,"start_character":31,"end_line":355,"end_character":32},"updated":"2016-06-01 18:52:32.000000000","message":"I would recommend doing the different tenants in different network namespaces, the way this is done (now, in master) on amphorae.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"74c6227b6eaec882519e6d54b32f24996d63a32f","unresolved":false,"context_lines":[{"line_number":352,"context_line":"  and configuring the Distributor to answer ``arp`` requests for the VIP."},{"line_number":353,"context_line":"  The Distributor shall have a separate interface for each loadbalancer and"},{"line_number":354,"context_line":"  shall not allow any routing between different ports; in particular,"},{"line_number":355,"context_line":"  Amphorae of different tenants must not be able to communicate with each"},{"line_number":356,"context_line":"  other."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"* Adding a new Amphora requires attaching it to the front-end and back-end"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_40be97ae","line":355,"range":{"start_line":355,"start_character":31,"end_line":355,"end_character":32},"in_reply_to":"7aa08908_06e1f9d0","updated":"2016-06-14 10:27:34.000000000","message":"(1) The VM localhost is not connected. Each f.e. interface is allocated to OVS and there is no interface from OVS into the host itself. \n(2) BP allows multiple implementations, including LVS.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"d5f79d10ef60c14c494c3ac43f7e3b2ac28831b7","unresolved":false,"context_lines":[{"line_number":352,"context_line":"  and configuring the Distributor to answer ``arp`` requests for the VIP."},{"line_number":353,"context_line":"  The Distributor shall have a separate interface for each loadbalancer and"},{"line_number":354,"context_line":"  shall not allow any routing between different ports; in particular,"},{"line_number":355,"context_line":"  Amphorae of different tenants must not be able to communicate with each"},{"line_number":356,"context_line":"  other."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"* Adding a new Amphora requires attaching it to the front-end and back-end"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_93cf5455","line":355,"range":{"start_line":355,"start_character":31,"end_line":355,"end_character":32},"in_reply_to":"7aa08908_06e1f9d0","updated":"2016-06-13 21:42:54.000000000","message":"i think dean and you meant the same thing. LVS will be handled by the LVS distributor image. as of now I think dean is supporting an ovs based distributor for this reference implementation","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":352,"context_line":"  and configuring the Distributor to answer ``arp`` requests for the VIP."},{"line_number":353,"context_line":"  The Distributor shall have a separate interface for each loadbalancer and"},{"line_number":354,"context_line":"  shall not allow any routing between different ports; in particular,"},{"line_number":355,"context_line":"  Amphorae of different tenants must not be able to communicate with each"},{"line_number":356,"context_line":"  other."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"* Adding a new Amphora requires attaching it to the front-end and back-end"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_06e1f9d0","line":355,"range":{"start_line":355,"start_character":31,"end_line":355,"end_character":32},"in_reply_to":"7aa08908_4360face","updated":"2016-06-09 23:03:27.000000000","message":"First of all it will be connected - if no how OVS will work with that network?\nSecond - it will driver driven so there may be multiple implementations - how about LVS?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":352,"context_line":"  and configuring the Distributor to answer ``arp`` requests for the VIP."},{"line_number":353,"context_line":"  The Distributor shall have a separate interface for each loadbalancer and"},{"line_number":354,"context_line":"  shall not allow any routing between different ports; in particular,"},{"line_number":355,"context_line":"  Amphorae of different tenants must not be able to communicate with each"},{"line_number":356,"context_line":"  other."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"* Adding a new Amphora requires attaching it to the front-end and back-end"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_4360face","line":355,"range":{"start_line":355,"start_character":31,"end_line":355,"end_character":32},"in_reply_to":"9abb7d3a_82c86856","updated":"2016-06-09 14:54:50.000000000","message":"In the OVS-based Distributor, the different networks are not even connected to the host (connected only to the OVS switch), so there is no need for namespaces.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Modify Health Manager to manage the health for an Amphora Cluster through"},{"line_number":371,"context_line":"  the ACM; namely, forward Amphora health change events to the ACM, so it"},{"line_number":372,"context_line":"  can decide when the Amphora Cluster is considered to be in healthy state."},{"line_number":373,"context_line":"  This should be done in addition to managing the health of each Amphora."},{"line_number":374,"context_line":"  [P2]_ Monitor the Amphorae also on their front-end network (i.e., from"},{"line_number":375,"context_line":"  the Distributor)."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_573d94c2","line":372,"updated":"2016-06-09 05:29:32.000000000","message":"Does it really needed? HM will keep all Amphorae in ACTIVE state. Do we need more?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"607021139166dc100f52c731753b65594ecf5aad","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Modify Health Manager to manage the health for an Amphora Cluster through"},{"line_number":371,"context_line":"  the ACM; namely, forward Amphora health change events to the ACM, so it"},{"line_number":372,"context_line":"  can decide when the Amphora Cluster is considered to be in healthy state."},{"line_number":373,"context_line":"  This should be done in addition to managing the health of each Amphora."},{"line_number":374,"context_line":"  [P2]_ Monitor the Amphorae also on their front-end network (i.e., from"},{"line_number":375,"context_line":"  the Distributor)."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_97904044","line":372,"in_reply_to":"7aa08908_2db962cc","updated":"2016-06-16 13:54:17.000000000","message":"Agree, we can use the existing mechanism to monitor each amphora and update its state in the DB; moreover, this is *exactly* what we propose to do for the initial implementation of the N+1 ACM. On the other hand, amphora state is not necessarily the same as cluster state -- the cluster state may depend on the particular ACM -- e.g., one FAILed Amphora might imply a different state for an N+1 cluster (1 standby) vs an N cluster (no standby) vs an ACM that uses Heat. Thus, we want to add ACM code to provide the cluster health (note that this code should also take into consideration the Distributor state). Our initial impl. will just count the number of Amphorae with FAIL state and report health based on a threshold (eg if number of FAILed greater than number of standbys) + the state of the Distributor (especially for dedicated Distributor). \n\nFurther down the road, in the general case, even the meaning of Amphora FAIL state may be different per ACM -- when there is only one active Amphora then FAIL is Boolean; when there is a cluster we may decide, e.g., to fail an Amphora based on degraded stats vs. other Amphorae in its cluster.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"0b925bfe637422bb43a9c8f5445d4772dbb27830","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Modify Health Manager to manage the health for an Amphora Cluster through"},{"line_number":371,"context_line":"  the ACM; namely, forward Amphora health change events to the ACM, so it"},{"line_number":372,"context_line":"  can decide when the Amphora Cluster is considered to be in healthy state."},{"line_number":373,"context_line":"  This should be done in addition to managing the health of each Amphora."},{"line_number":374,"context_line":"  [P2]_ Monitor the Amphorae also on their front-end network (i.e., from"},{"line_number":375,"context_line":"  the Distributor)."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_48481c8b","line":372,"in_reply_to":"7aa08908_2db962cc","updated":"2016-06-15 21:55:02.000000000","message":"yes we can do that, but we need to see to which cluster that amphora belongs to, this info is not there with the health monitor.  So we need to modify the health monitor to get the cluster info to which the failed amp belongs so that it can add it back to the cluster by calling some distributor apis , in this case it\u0027s both health manager and part of ACM or for cleaner implementation we can do this in the ACM.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Modify Health Manager to manage the health for an Amphora Cluster through"},{"line_number":371,"context_line":"  the ACM; namely, forward Amphora health change events to the ACM, so it"},{"line_number":372,"context_line":"  can decide when the Amphora Cluster is considered to be in healthy state."},{"line_number":373,"context_line":"  This should be done in addition to managing the health of each Amphora."},{"line_number":374,"context_line":"  [P2]_ Monitor the Amphorae also on their front-end network (i.e., from"},{"line_number":375,"context_line":"  the Distributor)."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_e24dc09a","line":372,"in_reply_to":"7aa08908_573d94c2","updated":"2016-06-09 14:54:50.000000000","message":"We need *cluster* health (LB state) which may be different than the Amphora state. What is the LB state for an N size cluster, with only N-1 health Amphorae?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"280172d005f1aeb32273634c06bc831fbf96cfcb","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Modify Health Manager to manage the health for an Amphora Cluster through"},{"line_number":371,"context_line":"  the ACM; namely, forward Amphora health change events to the ACM, so it"},{"line_number":372,"context_line":"  can decide when the Amphora Cluster is considered to be in healthy state."},{"line_number":373,"context_line":"  This should be done in addition to managing the health of each Amphora."},{"line_number":374,"context_line":"  [P2]_ Monitor the Amphorae also on their front-end network (i.e., from"},{"line_number":375,"context_line":"  the Distributor)."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_2db962cc","line":372,"in_reply_to":"7aa08908_80c19fe6","updated":"2016-06-15 21:17:02.000000000","message":"Octavia currently has a mechanism which is monitoring active Amphorae. If there will be something wrong with Amphora in specific Distributor it will update the database with information that amphora id \u003d x is in status FAIL. Using this status we can show info to user about how healthy is his cluster.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"74c6227b6eaec882519e6d54b32f24996d63a32f","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Modify Health Manager to manage the health for an Amphora Cluster through"},{"line_number":371,"context_line":"  the ACM; namely, forward Amphora health change events to the ACM, so it"},{"line_number":372,"context_line":"  can decide when the Amphora Cluster is considered to be in healthy state."},{"line_number":373,"context_line":"  This should be done in addition to managing the health of each Amphora."},{"line_number":374,"context_line":"  [P2]_ Monitor the Amphorae also on their front-end network (i.e., from"},{"line_number":375,"context_line":"  the Distributor)."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_80c19fe6","line":372,"in_reply_to":"7aa08908_d9e6b643","updated":"2016-06-14 10:27:34.000000000","message":"I think this is a very good solution for first stage. In general, the definition of cluster health is controlled by the *pluggable* ACM -- I am not sure how we can reflect this only in the data-model.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"d5f79d10ef60c14c494c3ac43f7e3b2ac28831b7","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Modify Health Manager to manage the health for an Amphora Cluster through"},{"line_number":371,"context_line":"  the ACM; namely, forward Amphora health change events to the ACM, so it"},{"line_number":372,"context_line":"  can decide when the Amphora Cluster is considered to be in healthy state."},{"line_number":373,"context_line":"  This should be done in addition to managing the health of each Amphora."},{"line_number":374,"context_line":"  [P2]_ Monitor the Amphorae also on their front-end network (i.e., from"},{"line_number":375,"context_line":"  the Distributor)."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_b34090a6","line":372,"in_reply_to":"7aa08908_d9e6b643","updated":"2016-06-13 21:42:54.000000000","message":"can you please elaborate your solution in here.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"* Modify Health Manager to manage the health for an Amphora Cluster through"},{"line_number":371,"context_line":"  the ACM; namely, forward Amphora health change events to the ACM, so it"},{"line_number":372,"context_line":"  can decide when the Amphora Cluster is considered to be in healthy state."},{"line_number":373,"context_line":"  This should be done in addition to managing the health of each Amphora."},{"line_number":374,"context_line":"  [P2]_ Monitor the Amphorae also on their front-end network (i.e., from"},{"line_number":375,"context_line":"  the Distributor)."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_d9e6b643","line":372,"in_reply_to":"7aa08908_e24dc09a","updated":"2016-06-09 23:03:27.000000000","message":"So we need a flow which will update LB clustered state by counting active Amphorae in cluster and will do nothing with Amphorae.\n\nThere is always a way to do this using SQLAlchemy without any additional flows or other, only using one line of code in model","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"75218877f40f2b310d03ab1de7d805808b11e3b3","unresolved":false,"context_lines":[{"line_number":385,"context_line":"* The Distributor should be supported similarly to an Amphora; namely, have"},{"line_number":386,"context_line":"  its own abstract driver."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* For a reference implementation, add support for a Distributor image."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"* Define a REST API for Distributor configuration (no SSH API). The API"},{"line_number":391,"context_line":"  shall support:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_270936de","line":388,"updated":"2016-06-07 12:48:46.000000000","message":"the distributor image shall be distribution-agnostic, or have have interfaces to plug to specific distribution bits as it\u0027s to be done with the amphora agent (managing network interfaces, etc in ubuntu vs centos vs suse)\n\nWhat\u0027s the plan for the low level implementation? OVS? DPDK?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":385,"context_line":"* The Distributor should be supported similarly to an Amphora; namely, have"},{"line_number":386,"context_line":"  its own abstract driver."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* For a reference implementation, add support for a Distributor image."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"* Define a REST API for Distributor configuration (no SSH API). The API"},{"line_number":391,"context_line":"  shall support:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_a2029809","line":388,"in_reply_to":"7aa08908_270936de","updated":"2016-06-09 14:54:50.000000000","message":"Can you clarify?\nDo you think we can have different Distributor images, but with the same driver?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b1b6f854feeaff3f55acd779a63432633ec53e50","unresolved":false,"context_lines":[{"line_number":385,"context_line":"* The Distributor should be supported similarly to an Amphora; namely, have"},{"line_number":386,"context_line":"  its own abstract driver."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* For a reference implementation, add support for a Distributor image."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"* Define a REST API for Distributor configuration (no SSH API). The API"},{"line_number":391,"context_line":"  shall support:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_a7ac0636","line":388,"in_reply_to":"7aa08908_270936de","updated":"2016-06-07 12:51:30.000000000","message":"sorry, ignore my second question, I didn\u0027t see the other spec.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"d5f79d10ef60c14c494c3ac43f7e3b2ac28831b7","unresolved":false,"context_lines":[{"line_number":385,"context_line":"* The Distributor should be supported similarly to an Amphora; namely, have"},{"line_number":386,"context_line":"  its own abstract driver."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* For a reference implementation, add support for a Distributor image."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"* Define a REST API for Distributor configuration (no SSH API). The API"},{"line_number":391,"context_line":"  shall support:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_f374d8fe","line":388,"in_reply_to":"7aa08908_590e46e6","updated":"2016-06-13 21:42:54.000000000","message":"at any time, only one of the distributor image is supported like the way we support only one Amphora image type at any time. If you want to have an dpdk image based distributor one has to have their own drivers to support. These things can be configured in the config file.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":385,"context_line":"* The Distributor should be supported similarly to an Amphora; namely, have"},{"line_number":386,"context_line":"  its own abstract driver."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* For a reference implementation, add support for a Distributor image."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"* Define a REST API for Distributor configuration (no SSH API). The API"},{"line_number":391,"context_line":"  shall support:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_590e46e6","line":388,"in_reply_to":"7aa08908_a2029809","updated":"2016-06-09 23:03:27.000000000","message":"One driver will require ovs, the second one dpdk - how image/driver will handle that?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":393,"context_line":"  - Add and remove a VIP (loadbalancer) and specify distribution parameters"},{"line_number":394,"context_line":"    (e.g., affinity, algorithm, etc.)."},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"  - Registration and de-registration of Amphorae."},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"  - Status"},{"line_number":399,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_176dcccb","line":396,"updated":"2016-06-09 05:29:32.000000000","message":"For what purpose?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":393,"context_line":"  - Add and remove a VIP (loadbalancer) and specify distribution parameters"},{"line_number":394,"context_line":"    (e.g., affinity, algorithm, etc.)."},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"  - Registration and de-registration of Amphorae."},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"  - Status"},{"line_number":399,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_19a03ea5","line":396,"in_reply_to":"7aa08908_052576ad","updated":"2016-06-09 23:03:27.000000000","message":"Elasticity right now can kill us. The elastic solutions are always not used because you made something elastic what not require that. In my opinion P2 and use other functionality to restore broken Amphorae","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":393,"context_line":"  - Add and remove a VIP (loadbalancer) and specify distribution parameters"},{"line_number":394,"context_line":"    (e.g., affinity, algorithm, etc.)."},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"  - Registration and de-registration of Amphorae."},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"  - Status"},{"line_number":399,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_052576ad","line":396,"in_reply_to":"7aa08908_176dcccb","updated":"2016-06-09 14:54:50.000000000","message":"Failure recovery for the N+1 case. \nSupport of elasticity later on.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"d5f79d10ef60c14c494c3ac43f7e3b2ac28831b7","unresolved":false,"context_lines":[{"line_number":393,"context_line":"  - Add and remove a VIP (loadbalancer) and specify distribution parameters"},{"line_number":394,"context_line":"    (e.g., affinity, algorithm, etc.)."},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"  - Registration and de-registration of Amphorae."},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"  - Status"},{"line_number":399,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_d38d5cd4","line":396,"in_reply_to":"7aa08908_19a03ea5","updated":"2016-06-13 21:42:54.000000000","message":"its needed for the failovers as we need to remove the stale amp from the cluster n add the newly created replacement amp to the cluster.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"34de14ac70d3e8cb73614f06f02e1a118c53e88e","unresolved":false,"context_lines":[{"line_number":474,"context_line":""},{"line_number":475,"context_line":"  - `min_size`: number of ``ACTIVE`` Amphorae in Cluster must be above this"},{"line_number":476,"context_line":"    number for Amphora Cluster status to be ``ACTIVE``"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"  - `cooldown`:  cooldown period between successive add/remove Amphora"},{"line_number":479,"context_line":"    operations (to avoid thrashing)"},{"line_number":480,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_9719bc24","line":477,"updated":"2016-06-09 05:29:32.000000000","message":"What about DEGRADED state?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"b0bf23544b3fe00f3ce88dc68c2b43728720e8c9","unresolved":false,"context_lines":[{"line_number":474,"context_line":""},{"line_number":475,"context_line":"  - `min_size`: number of ``ACTIVE`` Amphorae in Cluster must be above this"},{"line_number":476,"context_line":"    number for Amphora Cluster status to be ``ACTIVE``"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"  - `cooldown`:  cooldown period between successive add/remove Amphora"},{"line_number":479,"context_line":"    operations (to avoid thrashing)"},{"line_number":480,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_5943e66c","line":477,"in_reply_to":"7aa08908_45a49e07","updated":"2016-06-09 23:03:27.000000000","message":"So please remove every occurrences of DEGRADED from documentation. Support it or not but it should be supported. Distributor is not strait WORKING/BROKEN because it\u0027s holding multiple Amphorae under night.\n\nPlus this need to be changed because it\u0027s only working in one tenant environment.\nSituation:\n1. One Distributor with param:\n    desired_size - 6\n    working_size - 4\n    min_size - 2\n2. Three tenants with 2 Amphorae each\n\n2 Amphorae from tenant one are broken - LB still report ACTIVE but there is no traffic to his application - his loosing a lot of money\nWhat operator will do with that? There will be info that everything is OK.\nIt require per tenant configuration and counting active Amphorae","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"280172d005f1aeb32273634c06bc831fbf96cfcb","unresolved":false,"context_lines":[{"line_number":474,"context_line":""},{"line_number":475,"context_line":"  - `min_size`: number of ``ACTIVE`` Amphorae in Cluster must be above this"},{"line_number":476,"context_line":"    number for Amphora Cluster status to be ``ACTIVE``"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"  - `cooldown`:  cooldown period between successive add/remove Amphora"},{"line_number":479,"context_line":"    operations (to avoid thrashing)"},{"line_number":480,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_eded9ab8","line":477,"in_reply_to":"7aa08908_5314cc4b","updated":"2016-06-15 21:17:02.000000000","message":"So you\u0027re not gonna check Distributor state rather then Cluster.\nSo getting health check from Distributor you will see multiple clusters and their statuses. Am I right?","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"d5f79d10ef60c14c494c3ac43f7e3b2ac28831b7","unresolved":false,"context_lines":[{"line_number":474,"context_line":""},{"line_number":475,"context_line":"  - `min_size`: number of ``ACTIVE`` Amphorae in Cluster must be above this"},{"line_number":476,"context_line":"    number for Amphora Cluster status to be ``ACTIVE``"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"  - `cooldown`:  cooldown period between successive add/remove Amphora"},{"line_number":479,"context_line":"    operations (to avoid thrashing)"},{"line_number":480,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_5314cc4b","line":477,"in_reply_to":"7aa08908_5943e66c","updated":"2016-06-13 21:42:54.000000000","message":"these parameters are loadbalancer wise. one LB corresponds to one cluster.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"abe2ddcb24451660f0b34faa4e90741965e904d6","unresolved":false,"context_lines":[{"line_number":474,"context_line":""},{"line_number":475,"context_line":"  - `min_size`: number of ``ACTIVE`` Amphorae in Cluster must be above this"},{"line_number":476,"context_line":"    number for Amphora Cluster status to be ``ACTIVE``"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"  - `cooldown`:  cooldown period between successive add/remove Amphora"},{"line_number":479,"context_line":"    operations (to avoid thrashing)"},{"line_number":480,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_45a49e07","line":477,"in_reply_to":"7aa08908_9719bc24","updated":"2016-06-09 14:54:50.000000000","message":"I think DEGRADED could be good enough initially or just set min_size and desired_size to same number.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"0b925bfe637422bb43a9c8f5445d4772dbb27830","unresolved":false,"context_lines":[{"line_number":474,"context_line":""},{"line_number":475,"context_line":"  - `min_size`: number of ``ACTIVE`` Amphorae in Cluster must be above this"},{"line_number":476,"context_line":"    number for Amphora Cluster status to be ``ACTIVE``"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"  - `cooldown`:  cooldown period between successive add/remove Amphora"},{"line_number":479,"context_line":"    operations (to avoid thrashing)"},{"line_number":480,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_28f1506b","line":477,"in_reply_to":"7aa08908_eded9ab8","updated":"2016-06-15 21:55:02.000000000","message":"should be checking the health of the distributor also, along with that we should be monitoring the health of the cluster too.","commit_id":"2f23fdb8ce77c8462a5d2b4be4b63fc29cca54c9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"43a6887e89ca2a4a64c7d57b14f9493c5ee78934","unresolved":false,"context_lines":[{"line_number":18,"context_line":"In a nutshell, an *Amphora Cluster* of two or more active Amphorae"},{"line_number":19,"context_line":"collectively provide the loadbalancing service."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The Amphora Cluster shall be manage by an *Amphora Cluster Manager* (ACM)."},{"line_number":22,"context_line":"The ACM shall provide an abstraction that allows different types of"},{"line_number":23,"context_line":"active-active features (e.g., failure recovery, elasticity, etc.). The"},{"line_number":24,"context_line":"initial implementation shall not rely on external services, but the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_c25ab529","line":21,"range":{"start_line":21,"start_character":29,"end_line":21,"end_character":35},"updated":"2016-08-23 07:01:08.000000000","message":"Nit: managed","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"b6b7f06f510bd3abf3c5775d0cf7b184b7713f8c","unresolved":false,"context_lines":[{"line_number":18,"context_line":"In a nutshell, an *Amphora Cluster* of two or more active Amphorae"},{"line_number":19,"context_line":"collectively provide the loadbalancing service."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The Amphora Cluster shall be manage by an *Amphora Cluster Manager* (ACM)."},{"line_number":22,"context_line":"The ACM shall provide an abstraction that allows different types of"},{"line_number":23,"context_line":"active-active features (e.g., failure recovery, elasticity, etc.). The"},{"line_number":24,"context_line":"initial implementation shall not rely on external services, but the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_2a1537e4","line":21,"range":{"start_line":21,"start_character":29,"end_line":21,"end_character":35},"in_reply_to":"1ac06dbe_c25ab529","updated":"2016-08-23 16:19:16.000000000","message":"Done","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"1b2ff9ef97ed0b327ba94f23abc9d3e8f4d65d76","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"  5. An Amphora receives the connection and accepts traffic addressed to"},{"line_number":150,"context_line":"     the loadbalancer\u0027s VIP. The front-end IPs of the Amphorae are"},{"line_number":151,"context_line":"     allocated on the tenant\u0027s front-end\u0027 network. Each Amphora accepts VIP"},{"line_number":152,"context_line":"     traffic, but does not answer ``arp`` request for the VIP address."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"  6. The Amphora load-balances the incoming connections to the back-end"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_01b82bc7","line":151,"range":{"start_line":151,"start_character":40,"end_line":151,"end_character":41},"updated":"2016-08-23 15:03:14.000000000","message":"nit: typo","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"b6b7f06f510bd3abf3c5775d0cf7b184b7713f8c","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"  5. An Amphora receives the connection and accepts traffic addressed to"},{"line_number":150,"context_line":"     the loadbalancer\u0027s VIP. The front-end IPs of the Amphorae are"},{"line_number":151,"context_line":"     allocated on the tenant\u0027s front-end\u0027 network. Each Amphora accepts VIP"},{"line_number":152,"context_line":"     traffic, but does not answer ``arp`` request for the VIP address."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"  6. The Amphora load-balances the incoming connections to the back-end"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_caaaa384","line":151,"range":{"start_line":151,"start_character":40,"end_line":151,"end_character":41},"in_reply_to":"1ac06dbe_01b82bc7","updated":"2016-08-23 16:19:16.000000000","message":"Done","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"43a6887e89ca2a4a64c7d57b14f9493c5ee78934","unresolved":false,"context_lines":[{"line_number":228,"context_line":"Problem Details"},{"line_number":229,"context_line":"---------------"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"* Octavia should support different Distributor implementations, similarly"},{"line_number":232,"context_line":"  to its support for different Amphora types. The operator should be able"},{"line_number":233,"context_line":"  to configure different types of algorithms for the Distributor. All"},{"line_number":234,"context_line":"  algorithms should provide flow-affinity to allow TLS termination at the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_2223c957","line":231,"range":{"start_line":231,"start_character":64,"end_line":231,"end_character":73},"updated":"2016-08-23 07:01:08.000000000","message":"Nit: similar","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"b6b7f06f510bd3abf3c5775d0cf7b184b7713f8c","unresolved":false,"context_lines":[{"line_number":228,"context_line":"Problem Details"},{"line_number":229,"context_line":"---------------"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"* Octavia should support different Distributor implementations, similarly"},{"line_number":232,"context_line":"  to its support for different Amphora types. The operator should be able"},{"line_number":233,"context_line":"  to configure different types of algorithms for the Distributor. All"},{"line_number":234,"context_line":"  algorithms should provide flow-affinity to allow TLS termination at the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_6a8e0f2f","line":231,"range":{"start_line":231,"start_character":64,"end_line":231,"end_character":73},"in_reply_to":"1ac06dbe_2223c957","updated":"2016-08-23 16:19:16.000000000","message":"Done","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"74c42fe10fe7b54f795c3625dddacc64d6e36ef0","unresolved":false,"context_lines":[{"line_number":273,"context_line":"  The provisioning status should be interpreted as referring to an Amphora"},{"line_number":274,"context_line":"  only and not the load-balancing service. The status of the loadbalancer"},{"line_number":275,"context_line":"  should correspond to the number of ``READY`` Amphorae in the Cluster; if"},{"line_number":276,"context_line":"  low enough it should be ``ERROR``, above that but still below the desired"},{"line_number":277,"context_line":"  number it should be ``DEGRADED``, and ``READY`` if there are enough"},{"line_number":278,"context_line":"  Amphorae."},{"line_number":279,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_e4523866","line":276,"updated":"2016-08-23 15:41:45.000000000","message":"For the pools, \"ERROR\" means there are no members available to service requests.  For consistency shouldn\u0027t we use \"ERROR\" here as there are no amphora available to service the request?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":273,"context_line":"  The provisioning status should be interpreted as referring to an Amphora"},{"line_number":274,"context_line":"  only and not the load-balancing service. The status of the loadbalancer"},{"line_number":275,"context_line":"  should correspond to the number of ``READY`` Amphorae in the Cluster; if"},{"line_number":276,"context_line":"  low enough it should be ``ERROR``, above that but still below the desired"},{"line_number":277,"context_line":"  number it should be ``DEGRADED``, and ``READY`` if there are enough"},{"line_number":278,"context_line":"  Amphorae."},{"line_number":279,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_070304b9","line":276,"in_reply_to":"1ac06dbe_e4523866","updated":"2016-08-23 19:44:25.000000000","message":"Updated to use more sensible names to avoid ambiguity based on our in-person discussion.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"74c42fe10fe7b54f795c3625dddacc64d6e36ef0","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* Create a flow (or task) for the controller worker for (de-)registration"},{"line_number":290,"context_line":"  of Amphorae with Distributor. The Distributor has to be aware of the"},{"line_number":291,"context_line":"  current ``READY`` Amphorae, to which it can forward traffic. [P2_] The"},{"line_number":292,"context_line":"  Distributor can monitor the Amphorae health and perform some of these"},{"line_number":293,"context_line":"  actions automatically."},{"line_number":294,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_af7e5967","line":291,"range":{"start_line":291,"start_character":10,"end_line":291,"end_character":19},"updated":"2016-08-23 15:41:45.000000000","message":"We should not use the term \"READY\" in relation to amphora as that state already is in use to signify amphora that are available for allocation to a load balancer.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* Create a flow (or task) for the controller worker for (de-)registration"},{"line_number":290,"context_line":"  of Amphorae with Distributor. The Distributor has to be aware of the"},{"line_number":291,"context_line":"  current ``READY`` Amphorae, to which it can forward traffic. [P2_] The"},{"line_number":292,"context_line":"  Distributor can monitor the Amphorae health and perform some of these"},{"line_number":293,"context_line":"  actions automatically."},{"line_number":294,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_a71e7009","line":291,"range":{"start_line":291,"start_character":10,"end_line":291,"end_character":19},"in_reply_to":"1ac06dbe_af7e5967","updated":"2016-08-23 19:44:25.000000000","message":"Done.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"74c42fe10fe7b54f795c3625dddacc64d6e36ef0","unresolved":false,"context_lines":[{"line_number":289,"context_line":"* Create a flow (or task) for the controller worker for (de-)registration"},{"line_number":290,"context_line":"  of Amphorae with Distributor. The Distributor has to be aware of the"},{"line_number":291,"context_line":"  current ``READY`` Amphorae, to which it can forward traffic. [P2_] The"},{"line_number":292,"context_line":"  Distributor can monitor the Amphorae health and perform some of these"},{"line_number":293,"context_line":"  actions automatically."},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"* All the Amphorae in the Amphora Cluster shall replicate the same"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_af113906","line":292,"updated":"2016-08-23 15:41:45.000000000","message":"The distributor should not be monitoring amphora health.  We already have a component of Octavia that manages and monitors amphora health.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":289,"context_line":"* Create a flow (or task) for the controller worker for (de-)registration"},{"line_number":290,"context_line":"  of Amphorae with Distributor. The Distributor has to be aware of the"},{"line_number":291,"context_line":"  current ``READY`` Amphorae, to which it can forward traffic. [P2_] The"},{"line_number":292,"context_line":"  Distributor can monitor the Amphorae health and perform some of these"},{"line_number":293,"context_line":"  actions automatically."},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"* All the Amphorae in the Amphora Cluster shall replicate the same"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_07adc487","line":292,"in_reply_to":"1ac06dbe_aad3e7d3","updated":"2016-08-23 19:44:25.000000000","message":"Updated the spec to specify that distributor health monitoring should be minimal and primarily concerned with network connectivity to the amphora; Also updated to indicate that in-depth member checks remain the purview of the amphora.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"b6b7f06f510bd3abf3c5775d0cf7b184b7713f8c","unresolved":false,"context_lines":[{"line_number":289,"context_line":"* Create a flow (or task) for the controller worker for (de-)registration"},{"line_number":290,"context_line":"  of Amphorae with Distributor. The Distributor has to be aware of the"},{"line_number":291,"context_line":"  current ``READY`` Amphorae, to which it can forward traffic. [P2_] The"},{"line_number":292,"context_line":"  Distributor can monitor the Amphorae health and perform some of these"},{"line_number":293,"context_line":"  actions automatically."},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"* All the Amphorae in the Amphora Cluster shall replicate the same"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_aad3e7d3","line":292,"in_reply_to":"1ac06dbe_af113906","updated":"2016-08-23 16:19:16.000000000","message":"I think we need to include this option in the spec, as we may want to add this later on. It allows, e.g., to monitor reachability between the Distributor and the Amphorae it serves.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"74c42fe10fe7b54f795c3625dddacc64d6e36ef0","unresolved":false,"context_lines":[{"line_number":308,"context_line":"* Add an active-active topology to the topology types"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"* Add a new driver to support creation/deletion of an Amphora Cluster via"},{"line_number":311,"context_line":"  an ACM. The reference ACM will call the existing drivers to create"},{"line_number":312,"context_line":"  compute nodes for the Amphorae and configure them."},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"* The ACM shall orchestrate creation and deletion of Amphora instances to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_efc85157","line":311,"updated":"2016-08-23 15:41:45.000000000","message":"I would hope this would call via the controller worker to reuse existing flows.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"b6b7f06f510bd3abf3c5775d0cf7b184b7713f8c","unresolved":false,"context_lines":[{"line_number":308,"context_line":"* Add an active-active topology to the topology types"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"* Add a new driver to support creation/deletion of an Amphora Cluster via"},{"line_number":311,"context_line":"  an ACM. The reference ACM will call the existing drivers to create"},{"line_number":312,"context_line":"  compute nodes for the Amphorae and configure them."},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"* The ACM shall orchestrate creation and deletion of Amphora instances to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_509302fa","line":311,"in_reply_to":"1ac06dbe_efc85157","updated":"2016-08-23 16:19:16.000000000","message":"Agree.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"74c42fe10fe7b54f795c3625dddacc64d6e36ef0","unresolved":false,"context_lines":[{"line_number":311,"context_line":"  an ACM. The reference ACM will call the existing drivers to create"},{"line_number":312,"context_line":"  compute nodes for the Amphorae and configure them."},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"* The ACM shall orchestrate creation and deletion of Amphora instances to"},{"line_number":315,"context_line":"  meet the availability requirements. [P2]_ ACM shall handle graceful"},{"line_number":316,"context_line":"  amphora removal via flushing (delay actual removal until existing"},{"line_number":317,"context_line":"  connections are terminated or some timeout has passed)."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_4f4ec5c1","line":314,"updated":"2016-08-23 15:41:45.000000000","message":"I am not sure this makes sense.  Health manager is handling all of the health/statistics processing.  Why would it not manage the amphora pool as well?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"b6b7f06f510bd3abf3c5775d0cf7b184b7713f8c","unresolved":false,"context_lines":[{"line_number":311,"context_line":"  an ACM. The reference ACM will call the existing drivers to create"},{"line_number":312,"context_line":"  compute nodes for the Amphorae and configure them."},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"* The ACM shall orchestrate creation and deletion of Amphora instances to"},{"line_number":315,"context_line":"  meet the availability requirements. [P2]_ ACM shall handle graceful"},{"line_number":316,"context_line":"  amphora removal via flushing (delay actual removal until existing"},{"line_number":317,"context_line":"  connections are terminated or some timeout has passed)."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_90345afc","line":314,"in_reply_to":"1ac06dbe_4f4ec5c1","updated":"2016-08-23 16:19:16.000000000","message":"I think it makes sense for the simple fix-sized cluster. In the more general case behavior may depend on cluster type.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":311,"context_line":"  an ACM. The reference ACM will call the existing drivers to create"},{"line_number":312,"context_line":"  compute nodes for the Amphorae and configure them."},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"* The ACM shall orchestrate creation and deletion of Amphora instances to"},{"line_number":315,"context_line":"  meet the availability requirements. [P2]_ ACM shall handle graceful"},{"line_number":316,"context_line":"  amphora removal via flushing (delay actual removal until existing"},{"line_number":317,"context_line":"  connections are terminated or some timeout has passed)."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_e74fc831","line":314,"in_reply_to":"1ac06dbe_90345afc","updated":"2016-08-23 19:44:25.000000000","message":"Clarified that the existing flows for this will be re-used in the reference implementation (based on discussion in person here with Lera.)","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"74c42fe10fe7b54f795c3625dddacc64d6e36ef0","unresolved":false,"context_lines":[{"line_number":314,"context_line":"* The ACM shall orchestrate creation and deletion of Amphora instances to"},{"line_number":315,"context_line":"  meet the availability requirements. [P2]_ ACM shall handle graceful"},{"line_number":316,"context_line":"  amphora removal via flushing (delay actual removal until existing"},{"line_number":317,"context_line":"  connections are terminated or some timeout has passed)."},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"* Change the flow of LB creation. The ACM driver shall create an Amphora"},{"line_number":320,"context_line":"  Cluster instance for each new loadbalancer. It should maintain the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_2fed49b7","line":317,"updated":"2016-08-23 15:41:45.000000000","message":"This is typically called draining","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"b6b7f06f510bd3abf3c5775d0cf7b184b7713f8c","unresolved":false,"context_lines":[{"line_number":314,"context_line":"* The ACM shall orchestrate creation and deletion of Amphora instances to"},{"line_number":315,"context_line":"  meet the availability requirements. [P2]_ ACM shall handle graceful"},{"line_number":316,"context_line":"  amphora removal via flushing (delay actual removal until existing"},{"line_number":317,"context_line":"  connections are terminated or some timeout has passed)."},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"* Change the flow of LB creation. The ACM driver shall create an Amphora"},{"line_number":320,"context_line":"  Cluster instance for each new loadbalancer. It should maintain the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_8a66eb27","line":317,"in_reply_to":"1ac06dbe_2fed49b7","updated":"2016-08-23 16:19:16.000000000","message":"Done","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"74c42fe10fe7b54f795c3625dddacc64d6e36ef0","unresolved":false,"context_lines":[{"line_number":321,"context_line":"  desired number of Amphorae in the Cluster and meet the"},{"line_number":322,"context_line":"  high-availability configuration given by the operator. *Note*: a base"},{"line_number":323,"context_line":"  functionality is already supported by the Health Manager; it may be"},{"line_number":324,"context_line":"  enough to support a fixed cluster size."},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"* The ACM shall be responsible for providing health, performance, and"},{"line_number":327,"context_line":"  life-cycle management at the Cluster-level rather than at Amphora-level."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_8f4d5d9c","line":324,"updated":"2016-08-23 15:41:45.000000000","message":"It could easily manage a dynamic cluster size.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"b6b7f06f510bd3abf3c5775d0cf7b184b7713f8c","unresolved":false,"context_lines":[{"line_number":321,"context_line":"  desired number of Amphorae in the Cluster and meet the"},{"line_number":322,"context_line":"  high-availability configuration given by the operator. *Note*: a base"},{"line_number":323,"context_line":"  functionality is already supported by the Health Manager; it may be"},{"line_number":324,"context_line":"  enough to support a fixed cluster size."},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"* The ACM shall be responsible for providing health, performance, and"},{"line_number":327,"context_line":"  life-cycle management at the Cluster-level rather than at Amphora-level."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_c4f577ed","line":324,"in_reply_to":"1ac06dbe_8f4d5d9c","updated":"2016-08-23 16:19:16.000000000","message":"Do we want to implement elasticity in the HM? I thoght we agreed last time that we will abstract this in a ACM driver","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":321,"context_line":"  desired number of Amphorae in the Cluster and meet the"},{"line_number":322,"context_line":"  high-availability configuration given by the operator. *Note*: a base"},{"line_number":323,"context_line":"  functionality is already supported by the Health Manager; it may be"},{"line_number":324,"context_line":"  enough to support a fixed cluster size."},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"* The ACM shall be responsible for providing health, performance, and"},{"line_number":327,"context_line":"  life-cycle management at the Cluster-level rather than at Amphora-level."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_47ecdc29","line":324,"in_reply_to":"1ac06dbe_c4f577ed","updated":"2016-08-23 19:44:25.000000000","message":"Updated wording to clarify this. Yes, we are abstracting (ie. using a driver). And yes, in the reference we will be re-using existing flows/code.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"74c42fe10fe7b54f795c3625dddacc64d6e36ef0","unresolved":false,"context_lines":[{"line_number":324,"context_line":"  enough to support a fixed cluster size."},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"* The ACM shall be responsible for providing health, performance, and"},{"line_number":327,"context_line":"  life-cycle management at the Cluster-level rather than at Amphora-level."},{"line_number":328,"context_line":"  Maintaining the loadbalancer status (as described above) by some function"},{"line_number":329,"context_line":"  of the collective status of all Amphorae in the Cluster is one example."},{"line_number":330,"context_line":"  Other examples include tracking configuration changes, providing Cluster"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_4abeb3ff","line":327,"updated":"2016-08-23 15:41:45.000000000","message":"Why is the ACM handling this when we have existing components that handle the required data?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"b6b7f06f510bd3abf3c5775d0cf7b184b7713f8c","unresolved":false,"context_lines":[{"line_number":324,"context_line":"  enough to support a fixed cluster size."},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"* The ACM shall be responsible for providing health, performance, and"},{"line_number":327,"context_line":"  life-cycle management at the Cluster-level rather than at Amphora-level."},{"line_number":328,"context_line":"  Maintaining the loadbalancer status (as described above) by some function"},{"line_number":329,"context_line":"  of the collective status of all Amphorae in the Cluster is one example."},{"line_number":330,"context_line":"  Other examples include tracking configuration changes, providing Cluster"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_d0f25205","line":327,"in_reply_to":"1ac06dbe_4abeb3ff","updated":"2016-08-23 16:19:16.000000000","message":"Behavior may be different for different cluster types. E.g., for a dedicated Distributor we need to manage the Distributor health per cluster. We don\u0027t want many \"if cluster_type is...\" statements spread all over. That said, the fixed-size cluster may be simple enough to be handled as an if statement like the VRRP code.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"98c65970548c6e96afa939861ea49c704f6938ad","unresolved":false,"context_lines":[{"line_number":328,"context_line":"  Maintaining the loadbalancer status (as described above) by some function"},{"line_number":329,"context_line":"  of the collective status of all Amphorae in the Cluster is one example."},{"line_number":330,"context_line":"  Other examples include tracking configuration changes, providing Cluster"},{"line_number":331,"context_line":"  statistics, monitoring and maintaining compute nodes for the Cluster,"},{"line_number":332,"context_line":"  etc. The ACM abstraction would also support pluggable ACM implementations"},{"line_number":333,"context_line":"  that may provide more advance capabilities (e.g., elasticity, AZ aware"},{"line_number":334,"context_line":"  availability, etc.)."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_752c3099","line":331,"updated":"2016-08-23 17:13:00.000000000","message":"I don\u0027t think we want the ACM providing these services.  I think the health manager should continue to handle these roles and notify the ACM of front end pool changes.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":328,"context_line":"  Maintaining the loadbalancer status (as described above) by some function"},{"line_number":329,"context_line":"  of the collective status of all Amphorae in the Cluster is one example."},{"line_number":330,"context_line":"  Other examples include tracking configuration changes, providing Cluster"},{"line_number":331,"context_line":"  statistics, monitoring and maintaining compute nodes for the Cluster,"},{"line_number":332,"context_line":"  etc. The ACM abstraction would also support pluggable ACM implementations"},{"line_number":333,"context_line":"  that may provide more advance capabilities (e.g., elasticity, AZ aware"},{"line_number":334,"context_line":"  availability, etc.)."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_67a7580b","line":331,"in_reply_to":"1ac06dbe_752c3099","updated":"2016-08-23 19:44:25.000000000","message":"I\u0027ve updated the wording of this paragraph to indicate that the reference implementation will re-use existing components and/or code which already fulfill these functions for other topologies.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"98c65970548c6e96afa939861ea49c704f6938ad","unresolved":false,"context_lines":[{"line_number":341,"context_line":"* Add configuration file options to support configuration of an"},{"line_number":342,"context_line":"  active-active Amphora Cluster. Add default configuration. [P2]_ Add"},{"line_number":343,"context_line":"  Operator API."},{"line_number":344,"context_line":""},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"Network driver changes"},{"line_number":347,"context_line":"~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_f53f80b1","line":344,"updated":"2016-08-23 17:13:00.000000000","message":"Docs","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":341,"context_line":"* Add configuration file options to support configuration of an"},{"line_number":342,"context_line":"  active-active Amphora Cluster. Add default configuration. [P2]_ Add"},{"line_number":343,"context_line":"  Operator API."},{"line_number":344,"context_line":""},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"Network driver changes"},{"line_number":347,"context_line":"~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_c7160c4b","line":344,"in_reply_to":"1ac06dbe_f53f80b1","updated":"2016-08-23 19:44:25.000000000","message":"Added.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"43a6887e89ca2a4a64c7d57b14f9493c5ee78934","unresolved":false,"context_lines":[{"line_number":353,"context_line":"  loadbalancer\u0027s front-end network, adding a VIP port to the Distributor,"},{"line_number":354,"context_line":"  and configuring the Distributor to answer ``arp`` requests for the VIP."},{"line_number":355,"context_line":"  The Distributor shall have a separate interface for each loadbalancer and"},{"line_number":356,"context_line":"  shall not allow any routing between different ports; in particular,"},{"line_number":357,"context_line":"  Amphorae of different tenants must not be able to communicate with each"},{"line_number":358,"context_line":"  other."},{"line_number":359,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_c238f53f","line":356,"range":{"start_line":356,"start_character":38,"end_line":356,"end_character":53},"updated":"2016-08-23 07:01:08.000000000","message":"Suggestion: We should do this in the reference implementation using network namespaces, much the same way we do this with amphorae now.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c5ee1a8e50ccc317b2de81b435cf7be44b896732","unresolved":false,"context_lines":[{"line_number":353,"context_line":"  loadbalancer\u0027s front-end network, adding a VIP port to the Distributor,"},{"line_number":354,"context_line":"  and configuring the Distributor to answer ``arp`` requests for the VIP."},{"line_number":355,"context_line":"  The Distributor shall have a separate interface for each loadbalancer and"},{"line_number":356,"context_line":"  shall not allow any routing between different ports; in particular,"},{"line_number":357,"context_line":"  Amphorae of different tenants must not be able to communicate with each"},{"line_number":358,"context_line":"  other."},{"line_number":359,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_ae077280","line":356,"range":{"start_line":356,"start_character":38,"end_line":356,"end_character":53},"in_reply_to":"1ac06dbe_304486b5","updated":"2016-08-23 17:36:19.000000000","message":"My +1 was for network namespaces","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":353,"context_line":"  loadbalancer\u0027s front-end network, adding a VIP port to the Distributor,"},{"line_number":354,"context_line":"  and configuring the Distributor to answer ``arp`` requests for the VIP."},{"line_number":355,"context_line":"  The Distributor shall have a separate interface for each loadbalancer and"},{"line_number":356,"context_line":"  shall not allow any routing between different ports; in particular,"},{"line_number":357,"context_line":"  Amphorae of different tenants must not be able to communicate with each"},{"line_number":358,"context_line":"  other."},{"line_number":359,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_bc7a03bb","line":356,"range":{"start_line":356,"start_character":38,"end_line":356,"end_character":53},"in_reply_to":"1ac06dbe_ae077280","updated":"2016-08-23 19:44:25.000000000","message":"Adding verbage to clarify this.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"98c65970548c6e96afa939861ea49c704f6938ad","unresolved":false,"context_lines":[{"line_number":353,"context_line":"  loadbalancer\u0027s front-end network, adding a VIP port to the Distributor,"},{"line_number":354,"context_line":"  and configuring the Distributor to answer ``arp`` requests for the VIP."},{"line_number":355,"context_line":"  The Distributor shall have a separate interface for each loadbalancer and"},{"line_number":356,"context_line":"  shall not allow any routing between different ports; in particular,"},{"line_number":357,"context_line":"  Amphorae of different tenants must not be able to communicate with each"},{"line_number":358,"context_line":"  other."},{"line_number":359,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_304486b5","line":356,"range":{"start_line":356,"start_character":38,"end_line":356,"end_character":53},"in_reply_to":"1ac06dbe_c238f53f","updated":"2016-08-23 17:13:00.000000000","message":"+1 Though I also want to see a non-shared distributor","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"2c7ff9d9771914d485495f4129752af9c37a55ce","unresolved":false,"context_lines":[{"line_number":353,"context_line":"  loadbalancer\u0027s front-end network, adding a VIP port to the Distributor,"},{"line_number":354,"context_line":"  and configuring the Distributor to answer ``arp`` requests for the VIP."},{"line_number":355,"context_line":"  The Distributor shall have a separate interface for each loadbalancer and"},{"line_number":356,"context_line":"  shall not allow any routing between different ports; in particular,"},{"line_number":357,"context_line":"  Amphorae of different tenants must not be able to communicate with each"},{"line_number":358,"context_line":"  other."},{"line_number":359,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_4a1a3318","line":356,"range":{"start_line":356,"start_character":38,"end_line":356,"end_character":53},"in_reply_to":"1ac06dbe_c238f53f","updated":"2016-08-23 15:43:24.000000000","message":"It turns out OVS can\u0027t use network namespaces the same way we do it in amphorae, so this suggestion won\u0027t work.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":18818,"name":"Dean H. Lorenz","email":"code@dean.lorenz.co.il","username":"dean"},"change_message_id":"b6b7f06f510bd3abf3c5775d0cf7b184b7713f8c","unresolved":false,"context_lines":[{"line_number":353,"context_line":"  loadbalancer\u0027s front-end network, adding a VIP port to the Distributor,"},{"line_number":354,"context_line":"  and configuring the Distributor to answer ``arp`` requests for the VIP."},{"line_number":355,"context_line":"  The Distributor shall have a separate interface for each loadbalancer and"},{"line_number":356,"context_line":"  shall not allow any routing between different ports; in particular,"},{"line_number":357,"context_line":"  Amphorae of different tenants must not be able to communicate with each"},{"line_number":358,"context_line":"  other."},{"line_number":359,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_b5f508ee","line":356,"range":{"start_line":356,"start_character":38,"end_line":356,"end_character":53},"in_reply_to":"1ac06dbe_c238f53f","updated":"2016-08-23 16:19:16.000000000","message":"We cannot use separate namespaces, but we do use separate OVS bridge instances.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"98c65970548c6e96afa939861ea49c704f6938ad","unresolved":false,"context_lines":[{"line_number":361,"context_line":"  networks (similar to current implementation), adding the VIP (but with"},{"line_number":362,"context_line":"  ``arp`` disabled), and registering the Amphora with the Distributor. The"},{"line_number":363,"context_line":"  tenant\u0027s front-end and back-end networks must allow attachment of"},{"line_number":364,"context_line":"  dynamically created Amphorae by the ACM (e.g., when replacing a failed"},{"line_number":365,"context_line":"  Amphora). ([P2]_ extend the LBaaS API to allow specifying an address"},{"line_number":366,"context_line":"  range for new Amphorae usage, e.g., a subnet pool)."},{"line_number":367,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_b08516d0","line":364,"updated":"2016-08-23 17:13:00.000000000","message":"Not ACM?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":361,"context_line":"  networks (similar to current implementation), adding the VIP (but with"},{"line_number":362,"context_line":"  ``arp`` disabled), and registering the Amphora with the Distributor. The"},{"line_number":363,"context_line":"  tenant\u0027s front-end and back-end networks must allow attachment of"},{"line_number":364,"context_line":"  dynamically created Amphorae by the ACM (e.g., when replacing a failed"},{"line_number":365,"context_line":"  Amphora). ([P2]_ extend the LBaaS API to allow specifying an address"},{"line_number":366,"context_line":"  range for new Amphorae usage, e.g., a subnet pool)."},{"line_number":367,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_1c1eb76f","line":364,"in_reply_to":"1ac06dbe_b08516d0","updated":"2016-08-23 19:44:25.000000000","message":"Updating wording to clarify this.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"98c65970548c6e96afa939861ea49c704f6938ad","unresolved":false,"context_lines":[{"line_number":397,"context_line":""},{"line_number":398,"context_line":"  - Registration and de-registration of Amphorae."},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"  - Status"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"* Spawn Distributors (if using on demand Distributor compute nodes) and/or"},{"line_number":403,"context_line":"  attach to existing ones as needed. Manage health and life-cycle of the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_3d7c5ab4","line":400,"updated":"2016-08-23 17:13:00.000000000","message":"Maybe a P2 here would be stats?  For folks that want metrics at the macro level?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":397,"context_line":""},{"line_number":398,"context_line":"  - Registration and de-registration of Amphorae."},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"  - Status"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"* Spawn Distributors (if using on demand Distributor compute nodes) and/or"},{"line_number":403,"context_line":"  attach to existing ones as needed. Manage health and life-cycle of the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_fc92bbf4","line":400,"in_reply_to":"1ac06dbe_3d7c5ab4","updated":"2016-08-23 19:44:25.000000000","message":"Done.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"98c65970548c6e96afa939861ea49c704f6938ad","unresolved":false,"context_lines":[{"line_number":411,"context_line":"  and [P2]_ configure the distribution algorithm for the loadbalancer\u0027s"},{"line_number":412,"context_line":"  Amphora Cluster."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"* Add flows to the ACM to (re-)configure the Distributor on adding/removing"},{"line_number":415,"context_line":"  Amphorae from the Amphora Cluster."},{"line_number":416,"context_line":""},{"line_number":417,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_7d37f2fe","line":414,"updated":"2016-08-23 17:13:00.000000000","message":"I think this is old and should be removed?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":411,"context_line":"  and [P2]_ configure the distribution algorithm for the loadbalancer\u0027s"},{"line_number":412,"context_line":"  Amphora Cluster."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"* Add flows to the ACM to (re-)configure the Distributor on adding/removing"},{"line_number":415,"context_line":"  Amphorae from the Amphora Cluster."},{"line_number":416,"context_line":""},{"line_number":417,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_7c9ecb07","line":414,"in_reply_to":"1ac06dbe_7d37f2fe","updated":"2016-08-23 19:44:25.000000000","message":"Updated.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"98c65970548c6e96afa939861ea49c704f6938ad","unresolved":false,"context_lines":[{"line_number":500,"context_line":"* Distributor REST API -- see Distributor spec."},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"* Amphora REST API -- support configuration of connecting with"},{"line_number":503,"context_line":"  Distributor(s) and disabling ``arp`` on VIP."},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"* Octavia REST API -- support interaction with external ACM."},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_d8a71409","line":503,"updated":"2016-08-23 17:13:00.000000000","message":"Amp API would change to connect with Distributor?  I don\u0027t think so.  What am I missing?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":500,"context_line":"* Distributor REST API -- see Distributor spec."},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"* Amphora REST API -- support configuration of connecting with"},{"line_number":503,"context_line":"  Distributor(s) and disabling ``arp`` on VIP."},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"* Octavia REST API -- support interaction with external ACM."},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_3cd61328","line":503,"in_reply_to":"1ac06dbe_d8a71409","updated":"2016-08-23 19:44:25.000000000","message":"I agree: I don\u0027t see any reason the amphora would need to initiate any connections to the Distributor.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"98c65970548c6e96afa939861ea49c704f6938ad","unresolved":false,"context_lines":[{"line_number":502,"context_line":"* Amphora REST API -- support configuration of connecting with"},{"line_number":503,"context_line":"  Distributor(s) and disabling ``arp`` on VIP."},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"* Octavia REST API -- support interaction with external ACM."},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"* [P2]_ LBaaS API -- support configuration of desired availability, perhaps"},{"line_number":508,"context_line":"  by selecting a flavor (e.g., gold is a minimum of 4 Amphorae, platinum is"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_b877b89e","line":505,"updated":"2016-08-23 17:13:00.000000000","message":"What is this for?  Operator API methods?","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":502,"context_line":"* Amphora REST API -- support configuration of connecting with"},{"line_number":503,"context_line":"  Distributor(s) and disabling ``arp`` on VIP."},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"* Octavia REST API -- support interaction with external ACM."},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"* [P2]_ LBaaS API -- support configuration of desired availability, perhaps"},{"line_number":508,"context_line":"  by selecting a flavor (e.g., gold is a minimum of 4 Amphorae, platinum is"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_7cdc0b46","line":505,"in_reply_to":"1ac06dbe_b877b89e","updated":"2016-08-23 19:44:25.000000000","message":"I think this is for an external ACM to issue commands to Octavia to do things like spin up/down amphorae that are part of a given cluster. In any case, this should only be necessary once auto-scale is a thing, and this shouldn\u0027t be part of the tenant-exposed API anyway. (I would consider this part of the operator API.)","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"98c65970548c6e96afa939861ea49c704f6938ad","unresolved":false,"context_lines":[{"line_number":532,"context_line":"Other end user impact"},{"line_number":533,"context_line":"---------------------"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"@TODO"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_18952c86","line":535,"updated":"2016-08-23 17:13:00.000000000","message":"We should either fill these in or change them to None","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":532,"context_line":"Other end user impact"},{"line_number":533,"context_line":"---------------------"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"@TODO"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_1cc0774f","line":535,"in_reply_to":"1ac06dbe_18952c86","updated":"2016-08-23 19:44:25.000000000","message":"Done.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"98c65970548c6e96afa939861ea49c704f6938ad","unresolved":false,"context_lines":[{"line_number":538,"context_line":"Performance Impact"},{"line_number":539,"context_line":"------------------"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"@TODO"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_b8ecd82a","line":541,"updated":"2016-08-23 17:13:00.000000000","message":"I would hope there is some here.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":538,"context_line":"Performance Impact"},{"line_number":539,"context_line":"------------------"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"@TODO"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_1ca7d7bd","line":541,"in_reply_to":"1ac06dbe_b8ecd82a","updated":"2016-08-23 19:44:25.000000000","message":"Done.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"98c65970548c6e96afa939861ea49c704f6938ad","unresolved":false,"context_lines":[{"line_number":544,"context_line":"Other deployer impact"},{"line_number":545,"context_line":"---------------------"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"@TODO"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"Developer impact"},{"line_number":550,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_98d63c4d","line":547,"updated":"2016-08-23 17:13:00.000000000","message":"We should mention there would be another process here.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":544,"context_line":"Other deployer impact"},{"line_number":545,"context_line":"---------------------"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"@TODO"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"Developer impact"},{"line_number":550,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_dc99bf7a","line":547,"in_reply_to":"1ac06dbe_98d63c4d","updated":"2016-08-23 19:44:25.000000000","message":"Done.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"98c65970548c6e96afa939861ea49c704f6938ad","unresolved":false,"context_lines":[{"line_number":578,"context_line":""},{"line_number":579,"context_line":"* Unit tests with tox."},{"line_number":580,"context_line":"* Function tests with tox."},{"line_number":581,"context_line":""},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"Documentation Impact"},{"line_number":584,"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":9,"id":"1ac06dbe_983d9c91","line":581,"updated":"2016-08-23 17:13:00.000000000","message":"Scenario tests","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":578,"context_line":""},{"line_number":579,"context_line":"* Unit tests with tox."},{"line_number":580,"context_line":"* Function tests with tox."},{"line_number":581,"context_line":""},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"Documentation Impact"},{"line_number":584,"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":9,"id":"1ac06dbe_1c8eb72d","line":581,"in_reply_to":"1ac06dbe_983d9c91","updated":"2016-08-23 19:44:25.000000000","message":"Done.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"98c65970548c6e96afa939861ea49c704f6938ad","unresolved":false,"context_lines":[{"line_number":583,"context_line":"Documentation Impact"},{"line_number":584,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"@TODO"},{"line_number":587,"context_line":""},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_58b96414","line":586,"updated":"2016-08-23 17:13:00.000000000","message":"Yes, there is some.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"c152f3579048e99d5b882d9396ac064b59d3db6c","unresolved":false,"context_lines":[{"line_number":583,"context_line":"Documentation Impact"},{"line_number":584,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"@TODO"},{"line_number":587,"context_line":""},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ac06dbe_fc759b31","line":586,"in_reply_to":"1ac06dbe_58b96414","updated":"2016-08-23 19:44:25.000000000","message":"Added.","commit_id":"4e79acf99f38396b8cb60c8d9276c65c1ae7a390"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":129,"context_line":"* An example of high-level data-flow:"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"  1. Internet clients access a tenant service through an externally visible"},{"line_number":132,"context_line":"     floating-IP (IPv4 or IPv6)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  2. If IPv4, a gateway router maps the floating IP into a loadbalancer\u0027s"},{"line_number":135,"context_line":"     internal VIP on a the tenant\u0027s front-end network."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_2f589255","line":132,"range":{"start_line":132,"start_character":30,"end_line":132,"end_character":31},"updated":"2016-08-23 21:58:58.000000000","message":"period needed","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":129,"context_line":"* An example of high-level data-flow:"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"  1. Internet clients access a tenant service through an externally visible"},{"line_number":132,"context_line":"     floating-IP (IPv4 or IPv6)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  2. If IPv4, a gateway router maps the floating IP into a loadbalancer\u0027s"},{"line_number":135,"context_line":"     internal VIP on a the tenant\u0027s front-end network."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_85b247e3","line":132,"range":{"start_line":132,"start_character":30,"end_line":132,"end_character":31},"in_reply_to":"1ac06dbe_2f589255","updated":"2016-08-23 22:19:56.000000000","message":"Done","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":156,"context_line":"     member on the tenant network. The Amphora also performs SSL"},{"line_number":157,"context_line":"     termination if configured."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"  7. Out going traffic traverses from the back-end pool members, through"},{"line_number":160,"context_line":"     the Amphora and directly to the gateway (i.e., not through the"},{"line_number":161,"context_line":"     Distributor)."},{"line_number":162,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_aa6d90cd","line":159,"range":{"start_line":159,"start_character":8,"end_line":159,"end_character":9},"updated":"2016-08-23 21:58:58.000000000","message":"make one word: Outgoing","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":156,"context_line":"     member on the tenant network. The Amphora also performs SSL"},{"line_number":157,"context_line":"     termination if configured."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"  7. Out going traffic traverses from the back-end pool members, through"},{"line_number":160,"context_line":"     the Amphora and directly to the gateway (i.e., not through the"},{"line_number":161,"context_line":"     Distributor)."},{"line_number":162,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_65e0ebcd","line":159,"range":{"start_line":159,"start_character":8,"end_line":159,"end_character":9},"in_reply_to":"1ac06dbe_aa6d90cd","updated":"2016-08-23 22:19:56.000000000","message":"Done","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":228,"context_line":"Problem Details"},{"line_number":229,"context_line":"---------------"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"* Octavia should support different Distributor implementations, similarl"},{"line_number":232,"context_line":"  to its support for different Amphora types. The operator should be able"},{"line_number":233,"context_line":"  to configure different types of algorithms for the Distributor. All"},{"line_number":234,"context_line":"  algorithms should provide flow-affinity to allow TLS termination at the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_6a855858","line":231,"range":{"start_line":231,"start_character":64,"end_line":231,"end_character":72},"updated":"2016-08-23 21:58:58.000000000","message":"typo: similar","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":228,"context_line":"Problem Details"},{"line_number":229,"context_line":"---------------"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"* Octavia should support different Distributor implementations, similarl"},{"line_number":232,"context_line":"  to its support for different Amphora types. The operator should be able"},{"line_number":233,"context_line":"  to configure different types of algorithms for the Distributor. All"},{"line_number":234,"context_line":"  algorithms should provide flow-affinity to allow TLS termination at the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_45e32fd9","line":231,"range":{"start_line":231,"start_character":64,"end_line":231,"end_character":72},"in_reply_to":"1ac06dbe_6a855858","updated":"2016-08-23 22:19:56.000000000","message":"Done","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"325419f402fddfda58c35f5ec9f9f1507b76c1c2","unresolved":false,"context_lines":[{"line_number":305,"context_line":"Amphora Cluster Manager driver for the active-active topology (*new*)"},{"line_number":306,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"* Add an active-active topology to the topology types"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"* Add a new driver to support creation/deletion of an Amphora Cluster via"},{"line_number":311,"context_line":"  an ACM. The reference ACM will call the existing drivers to create"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_6ae0b8cd","line":308,"updated":"2016-08-23 21:58:58.000000000","message":"period needed","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"95359c2672d9f1dcc356f131de1eebe547198ed3","unresolved":false,"context_lines":[{"line_number":305,"context_line":"Amphora Cluster Manager driver for the active-active topology (*new*)"},{"line_number":306,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"* Add an active-active topology to the topology types"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"* Add a new driver to support creation/deletion of an Amphora Cluster via"},{"line_number":311,"context_line":"  an ACM. The reference ACM will call the existing drivers to create"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ac06dbe_e5d4dbec","line":308,"in_reply_to":"1ac06dbe_6ae0b8cd","updated":"2016-08-23 22:19:56.000000000","message":"Done","commit_id":"be0fcd0be562663b5b4230303ec1b049f76481ba"},{"author":{"_account_id":22968,"name":"KRISHNA MOULI. TANKALA","email":"krishna-mouli.tankala@hpe.com","username":"mouli"},"change_message_id":"03213a4ebc611237a66ed2b111ce492c6cb409bb","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* The active-active topology shall support various Amphora types and"},{"line_number":58,"context_line":"  implementations; including, virtual machines, [P2]_ containers, and"},{"line_number":59,"context_line":"  bare-metal servers."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* The operator should be able to configure the high-availability"},{"line_number":62,"context_line":"  requirements for the active-active load-balancing services. The operator"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_cfcf3e54","line":59,"range":{"start_line":59,"start_character":2,"end_line":59,"end_character":20},"updated":"2016-08-23 21:52:52.000000000","message":"We can do this using openstack ironic","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5d796b72686d711087ca7350db28db19d02d8df3","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* The active-active topology shall support various Amphora types and"},{"line_number":58,"context_line":"  implementations; including, virtual machines, [P2]_ containers, and"},{"line_number":59,"context_line":"  bare-metal servers."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* The operator should be able to configure the high-availability"},{"line_number":62,"context_line":"  requirements for the active-active load-balancing services. The operator"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_e5985b7a","line":59,"range":{"start_line":59,"start_character":2,"end_line":59,"end_character":20},"in_reply_to":"1ac06dbe_cfcf3e54","updated":"2016-08-23 22:20:03.000000000","message":"Yep. Probably no need to specify the bare-metal management system here.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":22968,"name":"KRISHNA MOULI. TANKALA","email":"krishna-mouli.tankala@hpe.com","username":"mouli"},"change_message_id":"03213a4ebc611237a66ed2b111ce492c6cb409bb","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"* Extend data model to support active-active Amphora. This is somewhat"},{"line_number":269,"context_line":"  similar to active-passive (VRRP) support. Each Amphora needs to store its"},{"line_number":270,"context_line":"  IP and port on it\u0027s front-end network (similar to ha_ipd and ha_port_id"},{"line_number":271,"context_line":"  in the current model) and its role should indicate it is in a cluster."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"  The provisioning status should be interpreted as referring to an Amphora"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_2ae520a7","line":270,"range":{"start_line":270,"start_character":52,"end_line":270,"end_character":58},"updated":"2016-08-23 21:52:52.000000000","message":"is it ha_ip_id?","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5d796b72686d711087ca7350db28db19d02d8df3","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"* Extend data model to support active-active Amphora. This is somewhat"},{"line_number":269,"context_line":"  similar to active-passive (VRRP) support. Each Amphora needs to store its"},{"line_number":270,"context_line":"  IP and port on it\u0027s front-end network (similar to ha_ipd and ha_port_id"},{"line_number":271,"context_line":"  in the current model) and its role should indicate it is in a cluster."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"  The provisioning status should be interpreted as referring to an Amphora"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ac06dbe_25ad5388","line":270,"range":{"start_line":270,"start_character":52,"end_line":270,"end_character":58},"in_reply_to":"1ac06dbe_2ae520a7","updated":"2016-08-23 22:20:03.000000000","message":"Fixed.","commit_id":"0219a47fe972a200958c4a849a3cee1ba26b45ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4b105795156d8b07dc26fc55bcbccb0be07da88c","unresolved":false,"context_lines":[{"line_number":239,"context_line":"  needed) and shall reconfigure the other solution components (e.g.,"},{"line_number":240,"context_line":"  Neutron) as needed. The  controller shall further manage all Amphora"},{"line_number":241,"context_line":"  life-cycle events."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Proposed change"},{"line_number":245,"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":12,"id":"1ac06dbe_2957b7cb","line":242,"updated":"2016-08-24 16:29:23.000000000","message":"We need to have a discussion about haproxy peer synchronization of the sticky tables.  I think, due to scalability issues, we will need to create \"peer groups\" so that sticky tables synchronization occurs inside the \"peer group\" and to across the whole cluster of amphora.","commit_id":"7b85418f6f5fa25ba575aa917197fe7e879bab1c"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5622564ba56a8aaeeb915e13e1f1e45a2762925e","unresolved":false,"context_lines":[{"line_number":239,"context_line":"  needed) and shall reconfigure the other solution components (e.g.,"},{"line_number":240,"context_line":"  Neutron) as needed. The  controller shall further manage all Amphora"},{"line_number":241,"context_line":"  life-cycle events."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Proposed change"},{"line_number":245,"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":12,"id":"1ac06dbe_c4d6ca26","line":242,"in_reply_to":"1ac06dbe_2957b7cb","updated":"2016-08-24 16:47:38.000000000","message":"Done","commit_id":"7b85418f6f5fa25ba575aa917197fe7e879bab1c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4b105795156d8b07dc26fc55bcbccb0be07da88c","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"* Extend the Amphora (REST) API and/or *Plug VIP* task to allow disabling"},{"line_number":304,"context_line":"  of ``arp`` on the VIP."},{"line_number":305,"context_line":""},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"Amphora Cluster Manager driver for the active-active topology (*new*)"},{"line_number":308,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1ac06dbe_899b4b72","line":305,"updated":"2016-08-24 16:29:23.000000000","message":"We need to discuss the sticky table \"peer group\" here.","commit_id":"7b85418f6f5fa25ba575aa917197fe7e879bab1c"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5622564ba56a8aaeeb915e13e1f1e45a2762925e","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"* Extend the Amphora (REST) API and/or *Plug VIP* task to allow disabling"},{"line_number":304,"context_line":"  of ``arp`` on the VIP."},{"line_number":305,"context_line":""},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"Amphora Cluster Manager driver for the active-active topology (*new*)"},{"line_number":308,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1ac06dbe_09711be1","line":305,"in_reply_to":"1ac06dbe_899b4b72","updated":"2016-08-24 16:47:38.000000000","message":"Done","commit_id":"7b85418f6f5fa25ba575aa917197fe7e879bab1c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4b105795156d8b07dc26fc55bcbccb0be07da88c","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"* Add or update documentation for new components added and new or changed"},{"line_number":355,"context_line":"  functionality."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"Network driver changes"},{"line_number":358,"context_line":"~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":359,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"1ac06dbe_c9e0a3cf","line":356,"updated":"2016-08-24 16:29:23.000000000","message":"We need to include that communication with ACM is two way SSL protected.\nCommunication with the distributor must also use two way SSL.","commit_id":"7b85418f6f5fa25ba575aa917197fe7e879bab1c"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5622564ba56a8aaeeb915e13e1f1e45a2762925e","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"* Add or update documentation for new components added and new or changed"},{"line_number":355,"context_line":"  functionality."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"Network driver changes"},{"line_number":358,"context_line":"~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":359,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"1ac06dbe_a4758e33","line":356,"in_reply_to":"1ac06dbe_c9e0a3cf","updated":"2016-08-24 16:47:38.000000000","message":"Done","commit_id":"7b85418f6f5fa25ba575aa917197fe7e879bab1c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4b105795156d8b07dc26fc55bcbccb0be07da88c","unresolved":false,"context_lines":[{"line_number":508,"context_line":"  - `cluster_type`: type of Amphora Cluster implementation"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"REST API Impact"},{"line_number":512,"context_line":"---------------"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"* Distributor REST API -- see Distributor spec."}],"source_content_type":"text/x-rst","patch_set":12,"id":"1ac06dbe_894a2bab","line":511,"updated":"2016-08-24 16:29:23.000000000","message":"We need to comment on about this API being protected with two way SSL.","commit_id":"7b85418f6f5fa25ba575aa917197fe7e879bab1c"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5622564ba56a8aaeeb915e13e1f1e45a2762925e","unresolved":false,"context_lines":[{"line_number":508,"context_line":"  - `cluster_type`: type of Amphora Cluster implementation"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"REST API Impact"},{"line_number":512,"context_line":"---------------"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"* Distributor REST API -- see Distributor spec."}],"source_content_type":"text/x-rst","patch_set":12,"id":"1ac06dbe_a4c3ce37","line":511,"in_reply_to":"1ac06dbe_894a2bab","updated":"2016-08-24 16:47:38.000000000","message":"I have added verbiage to this effect to the active-active-distributor spec.","commit_id":"7b85418f6f5fa25ba575aa917197fe7e879bab1c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"46048dc3217c3874ea4475b070562f177edb1b89","unresolved":false,"context_lines":[{"line_number":524,"context_line":"  - `cluster_type`: type of Amphora Cluster implementation"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"REST API Impact"},{"line_number":528,"context_line":"---------------"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"* Distributor REST API -- see Distributor spec."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_2a8205c9","line":527,"updated":"2016-08-24 17:22:03.000000000","message":"I would still like to see two way SSL called out here as a REST API impact.","commit_id":"75f1d87b997f3514226f30103640017883f43e3c"}]}
