)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1d69393d8fda5acabf0928cb9f95951d02c5597e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Currently schema and request/response extended code are there"},{"line_number":12,"context_line":"among all extensions."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This commit merge the used_limits extension resposne into limit"},{"line_number":15,"context_line":"view builder."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partially implements: blueprint api-extensions-merge-stein"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_411c3712","line":14,"range":{"start_line":14,"start_character":12,"end_line":14,"end_character":17},"updated":"2018-10-01 23:15:00.000000000","message":"nit: s/merge/merges/","commit_id":"a76ead3df6ec7050095a97feedcfa1a03f500aa6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1d69393d8fda5acabf0928cb9f95951d02c5597e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Currently schema and request/response extended code are there"},{"line_number":12,"context_line":"among all extensions."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This commit merge the used_limits extension resposne into limit"},{"line_number":15,"context_line":"view builder."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partially implements: blueprint api-extensions-merge-stein"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_0112bffd","line":14,"range":{"start_line":14,"start_character":44,"end_line":14,"end_character":52},"updated":"2018-10-01 23:15:00.000000000","message":"nit: s/resposne/response/","commit_id":"a76ead3df6ec7050095a97feedcfa1a03f500aa6"}],"nova/api/openstack/compute/routes.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1d69393d8fda5acabf0928cb9f95951d02c5597e","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"limits_controller \u003d functools.partial("},{"line_number":226,"context_line":"    _create_controller, limits.LimitsController,"},{"line_number":227,"context_line":"    ["},{"line_number":228,"context_line":"    ],"},{"line_number":229,"context_line":"    [])"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"migrations_controller \u003d functools.partial(_create_controller,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_21da5b78","line":229,"range":{"start_line":227,"start_character":0,"end_line":229,"end_character":7},"updated":"2018-10-01 23:15:00.000000000","message":"nit: These lines can be moved to line 226 like line 222.","commit_id":"a76ead3df6ec7050095a97feedcfa1a03f500aa6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"77cb78f436adac5ff53f2f90a3ad273100ab9c97","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"limits_controller \u003d functools.partial("},{"line_number":226,"context_line":"    _create_controller, limits.LimitsController,"},{"line_number":227,"context_line":"    ["},{"line_number":228,"context_line":"    ],"},{"line_number":229,"context_line":"    [])"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"migrations_controller \u003d functools.partial(_create_controller,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_9a34f4ad","line":229,"range":{"start_line":227,"start_character":0,"end_line":229,"end_character":7},"in_reply_to":"3f79a3b5_21da5b78","updated":"2018-10-02 02:30:12.000000000","message":"Thanks. fixed in follow up patch- https://review.openstack.org/#/c/607088/","commit_id":"a76ead3df6ec7050095a97feedcfa1a03f500aa6"}],"nova/api/openstack/compute/views/limits.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2fe20aca79878ae15044d30ca3a2eb86b9f0494c","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            }"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        used_limits \u003d {}"},{"line_number":104,"context_line":"        for display_name, key in quota_map.items():"},{"line_number":105,"context_line":"            if key in quotas:"},{"line_number":106,"context_line":"                used_limits[display_name] \u003d quotas[key][\u0027in_use\u0027]"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_b36d92cc","line":104,"range":{"start_line":104,"start_character":26,"end_line":104,"end_character":29},"updated":"2018-10-11 02:56:39.000000000","message":"We can simple this logic, since the parameter \u0027filtered_limits\u0027 in build method already told us which quota should be filtered.","commit_id":"12634a332bfc1151eb476788f2eb33557b60e887"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"73eb126cea22c19b37aabf5363e48721807eac31","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            }"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        used_limits \u003d {}"},{"line_number":104,"context_line":"        for display_name, key in quota_map.items():"},{"line_number":105,"context_line":"            if key in quotas:"},{"line_number":106,"context_line":"                used_limits[display_name] \u003d quotas[key][\u0027in_use\u0027]"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_d9914ff9","line":104,"range":{"start_line":104,"start_character":26,"end_line":104,"end_character":29},"in_reply_to":"3f79a3b5_b36d92cc","updated":"2018-10-11 06:41:26.000000000","message":"yeah, info is present in filtered_limits. I will update it.","commit_id":"12634a332bfc1151eb476788f2eb33557b60e887"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2fe20aca79878ae15044d30ca3a2eb86b9f0494c","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        return used_limits"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _check_requested_project_scope(self, request):"},{"line_number":111,"context_line":"        if \u0027tenant_id\u0027 in request.GET:"},{"line_number":112,"context_line":"            context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":113,"context_line":"            tenant_id \u003d request.GET.get(\u0027tenant_id\u0027)"},{"line_number":114,"context_line":"            target \u003d {"},{"line_number":115,"context_line":"                \u0027project_id\u0027: tenant_id,"},{"line_number":116,"context_line":"                \u0027user_id\u0027: context.user_id"},{"line_number":117,"context_line":"                }"},{"line_number":118,"context_line":"            context.can(ul_policies.BASE_POLICY_NAME, target)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_b354b2fe","line":118,"range":{"start_line":110,"start_character":4,"end_line":118,"end_character":61},"updated":"2018-10-11 02:56:39.000000000","message":"We already have some policy rule check in the beginning of the API request, I confuse why we have this check again https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/limits.py#L76","commit_id":"12634a332bfc1151eb476788f2eb33557b60e887"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"73eb126cea22c19b37aabf5363e48721807eac31","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        return used_limits"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _check_requested_project_scope(self, request):"},{"line_number":111,"context_line":"        if \u0027tenant_id\u0027 in request.GET:"},{"line_number":112,"context_line":"            context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":113,"context_line":"            tenant_id \u003d request.GET.get(\u0027tenant_id\u0027)"},{"line_number":114,"context_line":"            target \u003d {"},{"line_number":115,"context_line":"                \u0027project_id\u0027: tenant_id,"},{"line_number":116,"context_line":"                \u0027user_id\u0027: context.user_id"},{"line_number":117,"context_line":"                }"},{"line_number":118,"context_line":"            context.can(ul_policies.BASE_POLICY_NAME, target)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_f9de8b0e","line":118,"range":{"start_line":110,"start_character":4,"end_line":118,"end_character":61},"in_reply_to":"3f79a3b5_b354b2fe","updated":"2018-10-11 06:41:26.000000000","message":"yeah this is little confusing policy enforcement. Here we check the user-limit policy[1] which is different from limit policy. and this policy check if user has access to the requested project limits. \n\nonce we have scope things implemented in policy then we should remove this policy.\n\n[1] https://github.com/openstack/nova/blob/7a5d7db7fc6ccfbd97508a1e8cd353ec25cf8ca2/nova/policies/used_limits.py#L21","commit_id":"12634a332bfc1151eb476788f2eb33557b60e887"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5715a45d416c264d47a713726bf1077aeded6727","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        return used_limits"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _check_requested_project_scope(self, request):"},{"line_number":111,"context_line":"        if \u0027tenant_id\u0027 in request.GET:"},{"line_number":112,"context_line":"            context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":113,"context_line":"            tenant_id \u003d request.GET.get(\u0027tenant_id\u0027)"},{"line_number":114,"context_line":"            target \u003d {"},{"line_number":115,"context_line":"                \u0027project_id\u0027: tenant_id,"},{"line_number":116,"context_line":"                \u0027user_id\u0027: context.user_id"},{"line_number":117,"context_line":"                }"},{"line_number":118,"context_line":"            context.can(ul_policies.BASE_POLICY_NAME, target)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_4e2bbe31","line":118,"range":{"start_line":110,"start_character":4,"end_line":118,"end_character":61},"in_reply_to":"3f79a3b5_f9de8b0e","updated":"2018-10-17 03:18:11.000000000","message":"I see now, there are two policy rules. But looks like duplicated, we should be able to deprecated one of those.","commit_id":"12634a332bfc1151eb476788f2eb33557b60e887"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d1d7f457c7fba0d6242b3a84bf9020b5814efc1f","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            \"server_group_members\": [\"maxServerGroupMembers\"]"},{"line_number":38,"context_line":"    }"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def build(self, request, quotas, filtered_limits\u003dNone,"},{"line_number":41,"context_line":"              max_image_meta\u003dTrue):"},{"line_number":42,"context_line":"        filtered_limits \u003d filtered_limits or []"},{"line_number":43,"context_line":"        absolute_limits \u003d self._build_absolute_limits("}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_ceaee7e3","line":40,"range":{"start_line":40,"start_character":20,"end_line":40,"end_character":29},"updated":"2018-10-17 10:08:10.000000000","message":"I\u0027m guessing this is passed for use in later patches.\n\nLater: Wait, used by _build_used_limits. I need more tea.","commit_id":"56707ba941185cd4015e92b1bfb57ab6be07d6dc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d1d7f457c7fba0d6242b3a84bf9020b5814efc1f","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            \u0027totalCoresUsed\u0027: \u0027cores\u0027,"},{"line_number":86,"context_line":"            \u0027totalInstancesUsed\u0027: \u0027instances\u0027,"},{"line_number":87,"context_line":"            \u0027totalFloatingIpsUsed\u0027: \u0027floating_ips\u0027,"},{"line_number":88,"context_line":"            \u0027totalSecurityGroupsUsed\u0027: \u0027security_groups\u0027,"},{"line_number":89,"context_line":"            \u0027totalServerGroupsUsed\u0027: \u0027server_groups\u0027,"},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":"        used_limits \u003d {}"},{"line_number":92,"context_line":"        for display_name, key in quota_map.items():"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_a3ddc4df","line":89,"range":{"start_line":88,"start_character":0,"end_line":89,"end_character":53},"updated":"2018-10-17 10:08:10.000000000","message":"Why do we no longer need to filter these out for MIN_WITHOUT_PROXY_API_SUPPORT_VERSION ?\n\nLater: this is just the mapping. We do the filtering below (line 94) with filter_limits coming from the caller https://review.openstack.org/#/c/606031/5/nova/api/openstack/compute/limits.py@60","commit_id":"56707ba941185cd4015e92b1bfb57ab6be07d6dc"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"389cad074add96f114db39ba215414a8175744cd","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            \u0027totalCoresUsed\u0027: \u0027cores\u0027,"},{"line_number":86,"context_line":"            \u0027totalInstancesUsed\u0027: \u0027instances\u0027,"},{"line_number":87,"context_line":"            \u0027totalFloatingIpsUsed\u0027: \u0027floating_ips\u0027,"},{"line_number":88,"context_line":"            \u0027totalSecurityGroupsUsed\u0027: \u0027security_groups\u0027,"},{"line_number":89,"context_line":"            \u0027totalServerGroupsUsed\u0027: \u0027server_groups\u0027,"},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":"        used_limits \u003d {}"},{"line_number":92,"context_line":"        for display_name, key in quota_map.items():"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_69946d99","line":89,"range":{"start_line":88,"start_character":0,"end_line":89,"end_character":53},"in_reply_to":"3f79a3b5_a3ddc4df","updated":"2018-10-17 11:00:41.000000000","message":"yeah filtered_limits will take care of removing them for microversion \u003e MIN_WITHOUT_PROXY_API_SUPPORT_VERSION","commit_id":"56707ba941185cd4015e92b1bfb57ab6be07d6dc"}],"nova/tests/unit/api/openstack/compute/test_limits.py":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"b60427bd010ec0b0818359da71b2c10d0a8901ec","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        }"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        def _get_project_quotas(context, project_id, usages\u003dTrue):"},{"line_number":149,"context_line":"            return {k: dict(limit\u003dv, in_use\u003dv / 2)"},{"line_number":150,"context_line":"                    for k, v in self.absolute_limits.items()}"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        with mock.patch(\u0027nova.quota.QUOTAS.get_project_quotas\u0027) as \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_3fbb79c4","line":149,"range":{"start_line":149,"start_character":37,"end_line":149,"end_character":49},"updated":"2018-09-29 07:55:39.000000000","message":"guess this caused problem in python3?","commit_id":"20bcd4ab9937074a7c660f337a61ec13aa6e7e0c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1d69393d8fda5acabf0928cb9f95951d02c5597e","unresolved":false,"context_lines":[{"line_number":454,"context_line":"                        \"totalRAMUsed\": 256,"},{"line_number":455,"context_line":"                        \"totalCoresUsed\": 10,"},{"line_number":456,"context_line":"                        \"totalInstancesUsed\": 2,"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"                    },"},{"line_number":459,"context_line":"                },"},{"line_number":460,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c197e7ea","line":457,"updated":"2018-10-01 23:15:00.000000000","message":"nit: unnecessary blank line","commit_id":"a76ead3df6ec7050095a97feedcfa1a03f500aa6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"77cb78f436adac5ff53f2f90a3ad273100ab9c97","unresolved":false,"context_lines":[{"line_number":454,"context_line":"                        \"totalRAMUsed\": 256,"},{"line_number":455,"context_line":"                        \"totalCoresUsed\": 10,"},{"line_number":456,"context_line":"                        \"totalInstancesUsed\": 2,"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"                    },"},{"line_number":459,"context_line":"                },"},{"line_number":460,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_ba39b0a3","line":457,"in_reply_to":"3f79a3b5_c197e7ea","updated":"2018-10-02 02:30:12.000000000","message":"Thanks. fixed in follow up patch- https://review.openstack.org/#/c/607088/","commit_id":"a76ead3df6ec7050095a97feedcfa1a03f500aa6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d1d7f457c7fba0d6242b3a84bf9020b5814efc1f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3f79a3b5_2eec3b27","updated":"2018-10-17 10:08:10.000000000","message":"This whole thing is essentially a straight copy from nova/tests/unit/api/openstack/compute/test_used_limits.py","commit_id":"56707ba941185cd4015e92b1bfb57ab6be07d6dc"}]}
