)]}'
{"keystone/exception.py":[{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"767958b8145115c5c39dceeee42a1c35a441b3f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3f79a3b5_53d382d3","updated":"2018-10-16 03:07:49.000000000","message":"Shouldn\u0027t need this anymore","commit_id":"67d5b51a835117b17fd105a0f3e76c14ef4b5ce7"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"ff9d5433fb1cccd371995b7419966b37cb10cfab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3f79a3b5_b9d0b72c","in_reply_to":"3f79a3b5_53d382d3","updated":"2018-10-16 05:02:29.000000000","message":"Done","commit_id":"67d5b51a835117b17fd105a0f3e76c14ef4b5ce7"}],"keystone/limit/schema.py":[{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"767958b8145115c5c39dceeee42a1c35a441b3f6","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"_limit_update_properties \u003d {"},{"line_number":81,"context_line":"    \u0027resource_limit\u0027: {"},{"line_number":82,"context_line":"        \u0027type\u0027: \u0027integer\u0027"},{"line_number":83,"context_line":"    },"},{"line_number":84,"context_line":"    \u0027description\u0027: validation.nullable(parameter_types.description)"},{"line_number":85,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_b3ed368f","line":82,"range":{"start_line":82,"start_character":8,"end_line":82,"end_character":25},"updated":"2018-10-16 03:07:49.000000000","message":"Need to add a \"minimum\" here as well","commit_id":"67d5b51a835117b17fd105a0f3e76c14ef4b5ce7"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"ff9d5433fb1cccd371995b7419966b37cb10cfab","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"_limit_update_properties \u003d {"},{"line_number":81,"context_line":"    \u0027resource_limit\u0027: {"},{"line_number":82,"context_line":"        \u0027type\u0027: \u0027integer\u0027"},{"line_number":83,"context_line":"    },"},{"line_number":84,"context_line":"    \u0027description\u0027: validation.nullable(parameter_types.description)"},{"line_number":85,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_d9d33336","line":82,"range":{"start_line":82,"start_character":8,"end_line":82,"end_character":25},"in_reply_to":"3f79a3b5_b3ed368f","updated":"2018-10-16 05:02:29.000000000","message":"done","commit_id":"67d5b51a835117b17fd105a0f3e76c14ef4b5ce7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6edcbdff9029029dcaa0e1fd0a326c5fe7b5d9f8","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    },"},{"line_number":26,"context_line":"    \u0027default_limit\u0027: {"},{"line_number":27,"context_line":"        \u0027type\u0027: \u0027integer\u0027,"},{"line_number":28,"context_line":"        \u0027minimum\u0027: 0"},{"line_number":29,"context_line":"    },"},{"line_number":30,"context_line":"    \u0027description\u0027: validation.nullable(parameter_types.description)"},{"line_number":31,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_7a10ca58","line":28,"range":{"start_line":28,"start_character":19,"end_line":28,"end_character":20},"updated":"2018-10-16 11:08:32.000000000","message":"We might need to figure out how to approach this with existing limits works across OpenStack [0]. Some projects treat -1 as \"unlimited\". This will break that if we decide to use the same semantics in keystone.\n\nIf we decide to keep the minimum as 0, we should document that minimum value somewhere and explain how to \"unlimit\" a resource for services migrating to our implementation of limits.\n\n[0] http://git.openstack.org/cgit/openstack/nova/tree/nova/conf/quota.py#n29","commit_id":"8c710b61a9d39637f60338301a0067d82934ca41"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"87f8c37752a8d43bbfca33df9e1d2ea2c04bc91c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    },"},{"line_number":26,"context_line":"    \u0027default_limit\u0027: {"},{"line_number":27,"context_line":"        \u0027type\u0027: \u0027integer\u0027,"},{"line_number":28,"context_line":"        \u0027minimum\u0027: 0"},{"line_number":29,"context_line":"    },"},{"line_number":30,"context_line":"    \u0027description\u0027: validation.nullable(parameter_types.description)"},{"line_number":31,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_6b6c77ce","line":28,"range":{"start_line":28,"start_character":19,"end_line":28,"end_character":20},"in_reply_to":"3f79a3b5_62cd7c2d","updated":"2018-10-16 16:42:16.000000000","message":"++,  -1 is the most used value for unlimited.","commit_id":"8c710b61a9d39637f60338301a0067d82934ca41"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"0304a586ac4b5f911fe82b8072c13b58b0089452","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    },"},{"line_number":26,"context_line":"    \u0027default_limit\u0027: {"},{"line_number":27,"context_line":"        \u0027type\u0027: \u0027integer\u0027,"},{"line_number":28,"context_line":"        \u0027minimum\u0027: 0"},{"line_number":29,"context_line":"    },"},{"line_number":30,"context_line":"    \u0027description\u0027: validation.nullable(parameter_types.description)"},{"line_number":31,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_62cd7c2d","line":28,"range":{"start_line":28,"start_character":19,"end_line":28,"end_character":20},"in_reply_to":"3f79a3b5_7a10ca58","updated":"2018-10-16 15:38:32.000000000","message":"-1 as the minimum makes sense if that\u0027s what the other projects do here.","commit_id":"8c710b61a9d39637f60338301a0067d82934ca41"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"ea2d93c0709c4e10d3230287e08e2cd37f2b9a64","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \u0027default_limit\u0027: {"},{"line_number":27,"context_line":"        \u0027type\u0027: \u0027integer\u0027,"},{"line_number":28,"context_line":"        \u0027minimum\u0027: -1,"},{"line_number":29,"context_line":"        \u0027maximum\u0027: 0x7FFFFFFF  # The maximum value a signed INT may have"},{"line_number":30,"context_line":"    },"},{"line_number":31,"context_line":"    \u0027description\u0027: validation.nullable(parameter_types.description)"},{"line_number":32,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_26b68d27","line":29,"range":{"start_line":29,"start_character":19,"end_line":29,"end_character":29},"updated":"2018-10-18 03:24:44.000000000","message":"++, 4 byte here.","commit_id":"6f46002d1edccbaae2a1de7abfacfb28ae3f616e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"52f3bdfd6410abfae816107c22546c96403b0bd2","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \u0027default_limit\u0027: {"},{"line_number":27,"context_line":"        \u0027type\u0027: \u0027integer\u0027,"},{"line_number":28,"context_line":"        \u0027minimum\u0027: -1,"},{"line_number":29,"context_line":"        \u0027maximum\u0027: 0x7FFFFFFF  # The maximum value a signed INT may have"},{"line_number":30,"context_line":"    },"},{"line_number":31,"context_line":"    \u0027description\u0027: validation.nullable(parameter_types.description)"},{"line_number":32,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_bee04bfb","line":29,"range":{"start_line":29,"start_character":19,"end_line":29,"end_character":29},"in_reply_to":"3f79a3b5_26b68d27","updated":"2018-10-19 00:34:15.000000000","message":"HAH. is this a python limit or a limit that we\u0027ve encoded in our storage system choice (sql).","commit_id":"6f46002d1edccbaae2a1de7abfacfb28ae3f616e"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"88ff0a15ba2a571495941e658a0743b7a51c745b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \u0027default_limit\u0027: {"},{"line_number":27,"context_line":"        \u0027type\u0027: \u0027integer\u0027,"},{"line_number":28,"context_line":"        \u0027minimum\u0027: -1,"},{"line_number":29,"context_line":"        \u0027maximum\u0027: 0x7FFFFFFF  # The maximum value a signed INT may have"},{"line_number":30,"context_line":"    },"},{"line_number":31,"context_line":"    \u0027description\u0027: validation.nullable(parameter_types.description)"},{"line_number":32,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_c459b85c","line":29,"range":{"start_line":29,"start_character":19,"end_line":29,"end_character":29},"in_reply_to":"3f79a3b5_bee04bfb","updated":"2018-10-19 03:31:44.000000000","message":"it\u0027s the sql limit I think, the default_limit column in sql is integer type which is 4 bytes. So the max should be\n01111111 11111111 11111111 11111111","commit_id":"6f46002d1edccbaae2a1de7abfacfb28ae3f616e"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"e000b9d9fc1fa2b0c078a9017cb44b6e7610dc5d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \u0027default_limit\u0027: {"},{"line_number":27,"context_line":"        \u0027type\u0027: \u0027integer\u0027,"},{"line_number":28,"context_line":"        \u0027minimum\u0027: -1,"},{"line_number":29,"context_line":"        \u0027maximum\u0027: 0x7FFFFFFF  # The maximum value a signed INT may have"},{"line_number":30,"context_line":"    },"},{"line_number":31,"context_line":"    \u0027description\u0027: validation.nullable(parameter_types.description)"},{"line_number":32,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_12f83948","line":29,"range":{"start_line":29,"start_character":19,"end_line":29,"end_character":29},"in_reply_to":"3f79a3b5_c459b85c","updated":"2018-10-20 06:45:24.000000000","message":"Yes it is sql limit. The column is set with sql.integer that takes the max int value.\n\nI also saw that nova also sets the same value for defining max int.\nhttps://github.com/openstack/nova/blob/c6218428e9b29a2c52808ec7d27b4b21aadc0299/nova/db/constants.py#L16","commit_id":"6f46002d1edccbaae2a1de7abfacfb28ae3f616e"}],"keystone/tests/unit/test_validation.py":[{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"767958b8145115c5c39dceeee42a1c35a441b3f6","unresolved":false,"context_lines":[{"line_number":2557,"context_line":"                          request_to_validate)"},{"line_number":2558,"context_line":""},{"line_number":2559,"context_line":"    def test_validate_registered_limit_create_with_invalid_default_limit(self):"},{"line_number":2560,"context_line":"        request_to_validate \u003d [{\u0027service_id\u0027: uuid.uuid4().hex,"},{"line_number":2561,"context_line":"                                \u0027region_id\u0027: \u0027RegionOne\u0027,"},{"line_number":2562,"context_line":"                                \u0027resource_name\u0027: \u0027volume\u0027,"},{"line_number":2563,"context_line":"                                \u0027default_limit\u0027: -10,"},{"line_number":2564,"context_line":"                                \u0027description\u0027: \u0027test description\u0027}]"},{"line_number":2565,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":2566,"context_line":"                          self.create_registered_limits_validator.validate,"},{"line_number":2567,"context_line":"                          request_to_validate)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_3301263a","line":2564,"range":{"start_line":2560,"start_character":8,"end_line":2564,"end_character":67},"updated":"2018-10-16 03:07:49.000000000","message":"There is an existing test for invalid input below, we can add this \"request\" to _INVALID_FORMATS and it should test this one as well.\n\nSame for registered_limit_update below that one","commit_id":"67d5b51a835117b17fd105a0f3e76c14ef4b5ce7"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"ff9d5433fb1cccd371995b7419966b37cb10cfab","unresolved":false,"context_lines":[{"line_number":2557,"context_line":"                          request_to_validate)"},{"line_number":2558,"context_line":""},{"line_number":2559,"context_line":"    def test_validate_registered_limit_create_with_invalid_default_limit(self):"},{"line_number":2560,"context_line":"        request_to_validate \u003d [{\u0027service_id\u0027: uuid.uuid4().hex,"},{"line_number":2561,"context_line":"                                \u0027region_id\u0027: \u0027RegionOne\u0027,"},{"line_number":2562,"context_line":"                                \u0027resource_name\u0027: \u0027volume\u0027,"},{"line_number":2563,"context_line":"                                \u0027default_limit\u0027: -10,"},{"line_number":2564,"context_line":"                                \u0027description\u0027: \u0027test description\u0027}]"},{"line_number":2565,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":2566,"context_line":"                          self.create_registered_limits_validator.validate,"},{"line_number":2567,"context_line":"                          request_to_validate)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_79d69f28","line":2564,"range":{"start_line":2560,"start_character":8,"end_line":2564,"end_character":67},"in_reply_to":"3f79a3b5_3301263a","updated":"2018-10-16 05:02:29.000000000","message":"Done","commit_id":"67d5b51a835117b17fd105a0f3e76c14ef4b5ce7"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"767958b8145115c5c39dceeee42a1c35a441b3f6","unresolved":false,"context_lines":[{"line_number":2681,"context_line":"                          self.create_limits_validator.validate,"},{"line_number":2682,"context_line":"                          request_to_validate)"},{"line_number":2683,"context_line":""},{"line_number":2684,"context_line":"    def test_validate_limit_create_request_with_invalid_input(self):"},{"line_number":2685,"context_line":"        _INVALID_FORMATS \u003d [{\u0027project_id\u0027: \u0027fake_id\u0027},"},{"line_number":2686,"context_line":"                            {\u0027service_id\u0027: \u0027fake_id\u0027},"},{"line_number":2687,"context_line":"                            {\u0027region_id\u0027: 123},"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_b39216fb","line":2684,"updated":"2018-10-16 03:07:49.000000000","message":"Same as above, we can add another invalid request here with a negative limit value to test here, rather than adding 2 additional tests.","commit_id":"67d5b51a835117b17fd105a0f3e76c14ef4b5ce7"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"ff9d5433fb1cccd371995b7419966b37cb10cfab","unresolved":false,"context_lines":[{"line_number":2681,"context_line":"                          self.create_limits_validator.validate,"},{"line_number":2682,"context_line":"                          request_to_validate)"},{"line_number":2683,"context_line":""},{"line_number":2684,"context_line":"    def test_validate_limit_create_request_with_invalid_input(self):"},{"line_number":2685,"context_line":"        _INVALID_FORMATS \u003d [{\u0027project_id\u0027: \u0027fake_id\u0027},"},{"line_number":2686,"context_line":"                            {\u0027service_id\u0027: \u0027fake_id\u0027},"},{"line_number":2687,"context_line":"                            {\u0027region_id\u0027: 123},"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_59df2337","line":2684,"in_reply_to":"3f79a3b5_b39216fb","updated":"2018-10-16 05:02:29.000000000","message":"Done","commit_id":"67d5b51a835117b17fd105a0f3e76c14ef4b5ce7"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"bb1ed2af677d73bc996f08498347d9a13c54c75e","unresolved":false,"context_lines":[{"line_number":2691,"context_line":"                                \u0027more_key\u0027: \u0027more_value\u0027}]"},{"line_number":2692,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":2693,"context_line":"                          self.create_limits_validator.validate,"},{"line_number":2694,"context_line":"                          request_to_validate)"},{"line_number":2695,"context_line":""},{"line_number":2696,"context_line":"    def test_validate_limit_update_request_with_addition_input_fails(self):"},{"line_number":2697,"context_line":"        request_to_validate \u003d {\u0027id\u0027: uuid.uuid4().hex,"},{"line_number":2698,"context_line":"                               \u0027resource_limit\u0027: 10,"},{"line_number":2699,"context_line":"                               \u0027more_key\u0027: \u0027more_value\u0027}"},{"line_number":2700,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":2701,"context_line":"                          self.update_limits_validator.validate,"},{"line_number":2702,"context_line":"                          request_to_validate)"},{"line_number":2703,"context_line":""},{"line_number":2704,"context_line":"    def test_validate_limit_create_request_without_required_fails(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_793f7fde","side":"PARENT","line":2701,"range":{"start_line":2694,"start_character":0,"end_line":2701,"end_character":64},"updated":"2018-10-16 05:42:54.000000000","message":"This was rolled into the other test right?","commit_id":"46c2fdd683185114870aa483b8bb2fd8150ea3c6"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"bb1ed2af677d73bc996f08498347d9a13c54c75e","unresolved":false,"context_lines":[{"line_number":2686,"context_line":"                            {\u0027description\u0027: 123},"},{"line_number":2687,"context_line":"                            {\u0027more_key\u0027: \u0027more_value\u0027}]"},{"line_number":2688,"context_line":"        for invalid_desc in _INVALID_FORMATS:"},{"line_number":2689,"context_line":"            request_to_validate \u003d [{\u0027project_id\u0027: uuid.uuid4().hex,"},{"line_number":2690,"context_line":"                                    \u0027service_id\u0027: uuid.uuid4().hex,"},{"line_number":2691,"context_line":"                                    \u0027region_id\u0027: \u0027RegionOne\u0027,"},{"line_number":2692,"context_line":"                                    \u0027resource_name\u0027: \u0027volume\u0027,"},{"line_number":2693,"context_line":"                                    \u0027resource_limit\u0027: 10,"},{"line_number":2694,"context_line":"                                    \u0027description\u0027: \u0027test description\u0027}]"},{"line_number":2695,"context_line":"            request_to_validate[0].update(invalid_desc)"},{"line_number":2696,"context_line":""},{"line_number":2697,"context_line":"            self.assertRaises(exception.SchemaValidationError,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_194e8b8f","line":2694,"range":{"start_line":2689,"start_character":34,"end_line":2694,"end_character":71},"updated":"2018-10-16 05:42:54.000000000","message":"This may fail, from the schema is only expects a limit object, not a list/array of them","commit_id":"8c710b61a9d39637f60338301a0067d82934ca41"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"471e92c95cd72079a8debff5daea57ab8a37137a","unresolved":false,"context_lines":[{"line_number":2699,"context_line":"                          self.create_limits_validator.validate,"},{"line_number":2700,"context_line":"                          request_to_validate)"},{"line_number":2701,"context_line":""},{"line_number":2702,"context_line":"    def test_validate_limit_update_request_with_addition_input_fails(self):"},{"line_number":2703,"context_line":"        request_to_validate \u003d {\u0027id\u0027: uuid.uuid4().hex,"},{"line_number":2704,"context_line":"                               \u0027resource_limit\u0027: 10,"},{"line_number":2705,"context_line":"                               \u0027more_key\u0027: \u0027more_value\u0027}"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_493463df","side":"PARENT","line":2702,"range":{"start_line":2702,"start_character":8,"end_line":2702,"end_character":68},"updated":"2018-10-25 14:11:25.000000000","message":"How come we\u0027re removing this test?","commit_id":"9f2b84608e7297cc7ed41497ddf45841325a8fd7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"471e92c95cd72079a8debff5daea57ab8a37137a","unresolved":false,"context_lines":[{"line_number":2696,"context_line":"                            {\u0027resource_limit\u0027: -10},"},{"line_number":2697,"context_line":"                            {\u0027resource_limit\u0027: 10000000000000000},"},{"line_number":2698,"context_line":"                            {\u0027description\u0027: 123},"},{"line_number":2699,"context_line":"                            {\u0027more_key\u0027: \u0027more_value\u0027}]"},{"line_number":2700,"context_line":"        for invalid_desc in _INVALID_FORMATS:"},{"line_number":2701,"context_line":"            request_to_validate \u003d [{\u0027project_id\u0027: uuid.uuid4().hex,"},{"line_number":2702,"context_line":"                                    \u0027service_id\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_4920e3f8","line":2699,"range":{"start_line":2699,"start_character":28,"end_line":2699,"end_character":54},"updated":"2018-10-25 14:11:25.000000000","message":"Is there a particular reason to add this to this test case?\n\nI think both test cases were originally kept separate because they were exercising two different situations using jsonschema. This test was making sure parameters types failed when they weren\u0027t what keystone expected. The test below that is being removed is making sure validation fails when we supply keystone parameters it doesn\u0027t understand.\n\nFor example, if I remove this line and run the test, it will still pass.","commit_id":"cffa52fb5a8bd7e7bd38e92d7bf0d11f63aa1562"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"16606982bcc4ba648a0031584e4d54c0f4fb67e8","unresolved":false,"context_lines":[{"line_number":2696,"context_line":"                            {\u0027resource_limit\u0027: -10},"},{"line_number":2697,"context_line":"                            {\u0027resource_limit\u0027: 10000000000000000},"},{"line_number":2698,"context_line":"                            {\u0027description\u0027: 123}]"},{"line_number":2699,"context_line":"        for invalid_desc in _INVALID_FORMATS:"},{"line_number":2700,"context_line":"            request_to_validate \u003d [{\u0027project_id\u0027: uuid.uuid4().hex,"},{"line_number":2701,"context_line":"                                    \u0027service_id\u0027: uuid.uuid4().hex,"},{"line_number":2702,"context_line":"                                    \u0027region_id\u0027: \u0027RegionOne\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_1da3b7b2","line":2699,"range":{"start_line":2699,"start_character":12,"end_line":2699,"end_character":24},"updated":"2018-10-30 13:41:38.000000000","message":"nit: invalid_attribute","commit_id":"230ae86a62d2be1666c080b5395a12695734451f"}]}
