)]}'
{"nova/objects/quotas.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a6c1eb6b1039b9a5eb4e9bd363dbb56e94a13ad","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @base.remotable_classmethod"},{"line_number":147,"context_line":"    def expire(cls, context):"},{"line_number":148,"context_line":"        quota.QUOTAS.expire(context)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"@base.NovaObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afc51ec_939de05b","line":148,"updated":"2016-03-14 20:25:16.000000000","message":"Well, looking at the quota module, it only needs to be a remotable method because we have a DBQuotaDriver directly calling the SQLA API. I\u0027m actually wondering if that would be better to call the Quota object Facade there rather than directly in the scheduler manager.","commit_id":"c7b99c2554cbb7999286beeffe199368b0e26204"},{"author":{"_account_id":15648,"name":"Yingxin","email":"yingxin.cheng@intel.com","username":"Yingxin"},"change_message_id":"648d8152da44dd92c007c7fac76b10cd2425d0e0","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @base.remotable_classmethod"},{"line_number":147,"context_line":"    def expire(cls, context):"},{"line_number":148,"context_line":"        quota.QUOTAS.expire(context)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"@base.NovaObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afc51ec_25675b26","line":148,"in_reply_to":"3afc51ec_33796cf7","updated":"2016-03-15 02:06:02.000000000","message":"Yes, the quota code is confusing to me, and I\u0027ve heard many others complaining about it.\n\nI once saw Quota object Facade as a proxy to `quota.QUOTAS` and to DBQuotaDriver, which has direct access to SQLA API. But this design seems ambiguous because Quota object also has direct access to db. \n\nBy nature I wish all db accesses are encapsulated inside Quota object, but this needs design change and will take a lot of time. I don\u0027t want scheduler implementation be blocked because of this, so I tried to fix the remotable problem first.","commit_id":"c7b99c2554cbb7999286beeffe199368b0e26204"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"527e296c014bac2fd4870d580984d8bd26304bea","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @base.remotable_classmethod"},{"line_number":147,"context_line":"    def expire(cls, context):"},{"line_number":148,"context_line":"        quota.QUOTAS.expire(context)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"@base.NovaObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afc51ec_33796cf7","line":148,"in_reply_to":"3afc51ec_939de05b","updated":"2016-03-14 20:31:14.000000000","message":"Unfortunately the code for quotas is a bit messed up. The DBQuotaDriver uses the db/api directly EVERYWHERE. The \u0027Quota\u0027 object is just used for removing calls. This might need to be fixed when moving the quota tables to the API db.","commit_id":"c7b99c2554cbb7999286beeffe199368b0e26204"}],"nova/scheduler/manager.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d3a8620a3a19765586aee744d24ff0b8c318c38b","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @periodic_task.periodic_task"},{"line_number":77,"context_line":"    def _expire_reservations(self, context):"},{"line_number":78,"context_line":"        objects.Quotas.expire(context)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @periodic_task.periodic_task(spacing\u003dCONF.scheduler_driver_task_period,"},{"line_number":81,"context_line":"                                 run_immediately\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afc51ec_b3429c0e","line":78,"updated":"2016-03-14 20:20:37.000000000","message":"just wondering if that should be covered by an UT...","commit_id":"c7b99c2554cbb7999286beeffe199368b0e26204"}]}
