)]}'
{"tempest/api_schema/compute/migrations.py":[{"author":{"_account_id":7926,"name":"vishal yadav","email":"vyadav@advaoptical.com","username":"vishalcdac"},"change_message_id":"3c14d13d2d9fae7fb5ea1f4e78e72884e03d9de1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"list_migrations \u003d {"},{"line_number":16,"context_line":"    \u0027status_code\u0027: [200],"},{"line_number":17,"context_line":"    \u0027response_body\u0027: {"},{"line_number":18,"context_line":"        \u0027type\u0027: \u0027object\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2Frcc%3D","line":15,"updated":"2014-04-11 07:39:16.000000000","message":"Few improvement suggestions:\n1) It would be a good idea to move the global inside some class namespace.\n2) Restructure the dictionary to make it sparser than denser (avoid deep level nesting where ever applicable)","commit_id":"d216e2b5840c1622d3c3a1a399617dc0a20ea9f4"},{"author":{"_account_id":7926,"name":"vishal yadav","email":"vyadav@advaoptical.com","username":"vishalcdac"},"change_message_id":"19b1c4680f98e71ec27dd816fa32ca9a179294b3","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"list_migrations \u003d {"},{"line_number":16,"context_line":"    \u0027status_code\u0027: [200],"},{"line_number":17,"context_line":"    \u0027response_body\u0027: {"},{"line_number":18,"context_line":"        \u0027type\u0027: \u0027object\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2Fz0Q%3D","line":15,"in_reply_to":"AAAAW3%2F%2FhL0%3D","updated":"2014-04-17 09:25:35.000000000","message":"For suggestion #2 I think it might not be feasible at this stage. We can plan it later. \n\nHowever re-factoring for #1 is easy and there are 2 options (Either of these can be used):\n* Create a class and make \"list_migrations\" as class variable of this class. Subsequently access to this variable should be done along with class namespace. \u003cClassName\u003e.list_migrations. From https://review.openstack.org/#/c/83345/ I heard that there is a plan to add assertions (similar to validate_response) in future for checking attributes. In such scenario this approach seems better. \n\n* Create module level methods and access or update \"list_migrations\" using these methods. (Alternatively these methods can also be wrapped under the class)\n\n(see http://google-styleguide.googlecode.com/svn/trunk/pyguide.html?showone\u003dGlobal_variables#Global_variables) for suggestion #1.)","commit_id":"d216e2b5840c1622d3c3a1a399617dc0a20ea9f4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"390bb4a32c3a38bbfa20ce6494f8c786466d4003","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"list_migrations \u003d {"},{"line_number":16,"context_line":"    \u0027status_code\u0027: [200],"},{"line_number":17,"context_line":"    \u0027response_body\u0027: {"},{"line_number":18,"context_line":"        \u0027type\u0027: \u0027object\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FhL0%3D","line":15,"in_reply_to":"AAAAW3%2F%2Frcc%3D","updated":"2014-04-14 01:54:30.000000000","message":"Hi vishal,\n\nI am not sure that I understand your comment correctly.\nI guess you have a good idea for cleanup. If so, could you post it as the other commit?","commit_id":"d216e2b5840c1622d3c3a1a399617dc0a20ea9f4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"892430e5fcfcd4eddfd14bcc33ecc930e9b60ea8","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"list_migrations \u003d {"},{"line_number":16,"context_line":"    \u0027status_code\u0027: [200],"},{"line_number":17,"context_line":"    \u0027response_body\u0027: {"},{"line_number":18,"context_line":"        \u0027type\u0027: \u0027object\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FYsg%3D","line":15,"in_reply_to":"AAAAXH%2F%2Fz0Q%3D","updated":"2014-04-22 06:46:29.000000000","message":"Sorry for my late response.\n\nI\u0027m not sure the merit of #1. Can we reduce the code or get the readability?\nI\u0027d like to see it if it would be better, so could you post a new patch?","commit_id":"d216e2b5840c1622d3c3a1a399617dc0a20ea9f4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2de1009ee1ebf8e4a1c64e3ff4215d3885f40a7f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                }"},{"line_number":52,"context_line":"            }"},{"line_number":53,"context_line":"        },"},{"line_number":54,"context_line":"        \u0027required\u0027: [\u0027migrations\u0027]"},{"line_number":55,"context_line":"    }"},{"line_number":56,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2Fi7c%3D","line":54,"updated":"2014-04-13 06:29:21.000000000","message":"just qestion: Should we use \"\u0027additionalProperties\u0027: False\" that same as we used in v3 api input validation? Or it\u0027s because we just checking \u0027backward incompatibility\u0027, then we needn\u0027t \u0027additionalProperties\u0027?","commit_id":"d216e2b5840c1622d3c3a1a399617dc0a20ea9f4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a82a008d8b3c9311ef029a37df761ab4baaba296","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                }"},{"line_number":52,"context_line":"            }"},{"line_number":53,"context_line":"        },"},{"line_number":54,"context_line":"        \u0027required\u0027: [\u0027migrations\u0027]"},{"line_number":55,"context_line":"    }"},{"line_number":56,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2Fgnk%3D","line":54,"in_reply_to":"AAAAW3%2F%2FhI0%3D","updated":"2014-04-14 05:09:49.000000000","message":"Ken\u0027ichi, thanks for the explanation. That make sense for me","commit_id":"d216e2b5840c1622d3c3a1a399617dc0a20ea9f4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"390bb4a32c3a38bbfa20ce6494f8c786466d4003","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                }"},{"line_number":52,"context_line":"            }"},{"line_number":53,"context_line":"        },"},{"line_number":54,"context_line":"        \u0027required\u0027: [\u0027migrations\u0027]"},{"line_number":55,"context_line":"    }"},{"line_number":56,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FhI0%3D","line":54,"in_reply_to":"AAAAW3%2F%2Fi7c%3D","updated":"2014-04-14 01:54:30.000000000","message":"Hi Alex\n\nI think \"\u0027additionalProperties\u0027: False\" is not necessary here.\n\nJust IMO: Additional parameters, which are provided from a server, don\u0027t cause backward incompatibility. because a server would be improved to provide more useful information and a client should expect it. That means  the client should pick necessary info from a response and just ignore the other info.\n\nOn the other hand, jsonschema definitions of Nova are specified with \"\u0027additionalProperties\u0027: False\" as you know. that\u0027s because unexpected parameters of request are not used and they maybe typo or something. it is better to notify them to a client.\n\nMy main concern is  \"\u0027additionalProperties\u0027: False\" would block the improvement of Nova.","commit_id":"d216e2b5840c1622d3c3a1a399617dc0a20ea9f4"}]}
