)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"f378bf88b166f5a2bd9fbefa51391010a5bd22ea","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Delimiter - Cross Project Quota Enforcement and Management"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Quotas are common and the same time complex peice of code that every project"},{"line_number":10,"context_line":"in OpenStack needs for proper usage and management of resources. It seems"},{"line_number":11,"context_line":"that even though it is a common requirement there is not a common entity at"},{"line_number":12,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1af94dfe_6dad6a9a","line":9,"range":{"start_line":9,"start_character":44,"end_line":9,"end_character":49},"updated":"2016-03-21 13:48:20.000000000","message":"nit: piece","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Delimiter - Cross Project Quota Enforcement and Management"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Quotas are common and the same time complex peice of code that every project"},{"line_number":10,"context_line":"in OpenStack needs for proper usage and management of resources. It seems"},{"line_number":11,"context_line":"that even though it is a common requirement there is not a common entity at"},{"line_number":12,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"fa0719c6_e30a4e89","line":9,"range":{"start_line":9,"start_character":44,"end_line":9,"end_character":49},"in_reply_to":"1af94dfe_6dad6a9a","updated":"2016-03-28 20:19:45.000000000","message":"Done","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Delimiter - Cross Project Quota Enforcement and Management"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Quotas are common and the same time complex peice of code that every project"},{"line_number":10,"context_line":"in OpenStack needs for proper usage and management of resources. It seems"},{"line_number":11,"context_line":"that even though it is a common requirement there is not a common entity at"},{"line_number":12,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"fa0719c6_e8c22de8","line":9,"range":{"start_line":9,"start_character":44,"end_line":9,"end_character":49},"in_reply_to":"1af94dfe_6dad6a9a","updated":"2016-03-28 20:19:45.000000000","message":"Done","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"f378bf88b166f5a2bd9fbefa51391010a5bd22ea","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Delimiter - Cross Project Quota Enforcement and Management"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Quotas are common and the same time complex peice of code that every project"},{"line_number":10,"context_line":"in OpenStack needs for proper usage and management of resources. It seems"},{"line_number":11,"context_line":"that even though it is a common requirement there is not a common entity at"},{"line_number":12,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"},{"line_number":13,"context_line":"have every project build its own quota framework (database tables, businees"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1af94dfe_ad7ad221","line":10,"range":{"start_line":9,"start_character":63,"end_line":10,"end_character":63},"updated":"2016-03-21 13:48:20.000000000","message":"we can\u0027t say that every project needs quotas.","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Delimiter - Cross Project Quota Enforcement and Management"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Quotas are common and the same time complex peice of code that every project"},{"line_number":10,"context_line":"in OpenStack needs for proper usage and management of resources. It seems"},{"line_number":11,"context_line":"that even though it is a common requirement there is not a common entity at"},{"line_number":12,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"},{"line_number":13,"context_line":"have every project build its own quota framework (database tables, businees"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"fa0719c6_2301e66a","line":10,"range":{"start_line":9,"start_character":63,"end_line":10,"end_character":63},"in_reply_to":"1af94dfe_ad7ad221","updated":"2016-03-28 20:19:45.000000000","message":"Done","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"f378bf88b166f5a2bd9fbefa51391010a5bd22ea","unresolved":false,"context_lines":[{"line_number":14,"context_line":"logic, etc) needed to enforce and manage quotas. Hence, this is an attempt"},{"line_number":15,"context_line":"to build a common entity so that new and existing projects can seek benefit"},{"line_number":16,"context_line":"from it."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Id94d612ab5bea317a221581039f321bd649b406e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1af94dfe_8daf167c","line":17,"updated":"2016-03-21 13:48:20.000000000","message":"Doesn\u0027t have any blueprint link for this patch?","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Delimiter - Cross Project Quota Enforcement and Management"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Quotas are common and the same time complex peice of code that every project"},{"line_number":10,"context_line":"in OpenStack needs for proper usage and management of resources. It seems"},{"line_number":11,"context_line":"that even though it is a common requirement there is not a common entity at"},{"line_number":12,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"5a18252c_a9b513ef","line":9,"range":{"start_line":9,"start_character":44,"end_line":9,"end_character":49},"updated":"2016-04-13 20:47:22.000000000","message":"s/peice/piece","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"491ae30ade0405aeb77cbf42def7b277dc678241","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Delimiter - Cross Project Quota Enforcement and Management"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Quotas are common and the same time complex peice of code that every project"},{"line_number":10,"context_line":"in OpenStack needs for proper usage and management of resources. It seems"},{"line_number":11,"context_line":"that even though it is a common requirement there is not a common entity at"},{"line_number":12,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa7ab95a_fc821f51","line":9,"range":{"start_line":9,"start_character":44,"end_line":9,"end_character":49},"updated":"2016-09-02 13:16:05.000000000","message":"piece","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"491ae30ade0405aeb77cbf42def7b277dc678241","unresolved":false,"context_lines":[{"line_number":10,"context_line":"in OpenStack needs for proper usage and management of resources. It seems"},{"line_number":11,"context_line":"that even though it is a common requirement there is not a common entity at"},{"line_number":12,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"},{"line_number":13,"context_line":"have every project build its own quota framework (database tables, businees"},{"line_number":14,"context_line":"logic, etc) needed to enforce and manage quotas. Hence, this is an attempt"},{"line_number":15,"context_line":"to build a common library so that new and existing projects can seek benefit"},{"line_number":16,"context_line":"from it."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa7ab95a_5cf5cbea","line":13,"range":{"start_line":13,"start_character":67,"end_line":13,"end_character":75},"updated":"2016-09-02 13:16:05.000000000","message":"business","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"}],"specs/delimiter-cross-project-quota-enforcement.rst":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"f378bf88b166f5a2bd9fbefa51391010a5bd22ea","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"No blueprint, this is intended as a reference document."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Quotas are common and the same time complex piece of code that every project"},{"line_number":8,"context_line":"in OpenStack needs for proper usage and management of resources. It seems"},{"line_number":9,"context_line":"that even though it is a common requirement there is not a common entity at"},{"line_number":10,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"},{"line_number":11,"context_line":"have every project build its own quota framework (database tables, business"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1af94dfe_adcf7254","line":8,"range":{"start_line":7,"start_character":58,"end_line":8,"end_character":63},"updated":"2016-03-21 13:48:20.000000000","message":"same as on the commit message","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"No blueprint, this is intended as a reference document."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Quotas are common and the same time complex piece of code that every project"},{"line_number":8,"context_line":"in OpenStack needs for proper usage and management of resources. It seems"},{"line_number":9,"context_line":"that even though it is a common requirement there is not a common entity at"},{"line_number":10,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"},{"line_number":11,"context_line":"have every project build its own quota framework (database tables, business"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_ce6ad180","line":8,"range":{"start_line":7,"start_character":58,"end_line":8,"end_character":63},"in_reply_to":"1af94dfe_adcf7254","updated":"2016-03-28 20:19:45.000000000","message":"Done","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d7de5ee12b412232c5c56f52cfc73d8927c1c943","unresolved":false,"context_lines":[{"line_number":13,"context_line":"to build a common entity so that new and existing projects can seek benefit"},{"line_number":14,"context_line":"from it. None of the Openstack projects that enforce and manage quotas seem to be"},{"line_number":15,"context_line":"happy about the way the Quota implementation is done for respective projects and"},{"line_number":16,"context_line":"through various mailing list discussions and project meetings its clear that some"},{"line_number":17,"context_line":"effort to fix the existing implementation would definately help the project. So"},{"line_number":18,"context_line":"going one step beyond that and thinking for the entire community, having a common"},{"line_number":19,"context_line":"entity for Quota enforcement would be a great asset if done correctly and hopefully"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1af94dfe_d2989b7a","line":16,"updated":"2016-03-18 20:16:45.000000000","message":"Link here to ML?","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"to build a common entity so that new and existing projects can seek benefit"},{"line_number":14,"context_line":"from it. None of the Openstack projects that enforce and manage quotas seem to be"},{"line_number":15,"context_line":"happy about the way the Quota implementation is done for respective projects and"},{"line_number":16,"context_line":"through various mailing list discussions and project meetings its clear that some"},{"line_number":17,"context_line":"effort to fix the existing implementation would definately help the project. So"},{"line_number":18,"context_line":"going one step beyond that and thinking for the entire community, having a common"},{"line_number":19,"context_line":"entity for Quota enforcement would be a great asset if done correctly and hopefully"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_2e5b8df7","line":16,"in_reply_to":"1af94dfe_d2989b7a","updated":"2016-03-28 20:19:45.000000000","message":"Done","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d7de5ee12b412232c5c56f52cfc73d8927c1c943","unresolved":false,"context_lines":[{"line_number":28,"context_line":"quickstart on quota they might follow the same pattern, business logic and"},{"line_number":29,"context_line":"we might end up having code duplication. Code duplication is not always good"},{"line_number":30,"context_line":"and it is worst when the source has problems in which case the project"},{"line_number":31,"context_line":"following the same pattern tends to inherit the problems which source had."},{"line_number":32,"context_line":"For example the quota operations are not atomic, they have minimal concurrency"},{"line_number":33,"context_line":"related features which prevent them from behaving correctly in an highly"},{"line_number":34,"context_line":"realistic/concurrent environment. [5] has a list of few bugs which were opened"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1af94dfe_f2703742","line":31,"updated":"2016-03-18 20:16:45.000000000","message":"+1\n\nDivergence is also bad, each project copies, u end up with X copies of code that is slightly the same, but isn\u0027t to some degree and that\u0027s bad.","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"quickstart on quota they might follow the same pattern, business logic and"},{"line_number":29,"context_line":"we might end up having code duplication. Code duplication is not always good"},{"line_number":30,"context_line":"and it is worst when the source has problems in which case the project"},{"line_number":31,"context_line":"following the same pattern tends to inherit the problems which source had."},{"line_number":32,"context_line":"For example the quota operations are not atomic, they have minimal concurrency"},{"line_number":33,"context_line":"related features which prevent them from behaving correctly in an highly"},{"line_number":34,"context_line":"realistic/concurrent environment. [5] has a list of few bugs which were opened"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_b1b7fd38","line":31,"in_reply_to":"1af94dfe_f2703742","updated":"2016-03-28 20:19:45.000000000","message":"Done","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d7de5ee12b412232c5c56f52cfc73d8927c1c943","unresolved":false,"context_lines":[{"line_number":45,"context_line":"   Later Nova[2] decided to take the same approach as implemented for Cinder."},{"line_number":46,"context_line":"   Going ahead if a new project plans to avail the benefits of Nested Quota, we"},{"line_number":47,"context_line":"   don\u0027t want them to re-invent the wheel but make use of \"delimiter\" entity"},{"line_number":48,"context_line":"   and get the needed feature. This helps to save time and move quickly."},{"line_number":49,"context_line":"3. Help focus on making quota enforcement and management better by addressing"},{"line_number":50,"context_line":"   issues such as concurrency, atomicity, etc which are still prevelant in"},{"line_number":51,"context_line":"   quota module for every OpenStack project."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1af94dfe_52b92bcb","line":48,"updated":"2016-03-18 20:16:45.000000000","message":"+1","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"f378bf88b166f5a2bd9fbefa51391010a5bd22ea","unresolved":false,"context_lines":[{"line_number":35,"context_line":"as a result. So we think that it would be better to have a Quota entity which"},{"line_number":36,"context_line":"is common for all projects with the goal to :-"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"1. Zero or no code duplication across project who plan to enfore and manage"},{"line_number":39,"context_line":"   quotas. The function `quota_class_get_default` implement in Nova[3] and"},{"line_number":40,"context_line":"   the way it is implemented in Cinder is exactly the same[4]"},{"line_number":41,"context_line":"2. Help to add new features to the entity and make it available for all the"},{"line_number":42,"context_line":"   projects in Openstack who want to consume them. For example Nested Quota"},{"line_number":43,"context_line":"   feature - which allows hierarchical ownership of projects and distribution,"},{"line_number":44,"context_line":"   management of resources in a hierachy was first introduced in Cinder[1]."},{"line_number":45,"context_line":"   Later Nova[2] decided to take the same approach as implemented for Cinder."},{"line_number":46,"context_line":"   Going ahead if a new project plans to avail the benefits of Nested Quota, we"},{"line_number":47,"context_line":"   don\u0027t want them to re-invent the wheel but make use of \"delimiter\" entity"},{"line_number":48,"context_line":"   and get the needed feature. This helps to save time and move quickly."},{"line_number":49,"context_line":"3. Help focus on making quota enforcement and management better by addressing"},{"line_number":50,"context_line":"   issues such as concurrency, atomicity, etc which are still prevelant in"},{"line_number":51,"context_line":"   quota module for every OpenStack project."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Recently PaaS componenet of Openstack, Magnum which is containers as a service"},{"line_number":54,"context_line":"added the concept of resource quota. Magnum recently added the the concept of"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_5663901a","line":51,"range":{"start_line":38,"start_character":0,"end_line":51,"end_character":44},"updated":"2016-03-21 13:48:20.000000000","message":"This part doesn\u0027t looks like a problem description, It\u0027s looks like the proposed change.","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":35,"context_line":"as a result. So we think that it would be better to have a Quota entity which"},{"line_number":36,"context_line":"is common for all projects with the goal to :-"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"1. Zero or no code duplication across project who plan to enfore and manage"},{"line_number":39,"context_line":"   quotas. The function `quota_class_get_default` implement in Nova[3] and"},{"line_number":40,"context_line":"   the way it is implemented in Cinder is exactly the same[4]"},{"line_number":41,"context_line":"2. Help to add new features to the entity and make it available for all the"},{"line_number":42,"context_line":"   projects in Openstack who want to consume them. For example Nested Quota"},{"line_number":43,"context_line":"   feature - which allows hierarchical ownership of projects and distribution,"},{"line_number":44,"context_line":"   management of resources in a hierachy was first introduced in Cinder[1]."},{"line_number":45,"context_line":"   Later Nova[2] decided to take the same approach as implemented for Cinder."},{"line_number":46,"context_line":"   Going ahead if a new project plans to avail the benefits of Nested Quota, we"},{"line_number":47,"context_line":"   don\u0027t want them to re-invent the wheel but make use of \"delimiter\" entity"},{"line_number":48,"context_line":"   and get the needed feature. This helps to save time and move quickly."},{"line_number":49,"context_line":"3. Help focus on making quota enforcement and management better by addressing"},{"line_number":50,"context_line":"   issues such as concurrency, atomicity, etc which are still prevelant in"},{"line_number":51,"context_line":"   quota module for every OpenStack project."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Recently PaaS componenet of Openstack, Magnum which is containers as a service"},{"line_number":54,"context_line":"added the concept of resource quota. Magnum recently added the the concept of"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_911599e6","line":51,"range":{"start_line":38,"start_character":0,"end_line":51,"end_character":44},"in_reply_to":"fa0719c6_5663901a","updated":"2016-03-28 20:19:45.000000000","message":"Trying to build of summary of what to expect in the proposed change.","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d7de5ee12b412232c5c56f52cfc73d8927c1c943","unresolved":false,"context_lines":[{"line_number":50,"context_line":"   issues such as concurrency, atomicity, etc which are still prevelant in"},{"line_number":51,"context_line":"   quota module for every OpenStack project."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Recently PaaS componenet of Openstack, Magnum which is containers as a service"},{"line_number":54,"context_line":"added the concept of resource quota. Magnum recently added the the concept of"},{"line_number":55,"context_line":"quota on Bays since Bays is the resource that Magnum owns. Magnum interacts"},{"line_number":56,"context_line":"with Heat to provision resources. Heat depending on what kind of node"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1af94dfe_b2c86f56","line":53,"updated":"2016-03-18 20:16:45.000000000","message":"Is this more of an example (in a way its similar to nesting quotas, but not nesting by users, but nesting by projects... where magnum and heat both need to be parents of the child projects they take quota from); maybe a better way to describe it, but that\u0027s my initial try ;)\n\nPerhaps put under example section?\n\n  Problem example\n  ***************\n\nThat should make it appear under the problem description as a sub-heading (I think).","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"   issues such as concurrency, atomicity, etc which are still prevelant in"},{"line_number":51,"context_line":"   quota module for every OpenStack project."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Recently PaaS componenet of Openstack, Magnum which is containers as a service"},{"line_number":54,"context_line":"added the concept of resource quota. Magnum recently added the the concept of"},{"line_number":55,"context_line":"quota on Bays since Bays is the resource that Magnum owns. Magnum interacts"},{"line_number":56,"context_line":"with Heat to provision resources. Heat depending on what kind of node"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_74a553a0","line":53,"in_reply_to":"1af94dfe_b2c86f56","updated":"2016-03-28 20:19:45.000000000","message":"Sure","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"f378bf88b166f5a2bd9fbefa51391010a5bd22ea","unresolved":false,"context_lines":[{"line_number":50,"context_line":"   issues such as concurrency, atomicity, etc which are still prevelant in"},{"line_number":51,"context_line":"   quota module for every OpenStack project."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Recently PaaS componenet of Openstack, Magnum which is containers as a service"},{"line_number":54,"context_line":"added the concept of resource quota. Magnum recently added the the concept of"},{"line_number":55,"context_line":"quota on Bays since Bays is the resource that Magnum owns. Magnum interacts"},{"line_number":56,"context_line":"with Heat to provision resources. Heat depending on what kind of node"},{"line_number":57,"context_line":"abstraction is exposed will interact with respect subsystem at the IaaS"},{"line_number":58,"context_line":"layer. For now Magnum only supports VM as the node abstraction. So when"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_36c1bce5","line":55,"range":{"start_line":53,"start_character":0,"end_line":55,"end_character":58},"updated":"2016-03-21 13:48:20.000000000","message":"This part looks a bit repetitive, I believe we can improve it. Something like:\n\nRecently, Magnum (containers as a service) added the concept of quota to manage their resources like Bays.","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"   issues such as concurrency, atomicity, etc which are still prevelant in"},{"line_number":51,"context_line":"   quota module for every OpenStack project."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Recently PaaS componenet of Openstack, Magnum which is containers as a service"},{"line_number":54,"context_line":"added the concept of resource quota. Magnum recently added the the concept of"},{"line_number":55,"context_line":"quota on Bays since Bays is the resource that Magnum owns. Magnum interacts"},{"line_number":56,"context_line":"with Heat to provision resources. Heat depending on what kind of node"},{"line_number":57,"context_line":"abstraction is exposed will interact with respect subsystem at the IaaS"},{"line_number":58,"context_line":"layer. For now Magnum only supports VM as the node abstraction. So when"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_746f132b","line":55,"range":{"start_line":53,"start_character":0,"end_line":55,"end_character":58},"in_reply_to":"fa0719c6_36c1bce5","updated":"2016-03-28 20:19:45.000000000","message":"Done","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"2cc84d704d41511036f9e609666062cfd6342a78","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  a. \"Flat\" : Project namespace which is not hierarchical. This will be"},{"line_number":73,"context_line":"              the default case."},{"line_number":74,"context_line":"  b. \"Nested\" : Project namespace which is hierachical."},{"line_number":75,"context_line":"  c. \"Nested with overcommit\" : Project namespace which is hierachical"},{"line_number":76,"context_line":"                                with overcommit."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Proposed change is to introduce an *entity* in Openstack. The *entity* can be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_4a363f04","line":75,"range":{"start_line":75,"start_character":6,"end_line":75,"end_character":12},"updated":"2016-03-21 14:42:16.000000000","message":"I\u0027d prefer call them Floating","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"f378bf88b166f5a2bd9fbefa51391010a5bd22ea","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Please note the glossary used in the text below :-"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  a. \"Flat\" : Project namespace which is not hierarchical. This will be"},{"line_number":73,"context_line":"              the default case."},{"line_number":74,"context_line":"  b. \"Nested\" : Project namespace which is hierachical."},{"line_number":75,"context_line":"  c. \"Nested with overcommit\" : Project namespace which is hierachical"},{"line_number":76,"context_line":"                                with overcommit."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Proposed change is to introduce an *entity* in Openstack. The *entity* can be"},{"line_number":79,"context_line":"a new library or a new service. For now focusing on the problem that it can help"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_790e8735","line":76,"range":{"start_line":72,"start_character":0,"end_line":76,"end_character":48},"updated":"2016-03-21 13:48:20.000000000","message":"In the current quota implementation we can do overcommit in the flat infrastructure. We will keep this behavior? If yes, I suggest rephrase the a. point adding something to explain this point.","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d7de5ee12b412232c5c56f52cfc73d8927c1c943","unresolved":false,"context_lines":[{"line_number":73,"context_line":"              the default case."},{"line_number":74,"context_line":"  b. \"Nested\" : Project namespace which is hierachical."},{"line_number":75,"context_line":"  c. \"Nested with overcommit\" : Project namespace which is hierachical"},{"line_number":76,"context_line":"                                with overcommit."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Proposed change is to introduce an *entity* in Openstack. The *entity* can be"},{"line_number":79,"context_line":"a new library or a new service. For now focusing on the problem that it can help"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1af94dfe_122043f6","line":76,"updated":"2016-03-18 20:16:45.000000000","message":"Should there be a \n\n  d. Project that \u0027wraps\u0027 quota from another project(s), aka heat and magnum?","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":73,"context_line":"              the default case."},{"line_number":74,"context_line":"  b. \"Nested\" : Project namespace which is hierachical."},{"line_number":75,"context_line":"  c. \"Nested with overcommit\" : Project namespace which is hierachical"},{"line_number":76,"context_line":"                                with overcommit."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Proposed change is to introduce an *entity* in Openstack. The *entity* can be"},{"line_number":79,"context_line":"a new library or a new service. For now focusing on the problem that it can help"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_b4a88b21","line":76,"in_reply_to":"1af94dfe_122043f6","updated":"2016-03-28 20:19:45.000000000","message":"Done","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"f378bf88b166f5a2bd9fbefa51391010a5bd22ea","unresolved":false,"context_lines":[{"line_number":75,"context_line":"  c. \"Nested with overcommit\" : Project namespace which is hierachical"},{"line_number":76,"context_line":"                                with overcommit."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Proposed change is to introduce an *entity* in Openstack. The *entity* can be"},{"line_number":79,"context_line":"a new library or a new service. For now focusing on the problem that it can help"},{"line_number":80,"context_line":"solve rather than going into the library vs service debate. The main component"},{"line_number":81,"context_line":"of the entity is the Quota Engine which will either \"reserve and commit\" or"},{"line_number":82,"context_line":"\"reserve and rollback\" depending on the rate(number) and nature(serial/concurrent)"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_795cc725","line":79,"range":{"start_line":78,"start_character":0,"end_line":79,"end_character":30},"updated":"2016-03-21 13:48:20.000000000","message":"After the decision taken by the community, I suggest rephrase this part with just one option.","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"f378bf88b166f5a2bd9fbefa51391010a5bd22ea","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"A] Details of Quota Engine to enforce Quota :-"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"There are three basic objects that are tracked to provide quota"},{"line_number":88,"context_line":"enforcement, they are:"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"a. Quotas"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_996efbc7","line":87,"range":{"start_line":87,"start_character":10,"end_line":87,"end_character":29},"updated":"2016-03-21 13:48:20.000000000","message":"I\u0027m only seeing two objects...","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"A] Details of Quota Engine to enforce Quota :-"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"There are three basic objects that are tracked to provide quota"},{"line_number":88,"context_line":"enforcement, they are:"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"a. Quotas"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_1447b777","line":87,"range":{"start_line":87,"start_character":10,"end_line":87,"end_character":29},"in_reply_to":"fa0719c6_996efbc7","updated":"2016-03-28 20:19:45.000000000","message":"Done","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d7de5ee12b412232c5c56f52cfc73d8927c1c943","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Quota Engine is at the heart of Delimiter. Quota Engine provides minimal set of API\u0027s"},{"line_number":107,"context_line":"which help to provide transactional gurantees for quota operations irrespective of"},{"line_number":108,"context_line":"the projects. Any project who wants to make use of Delimiter will first create a"},{"line_number":109,"context_line":"Quota Engine object by passing in the name of the project and the set of data models"},{"line_number":110,"context_line":"that are related to Quota, QuotaClass, QuotaUsage, Reservations. The need for Reservations"},{"line_number":111,"context_line":"is under debate and we can enhance the spec depending on the need for Reservations. The"},{"line_number":112,"context_line":"Quota Engine will have set of models defined which will uniquely be able to map what"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1af94dfe_d2dedbdb","line":109,"updated":"2016-03-18 20:16:45.000000000","message":"Would they pass in the data models? Or would they just pass in the storage layer? I\u0027d almost prefer them just passing in configuration that the engine will use to create a storage layer (ideally the built-in mysql based one), but imho either config to create a default storage layer or a storage layer object itself would be ok.","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Quota Engine is at the heart of Delimiter. Quota Engine provides minimal set of API\u0027s"},{"line_number":107,"context_line":"which help to provide transactional gurantees for quota operations irrespective of"},{"line_number":108,"context_line":"the projects. Any project who wants to make use of Delimiter will first create a"},{"line_number":109,"context_line":"Quota Engine object by passing in the name of the project and the set of data models"},{"line_number":110,"context_line":"that are related to Quota, QuotaClass, QuotaUsage, Reservations. The need for Reservations"},{"line_number":111,"context_line":"is under debate and we can enhance the spec depending on the need for Reservations. The"},{"line_number":112,"context_line":"Quota Engine will have set of models defined which will uniquely be able to map what"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ba0121b8_f8a3c64d","line":109,"in_reply_to":"1af94dfe_d2dedbdb","updated":"2016-03-28 20:19:45.000000000","message":"Are you saying given a storage layer configuration say \"mysql_db\" the storage engine should be able to generate the needed models to operate upon ?\n\nIf yes need to think how will this work in case of projects who already have there well defined set of models.\n\nOr are we saying that pass in the models for the projects who already have them whereas create the models for the projects which don\u0027t have them.","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d7de5ee12b412232c5c56f52cfc73d8927c1c943","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"   def check_quota(project_id, user_id, quotaclass\u003dNone, nested_namespace\u003dNone):"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"       #1. begin_transaction()"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"       #2. query() \u003d\u003e (Quota Engine Data Abstraction Layer)"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1af94dfe_3250df31","line":147,"updated":"2016-03-18 20:16:45.000000000","message":"Unsure if transcations do much here. They don\u0027t seem to since all that is being done is a read operation.","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"   def check_quota(project_id, user_id, quotaclass\u003dNone, nested_namespace\u003dNone):"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"       #1. begin_transaction()"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"       #2. query() \u003d\u003e (Quota Engine Data Abstraction Layer)"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ba0121b8_38ad3e32","line":147,"in_reply_to":"1af94dfe_3250df31","updated":"2016-03-28 20:19:45.000000000","message":"You are right.","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d7de5ee12b412232c5c56f52cfc73d8927c1c943","unresolved":false,"context_lines":[{"line_number":156,"context_line":"   as part of a transaction. Checking quota as part of check_quota is a preliminary"},{"line_number":157,"context_line":"   step for assign_quota."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"   def assign_quota(project_id, user_id, resource_request, expire_after, nested_namespace\u003dNone):"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"       #1. begin_transaction()"},{"line_number":162,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1af94dfe_521beb80","line":159,"updated":"2016-03-18 20:16:45.000000000","message":"What will \u0027resource_request\u0027 be?","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":156,"context_line":"   as part of a transaction. Checking quota as part of check_quota is a preliminary"},{"line_number":157,"context_line":"   step for assign_quota."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"   def assign_quota(project_id, user_id, resource_request, expire_after, nested_namespace\u003dNone):"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"       #1. begin_transaction()"},{"line_number":162,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ba0121b8_5310d34e","line":159,"in_reply_to":"1af94dfe_521beb80","updated":"2016-03-28 20:19:45.000000000","message":"What all resources will be updated as part of this particular request i.e. resources like update ram from 2\u003d\u003e4 ; disk from 5\u003d\u003e8","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d7de5ee12b412232c5c56f52cfc73d8927c1c943","unresolved":false,"context_lines":[{"line_number":157,"context_line":"   step for assign_quota."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"   def assign_quota(project_id, user_id, resource_request, expire_after, nested_namespace\u003dNone):"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"       #1. begin_transaction()"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"       #2. query() \u003d\u003e (Quota Engine Data Abstraction Layer)"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1af94dfe_1206831f","line":160,"updated":"2016-03-18 20:16:45.000000000","message":"Retries and such will need to be handled in here somewhere right?","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":157,"context_line":"   step for assign_quota."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"   def assign_quota(project_id, user_id, resource_request, expire_after, nested_namespace\u003dNone):"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"       #1. begin_transaction()"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"       #2. query() \u003d\u003e (Quota Engine Data Abstraction Layer)"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ba0121b8_73afd7e3","line":160,"in_reply_to":"1af94dfe_1206831f","updated":"2016-03-28 20:19:45.000000000","message":"Done\n\nYes retry #1-#4 till the timer is expired.","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d7de5ee12b412232c5c56f52cfc73d8927c1c943","unresolved":false,"context_lines":[{"line_number":176,"context_line":"  quota_engine \u003d delimiter.QuotaEngine(project_name\u003d\"foo\","},{"line_number":177,"context_line":"                                       models\u003dlist or set of quota models provided by project)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"  # Get project Quota Details"},{"line_number":180,"context_line":"  quota_engine.check_quota(...)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"  # Consume Quota"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1af94dfe_4d086eda","line":179,"updated":"2016-03-18 20:16:45.000000000","message":"So if a project read some out of date quota details, and it tries to assign it later and that fails it will need to handle that happening right?\n\nMaybe a better example is:\n\n   gotten_quota \u003d False\n   while not gotten_quota:\n       q \u003d quota_engine.check_quota(...)\n       \u003cdo something with q result\u003e\n       gotten_quota \u003d quota_engine.assign_quota(q)\n\nBasically the above has to spin until either it can no longer do anything with q (which it should then fail) or the quota assignment works out.\n\nHaving something (provided by the engine) like the following might help.\n\n def check_and_assign_quota(self, what_to_fetch, mutation_callback):\n    while True:\n       self._start_txn()\n       q \u003d quota_engine.check_quota(what_to_fetch)\n       q \u003d mutation_callback(q)\n       if self._commit_quota(q):\n          break\n\nThen this uses a transcation to deal with the underlying quota values changing while things are underway. Something to think about... Splitting it across 2 methods basically means people have to do something similar (and how do they do it transcationally?)","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":176,"context_line":"  quota_engine \u003d delimiter.QuotaEngine(project_name\u003d\"foo\","},{"line_number":177,"context_line":"                                       models\u003dlist or set of quota models provided by project)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"  # Get project Quota Details"},{"line_number":180,"context_line":"  quota_engine.check_quota(...)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"  # Consume Quota"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ba0121b8_09b90eea","line":179,"in_reply_to":"1af94dfe_4d086eda","updated":"2016-03-28 20:19:45.000000000","message":"Internally inside quota engine \n\nassign_quota will perform\n\ntxn.start()\n1. check quota (query())\n2. assign quota (save())\ntxn.end()\n\nas part of a transation.\n\nSomething of this sort of enhancement to Quota Engines assign quota would help ?\n\n   def assign_quota(project_id, user_id, resource_request, expire_after, nested_namespace\u003dNone):\n\n       #0. Perform step #1-#4(retry) till the timer is not expired.    \n\n       #1. begin_transaction()\n\n       #2. query() \u003d\u003e (Quota Engine Data Abstraction Layer)\n\n       #3. save() \u003d\u003e (Quota Engine Data Abstraction Layer)\n\n           #3.a. If #3 does not work because of some conflict; retry\n           #3.b. If #3 leads to exhaustion of all the resources; fail the request\n               \n       #4. end_transaction()","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"2cc84d704d41511036f9e609666062cfd6342a78","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Primary assignee: vilobhmm"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Additional contributors: harlowja, nikhilk"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Work Items"},{"line_number":251,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_2aab0b1f","line":248,"range":{"start_line":248,"start_character":35,"end_line":248,"end_character":42},"updated":"2016-03-21 14:42:16.000000000","message":"nikhil-komawar and I will re-confirm this commitment either way, next week.","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5cfdd20360857a127b3931b3889f9b0dd5167c8f","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Primary assignee: vilobhmm"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Additional contributors: harlowja, nikhilk"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Work Items"},{"line_number":251,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa0719c6_ca32b6a6","line":248,"range":{"start_line":248,"start_character":35,"end_line":248,"end_character":42},"in_reply_to":"fa0719c6_2aab0b1f","updated":"2016-03-28 20:19:45.000000000","message":"Done","commit_id":"f03ada73e6cd6295689bffe1e939dd8a9f8241a2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"with X copies of code that is slightly the same, but isn\u0027t to some degree"},{"line_number":37,"context_line":"and that\u0027s bad. For example the quota operations are not atomic, they have"},{"line_number":38,"context_line":"minimal concurrency related features which prevent from behaving correctly in"},{"line_number":39,"context_line":"a highly realistic/concurrent environment. [5] has a list of few bugs which"},{"line_number":40,"context_line":"were opened as a result."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"So we think that it would be better to have a Quota entity which is common"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_89d5b7ba","line":39,"range":{"start_line":39,"start_character":43,"end_line":39,"end_character":47},"updated":"2016-04-13 20:47:22.000000000","message":"[6]","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"for all projects with the goal to :-"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"1. Zero or no code duplication across project who plan to enfore and manage"},{"line_number":46,"context_line":"   quotas. The function `quota_class_get_default` implement in Nova[3] and"},{"line_number":47,"context_line":"   the way it is implemented in Cinder is exactly the same[4]"},{"line_number":48,"context_line":"2. Help to add new features to the entity and make it available for all the"},{"line_number":49,"context_line":"   projects in Openstack who want to consume them. For example Nested Quota"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_c9fe8f37","line":46,"range":{"start_line":46,"start_character":50,"end_line":46,"end_character":59},"updated":"2016-04-13 20:47:22.000000000","message":"s/implement/implemented","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"for all projects with the goal to :-"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"1. Zero or no code duplication across project who plan to enfore and manage"},{"line_number":46,"context_line":"   quotas. The function `quota_class_get_default` implement in Nova[3] and"},{"line_number":47,"context_line":"   the way it is implemented in Cinder is exactly the same[4]"},{"line_number":48,"context_line":"2. Help to add new features to the entity and make it available for all the"},{"line_number":49,"context_line":"   projects in Openstack who want to consume them. For example Nested Quota"},{"line_number":50,"context_line":"   feature - which allows hierarchical ownership of projects and distribution,"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_e9b1cb90","line":47,"range":{"start_line":46,"start_character":11,"end_line":47,"end_character":61},"updated":"2016-04-13 20:47:22.000000000","message":"IMHO, this isn\u0027t part of the major goals of this spec. So, I suggest you to move this to the first paragraph where you describe the problem, and use it as an example.","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"1. Zero or no code duplication across project who plan to enfore and manage"},{"line_number":46,"context_line":"   quotas. The function `quota_class_get_default` implement in Nova[3] and"},{"line_number":47,"context_line":"   the way it is implemented in Cinder is exactly the same[4]"},{"line_number":48,"context_line":"2. Help to add new features to the entity and make it available for all the"},{"line_number":49,"context_line":"   projects in Openstack who want to consume them. For example Nested Quota"},{"line_number":50,"context_line":"   feature - which allows hierarchical ownership of projects and distribution,"},{"line_number":51,"context_line":"   management of resources in a hierachy was first introduced in Cinder[1]."}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_64d4c21f","line":48,"range":{"start_line":48,"start_character":3,"end_line":48,"end_character":41},"updated":"2016-04-13 20:47:22.000000000","message":"I think it would be better if you start with \"Facilitate changes in quota features\", because the addition of new features will not be the only benefit, this quota entity will also ease the process of updating a feature, for instance.","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"   don\u0027t want them to re-invent the wheel but make use of \"delimiter\" entity"},{"line_number":55,"context_line":"   and get the needed feature. This helps to save time and move quickly."},{"line_number":56,"context_line":"3. Help focus on making quota enforcement and management better by addressing"},{"line_number":57,"context_line":"   issues such as concurrency, atomicity, etc which are still prevelant in"},{"line_number":58,"context_line":"   quota module for every OpenStack project."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"A] Nested resources consumption from IaaS"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_e4cf327d","line":57,"range":{"start_line":57,"start_character":62,"end_line":57,"end_character":71},"updated":"2016-04-13 20:47:22.000000000","message":"s/prevelant/prevalent","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"Heat will invoke Nova to create instances where the containers will be eventually"},{"line_number":70,"context_line":"created. At present, Heat does not have the concept of Quota and hence Magnum"},{"line_number":71,"context_line":"has no Quota imposition on the resources it can consume from IaaS layer. We need"},{"line_number":72,"context_line":"to think about the a how the quota entity will work accross the layers i.e. from"},{"line_number":73,"context_line":"PaaS to consume resources from IaaS."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Another example would be Trove, while provisioning Trove might need resources from"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_84b47ed1","line":72,"range":{"start_line":72,"start_character":19,"end_line":72,"end_character":20},"updated":"2016-04-13 20:47:22.000000000","message":"please, remove it.","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":91,"context_line":"  d. \"Consumer\" : Project that wraps or consumes quota from other"},{"line_number":92,"context_line":"                  projects. For example Heat, Magnum, Trove."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Proposed change is to introduce an *entity* in Openstack. This *entity* wil be"},{"line_number":95,"context_line":"a new library. Please check the `Alternatives` section on why Delimiter was choosen to"},{"line_number":96,"context_line":"be a library than being a service. The main component of the entity is the Quota Engine"},{"line_number":97,"context_line":"which will either \"reserve and commit\" or \"reserve and rollback\" depending on the"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_a40d3a92","line":94,"range":{"start_line":94,"start_character":72,"end_line":94,"end_character":75},"updated":"2016-04-13 20:47:22.000000000","message":"s/wil/will","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                  projects. For example Heat, Magnum, Trove."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Proposed change is to introduce an *entity* in Openstack. This *entity* wil be"},{"line_number":95,"context_line":"a new library. Please check the `Alternatives` section on why Delimiter was choosen to"},{"line_number":96,"context_line":"be a library than being a service. The main component of the entity is the Quota Engine"},{"line_number":97,"context_line":"which will either \"reserve and commit\" or \"reserve and rollback\" depending on the"},{"line_number":98,"context_line":"rate(number) and nature(serial/concurrent) of provisioning."}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_447d46e6","line":95,"range":{"start_line":95,"start_character":76,"end_line":95,"end_character":83},"updated":"2016-04-13 20:47:22.000000000","message":"s/choosen/chosen","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":12237,"name":"Qijing Li","email":"qijing_li@symantec.com","username":"stack"},"change_message_id":"b1ef2df77d42c5c6f946caae0b16cb0261cf4d49","unresolved":false,"context_lines":[{"line_number":121,"context_line":"which help to provide transactional gurantees for quota operations irrespective of"},{"line_number":122,"context_line":"the projects. Any project who wants to make use of Delimiter will first create a"},{"line_number":123,"context_line":"Quota Engine object by passing in the name of the project and the set of data models"},{"line_number":124,"context_line":"that are related to Quota, QuotaClass, QuotaUsage, Reservations. The need for Reservations"},{"line_number":125,"context_line":"is under debate and we can enhance the spec depending on the need for Reservations. The"},{"line_number":126,"context_line":"Quota Engine will have set of models defined which will uniquely be able to map what"},{"line_number":127,"context_line":"model to use given a particular project and the data model. Newer projects adopting"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_dd77a39d","line":124,"updated":"2016-04-13 00:55:24.000000000","message":"could you elaborate on data models(Quota, QuotaClass, QuotaUsage, Reservations)? what attributes they have? what the relationships between them?","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":121,"context_line":"which help to provide transactional gurantees for quota operations irrespective of"},{"line_number":122,"context_line":"the projects. Any project who wants to make use of Delimiter will first create a"},{"line_number":123,"context_line":"Quota Engine object by passing in the name of the project and the set of data models"},{"line_number":124,"context_line":"that are related to Quota, QuotaClass, QuotaUsage, Reservations. The need for Reservations"},{"line_number":125,"context_line":"is under debate and we can enhance the spec depending on the need for Reservations. The"},{"line_number":126,"context_line":"Quota Engine will have set of models defined which will uniquely be able to map what"},{"line_number":127,"context_line":"model to use given a particular project and the data model. Newer projects adopting"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_986fc2c4","line":124,"in_reply_to":"5a18252c_dd77a39d","updated":"2016-04-13 20:47:22.000000000","message":"I agree with Qijing Li, it would be nice to see this type of details here, at least an outline.","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":125,"context_line":"is under debate and we can enhance the spec depending on the need for Reservations. The"},{"line_number":126,"context_line":"Quota Engine will have set of models defined which will uniquely be able to map what"},{"line_number":127,"context_line":"model to use given a particular project and the data model. Newer projects adopting"},{"line_number":128,"context_line":"Delimeter won\u0027t have this problem as they are use the data models exposed by Delimeter."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Quota Engine \u003d\u003d\u003e Quota Engine Data Abstraction Layer \u003d\u003d\u003e Storage Layer Backend"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_589c0ac0","line":128,"range":{"start_line":128,"start_character":42,"end_line":128,"end_character":45},"updated":"2016-04-13 20:47:22.000000000","message":"s/are/will","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a2c6098a9c9b7620e0e81e96b5489c866a9aa5b3","unresolved":false,"context_lines":[{"line_number":141,"context_line":"       #1. query() \u003d\u003e (Quota Engine Data Abstraction Layer)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"2. assign_quota(project_id, user_id, resource_request, expire_after, nested_namespace\u003dNone)"},{"line_number":144,"context_line":"   Commit or rollback quota for the specified resources depending on the availability"},{"line_number":145,"context_line":"   of the resources. Commit resource quota or resource quota rollback will be done"},{"line_number":146,"context_line":"   as part of a transaction. Checking quota as part of check_quota is a preliminary"},{"line_number":147,"context_line":"   step for assign_quota."}],"source_content_type":"text/x-rst","patch_set":8,"id":"ba0121b8_f659d55b","line":144,"updated":"2016-03-29 21:46:33.000000000","message":"This makes me think it\u0027s going to solve the same problem as Nova. commit, do stuff, rollback on failure. If we miss a rollback somewhere, the quota is out of sync.\n\nCan you explain more about how this is better than Nova\u0027s current system?","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Any project aiming to use Delimeter will create the Quota Engine like :-"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"  quota_engine \u003d delimiter.QuotaEngine(project_name\u003d\"foo\","},{"line_number":172,"context_line":"                                       models\u003dlist or set of quota models provided by project)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"  # Get project Quota Details"},{"line_number":175,"context_line":"  quota_engine.check_quota(...)"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_78ebc6b0","line":172,"range":{"start_line":171,"start_character":39,"end_line":172,"end_character":93},"updated":"2016-04-13 20:47:22.000000000","message":"As arguments to models parameter, we\u0027ll be passing a list with the resources of a project? In cinder, for example, it would be something like: in models argument, it would be something like: models\u003d[\u0027Volumes\u0027, \u0027Snapshots\u0027...]?\n\nI believe it would be better if you could give a real example, like the instantiation of delimiter in Cinder or Nova. This way, it would be more concrete and easy to understand.","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":187,"context_line":"B] Quota Engine Data Abstraction Layer :-"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Quota Engine will fetch or update data from Quota Engine Data Abstraction Layer. Quota"},{"line_number":190,"context_line":"Engine will provide a shim data layer with a set of common classes/models that wil"},{"line_number":191,"context_line":"lenforce how the data will be stored in the data layer. The Data abstraction layer"},{"line_number":192,"context_line":"will provide generic API so that any kind of backend(sql/nosql) can be used to store quota"},{"line_number":193,"context_line":"information. The default will be sql based (Mysql db) which is predominantly used by"},{"line_number":194,"context_line":"Openstack. The Data abstaction layer has a set of API\u0027s like :-"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_f81cf6c2","line":191,"range":{"start_line":190,"start_character":79,"end_line":191,"end_character":8},"updated":"2016-04-13 20:47:22.000000000","message":"s/wil lenforce/will enforce","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"2. save(project_id, user_id, modelname)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"C] Addition of New Features :-"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Addition of new features like Nested Quota, Flavor Classes, Quota by Flavor, Quota by"},{"line_number":203,"context_line":"Availability Zone, Quota by X as and when applicable for consuming projects can be made"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_98b7c285","line":200,"range":{"start_line":200,"start_character":3,"end_line":200,"end_character":28},"updated":"2016-04-13 20:47:22.000000000","message":"So far, Are there quota features that only make sense in an specific project? If so, how can we handle them?","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"d199a585f801fbd5c52c8425e29a82176b791e9a","unresolved":false,"context_lines":[{"line_number":227,"context_line":"2. Boson :"},{"line_number":228,"context_line":"Boson is distributed quota manager and IMHO was a well thought of effort to"},{"line_number":229,"context_line":"solve the problem of managing and enforcing quotas. Boson tracks quotas and"},{"line_number":230,"context_line":"usages for a service. But considering a service various issues regarding"},{"line_number":231,"context_line":"adding the complexity in Openstack deployment by introduction of a new"},{"line_number":232,"context_line":"service to manage quotas prevented it from becoming a reality."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"3. The challenges is having Delimiter as a service is the complexity of deploying"},{"line_number":235,"context_line":"a new service in the existing infrastructure; which would not help in its growth"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a18252c_9b0a1c20","line":232,"range":{"start_line":230,"start_character":22,"end_line":232,"end_character":61},"updated":"2016-04-13 20:47:22.000000000","message":"Can you, please, give more information about this? What type of complexity? How Delimiter will overcome the problems that Boson had?","commit_id":"d650d620c12ab29e7cfb074ff8aaeae4f9a314d2"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"e9e53b5e91c8ebd29cc13a92219d36b7c9988276","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Please note the glossary used in the text below :-"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"  a. \"Flat\" : Project namespace which is not hierarchical. This will be"},{"line_number":87,"context_line":"              the default case."},{"line_number":88,"context_line":"  b. \"Nested\" : Project namespace which is hierachical."},{"line_number":89,"context_line":"  c. \"Nested with overcommit\" or \"Floating\" : Project namespace which is hierachical"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a122d0e_e60aec26","line":86,"range":{"start_line":86,"start_character":2,"end_line":86,"end_character":4},"updated":"2016-05-02 19:46:35.000000000","message":"There is one more type here:\n\n\"Independent\": Irrespective of the project namespace hierarchy the quotas are assigned as individual numbers to each project (tenant).\n\nToday this exists in Glance and are asserted using config option. They are common for all projects (tenants).","commit_id":"8384774ece0ca93a17e0277c51ffea2fa131b41e"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"f5a776a4334c8f2b3c9fe72449d64b26efbe91b5","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Please note the glossary used in the text below :-"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"  a. \"Flat\" : Project namespace which is not hierarchical. This will be"},{"line_number":87,"context_line":"              the default case."},{"line_number":88,"context_line":"  b. \"Nested\" : Project namespace which is hierachical."},{"line_number":89,"context_line":"  c. \"Nested with overcommit\" or \"Floating\" : Project namespace which is hierachical"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a122d0e_25bf55d1","line":86,"range":{"start_line":86,"start_character":2,"end_line":86,"end_character":4},"in_reply_to":"1a122d0e_e60aec26","updated":"2016-05-05 00:43:46.000000000","message":"As we discussed on IRC we don\u0027t need it as of now. We can plan to include it if we need in future.","commit_id":"8384774ece0ca93a17e0277c51ffea2fa131b41e"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"e9e53b5e91c8ebd29cc13a92219d36b7c9988276","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"  a. \"Flat\" : Project namespace which is not hierarchical. This will be"},{"line_number":87,"context_line":"              the default case."},{"line_number":88,"context_line":"  b. \"Nested\" : Project namespace which is hierachical."},{"line_number":89,"context_line":"  c. \"Nested with overcommit\" or \"Floating\" : Project namespace which is hierachical"},{"line_number":90,"context_line":"                                              with overcommit."},{"line_number":91,"context_line":"  d. \"Consumer\" : Project that wraps or consumes quota from other"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a122d0e_464da098","line":88,"range":{"start_line":88,"start_character":43,"end_line":88,"end_character":55},"updated":"2016-05-02 19:46:35.000000000","message":"hierarchical.","commit_id":"8384774ece0ca93a17e0277c51ffea2fa131b41e"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"f5a776a4334c8f2b3c9fe72449d64b26efbe91b5","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"  a. \"Flat\" : Project namespace which is not hierarchical. This will be"},{"line_number":87,"context_line":"              the default case."},{"line_number":88,"context_line":"  b. \"Nested\" : Project namespace which is hierachical."},{"line_number":89,"context_line":"  c. \"Nested with overcommit\" or \"Floating\" : Project namespace which is hierachical"},{"line_number":90,"context_line":"                                              with overcommit."},{"line_number":91,"context_line":"  d. \"Consumer\" : Project that wraps or consumes quota from other"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a122d0e_85b0e9fe","line":88,"range":{"start_line":88,"start_character":43,"end_line":88,"end_character":55},"in_reply_to":"1a122d0e_464da098","updated":"2016-05-05 00:43:46.000000000","message":"Done","commit_id":"8384774ece0ca93a17e0277c51ffea2fa131b41e"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"e9e53b5e91c8ebd29cc13a92219d36b7c9988276","unresolved":false,"context_lines":[{"line_number":86,"context_line":"  a. \"Flat\" : Project namespace which is not hierarchical. This will be"},{"line_number":87,"context_line":"              the default case."},{"line_number":88,"context_line":"  b. \"Nested\" : Project namespace which is hierachical."},{"line_number":89,"context_line":"  c. \"Nested with overcommit\" or \"Floating\" : Project namespace which is hierachical"},{"line_number":90,"context_line":"                                              with overcommit."},{"line_number":91,"context_line":"  d. \"Consumer\" : Project that wraps or consumes quota from other"},{"line_number":92,"context_line":"                  projects. For example Heat, Magnum, Trove."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a122d0e_66489c8b","line":89,"range":{"start_line":89,"start_character":73,"end_line":89,"end_character":84},"updated":"2016-05-02 19:46:35.000000000","message":"hierarchical","commit_id":"8384774ece0ca93a17e0277c51ffea2fa131b41e"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"f5a776a4334c8f2b3c9fe72449d64b26efbe91b5","unresolved":false,"context_lines":[{"line_number":86,"context_line":"  a. \"Flat\" : Project namespace which is not hierarchical. This will be"},{"line_number":87,"context_line":"              the default case."},{"line_number":88,"context_line":"  b. \"Nested\" : Project namespace which is hierachical."},{"line_number":89,"context_line":"  c. \"Nested with overcommit\" or \"Floating\" : Project namespace which is hierachical"},{"line_number":90,"context_line":"                                              with overcommit."},{"line_number":91,"context_line":"  d. \"Consumer\" : Project that wraps or consumes quota from other"},{"line_number":92,"context_line":"                  projects. For example Heat, Magnum, Trove."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a122d0e_65b5cdeb","line":89,"range":{"start_line":89,"start_character":73,"end_line":89,"end_character":84},"in_reply_to":"1a122d0e_66489c8b","updated":"2016-05-05 00:43:46.000000000","message":"Done","commit_id":"8384774ece0ca93a17e0277c51ffea2fa131b41e"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"5e0ea975cbe52e9eb5f0e1383a612ea43a462ab5","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"       #4. end_transaction()"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"By default, the project/tenant namespace will be flat and not hierarchical or nested. If the"},{"line_number":199,"context_line":"project/tenant namespace or project/tenant orginization is hierarchical (nested) then logic"},{"line_number":200,"context_line":"will be added to the Quota Engine to get project/tenant hierarchy details and then fetching or"},{"line_number":201,"context_line":"updating details from the Data abstraction layer."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Any project aiming to use Delimeter will create the Quota Engine like :-"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a122d0e_77a108f7","line":201,"range":{"start_line":198,"start_character":0,"end_line":201,"end_character":49},"updated":"2016-05-04 20:47:44.000000000","message":"When we say logic will be added:\n\ndo we intend to say that the logic would be part of a different driver for with individual drivers for flat, independent, nested or floating quotas?\n\nI think the SOC at the top level would be a wise thing to do rather than a assumption of flat and lazy switch to the appropriate driver.\n\nWould like some more vetted input on this design pattern.","commit_id":"8384774ece0ca93a17e0277c51ffea2fa131b41e"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"f5a776a4334c8f2b3c9fe72449d64b26efbe91b5","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"       #4. end_transaction()"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"By default, the project/tenant namespace will be flat and not hierarchical or nested. If the"},{"line_number":199,"context_line":"project/tenant namespace or project/tenant orginization is hierarchical (nested) then logic"},{"line_number":200,"context_line":"will be added to the Quota Engine to get project/tenant hierarchy details and then fetching or"},{"line_number":201,"context_line":"updating details from the Data abstraction layer."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Any project aiming to use Delimeter will create the Quota Engine like :-"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a122d0e_a579a531","line":201,"range":{"start_line":198,"start_character":0,"end_line":201,"end_character":49},"in_reply_to":"1a122d0e_77a108f7","updated":"2016-05-05 00:43:46.000000000","message":"Need to think about this I mean do we need seperate drivers for handling different project models or can we have just one driver which understands both flat as well as nested hierarchies. Will get back.\n\nAdded as part of agenda for 05/10 meeting\n\nhttps://etherpad.openstack.org/p/quotas-wg-meeting-agenda","commit_id":"8384774ece0ca93a17e0277c51ffea2fa131b41e"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"491ae30ade0405aeb77cbf42def7b277dc678241","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Delimiter - Cross Project Quota Enforcement and Management"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"No blueprint, this is intended as a reference document."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa7ab95a_5f0e9d8c","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":9},"updated":"2016-09-02 13:16:05.000000000","message":"Where would Delimiter live ? As it is common code, perhaps it would be placed in oslo ?","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"491ae30ade0405aeb77cbf42def7b277dc678241","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"No blueprint, this is intended as a reference document."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Quotas are frequently used and the same time complex piece of code that most"},{"line_number":8,"context_line":"projects in OpenStack(Nova, Cinder, Neutron) needs for proper usage and"},{"line_number":9,"context_line":"management of resources. Any project which plans to impose restriction on"},{"line_number":10,"context_line":"resource consumption would have the need for quotas functionality in near"},{"line_number":11,"context_line":"future. So given that even though quota is a common requirement there is not a"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa7ab95a_7c21af4c","line":8,"range":{"start_line":7,"start_character":72,"end_line":8,"end_character":21},"updated":"2016-09-02 13:16:05.000000000","message":"OpenStack has 6 core services and N services in the Big Tent. I would not say Nova, Cinder and Neutron are \"most\" of the projects in OpenStack. I suggest using \"some\" or \"various\"","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"491ae30ade0405aeb77cbf42def7b277dc678241","unresolved":false,"context_lines":[{"line_number":29,"context_line":"it\u0027s surprising to see that even the code pattern used are common for various"},{"line_number":30,"context_line":"reasons[3][4]. It won\u0027t be surprising that if a new project want to get a"},{"line_number":31,"context_line":"quickstart on quota they might follow the same pattern, business logic and"},{"line_number":32,"context_line":"we might end up having code duplication. Code duplication is not always good"},{"line_number":33,"context_line":"and it is worst when the source has problems in which case the project"},{"line_number":34,"context_line":"following the same pattern tends to inherit the problems which source had."},{"line_number":35,"context_line":"Divergence is also bad, each project copies, and then the community ends up"},{"line_number":36,"context_line":"with X copies of code that is slightly the same, but isn\u0027t to some degree"},{"line_number":37,"context_line":"and that\u0027s bad. For example the quota operations are not atomic, they have"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa7ab95a_3cb3a79b","line":34,"range":{"start_line":32,"start_character":41,"end_line":34,"end_character":74},"updated":"2016-09-02 13:16:05.000000000","message":"this would still happen in a common quota approach where the code had problems too","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"491ae30ade0405aeb77cbf42def7b277dc678241","unresolved":false,"context_lines":[{"line_number":57,"context_line":"   issues such as concurrency, atomicity, etc which are still prevalant in"},{"line_number":58,"context_line":"   quota module for every OpenStack project."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"A] Nested resources consumption from IaaS"},{"line_number":61,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Recently, Magnum (containers as a service) added the concept of quota to manage"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa7ab95a_df4f0d32","line":60,"range":{"start_line":60,"start_character":0,"end_line":60,"end_character":2},"updated":"2016-09-02 13:16:05.000000000","message":"Why enumerate this section with A] if there is no B] ?","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"045d375f00f80199851c6b2fb2adcf0d970f6e48","unresolved":false,"context_lines":[{"line_number":69,"context_line":"Heat will invoke Nova to create instances where the containers will be eventually"},{"line_number":70,"context_line":"created. At present, Heat does not have the concept of Quota and hence Magnum"},{"line_number":71,"context_line":"has no Quota imposition on the resources it can consume from IaaS layer. We need"},{"line_number":72,"context_line":"to think about the a how the quota entity will work accross the layers i.e. from"},{"line_number":73,"context_line":"PaaS to consume resources from IaaS."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Another example would be Trove, while provisioning Trove might need resources from"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_6127a764","line":72,"updated":"2016-05-10 16:54:09.000000000","message":"remove \u0027the a\u0027?","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"491ae30ade0405aeb77cbf42def7b277dc678241","unresolved":false,"context_lines":[{"line_number":72,"context_line":"to think about the a how the quota entity will work accross the layers i.e. from"},{"line_number":73,"context_line":"PaaS to consume resources from IaaS."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Another example would be Trove, while provisioning Trove might need resources from"},{"line_number":76,"context_line":"Nova, Cinder, Neutron. Right now there is no common infrastructure which will"},{"line_number":77,"context_line":"provide a lookup or guarantee that a asked set of resources from Trove will be"},{"line_number":78,"context_line":"satisfied by the underlying IaaS components (Nova, Cinder, Neutron). The request"},{"line_number":79,"context_line":"will fail if there are not enough available resources."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Proposed change"},{"line_number":82,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa7ab95a_df662dba","line":79,"range":{"start_line":75,"start_character":0,"end_line":79,"end_character":54},"updated":"2016-09-02 13:16:05.000000000","message":"Why does not Trove ask the services for the free quota before performing the operation?","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"601b561c21ec121318ac7cddc901093193f121f3","unresolved":false,"context_lines":[{"line_number":81,"context_line":"Proposed change"},{"line_number":82,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Please note the glossary used in the text below :-"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"  a. \"Flat\" : Project namespace which is not hierarchical. This will be"},{"line_number":87,"context_line":"              the default case."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_77fd36b0","line":84,"range":{"start_line":84,"start_character":0,"end_line":84,"end_character":47},"updated":"2016-05-11 22:07:28.000000000","message":"I think it would be good to define the \"Independent\" quotas as per my earlier comment. If we do not intend to support them, at this point, we can explain so. And let that part of the future work when someone is really interested in working on it. \n\nBasically, I do not want an important use case to be missed as a part of this spec.","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"045d375f00f80199851c6b2fb2adcf0d970f6e48","unresolved":false,"context_lines":[{"line_number":86,"context_line":"  a. \"Flat\" : Project namespace which is not hierarchical. This will be"},{"line_number":87,"context_line":"              the default case."},{"line_number":88,"context_line":"  b. \"Nested\" : Project namespace which is hierarchical."},{"line_number":89,"context_line":"  c. \"Nested with overcommit\" or \"Floating\" : Project namespace which is hierarchical"},{"line_number":90,"context_line":"                                              with overcommit."},{"line_number":91,"context_line":"  d. \"Consumer\" : Project that wraps or consumes quota from other"},{"line_number":92,"context_line":"                  projects. For example Heat, Magnum, Trove."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_a1e86fe3","line":89,"updated":"2016-05-10 16:54:09.000000000","message":"It would be nice if there is a definition about \u0027overcommit\u0027 and \u0027floating\u0027 at here.","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"601b561c21ec121318ac7cddc901093193f121f3","unresolved":false,"context_lines":[{"line_number":86,"context_line":"  a. \"Flat\" : Project namespace which is not hierarchical. This will be"},{"line_number":87,"context_line":"              the default case."},{"line_number":88,"context_line":"  b. \"Nested\" : Project namespace which is hierarchical."},{"line_number":89,"context_line":"  c. \"Nested with overcommit\" or \"Floating\" : Project namespace which is hierarchical"},{"line_number":90,"context_line":"                                              with overcommit."},{"line_number":91,"context_line":"  d. \"Consumer\" : Project that wraps or consumes quota from other"},{"line_number":92,"context_line":"                  projects. For example Heat, Magnum, Trove."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_4c2345bd","line":89,"in_reply_to":"dab17558_a1e86fe3","updated":"2016-05-11 22:07:28.000000000","message":"I think we can have a line about overcommit.\n\nFloating is just the name given to this description.","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"045d375f00f80199851c6b2fb2adcf0d970f6e48","unresolved":false,"context_lines":[{"line_number":99,"context_line":"consumption and enforce quotas. Few key aspects of Delimiter are :-"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"a. Delimiter will be a new Library and not a Service."},{"line_number":102,"context_line":"b. Delimiter\u0027s role will be to impose limits on resource consumption."},{"line_number":103,"context_line":"c. Delimiter will not be responsible for rate limiting."},{"line_number":104,"context_line":"d. Delimiter will not maintain data for the resources. Respective projects will take"},{"line_number":105,"context_line":"   care of keeping, maintaining data for the resources."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_a1cfcf7d","line":102,"updated":"2016-05-10 16:54:09.000000000","message":"Should we be careful to use the \u0027quota\u0027 and \u0027limit\u0027? Since in openstack, some projects are using \u0027quota\u0027 and some other projects are suing \u0027limit\u0027.","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"601b561c21ec121318ac7cddc901093193f121f3","unresolved":false,"context_lines":[{"line_number":99,"context_line":"consumption and enforce quotas. Few key aspects of Delimiter are :-"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"a. Delimiter will be a new Library and not a Service."},{"line_number":102,"context_line":"b. Delimiter\u0027s role will be to impose limits on resource consumption."},{"line_number":103,"context_line":"c. Delimiter will not be responsible for rate limiting."},{"line_number":104,"context_line":"d. Delimiter will not maintain data for the resources. Respective projects will take"},{"line_number":105,"context_line":"   care of keeping, maintaining data for the resources."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_4c0a2527","line":102,"in_reply_to":"dab17558_a1cfcf7d","updated":"2016-05-11 22:07:28.000000000","message":"Good point. I think we need to define quota.","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"491ae30ade0405aeb77cbf42def7b277dc678241","unresolved":false,"context_lines":[{"line_number":114,"context_line":"   consideration whether the project is a Flat or Nested and will make the calculations"},{"line_number":115,"context_line":"   of allocated, available resources. Nested means project namespace is hierarchical"},{"line_number":116,"context_line":"   and Flat means project namespace is not hierarchical."},{"line_number":117,"context_line":"h. Delimiter will consolidate utility code for quota related issues at common place. For"},{"line_number":118,"context_line":"   example X, Y, Z companies might have different scripts to fix quota issues. Delimiter"},{"line_number":119,"context_line":"   can be a single place for it and the scripts can be more generalized to suit"},{"line_number":120,"context_line":"   everyones needs."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"A] Details of Quota Engine to enforce Quota :-"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa7ab95a_7f96014d","line":120,"range":{"start_line":117,"start_character":3,"end_line":120,"end_character":19},"updated":"2016-09-02 13:16:05.000000000","message":"Having a common place for scripts to fix quota issues in database seems a different purpose than having a common python library to control quota","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"5113c7a06a629915890b826ef06df00a361f2fd6","unresolved":false,"context_lines":[{"line_number":157,"context_line":"nova.instances. So \"no reservations\" and hence Delimiter won\u0027t rely on \"cached tables\""},{"line_number":158,"context_line":"to enforce quotas."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Quota Engine will provide following interfaces. This interfaces are based of the"},{"line_number":161,"context_line":"discussion we had at the Newton Design Summit Session [8]."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"1. check_quota(project_id, resource_models, quota_usage, quota_limits, generation_id)"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_022ad8da","line":160,"updated":"2016-05-11 06:31:53.000000000","message":"With this library, does the individual projects using delimiter eventually get rid of their quota tables? Or will there be a common way of having those individual tables? Wondering since various projects may have implemented their own ways of quota impositions - how would you intend to take a uniform approach here.","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"5113c7a06a629915890b826ef06df00a361f2fd6","unresolved":false,"context_lines":[{"line_number":181,"context_line":"   a project matches or there are not enough resource available to serve the incoming request,"},{"line_number":182,"context_line":"   in which case a failure will returned as part of consume_quota. Since generation_id"},{"line_number":183,"context_line":"   guarantees a point in time view of the resource consumption this will guarantee"},{"line_number":184,"context_line":"   serialization of resource requests."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"By default, the project/tenant namespace will be flat and not hierarchical or nested. If the"},{"line_number":187,"context_line":"project/tenant namespace or project/tenant orginization is hierarchical (nested) then logic"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_0262d809","line":184,"updated":"2016-05-11 06:31:53.000000000","message":"The concept of generation_id is clear however, I am failing to understand from the above text on how you intend to store the generation_id against each quota? Can you please elaborate on that?","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"491ae30ade0405aeb77cbf42def7b277dc678241","unresolved":false,"context_lines":[{"line_number":244,"context_line":"it\u0027s in a library or a separate service."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"2. Boson :"},{"line_number":247,"context_line":"Boson is distributed quota manager and IMHO was a well thought of effort to"},{"line_number":248,"context_line":"solve the problem of managing and enforcing quotas. Boson tracks quotas and"},{"line_number":249,"context_line":"usages for a service. But considering a service various issues regarding"},{"line_number":250,"context_line":"adding the complexity in Openstack deployment by introduction of a new"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa7ab95a_bfc16931","line":247,"range":{"start_line":247,"start_character":39,"end_line":247,"end_character":43},"updated":"2016-09-02 13:16:05.000000000","message":"avoid acronyms in specs","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"491ae30ade0405aeb77cbf42def7b277dc678241","unresolved":false,"context_lines":[{"line_number":271,"context_line":""},{"line_number":272,"context_line":"Work Items"},{"line_number":273,"context_line":"----------"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"Dependencies"},{"line_number":277,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa7ab95a_7f40c1a5","line":274,"updated":"2016-09-02 13:16:05.000000000","message":"There should be work items here, otherwise there is no plan to develop and adopt this library in OpenStack services.","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"491ae30ade0405aeb77cbf42def7b277dc678241","unresolved":false,"context_lines":[{"line_number":281,"context_line":"References"},{"line_number":282,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"[1] Mailing List - Discussin Quota"},{"line_number":285,"context_line":"http://osdir.com/ml/openstack-dev/2016-03/msg01582.html"},{"line_number":286,"context_line":"http://lists.openstack.org/pipermail/openstack-dev/2014-October/047735.html"},{"line_number":287,"context_line":"http://lists.openstack.org/pipermail/openstack-dev/2015-December/082266.html"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa7ab95a_7ff9a17f","line":284,"range":{"start_line":284,"start_character":19,"end_line":284,"end_character":28},"updated":"2016-09-02 13:16:05.000000000","message":"Discussing","commit_id":"215ed500858190851b89e6fdbed7d1b07fa5fb8d"}],"specs/quota-library.rst":[{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"9db2d790f66aa66d4907c0660298c2fcfc62fdd9","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"No blueprint, this is intended as a reference document."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Quotas are common and the same time complex peice of code that every project"},{"line_number":8,"context_line":"in OpenStack needs for proper usage and management of resources. It seems"},{"line_number":9,"context_line":"that even though it is a common requirement there is not a common library at"},{"line_number":10,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_b25dd34a","line":7,"range":{"start_line":7,"start_character":44,"end_line":7,"end_character":49},"updated":"2016-02-25 03:24:29.000000000","message":"piece","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"53d612406210f9b4d449da2be097bc94a44cb11a","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"No blueprint, this is intended as a reference document."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Quotas are common and the same time complex peice of code that every project"},{"line_number":8,"context_line":"in OpenStack needs for proper usage and management of resources. It seems"},{"line_number":9,"context_line":"that even though it is a common requirement there is not a common library at"},{"line_number":10,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_b801c83a","line":7,"range":{"start_line":7,"start_character":44,"end_line":7,"end_character":49},"in_reply_to":"bae84128_b25dd34a","updated":"2016-02-29 09:21:30.000000000","message":"Done","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"9db2d790f66aa66d4907c0660298c2fcfc62fdd9","unresolved":false,"context_lines":[{"line_number":10,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"},{"line_number":11,"context_line":"have every project build its own quota framework (database tables, businees"},{"line_number":12,"context_line":"logic, etc) needed to enforce and manage quotas. Hence, this is an attempt"},{"line_number":13,"context_line":"to build a central library so that new and existing projects can seek benefit"},{"line_number":14,"context_line":"from it."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_b224b3c6","line":13,"range":{"start_line":13,"start_character":11,"end_line":13,"end_character":18},"updated":"2016-02-25 03:24:29.000000000","message":"common","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"53d612406210f9b4d449da2be097bc94a44cb11a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"},{"line_number":11,"context_line":"have every project build its own quota framework (database tables, businees"},{"line_number":12,"context_line":"logic, etc) needed to enforce and manage quotas. Hence, this is an attempt"},{"line_number":13,"context_line":"to build a central library so that new and existing projects can seek benefit"},{"line_number":14,"context_line":"from it."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_18fb9448","line":13,"range":{"start_line":13,"start_character":11,"end_line":13,"end_character":18},"in_reply_to":"bae84128_b224b3c6","updated":"2016-02-29 09:21:30.000000000","message":"Done","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"83cfa98074cf262f54d7f2e3820d8f83a563667b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As mentioned above Quota are comman across various projects in Openstack and"},{"line_number":20,"context_line":"its surprising to see that even the code pattern used are comman for various"},{"line_number":21,"context_line":"reasons[3][4]. It won\u0027t be surprising that if a new project want to get a"},{"line_number":22,"context_line":"quickstart on quota they might end of following the same pattern, business"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_07dc4617","line":19,"updated":"2016-02-25 01:02:35.000000000","message":"comman -\u003e common","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"53d612406210f9b4d449da2be097bc94a44cb11a","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As mentioned above Quota are comman across various projects in Openstack and"},{"line_number":20,"context_line":"its surprising to see that even the code pattern used are comman for various"},{"line_number":21,"context_line":"reasons[3][4]. It won\u0027t be surprising that if a new project want to get a"},{"line_number":22,"context_line":"quickstart on quota they might end of following the same pattern, business"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_189274f6","line":19,"in_reply_to":"bae84128_07dc4617","updated":"2016-02-29 09:21:30.000000000","message":"Done","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"9db2d790f66aa66d4907c0660298c2fcfc62fdd9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As mentioned above Quota are comman across various projects in Openstack and"},{"line_number":20,"context_line":"its surprising to see that even the code pattern used are comman for various"},{"line_number":21,"context_line":"reasons[3][4]. It won\u0027t be surprising that if a new project want to get a"},{"line_number":22,"context_line":"quickstart on quota they might end of following the same pattern, business"},{"line_number":23,"context_line":"logic and we might end up having code duplication. Code duplication is not"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_121c7f76","line":20,"range":{"start_line":20,"start_character":58,"end_line":20,"end_character":64},"updated":"2016-02-25 03:24:29.000000000","message":"common","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"9db2d790f66aa66d4907c0660298c2fcfc62fdd9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As mentioned above Quota are comman across various projects in Openstack and"},{"line_number":20,"context_line":"its surprising to see that even the code pattern used are comman for various"},{"line_number":21,"context_line":"reasons[3][4]. It won\u0027t be surprising that if a new project want to get a"},{"line_number":22,"context_line":"quickstart on quota they might end of following the same pattern, business"},{"line_number":23,"context_line":"logic and we might end up having code duplication. Code duplication is not"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_d22b3793","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":3},"updated":"2016-02-25 03:24:29.000000000","message":"it\u0027s","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"53d612406210f9b4d449da2be097bc94a44cb11a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As mentioned above Quota are comman across various projects in Openstack and"},{"line_number":20,"context_line":"its surprising to see that even the code pattern used are comman for various"},{"line_number":21,"context_line":"reasons[3][4]. It won\u0027t be surprising that if a new project want to get a"},{"line_number":22,"context_line":"quickstart on quota they might end of following the same pattern, business"},{"line_number":23,"context_line":"logic and we might end up having code duplication. Code duplication is not"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_f88eb0ce","line":20,"range":{"start_line":20,"start_character":58,"end_line":20,"end_character":64},"in_reply_to":"bae84128_121c7f76","updated":"2016-02-29 09:21:30.000000000","message":"Done","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"53d612406210f9b4d449da2be097bc94a44cb11a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As mentioned above Quota are comman across various projects in Openstack and"},{"line_number":20,"context_line":"its surprising to see that even the code pattern used are comman for various"},{"line_number":21,"context_line":"reasons[3][4]. It won\u0027t be surprising that if a new project want to get a"},{"line_number":22,"context_line":"quickstart on quota they might end of following the same pattern, business"},{"line_number":23,"context_line":"logic and we might end up having code duplication. Code duplication is not"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_58bebc65","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":3},"in_reply_to":"bae84128_d22b3793","updated":"2016-02-29 09:21:30.000000000","message":"Done","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"9db2d790f66aa66d4907c0660298c2fcfc62fdd9","unresolved":false,"context_lines":[{"line_number":19,"context_line":"As mentioned above Quota are comman across various projects in Openstack and"},{"line_number":20,"context_line":"its surprising to see that even the code pattern used are comman for various"},{"line_number":21,"context_line":"reasons[3][4]. It won\u0027t be surprising that if a new project want to get a"},{"line_number":22,"context_line":"quickstart on quota they might end of following the same pattern, business"},{"line_number":23,"context_line":"logic and we might end up having code duplication. Code duplication is not"},{"line_number":24,"context_line":"always good and it is worst when the source has problems in which case the"},{"line_number":25,"context_line":"project following the same pattern tends to inherit the problems which source"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_4d45cc15","line":22,"range":{"start_line":22,"start_character":31,"end_line":22,"end_character":47},"updated":"2016-02-25 03:24:29.000000000","message":"follow","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"53d612406210f9b4d449da2be097bc94a44cb11a","unresolved":false,"context_lines":[{"line_number":19,"context_line":"As mentioned above Quota are comman across various projects in Openstack and"},{"line_number":20,"context_line":"its surprising to see that even the code pattern used are comman for various"},{"line_number":21,"context_line":"reasons[3][4]. It won\u0027t be surprising that if a new project want to get a"},{"line_number":22,"context_line":"quickstart on quota they might end of following the same pattern, business"},{"line_number":23,"context_line":"logic and we might end up having code duplication. Code duplication is not"},{"line_number":24,"context_line":"always good and it is worst when the source has problems in which case the"},{"line_number":25,"context_line":"project following the same pattern tends to inherit the problems which source"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_584cfc9d","line":22,"range":{"start_line":22,"start_character":31,"end_line":22,"end_character":47},"in_reply_to":"bae84128_4d45cc15","updated":"2016-02-29 09:21:30.000000000","message":"Done","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"9db2d790f66aa66d4907c0660298c2fcfc62fdd9","unresolved":false,"context_lines":[{"line_number":24,"context_line":"always good and it is worst when the source has problems in which case the"},{"line_number":25,"context_line":"project following the same pattern tends to inherit the problems which source"},{"line_number":26,"context_line":"had. For example the quota operations are not atomic, they have minimal"},{"line_number":27,"context_line":"concurrency related features which prevent to behave them wrongly in an highly"},{"line_number":28,"context_line":"realistic/concurrent envoirnment. [5] has a list of few bugs which were opened"},{"line_number":29,"context_line":"as a result. So we think that it would be better to have a Quota library which"},{"line_number":30,"context_line":"is common for all projects with the goal to :-"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_0dd74424","line":27,"range":{"start_line":27,"start_character":43,"end_line":27,"end_character":65},"updated":"2016-02-25 03:24:29.000000000","message":"them from behaving correctly","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"53d612406210f9b4d449da2be097bc94a44cb11a","unresolved":false,"context_lines":[{"line_number":24,"context_line":"always good and it is worst when the source has problems in which case the"},{"line_number":25,"context_line":"project following the same pattern tends to inherit the problems which source"},{"line_number":26,"context_line":"had. For example the quota operations are not atomic, they have minimal"},{"line_number":27,"context_line":"concurrency related features which prevent to behave them wrongly in an highly"},{"line_number":28,"context_line":"realistic/concurrent envoirnment. [5] has a list of few bugs which were opened"},{"line_number":29,"context_line":"as a result. So we think that it would be better to have a Quota library which"},{"line_number":30,"context_line":"is common for all projects with the goal to :-"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_78474077","line":27,"range":{"start_line":27,"start_character":43,"end_line":27,"end_character":65},"in_reply_to":"bae84128_0dd74424","updated":"2016-02-29 09:21:30.000000000","message":"Done","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"9db2d790f66aa66d4907c0660298c2fcfc62fdd9","unresolved":false,"context_lines":[{"line_number":25,"context_line":"project following the same pattern tends to inherit the problems which source"},{"line_number":26,"context_line":"had. For example the quota operations are not atomic, they have minimal"},{"line_number":27,"context_line":"concurrency related features which prevent to behave them wrongly in an highly"},{"line_number":28,"context_line":"realistic/concurrent envoirnment. [5] has a list of few bugs which were opened"},{"line_number":29,"context_line":"as a result. So we think that it would be better to have a Quota library which"},{"line_number":30,"context_line":"is common for all projects with the goal to :-"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_6ddc1047","line":28,"range":{"start_line":28,"start_character":21,"end_line":28,"end_character":32},"updated":"2016-02-25 03:24:29.000000000","message":"environment","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"53d612406210f9b4d449da2be097bc94a44cb11a","unresolved":false,"context_lines":[{"line_number":25,"context_line":"project following the same pattern tends to inherit the problems which source"},{"line_number":26,"context_line":"had. For example the quota operations are not atomic, they have minimal"},{"line_number":27,"context_line":"concurrency related features which prevent to behave them wrongly in an highly"},{"line_number":28,"context_line":"realistic/concurrent envoirnment. [5] has a list of few bugs which were opened"},{"line_number":29,"context_line":"as a result. So we think that it would be better to have a Quota library which"},{"line_number":30,"context_line":"is common for all projects with the goal to :-"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_d8600c04","line":28,"range":{"start_line":28,"start_character":21,"end_line":28,"end_character":32},"in_reply_to":"bae84128_6ddc1047","updated":"2016-02-29 09:21:30.000000000","message":"Done","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"3507453e0cbd3d5402f3be14122e0c1fdb910cee","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Primary assignee: vilobhmm"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Additional contributors: harlowja"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Work Items"},{"line_number":67,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_c6c70463","line":64,"range":{"start_line":64,"start_character":0,"end_line":64,"end_character":10},"updated":"2016-02-24 23:43:30.000000000","message":"I would like to be added here.","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5d661107d42c2aaaa85036c2f843a4c8106d6047","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Primary assignee: vilobhmm"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Additional contributors: harlowja"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Work Items"},{"line_number":67,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_e29de85a","line":64,"range":{"start_line":64,"start_character":0,"end_line":64,"end_character":10},"in_reply_to":"bae84128_c6c70463","updated":"2016-02-25 17:18:28.000000000","message":"I would like to be added as well","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5d661107d42c2aaaa85036c2f843a4c8106d6047","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"* https://bugs.launchpad.net/cinder/+bug/1307487"},{"line_number":108,"context_line":"* https://bugs.launchpad.net/cinder/+bug/1518513"},{"line_number":109,"context_line":"* https://bugs.launchpad.net/cinder/+bug/1278339"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"History"},{"line_number":112,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_a293e04e","line":109,"updated":"2016-02-25 17:18:28.000000000","message":"Some additional Cinder bugs that we should consider when moving forward:\nhttps://bugs.launchpad.net/cinder/+bug/1531502\nhttps://bugs.launchpad.net/cinder/+bug/1537189\n\nWe\u0027ve tried to address these with  https://review.openstack.org/#/c/274825/ and https://review.openstack.org/#/c/279304/ recently","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"53d612406210f9b4d449da2be097bc94a44cb11a","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"* https://bugs.launchpad.net/cinder/+bug/1307487"},{"line_number":108,"context_line":"* https://bugs.launchpad.net/cinder/+bug/1518513"},{"line_number":109,"context_line":"* https://bugs.launchpad.net/cinder/+bug/1278339"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"History"},{"line_number":112,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_ecfa7274","line":109,"in_reply_to":"9aed3d3a_a293e04e","updated":"2016-02-29 09:21:30.000000000","message":"Sure.","commit_id":"e4a8863a950d1d454982139253e46e463ca335cc"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"bab515957fdba4d7620c2171c365663d5fd4ea40","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Quotas are common and the same time complex piece of code that every project"},{"line_number":8,"context_line":"in OpenStack needs for proper usage and management of resources. It seems"},{"line_number":9,"context_line":"that even though it is a common requirement there is not a common library at"},{"line_number":10,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"},{"line_number":11,"context_line":"have every project build its own quota framework (database tables, businees"},{"line_number":12,"context_line":"logic, etc) needed to enforce and manage quotas. Hence, this is an attempt"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_3f81ecc3","line":9,"updated":"2016-02-29 22:32:48.000000000","message":"library -\u003e entity (until we determine what this thing will be).","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8ffd11cf7cbff13552d901fa02db0ea578af3fe7","unresolved":false,"context_lines":[{"line_number":8,"context_line":"in OpenStack needs for proper usage and management of resources. It seems"},{"line_number":9,"context_line":"that even though it is a common requirement there is not a common library at"},{"line_number":10,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"},{"line_number":11,"context_line":"have every project build its own quota framework (database tables, businees"},{"line_number":12,"context_line":"logic, etc) needed to enforce and manage quotas. Hence, this is an attempt"},{"line_number":13,"context_line":"to build a common library so that new and existing projects can seek benefit"},{"line_number":14,"context_line":"from it."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_17a336b3","line":11,"range":{"start_line":11,"start_character":67,"end_line":11,"end_character":75},"updated":"2016-02-29 20:35:15.000000000","message":"s/businees/business/","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"bab515957fdba4d7620c2171c365663d5fd4ea40","unresolved":false,"context_lines":[{"line_number":10,"context_line":"present which enforces quota where as the approach taken by OpenStack is to"},{"line_number":11,"context_line":"have every project build its own quota framework (database tables, businees"},{"line_number":12,"context_line":"logic, etc) needed to enforce and manage quotas. Hence, this is an attempt"},{"line_number":13,"context_line":"to build a common library so that new and existing projects can seek benefit"},{"line_number":14,"context_line":"from it."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_9f72b80f","line":13,"updated":"2016-02-29 22:32:48.000000000","message":"Same.","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"bab515957fdba4d7620c2171c365663d5fd4ea40","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"1. Zero or no code duplication across project who plan to enfore and manage"},{"line_number":33,"context_line":"   quotas. The function `quota_class_get_default` implement in Nova[3] and"},{"line_number":34,"context_line":"   the way it is implemented in Cinder is exactly the same[4]"},{"line_number":35,"context_line":"2. Help to add new features to the library and make it available for all the"},{"line_number":36,"context_line":"   projects in Openstack who want to consume them. For example Nested Quota"},{"line_number":37,"context_line":"   feature - which allows hierarchical ownership of projects and distribution,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_ffc82424","line":34,"updated":"2016-02-29 22:32:48.000000000","message":"Is it exactly the same, there has to be smaller differences right?","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8ffd11cf7cbff13552d901fa02db0ea578af3fe7","unresolved":false,"context_lines":[{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Proposed change is to introduce an *entity* in Openstack. The *entity*"},{"line_number":52,"context_line":"can be a new library or a new service. For now focusssing on the problem"},{"line_number":53,"context_line":"that it can help solve rather than going into the library vs service"},{"line_number":54,"context_line":"debate. The main component of the entity is the Quota Enforcement Engine"},{"line_number":55,"context_line":"which will either \"reserve and commit\" or \"reserve and rollback\" depending"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_977e2617","line":52,"updated":"2016-02-29 20:35:15.000000000","message":"s/focusssing/focusing/","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":17254,"name":"Nina Goradia","email":"ninag@us.ibm.com","username":"ninag"},"change_message_id":"fa9fe712d7f8a1f3d9b87f0bf9722a5d8e2713a9","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"a. Quotas"},{"line_number":64,"context_line":"Bind an abstract resource with a numerical limit on the usage of that"},{"line_number":65,"context_line":"resource. Provides support for default quotas, per-class quotas, per-tenant"},{"line_number":66,"context_line":"quotas, etc. A default quota is overridden by a per-class quota, which in"},{"line_number":67,"context_line":"turn is overridden by a per-tenant quota. None of the resource parameters"},{"line_number":68,"context_line":"are relevant for a quota, as a Quota object merely binds a limit with a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7af24918_2cb971ea","line":65,"range":{"start_line":65,"start_character":69,"end_line":65,"end_character":75},"updated":"2016-03-01 15:14:39.000000000","message":"Might want to replace tenant with project throughout. Keystone has depracated tenant in favor of project.","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"4f901c741179e7cc020f9744891aecf679dc983f","unresolved":false,"context_lines":[{"line_number":63,"context_line":"a. Quotas"},{"line_number":64,"context_line":"Bind an abstract resource with a numerical limit on the usage of that"},{"line_number":65,"context_line":"resource. Provides support for default quotas, per-class quotas, per-tenant"},{"line_number":66,"context_line":"quotas, etc. A default quota is overridden by a per-class quota, which in"},{"line_number":67,"context_line":"turn is overridden by a per-tenant quota. None of the resource parameters"},{"line_number":68,"context_line":"are relevant for a quota, as a Quota object merely binds a limit with a"},{"line_number":69,"context_line":"resource."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7af24918_3d10d658","line":66,"updated":"2016-03-03 16:24:12.000000000","message":"Nova also has a concept of per-user quotas.","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":17254,"name":"Nina Goradia","email":"ninag@us.ibm.com","username":"ninag"},"change_message_id":"fa9fe712d7f8a1f3d9b87f0bf9722a5d8e2713a9","unresolved":false,"context_lines":[{"line_number":64,"context_line":"Bind an abstract resource with a numerical limit on the usage of that"},{"line_number":65,"context_line":"resource. Provides support for default quotas, per-class quotas, per-tenant"},{"line_number":66,"context_line":"quotas, etc. A default quota is overridden by a per-class quota, which in"},{"line_number":67,"context_line":"turn is overridden by a per-tenant quota. None of the resource parameters"},{"line_number":68,"context_line":"are relevant for a quota, as a Quota object merely binds a limit with a"},{"line_number":69,"context_line":"resource."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7af24918_d24ea6c0","line":67,"range":{"start_line":67,"start_character":41,"end_line":67,"end_character":42},"updated":"2016-03-01 15:14:39.000000000","message":"The per-class quota needs to be amplified. If this is for a class of resources, how does the quota engine know which class the requestor (project, user) should use? Is the mapping part of the quota engine data source?","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"bab515957fdba4d7620c2171c365663d5fd4ea40","unresolved":false,"context_lines":[{"line_number":69,"context_line":"resource."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"b. Usages"},{"line_number":72,"context_line":"Bind a concrete resource (a resource with all required parameters) with"},{"line_number":73,"context_line":"the current in-use count of that resource. Issues like synchronization,"},{"line_number":74,"context_line":"will be handled by Delimiter. The Usage object also keeps track of resources"},{"line_number":75,"context_line":"that are reserved; the sum of the in-use count and the current reservation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_3a1e1a5f","line":72,"updated":"2016-02-29 22:32:48.000000000","message":"Might want to poke jay pipes here, the stuff in nova around resources seems to be getting added there (seems similar at least).","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"4f901c741179e7cc020f9744891aecf679dc983f","unresolved":false,"context_lines":[{"line_number":85,"context_line":"optional and provided by the caller, and the other being generated and"},{"line_number":86,"context_line":"returned by Delimiter. Some of the reservations can also be committed"},{"line_number":87,"context_line":"immediately upon being approved; this would typically be used when"},{"line_number":88,"context_line":"decrementing a resource, for instance, when destroying a Nova instance."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Details of Quota Enforcement Engine :-"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7af24918_60711176","line":88,"updated":"2016-03-03 16:24:12.000000000","message":"I question the need for reservations in this system. What benefit is gained by having a distinction between a reservation and usage? I would like to see a case made for why reservations should be used rather than just tracking usage, which would be committed before the resource was created.","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"bab515957fdba4d7620c2171c365663d5fd4ea40","unresolved":false,"context_lines":[{"line_number":95,"context_line":"   Gets a count of the number of resources available considering"},{"line_number":96,"context_line":"   the resource usage and resources reserved. This method will"},{"line_number":97,"context_line":"   reflect the latest up to date information taking concurrency"},{"line_number":98,"context_line":"   into consideration."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"2. reserve(project_id, user_id, resource_request, expire_after)"},{"line_number":101,"context_line":"   Tries to make reservation for the specified resources. If the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_5aae7ee6","line":98,"updated":"2016-02-29 22:32:48.000000000","message":"Might want to add, that even though concurrency is taken into consideration that information must be assumed to be stale once returned.\n\nIdea: don\u0027t use project_id and user_id directly, but call these two \u0027requestor\u0027 so that it\u0027s more easy to add other fields in later (for nested stuff, or whatever).","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"bab515957fdba4d7620c2171c365663d5fd4ea40","unresolved":false,"context_lines":[{"line_number":97,"context_line":"   reflect the latest up to date information taking concurrency"},{"line_number":98,"context_line":"   into consideration."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"2. reserve(project_id, user_id, resource_request, expire_after)"},{"line_number":101,"context_line":"   Tries to make reservation for the specified resources. If the"},{"line_number":102,"context_line":"   resource request is satisfied a reservation id for a resource"},{"line_number":103,"context_line":"   if returned. This method will take concurrency into consideration."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_ba8eaa76","line":100,"updated":"2016-02-29 22:32:48.000000000","message":"I\u0027d like more details on how this expiry works because if bad things happen there then it will end badly.\n\nIdea: don\u0027t use project_id and user_id directly, but call these two \u0027requestor\u0027 so that it\u0027s more easy to add other fields in later (for nested stuff, or whatever).","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"c8b2328c1accabd0fbc30888c647994b4440c63a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"   if returned. This method will take concurrency into consideration."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"3. commit(reservation_id)"},{"line_number":106,"context_line":"   Commmit reservation. Before commiting the reservation will verify"},{"line_number":107,"context_line":"   the headroom_count for the resource which is part of the reservation."},{"line_number":108,"context_line":"   If the headroom_count is more than what is asked as part of"},{"line_number":109,"context_line":"   resource request the reservation can be commited."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_d53701fd","line":106,"updated":"2016-02-29 23:55:12.000000000","message":"Do we need to verify the headroom_count before committing the reservation? Currently a commit in Cinder will move the usage from reserved to in-use, but doesn\u0027t change the total usage, so there\u0027s no headroom_count check on commit.","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"3909723952089873e30b99ce73967a9f75587dd1","unresolved":false,"context_lines":[{"line_number":103,"context_line":"   if returned. This method will take concurrency into consideration."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"3. commit(reservation_id)"},{"line_number":106,"context_line":"   Commmit reservation. Before commiting the reservation will verify"},{"line_number":107,"context_line":"   the headroom_count for the resource which is part of the reservation."},{"line_number":108,"context_line":"   If the headroom_count is more than what is asked as part of"},{"line_number":109,"context_line":"   resource request the reservation can be commited."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_c400e768","line":106,"in_reply_to":"9aed3d3a_d53701fd","updated":"2016-03-01 06:43:19.000000000","message":"Possibly we should make this configurable?\n\n  ensure_head_room_on_reserve\u003dTrue\n\nOr make the above a float and have cinder have an infinite value for that float (which implies there is infinite headroom; which seems bad btw, ha)?","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"bab515957fdba4d7620c2171c365663d5fd4ea40","unresolved":false,"context_lines":[{"line_number":105,"context_line":"3. commit(reservation_id)"},{"line_number":106,"context_line":"   Commmit reservation. Before commiting the reservation will verify"},{"line_number":107,"context_line":"   the headroom_count for the resource which is part of the reservation."},{"line_number":108,"context_line":"   If the headroom_count is more than what is asked as part of"},{"line_number":109,"context_line":"   resource request the reservation can be commited."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"4. rollback(reservation_id)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_dad60e4e","line":108,"updated":"2016-02-29 22:32:48.000000000","message":"The failure cases of this one would be nice to know.","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"4f901c741179e7cc020f9744891aecf679dc983f","unresolved":false,"context_lines":[{"line_number":106,"context_line":"   Commmit reservation. Before commiting the reservation will verify"},{"line_number":107,"context_line":"   the headroom_count for the resource which is part of the reservation."},{"line_number":108,"context_line":"   If the headroom_count is more than what is asked as part of"},{"line_number":109,"context_line":"   resource request the reservation can be commited."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"4. rollback(reservation_id)"},{"line_number":112,"context_line":"   Rollback reservation."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7af24918_00b80dc7","line":109,"updated":"2016-03-03 16:24:12.000000000","message":"Why not just have commit happen during reserve, and in doing so eliminate the need for reservations? Rollback would just be a removal of that usage.","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"bab515957fdba4d7620c2171c365663d5fd4ea40","unresolved":false,"context_lines":[{"line_number":109,"context_line":"   resource request the reservation can be commited."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"4. rollback(reservation_id)"},{"line_number":112,"context_line":"   Rollback reservation."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"5. expire(reservation_ids)"},{"line_number":115,"context_line":"   Expire reservation that needs to be cleaned up."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_babcea06","line":112,"updated":"2016-02-29 22:32:48.000000000","message":"Be nice to mention that this will handle concurrency, because what happens if someone is committing a reservation_id at the same time one is being rolled back...","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"bab515957fdba4d7620c2171c365663d5fd4ea40","unresolved":false,"context_lines":[{"line_number":112,"context_line":"   Rollback reservation."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"5. expire(reservation_ids)"},{"line_number":115,"context_line":"   Expire reservation that needs to be cleaned up."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The aim here is to keep the interface provided by Quota Engine simple."},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_9a5006d6","line":115,"updated":"2016-02-29 22:32:48.000000000","message":"Same as above, be nice to say this is atomic with the other operations and/or will be safe to use (aka, will not end up with corrupted reservations/resources).","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"4f901c741179e7cc020f9744891aecf679dc983f","unresolved":false,"context_lines":[{"line_number":112,"context_line":"   Rollback reservation."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"5. expire(reservation_ids)"},{"line_number":115,"context_line":"   Expire reservation that needs to be cleaned up."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The aim here is to keep the interface provided by Quota Engine simple."},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7af24918_e07fe1dd","line":115,"in_reply_to":"9aed3d3a_9a5006d6","updated":"2016-03-03 16:24:12.000000000","message":"Can you add more detail on when expire would be used? I happen to believe that many of the quota issues we experience in Nova is due to using reservations rather than just committing and tracking usage. I would like to understand more about the benefit of having an expiration system of reservations.","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"c8b2328c1accabd0fbc30888c647994b4440c63a","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Quota by Availability Zone, Quota by X as and when applicable for consuming"},{"line_number":132,"context_line":"projects can be made available using this entity. The Quota Engine will operate"},{"line_number":133,"context_line":"similarly. These new features can be added more quickly and can be used on"},{"line_number":134,"context_line":"demand by the consuming projects as opposed to every project tema spending"},{"line_number":135,"context_line":"dedicated time and cycles to implement it for there respective projects."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_6b98d6c0","line":134,"updated":"2016-02-29 23:55:12.000000000","message":"s/tema/team","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"bab515957fdba4d7620c2171c365663d5fd4ea40","unresolved":false,"context_lines":[{"line_number":153,"context_line":"usages for a service. But considering a service various issues regarding"},{"line_number":154,"context_line":"adding the complexity in Openstack deployment by introduction of a new"},{"line_number":155,"context_line":"service to manage quotas prevented it from becoming a reality."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Implementation"},{"line_number":158,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aed3d3a_3ab29a06","line":156,"updated":"2016-02-29 22:32:48.000000000","message":"3. https://etherpad.openstack.org/p/kilo-oslo-common-quota-library","commit_id":"26cb9ab26fe753b8ee23de04b328e070d50c6fc7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4a79851c45b883e199d7a2e1a55bafd91ba17af6","unresolved":false,"context_lines":[{"line_number":11,"context_line":"have every project build its own quota framework (database tables, business"},{"line_number":12,"context_line":"logic, etc) needed to enforce and manage quotas. Hence, this is an attempt"},{"line_number":13,"context_line":"to build a common entity so that new and existing projects can seek benefit"},{"line_number":14,"context_line":"from it."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_772f74f6","line":14,"updated":"2016-03-16 19:16:40.000000000","message":"Its worth noting, there doesn\u0027t seem to be a project that is currently happy with its quota system. I think thats the bigger issue here.","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"3f633c156dae4d05561c89e65d87db06c184c111","unresolved":false,"context_lines":[{"line_number":11,"context_line":"have every project build its own quota framework (database tables, business"},{"line_number":12,"context_line":"logic, etc) needed to enforce and manage quotas. Hence, this is an attempt"},{"line_number":13,"context_line":"to build a common entity so that new and existing projects can seek benefit"},{"line_number":14,"context_line":"from it."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_c74928b9","line":14,"in_reply_to":"1af94dfe_772f74f6","updated":"2016-03-18 07:25:49.000000000","message":"Sure.","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"4e2d5576efb0d2e406c81d8e34d72e4710d411f2","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As mentioned above Quota are common across various projects in Openstack and"},{"line_number":20,"context_line":"it\u0027s surprising to see that even the code pattern used are common for various"},{"line_number":21,"context_line":"reasons[3][4]. It won\u0027t be surprising that if a new project want to get a"},{"line_number":22,"context_line":"quickstart on quota they might follow the same pattern, business logic and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_cf085f30","line":19,"updated":"2016-03-17 06:18:44.000000000","message":"What makes these Quotas common? The idea of quotas is common for multiple projects, but the needs are totally different.","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"3f633c156dae4d05561c89e65d87db06c184c111","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As mentioned above Quota are common across various projects in Openstack and"},{"line_number":20,"context_line":"it\u0027s surprising to see that even the code pattern used are common for various"},{"line_number":21,"context_line":"reasons[3][4]. It won\u0027t be surprising that if a new project want to get a"},{"line_number":22,"context_line":"quickstart on quota they might follow the same pattern, business logic and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_47eb5878","line":19,"in_reply_to":"1af94dfe_cf085f30","updated":"2016-03-18 07:25:49.000000000","message":"What is meant here is the implementation done is common irrespective of the resources for example cinder might have volume, snapshots as resource whereas nova might have ram, cpu as resource. The implementation to enforce quota is same the resources change. Please check references for more details.","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"4e2d5576efb0d2e406c81d8e34d72e4710d411f2","unresolved":false,"context_lines":[{"line_number":22,"context_line":"quickstart on quota they might follow the same pattern, business logic and"},{"line_number":23,"context_line":"we might end up having code duplication. Code duplication is not always good"},{"line_number":24,"context_line":"and it is worst when the source has problems in which case the project"},{"line_number":25,"context_line":"following the same pattern tends to inherit the problems which source had."},{"line_number":26,"context_line":"For example the quota operations are not atomic, they have minimal concurrency"},{"line_number":27,"context_line":"related features which prevent them from behaving correctly in an highly"},{"line_number":28,"context_line":"realistic/concurrent environment. [5] has a list of few bugs which were opened"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_5203540d","line":25,"updated":"2016-03-17 06:18:44.000000000","message":"Totally agreed! I\u0027d like to see proven good concept somewhere before any discussion of common practice.","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"4e2d5576efb0d2e406c81d8e34d72e4710d411f2","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"1. Zero or no code duplication across project who plan to enfore and manage"},{"line_number":33,"context_line":"   quotas. The function `quota_class_get_default` implement in Nova[3] and"},{"line_number":34,"context_line":"   the way it is implemented in Cinder is exactly the same[4]"},{"line_number":35,"context_line":"2. Help to add new features to the entity and make it available for all the"},{"line_number":36,"context_line":"   projects in Openstack who want to consume them. For example Nested Quota"},{"line_number":37,"context_line":"   feature - which allows hierarchical ownership of projects and distribution,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_b258d833","line":34,"updated":"2016-03-17 06:18:44.000000000","message":"So sharing of single quota related function between Nova and Cinder proves that all quota code can be shared between all projects?","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"3f633c156dae4d05561c89e65d87db06c184c111","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"1. Zero or no code duplication across project who plan to enfore and manage"},{"line_number":33,"context_line":"   quotas. The function `quota_class_get_default` implement in Nova[3] and"},{"line_number":34,"context_line":"   the way it is implemented in Cinder is exactly the same[4]"},{"line_number":35,"context_line":"2. Help to add new features to the entity and make it available for all the"},{"line_number":36,"context_line":"   projects in Openstack who want to consume them. For example Nested Quota"},{"line_number":37,"context_line":"   feature - which allows hierarchical ownership of projects and distribution,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_a78b3cc2","line":34,"in_reply_to":"1af94dfe_b258d833","updated":"2016-03-18 07:25:49.000000000","message":"That is just an example. You can check the nova and cinder quota modules and you can see a lot of similarity.","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"4e2d5576efb0d2e406c81d8e34d72e4710d411f2","unresolved":false,"context_lines":[{"line_number":42,"context_line":"   and get the needed feature. This helps to save time and move quickly."},{"line_number":43,"context_line":"3. Help focus on making quota enforcement and management better by addressing"},{"line_number":44,"context_line":"   issues such as concurrency, atomicity, etc which are still prevelant in"},{"line_number":45,"context_line":"   quota module for every OpenStack project."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Recently PaaS componenet of Openstack, Magnum which is containers as a service"},{"line_number":48,"context_line":"added the concept of resource quota. Magnum recently added the the concept of"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_7283f056","line":45,"updated":"2016-03-17 06:18:44.000000000","message":"How come something that does not exists in majority can be made commonly better?","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"3f633c156dae4d05561c89e65d87db06c184c111","unresolved":false,"context_lines":[{"line_number":42,"context_line":"   and get the needed feature. This helps to save time and move quickly."},{"line_number":43,"context_line":"3. Help focus on making quota enforcement and management better by addressing"},{"line_number":44,"context_line":"   issues such as concurrency, atomicity, etc which are still prevelant in"},{"line_number":45,"context_line":"   quota module for every OpenStack project."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Recently PaaS componenet of Openstack, Magnum which is containers as a service"},{"line_number":48,"context_line":"added the concept of resource quota. Magnum recently added the the concept of"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_477078dc","line":45,"in_reply_to":"1af94dfe_7283f056","updated":"2016-03-18 07:25:49.000000000","message":"It can be optional. Only if a project wants to consume the library/entity/service can provide  it but this should not stope the library/entity/service from being feature rich imho","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4a79851c45b883e199d7a2e1a55bafd91ba17af6","unresolved":false,"context_lines":[{"line_number":55,"context_line":"created. At present, Heat does not have the concept of Quota and hence Magnum"},{"line_number":56,"context_line":"has no Quota imposition on the resources it can consume from IaaS layer. We"},{"line_number":57,"context_line":"need to think about the a how the quota entity will work accross the layers"},{"line_number":58,"context_line":"i.e. from PaaS to consume resources from IaaS."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_1756f05b","line":58,"updated":"2016-03-16 19:16:40.000000000","message":"This goes back to the protected instances spec, I think. The idea is if the tenant creating the magnum instance is used to create the Nova instance, Nova can track the quotas.","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"3f633c156dae4d05561c89e65d87db06c184c111","unresolved":false,"context_lines":[{"line_number":55,"context_line":"created. At present, Heat does not have the concept of Quota and hence Magnum"},{"line_number":56,"context_line":"has no Quota imposition on the resources it can consume from IaaS layer. We"},{"line_number":57,"context_line":"need to think about the a how the quota entity will work accross the layers"},{"line_number":58,"context_line":"i.e. from PaaS to consume resources from IaaS."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_6742d469","line":58,"in_reply_to":"1af94dfe_1756f05b","updated":"2016-03-18 07:25:49.000000000","message":"John, I will have to have a look at the spec to comment further. Will get back once i go through the protected instance spec.","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4a79851c45b883e199d7a2e1a55bafd91ba17af6","unresolved":false,"context_lines":[{"line_number":77,"context_line":"Bind an abstract resource with a numerical limit on the usage of that"},{"line_number":78,"context_line":"resource. Provides support for default quotas, per-class quotas, per-project"},{"line_number":79,"context_line":"quotas, etc. A default quota is overridden by a per-class quota, which in"},{"line_number":80,"context_line":"turn is overridden by a per-project quota. None of the resource parameters"},{"line_number":81,"context_line":"are relevant for a quota, as a Quota object merely binds a limit with a"},{"line_number":82,"context_line":"resource."},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_57feb837","line":80,"updated":"2016-03-16 19:16:40.000000000","message":"there are also per-user quotas in Nova.\n\nAre you going to cover hierarchical quotas here too?","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"3f633c156dae4d05561c89e65d87db06c184c111","unresolved":false,"context_lines":[{"line_number":77,"context_line":"Bind an abstract resource with a numerical limit on the usage of that"},{"line_number":78,"context_line":"resource. Provides support for default quotas, per-class quotas, per-project"},{"line_number":79,"context_line":"quotas, etc. A default quota is overridden by a per-class quota, which in"},{"line_number":80,"context_line":"turn is overridden by a per-project quota. None of the resource parameters"},{"line_number":81,"context_line":"are relevant for a quota, as a Quota object merely binds a limit with a"},{"line_number":82,"context_line":"resource."},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_aa15c140","line":80,"in_reply_to":"1af94dfe_57feb837","updated":"2016-03-18 07:25:49.000000000","message":"Yes the library will have support for both flat and hierarchical namespaces.","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4a79851c45b883e199d7a2e1a55bafd91ba17af6","unresolved":false,"context_lines":[{"line_number":98,"context_line":"optional and provided by the caller, and the other being generated and"},{"line_number":99,"context_line":"returned by Delimiter. Some of the reservations can also be committed"},{"line_number":100,"context_line":"immediately upon being approved; this would typically be used when"},{"line_number":101,"context_line":"decrementing a resource, for instance, when destroying a Nova instance."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Details of Quota Enforcement Engine :-"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_7a3bd99c","line":101,"updated":"2016-03-16 19:16:40.000000000","message":"I honestly think we need to drop reservations. Its too complicated.\n\nInstead, why not request_quota for an object with a specific uuid, and have a single request that says what resources need to be claimed. Then you get a yes or no answer on if that claim for that compound set of resources is possibly or not.\n\nIf you delete that resources, you release the quota for that uuid.\n\ni.e. the create instance fails, you still consume quota till the instance is deleted. That seems a fair trade for much less complexity.\n\nThis is possible because you request all the required resources for a single user API call in one bundle. So you don\u0027t need to build up a large number of reservations, then commit them once you have them all.\n\nThere is still a small risk of quota drift, but you can use the object uuid to audit a tenant\u0027s current usage.","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"4e2d5576efb0d2e406c81d8e34d72e4710d411f2","unresolved":false,"context_lines":[{"line_number":98,"context_line":"optional and provided by the caller, and the other being generated and"},{"line_number":99,"context_line":"returned by Delimiter. Some of the reservations can also be committed"},{"line_number":100,"context_line":"immediately upon being approved; this would typically be used when"},{"line_number":101,"context_line":"decrementing a resource, for instance, when destroying a Nova instance."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Details of Quota Enforcement Engine :-"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_f273807e","line":101,"in_reply_to":"1af94dfe_7a3bd99c","updated":"2016-03-17 06:18:44.000000000","message":"++","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"bb744bf665253d3c4365a3d00149a08481e19853","unresolved":false,"context_lines":[{"line_number":110,"context_line":"   reflect the latest up to date information taking concurrency"},{"line_number":111,"context_line":"   into consideration."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"2. reserve(project_id, user_id, resource_request, expire_after)"},{"line_number":114,"context_line":"   Tries to make reservation for the specified resources. If the"},{"line_number":115,"context_line":"   resource request is satisfied a reservation id for a resource"},{"line_number":116,"context_line":"   if returned. This method will take concurrency into consideration."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afc51ec_19a1f1a3","line":113,"range":{"start_line":113,"start_character":11,"end_line":113,"end_character":21},"updated":"2016-03-14 21:28:45.000000000","message":"Adding request id here makes debugging easier","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"3f633c156dae4d05561c89e65d87db06c184c111","unresolved":false,"context_lines":[{"line_number":110,"context_line":"   reflect the latest up to date information taking concurrency"},{"line_number":111,"context_line":"   into consideration."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"2. reserve(project_id, user_id, resource_request, expire_after)"},{"line_number":114,"context_line":"   Tries to make reservation for the specified resources. If the"},{"line_number":115,"context_line":"   resource request is satisfied a reservation id for a resource"},{"line_number":116,"context_line":"   if returned. This method will take concurrency into consideration."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_e756e428","line":113,"range":{"start_line":113,"start_character":11,"end_line":113,"end_character":21},"in_reply_to":"3afc51ec_19a1f1a3","updated":"2016-03-18 07:25:49.000000000","message":"Sure.","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"4e2d5576efb0d2e406c81d8e34d72e4710d411f2","unresolved":false,"context_lines":[{"line_number":127,"context_line":"5. expire(reservation_ids)"},{"line_number":128,"context_line":"   Expire reservation that needs to be cleaned up."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"The aim here is to keep the interface provided by Quota Engine simple."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"B] Quota Engine Data Source :-"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_92b83ce7","line":130,"updated":"2016-03-17 06:18:44.000000000","message":"Prove me wrong, but the above looks very prone to race conditions where outcome is that any of the given requests could have been fulfilled if done individually instead of concurrent manner.","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"3f633c156dae4d05561c89e65d87db06c184c111","unresolved":false,"context_lines":[{"line_number":127,"context_line":"5. expire(reservation_ids)"},{"line_number":128,"context_line":"   Expire reservation that needs to be cleaned up."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"The aim here is to keep the interface provided by Quota Engine simple."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"B] Quota Engine Data Source :-"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_a727bcc8","line":130,"in_reply_to":"1af94dfe_92b83ce7","updated":"2016-03-18 07:25:49.000000000","message":"Everything like check_quota or assign_quota is done as part of a transaction. Will add more details here.","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"4e2d5576efb0d2e406c81d8e34d72e4710d411f2","unresolved":false,"context_lines":[{"line_number":136,"context_line":"will enforce how the data will be stored in the data layer. Right now"},{"line_number":137,"context_line":"all the projects in Openstack have the common set of models for example"},{"line_number":138,"context_line":"Quota, QuotaClass, QuotaUsage these can be managed by the Quota Engine"},{"line_number":139,"context_line":"Data Source."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"C] Addition of New Features :-"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_72901044","line":139,"updated":"2016-03-17 06:18:44.000000000","message":"Really? Ref \"Right now ...\".","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"4e2d5576efb0d2e406c81d8e34d72e4710d411f2","unresolved":false,"context_lines":[{"line_number":165,"context_line":"solve the problem of managing and enforcing quotas. Boson tracks quotas and"},{"line_number":166,"context_line":"usages for a service. But considering a service various issues regarding"},{"line_number":167,"context_line":"adding the complexity in Openstack deployment by introduction of a new"},{"line_number":168,"context_line":"service to manage quotas prevented it from becoming a reality."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_72613039","line":168,"updated":"2016-03-17 06:18:44.000000000","message":"How is this proposal actually going to solve any of the issues identified on the above?","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"3f633c156dae4d05561c89e65d87db06c184c111","unresolved":false,"context_lines":[{"line_number":165,"context_line":"solve the problem of managing and enforcing quotas. Boson tracks quotas and"},{"line_number":166,"context_line":"usages for a service. But considering a service various issues regarding"},{"line_number":167,"context_line":"adding the complexity in Openstack deployment by introduction of a new"},{"line_number":168,"context_line":"service to manage quotas prevented it from becoming a reality."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af94dfe_a70e9c38","line":168,"in_reply_to":"1af94dfe_72613039","updated":"2016-03-18 07:25:49.000000000","message":"Thats one of the options tried in the past.","commit_id":"8b246852f892c0534ed88de927ab459b9a525d88"}]}
