)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c9f1b4fb21c924afea9bf2d7fe10a674a6add76c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"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"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATn%2F9ECM%3D","line":11,"updated":"2013-12-17 06:16:30.000000000","message":".. can be consistent for the whole Nova API.","commit_id":"6595e3e623b24395f0965dbb72b2872a237002d3"}],"nova/api/openstack/compute/plugins/v3/flavor_manage.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1ef7250b8a40fd884622ac11165df1a1592b7feb","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        name \u003d vals.get(\u0027name\u0027)"},{"line_number":68,"context_line":"        flavorid \u003d vals.get(\u0027id\u0027)"},{"line_number":69,"context_line":"        memory \u003d vals.get(\u0027ram\u0027)"},{"line_number":70,"context_line":"        vcpus \u003d vals.get(\u0027vcpus\u0027)"},{"line_number":71,"context_line":"        root_gb \u003d vals.get(\u0027disk\u0027)"},{"line_number":72,"context_line":"        ephemeral_gb \u003d vals.get(\u0027ephemeral\u0027, 0)"},{"line_number":73,"context_line":"        swap \u003d vals.get(\u0027swap\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F9Vg%3D","line":70,"updated":"2013-12-26 09:59:44.000000000","message":"nit, I prefer use vals[\u0027xxx\u0027] for required attributes. If there is something wrong in schema, it will raise exception immediately, and catch by extensions.expected_errors","commit_id":"bd789e2b132578f047b72de6d0c02c5b995536ed"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"2cbbe229c16939f2fcd79bcc644cfc93fac48c52","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        name \u003d vals.get(\u0027name\u0027)"},{"line_number":68,"context_line":"        flavorid \u003d vals.get(\u0027id\u0027)"},{"line_number":69,"context_line":"        memory \u003d vals.get(\u0027ram\u0027)"},{"line_number":70,"context_line":"        vcpus \u003d vals.get(\u0027vcpus\u0027)"},{"line_number":71,"context_line":"        root_gb \u003d vals.get(\u0027disk\u0027)"},{"line_number":72,"context_line":"        ephemeral_gb \u003d vals.get(\u0027ephemeral\u0027, 0)"},{"line_number":73,"context_line":"        swap \u003d vals.get(\u0027swap\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F9R8%3D","line":70,"in_reply_to":"AAAAT3%2F%2F9Vg%3D","updated":"2013-12-26 10:16:56.000000000","message":"Not nit, thank you.\nDone.","commit_id":"bd789e2b132578f047b72de6d0c02c5b995536ed"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"42697dcbfabd9e8ccf2e173bb08d3f345cd7e79c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        except (exception.FlavorExists,"},{"line_number":88,"context_line":"                exception.FlavorIdExists) as err:"},{"line_number":89,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003derr.format_message())"},{"line_number":90,"context_line":"        except exception.InvalidInput as exc:"},{"line_number":91,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexc.format_message())"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        return self._view_builder.show(req, flavor)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F9Z0%3D","line":90,"updated":"2013-12-26 09:43:38.000000000","message":"should we remove this line? because it won\u0027t happend.","commit_id":"bd789e2b132578f047b72de6d0c02c5b995536ed"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"2cbbe229c16939f2fcd79bcc644cfc93fac48c52","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        except (exception.FlavorExists,"},{"line_number":88,"context_line":"                exception.FlavorIdExists) as err:"},{"line_number":89,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003derr.format_message())"},{"line_number":90,"context_line":"        except exception.InvalidInput as exc:"},{"line_number":91,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexc.format_message())"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        return self._view_builder.show(req, flavor)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F9UE%3D","line":90,"in_reply_to":"AAAAT3%2F%2F9Z0%3D","updated":"2013-12-26 10:16:56.000000000","message":"Thank you, I forgot to delete.","commit_id":"bd789e2b132578f047b72de6d0c02c5b995536ed"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5e37f9e51bfcfee5d04222c1a3f2e693c49666b0","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    @wsgi.action(\"create\")"},{"line_number":58,"context_line":"    @extensions.expected_errors((400, 409))"},{"line_number":59,"context_line":"    @wsgi.serializers(xml\u003dflavors_api.FlavorTemplate)"},{"line_number":60,"context_line":"    @validation.schema(request_body_schema\u003dflavor_manage_schema.create)"},{"line_number":61,"context_line":"    def _create(self, req, body):"},{"line_number":62,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":63,"context_line":"        authorize(context)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FgRY%3D","line":60,"updated":"2014-01-13 08:42:01.000000000","message":"flavor_manage_schema.py should be renamed to flavor_manage.py. In addition, request_body_schema is not necessary.\n\nhttps://review.openstack.org/#/c/66238/ would be a good sample.\n\nRef: http://lists.openstack.org/pipermail/openstack-dev/2014-January/024067.html","commit_id":"cbdcb6693d755efcdd8d8d7d40b3005aec7b5ed6"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"4b93e1e93fbd748c8f87c748905490d254ec0bea","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    @wsgi.action(\"create\")"},{"line_number":58,"context_line":"    @extensions.expected_errors((400, 409))"},{"line_number":59,"context_line":"    @wsgi.serializers(xml\u003dflavors_api.FlavorTemplate)"},{"line_number":60,"context_line":"    @validation.schema(request_body_schema\u003dflavor_manage_schema.create)"},{"line_number":61,"context_line":"    def _create(self, req, body):"},{"line_number":62,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":63,"context_line":"        authorize(context)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FZ00%3D","line":60,"in_reply_to":"AAAAUH%2F%2FgRY%3D","updated":"2014-01-14 04:25:10.000000000","message":"Done","commit_id":"cbdcb6693d755efcdd8d8d7d40b3005aec7b5ed6"}],"nova/api/openstack/compute/schemas/v3/flavor_manage.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"3c10268b7cef972d07a4921c40434cee2ad7ff12","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":"# Copyright 2013 NEC Corporation.  All rights reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2FGvA%3D","line":1,"updated":"2014-01-17 11:51:34.000000000","message":"better to remove line1-2.","commit_id":"edee0f1bc7c7f547e68a35423acdbf9f569f2703"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"e35d783f656b6d5ad518af85e752c8525e9274d4","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":"# Copyright 2013 NEC Corporation.  All rights reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BxxM%3D","line":1,"in_reply_to":"AAAAUH%2F%2FGvA%3D","updated":"2014-01-22 09:51:51.000000000","message":"Done","commit_id":"edee0f1bc7c7f547e68a35423acdbf9f569f2703"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"3c10268b7cef972d07a4921c40434cee2ad7ff12","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":"# Copyright 2013 NEC Corporation.  All rights reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2FGus%3D","line":3,"updated":"2014-01-17 11:51:34.000000000","message":"The latest patch is updated 2014, so better to change here to 2014.","commit_id":"edee0f1bc7c7f547e68a35423acdbf9f569f2703"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"e35d783f656b6d5ad518af85e752c8525e9274d4","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":"# Copyright 2013 NEC Corporation.  All rights reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BxxI%3D","line":3,"in_reply_to":"AAAAUH%2F%2FGus%3D","updated":"2014-01-22 09:51:51.000000000","message":"Done","commit_id":"edee0f1bc7c7f547e68a35423acdbf9f569f2703"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b0ee1fdd3833e8cb73348c4aa65f6755008c51cd","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                    \u0027type\u0027: [\u0027string\u0027, \u0027number\u0027],"},{"line_number":34,"context_line":"                    \u0027minLength\u0027: 1, \u0027maxLength\u0027: 255,"},{"line_number":35,"context_line":"                    \u0027pattern\u0027: (\u0027^[a-zA-Z0-9.-_]+[a-zA-Z0-9.-_ ]*\u0027"},{"line_number":36,"context_line":"                                \u0027[a-zA-Z0-9.-_]+$\u0027)"},{"line_number":37,"context_line":"                },"},{"line_number":38,"context_line":"                # positive ( \u003e 0) integer"},{"line_number":39,"context_line":"                \u0027ram\u0027: {"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2B%2BnE%3D","line":36,"updated":"2014-01-20 07:07:00.000000000","message":"This pattern denies \"9\" as a flavor-id because of including two \"+\" in the pattern.","commit_id":"edee0f1bc7c7f547e68a35423acdbf9f569f2703"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"66342d304772dd2c0586f04b4c07cc6342099d64","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                    \u0027type\u0027: [\u0027string\u0027, \u0027number\u0027],"},{"line_number":34,"context_line":"                    \u0027minLength\u0027: 1, \u0027maxLength\u0027: 255,"},{"line_number":35,"context_line":"                    \u0027pattern\u0027: (\u0027^[a-zA-Z0-9.-_]+[a-zA-Z0-9.-_ ]*\u0027"},{"line_number":36,"context_line":"                                \u0027[a-zA-Z0-9.-_]+$\u0027)"},{"line_number":37,"context_line":"                },"},{"line_number":38,"context_line":"                # positive ( \u003e 0) integer"},{"line_number":39,"context_line":"                \u0027ram\u0027: {"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2B9Wc%3D","line":36,"in_reply_to":"AAAAUH%2F%2B%2Bjo%3D","updated":"2014-01-20 12:08:02.000000000","message":"You could also try:\n    \u0027^(?! )[a-zA-Z0-9. _-]+(?\u003c! )$\u0027\n\n?! is negative look-ahead.\n?\u003c! is negative look-behind.\n\n In [19]: re.match(pat, \u0027\u0027) is not None\n Out[19]: False\n\n In [20]: re.match(pat, \u0027a\u0027) is not None\n Out[20]: True\n\n In [21]: re.match(pat, \u0027 a\u0027) is not None\n Out[21]: False\n\n In [22]: re.match(pat, \u0027 \u0027) is not None\n Out[22]: False\n\n In [23]: re.match(pat, \u0027a \u0027) is not None\n Out[23]: False\n\n In [24]: re.match(pat, \u0027a a\u0027) is not None\n Out[24]: True","commit_id":"edee0f1bc7c7f547e68a35423acdbf9f569f2703"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"15d707e5b4c51cee0b799105896b396f152e065e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                    \u0027type\u0027: [\u0027string\u0027, \u0027number\u0027],"},{"line_number":34,"context_line":"                    \u0027minLength\u0027: 1, \u0027maxLength\u0027: 255,"},{"line_number":35,"context_line":"                    \u0027pattern\u0027: (\u0027^[a-zA-Z0-9.-_]+[a-zA-Z0-9.-_ ]*\u0027"},{"line_number":36,"context_line":"                                \u0027[a-zA-Z0-9.-_]+$\u0027)"},{"line_number":37,"context_line":"                },"},{"line_number":38,"context_line":"                # positive ( \u003e 0) integer"},{"line_number":39,"context_line":"                \u0027ram\u0027: {"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2B%2Bjo%3D","line":36,"in_reply_to":"AAAAUH%2F%2B%2BnE%3D","updated":"2014-01-20 07:29:31.000000000","message":"I guess the following pattern would match to this case:\n\n    \u0027allOf\u0027: [\n        {\u0027pattern\u0027: \u0027^[a-zA-Z0-9._-]+[a-zA-Z0-9. _-]*$\u0027},\n        {\u0027pattern\u0027: \u0027^[a-zA-Z0-9. _-]*[a-zA-Z0-9._-]+$\u0027},\n    ],","commit_id":"edee0f1bc7c7f547e68a35423acdbf9f569f2703"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b42c796b5ec3506fff0a8d80f3c2bfbb2bfa1413","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                    \u0027type\u0027: [\u0027string\u0027, \u0027number\u0027],"},{"line_number":34,"context_line":"                    \u0027minLength\u0027: 1, \u0027maxLength\u0027: 255,"},{"line_number":35,"context_line":"                    \u0027pattern\u0027: (\u0027^[a-zA-Z0-9.-_]+[a-zA-Z0-9.-_ ]*\u0027"},{"line_number":36,"context_line":"                                \u0027[a-zA-Z0-9.-_]+$\u0027)"},{"line_number":37,"context_line":"                },"},{"line_number":38,"context_line":"                # positive ( \u003e 0) integer"},{"line_number":39,"context_line":"                \u0027ram\u0027: {"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2B9UA%3D","line":36,"in_reply_to":"AAAAUH%2F%2B9Wc%3D","updated":"2014-01-20 12:15:38.000000000","message":"Alexis, thanks.\nYour pattern is smarter, nice advice.","commit_id":"edee0f1bc7c7f547e68a35423acdbf9f569f2703"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"e35d783f656b6d5ad518af85e752c8525e9274d4","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                    \u0027type\u0027: [\u0027string\u0027, \u0027number\u0027],"},{"line_number":34,"context_line":"                    \u0027minLength\u0027: 1, \u0027maxLength\u0027: 255,"},{"line_number":35,"context_line":"                    \u0027pattern\u0027: (\u0027^[a-zA-Z0-9.-_]+[a-zA-Z0-9.-_ ]*\u0027"},{"line_number":36,"context_line":"                                \u0027[a-zA-Z0-9.-_]+$\u0027)"},{"line_number":37,"context_line":"                },"},{"line_number":38,"context_line":"                # positive ( \u003e 0) integer"},{"line_number":39,"context_line":"                \u0027ram\u0027: {"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2Bxwk%3D","line":36,"in_reply_to":"AAAAUH%2F%2B9Wc%3D","updated":"2014-01-22 09:51:51.000000000","message":"Done","commit_id":"edee0f1bc7c7f547e68a35423acdbf9f569f2703"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"86fc80decaca465c2cdee461d8b8491ce591d7f4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    \u0027pattern\u0027: \u0027^[0-9]*$\u0027, \u0027minimum\u0027: 0"},{"line_number":62,"context_line":"                },"},{"line_number":63,"context_line":"                # positive ( \u003e 0) float"},{"line_number":64,"context_line":"                \u0027rxtx_factor\u0027: {"},{"line_number":65,"context_line":"                    \u0027type\u0027: [\u0027number\u0027, \u0027string\u0027],"},{"line_number":66,"context_line":"                    \u0027pattern\u0027: \u0027[0-9]+[0-9.]*[0-9]*$\u0027,"},{"line_number":67,"context_line":"                    \u0027minimum\u0027: 0, \u0027exclusiveMinimum\u0027: True"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BzEk%3D","line":64,"updated":"2014-01-22 01:50:39.000000000","message":"JUST NOTE: If https://review.openstack.org/#/c/57381/ is merged, this name should be changed to \u0027os-flavor-rxtx:rxtx_factor\u0027.","commit_id":"edee0f1bc7c7f547e68a35423acdbf9f569f2703"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"e35d783f656b6d5ad518af85e752c8525e9274d4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    \u0027pattern\u0027: \u0027^[0-9]*$\u0027, \u0027minimum\u0027: 0"},{"line_number":62,"context_line":"                },"},{"line_number":63,"context_line":"                # positive ( \u003e 0) float"},{"line_number":64,"context_line":"                \u0027rxtx_factor\u0027: {"},{"line_number":65,"context_line":"                    \u0027type\u0027: [\u0027number\u0027, \u0027string\u0027],"},{"line_number":66,"context_line":"                    \u0027pattern\u0027: \u0027[0-9]+[0-9.]*[0-9]*$\u0027,"},{"line_number":67,"context_line":"                    \u0027minimum\u0027: 0, \u0027exclusiveMinimum\u0027: True"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BxwA%3D","line":64,"in_reply_to":"AAAAUH%2F%2BzEk%3D","updated":"2014-01-22 09:51:51.000000000","message":"OK.","commit_id":"edee0f1bc7c7f547e68a35423acdbf9f569f2703"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"14066dd6b608d16b1f0224fc4ada7542782db79f","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                # positive ( \u003e 0) float"},{"line_number":61,"context_line":"                \u0027rxtx_factor\u0027: {"},{"line_number":62,"context_line":"                    \u0027type\u0027: [\u0027number\u0027, \u0027string\u0027],"},{"line_number":63,"context_line":"                    \u0027pattern\u0027: \u0027[0-9]+[0-9.]*[0-9]*$\u0027,"},{"line_number":64,"context_line":"                    \u0027minimum\u0027: 0, \u0027exclusiveMinimum\u0027: True"},{"line_number":65,"context_line":"                },"},{"line_number":66,"context_line":"                \u0027flavor-access:is_public\u0027: parameter_types.boolean,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2BtII%3D","line":63,"updated":"2014-01-23 00:40:06.000000000","message":"^ is necessary in the pattern.\n\nalso the above pattern cannot catch \u00270.0.0\u0027 as an invalid parameter.\nso how about  \u0027pattern\u0027: \u0027^[0-9]+(\\.[0-9]+)?$\u0027, ?","commit_id":"1e70b9919ab0a30ddf0cdf9428ed28d52f42358f"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"656bc7fb9bbf0b8e4225e40a975fad787f49a2a7","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                # positive ( \u003e 0) float"},{"line_number":61,"context_line":"                \u0027rxtx_factor\u0027: {"},{"line_number":62,"context_line":"                    \u0027type\u0027: [\u0027number\u0027, \u0027string\u0027],"},{"line_number":63,"context_line":"                    \u0027pattern\u0027: \u0027[0-9]+[0-9.]*[0-9]*$\u0027,"},{"line_number":64,"context_line":"                    \u0027minimum\u0027: 0, \u0027exclusiveMinimum\u0027: True"},{"line_number":65,"context_line":"                },"},{"line_number":66,"context_line":"                \u0027flavor-access:is_public\u0027: parameter_types.boolean,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2Bry8%3D","line":63,"in_reply_to":"AAAAUH%2F%2Br1Q%3D","updated":"2014-01-23 07:51:55.000000000","message":"Ahhhh, sorry, I mistook. I tried to int(). rxtx_factor is float. excuse me.","commit_id":"1e70b9919ab0a30ddf0cdf9428ed28d52f42358f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"6be09241c71ea0d7b0242fb90d90cba98730719f","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                # positive ( \u003e 0) float"},{"line_number":61,"context_line":"                \u0027rxtx_factor\u0027: {"},{"line_number":62,"context_line":"                    \u0027type\u0027: [\u0027number\u0027, \u0027string\u0027],"},{"line_number":63,"context_line":"                    \u0027pattern\u0027: \u0027[0-9]+[0-9.]*[0-9]*$\u0027,"},{"line_number":64,"context_line":"                    \u0027minimum\u0027: 0, \u0027exclusiveMinimum\u0027: True"},{"line_number":65,"context_line":"                },"},{"line_number":66,"context_line":"                \u0027flavor-access:is_public\u0027: parameter_types.boolean,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2Br1Q%3D","line":63,"in_reply_to":"AAAAUH%2F%2Br20%3D","updated":"2014-01-23 07:46:29.000000000","message":"No, ValueError does not happen.\n\n \u003e\u003e\u003e value \u003d \u002700.11\u0027\n \u003e\u003e\u003e print float(value)\n 0.11\n\nand my proposal can support the above 0 padding pattern.","commit_id":"1e70b9919ab0a30ddf0cdf9428ed28d52f42358f"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"f2805726fdb6f1bc0d27364c88e55c5dd569af75","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                # positive ( \u003e 0) float"},{"line_number":61,"context_line":"                \u0027rxtx_factor\u0027: {"},{"line_number":62,"context_line":"                    \u0027type\u0027: [\u0027number\u0027, \u0027string\u0027],"},{"line_number":63,"context_line":"                    \u0027pattern\u0027: \u0027[0-9]+[0-9.]*[0-9]*$\u0027,"},{"line_number":64,"context_line":"                    \u0027minimum\u0027: 0, \u0027exclusiveMinimum\u0027: True"},{"line_number":65,"context_line":"                },"},{"line_number":66,"context_line":"                \u0027flavor-access:is_public\u0027: parameter_types.boolean,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2Br20%3D","line":63,"in_reply_to":"AAAAUH%2F%2BtII%3D","updated":"2014-01-23 07:36:59.000000000","message":"mmm,  \u0027^[0-9]+(\\.[0-9]+)?$\u0027 allows \"00.11\" and will it occur ValueError? Is \u0027^[0-9]?(\\.[0-9]+)?$\u0027 better?","commit_id":"1e70b9919ab0a30ddf0cdf9428ed28d52f42358f"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"78258f5c421fa37b9039d7aac67c70bc877b3f89","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                    \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],"},{"line_number":58,"context_line":"                    \u0027pattern\u0027: \u0027^[0-9]*$\u0027, \u0027minimum\u0027: 0"},{"line_number":59,"context_line":"                },"},{"line_number":60,"context_line":"                # positive ( \u003e 0) float"},{"line_number":61,"context_line":"                \u0027rxtx_factor\u0027: {"},{"line_number":62,"context_line":"                    \u0027type\u0027: [\u0027number\u0027, \u0027string\u0027],"},{"line_number":63,"context_line":"                    \u0027pattern\u0027: \u0027^[0-9]+(\\.[0-9]+)?$\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2BrI0%3D","line":60,"updated":"2014-01-23 10:23:06.000000000","message":"nit: this should say \"non-negative ( \u003e\u003d 0) float\" as the minimum is 0 not 1","commit_id":"d861258f20aacc18d2d60a0a443d8371b9fe3f23"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"e1a0aaaf8902fbee1b66b3755d6fc72342ca8ec7","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                    \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],"},{"line_number":58,"context_line":"                    \u0027pattern\u0027: \u0027^[0-9]*$\u0027, \u0027minimum\u0027: 0"},{"line_number":59,"context_line":"                },"},{"line_number":60,"context_line":"                # positive ( \u003e 0) float"},{"line_number":61,"context_line":"                \u0027rxtx_factor\u0027: {"},{"line_number":62,"context_line":"                    \u0027type\u0027: [\u0027number\u0027, \u0027string\u0027],"},{"line_number":63,"context_line":"                    \u0027pattern\u0027: \u0027^[0-9]+(\\.[0-9]+)?$\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2BqLE%3D","line":60,"in_reply_to":"AAAAUH%2F%2BqPE%3D","updated":"2014-01-23 13:17:52.000000000","message":"Ah right you are, apologies","commit_id":"d861258f20aacc18d2d60a0a443d8371b9fe3f23"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"92a9ed8a15c112796b4cd8a698caa3b91daf3030","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                    \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],"},{"line_number":58,"context_line":"                    \u0027pattern\u0027: \u0027^[0-9]*$\u0027, \u0027minimum\u0027: 0"},{"line_number":59,"context_line":"                },"},{"line_number":60,"context_line":"                # positive ( \u003e 0) float"},{"line_number":61,"context_line":"                \u0027rxtx_factor\u0027: {"},{"line_number":62,"context_line":"                    \u0027type\u0027: [\u0027number\u0027, \u0027string\u0027],"},{"line_number":63,"context_line":"                    \u0027pattern\u0027: \u0027^[0-9]+(\\.[0-9]+)?$\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2BqPE%3D","line":60,"in_reply_to":"AAAAUH%2F%2BrI0%3D","updated":"2014-01-23 13:11:35.000000000","message":"@Alexis\n\nI think current comment is right because of \u0027exclusiveMinimum\u0027: True","commit_id":"d861258f20aacc18d2d60a0a443d8371b9fe3f23"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"69d83ae3f560d279139f5d3b6f2590b36e7a9886","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                    \u0027pattern\u0027: \u0027^[0-9]*$\u0027, \u0027minimum\u0027: 0"},{"line_number":59,"context_line":"                },"},{"line_number":60,"context_line":"                # positive ( \u003e 0) float"},{"line_number":61,"context_line":"                \u0027rxtx_factor\u0027: {"},{"line_number":62,"context_line":"                    \u0027type\u0027: [\u0027number\u0027, \u0027string\u0027],"},{"line_number":63,"context_line":"                    \u0027pattern\u0027: \u0027^[0-9]+(\\.[0-9]+)?$\u0027,"},{"line_number":64,"context_line":"                    \u0027minimum\u0027: 0, \u0027exclusiveMinimum\u0027: True"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2BUH4%3D","line":61,"updated":"2014-01-28 02:52:45.000000000","message":"https://review.openstack.org/#/c/57381/ has been merged, and need to change here to \u0027os-flavor-rxtx:rxtx_factor\u0027.","commit_id":"d861258f20aacc18d2d60a0a443d8371b9fe3f23"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"e9997d9cbf39ff93d2daa96d1da1847707e0b0df","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                    \u0027pattern\u0027: \u0027^[0-9]*$\u0027, \u0027minimum\u0027: 0"},{"line_number":59,"context_line":"                },"},{"line_number":60,"context_line":"                # positive ( \u003e 0) float"},{"line_number":61,"context_line":"                \u0027rxtx_factor\u0027: {"},{"line_number":62,"context_line":"                    \u0027type\u0027: [\u0027number\u0027, \u0027string\u0027],"},{"line_number":63,"context_line":"                    \u0027pattern\u0027: \u0027^[0-9]+(\\.[0-9]+)?$\u0027,"},{"line_number":64,"context_line":"                    \u0027minimum\u0027: 0, \u0027exclusiveMinimum\u0027: True"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2BSvc%3D","line":61,"in_reply_to":"AAAAUH%2F%2BUH4%3D","updated":"2014-01-28 10:35:21.000000000","message":"Done","commit_id":"d861258f20aacc18d2d60a0a443d8371b9fe3f23"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"89b81fc318b935ced2e953cde543c8c147ccfe27","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                \u0027name\u0027: {"},{"line_number":26,"context_line":"                    \u0027type\u0027: \u0027string\u0027, \u0027minLength\u0027: 1, \u0027maxLength\u0027: 255,"},{"line_number":27,"context_line":"                    \u0027pattern\u0027:"},{"line_number":28,"context_line":"                    \u0027^[a-zA-Z0-9. _-]*[a-zA-Z0-9_-]+[a-zA-Z0-9. _-]*$\u0027"},{"line_number":29,"context_line":"                },"},{"line_number":30,"context_line":"                # forbid leading/trailing whitespaces"},{"line_number":31,"context_line":"                \u0027id\u0027: {"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F9a%2Bk%3D","line":28,"updated":"2014-02-07 01:08:56.000000000","message":"I05391a03f383cac1d475cd4266cf7f5ced664f9e has been merged.\n\nSo we can replace here to parameter_types.name because of API consistency.","commit_id":"5e2cdd705af3748592b59bd0f0b82266ec44bfe3"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"9e0c8260eef5e0bdea780febe5731a3ad6855d08","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                \u0027name\u0027: {"},{"line_number":26,"context_line":"                    \u0027type\u0027: \u0027string\u0027, \u0027minLength\u0027: 1, \u0027maxLength\u0027: 255,"},{"line_number":27,"context_line":"                    \u0027pattern\u0027:"},{"line_number":28,"context_line":"                    \u0027^[a-zA-Z0-9. _-]*[a-zA-Z0-9_-]+[a-zA-Z0-9. _-]*$\u0027"},{"line_number":29,"context_line":"                },"},{"line_number":30,"context_line":"                # forbid leading/trailing whitespaces"},{"line_number":31,"context_line":"                \u0027id\u0027: {"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUX%2F%2F5YM%3D","line":28,"in_reply_to":"AAAAUH%2F9a%2Bk%3D","updated":"2014-02-10 04:38:33.000000000","message":"Done","commit_id":"5e2cdd705af3748592b59bd0f0b82266ec44bfe3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3da5ec235a5a8f90d06f5ab20871c6b434716357","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                },"},{"line_number":63,"context_line":"                \u0027flavor-access:is_public\u0027: parameter_types.boolean,"},{"line_number":64,"context_line":"            },"},{"line_number":65,"context_line":"            \u0027required\u0027: [\u0027name\u0027, \u0027ram\u0027, \u0027vcpus\u0027, \u0027disk\u0027],"},{"line_number":66,"context_line":"            \u0027additionalProperties\u0027: False,"},{"line_number":67,"context_line":"        },"},{"line_number":68,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":26,"id":"1ae5cdf2_447b64f4","line":65,"updated":"2014-06-23 07:18:05.000000000","message":"from \nusage: nova flavor-create [--ephemeral \u003cephemeral\u003e] [--swap \u003cswap\u003e]\n                          [--rxtx-factor \u003cfactor\u003e] [--is-public \u003cis-public\u003e]\n                          \u003cname\u003e \u003cid\u003e \u003cram\u003e \u003cdisk\u003e \u003cvcpus\u003e\n\n\nshould id be required?","commit_id":"c1dc4d8da3abcb1297e4952c0370cddbfee26198"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"56bf7fa50d683f69453fdfb3cb702893b1296d19","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                },"},{"line_number":63,"context_line":"                \u0027flavor-access:is_public\u0027: parameter_types.boolean,"},{"line_number":64,"context_line":"            },"},{"line_number":65,"context_line":"            \u0027required\u0027: [\u0027name\u0027, \u0027ram\u0027, \u0027vcpus\u0027, \u0027disk\u0027],"},{"line_number":66,"context_line":"            \u0027additionalProperties\u0027: False,"},{"line_number":67,"context_line":"        },"},{"line_number":68,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":26,"id":"1ae5cdf2_4f9d3dbb","line":65,"in_reply_to":"1ae5cdf2_447b64f4","updated":"2014-06-23 07:30:42.000000000","message":"That is a nice point.\nWhen passing \u0027auto\u0027 as flavorid to nova commend, nova command convert it to None and send it as flavorid to nova-api.\n\nWhen nova-api receives it, it generates flavorid with uuid4():\n\n 86 def create(name, memory, vcpus, root_gb, ephemeral_gb\u003d0, flavorid\u003dNone,\n 87            swap\u003d0, rxtx_factor\u003d1.0, is_public\u003dTrue):\n 88     \"\"\"Creates flavors.\"\"\"\n 89     if not flavorid:\n 90         flavorid \u003d uuid.uuid4()\n\nSo for more strong validation and clear API definition, it is nice to define id as required and add null into \u0027type\u0027s at line 27.","commit_id":"c1dc4d8da3abcb1297e4952c0370cddbfee26198"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"30e777546c9d8693e1fc0f7d68a6d1f6e0ced3bb","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                },"},{"line_number":63,"context_line":"                \u0027flavor-access:is_public\u0027: parameter_types.boolean,"},{"line_number":64,"context_line":"            },"},{"line_number":65,"context_line":"            \u0027required\u0027: [\u0027name\u0027, \u0027ram\u0027, \u0027vcpus\u0027, \u0027disk\u0027],"},{"line_number":66,"context_line":"            \u0027additionalProperties\u0027: False,"},{"line_number":67,"context_line":"        },"},{"line_number":68,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":26,"id":"1ae5cdf2_942c96ae","line":65,"in_reply_to":"1ae5cdf2_4f9d3dbb","updated":"2014-06-24 00:36:51.000000000","message":"Done","commit_id":"c1dc4d8da3abcb1297e4952c0370cddbfee26198"}],"nova/api/openstack/compute/schemas/v3/flavor_manage_schema.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8761d810c2e2570e7827cef6e48e2a716b685b1e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                                \u0027[a-zA-Z0-9.-_]+$\u0027)"},{"line_number":32,"context_line":"                },"},{"line_number":33,"context_line":"                \u0027ram\u0027: {"},{"line_number":34,"context_line":"                    \u0027type\u0027: \u0027integer\u0027, \u0027minimum\u0027: 1, \u0027maximum\u0027: 99999999999"},{"line_number":35,"context_line":"                },"},{"line_number":36,"context_line":"                \u0027vcpus\u0027: {"},{"line_number":37,"context_line":"                    \u0027type\u0027: \u0027integer\u0027, \u0027minimum\u0027: 1, \u0027maximum\u0027: 99999999999"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9EKM%3D","line":34,"updated":"2013-12-17 06:06:26.000000000","message":"This schema does not support string number(e.g. \u002710\u0027).\nThen, Nova cannot accept xml request because the request is passed as string number.\n\nbetter to define here like the following:\n\n      \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],\n      \u0027pattern\u0027: \u0027^[0-9]+$\u0027,\n\nAlso, is [\u0027maximum\u0027: 99999999999] necessary?","commit_id":"6595e3e623b24395f0965dbb72b2872a237002d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"69b1ebcadd8f8d9c65526fac339f286ce8d9a94b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                                \u0027[a-zA-Z0-9.-_]+$\u0027)"},{"line_number":32,"context_line":"                },"},{"line_number":33,"context_line":"                \u0027ram\u0027: {"},{"line_number":34,"context_line":"                    \u0027type\u0027: \u0027integer\u0027, \u0027minimum\u0027: 1, \u0027maximum\u0027: 99999999999"},{"line_number":35,"context_line":"                },"},{"line_number":36,"context_line":"                \u0027vcpus\u0027: {"},{"line_number":37,"context_line":"                    \u0027type\u0027: \u0027integer\u0027, \u0027minimum\u0027: 1, \u0027maximum\u0027: 99999999999"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F8%2BRE%3D","line":34,"in_reply_to":"AAAATn%2F8%2FA8%3D","updated":"2013-12-18 08:44:43.000000000","message":"\u003e So I wrote maximum as 99999999999 in the meaning of 11-digits of number.\n\nI see, thanks for your explanation.","commit_id":"6595e3e623b24395f0965dbb72b2872a237002d3"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"60315c77ad37e540e11cf87dae30a1aa89c7d87a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                                \u0027[a-zA-Z0-9.-_]+$\u0027)"},{"line_number":32,"context_line":"                },"},{"line_number":33,"context_line":"                \u0027ram\u0027: {"},{"line_number":34,"context_line":"                    \u0027type\u0027: \u0027integer\u0027, \u0027minimum\u0027: 1, \u0027maximum\u0027: 99999999999"},{"line_number":35,"context_line":"                },"},{"line_number":36,"context_line":"                \u0027vcpus\u0027: {"},{"line_number":37,"context_line":"                    \u0027type\u0027: \u0027integer\u0027, \u0027minimum\u0027: 1, \u0027maximum\u0027: 99999999999"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F8%2FA8%3D","line":34,"in_reply_to":"AAAATn%2F9EKM%3D","updated":"2013-12-18 03:16:55.000000000","message":"\u003e This schema does not support string number(e.g. \u002710\u0027). Then, \u003e \u003e Nova cannot accept xml request because the request is \n\u003e passed as string number.\n\u003e better to define here like the following:\n\u003e       \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],\n\u003e       \u0027pattern\u0027: \u0027^[0-9]+$\u0027,\nDone.\n\n\u003e Also, is [\u0027maximum\u0027: 99999999999] necessary?\nIn DB table \"instance_types\"(flavor data is stored), the types of ram, vcpus, disk, ephemeral, swap are int(11). So I wrote maximum as 99999999999 in the meaning of 11-digits of number.\nOnly rxtx_factor is my mistake. I\u0027ll modify it.","commit_id":"6595e3e623b24395f0965dbb72b2872a237002d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8761d810c2e2570e7827cef6e48e2a716b685b1e","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                },"},{"line_number":36,"context_line":"                \u0027vcpus\u0027: {"},{"line_number":37,"context_line":"                    \u0027type\u0027: \u0027integer\u0027, \u0027minimum\u0027: 1, \u0027maximum\u0027: 99999999999"},{"line_number":38,"context_line":"                },"},{"line_number":39,"context_line":"                \u0027disk\u0027: {"},{"line_number":40,"context_line":"                    \u0027type\u0027: \u0027number\u0027, \u0027minimum\u0027: 0, \u0027maximum\u0027: 99999999999"},{"line_number":41,"context_line":"                },"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9EKI%3D","line":38,"updated":"2013-12-17 06:06:26.000000000","message":"ditto","commit_id":"6595e3e623b24395f0965dbb72b2872a237002d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8761d810c2e2570e7827cef6e48e2a716b685b1e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                },"},{"line_number":39,"context_line":"                \u0027disk\u0027: {"},{"line_number":40,"context_line":"                    \u0027type\u0027: \u0027number\u0027, \u0027minimum\u0027: 0, \u0027maximum\u0027: 99999999999"},{"line_number":41,"context_line":"                },"},{"line_number":42,"context_line":"                \u0027ephemeral\u0027: {"},{"line_number":43,"context_line":"                    \u0027type\u0027: \u0027number\u0027, \u0027minimum\u0027: 0, \u0027maximum\u0027: 99999999999"},{"line_number":44,"context_line":"                },"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9EFo%3D","line":41,"updated":"2013-12-17 06:06:26.000000000","message":"ditto, and need to arrange the pattern for supporting float number.","commit_id":"6595e3e623b24395f0965dbb72b2872a237002d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8761d810c2e2570e7827cef6e48e2a716b685b1e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                },"},{"line_number":42,"context_line":"                \u0027ephemeral\u0027: {"},{"line_number":43,"context_line":"                    \u0027type\u0027: \u0027number\u0027, \u0027minimum\u0027: 0, \u0027maximum\u0027: 99999999999"},{"line_number":44,"context_line":"                },"},{"line_number":45,"context_line":"                \u0027swap\u0027: {"},{"line_number":46,"context_line":"                    \u0027type\u0027: \u0027number\u0027, \u0027minimum\u0027: 0, \u0027maximum\u0027: 99999999999"},{"line_number":47,"context_line":"                },"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9EFk%3D","line":44,"updated":"2013-12-17 06:06:26.000000000","message":"ditto","commit_id":"6595e3e623b24395f0965dbb72b2872a237002d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8761d810c2e2570e7827cef6e48e2a716b685b1e","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                },"},{"line_number":45,"context_line":"                \u0027swap\u0027: {"},{"line_number":46,"context_line":"                    \u0027type\u0027: \u0027number\u0027, \u0027minimum\u0027: 0, \u0027maximum\u0027: 99999999999"},{"line_number":47,"context_line":"                },"},{"line_number":48,"context_line":"                \u0027rxtx_factor\u0027: {"},{"line_number":49,"context_line":"                    \u0027type\u0027: \u0027number\u0027, \u0027minimum\u0027: 0, \u0027maximum\u0027: 99999999999,"},{"line_number":50,"context_line":"                    \u0027exclusiveMinimum\u0027: True"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9EFc%3D","line":47,"updated":"2013-12-17 06:06:26.000000000","message":"ditto","commit_id":"6595e3e623b24395f0965dbb72b2872a237002d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8761d810c2e2570e7827cef6e48e2a716b685b1e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                    \u0027type\u0027: \u0027number\u0027, \u0027minimum\u0027: 0, \u0027maximum\u0027: 99999999999"},{"line_number":47,"context_line":"                },"},{"line_number":48,"context_line":"                \u0027rxtx_factor\u0027: {"},{"line_number":49,"context_line":"                    \u0027type\u0027: \u0027number\u0027, \u0027minimum\u0027: 0, \u0027maximum\u0027: 99999999999,"},{"line_number":50,"context_line":"                    \u0027exclusiveMinimum\u0027: True"},{"line_number":51,"context_line":"                },"},{"line_number":52,"context_line":"                \u0027flavor-access:is_public\u0027: {\u0027type\u0027: \u0027boolean\u0027},"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9EFU%3D","line":49,"updated":"2013-12-17 06:06:26.000000000","message":"ditto","commit_id":"6595e3e623b24395f0965dbb72b2872a237002d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8761d810c2e2570e7827cef6e48e2a716b685b1e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                    \u0027type\u0027: \u0027number\u0027, \u0027minimum\u0027: 0, \u0027maximum\u0027: 99999999999,"},{"line_number":50,"context_line":"                    \u0027exclusiveMinimum\u0027: True"},{"line_number":51,"context_line":"                },"},{"line_number":52,"context_line":"                \u0027flavor-access:is_public\u0027: {\u0027type\u0027: \u0027boolean\u0027},"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"            },"},{"line_number":55,"context_line":"            \u0027required\u0027: [\u0027name\u0027, \u0027ram\u0027, \u0027vcpus\u0027, \u0027disk\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9EE0%3D","line":52,"updated":"2013-12-17 06:06:26.000000000","message":"need to support string boolean(e.g. \"True\").\n\nhttps://review.openstack.org/#/c/34514/13/nova/api/openstack/compute/schemas/v3/evacuate_schema.py\n\nand\n\nhttps://review.openstack.org/#/c/34514/13/nova/api/validation/validators.py\n\nare good samples.","commit_id":"6595e3e623b24395f0965dbb72b2872a237002d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9ef71ada8f2cd2daeb7e33b6b86a32172da6c5ef","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                # positive ( \u003e 0) integer"},{"line_number":35,"context_line":"                \u0027ram\u0027: {"},{"line_number":36,"context_line":"                    \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],"},{"line_number":37,"context_line":"                    \u0027pattern\u0027: \u0027^[1-9]+[0-9]{0,10}$\u0027,"},{"line_number":38,"context_line":"                    \u0027minimum\u0027: 1, \u0027maximum\u0027: 99999999999"},{"line_number":39,"context_line":"                },"},{"line_number":40,"context_line":"                # positive ( \u003e 0) integer"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F8%2BQY%3D","line":37,"updated":"2013-12-18 08:49:16.000000000","message":"This pattern\u0027s limitation is duplicated with the following minimum and maximum. That is a little hard to maintain the code.\n\nHow about just \u0027^[0-9]*$\u0027 for here?","commit_id":"3d183135acbde84e5962256e43a0bbd61a834ad7"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"4d2c984fc00b36329e19f4ef3e2c64ea89f938d9","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                # positive ( \u003e 0) integer"},{"line_number":35,"context_line":"                \u0027ram\u0027: {"},{"line_number":36,"context_line":"                    \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],"},{"line_number":37,"context_line":"                    \u0027pattern\u0027: \u0027^[1-9]+[0-9]{0,10}$\u0027,"},{"line_number":38,"context_line":"                    \u0027minimum\u0027: 1, \u0027maximum\u0027: 99999999999"},{"line_number":39,"context_line":"                },"},{"line_number":40,"context_line":"                # positive ( \u003e 0) integer"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F85wM%3D","line":37,"in_reply_to":"AAAATn%2F8%2BQY%3D","updated":"2013-12-19 00:42:37.000000000","message":"Done","commit_id":"3d183135acbde84e5962256e43a0bbd61a834ad7"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"26b584b879a19b87d3a22de86c6d96a1dc94b12a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                \u0027ram\u0027: {"},{"line_number":36,"context_line":"                    \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],"},{"line_number":37,"context_line":"                    \u0027pattern\u0027: \u0027^[0-9]*$\u0027,"},{"line_number":38,"context_line":"                    \u0027minimum\u0027: 1, \u0027maximum\u0027: 99999999999"},{"line_number":39,"context_line":"                },"},{"line_number":40,"context_line":"                # positive ( \u003e 0) integer"},{"line_number":41,"context_line":"                \u0027vcpus\u0027: {"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F84WE%3D","line":38,"updated":"2013-12-19 08:47:51.000000000","message":"I think the ram which is bigger than \u002799999999999\u0027 should also be legal, and there is no need to constrain the size of ram.\nSo are the other options.","commit_id":"e20120e43ec3e90d5df80ca80772977414075e09"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"2b319b28f983bde992a11ca67265a0e459cf0462","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                \u0027ram\u0027: {"},{"line_number":36,"context_line":"                    \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],"},{"line_number":37,"context_line":"                    \u0027pattern\u0027: \u0027^[0-9]*$\u0027,"},{"line_number":38,"context_line":"                    \u0027minimum\u0027: 1, \u0027maximum\u0027: 99999999999"},{"line_number":39,"context_line":"                },"},{"line_number":40,"context_line":"                # positive ( \u003e 0) integer"},{"line_number":41,"context_line":"                \u0027vcpus\u0027: {"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F8yL8%3D","line":38,"in_reply_to":"AAAATn%2F84WE%3D","updated":"2013-12-20 11:01:00.000000000","message":"Ah, I mistook the meaning of int(11). Thank you.","commit_id":"e20120e43ec3e90d5df80ca80772977414075e09"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"81dc45866613dddb4925cb88783f5454f8f63fd0","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            \u0027required\u0027: [\u0027name\u0027, \u0027ram\u0027, \u0027vcpus\u0027, \u0027disk\u0027],"},{"line_number":74,"context_line":"        },"},{"line_number":75,"context_line":"    },"},{"line_number":76,"context_line":"    \u0027required\u0027: [\u0027flavor\u0027],"},{"line_number":77,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2F4vA%3D","line":76,"updated":"2013-12-28 00:37:21.000000000","message":"we should use \u0027additionalProperties:False\u0027 at here for more strict check","commit_id":"62f23ee8262de3630ece634f65002a943066b434"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"f4b695958ff1a12e19865a090e279b3e1e27beca","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            \u0027required\u0027: [\u0027name\u0027, \u0027ram\u0027, \u0027vcpus\u0027, \u0027disk\u0027],"},{"line_number":74,"context_line":"        },"},{"line_number":75,"context_line":"    },"},{"line_number":76,"context_line":"    \u0027required\u0027: [\u0027flavor\u0027],"},{"line_number":77,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2F9pc%3D","line":76,"in_reply_to":"AAAAT3%2F%2F4vA%3D","updated":"2014-01-06 06:17:43.000000000","message":"Done","commit_id":"62f23ee8262de3630ece634f65002a943066b434"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a7f86d9a7a0f201fa3bcd4b3fb5565e2ccbe2da3","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                },"},{"line_number":67,"context_line":"                \u0027flavor-access:is_public\u0027: {"},{"line_number":68,"context_line":"                    \u0027type\u0027: [\u0027boolean\u0027, \u0027string\u0027],"},{"line_number":69,"context_line":"                    \u0027format\u0027: \u0027boolean\u0027"},{"line_number":70,"context_line":"                },"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F%2F9WQ%3D","line":69,"updated":"2014-01-06 07:45:45.000000000","message":"better to change here to the following:\n\n \t                    \u0027enum\u0027: [\u0027True\u0027, \u0027TRUE\u0027, \u0027true\u0027, \u00271\u0027,\n \t                             \u0027False\u0027, \u0027FALSE\u0027, \u0027false\u0027, \u00270\u0027],\n\nWe discussed boolean parameter on https://review.openstack.org/#/c/34514/17/nova/api/openstack/compute/schemas/v3/evacuate_schema.py","commit_id":"d32707c005c951233979c84a6105d1549d8d54e6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a7f86d9a7a0f201fa3bcd4b3fb5565e2ccbe2da3","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                },"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"            },"},{"line_number":73,"context_line":"            \u0027required\u0027: [\u0027name\u0027, \u0027ram\u0027, \u0027vcpus\u0027, \u0027disk\u0027],"},{"line_number":74,"context_line":"        },"},{"line_number":75,"context_line":"    },"},{"line_number":76,"context_line":"    \u0027required\u0027: [\u0027flavor\u0027],"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F%2F9X0%3D","line":73,"updated":"2014-01-06 07:45:45.000000000","message":"\u0027additionalProperties\u0027: False, is necessary for here also.","commit_id":"d32707c005c951233979c84a6105d1549d8d54e6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"0f1ec479c474411846f639236a1fb1448800454b","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                    \u0027type\u0027: [\u0027boolean\u0027, \u0027string\u0027],"},{"line_number":69,"context_line":"                    \u0027enum\u0027: [True, \u0027True\u0027, \u0027TRUE\u0027, \u0027true\u0027, \u00271\u0027,"},{"line_number":70,"context_line":"                             False, \u0027False\u0027, \u0027FALSE\u0027, \u0027false\u0027, \u00270\u0027],"},{"line_number":71,"context_line":"                },"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"            },"},{"line_number":74,"context_line":"            \u0027required\u0027: [\u0027name\u0027, \u0027ram\u0027, \u0027vcpus\u0027, \u0027disk\u0027],"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FgQs%3D","line":71,"updated":"2014-01-13 08:42:52.000000000","message":"one more point, parameter_types.boolean has been merged.\nSo we can replace here to it for cleanup.","commit_id":"cbdcb6693d755efcdd8d8d7d40b3005aec7b5ed6"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"4b93e1e93fbd748c8f87c748905490d254ec0bea","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                    \u0027type\u0027: [\u0027boolean\u0027, \u0027string\u0027],"},{"line_number":69,"context_line":"                    \u0027enum\u0027: [True, \u0027True\u0027, \u0027TRUE\u0027, \u0027true\u0027, \u00271\u0027,"},{"line_number":70,"context_line":"                             False, \u0027False\u0027, \u0027FALSE\u0027, \u0027false\u0027, \u00270\u0027],"},{"line_number":71,"context_line":"                },"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"            },"},{"line_number":74,"context_line":"            \u0027required\u0027: [\u0027name\u0027, \u0027ram\u0027, \u0027vcpus\u0027, \u0027disk\u0027],"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FZzo%3D","line":71,"in_reply_to":"AAAAUH%2F%2FgQs%3D","updated":"2014-01-14 04:25:10.000000000","message":"Done","commit_id":"cbdcb6693d755efcdd8d8d7d40b3005aec7b5ed6"}],"nova/tests/api/openstack/compute/plugins/v3/test_flavor_manage.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9ef71ada8f2cd2daeb7e33b6b86a32172da6c5ef","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                \"ram\": 512,"},{"line_number":244,"context_line":"                \"vcpus\": 2,"},{"line_number":245,"context_line":"                \"disk\": 1,"},{"line_number":246,"context_line":"                \"OS-FLV-EXT-DATA:ephemeral\": 1,"},{"line_number":247,"context_line":"                \"swap\": 512,"},{"line_number":248,"context_line":"                \"rxtx_factor\": 1,"},{"line_number":249,"context_line":"                \"os-flavor-access:is_public\": True,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F8%2BPg%3D","side":"PARENT","line":246,"updated":"2013-12-18 08:49:16.000000000","message":"nice catch!","commit_id":"b190c0c3243fcaeb73892c7667e72b2cf51b31de"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"217467dda59d713e814164c2c03f7e0874f2f6fb","unresolved":false,"context_lines":[{"line_number":257,"context_line":"            res_dict[\u0027badRequest\u0027][\u0027message\u0027])"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def test_create_without_name(self):"},{"line_number":260,"context_line":"        request_dict \u003d {"},{"line_number":261,"context_line":"            \"flavor\": {"},{"line_number":262,"context_line":"                \"id\": \"1234\","},{"line_number":263,"context_line":"                \"ram\": 512,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F8yEM%3D","line":260,"updated":"2013-12-20 11:30:03.000000000","message":"Would it be possible to define a base request_dict at the top, then deepcopy + modify it for each test? This would eliminate many lines of code as well as making it easier to see how each test differs.","commit_id":"c72dc65a0874c8ea9975c1b0f97f23d6942495d8"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"1e4c10063a9c40ec27ba4dddd0a4c9ea4c018568","unresolved":false,"context_lines":[{"line_number":257,"context_line":"            res_dict[\u0027badRequest\u0027][\u0027message\u0027])"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def test_create_without_name(self):"},{"line_number":260,"context_line":"        request_dict \u003d {"},{"line_number":261,"context_line":"            \"flavor\": {"},{"line_number":262,"context_line":"                \"id\": \"1234\","},{"line_number":263,"context_line":"                \"ram\": 512,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F8nqQ%3D","line":260,"in_reply_to":"AAAATn%2F8yEM%3D","updated":"2013-12-24 08:29:24.000000000","message":"Done","commit_id":"c72dc65a0874c8ea9975c1b0f97f23d6942495d8"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"217467dda59d713e814164c2c03f7e0874f2f6fb","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            }"},{"line_number":271,"context_line":"        }"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        url \u003d \u0027/v3/flavors\u0027"},{"line_number":274,"context_line":"        req \u003d webob.Request.blank(url)"},{"line_number":275,"context_line":"        req.headers[\u0027Content-Type\u0027] \u003d \u0027application/json\u0027"},{"line_number":276,"context_line":"        req.method \u003d \u0027POST\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F8yEE%3D","line":273,"updated":"2013-12-20 11:30:03.000000000","message":"Lines 273-278 seem common to many tests, please could these be placed in a helper function to reduce redundancy?","commit_id":"c72dc65a0874c8ea9975c1b0f97f23d6942495d8"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"1e4c10063a9c40ec27ba4dddd0a4c9ea4c018568","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            }"},{"line_number":271,"context_line":"        }"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        url \u003d \u0027/v3/flavors\u0027"},{"line_number":274,"context_line":"        req \u003d webob.Request.blank(url)"},{"line_number":275,"context_line":"        req.headers[\u0027Content-Type\u0027] \u003d \u0027application/json\u0027"},{"line_number":276,"context_line":"        req.method \u003d \u0027POST\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F8nqM%3D","line":273,"in_reply_to":"AAAATn%2F8yEE%3D","updated":"2013-12-24 08:29:24.000000000","message":"Done","commit_id":"c72dc65a0874c8ea9975c1b0f97f23d6942495d8"},{"author":{"_account_id":9533,"name":"Eiichi Aikawa","email":"aikawa@mxk.nes.nec.co.jp","username":"EiichiAikawa"},"change_message_id":"ac85d00ae38ff09138a4fef8dcb29337cec03faa","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def test_create_flavor_exists_exception_returns_409(self):"},{"line_number":183,"context_line":"        expected \u003d self.expected_flavor"},{"line_number":184,"context_line":"        del expected[\u0027flavor\u0027][\u0027id\u0027]"},{"line_number":185,"context_line":"        expected[\u0027flavor\u0027][\u0027id\u0027] \u003d 1235"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        def fake_create(name, memory_mb, vcpus, root_gb, ephemeral_gb,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAT3%2F%2F%2F%2BM%3D","line":184,"updated":"2013-12-25 05:24:21.000000000","message":"This line can be deleted.","commit_id":"f30e271ee8e8c3fcafa39fdd3042af8e0bac2caa"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"83133dae125bee50402fbf12ed2d4921292993ce","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def test_create_flavor_exists_exception_returns_409(self):"},{"line_number":183,"context_line":"        expected \u003d self.expected_flavor"},{"line_number":184,"context_line":"        del expected[\u0027flavor\u0027][\u0027id\u0027]"},{"line_number":185,"context_line":"        expected[\u0027flavor\u0027][\u0027id\u0027] \u003d 1235"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        def fake_create(name, memory_mb, vcpus, root_gb, ephemeral_gb,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAT3%2F%2F9yo%3D","line":184,"in_reply_to":"AAAAT3%2F%2F%2F%2BM%3D","updated":"2013-12-26 06:42:07.000000000","message":"Done","commit_id":"f30e271ee8e8c3fcafa39fdd3042af8e0bac2caa"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"520b69620da1f82f5e7449b507fc8020ca90b517","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                         \"u\u0027swap\u0027: 512, u\u0027rxtx_factor\u0027: 1, u\u0027disk\u0027: 1, \""},{"line_number":233,"context_line":"                         \"u\u0027id\u0027: u\u00271234\u0027}. \""},{"line_number":234,"context_line":"                         \"\u0027name\u0027 is a required property\","},{"line_number":235,"context_line":"                         res_dict[\u0027badRequest\u0027][\u0027message\u0027])"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    def test_create_all_whitespace_flavor_names_are_rejected(self):"},{"line_number":238,"context_line":"        name \u003d \" \""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAT3%2F%2F66w%3D","line":235,"updated":"2013-12-27 05:33:05.000000000","message":"The check for error message seems a little overkill because there is not such test case in this test file now. If checking status_code only like the other tests, we can create common/base test method for BadRequest and use it for many BadRequest tests which are added with this patch.\n\nThat would make the patch simple and people can review more easily.","commit_id":"32b591adda03b30f529f4d2c9b0c92fc1ba99654"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"8aebdbea48c01e062d8ad66137c890783475a4cd","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                         \"u\u0027swap\u0027: 512, u\u0027rxtx_factor\u0027: 1, u\u0027disk\u0027: 1, \""},{"line_number":233,"context_line":"                         \"u\u0027id\u0027: u\u00271234\u0027}. \""},{"line_number":234,"context_line":"                         \"\u0027name\u0027 is a required property\","},{"line_number":235,"context_line":"                         res_dict[\u0027badRequest\u0027][\u0027message\u0027])"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    def test_create_all_whitespace_flavor_names_are_rejected(self):"},{"line_number":238,"context_line":"        name \u003d \" \""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAT3%2F%2F6qc%3D","line":235,"in_reply_to":"AAAAT3%2F%2F66w%3D","updated":"2013-12-27 07:07:31.000000000","message":"Done. How is it?","commit_id":"32b591adda03b30f529f4d2c9b0c92fc1ba99654"},{"author":{"_account_id":9560,"name":"Lee Li","email":"lilinguo8212@gmail.com","username":"llg8212"},"change_message_id":"99a685ad6116ac21dc014ee94cba0bad7e2ea10f","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            self.assertEqual(body[\"flavor\"][key], expected[\"flavor\"][key])"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def test_create_public_default(self):"},{"line_number":148,"context_line":"        request_dict \u003d copy.deepcopy(self.base_request_dict)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        expected \u003d self.expected_flavor"},{"line_number":151,"context_line":"        res \u003d self._create_flavor_helper(request_dict)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2FCEA%3D","line":148,"updated":"2014-01-18 08:09:12.000000000","message":"I don\u0027t think the deepcopy is necessary. The self.base_request_dict will not be modified.","commit_id":"edee0f1bc7c7f547e68a35423acdbf9f569f2703"},{"author":{"_account_id":9046,"name":"Maithem","email":"munshedm@vmware.com","username":"Maithem"},"change_message_id":"3fa1fa841d27e583d4846393f4fb3a2c6514aa63","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        res \u003d self._create_flavor_helper(self.base_request_dict)"},{"line_number":149,"context_line":"        body \u003d jsonutils.loads(res.body)"},{"line_number":150,"context_line":"        for key in expected[\"flavor\"]:"},{"line_number":151,"context_line":"            self.assertEqual(body[\"flavor\"][key], expected[\"flavor\"][key])"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _create_flavor_helper(self, request_dict):"},{"line_number":154,"context_line":"        url \u003d \u0027/v3/flavors\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2BtEE%3D","line":151,"updated":"2014-01-23 00:51:02.000000000","message":"asserEqual arguments should be orders as follows, (expected, observed)","commit_id":"1e70b9919ab0a30ddf0cdf9428ed28d52f42358f"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"e9ecd00d62d0e0b53a100e45635256cc29dfa7a7","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        res \u003d self._create_flavor_helper(self.base_request_dict)"},{"line_number":149,"context_line":"        body \u003d jsonutils.loads(res.body)"},{"line_number":150,"context_line":"        for key in expected[\"flavor\"]:"},{"line_number":151,"context_line":"            self.assertEqual(body[\"flavor\"][key], expected[\"flavor\"][key])"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _create_flavor_helper(self, request_dict):"},{"line_number":154,"context_line":"        url \u003d \u0027/v3/flavors\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2BsBA%3D","line":151,"in_reply_to":"AAAAUH%2F%2BtEE%3D","updated":"2014-01-23 06:35:02.000000000","message":"I\u0027ll do it in other patch.","commit_id":"1e70b9919ab0a30ddf0cdf9428ed28d52f42358f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f0e6bccb6ae0ab07789c911b5f10e5c8ec1d03a0","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        return req.get_response(self.app)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def _test_create_bad_request(self, request_dict):"},{"line_number":163,"context_line":"        expected \u003d self.expected_flavor"},{"line_number":164,"context_line":"        res \u003d self._create_flavor_helper(request_dict)"},{"line_number":165,"context_line":"        self.assertEqual(400, res.status_int)"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"1ae5cdf2_6737d9fe","line":163,"updated":"2014-06-19 09:33:30.000000000","message":"This line seems unused.","commit_id":"edaf4690560d74a82a669a32d65fd5dd3f33e932"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"3298ff31a2b029a91fc3b2ab30157488059a6e59","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        return req.get_response(self.app)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def _test_create_bad_request(self, request_dict):"},{"line_number":163,"context_line":"        expected \u003d self.expected_flavor"},{"line_number":164,"context_line":"        res \u003d self._create_flavor_helper(request_dict)"},{"line_number":165,"context_line":"        self.assertEqual(400, res.status_int)"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"1ae5cdf2_3ba94a90","line":163,"in_reply_to":"1ae5cdf2_6737d9fe","updated":"2014-06-20 02:38:24.000000000","message":"Done","commit_id":"edaf4690560d74a82a669a32d65fd5dd3f33e932"}]}
