)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"562e90e350974fb5cddc693378e9aea8029e2cbd","unresolved":false,"context_lines":[{"line_number":11,"context_line":"This commit adds json schema to validating the valid"},{"line_number":12,"context_line":"query parameters."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"There is no change in API behaviour and additionalProperty"},{"line_number":15,"context_line":"is kept True for backward compatibility."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partially implements blueprint json-schema-validation-for-query-param"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ff82abbf_97dae814","line":14,"range":{"start_line":14,"start_character":40,"end_line":14,"end_character":58},"updated":"2017-11-22 16:04:10.000000000","message":"additionalProperties","commit_id":"38f6ae7c1fd46f94292f55bec50a90e1805d6225"}],"nova/api/openstack/compute/schemas/hosts.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"5d1aaacf3ffb53bf4d2ec84d11f2bfe8ae59cd07","unresolved":false,"context_lines":[{"line_number":40,"context_line":"index_query \u003d {"},{"line_number":41,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":42,"context_line":"    \u0027properties\u0027: {"},{"line_number":43,"context_line":"        \u0027zone\u0027: parameter_types.multi_params({\u0027type\u0027: \u0027string\u0027})"},{"line_number":44,"context_line":"    },"},{"line_number":45,"context_line":"    # NOTE(gmann): This is kept True to keep backward compatibility."},{"line_number":46,"context_line":"    # As of now Schema validation stripped out the additional parameters and"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_906515e4","line":43,"range":{"start_line":43,"start_character":32,"end_line":43,"end_character":44},"updated":"2017-10-23 05:35:50.000000000","message":"It should be \u0027single_param\u0027.","commit_id":"38f6ae7c1fd46f94292f55bec50a90e1805d6225"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ba30ca98f9b9759030672dcb79db9f8f21b30603","unresolved":false,"context_lines":[{"line_number":40,"context_line":"index_query \u003d {"},{"line_number":41,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":42,"context_line":"    \u0027properties\u0027: {"},{"line_number":43,"context_line":"        \u0027zone\u0027: parameter_types.multi_params({\u0027type\u0027: \u0027string\u0027})"},{"line_number":44,"context_line":"    },"},{"line_number":45,"context_line":"    # NOTE(gmann): This is kept True to keep backward compatibility."},{"line_number":46,"context_line":"    # As of now Schema validation stripped out the additional parameters and"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_85d64e27","line":43,"range":{"start_line":43,"start_character":32,"end_line":43,"end_character":44},"in_reply_to":"3f4b6375_4c0f8187","updated":"2017-10-29 08:38:15.000000000","message":"If user mention duplicate multi params, current behavior without schema is 200.\n\nSame behavior is maintained using multi_params But if we make schema as single_query then duplicate multi param will results to 400 which will be backward incompatible change.\n\nI agree multiple duplicate query params does not make sense but we cannot correct this without microversion bump.\n\nThere must not be any behavior change with this BP schema implementation.","commit_id":"38f6ae7c1fd46f94292f55bec50a90e1805d6225"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"4e9980b994fe3d49459d8552b15550a8f627428c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"index_query \u003d {"},{"line_number":41,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":42,"context_line":"    \u0027properties\u0027: {"},{"line_number":43,"context_line":"        \u0027zone\u0027: parameter_types.multi_params({\u0027type\u0027: \u0027string\u0027})"},{"line_number":44,"context_line":"    },"},{"line_number":45,"context_line":"    # NOTE(gmann): This is kept True to keep backward compatibility."},{"line_number":46,"context_line":"    # As of now Schema validation stripped out the additional parameters and"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_4c0f8187","line":43,"range":{"start_line":43,"start_character":32,"end_line":43,"end_character":44},"in_reply_to":"3f4b6375_78267b6a","updated":"2017-10-27 08:27:36.000000000","message":"most functions support ?zone\u003dnova\u0026zone\u003dnova2\nand last one is accepted, so it\u0027s a backward compatible function as Gmann mentioned","commit_id":"38f6ae7c1fd46f94292f55bec50a90e1805d6225"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"6a2c61204c31a59f342150e17d8aae576e357c36","unresolved":false,"context_lines":[{"line_number":40,"context_line":"index_query \u003d {"},{"line_number":41,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":42,"context_line":"    \u0027properties\u0027: {"},{"line_number":43,"context_line":"        \u0027zone\u0027: parameter_types.multi_params({\u0027type\u0027: \u0027string\u0027})"},{"line_number":44,"context_line":"    },"},{"line_number":45,"context_line":"    # NOTE(gmann): This is kept True to keep backward compatibility."},{"line_number":46,"context_line":"    # As of now Schema validation stripped out the additional parameters and"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_825879fa","line":43,"range":{"start_line":43,"start_character":32,"end_line":43,"end_character":44},"in_reply_to":"3f4b6375_85d64e27","updated":"2017-10-30 06:05:12.000000000","message":"\u003e If user mention duplicate multi params, current behavior without\n \u003e schema is 200.\n \u003e \n \u003e Same behavior is maintained using multi_params But if we make\n \u003e schema as single_query then duplicate multi param will results to\n \u003e 400 which will be backward incompatible change.\n \u003e \n \u003e I agree multiple duplicate query params does not make sense but we\n \u003e cannot correct this without microversion bump.\n \u003e \n \u003e There must not be any behavior change with this BP schema\n \u003e implementation.\n\nFair enough. I agree with your opinion.","commit_id":"38f6ae7c1fd46f94292f55bec50a90e1805d6225"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"968457a0c2423162e2337e98a82bd4de110c17ad","unresolved":false,"context_lines":[{"line_number":40,"context_line":"index_query \u003d {"},{"line_number":41,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":42,"context_line":"    \u0027properties\u0027: {"},{"line_number":43,"context_line":"        \u0027zone\u0027: parameter_types.multi_params({\u0027type\u0027: \u0027string\u0027})"},{"line_number":44,"context_line":"    },"},{"line_number":45,"context_line":"    # NOTE(gmann): This is kept True to keep backward compatibility."},{"line_number":46,"context_line":"    # As of now Schema validation stripped out the additional parameters and"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_e8d87953","line":43,"range":{"start_line":43,"start_character":32,"end_line":43,"end_character":44},"in_reply_to":"3f4b6375_906515e4","updated":"2017-10-26 08:45:07.000000000","message":"it allow the multi value in query as tested in test_list_host_with_multi_filter\n\nand we need to keep backward compatibility. by making it single_param it will start blocking query like ?zone\u003dnova?zone\u003dnova2","commit_id":"38f6ae7c1fd46f94292f55bec50a90e1805d6225"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"66bb6efe19fee7fd368294bd02e657c013ab2cac","unresolved":false,"context_lines":[{"line_number":40,"context_line":"index_query \u003d {"},{"line_number":41,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":42,"context_line":"    \u0027properties\u0027: {"},{"line_number":43,"context_line":"        \u0027zone\u0027: parameter_types.multi_params({\u0027type\u0027: \u0027string\u0027})"},{"line_number":44,"context_line":"    },"},{"line_number":45,"context_line":"    # NOTE(gmann): This is kept True to keep backward compatibility."},{"line_number":46,"context_line":"    # As of now Schema validation stripped out the additional parameters and"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_78267b6a","line":43,"range":{"start_line":43,"start_character":32,"end_line":43,"end_character":44},"in_reply_to":"3f4b6375_e8d87953","updated":"2017-10-27 05:14:29.000000000","message":"I tried query like \"?zone\u003dnova\u0026zone\u003dnova2\".\nThe request is accepted but only one value is used and the other is ignored.\nSo query like \"?zone\u003dnova\u0026zone\u003dnova2\" is useless.\nIMO, \u0027single_param\u0027 is better.","commit_id":"38f6ae7c1fd46f94292f55bec50a90e1805d6225"}],"nova/tests/unit/api/openstack/compute/test_hosts.py":[{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"f4c1f2cb7ab3f462afaabe38add8787a18bc9ea9","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        self.assertEqual(fake_hosts.HOST_LIST, hosts)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def test_list_host_with_multi_filter(self):"},{"line_number":175,"context_line":"        query_string \u003d \u0027zone\u003dnova1\u0026zone\u003dnova\u0027"},{"line_number":176,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027\u0027, use_admin_context\u003dTrue,"},{"line_number":177,"context_line":"                                      query_string\u003dquery_string)"},{"line_number":178,"context_line":"        result \u003d self.controller.index(req)"},{"line_number":179,"context_line":"        self.assertIn(\u0027hosts\u0027, result)"},{"line_number":180,"context_line":"        hosts \u003d result[\u0027hosts\u0027]"},{"line_number":181,"context_line":"        self.assertEqual(fake_hosts.HOST_LIST_NOVA_ZONE, hosts)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def test_list_host_query_allow_negative_int_as_string(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_823e0bd8","line":180,"range":{"start_line":175,"start_character":8,"end_line":180,"end_character":31},"updated":"2017-10-20 14:57:15.000000000","message":"Maybe these lines could be extracted to a helper method, since they are repeated in every new tests.","commit_id":"edb5d8beeb4fe5b3ceea86fee12b0c49afe49fb7"}]}
