)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"813dab009ed4289e5ed53f443b9760ee824d5379","unresolved":false,"context_lines":[{"line_number":9,"context_line":"By defining the API schema, it is possible to separate the validation"},{"line_number":10,"context_line":"code from the API method. The API method can be more simple."},{"line_number":11,"context_line":"In addition, a response of API validation error can be consistency for"},{"line_number":12,"context_line":"whole of Nova APIs."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially implements blueprint nova-api-validation-fw"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAUH%2F%2FpYM%3D","line":12,"updated":"2014-01-10 05:42:32.000000000","message":"better to change line11-12:\n\n .. be consistent for\n the whole Nova API.\n\nI know that was my old commit message of the other patch, sorry for the wrong message.","commit_id":"f0d5f2405cf20b1a25ceef1faae2e2f0424f4f8d"}],"nova/api/openstack/compute/schemas/v3/multinic.py":[{"author":{"_account_id":9533,"name":"Eiichi Aikawa","email":"aikawa@mxk.nes.nec.co.jp","username":"EiichiAikawa"},"change_message_id":"67072b84872483f846e8e85ddcf1f1bfd0fc4c1d","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"add_fixed_ip \u003d {"},{"line_number":14,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":15,"context_line":"        \u0027properties\u0027: {"},{"line_number":16,"context_line":"            \u0027add_fixed_ip\u0027: {"},{"line_number":17,"context_line":"                \u0027type\u0027: \u0027object\u0027,"},{"line_number":18,"context_line":"                \u0027properties\u0027: {"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2FZtc%3D","line":15,"updated":"2014-01-14 05:23:39.000000000","message":"It seems indent  is not correct.","commit_id":"c7c9dea434af3ed82b36cb2edc574c6f8e576801"}],"nova/api/openstack/compute/schemas/v3/multinic_schema.py":[{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"f4e79580fb89c950d8bfc9224601e09e240abf5d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2FtOI%3D","line":1,"updated":"2014-01-03 05:50:17.000000000","message":"Pls remove the fist line. Over the last few weeks this has been removed. http://openstack.10931.n7.nabble.com/Remove-vim-modelines-td21780.htm","commit_id":"bb08902a4aa5c8af5abd54a2f39451d9a2e5cf0a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c7416fb51d44f3c64477a32a32c48b4ac828142a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"                        \u0027minLength\u0027: 1, \u0027maxLength\u0027: 36,"},{"line_number":22,"context_line":"                    },"},{"line_number":23,"context_line":"                },"},{"line_number":24,"context_line":"                \u0027required\u0027: [\u0027network_id\u0027],"},{"line_number":25,"context_line":"            },"},{"line_number":26,"context_line":"        },"},{"line_number":27,"context_line":"        \u0027required\u0027: [\u0027add_fixed_ip\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FvAM%3D","line":24,"updated":"2014-01-09 02:24:07.000000000","message":"\u0027additionalProperties\u0027: False, is necessary here for blocking unexpected parameters.","commit_id":"38b207a23bff9b5ece389982911f9f5a536971af"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c7416fb51d44f3c64477a32a32c48b4ac828142a","unresolved":false,"context_lines":[{"line_number":24,"context_line":"                \u0027required\u0027: [\u0027network_id\u0027],"},{"line_number":25,"context_line":"            },"},{"line_number":26,"context_line":"        },"},{"line_number":27,"context_line":"        \u0027required\u0027: [\u0027add_fixed_ip\u0027],"},{"line_number":28,"context_line":"}"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FvAE%3D","line":27,"updated":"2014-01-09 02:24:07.000000000","message":"ditto: additionalProperties","commit_id":"38b207a23bff9b5ece389982911f9f5a536971af"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c7416fb51d44f3c64477a32a32c48b4ac828142a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                    \u0027type\u0027: \u0027string\u0027, \u0027minLength\u0027: 1, \u0027maxLength\u0027: 64,"},{"line_number":39,"context_line":"                },"},{"line_number":40,"context_line":"            },"},{"line_number":41,"context_line":"            \u0027required\u0027: [\u0027address\u0027],"},{"line_number":42,"context_line":"        },"},{"line_number":43,"context_line":"    },"},{"line_number":44,"context_line":"    \u0027required\u0027: [\u0027remove_fixed_ip\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FvAA%3D","line":41,"updated":"2014-01-09 02:24:07.000000000","message":"ditto: additionalProperties","commit_id":"38b207a23bff9b5ece389982911f9f5a536971af"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c7416fb51d44f3c64477a32a32c48b4ac828142a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            \u0027required\u0027: [\u0027address\u0027],"},{"line_number":42,"context_line":"        },"},{"line_number":43,"context_line":"    },"},{"line_number":44,"context_line":"    \u0027required\u0027: [\u0027remove_fixed_ip\u0027],"},{"line_number":45,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2Fu%2F8%3D","line":44,"updated":"2014-01-09 02:24:07.000000000","message":"ditto: additionalProperties","commit_id":"38b207a23bff9b5ece389982911f9f5a536971af"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5b24be13f16b1b5bcc6f6085f8929906a0e369ac","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":38,"context_line":"            \u0027properties\u0027: {"},{"line_number":39,"context_line":"                \u0027address\u0027: {"},{"line_number":40,"context_line":"                    \u0027type\u0027: \u0027string\u0027, \u0027minLength\u0027: 1, \u0027maxLength\u0027: 64,"},{"line_number":41,"context_line":"                },"},{"line_number":42,"context_line":"            },"},{"line_number":43,"context_line":"            \u0027required\u0027: [\u0027address\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Ft9E%3D","line":40,"updated":"2014-01-09 08:54:21.000000000","message":"jsonschema has ip-address validation.\n\nbetter to add\n\n \u0027format\u0027: [\u0027ipv4\u0027, \u0027ipv6\u0027],\n\ninstead of minLength and maxLength.\n\nIf using them, unit tests are necessary for checking these behaviors in nova/tests/test_api_validation.py.\n\nhttp://json-schema.org/example2.html","commit_id":"5c76885babc5238ce020c6ec21cd033e3ce72d62"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"813dab009ed4289e5ed53f443b9760ee824d5379","unresolved":false,"context_lines":[{"line_number":18,"context_line":"                \u0027properties\u0027: {"},{"line_number":19,"context_line":"                    \u0027network_id\u0027: {"},{"line_number":20,"context_line":"                        \u0027type\u0027: [\u0027string\u0027, \u0027number\u0027],"},{"line_number":21,"context_line":"                        \u0027minLength\u0027: 1, \u0027maxLength\u0027: 36,"},{"line_number":22,"context_line":"                    },"},{"line_number":23,"context_line":"                },"},{"line_number":24,"context_line":"                \u0027required\u0027: [\u0027network_id\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FpWc%3D","line":21,"updated":"2014-01-10 05:42:32.000000000","message":"Nice definition.\nI guess this maxLength is from the column \u0027network_id\u0027 of neutron\u0027s table.\n\nI feel it is better to write some comments about it. That would be nice for maintenance and review.","commit_id":"f0d5f2405cf20b1a25ceef1faae2e2f0424f4f8d"}],"nova/tests/api/openstack/compute/plugins/v3/test_multinic.py":[{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"f4e79580fb89c950d8bfc9224601e09e240abf5d","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        self.assertEqual(last_remove_fixed_ip, (UUID, \u002710.10.10.1\u0027))"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def test_remove_fixed_ip_empty_address(self):"},{"line_number":125,"context_line":"        body \u003d {\u0027add_fixed_ip\u0027: {\u0027address\u0027: \u0027\u0027}}"},{"line_number":126,"context_line":"        req \u003d webob.Request.blank(\u0027/v3/servers/%s/action\u0027 % UUID)"},{"line_number":127,"context_line":"        req.method \u003d \u0027POST\u0027"},{"line_number":128,"context_line":"        req.body \u003d jsonutils.dumps(body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2FtNo%3D","line":125,"updated":"2014-01-03 05:50:17.000000000","message":"remove_fixed_ip?","commit_id":"bb08902a4aa5c8af5abd54a2f39451d9a2e5cf0a"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"f4e79580fb89c950d8bfc9224601e09e240abf5d","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                        req, \u00273\u0027, body\u003dbody)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def test_remove_fixed_ip_address_bigger_than_64(self):"},{"line_number":136,"context_line":"        body \u003d {\u0027add_fixed_ip\u0027: {\u0027address\u0027: \u0027a\u0027 * 65}}"},{"line_number":137,"context_line":"        req \u003d webob.Request.blank(\u0027/v3/servers/%s/action\u0027 % UUID)"},{"line_number":138,"context_line":"        req.method \u003d \u0027POST\u0027"},{"line_number":139,"context_line":"        req.body \u003d jsonutils.dumps(body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2FtNk%3D","line":136,"updated":"2014-01-03 05:50:17.000000000","message":"ditto","commit_id":"bb08902a4aa5c8af5abd54a2f39451d9a2e5cf0a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"813dab009ed4289e5ed53f443b9760ee824d5379","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import webob"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from nova.api.openstack.compute.plugins.v3 import multinic"},{"line_number":19,"context_line":"from nova import compute"},{"line_number":20,"context_line":"from nova import exception"},{"line_number":21,"context_line":"from nova.openstack.common import jsonutils"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FpZU%3D","line":18,"updated":"2014-01-10 05:42:32.000000000","message":"If applying the following my comment, we can remove this change and line20 and line 58.","commit_id":"f0d5f2405cf20b1a25ceef1faae2e2f0424f4f8d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"813dab009ed4289e5ed53f443b9760ee824d5379","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        self.assertRaises(exception.ValidationError,"},{"line_number":82,"context_line":"                        self.multinicController._add_fixed_ip,"},{"line_number":83,"context_line":"                        req, \u00273\u0027, body\u003dbody)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_add_fixed_ip_network_id_bigger_than_36(self):"},{"line_number":86,"context_line":"        body \u003d {\u0027add_fixed_ip\u0027: {\u0027network_id\u0027: \u0027a\u0027 * 37}}"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FpZg%3D","line":83,"updated":"2014-01-10 05:42:32.000000000","message":"better to test with get_response() like the other tests because it would be more suitable REST service.\n\nI guess the following code would be enough instead of line81-83:\n\n  resp \u003d req.get_response(self.app)\n  self.assertEqual(400, resp.status_int)","commit_id":"f0d5f2405cf20b1a25ceef1faae2e2f0424f4f8d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"813dab009ed4289e5ed53f443b9760ee824d5379","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        self.assertRaises(exception.ValidationError,"},{"line_number":93,"context_line":"                        self.multinicController._add_fixed_ip,"},{"line_number":94,"context_line":"                        req, \u00273\u0027, body\u003dbody)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_add_fixed_ip_no_network(self):"},{"line_number":97,"context_line":"        global last_add_fixed_ip"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FpZc%3D","line":94,"updated":"2014-01-10 05:42:32.000000000","message":"ditto","commit_id":"f0d5f2405cf20b1a25ceef1faae2e2f0424f4f8d"}]}
