)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"a08874f1394e1413ea24fb4af06c378d76d92c6c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove db layer hard-code permission checks for quota_get_all_*"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patches remove the hard-code permission checks for db call"},{"line_number":10,"context_line":"quota_get_all_*"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"For v2 API, there is same project owner hard-code permission checks"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1aca2d91_83e23802","line":9,"updated":"2015-05-07 04:03:16.000000000","message":"nit:  s/patch/patches \ns/remove/removes","commit_id":"02efec0733ae77c449a358195cdcdc3a7f717ae4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bed8377713c646c0892a1877431affabb634f465","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove db layer hard-code permission checks for quota_get_all_*"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patches remove the hard-code permission checks for db call"},{"line_number":10,"context_line":"quota_get_all_*"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"For v2 API, there is same project owner hard-code permission checks"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1aca2d91_3e24970b","line":9,"in_reply_to":"1aca2d91_83e23802","updated":"2015-05-07 05:16:07.000000000","message":"Done","commit_id":"02efec0733ae77c449a358195cdcdc3a7f717ae4"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"a08874f1394e1413ea24fb4af06c378d76d92c6c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"at REST API layer, so nothing we need to for it."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"For v2.1, adds the \u0027target\u0027 for policy enforcement that used to"},{"line_number":16,"context_line":"enforce owner checks. The defaults method use same rule with show"},{"line_number":17,"context_line":"method before. After removed hard-code permission checks for show"},{"line_number":18,"context_line":"method, this patch adds new rule for distinguish different permission"},{"line_number":19,"context_line":"of defaults and show."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1aca2d91_03ef48e9","line":16,"updated":"2015-05-07 04:03:16.000000000","message":"s/defaults/default","commit_id":"02efec0733ae77c449a358195cdcdc3a7f717ae4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bed8377713c646c0892a1877431affabb634f465","unresolved":false,"context_lines":[{"line_number":13,"context_line":"at REST API layer, so nothing we need to for it."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"For v2.1, adds the \u0027target\u0027 for policy enforcement that used to"},{"line_number":16,"context_line":"enforce owner checks. The defaults method use same rule with show"},{"line_number":17,"context_line":"method before. After removed hard-code permission checks for show"},{"line_number":18,"context_line":"method, this patch adds new rule for distinguish different permission"},{"line_number":19,"context_line":"of defaults and show."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1aca2d91_1e21dbfb","line":16,"in_reply_to":"1aca2d91_03ef48e9","updated":"2015-05-07 05:16:07.000000000","message":"Done","commit_id":"02efec0733ae77c449a358195cdcdc3a7f717ae4"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"a08874f1394e1413ea24fb4af06c378d76d92c6c","unresolved":false,"context_lines":[{"line_number":23,"context_line":"UpgradeImpact: Due to the db layer permission checks was deleted. The"},{"line_number":24,"context_line":"default rule is added to \"os_compute_api:os-quota-sets:show\" for"},{"line_number":25,"context_line":"matching the same permission as before. Show and default action are"},{"line_number":26,"context_line":"shared some rule before. But after the cleanup, those two methods have"},{"line_number":27,"context_line":"different permission. So add new rule for default action"},{"line_number":28,"context_line":"\"os_compute_api:os-quota-sets:defaults\"."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1aca2d91_63cf1c80","line":26,"updated":"2015-05-07 04:03:16.000000000","message":"is this some or same?","commit_id":"02efec0733ae77c449a358195cdcdc3a7f717ae4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bed8377713c646c0892a1877431affabb634f465","unresolved":false,"context_lines":[{"line_number":23,"context_line":"UpgradeImpact: Due to the db layer permission checks was deleted. The"},{"line_number":24,"context_line":"default rule is added to \"os_compute_api:os-quota-sets:show\" for"},{"line_number":25,"context_line":"matching the same permission as before. Show and default action are"},{"line_number":26,"context_line":"shared some rule before. But after the cleanup, those two methods have"},{"line_number":27,"context_line":"different permission. So add new rule for default action"},{"line_number":28,"context_line":"\"os_compute_api:os-quota-sets:defaults\"."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1aca2d91_fe1dffbd","line":26,"in_reply_to":"1aca2d91_63cf1c80","updated":"2015-05-07 05:16:07.000000000","message":"Done","commit_id":"02efec0733ae77c449a358195cdcdc3a7f717ae4"}],"etc/nova/policy.json":[{"author":{"_account_id":9459,"name":".Haifeng Yan","email":"yanheven@qq.com","username":"yan"},"change_message_id":"d947dd5ae95facca971942281283df8fd3889291","unresolved":false,"context_lines":[{"line_number":324,"context_line":"    \"os_compute_api:os-personality:discoverable\": \"\","},{"line_number":325,"context_line":"    \"os_compute_api:os-preserve-ephemeral-rebuild:discoverable\": \"\","},{"line_number":326,"context_line":"    \"os_compute_api:os-quota-sets:discoverable\": \"\","},{"line_number":327,"context_line":"    \"os_compute_api:os-quota-sets:show\": \"rule:admin_or_owner\","},{"line_number":328,"context_line":"    \"os_compute_api:os-quota-sets:defaults\": \"\","},{"line_number":329,"context_line":"    \"os_compute_api:os-quota-sets:update\": \"rule:admin_api\","},{"line_number":330,"context_line":"    \"os_compute_api:os-quota-sets:delete\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":12,"id":"7a016987_bb03df0c","line":327,"updated":"2015-05-17 05:49:22.000000000","message":"this rule is equal to the default rule","commit_id":"f09834bad60decdb8315c6133bb0d70da54b7d3c"},{"author":{"_account_id":9459,"name":".Haifeng Yan","email":"yanheven@qq.com","username":"yan"},"change_message_id":"3c75c7271136c69ade1499a0b64d41ca5b9d4313","unresolved":false,"context_lines":[{"line_number":324,"context_line":"    \"os_compute_api:os-personality:discoverable\": \"\","},{"line_number":325,"context_line":"    \"os_compute_api:os-preserve-ephemeral-rebuild:discoverable\": \"\","},{"line_number":326,"context_line":"    \"os_compute_api:os-quota-sets:discoverable\": \"\","},{"line_number":327,"context_line":"    \"os_compute_api:os-quota-sets:show\": \"rule:admin_or_owner\","},{"line_number":328,"context_line":"    \"os_compute_api:os-quota-sets:defaults\": \"\","},{"line_number":329,"context_line":"    \"os_compute_api:os-quota-sets:update\": \"rule:admin_api\","},{"line_number":330,"context_line":"    \"os_compute_api:os-quota-sets:delete\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":12,"id":"7a016987_04d7f9ed","line":327,"in_reply_to":"7a016987_433cf5c7","updated":"2015-05-20 02:24:57.000000000","message":"Sorry，Alex xu, you are right, I understood it before. if we define a rule and the value is a empty string, means allow anyone,codes here  https://github.com/openstack/nova/blob/master/nova/openstack/common/policy.py#L832; Only when missing rule will use the default rule.","commit_id":"f09834bad60decdb8315c6133bb0d70da54b7d3c"},{"author":{"_account_id":9459,"name":".Haifeng Yan","email":"yanheven@qq.com","username":"yan"},"change_message_id":"eba28444f589b03dec3889358993661a38a2e8d9","unresolved":false,"context_lines":[{"line_number":324,"context_line":"    \"os_compute_api:os-personality:discoverable\": \"\","},{"line_number":325,"context_line":"    \"os_compute_api:os-preserve-ephemeral-rebuild:discoverable\": \"\","},{"line_number":326,"context_line":"    \"os_compute_api:os-quota-sets:discoverable\": \"\","},{"line_number":327,"context_line":"    \"os_compute_api:os-quota-sets:show\": \"rule:admin_or_owner\","},{"line_number":328,"context_line":"    \"os_compute_api:os-quota-sets:defaults\": \"\","},{"line_number":329,"context_line":"    \"os_compute_api:os-quota-sets:update\": \"rule:admin_api\","},{"line_number":330,"context_line":"    \"os_compute_api:os-quota-sets:delete\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":12,"id":"7a016987_433cf5c7","line":327,"in_reply_to":"7a016987_a6b502ef","updated":"2015-05-18 08:52:02.000000000","message":"have a look at here https://github.com/openstack/nova/blob/master/nova/openstack/common/policy.py#L166","commit_id":"f09834bad60decdb8315c6133bb0d70da54b7d3c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b69b1ca875511d9a19e3884f5c12222199206883","unresolved":false,"context_lines":[{"line_number":324,"context_line":"    \"os_compute_api:os-personality:discoverable\": \"\","},{"line_number":325,"context_line":"    \"os_compute_api:os-preserve-ephemeral-rebuild:discoverable\": \"\","},{"line_number":326,"context_line":"    \"os_compute_api:os-quota-sets:discoverable\": \"\","},{"line_number":327,"context_line":"    \"os_compute_api:os-quota-sets:show\": \"rule:admin_or_owner\","},{"line_number":328,"context_line":"    \"os_compute_api:os-quota-sets:defaults\": \"\","},{"line_number":329,"context_line":"    \"os_compute_api:os-quota-sets:update\": \"rule:admin_api\","},{"line_number":330,"context_line":"    \"os_compute_api:os-quota-sets:delete\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":12,"id":"7a016987_a6b502ef","line":327,"in_reply_to":"7a016987_bb03df0c","updated":"2015-05-17 13:25:20.000000000","message":"Actually It\u0027s different. \"\" means allowed for anyone.","commit_id":"f09834bad60decdb8315c6133bb0d70da54b7d3c"}],"nova/api/openstack/compute/contrib/quotas.py":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"a08874f1394e1413ea24fb4af06c378d76d92c6c","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        try:"},{"line_number":140,"context_line":"            # NOTE(alex_xu): back-compatible with db layer hard-code admin"},{"line_number":141,"context_line":"            # permission checks."},{"line_number":142,"context_line":"            nova.context.authorize_project_context(context, id)"},{"line_number":143,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context, project_id,"},{"line_number":144,"context_line":"                                                         user_id\u003duser_id)"},{"line_number":145,"context_line":"        except exception.Forbidden:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_23aec485","line":142,"updated":"2015-05-07 04:03:16.000000000","message":"hmm..\ncan you please make these constant with the NOTE in\nhttps://review.openstack.org/#/c/160089/12/nova/api/openstack/compute/contrib/aggregates.py","commit_id":"02efec0733ae77c449a358195cdcdc3a7f717ae4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bed8377713c646c0892a1877431affabb634f465","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        try:"},{"line_number":140,"context_line":"            # NOTE(alex_xu): back-compatible with db layer hard-code admin"},{"line_number":141,"context_line":"            # permission checks."},{"line_number":142,"context_line":"            nova.context.authorize_project_context(context, id)"},{"line_number":143,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context, project_id,"},{"line_number":144,"context_line":"                                                         user_id\u003duser_id)"},{"line_number":145,"context_line":"        except exception.Forbidden:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_7e11efab","line":142,"in_reply_to":"1aca2d91_23aec485","updated":"2015-05-07 05:16:07.000000000","message":"This is different meaning with admin hard-code permission checks","commit_id":"02efec0733ae77c449a358195cdcdc3a7f717ae4"},{"author":{"_account_id":9459,"name":".Haifeng Yan","email":"yanheven@qq.com","username":"yan"},"change_message_id":"d947dd5ae95facca971942281283df8fd3889291","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        try:"},{"line_number":140,"context_line":"            # NOTE(alex_xu): back-compatible with db layer hard-code admin"},{"line_number":141,"context_line":"            # permission checks."},{"line_number":142,"context_line":"            nova.context.authorize_project_context(context, id)"},{"line_number":143,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context, project_id,"},{"line_number":144,"context_line":"                                                         user_id\u003duser_id)"},{"line_number":145,"context_line":"        except exception.Forbidden:"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a016987_5b3cebc7","line":142,"updated":"2015-05-17 05:49:22.000000000","message":"we could remove try-catch here since nova.context.authorize_project_context will raise exception for permission check.","commit_id":"f09834bad60decdb8315c6133bb0d70da54b7d3c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b69b1ca875511d9a19e3884f5c12222199206883","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        try:"},{"line_number":140,"context_line":"            # NOTE(alex_xu): back-compatible with db layer hard-code admin"},{"line_number":141,"context_line":"            # permission checks."},{"line_number":142,"context_line":"            nova.context.authorize_project_context(context, id)"},{"line_number":143,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context, project_id,"},{"line_number":144,"context_line":"                                                         user_id\u003duser_id)"},{"line_number":145,"context_line":"        except exception.Forbidden:"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a016987_46cbee72","line":142,"in_reply_to":"7a016987_5b3cebc7","updated":"2015-05-17 13:25:20.000000000","message":"It\u0027s fine, I know the wsgi layer will convert that. We also prefer to catch exception explicitly in v2.1 API. so there isn\u0027t any hard request for catch or not.","commit_id":"f09834bad60decdb8315c6133bb0d70da54b7d3c"}],"nova/api/openstack/compute/plugins/v3/quota_sets.py":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"a08874f1394e1413ea24fb4af06c378d76d92c6c","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        return self._format_quota_set(id,"},{"line_number":91,"context_line":"            self._get_quotas(context, id, user_id\u003duser_id))"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @extensions.expected_errors(403)"},{"line_number":94,"context_line":"    def detail(self, req, id):"},{"line_number":95,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":96,"context_line":"        authorize(context, action\u003d\u0027detail\u0027, target\u003d{\u0027project_id\u0027: id})"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_c3095097","line":93,"updated":"2015-05-07 04:03:16.000000000","message":"you have removed this webob.exc.HTTPForbidden()\nthen this expeced_errors code can be removed. right?","commit_id":"02efec0733ae77c449a358195cdcdc3a7f717ae4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bed8377713c646c0892a1877431affabb634f465","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        return self._format_quota_set(id,"},{"line_number":91,"context_line":"            self._get_quotas(context, id, user_id\u003duser_id))"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @extensions.expected_errors(403)"},{"line_number":94,"context_line":"    def detail(self, req, id):"},{"line_number":95,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":96,"context_line":"        authorize(context, action\u003d\u0027detail\u0027, target\u003d{\u0027project_id\u0027: id})"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_de7923fe","line":93,"in_reply_to":"1aca2d91_c3095097","updated":"2015-05-07 05:16:07.000000000","message":"Done","commit_id":"02efec0733ae77c449a358195cdcdc3a7f717ae4"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"a08874f1394e1413ea24fb4af06c378d76d92c6c","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                                                           user_id\u003duser_id,"},{"line_number":100,"context_line":"                                                           usages\u003dTrue))"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @extensions.expected_errors((400, 403))"},{"line_number":103,"context_line":"    @validation.schema(quota_sets.update)"},{"line_number":104,"context_line":"    def update(self, req, id, body):"},{"line_number":105,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_83035873","line":102,"updated":"2015-05-07 04:03:16.000000000","message":"ditto for 403","commit_id":"02efec0733ae77c449a358195cdcdc3a7f717ae4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bed8377713c646c0892a1877431affabb634f465","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                                                           user_id\u003duser_id,"},{"line_number":100,"context_line":"                                                           usages\u003dTrue))"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @extensions.expected_errors((400, 403))"},{"line_number":103,"context_line":"    @validation.schema(quota_sets.update)"},{"line_number":104,"context_line":"    def update(self, req, id, body):"},{"line_number":105,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_fe461fbe","line":102,"in_reply_to":"1aca2d91_83035873","updated":"2015-05-07 05:16:07.000000000","message":"The line 144 still will raise 403, and that will be cleanup in next patch","commit_id":"02efec0733ae77c449a358195cdcdc3a7f717ae4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4ac59c7c6cde506b786a31d11f31955ff5788398","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                                                           user_id\u003duser_id,"},{"line_number":100,"context_line":"                                                           usages\u003dTrue))"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @extensions.expected_errors((400, 403))"},{"line_number":103,"context_line":"    @validation.schema(quota_sets.update)"},{"line_number":104,"context_line":"    def update(self, req, id, body):"},{"line_number":105,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"1aca2d91_fea73f4d","line":102,"updated":"2015-05-07 05:26:19.000000000","message":"Because line 144 raise HTTPForbidden also, the 403 won\u0027t remove from here. It will be cleanup in next patch.","commit_id":"b66aafaa8daf25c18af3e4dc1e4e1bae1f74499a"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"fbee3e9ce74145a2e59e1c3b5e1831c53d50b5a1","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                                                           user_id\u003duser_id,"},{"line_number":100,"context_line":"                                                           usages\u003dTrue))"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @extensions.expected_errors((400, 403))"},{"line_number":103,"context_line":"    @validation.schema(quota_sets.update)"},{"line_number":104,"context_line":"    def update(self, req, id, body):"},{"line_number":105,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"1aca2d91_7e40cf56","line":102,"in_reply_to":"1aca2d91_fea73f4d","updated":"2015-05-08 05:37:33.000000000","message":"okay cool.","commit_id":"b66aafaa8daf25c18af3e4dc1e4e1bae1f74499a"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":9459,"name":".Haifeng Yan","email":"yanheven@qq.com","username":"yan"},"change_message_id":"d947dd5ae95facca971942281283df8fd3889291","unresolved":false,"context_lines":[{"line_number":3097,"context_line":"    return result"},{"line_number":3098,"context_line":""},{"line_number":3099,"context_line":""},{"line_number":3100,"context_line":"@require_admin_context"},{"line_number":3101,"context_line":"def quota_create(context, project_id, resource, limit, user_id\u003dNone):"},{"line_number":3102,"context_line":"    per_user \u003d user_id and resource not in PER_PROJECT_QUOTAS"},{"line_number":3103,"context_line":"    quota_ref \u003d models.ProjectUserQuota() if per_user else models.Quota()"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a016987_fb3037ea","side":"PARENT","line":3100,"updated":"2015-05-17 05:49:22.000000000","message":"In order to remove db layer hard-code permission checks, this admin permission hard code should be removed too.","commit_id":"7a853fb4ddc42f036c0dc562b2d150f6b670155d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b69b1ca875511d9a19e3884f5c12222199206883","unresolved":false,"context_lines":[{"line_number":3097,"context_line":"    return result"},{"line_number":3098,"context_line":""},{"line_number":3099,"context_line":""},{"line_number":3100,"context_line":"@require_admin_context"},{"line_number":3101,"context_line":"def quota_create(context, project_id, resource, limit, user_id\u003dNone):"},{"line_number":3102,"context_line":"    per_user \u003d user_id and resource not in PER_PROJECT_QUOTAS"},{"line_number":3103,"context_line":"    quota_ref \u003d models.ProjectUserQuota() if per_user else models.Quota()"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a016987_66970a49","side":"PARENT","line":3100,"in_reply_to":"7a016987_fb3037ea","updated":"2015-05-17 13:25:20.000000000","message":"It\u0027s done by next patch https://review.openstack.org/#/c/160203/","commit_id":"7a853fb4ddc42f036c0dc562b2d150f6b670155d"}],"nova/tests/unit/api/openstack/compute/contrib/test_quotas.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"8799d3dbefa2e54eaf2b439c58ab179e20d03688","unresolved":false,"context_lines":[{"line_number":473,"context_line":"                              \u0027injected_file_content_bytes\u0027: 10240,"},{"line_number":474,"context_line":"                              \u0027key_pairs\u0027: 100,"},{"line_number":475,"context_line":"                              \u0027security_groups\u0027: 10,"},{"line_number":476,"context_line":"                              \u0027security_group_rules\u0027: 20}}"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"        url \u003d \u0027/v2/fake4/os-quota-sets/update_me?user_id\u003d1\u0027"},{"line_number":479,"context_line":"        req \u003d fakes.HTTPRequest.blank(url)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a016987_ee8a65be","line":476,"updated":"2015-05-29 18:23:13.000000000","message":"Is the elimination of server_groups/server_group_members and relocation of security_groups/security_group_rules intentional?  It seems unrelated.  Maybe a bad rebase?","commit_id":"f09834bad60decdb8315c6133bb0d70da54b7d3c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"35e91fbd01c5b53cc66d9148e2cceaca6b5121b5","unresolved":false,"context_lines":[{"line_number":473,"context_line":"                              \u0027injected_file_content_bytes\u0027: 10240,"},{"line_number":474,"context_line":"                              \u0027key_pairs\u0027: 100,"},{"line_number":475,"context_line":"                              \u0027security_groups\u0027: 10,"},{"line_number":476,"context_line":"                              \u0027security_group_rules\u0027: 20}}"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"        url \u003d \u0027/v2/fake4/os-quota-sets/update_me?user_id\u003d1\u0027"},{"line_number":479,"context_line":"        req \u003d fakes.HTTPRequest.blank(url)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_fe8573ce","line":476,"in_reply_to":"7a016987_ee8a65be","updated":"2015-06-10 03:25:30.000000000","message":"Emm...it is unrelated...really a good catch, thanks!","commit_id":"f09834bad60decdb8315c6133bb0d70da54b7d3c"}]}
