)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"4bcbae787bcd5fc5decfb8585ad13b2d2f3eee04","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nested Quota Driver patch adds hierarchical support. Quota"},{"line_number":10,"context_line":"API\u0027s now can also handle hierarchical projects."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I1711dbf1455bc1be207fe2cdfdf5f79c4bea4b88"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"da6895a0_65b6dfdd","line":11,"updated":"2016-10-22 23:09:23.000000000","message":"blueprint: nested-quota-driver-api ?","commit_id":"424cd59ae669bd70a3396f47cc76fb5fb52987a0"}],"nova/api/openstack/compute/quota_sets.py":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"4bcbae787bcd5fc5decfb8585ad13b2d2f3eee04","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from nova.api import validation"},{"line_number":30,"context_line":"from nova import context"},{"line_number":31,"context_line":"from nova import db"},{"line_number":32,"context_line":"from nova.db.sqlalchemy import api as sqlalchemy_api"},{"line_number":33,"context_line":"from nova import exception"},{"line_number":34,"context_line":"from nova.i18n import _"},{"line_number":35,"context_line":"from nova import objects"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6895a0_c5b5ebcd","line":32,"updated":"2016-10-22 23:09:23.000000000","message":"My understanding is that our intention is to not use this module directly, but rather rely on the \"proxies\" in nova.db.api *or* nova objects (i.e. https://github.com/openstack/nova/blob/master/nova/objects/quotas.py in this case)","commit_id":"424cd59ae669bd70a3396f47cc76fb5fb52987a0"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"4bcbae787bcd5fc5decfb8585ad13b2d2f3eee04","unresolved":false,"context_lines":[{"line_number":376,"context_line":"                objects.Quotas.update_limit(context, target_project_id,"},{"line_number":377,"context_line":"                                            key, value, user_id\u003duser_id)"},{"line_number":378,"context_line":"        # If hierarchical projects, update child\u0027s quota first"},{"line_number":379,"context_line":"        # and then parents quota. In future this needs to be an"},{"line_number":380,"context_line":"        # atomic operation."},{"line_number":381,"context_line":"        if parent_project_id:"},{"line_number":382,"context_line":"            if key in allocated_quotas.keys():"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6895a0_a5e717e3","line":379,"updated":"2016-10-22 23:09:23.000000000","message":"I think we could it here, but extending the db transaction scope for the whole HTTP request (using the enginefacade decorators). Although, I\u0027m not sure if that\u0027s \"best practices\" or we should do this in quotas.py or objects instead.","commit_id":"424cd59ae669bd70a3396f47cc76fb5fb52987a0"}],"nova/context.py":[{"author":{"_account_id":21239,"name":"Alex Szarka","email":"szarka@inf.u-szeged.hu","username":"xavvior"},"change_message_id":"9ddeb4bce439bfdd048326fdfd3ba77e484a27a2","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        # test_quotas_show_filtered"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        if CONF.keystone_authtoken.auth_uri is None:"},{"line_number":330,"context_line":"            auth_url \u003d \"http://localhost:35357/v2.0\""},{"line_number":331,"context_line":"        else:"},{"line_number":332,"context_line":"            auth_url \u003d CONF.keystone_authtoken.auth_uri"},{"line_number":333,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5da102_a1531d16","line":330,"range":{"start_line":330,"start_character":23,"end_line":330,"end_character":52},"updated":"2016-11-02 11:42:32.000000000","message":"Hi! I think so, should use variable parts instead of plain text config, because e.g.: v2.0 already deprecated (?). \nAnd if i know a good, the keystone_authtoken.auth_uri contains the public port (5000) instead of admin port (35357).\nThis should rethink and implement so dinamically.\nThe keystone_authtoken v2 and v3 is part of identify api.\n\n\nRef:\nhttp://developer.openstack.org/api-ref/identity/v2/index.html\nhttp://developer.openstack.org/api-ref/identity/v2-admin/index.html","commit_id":"e75ddf59069e69c9c5e314b407703d46e1765c6e"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"4bcbae787bcd5fc5decfb8585ad13b2d2f3eee04","unresolved":false,"context_lines":[{"line_number":3417,"context_line":"###################"},{"line_number":3418,"context_line":""},{"line_number":3419,"context_line":"@require_context"},{"line_number":3420,"context_line":"@main_context_manager.reader"},{"line_number":3421,"context_line":"def quota_allocated_get_all_by_project(context, project_id):"},{"line_number":3422,"context_line":"    rows \u003d model_query(context, models.Quota, read_deleted\u003d\u0027no\u0027).filter_by("},{"line_number":3423,"context_line":"        project_id\u003dproject_id).all()"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6895a0_45f0fb90","line":3420,"updated":"2016-10-22 23:09:23.000000000","message":"Let\u0027s use @pick_context_manager.reader instead, as these tables are to be moved to \"api\" db (http://git.openstack.org/cgit/openstack/nova-specs/tree/specs/ocata/approved/cells-quota-api-db.rst)","commit_id":"424cd59ae669bd70a3396f47cc76fb5fb52987a0"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"4bcbae787bcd5fc5decfb8585ad13b2d2f3eee04","unresolved":false,"context_lines":[{"line_number":3428,"context_line":""},{"line_number":3429,"context_line":""},{"line_number":3430,"context_line":"@require_context"},{"line_number":3431,"context_line":"def quota_allocated_update(context, project_id, resource, child_hard_limits):"},{"line_number":3432,"context_line":"    session \u003d context.session"},{"line_number":3433,"context_line":"    model \u003d models.Quota"},{"line_number":3434,"context_line":"    query \u003d model_query(context, model). \\"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6895a0_652b3fec","line":3431,"updated":"2016-10-22 23:09:23.000000000","message":"ditto: @pick_context_manager.writer","commit_id":"424cd59ae669bd70a3396f47cc76fb5fb52987a0"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"4bcbae787bcd5fc5decfb8585ad13b2d2f3eee04","unresolved":false,"context_lines":[{"line_number":3434,"context_line":"    query \u003d model_query(context, model). \\"},{"line_number":3435,"context_line":"        filter_by(project_id\u003dproject_id). \\"},{"line_number":3436,"context_line":"        filter_by(resource\u003dresource)"},{"line_number":3437,"context_line":"    with session.begin():"},{"line_number":3438,"context_line":"        result \u003d query.update({\u0027child_hard_limits\u0027: child_hard_limits})"},{"line_number":3439,"context_line":"        if not result:"},{"line_number":3440,"context_line":"            raise exception.ProjectQuotaNotFound(project_id\u003dproject_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6895a0_857e93e2","line":3437,"updated":"2016-10-22 23:09:23.000000000","message":"you don\u0027t need this anymore: the decorator set up a transaction context","commit_id":"424cd59ae669bd70a3396f47cc76fb5fb52987a0"}]}
