)]}'
{"nova/api/openstack/compute/limits.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c0ab6215f3e9b621a345c9def0365be951389b17","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @wsgi.Controller.api_version(\"2.1\", MAX_PROXY_API_SUPPORT_VERSION)"},{"line_number":40,"context_line":"    @extensions.expected_errors(())"},{"line_number":41,"context_line":"    def index(self, req):"},{"line_number":42,"context_line":"        return self._index(req)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @wsgi.Controller.api_version(MIN_WITHOUT_PROXY_API_SUPPORT_VERSION,  # noqa"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f4e5783_ef735f7f","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":25},"updated":"2017-10-12 06:52:33.000000000","message":"Need schema here too. there is no change in request for this so we should add the same schema here as added in L53.","commit_id":"da9d28dffc78622d21612aec9668107319cf9c67"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"6ce552879c012fedce49be80110d1b748f962af5","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @wsgi.Controller.api_version(\"2.1\", MAX_PROXY_API_SUPPORT_VERSION)"},{"line_number":40,"context_line":"    @extensions.expected_errors(())"},{"line_number":41,"context_line":"    def index(self, req):"},{"line_number":42,"context_line":"        return self._index(req)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @wsgi.Controller.api_version(MIN_WITHOUT_PROXY_API_SUPPORT_VERSION,  # noqa"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_9149e233","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":25},"in_reply_to":"5f4e5783_ef735f7f","updated":"2017-10-30 09:31:38.000000000","message":"right, this should be added, thanks for point out","commit_id":"da9d28dffc78622d21612aec9668107319cf9c67"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c0ab6215f3e9b621a345c9def0365be951389b17","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @wsgi.Controller.api_version(MIN_WITHOUT_PROXY_API_SUPPORT_VERSION,  # noqa"},{"line_number":45,"context_line":"                                 MAX_IMAGE_META_PROXY_API_VERSION)  # noqa"},{"line_number":46,"context_line":"    @extensions.expected_errors(())"},{"line_number":47,"context_line":"    def index(self, req):"},{"line_number":48,"context_line":"        return self._index(req, filter_result\u003dTrue)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    @wsgi.Controller.api_version(  # noqa"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f4e5783_af6d6799","line":47,"range":{"start_line":46,"start_character":27,"end_line":47,"end_character":25},"updated":"2017-10-12 06:52:33.000000000","message":"ditto","commit_id":"da9d28dffc78622d21612aec9668107319cf9c67"}],"nova/api/openstack/compute/schemas/used_limits.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"66472877f3780f20e8c6df8e447c5a62b54573d1","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from nova.api.validation import parameter_types"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"used_limits_query_schema \u003d {"},{"line_number":18,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":19,"context_line":"    \u0027properties\u0027: {"},{"line_number":20,"context_line":"        \u0027tenant_id\u0027: parameter_types.common_query_param,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f515b1d_a1bfdef9","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":24},"updated":"2017-09-24 15:50:23.000000000","message":"this is not special to used limit only. can we name it to \u0027limits_query\u0027 and add in limit.py","commit_id":"cded4c9cad72105604a75eb26e8586999e0c089f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"63342c840039466ef2a22b1b0d73190b81948dbb","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from nova.api.validation import parameter_types"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"used_limits_query_schema \u003d {"},{"line_number":18,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":19,"context_line":"    \u0027properties\u0027: {"},{"line_number":20,"context_line":"        \u0027tenant_id\u0027: parameter_types.common_query_param,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f515b1d_8575bc66","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":24},"in_reply_to":"7f515b1d_99843660","updated":"2017-09-27 06:03:52.000000000","message":"ok, that\u0027s a good point, I agree it should be a good to do as you suggested","commit_id":"cded4c9cad72105604a75eb26e8586999e0c089f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"e18164610afc3f349ac7a1818f5c029803d9e8f4","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from nova.api.validation import parameter_types"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"used_limits_query_schema \u003d {"},{"line_number":18,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":19,"context_line":"    \u0027properties\u0027: {"},{"line_number":20,"context_line":"        \u0027tenant_id\u0027: parameter_types.common_query_param,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f515b1d_e3fdb73a","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":24},"in_reply_to":"7f515b1d_a1bfdef9","updated":"2017-09-26 01:44:07.000000000","message":"I don\u0027t really get this ... why we need move to limit.py?\nit\u0027s something about limit query and not specific to limit.py?","commit_id":"cded4c9cad72105604a75eb26e8586999e0c089f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7542b097ac7300f1900cba79485785af2a369f8c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from nova.api.validation import parameter_types"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"used_limits_query_schema \u003d {"},{"line_number":18,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":19,"context_line":"    \u0027properties\u0027: {"},{"line_number":20,"context_line":"        \u0027tenant_id\u0027: parameter_types.common_query_param,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f515b1d_99843660","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":24},"in_reply_to":"7f515b1d_e3fdb73a","updated":"2017-09-26 02:40:06.000000000","message":"used_limit is just extensions(it was) its better to have schema together in single file.","commit_id":"cded4c9cad72105604a75eb26e8586999e0c089f"}],"nova/api/openstack/compute/used_limits.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"88577ea2e4c48f14c3d47dd4b61592181a5b93c6","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @wsgi.extends"},{"line_number":32,"context_line":"    @extensions.expected_errors(())"},{"line_number":33,"context_line":"    @validation.query_schema(used_limits.used_limits_query_schema)"},{"line_number":34,"context_line":"    def index(self, req, resp_obj):"},{"line_number":35,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":36,"context_line":"        project_id \u003d self._project_id(context, req)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_cbdedc3c","line":33,"range":{"start_line":33,"start_character":5,"end_line":33,"end_character":15},"updated":"2017-08-30 11:14:35.000000000","message":"This is true error in the CI, you didn\u0027t import validation module.","commit_id":"0ad97c45374e1bc4940d59e3e4734926e3250b58"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3aec2cbc54ca5c2e4ef69d8b6d7725e0024eade7","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @wsgi.extends"},{"line_number":32,"context_line":"    @extensions.expected_errors(())"},{"line_number":33,"context_line":"    @validation.query_schema(used_limits.used_limits_query_schema)"},{"line_number":34,"context_line":"    def index(self, req, resp_obj):"},{"line_number":35,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":36,"context_line":"        project_id \u003d self._project_id(context, req)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_aebee5d1","line":33,"range":{"start_line":33,"start_character":5,"end_line":33,"end_character":15},"in_reply_to":"7f287b81_cbdedc3c","updated":"2017-08-31 06:34:47.000000000","message":"Done","commit_id":"0ad97c45374e1bc4940d59e3e4734926e3250b58"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c9b85458409e6876f09e8e82ef2d83ab46b2ba78","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class UsedLimitsController(wsgi.Controller):"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @wsgi.extends"},{"line_number":33,"context_line":"    @extensions.expected_errors(())"},{"line_number":34,"context_line":"    @validation.query_schema(used_limits.used_limits_query_schema)"},{"line_number":35,"context_line":"    def index(self, req, resp_obj):"},{"line_number":36,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":37,"context_line":"        project_id \u003d self._project_id(context, req)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_37c0af7c","line":34,"range":{"start_line":32,"start_character":0,"end_line":34,"end_character":66},"updated":"2017-09-05 07:18:13.000000000","message":"this is extended method. why we are adding schema here instead of original controller method\n- https://github.com/openstack/nova/blob/5bcfaf3e8aeafd0de4bc7579fea65e11d23e880b/nova/api/openstack/compute/limits.py#L51","commit_id":"98871fb0636c4322e61ff46ca2b18b5b908f1cbb"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"f783fab914f8ee17cc4d02dacde2702cdeedc483","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class UsedLimitsController(wsgi.Controller):"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @wsgi.extends"},{"line_number":33,"context_line":"    @extensions.expected_errors(())"},{"line_number":34,"context_line":"    @validation.query_schema(used_limits.used_limits_query_schema)"},{"line_number":35,"context_line":"    def index(self, req, resp_obj):"},{"line_number":36,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":37,"context_line":"        project_id \u003d self._project_id(context, req)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_dbba986c","line":34,"range":{"start_line":32,"start_character":0,"end_line":34,"end_character":66},"in_reply_to":"7f287b81_37c0af7c","updated":"2017-09-06 06:38:20.000000000","message":"ok, good suggestion","commit_id":"98871fb0636c4322e61ff46ca2b18b5b908f1cbb"}],"nova/tests/unit/api/openstack/compute/test_used_limits.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c9b85458409e6876f09e8e82ef2d83ab46b2ba78","unresolved":false,"context_lines":[{"line_number":45,"context_line":"class UsedLimitsTestCaseV21(test.NoDBTestCase):"},{"line_number":46,"context_line":"    used_limit_extension \u003d \"os_compute_api:os-used-limits\""},{"line_number":47,"context_line":"    include_server_group_quotas \u003d True"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def setUp(self):"},{"line_number":50,"context_line":"        \"\"\"Run before each test.\"\"\""},{"line_number":51,"context_line":"        super(UsedLimitsTestCaseV21, self).setUp()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_5c2482c6","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":0},"updated":"2017-09-05 07:18:13.000000000","message":"can we add more tests here\n- any other param than tenant_id is being ignored and no error\n- non string tenant_id value gets 400","commit_id":"98871fb0636c4322e61ff46ca2b18b5b908f1cbb"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"f783fab914f8ee17cc4d02dacde2702cdeedc483","unresolved":false,"context_lines":[{"line_number":45,"context_line":"class UsedLimitsTestCaseV21(test.NoDBTestCase):"},{"line_number":46,"context_line":"    used_limit_extension \u003d \"os_compute_api:os-used-limits\""},{"line_number":47,"context_line":"    include_server_group_quotas \u003d True"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def setUp(self):"},{"line_number":50,"context_line":"        \"\"\"Run before each test.\"\"\""},{"line_number":51,"context_line":"        super(UsedLimitsTestCaseV21, self).setUp()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_7baba41c","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":0},"in_reply_to":"7f287b81_5c2482c6","updated":"2017-09-06 06:38:20.000000000","message":"ok, will add it soon","commit_id":"98871fb0636c4322e61ff46ca2b18b5b908f1cbb"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"152208d65b649afa3a7f75e2dc18de0e72e99b76","unresolved":false,"context_lines":[{"line_number":45,"context_line":"class UsedLimitsTestCaseV21(test.NoDBTestCase):"},{"line_number":46,"context_line":"    used_limit_extension \u003d \"os_compute_api:os-used-limits\""},{"line_number":47,"context_line":"    include_server_group_quotas \u003d True"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def setUp(self):"},{"line_number":50,"context_line":"        \"\"\"Run before each test.\"\"\""},{"line_number":51,"context_line":"        super(UsedLimitsTestCaseV21, self).setUp()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_f6dc4947","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":0},"in_reply_to":"7f287b81_7baba41c","updated":"2017-09-06 06:59:23.000000000","message":"actually, the tenant_id is not mandatory, if not provided, context.project_id will be used....","commit_id":"98871fb0636c4322e61ff46ca2b18b5b908f1cbb"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9e346f20c0128221567ca1d15a407ba03b8637f3","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        # for back compatible we allow additional param to be send to req.GET"},{"line_number":163,"context_line":"        # it can be removed when we add restrictions to query param later"},{"line_number":164,"context_line":"        req_get \u003d {\u0027dummy\u0027: \u0027dummy\u0027}"},{"line_number":165,"context_line":"        self._test_admin_can_fetch_used_limits_for_own_project(req_get)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def test_non_admin_cannot_fetch_used_limits_for_any_other_project(self):"},{"line_number":168,"context_line":"        project_id \u003d \"123456\""}],"source_content_type":"text/x-python","patch_set":10,"id":"7f515b1d_efd66df2","line":165,"updated":"2017-10-09 17:25:44.000000000","message":"We want to add one more negative test case for invalid tenant_id with schema validation error because this patch adds the validation.","commit_id":"f7adeda83fc006be412be39cf772c6171379334b"}]}
