)]}'
{"Empty file":[{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"a2f44cf70745ba1c7555a63ca1a98bfe1495dd5e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"5a890539_fbef92e7","side":"PARENT","updated":"2014-11-18 23:50:51.000000000","message":"Test test, please ignore.","commit_id":"a56dc45b9890bc28be9e26f219eeab05cae24693"}],"doc/source/design/version0.5/activate-amphora-sequence.diag":[{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    span_height \u003d 40;"},{"line_number":4,"context_line":"    Controller; Database; \"Networking Service\"; \"Compute Service\"; \"Amphora\"; \"Create Amphora Sequence\" [width \u003d 200]; \"Delete Amphora Sequence\" [width \u003d 200];"},{"line_number":5,"context_line":"    Controller \u003d\u003e Database [label \u003d \"Request RSAC\", return \u003d \"Return RSAC\"];"},{"line_number":6,"context_line":"    \u003d\u003d\u003d WHILE RSAC \u003c HAAS \u003d\u003d\u003d"},{"line_number":7,"context_line":"    loop {"},{"line_number":8,"context_line":"        Controller \u003d\u003e \"Create Amphora Sequence\";"},{"line_number":9,"context_line":"    }"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"5a890539_e38cbbd9","line":6,"updated":"2014-12-03 04:34:26.000000000","message":"As I say in comments on the text document, the math here is actually off slightly. :)","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"f23cd144cd207cb694ca5b734ba0609ed0dae058","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    span_height \u003d 40;"},{"line_number":4,"context_line":"    Controller; Database; \"Networking Service\"; \"Compute Service\"; \"Amphora\"; \"Create Amphora Sequence\" [width \u003d 200]; \"Delete Amphora Sequence\" [width \u003d 200];"},{"line_number":5,"context_line":"    Controller \u003d\u003e Database [label \u003d \"Request RSAC\", return \u003d \"Return RSAC\"];"},{"line_number":6,"context_line":"    \u003d\u003d\u003d WHILE RSAC \u003c HAAS \u003d\u003d\u003d"},{"line_number":7,"context_line":"    loop {"},{"line_number":8,"context_line":"        Controller \u003d\u003e \"Create Amphora Sequence\";"},{"line_number":9,"context_line":"    }"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"5a890539_8273b54c","line":6,"in_reply_to":"5a890539_e38cbbd9","updated":"2014-12-04 06:22:47.000000000","message":"need to take into account amphorae being created/activated for this LB.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"}],"doc/source/design/version0.5/amphora-lifecycle-management.rst":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6526597d551d3f6f8040a5edf4e0c17deb654e94","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Assumptions"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":44,"context_line":"* An LB Mgmt Network has already been created and will be used as the network"},{"line_number":45,"context_line":"  in which the controller and each amphora will communicate with each other."},{"line_number":46,"context_line":"* An Octavia service account has been created and will be used to communicate"},{"line_number":47,"context_line":"  with the Compute Service and Network Service."},{"line_number":48,"context_line":"* This document uses the term controller in a general way.  It may be that some"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_6ca8d320","line":45,"updated":"2014-11-13 21:12:43.000000000","message":"Will all amphora share the same management network, and thus possibly allow amp\u003c-\u003eamp communication between unrelated amphorae? Or, will each amp set (all amps related to the same logical LB, i.e. HA pairs) have a unique management network defined?","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"62e9560d8465d5fdf5e302f99fa34542e301206d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Assumptions"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":44,"context_line":"* An LB Mgmt Network has already been created and will be used as the network"},{"line_number":45,"context_line":"  in which the controller and each amphora will communicate with each other."},{"line_number":46,"context_line":"* An Octavia service account has been created and will be used to communicate"},{"line_number":47,"context_line":"  with the Compute Service and Network Service."},{"line_number":48,"context_line":"* This document uses the term controller in a general way.  It may be that some"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_1f15ae48","line":45,"in_reply_to":"5a890539_069e4b07","updated":"2014-11-21 23:32:01.000000000","message":"I don\u0027t think that\u0027s true -- even with just one Controller node, there are two options: one management network for all Amphorae, or one private management network for each HA Set of Amphorae. The number of controllers doesn\u0027t make a difference, therefore I still think this is a 0.5 issue (though it may end up coming down to just \"what is feasible given architecture restrictions\").","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"8478098a8d3050298de2a62ba09730a6e67eb417","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Assumptions"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":44,"context_line":"* An LB Mgmt Network has already been created and will be used as the network"},{"line_number":45,"context_line":"  in which the controller and each amphora will communicate with each other."},{"line_number":46,"context_line":"* An Octavia service account has been created and will be used to communicate"},{"line_number":47,"context_line":"  with the Compute Service and Network Service."},{"line_number":48,"context_line":"* This document uses the term controller in a general way.  It may be that some"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_069e4b07","line":45,"in_reply_to":"5a890539_6ca8d320","updated":"2014-11-13 22:16:23.000000000","message":"This relates to another discussion on whether every controller is responsible for its own set of Amphorae, or if any controller should be able to manage any Amphorae.  I do not believe this is something that 0.5 will need to solve for since it is assumed there will only be one controller in 0.5.","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6526597d551d3f6f8040a5edf4e0c17deb654e94","unresolved":false,"context_lines":[{"line_number":44,"context_line":"* An LB Mgmt Network has already been created and will be used as the network"},{"line_number":45,"context_line":"  in which the controller and each amphora will communicate with each other."},{"line_number":46,"context_line":"* An Octavia service account has been created and will be used to communicate"},{"line_number":47,"context_line":"  with the Compute Service and Network Service."},{"line_number":48,"context_line":"* This document uses the term controller in a general way.  It may be that some"},{"line_number":49,"context_line":"  of these actions take place in a spawned thread, or in another module."},{"line_number":50,"context_line":"  However, these can still be considered responsibilities of the controller."}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_f7073016","line":47,"updated":"2014-11-13 21:12:43.000000000","message":"Will this be a different service account from the one used to communicate with Barbican? \n\nAssuming Octavia is deployed behind Neutron-LBaaS as the user-facing API:\n\nWe agreed previously that Octavia would need to use the same service-account that Neutron-LBaaS uses, in order to accommodate for the way we\u0027re planning to use Barbican\u0027s per-secret security policy. If we used the same \"Octavia\" service-account for all service-to-service communication, then we\u0027d also be using Neutron-LBaaS\u0027 account for this. I don\u0027t know whether that\u0027s good or bad, but it merits discussion.","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"8478098a8d3050298de2a62ba09730a6e67eb417","unresolved":false,"context_lines":[{"line_number":44,"context_line":"* An LB Mgmt Network has already been created and will be used as the network"},{"line_number":45,"context_line":"  in which the controller and each amphora will communicate with each other."},{"line_number":46,"context_line":"* An Octavia service account has been created and will be used to communicate"},{"line_number":47,"context_line":"  with the Compute Service and Network Service."},{"line_number":48,"context_line":"* This document uses the term controller in a general way.  It may be that some"},{"line_number":49,"context_line":"  of these actions take place in a spawned thread, or in another module."},{"line_number":50,"context_line":"  However, these can still be considered responsibilities of the controller."}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_2687c7d8","line":47,"in_reply_to":"5a890539_f7073016","updated":"2014-11-13 22:16:23.000000000","message":"Yes more discussion needed around this.  However, I think for 0.5 we can just use the same account for all.","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6526597d551d3f6f8040a5edf4e0c17deb654e94","unresolved":false,"context_lines":[{"line_number":49,"context_line":"  of these actions take place in a spawned thread, or in another module."},{"line_number":50,"context_line":"  However, these can still be considered responsibilities of the controller."},{"line_number":51,"context_line":"* Any communication between the controller and an amphora will happen by the"},{"line_number":52,"context_line":"  controller calling the amphora load balancer driver."},{"line_number":53,"context_line":"* The Compute Service is an asynchronous API in which each Amphora\u0027s status"},{"line_number":54,"context_line":"  needs to be polled."},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_972fcc87","line":52,"updated":"2014-11-13 21:12:43.000000000","message":"Actually, there will be an instance of the amphora communicating directly to the controller, I believe -- for certificate signing requests. So, this is not strictly accurate.","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"8478098a8d3050298de2a62ba09730a6e67eb417","unresolved":false,"context_lines":[{"line_number":49,"context_line":"  of these actions take place in a spawned thread, or in another module."},{"line_number":50,"context_line":"  However, these can still be considered responsibilities of the controller."},{"line_number":51,"context_line":"* Any communication between the controller and an amphora will happen by the"},{"line_number":52,"context_line":"  controller calling the amphora load balancer driver."},{"line_number":53,"context_line":"* The Compute Service is an asynchronous API in which each Amphora\u0027s status"},{"line_number":54,"context_line":"  needs to be polled."},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_060bab7d","line":52,"in_reply_to":"5a890539_972fcc87","updated":"2014-11-13 22:16:23.000000000","message":"Yeah I should specify this.  It is mentioned below though :(","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6526597d551d3f6f8040a5edf4e0c17deb654e94","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"10. Amphora Sends Heartbeat To Controller"},{"line_number":125,"context_line":"#########################################"},{"line_number":126,"context_line":"Once the Amphora has become ACTIVE in the Compute Service it should start"},{"line_number":127,"context_line":"sending heartbeats to the controller. How the heartbeat is accomplished is"},{"line_number":128,"context_line":"beyond the scope of this document."},{"line_number":129,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_57ae44e7","line":126,"updated":"2014-11-13 21:12:43.000000000","message":"\"Once the Amphora has successfully started its API it should start sending heartbeats to the controller.\"","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"8478098a8d3050298de2a62ba09730a6e67eb417","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"10. Amphora Sends Heartbeat To Controller"},{"line_number":125,"context_line":"#########################################"},{"line_number":126,"context_line":"Once the Amphora has become ACTIVE in the Compute Service it should start"},{"line_number":127,"context_line":"sending heartbeats to the controller. How the heartbeat is accomplished is"},{"line_number":128,"context_line":"beyond the scope of this document."},{"line_number":129,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_26398741","line":126,"in_reply_to":"5a890539_57ae44e7","updated":"2014-11-13 22:16:23.000000000","message":"This is more specific","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6526597d551d3f6f8040a5edf4e0c17deb654e94","unresolved":false,"context_lines":[{"line_number":137,"context_line":"############################################"},{"line_number":138,"context_line":"This will most likely be done by making a quick query to the amphora API."},{"line_number":139,"context_line":"If this fails then the amphora should be deleted and this sequence should be"},{"line_number":140,"context_line":"restarted."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"13. Update Amphora Status"},{"line_number":143,"context_line":"#########################"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_d7f07400","line":140,"updated":"2014-11-13 21:12:43.000000000","message":"Yes, the amphora API should include a \"self test\" call that performs some basic checks on the health of the amphora and returns a thumbs up or thumbs down status to the controller.","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6526597d551d3f6f8040a5edf4e0c17deb654e94","unresolved":false,"context_lines":[{"line_number":144,"context_line":"The controller will presumably have a"},{"line_number":145,"context_line":"separate thread or process running that will be listening for these heartbeats."},{"line_number":146,"context_line":"Once it receives a heartbeat it should update the status of the Amphora in the"},{"line_number":147,"context_line":"octavia.amphora table to ACTIVE.  This will increment the RSAC."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Delete Amphora Sequence"},{"line_number":150,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_b73928a6","line":147,"updated":"2014-11-13 21:12:43.000000000","message":"The status should update to ACTIVE in the database after the Amphora Self-Test is run successfully (step 12, which itself relies on the heartbeat), not directly after receiving the heartbeat.","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"8478098a8d3050298de2a62ba09730a6e67eb417","unresolved":false,"context_lines":[{"line_number":144,"context_line":"The controller will presumably have a"},{"line_number":145,"context_line":"separate thread or process running that will be listening for these heartbeats."},{"line_number":146,"context_line":"Once it receives a heartbeat it should update the status of the Amphora in the"},{"line_number":147,"context_line":"octavia.amphora table to ACTIVE.  This will increment the RSAC."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Delete Amphora Sequence"},{"line_number":150,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_46fa1376","line":147,"in_reply_to":"5a890539_b73928a6","updated":"2014-11-13 22:16:23.000000000","message":"Good catch, will update this on next PS.","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6526597d551d3f6f8040a5edf4e0c17deb654e94","unresolved":false,"context_lines":[{"line_number":158,"context_line":"2. Wait Until The Amphora Is Deleted"},{"line_number":159,"context_line":"####################################"},{"line_number":160,"context_line":"Controller waits until the Amphora is deleted before it continues. This will"},{"line_number":161,"context_line":"most likely be done by polling the Compute Service for the amphora\u0027s existence."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"3. Clean Up Networking Resources"},{"line_number":164,"context_line":"################################"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_b76048a6","line":161,"updated":"2014-11-13 21:12:43.000000000","message":"Does this need to be blocking? We can delete and let it go, and probably have a reaper process that cleans up stale PENDING_DELETE amphora later. I don\u0027t know why we\u0027d need to stall any process based on the deletion of the amphora, since we don\u0027t really care how quickly that happens.","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"8478098a8d3050298de2a62ba09730a6e67eb417","unresolved":false,"context_lines":[{"line_number":158,"context_line":"2. Wait Until The Amphora Is Deleted"},{"line_number":159,"context_line":"####################################"},{"line_number":160,"context_line":"Controller waits until the Amphora is deleted before it continues. This will"},{"line_number":161,"context_line":"most likely be done by polling the Compute Service for the amphora\u0027s existence."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"3. Clean Up Networking Resources"},{"line_number":164,"context_line":"################################"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_92443ab8","line":161,"in_reply_to":"5a890539_b76048a6","updated":"2014-11-13 22:16:23.000000000","message":"Yeah I was thinking there were a few ways to handle this.  Making sure it is actually deleted is a MUST.  How that is done, not sure what is the best way.  I can detail the possible ones I can come up with.","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6526597d551d3f6f8040a5edf4e0c17deb654e94","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"4. Clean Up Certificate"},{"line_number":168,"context_line":"#######################"},{"line_number":169,"context_line":"Details are beyond the scope of this document."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Spare Amphorae Lifecycle"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_d73314a9","line":169,"updated":"2014-11-13 21:12:43.000000000","message":"I assume this is referring to the Amphora\u0027s certificate that was generated in step 5-8 of the Create Amphora sequence. In that case, the certificate goes away along with the amphora, since we do not keep a copy of the certificate anywhere outside of the amphora (we simply validate that it was signed by our CA). There is no need for this step.","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"8478098a8d3050298de2a62ba09730a6e67eb417","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"4. Clean Up Certificate"},{"line_number":168,"context_line":"#######################"},{"line_number":169,"context_line":"Details are beyond the scope of this document."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Spare Amphorae Lifecycle"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_12020a6f","line":169,"in_reply_to":"5a890539_d73314a9","updated":"2014-11-13 22:16:23.000000000","message":"I will add another section that details what happens when a Load Balancer is deleted.","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6526597d551d3f6f8040a5edf4e0c17deb654e94","unresolved":false,"context_lines":[{"line_number":174,"context_line":"There are two ways we can have this run:"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"* A job is started that runs every so often.  This time being configurable."},{"line_number":177,"context_line":"  This job starts at step 1 below."},{"line_number":178,"context_line":"* Whenever an Amphora is needed to be pulled out of the Spare Amphora Pool,"},{"line_number":179,"context_line":"  another thread/process is started at step 1 below and terminates once the"},{"line_number":180,"context_line":"  SAPS has been met."}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_17af5c95","line":177,"updated":"2014-11-13 21:12:43.000000000","message":"As much as the second option appeals to me, this seems like the safest/simplest option. We are probably going to use a fairly short time for this process (on the order of \"seconds\") so I don\u0027t think it will make a huge difference. It also depends a lot on pool size how much this matters (if your pool is 100 Amphorae, once per minute would probably be acceptable). Making it configurable should allow it to be tuned accordingly.","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6526597d551d3f6f8040a5edf4e0c17deb654e94","unresolved":false,"context_lines":[{"line_number":243,"context_line":"each Amphora that needed to be built for the Load Balancer.  Once ALL SLBs"},{"line_number":244,"context_line":"on ALL Amphorae have completed building, then the Load Balancer and each of"},{"line_number":245,"context_line":"its Listeners should have their provisioning status updated to ACTIVE, and"},{"line_number":246,"context_line":"their operating status updated to ONLINE."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Monitoring Amphorae"},{"line_number":249,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_377e181a","line":246,"updated":"2014-11-13 21:12:43.000000000","message":"What status are they in while this is happening? PENDING_UPDATE? Is that set as soon as the API request is received (outside of the scope of this process)?","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"8478098a8d3050298de2a62ba09730a6e67eb417","unresolved":false,"context_lines":[{"line_number":243,"context_line":"each Amphora that needed to be built for the Load Balancer.  Once ALL SLBs"},{"line_number":244,"context_line":"on ALL Amphorae have completed building, then the Load Balancer and each of"},{"line_number":245,"context_line":"its Listeners should have their provisioning status updated to ACTIVE, and"},{"line_number":246,"context_line":"their operating status updated to ONLINE."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Monitoring Amphorae"},{"line_number":249,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_32e9c6e6","line":246,"in_reply_to":"5a890539_377e181a","updated":"2014-11-13 22:16:23.000000000","message":"The Octavia API should have set these to PENDING_CREATE and OFFLINE","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6526597d551d3f6f8040a5edf4e0c17deb654e94","unresolved":false,"context_lines":[{"line_number":267,"context_line":"the current time and Stale Amphora Heartbeat Time.  If the difference between"},{"line_number":268,"context_line":"the timestamp and current time is less than the Stale Amphora Heartbeat"},{"line_number":269,"context_line":"Time, then do nothing for this Amphora.  If it is not then continue with the"},{"line_number":270,"context_line":"next steps."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"3. Check If Amphora is an Active Amphora"},{"line_number":273,"context_line":"----------------------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_1702fc6e","line":270,"updated":"2014-11-13 21:12:43.000000000","message":"I know this isn\u0027t really the place for implementation discussion, but would this probably just be a single SQL query combining both #1 and #2? Just trying to visualize what this is doing...","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"8478098a8d3050298de2a62ba09730a6e67eb417","unresolved":false,"context_lines":[{"line_number":267,"context_line":"the current time and Stale Amphora Heartbeat Time.  If the difference between"},{"line_number":268,"context_line":"the timestamp and current time is less than the Stale Amphora Heartbeat"},{"line_number":269,"context_line":"Time, then do nothing for this Amphora.  If it is not then continue with the"},{"line_number":270,"context_line":"next steps."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"3. Check If Amphora is an Active Amphora"},{"line_number":273,"context_line":"----------------------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_72d98e21","line":270,"in_reply_to":"5a890539_1702fc6e","updated":"2014-11-13 22:16:23.000000000","message":"Totally could be.  IMPLEMENTATION DETAIL!!!","commit_id":"37a3031d22da7c6fedc80de1e40ea8c7ce329c65"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Amphora Lifecycle Management"},{"line_number":3,"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"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Terms"},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":"Compute Service"},{"line_number":8,"context_line":"    The service responsible for hosting and CRUD operations on Amphorae. The"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_6bfb6b47","line":5,"updated":"2014-12-03 04:34:26.000000000","message":"Do you think these terms ought perhaps be put into the global glossary?  (Or are these terms context-specific to Amphora lifecycle management?)","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"f23cd144cd207cb694ca5b734ba0609ed0dae058","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Amphora Lifecycle Management"},{"line_number":3,"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"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Terms"},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":"Compute Service"},{"line_number":8,"context_line":"    The service responsible for hosting and CRUD operations on Amphorae. The"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_de32110f","line":5,"in_reply_to":"5a890539_6bfb6b47","updated":"2014-12-04 06:22:47.000000000","message":"I was thinking about that, but I think many only make sense within the context of this document.  Then again, the names I\u0027ve given them could very easily become part of the vernacular of Octavia.  So, really it doesn\u0027t matter to me, however I\u0027d still like them to remain in this document so they\u0027re still defined on the same page.  At least for now.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    The number of spare amphorae that are already built and are awaiting"},{"line_number":32,"context_line":"    commands."},{"line_number":33,"context_line":"HA Amphora Size (HAAS)"},{"line_number":34,"context_line":"    The number of amphora to be used to achieve HA for a single load balancer."},{"line_number":35,"context_line":"    This will most likely be 2 but it should be configurable."},{"line_number":36,"context_line":"Software Load Balancer (SLB)"},{"line_number":37,"context_line":"    The actual software being used to load balance network packets.  HAProxy"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_236403b8","line":34,"updated":"2014-12-03 04:34:26.000000000","message":"Nit: amphorae","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"8d595e89853023cf1b4320b1e4f5fde8c0993028","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* This document only details the operations on a single controller.  Handling"},{"line_number":46,"context_line":"  multiple controllers is something that will be designed in Octavia 1.0."},{"line_number":47,"context_line":"* An LB Mgmt Network has already been created and will be used as the network"},{"line_number":48,"context_line":"  in which the controller and each amphora will communicate with each other."},{"line_number":49,"context_line":"* An Octavia service account has been created and will be used to communicate"},{"line_number":50,"context_line":"  with the Compute Service and Network Service.  Octavia can use the same"},{"line_number":51,"context_line":"  service account set up for use with other services for now.  However, this"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_faa1d0f8","line":48,"updated":"2014-11-21 23:39:29.000000000","message":"Will all amphora share the same management network, and thus possibly allow amp\u003c-\u003eamp communication between unrelated amphorae? Or, will each amp set (all amps related to the same logical LB, i.e. HA pairs) have a unique management network defined?\n\nYou said in a comment to this question previously that you didn\u0027t think it would matter in 0.5 because there is only one controller, but I don\u0027t think that\u0027s true.\n\nEven with just one Controller node, there are two options: one management network for all Amphorae, or one private management network for each HA Set of Amphorae. The number of controllers doesn\u0027t make a difference, therefore I still think this is a 0.5 issue (though it may end up coming down to just \"what is feasible given architecture restrictions\").","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"f23cd144cd207cb694ca5b734ba0609ed0dae058","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* This document only details the operations on a single controller.  Handling"},{"line_number":46,"context_line":"  multiple controllers is something that will be designed in Octavia 1.0."},{"line_number":47,"context_line":"* An LB Mgmt Network has already been created and will be used as the network"},{"line_number":48,"context_line":"  in which the controller and each amphora will communicate with each other."},{"line_number":49,"context_line":"* An Octavia service account has been created and will be used to communicate"},{"line_number":50,"context_line":"  with the Compute Service and Network Service.  Octavia can use the same"},{"line_number":51,"context_line":"  service account set up for use with other services for now.  However, this"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_025505f9","line":48,"in_reply_to":"5a890539_83ce9781","updated":"2014-12-04 06:22:47.000000000","message":"So per the conversation in IRC, the use of the lb network will be different between topologies.  RAX will not be using this network for client data to travel over.  I\u0027m sure BBG will so we need to make sure we have come up with a solution that abstracts that away, which I think the network driver interface is a great first step. \n\nWith the current network driver interface, the controller will just call the create_vip method, and pass in the load balancer data model.  For RAX\u0027s implementation of this driver, we will not need to worry about the lb network.  For BBG\u0027s implementation (which may be the default in the project), it will need to use it.  We just need to make sure the controller code (outside the network driver) remains agnostic about whether the lb network is being used as a the network between vip and amphorae or not.  I think it will be safe to assume that the controller talks to the amphorae over this lb network though.\n\nSo I\u0027m fine with calling it lb network, it makes sense to call it a management network within RAX, but it doesn\u0027t outside.\n\nDoes this make sense? I hope I have.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* This document only details the operations on a single controller.  Handling"},{"line_number":46,"context_line":"  multiple controllers is something that will be designed in Octavia 1.0."},{"line_number":47,"context_line":"* An LB Mgmt Network has already been created and will be used as the network"},{"line_number":48,"context_line":"  in which the controller and each amphora will communicate with each other."},{"line_number":49,"context_line":"* An Octavia service account has been created and will be used to communicate"},{"line_number":50,"context_line":"  with the Compute Service and Network Service.  Octavia can use the same"},{"line_number":51,"context_line":"  service account set up for use with other services for now.  However, this"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_83ce9781","line":48,"in_reply_to":"5a890539_f4ca0e45","updated":"2014-12-03 04:34:26.000000000","message":"I don\u0027t like blocking on stuff like that-- I\u0027m almost always of the opinion that all designs, plans, specs, and code are subject to revision upon later decisions or knowledge gleaned.\n\nI don\u0027t think a separate management network per amphora pair is feasible or necessary.\n\nAlso, as I pointed out on another review \"Management network\" is probably not the right term. Data (ie. requests from end-clients to a load balanced service) will also flow over this channel. The Load Balancer Network should not be inherently trusted, hence the reason the API on the amphorae should be secured using some form of authentication and encryption (already described in work you\u0027re doing, Adam).\n\nThere is discussion going on right now about having multiple Load Balancer networks-- we\u0027ll have to see where we end up on this, but at this time I don\u0027t see us needing to delay things for v0.5 on this design, since v0.5 isn\u0027t meant to be scalable at the control layer (and presumably not at the LB network layer, either).","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"80c169c92b734c4595f8091744b988ff2bcc2ede","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* This document only details the operations on a single controller.  Handling"},{"line_number":46,"context_line":"  multiple controllers is something that will be designed in Octavia 1.0."},{"line_number":47,"context_line":"* An LB Mgmt Network has already been created and will be used as the network"},{"line_number":48,"context_line":"  in which the controller and each amphora will communicate with each other."},{"line_number":49,"context_line":"* An Octavia service account has been created and will be used to communicate"},{"line_number":50,"context_line":"  with the Compute Service and Network Service.  Octavia can use the same"},{"line_number":51,"context_line":"  service account set up for use with other services for now.  However, this"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_f4ca0e45","line":48,"in_reply_to":"5a890539_faa1d0f8","updated":"2014-11-30 04:56:53.000000000","message":"Well it does depend on if the architecture changes from what has been described in previous document.  If it stays the same then nothing changes.  If it does change then this document can be updated to reflect the change.  We likely won\u0027t come to a decision until the hackathon so either this blocks it from merge or it gets merged with this and then when the new changes are decided on this gets updated.  I\u0027m actually fine with either.  Any other thoughts?","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  However, these can still be considered responsibilities of the controller."},{"line_number":56,"context_line":"* Any communication between the controller and an amphora will happen by the"},{"line_number":57,"context_line":"  controller calling the amphora load balancer driver.  The exception to this"},{"line_number":58,"context_line":"  is when an Amphora makes a certificate signing request to the controller."},{"line_number":59,"context_line":"* The Compute Service is an asynchronous API in which each Amphora\u0027s status"},{"line_number":60,"context_line":"  needs to be polled."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_43a82f8c","line":58,"updated":"2014-12-03 04:34:26.000000000","message":"The amphora also needs to be able to communicate edge notifications (eg. member went down) to the controller, and this will likely be passed up through the driver or some extension thereof. We may also decide that regularly-gathered data (eg. load balancer stats) will be sent initiated from the amphora directly so the controller doesn\u0027t have to poll to get this data all the time.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"f23cd144cd207cb694ca5b734ba0609ed0dae058","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  However, these can still be considered responsibilities of the controller."},{"line_number":56,"context_line":"* Any communication between the controller and an amphora will happen by the"},{"line_number":57,"context_line":"  controller calling the amphora load balancer driver.  The exception to this"},{"line_number":58,"context_line":"  is when an Amphora makes a certificate signing request to the controller."},{"line_number":59,"context_line":"* The Compute Service is an asynchronous API in which each Amphora\u0027s status"},{"line_number":60,"context_line":"  needs to be polled."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_623de9ba","line":58,"in_reply_to":"5a890539_43a82f8c","updated":"2014-12-04 06:22:47.000000000","message":"Yeah we will need that and I can mention that here, but I didn\u0027t think that would fall under the Amphora lifecycle management.  Though I could see a broad interpretation of that allowing it to fall under it.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3ab5ea42237245a2d4bad6140e5042ab97aeffe1","unresolved":false,"context_lines":[{"line_number":100,"context_line":"Once the Amphora\u0027s status in the Compute Service reaches ACTIVE, the IP of the"},{"line_number":101,"context_line":"Amphora in the octavia.amphora table should be updated to the IP it has on the"},{"line_number":102,"context_line":"LB Mgmt Network. The status in the octavia.amphora table for that Amphora"},{"line_number":103,"context_line":"should NOT be updated to ACTIVE."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"4. Amphora Generates Private Key and CSR"},{"line_number":106,"context_line":"########################################"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_38de2940","line":103,"updated":"2014-11-21 00:30:06.000000000","message":"Should we have a state for the Amphora while we are waiting for it to check in with the CSR?  What state would it be listed as in the DB while waiting for the CSR?  I think we want to track Amphora that are in \"limbo\" carefully and kill those that don\u0027t call home in a reasonable period of time.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"88840db55f9f48cb4b5d551e7f6e51d1d1665fdb","unresolved":false,"context_lines":[{"line_number":100,"context_line":"Once the Amphora\u0027s status in the Compute Service reaches ACTIVE, the IP of the"},{"line_number":101,"context_line":"Amphora in the octavia.amphora table should be updated to the IP it has on the"},{"line_number":102,"context_line":"LB Mgmt Network. The status in the octavia.amphora table for that Amphora"},{"line_number":103,"context_line":"should NOT be updated to ACTIVE."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"4. Amphora Generates Private Key and CSR"},{"line_number":106,"context_line":"########################################"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_89488c5d","line":103,"in_reply_to":"5a890539_38de2940","updated":"2014-11-21 21:23:27.000000000","message":"Not a bad idea.  Should be a relatively infrequent update to the database so scalability shouldn\u0027t be an issue.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":100,"context_line":"Once the Amphora\u0027s status in the Compute Service reaches ACTIVE, the IP of the"},{"line_number":101,"context_line":"Amphora in the octavia.amphora table should be updated to the IP it has on the"},{"line_number":102,"context_line":"LB Mgmt Network. The status in the octavia.amphora table for that Amphora"},{"line_number":103,"context_line":"should NOT be updated to ACTIVE."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"4. Amphora Generates Private Key and CSR"},{"line_number":106,"context_line":"########################################"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_03054779","line":103,"in_reply_to":"5a890539_89488c5d","updated":"2014-12-03 04:34:26.000000000","message":"I agree that another state here is not a bad idea.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":106,"context_line":"########################################"},{"line_number":107,"context_line":"Details beyond the scope of this document."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"5. Amphora Requests Certificate Signing from Controller"},{"line_number":110,"context_line":"#######################################################"},{"line_number":111,"context_line":"At this moment it is assumed that the controller will be listening for requests"},{"line_number":112,"context_line":"through an API to process this request.  This is better detailed in the TLS"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_83d137fd","line":109,"updated":"2014-12-03 04:34:26.000000000","message":"How do we handle the case where the amphora requests this prior to the controller knowing (from its polling of the compute service) that the amphora is active, nor what its IP is?","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"f23cd144cd207cb694ca5b734ba0609ed0dae058","unresolved":false,"context_lines":[{"line_number":106,"context_line":"########################################"},{"line_number":107,"context_line":"Details beyond the scope of this document."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"5. Amphora Requests Certificate Signing from Controller"},{"line_number":110,"context_line":"#######################################################"},{"line_number":111,"context_line":"At this moment it is assumed that the controller will be listening for requests"},{"line_number":112,"context_line":"through an API to process this request.  This is better detailed in the TLS"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_82bbb50d","line":109,"in_reply_to":"5a890539_83d137fd","updated":"2014-12-04 06:22:47.000000000","message":"Good catch on this, because this is definitely possible with polling.  Since this will have to fall under a separate process, than the polling of the compute service, it can poll the DB until the Amphora is in the LIMBO state (lack of a better name now), with a timeout of course.  Once it is in this LIMBO state it can then continue with this step.  \n\nIf this is sufficient I will update this to reflect that.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3ab5ea42237245a2d4bad6140e5042ab97aeffe1","unresolved":false,"context_lines":[{"line_number":162,"context_line":".. seqdiag:: delete-amphora-sequence.diag"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"1. Delete Amphora"},{"line_number":165,"context_line":"#################"},{"line_number":166,"context_line":"Controller requests that the Compute Service delete an amphora.  After this"},{"line_number":167,"context_line":"request completes, the controller needs to ensure that the Amphora and it\u0027s"},{"line_number":168,"context_line":"associated resources in other services have been cleaned up.  Here are a few"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_a31bca1a","line":165,"updated":"2014-11-21 00:30:06.000000000","message":"Should we include a check to make sure there are no active LBs on the Amphora?","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"8d595e89853023cf1b4320b1e4f5fde8c0993028","unresolved":false,"context_lines":[{"line_number":162,"context_line":".. seqdiag:: delete-amphora-sequence.diag"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"1. Delete Amphora"},{"line_number":165,"context_line":"#################"},{"line_number":166,"context_line":"Controller requests that the Compute Service delete an amphora.  After this"},{"line_number":167,"context_line":"request completes, the controller needs to ensure that the Amphora and it\u0027s"},{"line_number":168,"context_line":"associated resources in other services have been cleaned up.  Here are a few"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_ba2e688a","line":165,"in_reply_to":"5a890539_097adc76","updated":"2014-11-21 23:39:29.000000000","message":"Among other things, yes. Scaling down, throwing away malfunctioning Amphorae, etc -- this will have to allow for deleting Amphorae regardless of state.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"f23cd144cd207cb694ca5b734ba0609ed0dae058","unresolved":false,"context_lines":[{"line_number":162,"context_line":".. seqdiag:: delete-amphora-sequence.diag"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"1. Delete Amphora"},{"line_number":165,"context_line":"#################"},{"line_number":166,"context_line":"Controller requests that the Compute Service delete an amphora.  After this"},{"line_number":167,"context_line":"request completes, the controller needs to ensure that the Amphora and it\u0027s"},{"line_number":168,"context_line":"associated resources in other services have been cleaned up.  Here are a few"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_a24d113d","line":165,"in_reply_to":"5a890539_83f8577d","updated":"2014-12-04 06:22:47.000000000","message":"Well in the end this sequence is meant more as a method call, I think whatever process calls this can do that check if it needs to.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"88840db55f9f48cb4b5d551e7f6e51d1d1665fdb","unresolved":false,"context_lines":[{"line_number":162,"context_line":".. seqdiag:: delete-amphora-sequence.diag"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"1. Delete Amphora"},{"line_number":165,"context_line":"#################"},{"line_number":166,"context_line":"Controller requests that the Compute Service delete an amphora.  After this"},{"line_number":167,"context_line":"request completes, the controller needs to ensure that the Amphora and it\u0027s"},{"line_number":168,"context_line":"associated resources in other services have been cleaned up.  Here are a few"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_097adc76","line":165,"in_reply_to":"5a890539_a31bca1a","updated":"2014-11-21 21:23:27.000000000","message":"There might be cases where an Amphora needs to be deleted that has already been assigned to a LB and that LB is ACTIVE.  For example, there was a provisioning issue with an Amphora and the controller decides to just kill it and recreate it.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":162,"context_line":".. seqdiag:: delete-amphora-sequence.diag"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"1. Delete Amphora"},{"line_number":165,"context_line":"#################"},{"line_number":166,"context_line":"Controller requests that the Compute Service delete an amphora.  After this"},{"line_number":167,"context_line":"request completes, the controller needs to ensure that the Amphora and it\u0027s"},{"line_number":168,"context_line":"associated resources in other services have been cleaned up.  Here are a few"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_83f8577d","line":165,"in_reply_to":"5a890539_ba2e688a","updated":"2014-12-03 04:34:26.000000000","message":"It is probably a good idea to try not to delete the last amphora for an active listener, though. ;)","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":164,"context_line":"1. Delete Amphora"},{"line_number":165,"context_line":"#################"},{"line_number":166,"context_line":"Controller requests that the Compute Service delete an amphora.  After this"},{"line_number":167,"context_line":"request completes, the controller needs to ensure that the Amphora and it\u0027s"},{"line_number":168,"context_line":"associated resources in other services have been cleaned up.  Here are a few"},{"line_number":169,"context_line":"ways in which to do this:"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_a3f55384","line":167,"updated":"2014-12-03 04:34:26.000000000","message":"Nit: its","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3ab5ea42237245a2d4bad6140e5042ab97aeffe1","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"3. Clean Up Networking Resources"},{"line_number":183,"context_line":"################################"},{"line_number":184,"context_line":"Details are beyond the scope of this document."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"4. Clean Up Secure Data in Secure Datastore Service"},{"line_number":187,"context_line":"###################################################"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_1816cda7","line":184,"updated":"2014-11-21 00:30:06.000000000","message":"Is there value in deleting the network resources first and deleting the compute second?  Would deleting the compute delete the network resources automatically as there is no longer anything to bind to?  By network resources I assume you are talking about the customer ports.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"88840db55f9f48cb4b5d551e7f6e51d1d1665fdb","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"3. Clean Up Networking Resources"},{"line_number":183,"context_line":"################################"},{"line_number":184,"context_line":"Details are beyond the scope of this document."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"4. Clean Up Secure Data in Secure Datastore Service"},{"line_number":187,"context_line":"###################################################"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_e9d6704e","line":184,"in_reply_to":"5a890539_1816cda7","updated":"2014-11-21 21:23:27.000000000","message":"Yeah, thats why I have this after the compute instance is deleted.  There might be ports Octavia creates and attaches them to the compute instance that are not deleted on compute instance delete.  It\u0027s possible we spin up networks/subnets as well, though the current plan does not mention this, we use an already created lb mgmt network.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"80c169c92b734c4595f8091744b988ff2bcc2ede","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"3. Clean Up Networking Resources"},{"line_number":183,"context_line":"################################"},{"line_number":184,"context_line":"Details are beyond the scope of this document."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"4. Clean Up Secure Data in Secure Datastore Service"},{"line_number":187,"context_line":"###################################################"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_34d576e5","line":184,"in_reply_to":"5a890539_1a55bcf9","updated":"2014-11-30 04:56:53.000000000","message":"I dont believe it does.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"8d595e89853023cf1b4320b1e4f5fde8c0993028","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"3. Clean Up Networking Resources"},{"line_number":183,"context_line":"################################"},{"line_number":184,"context_line":"Details are beyond the scope of this document."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"4. Clean Up Secure Data in Secure Datastore Service"},{"line_number":187,"context_line":"###################################################"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_1a55bcf9","line":184,"in_reply_to":"5a890539_e9d6704e","updated":"2014-11-21 23:39:29.000000000","message":"Does Neutron let you delete networks that still have active ports? I feel like it might not.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":188,"context_line":"If certificates and private keys were created in a secure datastore service"},{"line_number":189,"context_line":"under the Octavia service account, then these should be cleaned up.  If the"},{"line_number":190,"context_line":"secure data was set up to only be accessed by the service account, then this"},{"line_number":191,"context_line":"registration should be cleaned up as well."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Spare Amphorae Lifecycle"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_a33c7330","line":191,"updated":"2014-12-03 04:34:26.000000000","message":"Actually, this step only applies to a deleted listener, not a deleted load balancer or deleted amphora.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"f23cd144cd207cb694ca5b734ba0609ed0dae058","unresolved":false,"context_lines":[{"line_number":188,"context_line":"If certificates and private keys were created in a secure datastore service"},{"line_number":189,"context_line":"under the Octavia service account, then these should be cleaned up.  If the"},{"line_number":190,"context_line":"secure data was set up to only be accessed by the service account, then this"},{"line_number":191,"context_line":"registration should be cleaned up as well."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Spare Amphorae Lifecycle"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_c2069dcd","line":191,"in_reply_to":"5a890539_a33c7330","updated":"2014-12-04 06:22:47.000000000","message":"Good point, I made the mistake when I wrote this of forgetting about many listeners on an Amphora.  Please don\u0027t hurt me.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":199,"context_line":"  This job starts at step 1 below."},{"line_number":200,"context_line":"* Whenever an Amphora is needed to be pulled out of the Spare Amphora Pool,"},{"line_number":201,"context_line":"  another thread/process is started at step 1 below and terminates once the"},{"line_number":202,"context_line":"  SAPS has been met."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Sequence Diagram"},{"line_number":205,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_e342fba9","line":202,"updated":"2014-12-03 04:34:26.000000000","message":"These are not mutually exclusive ways of triggering spawning new amphorae.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"f23cd144cd207cb694ca5b734ba0609ed0dae058","unresolved":false,"context_lines":[{"line_number":199,"context_line":"  This job starts at step 1 below."},{"line_number":200,"context_line":"* Whenever an Amphora is needed to be pulled out of the Spare Amphora Pool,"},{"line_number":201,"context_line":"  another thread/process is started at step 1 below and terminates once the"},{"line_number":202,"context_line":"  SAPS has been met."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Sequence Diagram"},{"line_number":205,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_221041ff","line":202,"in_reply_to":"5a890539_e342fba9","updated":"2014-12-04 06:22:47.000000000","message":"Of course not.  I\u0027ll add another option of both.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":209,"context_line":"1. Request Spare Amphorae Count"},{"line_number":210,"context_line":"-------------------------------"},{"line_number":211,"context_line":"The controller makes a request to the database to get the number of spare"},{"line_number":212,"context_line":"amphorae on a controller and compares it to the SAPS.  If the database shows it"},{"line_number":213,"context_line":"is equal to or greater than the SAPS, then nothing else should be done."},{"line_number":214,"context_line":"Otherwise, the controller should continue with the next steps, most likely"},{"line_number":215,"context_line":"spawning threads for each amphora needed to be created."}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_c34a5fac","line":212,"updated":"2014-12-03 04:34:26.000000000","message":"Is the number of spare amphorae the number of \"active\" spare amphorae?  If so, then we should run the following number of amphora creation sequences equal to X, below:\n\nX \u003d SAPS - RSAC + (Number of amphora creation tasks currently running)\n\nSo long as X is positive.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"f23cd144cd207cb694ca5b734ba0609ed0dae058","unresolved":false,"context_lines":[{"line_number":209,"context_line":"1. Request Spare Amphorae Count"},{"line_number":210,"context_line":"-------------------------------"},{"line_number":211,"context_line":"The controller makes a request to the database to get the number of spare"},{"line_number":212,"context_line":"amphorae on a controller and compares it to the SAPS.  If the database shows it"},{"line_number":213,"context_line":"is equal to or greater than the SAPS, then nothing else should be done."},{"line_number":214,"context_line":"Otherwise, the controller should continue with the next steps, most likely"},{"line_number":215,"context_line":"spawning threads for each amphora needed to be created."}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_0224255e","line":212,"in_reply_to":"5a890539_c34a5fac","updated":"2014-12-04 06:22:47.000000000","message":"Yeah I should have used RSAC.  It became a pain to use these acronyms after I created a bunch, but it was also a pain to write them out every time in here and in the seqdiags.\n\nGood catch accounting for the amphorae being created.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":239,"context_line":"2. Amphora Networking Setup"},{"line_number":240,"context_line":"---------------------------"},{"line_number":241,"context_line":"The controller will create the needed networking resources through the"},{"line_number":242,"context_line":"Networking Service, and updated the amphora\u0027s networking through the Compute"},{"line_number":243,"context_line":"Service if necessary."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"3. Update Database Tables"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_43090f83","line":242,"updated":"2014-12-03 04:34:26.000000000","message":"Nit: update","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3ab5ea42237245a2d4bad6140e5042ab97aeffe1","unresolved":false,"context_lines":[{"line_number":276,"context_line":"----------------"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":".. seqdiag:: monitor-amphorae-sequence.diag"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"1. Get All Built Amphorae"},{"line_number":281,"context_line":"-------------------------"},{"line_number":282,"context_line":"The controller gets all built amphorae.  This includes all built Spare Amphorae"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_a3202ab1","line":279,"updated":"2014-11-21 00:30:06.000000000","message":"We need to take into account multiple listeners per Amphora in these diagrams don\u0027t we?  Since each ip/port combo will have it\u0027s own HAProxy process we will have to cycle through all of them for Amphora failover.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"88840db55f9f48cb4b5d551e7f6e51d1d1665fdb","unresolved":false,"context_lines":[{"line_number":276,"context_line":"----------------"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":".. seqdiag:: monitor-amphorae-sequence.diag"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"1. Get All Built Amphorae"},{"line_number":281,"context_line":"-------------------------"},{"line_number":282,"context_line":"The controller gets all built amphorae.  This includes all built Spare Amphorae"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_c95ff4e3","line":279,"in_reply_to":"5a890539_a3202ab1","updated":"2014-11-21 21:23:27.000000000","message":"Good point, that is something I should mention and diagram.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3ab5ea42237245a2d4bad6140e5042ab97aeffe1","unresolved":false,"context_lines":[{"line_number":293,"context_line":""},{"line_number":294,"context_line":"3. Check If Amphora is an Active Amphora"},{"line_number":295,"context_line":"----------------------------------------"},{"line_number":296,"context_line":"If the amphora is assigned to a load balancer in the database then it is an"},{"line_number":297,"context_line":"Active Amphora.  If so, then the controller should invoke the Activate"},{"line_number":298,"context_line":"Amphora Sequence defined above.  If it is not an Active Amphora, then it must"},{"line_number":299,"context_line":"be a Spare Amphora.  In which case the Create Amphora Sequence should be"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_03965ef0","line":296,"updated":"2014-11-21 00:30:06.000000000","message":"Aren\u0027t load balancers assigned to Amphora?","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"88840db55f9f48cb4b5d551e7f6e51d1d1665fdb","unresolved":false,"context_lines":[{"line_number":293,"context_line":""},{"line_number":294,"context_line":"3. Check If Amphora is an Active Amphora"},{"line_number":295,"context_line":"----------------------------------------"},{"line_number":296,"context_line":"If the amphora is assigned to a load balancer in the database then it is an"},{"line_number":297,"context_line":"Active Amphora.  If so, then the controller should invoke the Activate"},{"line_number":298,"context_line":"Amphora Sequence defined above.  If it is not an Active Amphora, then it must"},{"line_number":299,"context_line":"be a Spare Amphora.  In which case the Create Amphora Sequence should be"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_2944f819","line":296,"in_reply_to":"5a890539_03965ef0","updated":"2014-11-21 21:23:27.000000000","message":"I\u0027m using the API/Database Load Balancer definition.  An API Load Balancer will be made up of 1 to M Amphorae.  To me that sounds like the Amphorae are assigned to a load balancer, but my verbage might be wrong.","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"8d595e89853023cf1b4320b1e4f5fde8c0993028","unresolved":false,"context_lines":[{"line_number":293,"context_line":""},{"line_number":294,"context_line":"3. Check If Amphora is an Active Amphora"},{"line_number":295,"context_line":"----------------------------------------"},{"line_number":296,"context_line":"If the amphora is assigned to a load balancer in the database then it is an"},{"line_number":297,"context_line":"Active Amphora.  If so, then the controller should invoke the Activate"},{"line_number":298,"context_line":"Amphora Sequence defined above.  If it is not an Active Amphora, then it must"},{"line_number":299,"context_line":"be a Spare Amphora.  In which case the Create Amphora Sequence should be"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_3a7198a8","line":296,"in_reply_to":"5a890539_2944f819","updated":"2014-11-21 23:39:29.000000000","message":"I agree with Brandon -- in our context, Amphorae are assigned to Load Balancers. What I don\u0027t agree with is the lack of capitalization for Amphora. :P","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":293,"context_line":""},{"line_number":294,"context_line":"3. Check If Amphora is an Active Amphora"},{"line_number":295,"context_line":"----------------------------------------"},{"line_number":296,"context_line":"If the amphora is assigned to a load balancer in the database then it is an"},{"line_number":297,"context_line":"Active Amphora.  If so, then the controller should invoke the Activate"},{"line_number":298,"context_line":"Amphora Sequence defined above.  If it is not an Active Amphora, then it must"},{"line_number":299,"context_line":"be a Spare Amphora.  In which case the Create Amphora Sequence should be"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_63852bce","line":296,"in_reply_to":"5a890539_3a7198a8","updated":"2014-12-03 04:34:26.000000000","message":"I agree with Brandon, and disagree that amphora needs to be capitalized. ;)","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":296,"context_line":"If the amphora is assigned to a load balancer in the database then it is an"},{"line_number":297,"context_line":"Active Amphora.  If so, then the controller should invoke the Activate"},{"line_number":298,"context_line":"Amphora Sequence defined above.  If it is not an Active Amphora, then it must"},{"line_number":299,"context_line":"be a Spare Amphora.  In which case the Create Amphora Sequence should be"},{"line_number":300,"context_line":"invoked."},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"4. Delete Stale Amphora"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_e3703b0a","line":299,"updated":"2014-12-03 04:34:26.000000000","message":"You mean, Delete Amphora sequence, right?  A stale spare amphora can be presumed to be dead or malfunctioning, correct?","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"f23cd144cd207cb694ca5b734ba0609ed0dae058","unresolved":false,"context_lines":[{"line_number":296,"context_line":"If the amphora is assigned to a load balancer in the database then it is an"},{"line_number":297,"context_line":"Active Amphora.  If so, then the controller should invoke the Activate"},{"line_number":298,"context_line":"Amphora Sequence defined above.  If it is not an Active Amphora, then it must"},{"line_number":299,"context_line":"be a Spare Amphora.  In which case the Create Amphora Sequence should be"},{"line_number":300,"context_line":"invoked."},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"4. Delete Stale Amphora"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a890539_a297d143","line":299,"in_reply_to":"5a890539_e3703b0a","updated":"2014-12-04 06:22:47.000000000","message":"No this is to spin one up in its place, Step 4 deletes it.  However I can see why we would just delete it right away instead of waiting for a new one to get built.  Either way works for me, any preference for you?","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2796d9545e82a0becbc6e0590d6e0716b81649b7","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    the reference implementation, this is Barbican."},{"line_number":16,"context_line":"Common Amphora Creation Sequence"},{"line_number":17,"context_line":"    The sequence/algorithm that will be used to provision a spare amphora."},{"line_number":18,"context_line":"Compute Service"},{"line_number":19,"context_line":"    The service responsible for hosting and CRUD operations on Amphorae. The"},{"line_number":20,"context_line":"    interface is currently being defined by this blueprint:"},{"line_number":21,"context_line":"    https://blueprints.launchpad.net/octavia/+spec/compute-driver-interface"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a930d6b_da1c996d","line":18,"updated":"2015-01-20 22:42:50.000000000","message":"This is a bit confusing with deploy worker/API manager/compute driver\n\nI think this is API manager from the description.","commit_id":"b5a6571364de2b67d16e46f01504f8b0f4d559b0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2796d9545e82a0becbc6e0590d6e0716b81649b7","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    https://blueprints.launchpad.net/octavia/+spec/compute-driver-interface"},{"line_number":22,"context_line":"HA Amphora Size (HAAS)"},{"line_number":23,"context_line":"    The number of amphorae to be used to achieve HA for a single load balancer."},{"line_number":24,"context_line":"    This will most likely be at least 2 but it should be configurable."},{"line_number":25,"context_line":"Maximum Amphora Deploy Count (MADC)"},{"line_number":26,"context_line":"    The maximum number of simultaneously-running amphora deployments we allow"},{"line_number":27,"context_line":"    across all controller processes. Limiting concurrency here is intended to"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a930d6b_5a20a99b","line":24,"updated":"2015-01-20 22:42:50.000000000","message":"It might be nice to include the \"load balancer\" definition here as it differs from other systems.","commit_id":"b5a6571364de2b67d16e46f01504f8b0f4d559b0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2796d9545e82a0becbc6e0590d6e0716b81649b7","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    across all controller processes. Limiting concurrency here is intended to"},{"line_number":28,"context_line":"    prevent Octavia from overloading the Compute Service with too many"},{"line_number":29,"context_line":"    simultaneous deployments."},{"line_number":30,"context_line":"Network Service"},{"line_number":31,"context_line":"    The service responsible for creation of networking resources consumed by"},{"line_number":32,"context_line":"    the components of Octavia.  The interface is currently being defined by"},{"line_number":33,"context_line":"    this blueprint:"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a930d6b_7a2565aa","line":30,"updated":"2015-01-20 22:42:50.000000000","message":"Is this the network driver?","commit_id":"b5a6571364de2b67d16e46f01504f8b0f4d559b0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2796d9545e82a0becbc6e0590d6e0716b81649b7","unresolved":false,"context_lines":[{"line_number":59,"context_line":"  the processes described are intended to be functional and safe to run in an"},{"line_number":60,"context_line":"  environment with multiple controllers servicing all the amphorae. Multiple"},{"line_number":61,"context_line":"  controllers becomes a supported configuration in Octavia v1.0."},{"line_number":62,"context_line":"* An LB Network has already been created and will be used as the network"},{"line_number":63,"context_line":"  in which the controller and each amphora will communicate with each other."},{"line_number":64,"context_line":"* An Octavia service account has been created and will be used to communicate"},{"line_number":65,"context_line":"  with the Compute Service and Network Service. Octavia can use the same"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a930d6b_da33b9f4","line":62,"updated":"2015-01-20 22:42:50.000000000","message":"In some deployments there will be multiple (routable) LB networks.","commit_id":"b5a6571364de2b67d16e46f01504f8b0f4d559b0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2796d9545e82a0becbc6e0590d6e0716b81649b7","unresolved":false,"context_lines":[{"line_number":71,"context_line":"* Any communication between controller components and an amphora will happen"},{"line_number":72,"context_line":"  by the controller calling the amphora load balancer driver. Any communication"},{"line_number":73,"context_line":"  initiated from the amphora will ultimately first go through the driver."},{"line_number":74,"context_line":"* The Compute Service is an asynchronous API in which each Amphora\u0027s status"},{"line_number":75,"context_line":"  needs to be polled."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a930d6b_3a52fd13","line":74,"updated":"2015-01-20 22:42:50.000000000","message":"network driver too?","commit_id":"b5a6571364de2b67d16e46f01504f8b0f4d559b0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2796d9545e82a0becbc6e0590d6e0716b81649b7","unresolved":false,"context_lines":[{"line_number":142,"context_line":"   the database to see whether heartbeats are arriving from it."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"10. Test the connection to the amphora (currently TBD how this works, though"},{"line_number":145,"context_line":"    initially this will probably be a simple request to the amphora API)."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"11. Set amphora state to \"ACTIVE\" in the database."},{"line_number":148,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a930d6b_fa5eb511","line":145,"updated":"2015-01-20 22:42:50.000000000","message":"Maybe a \"get amphora info\" call?","commit_id":"b5a6571364de2b67d16e46f01504f8b0f4d559b0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2796d9545e82a0becbc6e0590d6e0716b81649b7","unresolved":false,"context_lines":[{"line_number":151,"context_line":"---------------------------"},{"line_number":152,"context_line":"The following events might trigger an amphora deactivation:"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Amphora fails to send heartbeats for a specified period."},{"line_number":155,"context_line":"* One or more listeners fail health checks for a specified period."},{"line_number":156,"context_line":"* Amphora fails a configuration task."},{"line_number":157,"context_line":"* Last listener on the amphora is deleted."}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a930d6b_9aae91e6","line":154,"updated":"2015-01-20 22:42:50.000000000","message":"Wouldn\u0027t the amphora already be in the \"PENDING_DELETE\" state before this sequence runs?","commit_id":"b5a6571364de2b67d16e46f01504f8b0f4d559b0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2796d9545e82a0becbc6e0590d6e0716b81649b7","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"4. If the amphora is being replaced (ie. it is associated with a loadbalancer),"},{"line_number":183,"context_line":"   run through a Configure Amphora task for each listener re-using the"},{"line_number":184,"context_line":"   preserved network interface information."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"5. If the amphora is not being replaced, issue commands via the Networking"},{"line_number":187,"context_line":"   Driver to destroy the unplugged interfaces."}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a930d6b_ba926d9d","line":184,"updated":"2015-01-20 22:42:50.000000000","message":"Wouldn\u0027t this be the responsibility of the fail over process?  I don\u0027t think deactivate amphora should be doing this...","commit_id":"b5a6571364de2b67d16e46f01504f8b0f4d559b0"},{"author":{"_account_id":1923,"name":"Mohammad Banikazemi","email":"mbanikazemi@gmail.com","username":"mb-s"},"change_message_id":"702d246bbb54735a36255f41dc243fd06159b116","unresolved":false,"context_lines":[{"line_number":283,"context_line":""},{"line_number":284,"context_line":"Delete Listener"},{"line_number":285,"context_line":"---------------"},{"line_number":286,"context_line":"The create listener task list can be triggered only by the API manager as the"},{"line_number":287,"context_line":"result of a user or operator command."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"*Task Flow:*"}],"source_content_type":"text/x-rst","patch_set":12,"id":"fa81d914_9ec92d5d","line":286,"updated":"2015-01-27 20:21:00.000000000","message":"The *delete* listener task","commit_id":"b5a6571364de2b67d16e46f01504f8b0f4d559b0"}],"doc/source/design/version0.5/create-amphora-sequence.diag":[{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    Amphora -\u003e Amphora [label \u003d \"Start Services (API, Heartbeat)\"];"},{"line_number":13,"context_line":"    Amphora -\u003e Controller [label \u003d \"Heartbeat\"]"},{"line_number":14,"context_line":"    Controller -\u003e Controller [label \u003d \"Verify Amphora\"];"},{"line_number":15,"context_line":"    \u003d\u003d\u003d IF Verification Fails \u003d\u003d\u003d"},{"line_number":16,"context_line":"    Controller -\u003e Controller [label \u003d \"Ignore\"];"},{"line_number":17,"context_line":"    \u003d\u003d\u003d ELSE \u003d\u003d\u003d"},{"line_number":18,"context_line":"    Controller \u003d\u003e Amphora [label \u003d \"Test Controller to Amphora Connectivity\"];"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"5a890539_23f4035a","line":15,"updated":"2014-12-03 04:34:26.000000000","message":"Nit: If Heartbeat Verification Fails\n\n(It\u0027s not obvious you\u0027re talking about the heartbeat here.)","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2796d9545e82a0becbc6e0590d6e0716b81649b7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Controller \u003d\u003e \"Compute Service\" [label \u003d \"Create Amphora\", return \u003d \"amphora details\"];"},{"line_number":5,"context_line":"    Controller \u003d\u003e Database [label \u003d \"Insert Amphora Details\"];"},{"line_number":6,"context_line":"    Controller \u003d\u003e \"Compute Service\" [label \u003d \"Wait For ACTIVE Status\", return \u003d \"ACTIVE Amphora details\"];"},{"line_number":7,"context_line":"    Amphora -\u003e Amphora [label \u003d \"Generate private key and CSR\"];"},{"line_number":8,"context_line":"    Amphora \u003d\u003e Controller [label \u003d \"Request Certificate Signing\", return \u003d \"Signed Certificate\"]{"},{"line_number":9,"context_line":"       Controller -\u003e Controller [label \u003d \"Verify Amphora\"];"},{"line_number":10,"context_line":"       Controller \u003d\u003e \"Certificate Generator\" [label \u003d \"Process CSR using private CA\", return \u003d \"Signed Certificate\"];"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"1a930d6b_9adcd176","line":7,"updated":"2015-01-20 22:42:50.000000000","message":"This needs to be updated for the config drive method of cert deployment","commit_id":"b5a6571364de2b67d16e46f01504f8b0f4d559b0"}],"doc/source/design/version0.5/delete-amphora-sequence.diag":[{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"af1acafb53d62743c784584cbbe44e8f6fc82220","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    }"},{"line_number":9,"context_line":"    \u003d\u003d\u003d END WHILE \u003d\u003d\u003d"},{"line_number":10,"context_line":"    Controller \u003d\u003e \"Networking Service\" [label \u003d \"Clean Up Networking Resources\"];"},{"line_number":11,"context_line":"    Controller \u003d\u003e \"Certificate Manager\" [label \u003d \"Clean Up Certificates\"];"},{"line_number":12,"context_line":"}"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"5a890539_239b2319","line":11,"updated":"2014-12-03 04:34:26.000000000","message":"Per my note in the text document, we don\u0027t actually clean up any certificates when we kill an amphora","commit_id":"f974573dd0e4e9dc07a8dc5710dcb7303787eed8"}]}
