)]}'
{"nova/api/openstack/compute/services.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c08d3cc648c332ff993a50a6dda14c93ba1c4ae5","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        return {\u0027services\u0027: _services}"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    @extensions.expected_errors((400, 404))"},{"line_number":193,"context_line":"    @validation.schema(services.service_update, \u00272.0\u0027, \u00272.10\u0027)"},{"line_number":194,"context_line":"    @validation.schema(services.service_update_v211, \u00272.11\u0027)"},{"line_number":195,"context_line":"    def update(self, req, id, body):"},{"line_number":196,"context_line":"        \"\"\"Perform service update\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_61fdc507","line":193,"updated":"2015-09-09 02:42:42.000000000","message":"So that means when people add new schema for different version, they need to know the min version \u00272.0\u0027, not the \u00272.1\u0027 anymore.\n\nAnd when we remove v2 code, we need turn all the \u00272.0\u0027 back to \u0027v2.1\u0027 again.\n\nHow about we add parameter called \u0027legacy_v2\u0027? So it should be like \n\n@validation.schema(legacy_v2_schema, legacy_v2\u003dTrue)\n\n\nThen we distinguish the legacy v2 out of the v2.1 api.\n\nWhat would you think?","commit_id":"92d504cad856b891339ec8708e29773d81d583e9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c3c47f098ec6292a4165bd7a172b92698d3a8f2f","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        return {\u0027services\u0027: _services}"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    @extensions.expected_errors((400, 404))"},{"line_number":193,"context_line":"    @validation.schema(services.service_update, \u00272.0\u0027, \u00272.10\u0027)"},{"line_number":194,"context_line":"    @validation.schema(services.service_update_v211, \u00272.11\u0027)"},{"line_number":195,"context_line":"    def update(self, req, id, body):"},{"line_number":196,"context_line":"        \"\"\"Perform service update\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_619f0566","line":193,"in_reply_to":"da20952f_21f10d02","updated":"2015-09-09 03:01:27.000000000","message":"yea, but confuse thing is wsgi.Controller.api_version start from v2.1\n\nso we may have something like this for one method:\n\n@wsgi.Controller.api_version(\u00272.1\u0027, \u00272.9\u0027)\n\n@validation.schema(schema, \u00272.0\u0027, \u00272.1\u0027)\n\n@validation.schema(schema, \u00272.1\u0027, \u00272.9\u0027)\n\nThis also make people confuse on this method allow from \u00272.1\u0027, but there is schema allow for \u00272.0\u0027\n\nBut anyway, this is temporary stuff. We will get rid all of it when we remove v2. And at this point, I think we don\u0027t want to waste time. So if other people ok with this also, I\u0027m ok also.","commit_id":"92d504cad856b891339ec8708e29773d81d583e9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1ab4942d5e055ad052fcc519e3aa416f8b7682f0","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        return {\u0027services\u0027: _services}"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    @extensions.expected_errors((400, 404))"},{"line_number":193,"context_line":"    @validation.schema(services.service_update, \u00272.0\u0027, \u00272.10\u0027)"},{"line_number":194,"context_line":"    @validation.schema(services.service_update_v211, \u00272.11\u0027)"},{"line_number":195,"context_line":"    def update(self, req, id, body):"},{"line_number":196,"context_line":"        \"\"\"Perform service update\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_c1a8517a","line":193,"in_reply_to":"da20952f_619f0566","updated":"2015-09-09 03:05:30.000000000","message":"Yeah, nice point. thanks.\nIt is nice to make them consistent for code maintenance, but we can do that after enough investigation/discussion after this as you said.","commit_id":"92d504cad856b891339ec8708e29773d81d583e9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"429fb2a98db02a4c1bd0dd0d2de712890fe167e2","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        return {\u0027services\u0027: _services}"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    @extensions.expected_errors((400, 404))"},{"line_number":193,"context_line":"    @validation.schema(services.service_update, \u00272.0\u0027, \u00272.10\u0027)"},{"line_number":194,"context_line":"    @validation.schema(services.service_update_v211, \u00272.11\u0027)"},{"line_number":195,"context_line":"    def update(self, req, id, body):"},{"line_number":196,"context_line":"        \"\"\"Perform service update\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_21f10d02","line":193,"in_reply_to":"da20952f_61fdc507","updated":"2015-09-09 02:48:03.000000000","message":"hum, I don\u0027t have strong opinion about that.\nnow this is only the decorator which contains \"2.1\" and we can cover all with this patch.\n\nlegacy_v2 is clear to work the schema for v2.0 compatible, but the decorator calls seems inconsistent for the code readability.\nIn addition, the other schemas which doesn\u0027t contain minimum version work for legacy v2.0 API also.\nSo I tend to prefer current patch way.","commit_id":"92d504cad856b891339ec8708e29773d81d583e9"}],"nova/tests/unit/test_api_validation.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"9afe5df8db367248ac4e1fd0168cf2d0830c66f3","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        schema_v20_str[\u0027properties\u0027][\u0027foo\u0027] \u003d {\u0027type\u0027: \u0027string\u0027}"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        @validation.schema(schema_v20_str, \u00272.0\u0027, \u00272.0\u0027)"},{"line_number":68,"context_line":"        @validation.schema(schema_v21_int, \u00272.1\u0027)"},{"line_number":69,"context_line":"        def post(req, body):"},{"line_number":70,"context_line":"            return \u0027Validation succeeded.\u0027"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_a7f3bbe6","line":68,"updated":"2015-09-10 05:43:21.000000000","message":"how about we add one more test when min_version is None?","commit_id":"6ae6845c63fab26475d603d67d69ad14fc9969bb"}]}
