)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e1fbd68d5512dd370f89aaee4228d256846f1e65","unresolved":false,"context_lines":[{"line_number":10,"context_line":"and this patch adds some tests which check these attributes to block"},{"line_number":11,"context_line":"the backward incompatibility change in the future."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch adds the checks of tenant usages API responses."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Partially implements blueprint nova-api-attribute-test"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAWH%2F%2B1K8%3D","line":13,"updated":"2014-03-23 22:52:39.000000000","message":"Please write response body of this API for easy review like the other commits.","commit_id":"96d3cfbf2f65597cc1e87f704c5dbca13cadec0d"}],"tempest/api_schema/compute/tenant_usages.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e1fbd68d5512dd370f89aaee4228d256846f1e65","unresolved":false,"context_lines":[{"line_number":21,"context_line":"                \u0027type\u0027: \u0027object\u0027,"},{"line_number":22,"context_line":"                \u0027properties\u0027: {"},{"line_number":23,"context_line":"                    \u0027tenant_usage\u0027: {"},{"line_number":24,"context_line":"                    \u0027type\u0027: \u0027string\u0027, \u0027minLength\u0027: 8, \u0027maxLength\u0027: 8"},{"line_number":25,"context_line":"                    }"},{"line_number":26,"context_line":"                },"},{"line_number":27,"context_line":"                \u0027required\u0027: [\u0027tenant_usage\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B1K4%3D","line":24,"updated":"2014-03-23 22:52:39.000000000","message":"I am not sure the reason of this min/maxLength, please write it here as NOTE.","commit_id":"96d3cfbf2f65597cc1e87f704c5dbca13cadec0d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e1fbd68d5512dd370f89aaee4228d256846f1e65","unresolved":false,"context_lines":[{"line_number":26,"context_line":"                },"},{"line_number":27,"context_line":"                \u0027required\u0027: [\u0027tenant_usage\u0027],"},{"line_number":28,"context_line":"            }"},{"line_number":29,"context_line":"        }"},{"line_number":30,"context_line":"    }"},{"line_number":31,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B1K0%3D","line":29,"updated":"2014-03-23 22:52:39.000000000","message":"Here requires\n\n \u0027required\u0027: [\u0027tenant_usages\u0027]","commit_id":"96d3cfbf2f65597cc1e87f704c5dbca13cadec0d"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"7482d423d2682dc34b99a8cf85b116295a628803","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                \u0027items\u0027: {"},{"line_number":48,"context_line":"                    \u0027type\u0027: \u0027object\u0027,"},{"line_number":49,"context_line":"                    \u0027properties\u0027: {"},{"line_number":50,"context_line":"                        \u0027server_usages\u0027: _server_usages,"},{"line_number":51,"context_line":"                        \u0027start\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":52,"context_line":"                        \u0027stop\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":53,"context_line":"                        \u0027tenant_id\u0027: {\u0027type\u0027: \u0027string\u0027},"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2Bp%2BE%3D","line":50,"updated":"2014-03-25 09:10:04.000000000","message":"Can you explain why the \u0027server_usages\u0027 is needed?\nI didn\u0027t find this element in the sample files.","commit_id":"efb418ece168a2870fe486b6e6bc5e5ef9f933d4"},{"author":{"_account_id":9533,"name":"Eiichi Aikawa","email":"aikawa@mxk.nes.nec.co.jp","username":"EiichiAikawa"},"change_message_id":"f47a86be0d556937ea6e8db32552499e7b7f37bc","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                \u0027items\u0027: {"},{"line_number":48,"context_line":"                    \u0027type\u0027: \u0027object\u0027,"},{"line_number":49,"context_line":"                    \u0027properties\u0027: {"},{"line_number":50,"context_line":"                        \u0027server_usages\u0027: _server_usages,"},{"line_number":51,"context_line":"                        \u0027start\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":52,"context_line":"                        \u0027stop\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":53,"context_line":"                        \u0027tenant_id\u0027: {\u0027type\u0027: \u0027string\u0027},"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2BaZE%3D","line":50,"in_reply_to":"AAAAWH%2F%2BonI%3D","updated":"2014-03-27 00:09:09.000000000","message":"Thanks for your reviewing and comments.\nI misunderstood.\nThe parameter server_usages is not \u0027required\u0027.","commit_id":"efb418ece168a2870fe486b6e6bc5e5ef9f933d4"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"91f5614343840528c8f1e2a0149fc0421ca13839","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                \u0027items\u0027: {"},{"line_number":48,"context_line":"                    \u0027type\u0027: \u0027object\u0027,"},{"line_number":49,"context_line":"                    \u0027properties\u0027: {"},{"line_number":50,"context_line":"                        \u0027server_usages\u0027: _server_usages,"},{"line_number":51,"context_line":"                        \u0027start\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":52,"context_line":"                        \u0027stop\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"},{"line_number":53,"context_line":"                        \u0027tenant_id\u0027: {\u0027type\u0027: \u0027string\u0027},"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2BonI%3D","line":50,"in_reply_to":"AAAAWH%2F%2Bp%2BE%3D","updated":"2014-03-25 12:25:23.000000000","message":"I think server_usages should be optional rather than required. if detailed is passed as an argument then server_usages is returned (though our API samples don\u0027t show that option, they should!)","commit_id":"efb418ece168a2870fe486b6e6bc5e5ef9f933d4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4844a580da2d977b846d8161eaf7936d38da3a43","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            \u0027tenant_usages\u0027: {"},{"line_number":50,"context_line":"                \u0027type\u0027: \u0027array\u0027,"},{"line_number":51,"context_line":"                \u0027items\u0027: {"},{"line_number":52,"context_line":"                    \u0027type\u0027: \u0027object\u0027,"},{"line_number":53,"context_line":"                    \u0027properties\u0027: {"},{"line_number":54,"context_line":"                        \u0027server_usages\u0027: _server_usages,"},{"line_number":55,"context_line":"                        \u0027start\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027},"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F9T90%3D","line":52,"updated":"2014-04-07 07:27:30.000000000","message":"I guess Chris said \"the part of list_tenant is the same as the one of get_tenant and we can share the code\". For example, line 52-65 and line 79-92 are almost the same. The difference is \u0027server_usages\u0027 only.","commit_id":"6791e3e3ba7122845ab780ef41c825096383aa9a"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"5e3fba5254785c9ac239dc08baea8098fd3191bd","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# \u0027required\u0027 of get_tenant is different from list_tenant\u0027s."},{"line_number":64,"context_line":"_tenant_data2 \u003d copy.deepcopy(_tenant_data)"},{"line_number":65,"context_line":"_tenant_data2[\u0027required\u0027] \u003d [\u0027server_usages\u0027, \u0027start\u0027, \u0027stop\u0027, \u0027tenant_id\u0027,"},{"line_number":66,"context_line":"                             \u0027total_hours\u0027, \u0027total_local_gb_usage\u0027,"},{"line_number":67,"context_line":"                             \u0027total_memory_mb_usage\u0027, \u0027total_vcpus_usage\u0027]"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAW3%2F%2FU3s%3D","line":65,"updated":"2014-04-15 11:03:57.000000000","message":"Consider renaming to \u0027_tenant_data_detailed\u0027 or to something more useful name. The number is the variable names are confusing, especially if it does not refers to the api version.","commit_id":"d39abb8c7d295a2dc39a37b8d7dcff40eb92bf23"}],"tempest/services/compute/json/tenant_usages_client.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e1fbd68d5512dd370f89aaee4228d256846f1e65","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":38,"context_line":"        body \u003d json.loads(body)"},{"line_number":39,"context_line":"        self.validate_response(schema.tenant, resp, body)"},{"line_number":40,"context_line":"        return resp, body[\u0027tenant_usages\u0027][0]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def get_tenant_usage(self, tenant_id, params\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B1Kg%3D","line":39,"updated":"2014-03-23 22:52:39.000000000","message":"This body contains a list, so the schema should include \u0027array\u0027 as its type.","commit_id":"96d3cfbf2f65597cc1e87f704c5dbca13cadec0d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e1fbd68d5512dd370f89aaee4228d256846f1e65","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":48,"context_line":"        body \u003d json.loads(body)"},{"line_number":49,"context_line":"        self.validate_response(schema.tenant, resp, body)"},{"line_number":50,"context_line":"        return resp, body[\u0027tenant_usage\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B1KY%3D","line":49,"updated":"2014-03-23 22:52:39.000000000","message":"From the following key \u0027tenant_usage\u0027, the first key of schema should be \u0027tenant_usage\u0027, not \u0027tenant_usages\u0027. so here should use different schema from the above list_tenant_usages one.","commit_id":"96d3cfbf2f65597cc1e87f704c5dbca13cadec0d"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"a6d6a32823eb91c750e2f0dd63991ccbcc95ea14","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":38,"context_line":"        body \u003d json.loads(body)"},{"line_number":39,"context_line":"        self.validate_response(schema.list_tenant, resp, body)"},{"line_number":40,"context_line":"        return resp, body[\u0027tenant_usages\u0027][0]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def get_tenant_usage(self, tenant_id, params\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F9gOU%3D","line":39,"updated":"2014-04-04 03:55:07.000000000","message":"perhaps we should have one schema where server_usages is a required field if list_tenant_usages is passed the detailed\u003d1 is passed, otherwise it is optional?","commit_id":"6791e3e3ba7122845ab780ef41c825096383aa9a"},{"author":{"_account_id":9533,"name":"Eiichi Aikawa","email":"aikawa@mxk.nes.nec.co.jp","username":"EiichiAikawa"},"change_message_id":"c5a38bd767c034d7cd94befe7858f8e3e1f2b7e4","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":38,"context_line":"        body \u003d json.loads(body)"},{"line_number":39,"context_line":"        self.validate_response(schema.list_tenant, resp, body)"},{"line_number":40,"context_line":"        return resp, body[\u0027tenant_usages\u0027][0]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def get_tenant_usage(self, tenant_id, params\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F9UCM%3D","line":39,"in_reply_to":"AAAAWH%2F9gOU%3D","updated":"2014-04-07 07:11:20.000000000","message":"Thank you for your comment.\nBut, I could not understand your meaning.\nIs there any my mistake/misunderstanding?\n\nI found some of my mistake. If there is any others, I want to correct it at same time.\nPlease kindly teach.","commit_id":"6791e3e3ba7122845ab780ef41c825096383aa9a"}]}
