)]}'
{"specs/newton/approved/cells-quota-api-db.rst":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"5ef54d5f652066ecc3508bf573922ca19eb4a35d","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Quotas for projects and users need to be enforced across cell boundaries."},{"line_number":21,"context_line":"Quotas are also exposed in the API.  If quotas remain in the nova (cell)"},{"line_number":22,"context_line":"database then the API would have to me modified to expose cell information."},{"line_number":23,"context_line":"Alternatively quota data would have to be replicated across all cells which"},{"line_number":24,"context_line":"would make it difficult to enforce a global quota."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa0719c6_9dcee058","line":22,"updated":"2016-03-21 15:35:48.000000000","message":"s/me/be/","commit_id":"aedbb1fc4f4f683e50b69eb2a788c3bb032005b7"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"4652e57d6b8d23ff4157982068263aeb0bc44ab4","unresolved":false,"context_lines":[{"line_number":55,"context_line":"not a suitable place for placing data migration logic. As such new versioned"},{"line_number":56,"context_line":"objects will be created for the quota tables."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"These objects will be as follows:::"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    DbQuota"},{"line_number":61,"context_line":"    DbQuotaList"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a122d0e_2e84645b","line":58,"updated":"2016-05-04 17:41:23.000000000","message":"I\u0027m worried about changing the delicate timing on reservation commit, and getting \"quota out of sync errors\".  If there is a versioned object for each table, that might change the timing.","commit_id":"aedbb1fc4f4f683e50b69eb2a788c3bb032005b7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"35b7eef3570df96efe5a1192a30da99b2b024a54","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"The ``Quota`` object in nova makes use of functions in ``quota.py``. It is"},{"line_number":54,"context_line":"mostly a facade for making remote calls to the ``quota.py`` API. As such it is"},{"line_number":55,"context_line":"not a suitable place for placing data migration logic. As such new versioned"},{"line_number":56,"context_line":"objects will be created for the quota tables."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"These objects will be as follows:::"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    DbQuota"},{"line_number":61,"context_line":"    DbQuotaList"},{"line_number":62,"context_line":"    QuotaUsages"},{"line_number":63,"context_line":"    QuotaUsagesList"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Objects will not be created for ``reservations`` which will be accessed"},{"line_number":66,"context_line":"through ``QuotaUsages``. These objects will contain the database access logic"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_cd193f7c","line":63,"range":{"start_line":55,"start_character":55,"end_line":63,"end_character":19},"updated":"2016-05-05 18:30:46.000000000","message":"As discussed in IRC, I would avoid adding more confusing quota classes all over the code. The existing Quotas object is just an RPC facade. The nova.quotas.DbQuotaDriver is the actual piece the hits the database. Long-term we need to combine those two into the nova.objects.Quotas object, but in order to not depend on that, I think we should just do the online data migration in the existing nova.quotas.DbQuotaDriver. Then we can always merge that later and the data migration part for the DB access is already done.","commit_id":"a57b774ff1c9bbc2465bf7bfb90be3086a7d6704"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4a31609d18d66b46a394b2e36ecf580614fd33b9","unresolved":false,"context_lines":[{"line_number":52,"context_line":"methods that perform any ``get`` type operation on the ``quotas``,"},{"line_number":53,"context_line":"``quota_classes``, ``project_user_quotas`` tables will be modified to load"},{"line_number":54,"context_line":"initially from the API database. If the item is not found then it will be"},{"line_number":55,"context_line":"searched for in the nova database."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Migration functions will be created to migrate data from the cell to API"},{"line_number":58,"context_line":"database. These methods will be added to the nova manage"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9abb7d3a_a80a0a77","line":55,"updated":"2016-05-31 11:23:37.000000000","message":"Hmm, that extra search feels like its going to be very costly, as its normal to not have an entry in either DBs.\n\nIs there a way we can make that more efficient? Is there a marker that tells us we are done migrating?","commit_id":"474be607ab404f1ec520186ed7679cba7c905ece"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e234c4789898b639c3946fe58dd2910b871e4af9","unresolved":false,"context_lines":[{"line_number":52,"context_line":"methods that perform any ``get`` type operation on the ``quotas``,"},{"line_number":53,"context_line":"``quota_classes``, ``project_user_quotas`` tables will be modified to load"},{"line_number":54,"context_line":"initially from the API database. If the item is not found then it will be"},{"line_number":55,"context_line":"searched for in the nova database."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Migration functions will be created to migrate data from the cell to API"},{"line_number":58,"context_line":"database. These methods will be added to the nova manage"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9abb7d3a_b301c907","line":55,"in_reply_to":"9abb7d3a_5a8fd774","updated":"2016-05-31 15:30:54.000000000","message":"So the problem is there isn\u0027t any data in the DB to find for most of these calls. We default to the default config for most requests.","commit_id":"474be607ab404f1ec520186ed7679cba7c905ece"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"3c98dcd2dc1c391bb644808539b714e448b99b6f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"methods that perform any ``get`` type operation on the ``quotas``,"},{"line_number":53,"context_line":"``quota_classes``, ``project_user_quotas`` tables will be modified to load"},{"line_number":54,"context_line":"initially from the API database. If the item is not found then it will be"},{"line_number":55,"context_line":"searched for in the nova database."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Migration functions will be created to migrate data from the cell to API"},{"line_number":58,"context_line":"database. These methods will be added to the nova manage"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9abb7d3a_5a8fd774","line":55,"in_reply_to":"9abb7d3a_a80a0a77","updated":"2016-05-31 14:15:24.000000000","message":"Since we try the API DB first we don\u0027t need a marker to indicate that we are done migrating. When we are done migrating all data will be in the API db and only one call will be made. (In the normal success case).\n\nUntil operators perform migration you are right, there will be multiple databases calls where there used to be just one. I\u0027m not sure there is a good way around this, but it is temporary. Once migration is complete it will be back to business as usual.","commit_id":"474be607ab404f1ec520186ed7679cba7c905ece"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4a31609d18d66b46a394b2e36ecf580614fd33b9","unresolved":false,"context_lines":[{"line_number":111,"context_line":"Performance Impact"},{"line_number":112,"context_line":"------------------"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The performance impact of the changes will be negligible. However, the"},{"line_number":115,"context_line":"performance of the ``DbQuotaDriver`` will also not be improved for the"},{"line_number":116,"context_line":"large-scale deployments that CellsV2 is targeting."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9abb7d3a_08735616","line":114,"range":{"start_line":114,"start_character":46,"end_line":114,"end_character":56},"updated":"2016-05-31 11:23:37.000000000","message":"It feels like we have more select statements for every instance build request. That feels bad.","commit_id":"474be607ab404f1ec520186ed7679cba7c905ece"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"3c98dcd2dc1c391bb644808539b714e448b99b6f","unresolved":false,"context_lines":[{"line_number":111,"context_line":"Performance Impact"},{"line_number":112,"context_line":"------------------"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The performance impact of the changes will be negligible. However, the"},{"line_number":115,"context_line":"performance of the ``DbQuotaDriver`` will also not be improved for the"},{"line_number":116,"context_line":"large-scale deployments that CellsV2 is targeting."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9abb7d3a_40024ab5","line":114,"range":{"start_line":114,"start_character":46,"end_line":114,"end_character":56},"in_reply_to":"9abb7d3a_08735616","updated":"2016-05-31 14:15:24.000000000","message":"I will add something here to acknowledge that during migration there will be a performance hit. (Both from multiple database calls and having to \u0027sync\u0027 the quotas.)","commit_id":"474be607ab404f1ec520186ed7679cba7c905ece"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3ee7e935cdc3e73e8bbc3db81317b666a183ee34","unresolved":false,"context_lines":[{"line_number":123,"context_line":"until these tables are populated."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"This performance impact will be short term and will last until data has been"},{"line_number":126,"context_line":"migrated."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Other deployer impact"},{"line_number":129,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9abb7d3a_13aff5e2","line":126,"updated":"2016-05-31 15:35:19.000000000","message":"How does the code know the migration has finished?\n\nMost stuff will not have any user or project entries, so the lack of data is expected and important.\n\nIts not like every project and user will have an entry, the opposite is normal, having no over-rides.\n\nquota and project_user_quota are the tables I am thinking about.","commit_id":"f0a2990c01c62b7caf07a9ad7351a01fbb09b8d3"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"94876de741d28dde0fd44c329840157379c9a666","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Quotas for projects and users need to be enforced across cell boundaries."},{"line_number":21,"context_line":"Quotas are also exposed in the API.  If quotas remain in the cell"},{"line_number":22,"context_line":"database then the API would have to me modified to expose cell information."},{"line_number":23,"context_line":"Alternatively quota data would have to be replicated across all cells which"},{"line_number":24,"context_line":"would make it difficult to enforce a global quota."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9abb7d3a_70dcfc74","line":22,"range":{"start_line":22,"start_character":36,"end_line":22,"end_character":38},"updated":"2016-06-02 13:44:42.000000000","message":"be","commit_id":"25d50b2e566748e4a00486e08dc0a9b6122d140b"}]}
