)]}'
{"specs/version0.5/housekeeping-manager-interface.rst":[{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"00c92903da07b97403b43a1020d4640bbdfd5abb","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The Housekeeping Manager will manage the spare Amphora pool and the"},{"line_number":16,"context_line":"teardown of Amphora that are no longer needed. On a configurable"},{"line_number":17,"context_line":"interval the Housekeeping Manager will check the Octavia database to"},{"line_number":18,"context_line":"identify the required cleanup and maintenance actions required. The"},{"line_number":19,"context_line":"amphora-lifecycle-management specification details the Create, Spare,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_25142443","line":16,"updated":"2014-12-18 22:15:18.000000000","message":"Nit: amphorae","commit_id":"2ee6ab4efc370fbe8a563fd794bb9c03953b7fc6"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"00c92903da07b97403b43a1020d4640bbdfd5abb","unresolved":false,"context_lines":[{"line_number":19,"context_line":"amphora-lifecycle-management specification details the Create, Spare,"},{"line_number":20,"context_line":"and Delete amphora sequences the Housekeeping Manager will follow."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"More general case: Manage a pool of generic resources that exist in a"},{"line_number":23,"context_line":"pool."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_65c54c5b","line":22,"updated":"2014-12-18 22:15:18.000000000","message":"Do we actually need this line? I\u0027m not sure it actually says anything the previous paragraph doesn\u0027t already cover in more detail. What other pools of resources are we going to manage here other than the spares pool?","commit_id":"2ee6ab4efc370fbe8a563fd794bb9c03953b7fc6"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"00c92903da07b97403b43a1020d4640bbdfd5abb","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":".. code:: python"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    class ResourcePool(object):"},{"line_number":33,"context_line":"    \"\"\" Represent a pool of generalized resources.  The pool will have"},{"line_number":34,"context_line":"    a target capacity, warning threshold, "},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_05472878","line":32,"updated":"2014-12-18 22:15:18.000000000","message":"We\u0027ve been calling this a spares pool elsewhere. Any objections to using that name here as well?","commit_id":"2ee6ab4efc370fbe8a563fd794bb9c03953b7fc6"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"00c92903da07b97403b43a1020d4640bbdfd5abb","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    class ResourcePool(object):"},{"line_number":33,"context_line":"    \"\"\" Represent a pool of generalized resources.  The pool will have"},{"line_number":34,"context_line":"    a target capacity, warning threshold, "},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    \"\"\"\""},{"line_number":37,"context_line":"        def getCapacity(self):"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_4593f05a","line":34,"updated":"2014-12-18 22:15:18.000000000","message":"Nit: Trailing space.\n\nAlso, are we planning on generating alerts? (What\u0027s the warning threshold for?)","commit_id":"2ee6ab4efc370fbe8a563fd794bb9c03953b7fc6"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"d59b175fffeae79ebae2fee4a7878e3d841f6587","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    a target capacity, warning threshold, "},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    \"\"\"\""},{"line_number":37,"context_line":"        def getCapacity(self):"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        def getWarningThreshold(self):"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_f29bb515","line":37,"updated":"2014-12-19 06:54:29.000000000","message":"MajorNit: snake_case not camelCase! though this is just a spec. and just saw stephen mentioned this already, but I\u0027m keeping my objection here.","commit_id":"2ee6ab4efc370fbe8a563fd794bb9c03953b7fc6"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"00c92903da07b97403b43a1020d4640bbdfd5abb","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        def getWarningThreshold(self):"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        def createInstance(self):"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        def deleteInstance(self):"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_a5de540f","line":41,"updated":"2014-12-18 22:15:18.000000000","message":"The housekeeping manager manages amphorae. Can we update these method names to reflect that? (ie. create_amphora, delete_amphora).  Also, for method names avoid CamelCase. Use underscores.","commit_id":"2ee6ab4efc370fbe8a563fd794bb9c03953b7fc6"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"00c92903da07b97403b43a1020d4640bbdfd5abb","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        def deleteInstance(self):"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        def getSize(self):"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        def trim(self):"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_25f98480","line":45,"updated":"2014-12-18 22:15:18.000000000","message":"What\u0027s the difference between get_capacity and get_size?","commit_id":"2ee6ab4efc370fbe8a563fd794bb9c03953b7fc6"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"d59b175fffeae79ebae2fee4a7878e3d841f6587","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            #return the logger to use - this is a way to inject a custom logger for testing, etc"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        def deleteAmphora(self, listener, vip):"},{"line_number":55,"context_line":"            #delete the listener from the amphora"},{"line_number":56,"context_line":"            raise NotImplementedError"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        def getCheckInterval(self):"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_b2520d33","line":55,"updated":"2014-12-19 06:54:29.000000000","message":"if this deletes the listener from the amphora, shouldn\u0027t this be delete_listener? I think the comment is wrong bc the method makes sense.","commit_id":"2ee6ab4efc370fbe8a563fd794bb9c03953b7fc6"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"00c92903da07b97403b43a1020d4640bbdfd5abb","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            # manager will run its checks."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        def getSparePoolCount(self):"},{"line_number":64,"context_line":"            # Return the "},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Exception Model"},{"line_number":67,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_657e2cb1","line":64,"updated":"2014-12-18 22:15:18.000000000","message":"Nit: Trailing space","commit_id":"2ee6ab4efc370fbe8a563fd794bb9c03953b7fc6"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"00c92903da07b97403b43a1020d4640bbdfd5abb","unresolved":false,"context_lines":[{"line_number":66,"context_line":"Exception Model"},{"line_number":67,"context_line":"---------------"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"The driver is expected to raise the following well defined exceptions"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"* NotImplementedError - this functionality is not implemented/not supported"},{"line_number":72,"context_line":"* AmphoraDriverError - a super class for all other exceptions and the catch"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_100cc43a","line":69,"updated":"2014-12-18 22:15:18.000000000","message":"Isn\u0027t this already mentioned in the driver specification? (If not, isn\u0027t it more appropriate there?)","commit_id":"2ee6ab4efc370fbe8a563fd794bb9c03953b7fc6"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"824d4d7b04ab73223cee1d4d43ce28cbd2f8c081","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The Housekeeping Manager will manage the spare Amphora pool and the"},{"line_number":16,"context_line":"teardown of Amphora that are no longer needed. On a configurable"},{"line_number":17,"context_line":"interval the Housekeeping Manager will check the Octavia database to"},{"line_number":18,"context_line":"identify the required cleanup and maintenance actions required. The"},{"line_number":19,"context_line":"amphora-lifecycle-management specification details the Create and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_da8959cb","line":16,"updated":"2014-12-19 23:42:59.000000000","message":"Nit: Amphorae","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The Housekeeping Manager will manage the spare Amphora pool and the"},{"line_number":16,"context_line":"teardown of Amphora that are no longer needed. On a configurable"},{"line_number":17,"context_line":"interval the Housekeeping Manager will check the Octavia database to"},{"line_number":18,"context_line":"identify the required cleanup and maintenance actions required. The"},{"line_number":19,"context_line":"amphora-lifecycle-management specification details the Create and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_7564f6b8","line":16,"in_reply_to":"3a961159_da8959cb","updated":"2014-12-22 01:40:06.000000000","message":"Done","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"824d4d7b04ab73223cee1d4d43ce28cbd2f8c081","unresolved":false,"context_lines":[{"line_number":25,"context_line":"The housekeeping manager will run as a daemon process which will"},{"line_number":26,"context_line":"perform the following actions:"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* Read the following from the config manager:"},{"line_number":29,"context_line":"  * housekeeping interval"},{"line_number":30,"context_line":"  * spare pool capacity"},{"line_number":31,"context_line":"  * preservation count: How many deactivated amphorae to preserve.  0"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_dab0798d","line":28,"updated":"2014-12-19 23:42:59.000000000","message":"Nit: I don\u0027t think we have a \"config manager\" per se so much as a way to read configuration from a config file (probably using a shared library-- or oslo).\n\nAlso, let\u0027s add to this list a \"maximum amphora deploy count\" which indicates the maximum number of amphora deployments we allow to run simultaneously-- so we don\u0027t explode the cloud, eh.","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":25,"context_line":"The housekeeping manager will run as a daemon process which will"},{"line_number":26,"context_line":"perform the following actions:"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* Read the following from the config manager:"},{"line_number":29,"context_line":"  * housekeeping interval"},{"line_number":30,"context_line":"  * spare pool capacity"},{"line_number":31,"context_line":"  * preservation count: How many deactivated amphorae to preserve.  0"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_9555e2c3","line":28,"in_reply_to":"3a961159_dab0798d","updated":"2014-12-22 01:40:06.000000000","message":"Done","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"fbc4e2e50a20d991ff4604db68b5bb49ecd1e0b8","unresolved":false,"context_lines":[{"line_number":30,"context_line":"  * spare pool capacity"},{"line_number":31,"context_line":"  * preservation count: How many deactivated amphorae to preserve.  0"},{"line_number":32,"context_line":"    means delete, 1 or greater means keep up to that many amphorae for"},{"line_number":33,"context_line":"    future diagnostics."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":" * Get the spare pool size:"},{"line_number":36,"context_line":"  * Log the spare pool size"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_3ab89d10","line":33,"updated":"2014-12-19 22:58:13.000000000","message":"Would this be *any* amphora that was deactivated, like from a user deleting a LB, or would it only include amphorae that were deactivated because they somehow entered an ERROR state?","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":30,"context_line":"  * spare pool capacity"},{"line_number":31,"context_line":"  * preservation count: How many deactivated amphorae to preserve.  0"},{"line_number":32,"context_line":"    means delete, 1 or greater means keep up to that many amphorae for"},{"line_number":33,"context_line":"    future diagnostics."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":" * Get the spare pool size:"},{"line_number":36,"context_line":"  * Log the spare pool size"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_d5f92ac9","line":33,"in_reply_to":"3a961159_3ab89d10","updated":"2014-12-22 01:40:06.000000000","message":"Done","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":30,"context_line":"  * spare pool capacity"},{"line_number":31,"context_line":"  * preservation count: How many deactivated amphorae to preserve.  0"},{"line_number":32,"context_line":"    means delete, 1 or greater means keep up to that many amphorae for"},{"line_number":33,"context_line":"    future diagnostics."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":" * Get the spare pool size:"},{"line_number":36,"context_line":"  * Log the spare pool size"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_bb6485b9","line":33,"in_reply_to":"3a961159_3ab89d10","updated":"2014-12-22 01:40:06.000000000","message":"The general idea is to only save instances that were in an error state, or had somehow been marked by the operator for future preservation.  Right now, I don\u0027t think we have a specific way to do such a marking, I will make a note to look into that.","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"824d4d7b04ab73223cee1d4d43ce28cbd2f8c081","unresolved":false,"context_lines":[{"line_number":30,"context_line":"  * spare pool capacity"},{"line_number":31,"context_line":"  * preservation count: How many deactivated amphorae to preserve.  0"},{"line_number":32,"context_line":"    means delete, 1 or greater means keep up to that many amphorae for"},{"line_number":33,"context_line":"    future diagnostics."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":" * Get the spare pool size:"},{"line_number":36,"context_line":"  * Log the spare pool size"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_ba6f2dfb","line":33,"in_reply_to":"3a961159_3ab89d10","updated":"2014-12-19 23:42:59.000000000","message":"The problem with keeping a certain number of these around is that we need to keep a rolling review of them (and, I guess, how old they are?)  My thought was to have some mechanism to flag specific amphorae as being ones you specifically don\u0027t want to delete after they\u0027re deactivated (probably an operator API command, and corresponding field in the amphora table in the database).\n\nEspecially if things are really churning on a large public cloud, does it actually help to keep a certain number of these around after they\u0027re deactivated?  (Y\u0027all have more experience with this than I, so I\u0027m curious as to how you use this kind of functionality for troubleshooting / forensics)","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"824d4d7b04ab73223cee1d4d43ce28cbd2f8c081","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    means delete, 1 or greater means keep up to that many amphorae for"},{"line_number":33,"context_line":"    future diagnostics."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":" * Get the spare pool size:"},{"line_number":36,"context_line":"  * Log the spare pool size"},{"line_number":37,"context_line":"  * If the spare pool size is less than the spare pool capacity,"},{"line_number":38,"context_line":"    initiate creation of appropriate number of amphorae."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_fa7455d0","line":35,"updated":"2014-12-19 23:42:59.000000000","message":"Nit: Indentation is off.","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    means delete, 1 or greater means keep up to that many amphorae for"},{"line_number":33,"context_line":"    future diagnostics."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":" * Get the spare pool size:"},{"line_number":36,"context_line":"  * Log the spare pool size"},{"line_number":37,"context_line":"  * If the spare pool size is less than the spare pool capacity,"},{"line_number":38,"context_line":"    initiate creation of appropriate number of amphorae."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_150012aa","line":35,"in_reply_to":"3a961159_fa7455d0","updated":"2014-12-22 01:40:06.000000000","message":"Done","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"824d4d7b04ab73223cee1d4d43ce28cbd2f8c081","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    future diagnostics."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":" * Get the spare pool size:"},{"line_number":36,"context_line":"  * Log the spare pool size"},{"line_number":37,"context_line":"  * If the spare pool size is less than the spare pool capacity,"},{"line_number":38,"context_line":"    initiate creation of appropriate number of amphorae."},{"line_number":39,"context_line":"  * TBD: If the spare pool size is greater than the capacity, should"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_1a2cc1ab","line":36,"updated":"2014-12-19 23:42:59.000000000","message":"In the amphora lifecycle document, Brandon defined several terms which apply here. I\u0027d like to standardize on the terminology used there.  ( https://review.openstack.org/#/c/130424/ )","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    future diagnostics."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":" * Get the spare pool size:"},{"line_number":36,"context_line":"  * Log the spare pool size"},{"line_number":37,"context_line":"  * If the spare pool size is less than the spare pool capacity,"},{"line_number":38,"context_line":"    initiate creation of appropriate number of amphorae."},{"line_number":39,"context_line":"  * TBD: If the spare pool size is greater than the capacity, should"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_db55d1c2","line":36,"in_reply_to":"3a961159_1a2cc1ab","updated":"2014-12-22 01:40:06.000000000","message":"Thanks, I\u0027ve gone through this spec and tried to find all the places where I think it would be appropriate to use terminology from Brandon\u0027s doc.","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"fbc4e2e50a20d991ff4604db68b5bb49ecd1e0b8","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    initiate creation of appropriate number of amphorae."},{"line_number":39,"context_line":"  * TBD: If the spare pool size is greater than the capacity, should"},{"line_number":40,"context_line":"    we trim the pool, or should we allow it to naturally deplete"},{"line_number":41,"context_line":"    itself?"},{"line_number":42,"context_line":"  * TBD: should we provide a notification mechanism to generate an"},{"line_number":43,"context_line":"    alert if the spare pool size drops below a specified minimum?"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_5a5f29e5","line":41,"updated":"2014-12-19 22:58:13.000000000","message":"I would say no -- if our design is such that we commonly end up with more spares than our max, then we need to fix something elsewhere, not workaround it by fixing it here. If the operator changes the max pool size down, I would assume we just let it drain naturally. If they really want to trim it they can do so manually with the operator API.","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    initiate creation of appropriate number of amphorae."},{"line_number":39,"context_line":"  * TBD: If the spare pool size is greater than the capacity, should"},{"line_number":40,"context_line":"    we trim the pool, or should we allow it to naturally deplete"},{"line_number":41,"context_line":"    itself?"},{"line_number":42,"context_line":"  * TBD: should we provide a notification mechanism to generate an"},{"line_number":43,"context_line":"    alert if the spare pool size drops below a specified minimum?"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_d5204a4b","line":41,"in_reply_to":"3a961159_1a03e110","updated":"2014-12-22 01:40:06.000000000","message":"Done","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"824d4d7b04ab73223cee1d4d43ce28cbd2f8c081","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    initiate creation of appropriate number of amphorae."},{"line_number":39,"context_line":"  * TBD: If the spare pool size is greater than the capacity, should"},{"line_number":40,"context_line":"    we trim the pool, or should we allow it to naturally deplete"},{"line_number":41,"context_line":"    itself?"},{"line_number":42,"context_line":"  * TBD: should we provide a notification mechanism to generate an"},{"line_number":43,"context_line":"    alert if the spare pool size drops below a specified minimum?"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_1a03e110","line":41,"in_reply_to":"3a961159_5a5f29e5","updated":"2014-12-19 23:42:59.000000000","message":"Agreed-- we don\u0027t want to trim the pool back to something smaller. We\u0027ll give the operator the ability to spin up amporae and shut them down as she sees fit...  as long as we\u0027re over the threshold of capacity here, the housekeeping manager shouldn\u0027t care.","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    initiate creation of appropriate number of amphorae."},{"line_number":39,"context_line":"  * TBD: If the spare pool size is greater than the capacity, should"},{"line_number":40,"context_line":"    we trim the pool, or should we allow it to naturally deplete"},{"line_number":41,"context_line":"    itself?"},{"line_number":42,"context_line":"  * TBD: should we provide a notification mechanism to generate an"},{"line_number":43,"context_line":"    alert if the spare pool size drops below a specified minimum?"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_b5281e34","line":41,"in_reply_to":"3a961159_5a5f29e5","updated":"2014-12-22 01:40:06.000000000","message":"Done","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    initiate creation of appropriate number of amphorae."},{"line_number":39,"context_line":"  * TBD: If the spare pool size is greater than the capacity, should"},{"line_number":40,"context_line":"    we trim the pool, or should we allow it to naturally deplete"},{"line_number":41,"context_line":"    itself?"},{"line_number":42,"context_line":"  * TBD: should we provide a notification mechanism to generate an"},{"line_number":43,"context_line":"    alert if the spare pool size drops below a specified minimum?"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_fb5a8df0","line":41,"in_reply_to":"3a961159_5a5f29e5","updated":"2014-12-22 01:40:06.000000000","message":"Done","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"fbc4e2e50a20d991ff4604db68b5bb49ecd1e0b8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    we trim the pool, or should we allow it to naturally deplete"},{"line_number":41,"context_line":"    itself?"},{"line_number":42,"context_line":"  * TBD: should we provide a notification mechanism to generate an"},{"line_number":43,"context_line":"    alert if the spare pool size drops below a specified minimum?"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":" * Obtain the list of deactivated amphorae and schedule their removal."},{"line_number":46,"context_line":"   If preservation_count \u003e 0, and there are fewer than that many"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_1a69218c","line":43,"updated":"2014-12-19 22:58:13.000000000","message":"This might be useful. Alerts are good. Alternatively, this might be handled externally by using a monitoring service that watches the DB (this is common practice, right?).","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"824d4d7b04ab73223cee1d4d43ce28cbd2f8c081","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    we trim the pool, or should we allow it to naturally deplete"},{"line_number":41,"context_line":"    itself?"},{"line_number":42,"context_line":"  * TBD: should we provide a notification mechanism to generate an"},{"line_number":43,"context_line":"    alert if the spare pool size drops below a specified minimum?"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":" * Obtain the list of deactivated amphorae and schedule their removal."},{"line_number":46,"context_line":"   If preservation_count \u003e 0, and there are fewer than that many"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_d513ea59","line":43,"in_reply_to":"3a961159_1a69218c","updated":"2014-12-19 23:42:59.000000000","message":"Agreed-- our ops people will definitely want this. So, of course, that would be another configurable threshold. For now, just logging that we hit it should be sufficient.\n\nAnd agreed, Adam: We might just consider this beyond the scope of this project unless / until we support some kind of active alerting mechanism.","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    we trim the pool, or should we allow it to naturally deplete"},{"line_number":41,"context_line":"    itself?"},{"line_number":42,"context_line":"  * TBD: should we provide a notification mechanism to generate an"},{"line_number":43,"context_line":"    alert if the spare pool size drops below a specified minimum?"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":" * Obtain the list of deactivated amphorae and schedule their removal."},{"line_number":46,"context_line":"   If preservation_count \u003e 0, and there are fewer than that many"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_7b669dbc","line":43,"in_reply_to":"3a961159_1a69218c","updated":"2014-12-22 01:40:06.000000000","message":"Done","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    we trim the pool, or should we allow it to naturally deplete"},{"line_number":41,"context_line":"    itself?"},{"line_number":42,"context_line":"  * TBD: should we provide a notification mechanism to generate an"},{"line_number":43,"context_line":"    alert if the spare pool size drops below a specified minimum?"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":" * Obtain the list of deactivated amphorae and schedule their removal."},{"line_number":46,"context_line":"   If preservation_count \u003e 0, and there are fewer than that many"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_bb0ba5d4","line":43,"in_reply_to":"3a961159_d513ea59","updated":"2014-12-22 01:40:06.000000000","message":"I removed this TBD item for now.  In the future, we will need to develop a more comprehensive logging/alerting mechanism beyond this particular issue, so defer this to a future release.  Logging the pool size is already specified above, that is enough for something like datadog to use to generate graphs and alerts.","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"fbc4e2e50a20d991ff4604db68b5bb49ecd1e0b8","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":" * Obtain the list of deactivated amphorae and schedule their removal."},{"line_number":46,"context_line":"   If preservation_count \u003e 0, and there are fewer than that many"},{"line_number":47,"context_line":"   amphorae in the preserved pool, preserved the amphora"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":" * Sleep for the time specified by housekeeping_interval."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_7a3225a8","line":47,"updated":"2014-12-19 22:58:13.000000000","message":"Do we cycle the preserved pool, like a limited size queue? Or would that probably end with cycling too fast to actually be useful?","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":" * Obtain the list of deactivated amphorae and schedule their removal."},{"line_number":46,"context_line":"   If preservation_count \u003e 0, and there are fewer than that many"},{"line_number":47,"context_line":"   amphorae in the preserved pool, preserved the amphora"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":" * Sleep for the time specified by housekeeping_interval."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_db231156","line":47,"in_reply_to":"3a961159_5527fab5","updated":"2014-12-22 01:40:06.000000000","message":"I added a \"preservation_scheme\" config variable that tells whether to keep amphorae once they are preserved, or cycle through a queue, getting rid of the oldest one.","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"824d4d7b04ab73223cee1d4d43ce28cbd2f8c081","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":" * Obtain the list of deactivated amphorae and schedule their removal."},{"line_number":46,"context_line":"   If preservation_count \u003e 0, and there are fewer than that many"},{"line_number":47,"context_line":"   amphorae in the preserved pool, preserved the amphora"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":" * Sleep for the time specified by housekeeping_interval."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_5527fab5","line":47,"in_reply_to":"3a961159_7a3225a8","updated":"2014-12-19 23:42:59.000000000","message":"+1 to Adam\u0027s comments. From my perspective a preservation pool isn\u0027t as useful as the ability to flag certain amphorae to be preserved after they\u0027re deactivated. But then again, I have less experience with this than y\u0027all, and would love to hear your thoughts on this matter.","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"824d4d7b04ab73223cee1d4d43ce28cbd2f8c081","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    \"\"\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        def get_spare_capacity(self):"},{"line_number":68,"context_line":"            \"\"\" Return the capacity of the spare pool \"\"\""},{"line_number":69,"context_line":"            raise NotImplementedError"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        def get_housekeeping_interval(self):"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_75531617","line":68,"updated":"2014-12-19 23:42:59.000000000","message":"Could we call the capacity the \u0027target capacity\u0027 instead, so that it\u0027s more obvious from the name this is the number the housekeeping manager is trying to hit, and not the current capacity (current capacity being the spare pool size below).","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    \"\"\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        def get_spare_capacity(self):"},{"line_number":68,"context_line":"            \"\"\" Return the capacity of the spare pool \"\"\""},{"line_number":69,"context_line":"            raise NotImplementedError"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        def get_housekeeping_interval(self):"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_d5d12afc","line":68,"in_reply_to":"3a961159_75531617","updated":"2014-12-22 01:40:06.000000000","message":"Done","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"824d4d7b04ab73223cee1d4d43ce28cbd2f8c081","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            \"\"\" Return the capacity of the spare pool \"\"\""},{"line_number":69,"context_line":"            raise NotImplementedError"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        def get_housekeeping_interval(self):"},{"line_number":72,"context_line":"            \"\"\" Return the time, in seconds, that the housekeeping manager"},{"line_number":73,"context_line":"            should wait between cycles.\"\"\""},{"line_number":74,"context_line":"            raise NotImplementedError"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_b559fe36","line":71,"updated":"2014-12-19 23:42:59.000000000","message":"Is anyone actually going to use this method? If someone wants to know the housekeeping interval, wouldn\u0027t they just look at the config file?","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            \"\"\" Return the capacity of the spare pool \"\"\""},{"line_number":69,"context_line":"            raise NotImplementedError"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        def get_housekeeping_interval(self):"},{"line_number":72,"context_line":"            \"\"\" Return the time, in seconds, that the housekeeping manager"},{"line_number":73,"context_line":"            should wait between cycles.\"\"\""},{"line_number":74,"context_line":"            raise NotImplementedError"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_d57cca22","line":71,"in_reply_to":"3a961159_b559fe36","updated":"2014-12-22 01:40:06.000000000","message":"Agreed, no need for this method to be externally documented.","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"fbc4e2e50a20d991ff4604db68b5bb49ecd1e0b8","unresolved":false,"context_lines":[{"line_number":121,"context_line":"---------------"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Must follow standard practices for database access.  This code is not"},{"line_number":124,"context_line":"expected to directly modify the database."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Notifications impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_5a89e924","line":124,"updated":"2014-12-19 22:58:13.000000000","message":"I think we would *at least* need to modify the status database, in order to update from the \"AWAITING_DEACTIVATION\" state (whatever it\u0027s called) to \"DEACTIVATED\".","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":121,"context_line":"---------------"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Must follow standard practices for database access.  This code is not"},{"line_number":124,"context_line":"expected to directly modify the database."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Notifications impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_9596c23c","line":124,"in_reply_to":"3a961159_5a89e924","updated":"2014-12-22 01:40:06.000000000","message":"Good point, deleted the second sentence.","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"fbc4e2e50a20d991ff4604db68b5bb49ecd1e0b8","unresolved":false,"context_lines":[{"line_number":146,"context_line":"Developer impact"},{"line_number":147,"context_line":"----------------"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Developers of other modules need to be aware that amphrae may be"},{"line_number":150,"context_line":"created, deleted, or saved for diagonsis by this daemon."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_fa79b52f","line":149,"updated":"2014-12-19 22:58:13.000000000","message":"*amphorae","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"cfde56c91c6ca1076387810ea457853006c32265","unresolved":false,"context_lines":[{"line_number":146,"context_line":"Developer impact"},{"line_number":147,"context_line":"----------------"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Developers of other modules need to be aware that amphrae may be"},{"line_number":150,"context_line":"created, deleted, or saved for diagonsis by this daemon."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a961159_b59bbe64","line":149,"in_reply_to":"3a961159_fa79b52f","updated":"2014-12-22 01:40:06.000000000","message":"Done","commit_id":"49d934a3bf4472c68c3ade5a6bc4230ccaa5c0ff"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"60c570f6c55733ce4bfaeddd9d3f9f11fd89fa67","unresolved":false,"context_lines":[{"line_number":33,"context_line":"  * spare_amphora_pool_size: The desired number of spare amphorae."},{"line_number":34,"context_line":"  * maximum_amphora_deploy_count: The total maximum number of"},{"line_number":35,"context_line":"    amphorae that may exist at any given time."},{"line_number":36,"context_line":"  * maximum_preserved_amphora_count: How many deactivated amphorae to"},{"line_number":37,"context_line":"    preserve.  0 means delete, 1 or greater means keep up to that many"},{"line_number":38,"context_line":"    amphorae for future diagnostics.  Only amphorae in the ERROR and"},{"line_number":39,"context_line":"    PRESERVE states are eligible to be preserved.  TODO: Right now"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a961159_3b7b207c","line":36,"updated":"2014-12-22 18:43:35.000000000","message":"Mark McClain eluded that it might not be possible to preserve amphora due to reusing MAC addresses, etc. on network devices. So one thought was to strip them of their ports to make letting them run \"safer\"","commit_id":"7b2dbe9cd4da9cb76dece25fd2116ed175c639ca"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"ea79f8db1d8b2794769c2cb548bb40084b7cfd17","unresolved":false,"context_lines":[{"line_number":33,"context_line":"  * spare_amphora_pool_size: The desired number of spare amphorae."},{"line_number":34,"context_line":"  * maximum_amphora_deploy_count: The total maximum number of"},{"line_number":35,"context_line":"    amphorae that may exist at any given time."},{"line_number":36,"context_line":"  * maximum_preserved_amphora_count: How many deactivated amphorae to"},{"line_number":37,"context_line":"    preserve.  0 means delete, 1 or greater means keep up to that many"},{"line_number":38,"context_line":"    amphorae for future diagnostics.  Only amphorae in the ERROR and"},{"line_number":39,"context_line":"    PRESERVE states are eligible to be preserved.  TODO: Right now"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a961159_71d30704","line":36,"in_reply_to":"3a961159_3b7b207c","updated":"2014-12-22 21:49:14.000000000","message":"OK, I will add a note here saying we need to be aware of this issue.","commit_id":"7b2dbe9cd4da9cb76dece25fd2116ed175c639ca"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"60c570f6c55733ce4bfaeddd9d3f9f11fd89fa67","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    PRESERVE states are eligible to be preserved.  TODO: Right now"},{"line_number":40,"context_line":"    there is no PRESERVE state, for this to work we would need to"},{"line_number":41,"context_line":"    define one in the amphora spec."},{"line_number":42,"context_line":"  * preservation_scheme: \"keep\" means keep all preserved amphorae,"},{"line_number":43,"context_line":"    \"cycle\" means maintain a queue of preserved amphorae, deleting"},{"line_number":44,"context_line":"    the oldest one when a new amphora is preserved."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a961159_3bf24006","line":42,"updated":"2014-12-22 18:43:35.000000000","message":"An additional preserving scheme is \"snapshot\u0027, aka snaphot the vm and then terminate it. Please add that.","commit_id":"7b2dbe9cd4da9cb76dece25fd2116ed175c639ca"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"ea79f8db1d8b2794769c2cb548bb40084b7cfd17","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    PRESERVE states are eligible to be preserved.  TODO: Right now"},{"line_number":40,"context_line":"    there is no PRESERVE state, for this to work we would need to"},{"line_number":41,"context_line":"    define one in the amphora spec."},{"line_number":42,"context_line":"  * preservation_scheme: \"keep\" means keep all preserved amphorae,"},{"line_number":43,"context_line":"    \"cycle\" means maintain a queue of preserved amphorae, deleting"},{"line_number":44,"context_line":"    the oldest one when a new amphora is preserved."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a961159_91ceb358","line":42,"in_reply_to":"3a961159_3bf24006","updated":"2014-12-22 21:49:14.000000000","message":"OK","commit_id":"7b2dbe9cd4da9cb76dece25fd2116ed175c639ca"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"60c570f6c55733ce4bfaeddd9d3f9f11fd89fa67","unresolved":false,"context_lines":[{"line_number":113,"context_line":"Data model impact"},{"line_number":114,"context_line":"-----------------"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Requires the addition of the housekeeping_interval and spare_pool_size"},{"line_number":117,"context_line":"to the config."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a961159_bbbc7007","line":116,"updated":"2014-12-22 18:43:35.000000000","message":"Please add preserved state as well","commit_id":"7b2dbe9cd4da9cb76dece25fd2116ed175c639ca"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"b4b0a527bf182eb48aee4687043d1158a1813474","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            to be added to the spare pool.\"\"\""},{"line_number":98,"context_line":"            raise NotImplementedError"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        def schedule_amphora_remove(self, amphora_ids, action \u003d \"delete\"):"},{"line_number":101,"context_line":"            \"\"\" Schedule the removal of the amphorae specified by"},{"line_number":102,"context_line":"            amphora_ids.\"\"\""},{"line_number":103,"context_line":"            raise NotImplementedError"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3a961159_c67ed81a","line":100,"updated":"2015-01-07 04:59:24.000000000","message":"what are other possible actions for this method?","commit_id":"fed484f6f79f3e63389a6b8f56009ca8d18305a7"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"40c7a8798cb132c8afa2146abf481d70d16e931b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            to be added to the spare pool.\"\"\""},{"line_number":98,"context_line":"            raise NotImplementedError"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        def schedule_amphora_remove(self, amphora_ids, action \u003d \"delete\"):"},{"line_number":101,"context_line":"            \"\"\" Schedule the removal of the amphorae specified by"},{"line_number":102,"context_line":"            amphora_ids.\"\"\""},{"line_number":103,"context_line":"            raise NotImplementedError"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3a961159_14a0f1f2","line":100,"in_reply_to":"3a961159_c67ed81a","updated":"2015-01-07 20:13:29.000000000","message":"Good question, none that make sense to me, I\u0027ll remove it.","commit_id":"fed484f6f79f3e63389a6b8f56009ca8d18305a7"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"817c528b292982967b7094163e70db040c3c3756","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    housekeeping manager will sleep before running its checks"},{"line_number":32,"context_line":"    again."},{"line_number":33,"context_line":"  * spare_amphora_pool_size: The desired number of spare amphorae."},{"line_number":34,"context_line":"  * maximum_amphora_deploy_count: The total maximum number of"},{"line_number":35,"context_line":"    amphorae that may exist at any given time."},{"line_number":36,"context_line":"  * maximum_preserved_amphora_count: How many deactivated amphorae to"},{"line_number":37,"context_line":"    preserve.  0 means delete, 1 or greater means keep up to that many"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a961159_1e75f5f9","line":34,"updated":"2015-01-13 08:09:40.000000000","message":"Actually, I was thinking this would be the maximum number of deploy workers we allow to run simultaneously. This is a simple way to throttle deployments so we don\u0027t explode the cloud. I\u0027m thinking it makes less sense to limit the total number of amphorae we will have deployed on the cloud at any given time.","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"bbeca7f244c1f1fd9304f17250cbafaadb342d1b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    housekeeping manager will sleep before running its checks"},{"line_number":32,"context_line":"    again."},{"line_number":33,"context_line":"  * spare_amphora_pool_size: The desired number of spare amphorae."},{"line_number":34,"context_line":"  * maximum_amphora_deploy_count: The total maximum number of"},{"line_number":35,"context_line":"    amphorae that may exist at any given time."},{"line_number":36,"context_line":"  * maximum_preserved_amphora_count: How many deactivated amphorae to"},{"line_number":37,"context_line":"    preserve.  0 means delete, 1 or greater means keep up to that many"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a930d6b_0a6837f4","line":34,"in_reply_to":"1a930d6b_bb3c0e95","updated":"2015-01-23 04:33:39.000000000","message":"Done","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"c529036bec68fd5dff26ef17bd4b15511c8ad9e9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    housekeeping manager will sleep before running its checks"},{"line_number":32,"context_line":"    again."},{"line_number":33,"context_line":"  * spare_amphora_pool_size: The desired number of spare amphorae."},{"line_number":34,"context_line":"  * maximum_amphora_deploy_count: The total maximum number of"},{"line_number":35,"context_line":"    amphorae that may exist at any given time."},{"line_number":36,"context_line":"  * maximum_preserved_amphora_count: How many deactivated amphorae to"},{"line_number":37,"context_line":"    preserve.  0 means delete, 1 or greater means keep up to that many"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a961159_cb89d570","line":34,"in_reply_to":"3a961159_1e75f5f9","updated":"2015-01-13 18:26:58.000000000","message":"I think this would be a little more difficult to do since the deploy worker will be spawned by the housekeeping manager and the api manager.  Unless we have the deploy worker register in the db right when it starts, which I\u0027m not so sure about.  Another option is interprocess communication, which I\u0027m not a big fan of doing right now, in the interest of simplicity.  The other option is to change this to maximum_deploying_amphora_count and the deploy worker checks to db to determine how many amphorae are currently being deployed.  Doesn\u0027t that get what we want?  Though to be truly accurate we may have to lock the table which could cause issues.","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a39d3185631377d835f8dd9f992b640b93f55a13","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    housekeeping manager will sleep before running its checks"},{"line_number":32,"context_line":"    again."},{"line_number":33,"context_line":"  * spare_amphora_pool_size: The desired number of spare amphorae."},{"line_number":34,"context_line":"  * maximum_amphora_deploy_count: The total maximum number of"},{"line_number":35,"context_line":"    amphorae that may exist at any given time."},{"line_number":36,"context_line":"  * maximum_preserved_amphora_count: How many deactivated amphorae to"},{"line_number":37,"context_line":"    preserve.  0 means delete, 1 or greater means keep up to that many"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a930d6b_bb3c0e95","line":34,"in_reply_to":"3a961159_b424d2b2","updated":"2015-01-21 19:31:53.000000000","message":"Yes, \"change this to maximum_deploying_amphora_count and the deploy worker checks to db to determine how many amphorae are currently being deployed\" +1","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"35b644fd376eb727e399001fea4e4fec9e85a2f9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    housekeeping manager will sleep before running its checks"},{"line_number":32,"context_line":"    again."},{"line_number":33,"context_line":"  * spare_amphora_pool_size: The desired number of spare amphorae."},{"line_number":34,"context_line":"  * maximum_amphora_deploy_count: The total maximum number of"},{"line_number":35,"context_line":"    amphorae that may exist at any given time."},{"line_number":36,"context_line":"  * maximum_preserved_amphora_count: How many deactivated amphorae to"},{"line_number":37,"context_line":"    preserve.  0 means delete, 1 or greater means keep up to that many"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a961159_b424d2b2","line":34,"in_reply_to":"3a961159_cb89d570","updated":"2015-01-14 08:02:56.000000000","message":"I think the last option you listed there was what we had talked about. Again, I see this as a \u0027target\u0027 and not a strict limit-- the point behind this is just to throttle deploys so as not to overwhelm Nova or Neutron spinning up amphorae too fast.","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"817c528b292982967b7094163e70db040c3c3756","unresolved":false,"context_lines":[{"line_number":46,"context_line":"      oldest one when a new amphora is preserved."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"  * preservation_method: Preservation must take into account the"},{"line_number":49,"context_line":"    possibility that amphorae instanciated in the future may reuse MAC"},{"line_number":50,"context_line":"    addresses."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    * \"unplug\": Disconnect the virtual NICs from the amphora"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a961159_5eecdd92","line":49,"updated":"2015-01-13 08:09:40.000000000","message":"Nit: instantiated","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"bbeca7f244c1f1fd9304f17250cbafaadb342d1b","unresolved":false,"context_lines":[{"line_number":46,"context_line":"      oldest one when a new amphora is preserved."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"  * preservation_method: Preservation must take into account the"},{"line_number":49,"context_line":"    possibility that amphorae instanciated in the future may reuse MAC"},{"line_number":50,"context_line":"    addresses."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    * \"unplug\": Disconnect the virtual NICs from the amphora"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a930d6b_2a6fb3fe","line":49,"in_reply_to":"3a961159_5eecdd92","updated":"2015-01-23 04:33:39.000000000","message":"Done","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"817c528b292982967b7094163e70db040c3c3756","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    be preserved for future analysis."},{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        def get_ready_spare_amphora_count(self):"},{"line_number":87,"context_line":"            \"\"\" Return the taraget capacity of the spare pool \"\"\""},{"line_number":88,"context_line":"            raise NotImplementedError"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a961159_048f6377","line":86,"updated":"2015-01-13 08:09:40.000000000","message":"From Brandon\u0027s glossary in his gerrit review on this, the Ready Spare Amphora Count is: \"The number of spare amphorae that are already built and are awaiting commands. This is determined by querying the database for all amphora in the ACTIVE state that are not associated with loadbalancers.\"\n\nThis is not the \u0027target\u0027, but the number of spare amphorae that are up and ready to have listeners deployed to them.  (ie. it\u0027s the response from the \"get_spare_amphora_pools_size\" function below.)\n\nI think you will want to rename this method to reflect the \"Spare Amphora Pool Size\" which is the target described, and rename the next method as well to reflect that it\u0027s going to return the ready spare amphora count.)","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"bbeca7f244c1f1fd9304f17250cbafaadb342d1b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    be preserved for future analysis."},{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        def get_ready_spare_amphora_count(self):"},{"line_number":87,"context_line":"            \"\"\" Return the taraget capacity of the spare pool \"\"\""},{"line_number":88,"context_line":"            raise NotImplementedError"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a930d6b_4a407f56","line":86,"in_reply_to":"3a961159_048f6377","updated":"2015-01-23 04:33:39.000000000","message":"Done","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"c529036bec68fd5dff26ef17bd4b15511c8ad9e9","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    be preserved for future analysis."},{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        def get_ready_spare_amphora_count(self):"},{"line_number":87,"context_line":"            \"\"\" Return the taraget capacity of the spare pool \"\"\""},{"line_number":88,"context_line":"            raise NotImplementedError"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a961159_eb5cd1f2","line":86,"in_reply_to":"3a961159_048f6377","updated":"2015-01-13 18:26:58.000000000","message":"Good catch.  Though the ACTIVE status may change to be READY, but the docstring is definitely not correct for this according that glossary I created with terrible names.","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"bbeca7f244c1f1fd9304f17250cbafaadb342d1b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    be preserved for future analysis."},{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        def get_ready_spare_amphora_count(self):"},{"line_number":87,"context_line":"            \"\"\" Return the taraget capacity of the spare pool \"\"\""},{"line_number":88,"context_line":"            raise NotImplementedError"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a930d6b_2a3df3de","line":86,"in_reply_to":"3a961159_eb5cd1f2","updated":"2015-01-23 04:33:39.000000000","message":"Done","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"817c528b292982967b7094163e70db040c3c3756","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        def get_ready_spare_amphora_count(self):"},{"line_number":87,"context_line":"            \"\"\" Return the taraget capacity of the spare pool \"\"\""},{"line_number":88,"context_line":"            raise NotImplementedError"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        def get_spare_amphora_pool_size(self):"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a961159_fe8109a1","line":87,"updated":"2015-01-13 08:09:40.000000000","message":"Nit: target","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"bbeca7f244c1f1fd9304f17250cbafaadb342d1b","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        def get_ready_spare_amphora_count(self):"},{"line_number":87,"context_line":"            \"\"\" Return the taraget capacity of the spare pool \"\"\""},{"line_number":88,"context_line":"            raise NotImplementedError"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        def get_spare_amphora_pool_size(self):"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a930d6b_6a261bd0","line":87,"in_reply_to":"3a961159_fe8109a1","updated":"2015-01-23 04:33:39.000000000","message":"Done","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"c529036bec68fd5dff26ef17bd4b15511c8ad9e9","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            \"\"\" Return the taraget capacity of the spare pool \"\"\""},{"line_number":88,"context_line":"            raise NotImplementedError"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        def get_spare_amphora_pool_size(self):"},{"line_number":91,"context_line":"            \"\"\" Return the number of available amphorae in the spare pool"},{"line_number":92,"context_line":"            \"\"\""},{"line_number":93,"context_line":"            raise NotImplementedError"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a961159_0b075dca","line":90,"updated":"2015-01-13 18:26:58.000000000","message":"Yeah this should be return the target capacity of the spare pool.","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"c529036bec68fd5dff26ef17bd4b15511c8ad9e9","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            to be added to the spare pool.\"\"\""},{"line_number":98,"context_line":"            raise NotImplementedError"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        def schedule_amphora_remove(self, amphora_ids):"},{"line_number":101,"context_line":"            \"\"\" Schedule the removal of the amphorae specified by"},{"line_number":102,"context_line":"            amphora_ids.\"\"\""},{"line_number":103,"context_line":"            raise NotImplementedError"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a961159_cbde35da","line":100,"updated":"2015-01-13 18:26:58.000000000","message":"So if this is scheduling for removal.  What is actually removing it? I thought the housekeeping manager was responsible for removing amphorae.","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a39d3185631377d835f8dd9f992b640b93f55a13","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            to be added to the spare pool.\"\"\""},{"line_number":98,"context_line":"            raise NotImplementedError"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        def schedule_amphora_remove(self, amphora_ids):"},{"line_number":101,"context_line":"            \"\"\" Schedule the removal of the amphorae specified by"},{"line_number":102,"context_line":"            amphora_ids.\"\"\""},{"line_number":103,"context_line":"            raise NotImplementedError"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a930d6b_1b72827c","line":100,"in_reply_to":"3a961159_086ad4b4","updated":"2015-01-21 19:31:53.000000000","message":"Well, a \"deploy worker\" isn\u0027t really a separate entity, it\u0027s just another thread inside the housekeeping manager. I agree we should just name these \"remove_amphora\" / \"create_amphora\" since that is really what they do.","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"bbeca7f244c1f1fd9304f17250cbafaadb342d1b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            to be added to the spare pool.\"\"\""},{"line_number":98,"context_line":"            raise NotImplementedError"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        def schedule_amphora_remove(self, amphora_ids):"},{"line_number":101,"context_line":"            \"\"\" Schedule the removal of the amphorae specified by"},{"line_number":102,"context_line":"            amphora_ids.\"\"\""},{"line_number":103,"context_line":"            raise NotImplementedError"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a961159_dca5f2b5","line":100,"in_reply_to":"3a961159_3438e2d3","updated":"2015-01-23 04:33:39.000000000","message":"I agree, this is a poor choice for the names.  Better would be simply amphora_create() and amphora_remove().","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"d46adef4924a9685b368e3e4264c71184d7ea296","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            to be added to the spare pool.\"\"\""},{"line_number":98,"context_line":"            raise NotImplementedError"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        def schedule_amphora_remove(self, amphora_ids):"},{"line_number":101,"context_line":"            \"\"\" Schedule the removal of the amphorae specified by"},{"line_number":102,"context_line":"            amphora_ids.\"\"\""},{"line_number":103,"context_line":"            raise NotImplementedError"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a961159_086ad4b4","line":100,"in_reply_to":"3a961159_3438e2d3","updated":"2015-01-14 19:51:32.000000000","message":"Well i was thinking the schedule_amphora_create would just spawn a deploy_worker, but this would probably spawn a worker that needs to be defined in this module or in another module but under housekeeping package because I believe we decided only the housekeeping manager will delete amphorae.","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"35b644fd376eb727e399001fea4e4fec9e85a2f9","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            to be added to the spare pool.\"\"\""},{"line_number":98,"context_line":"            raise NotImplementedError"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        def schedule_amphora_remove(self, amphora_ids):"},{"line_number":101,"context_line":"            \"\"\" Schedule the removal of the amphorae specified by"},{"line_number":102,"context_line":"            amphora_ids.\"\"\""},{"line_number":103,"context_line":"            raise NotImplementedError"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a961159_3438e2d3","line":100,"in_reply_to":"3a961159_cbde35da","updated":"2015-01-14 08:02:56.000000000","message":"Good point-- I believe both this and the create method above probably just need to be renamed to reflect that a worker gets spawned to handle this.","commit_id":"d89fcaecb1614618d2b19691b4372bb706166ec3"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"7374bd58842ed53b6221c07f20dbe517d3d7f967","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    be preserved for future analysis."},{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        def get_spare_amphora_size(self):"},{"line_number":87,"context_line":"            \"\"\" Return the target capacity of the spare pool \"\"\""},{"line_number":88,"context_line":"            raise NotImplementedError"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa81d914_44528214","line":86,"updated":"2015-01-27 20:54:53.000000000","message":"I think `get_spare_amphora_pool_size` is clearer. but I\u0027ll let this pass so we can get things moving! If you really agree though, you could fix it and I\u0027ll +2 again. :)","commit_id":"abd660cbcdfc645367c3ab613cd102284d9118d6"}]}
