)]}'
{"tempest/api/compute/base.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"5ad2c8afd2be9df2e9efe95b47ac9aa4c2b8bb0f","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            req_version_obj \u003d api_version_request.APIVersionRequest("},{"line_number":144,"context_line":"                cls.request_microversion)"},{"line_number":145,"context_line":"        # NOTE(gmann): This is case where this method is used before calling"},{"line_number":146,"context_line":"        # resource_setup(), where cls.request_microversion is set. There is"},{"line_number":147,"context_line":"        # not be any such case but still we can handle this case."},{"line_number":148,"context_line":"        except AttributeError:"},{"line_number":149,"context_line":"            request_microversion \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_0a173947","line":146,"range":{"start_line":146,"start_character":73,"end_line":146,"end_character":75},"updated":"2018-03-30 19:02:57.000000000","message":"may","commit_id":"adc921e50a671da83b4aa0287700cde82bc8ad04"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b22016c6560be5b0cbe9e0d9e6737fc5b0b6befb","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            req_version_obj \u003d api_version_request.APIVersionRequest("},{"line_number":144,"context_line":"                cls.request_microversion)"},{"line_number":145,"context_line":"        # NOTE(gmann): This is case where this method is used before calling"},{"line_number":146,"context_line":"        # resource_setup(), where cls.request_microversion is set. There is"},{"line_number":147,"context_line":"        # not be any such case but still we can handle this case."},{"line_number":148,"context_line":"        except AttributeError:"},{"line_number":149,"context_line":"            request_microversion \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_bd6692c0","line":146,"range":{"start_line":146,"start_character":73,"end_line":146,"end_character":75},"in_reply_to":"bf659307_0a173947","updated":"2018-03-31 06:41:33.000000000","message":"oops. done","commit_id":"adc921e50a671da83b4aa0287700cde82bc8ad04"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"34b159ed24e7d69a94f17d4dd954b19511334345","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        cls.image_ssh_password \u003d CONF.validation.image_ssh_password"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @classmethod"},{"line_number":130,"context_line":"    def is_requested_microversion_compatible(cls, max_version):"},{"line_number":131,"context_line":"        \"\"\"Check the compatibility of selected request microversions"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        This method will check if selected request microversion for test"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_659a8ab9","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":45},"updated":"2018-04-02 23:03:24.000000000","message":"I see the sample of this method on https://review.openstack.org/#/c/557654/3/tempest/api/compute/admin/test_servers.py\n\nBut that seems a little messy because the test itself needs to contain exception cases on happy-path test. How about having some decorator for tests (not test classes) to skip tests on particular microversions?","commit_id":"d9970d25dccbdafe567bba360ec0328c1c172baf"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ed329d05ebf5cbad4149eb1a3e327642b7f5bd1c","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        cls.image_ssh_password \u003d CONF.validation.image_ssh_password"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @classmethod"},{"line_number":130,"context_line":"    def is_requested_microversion_compatible(cls, max_version):"},{"line_number":131,"context_line":"        \"\"\"Check the compatibility of selected request microversions"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        This method will check if selected request microversion for test"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_da5f04e3","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":45},"in_reply_to":"bf659307_1d03930f","updated":"2018-04-10 21:19:24.000000000","message":"OK, the option 1 seems to make sense for me to reduce duplicated code. Then I am OK to add this method.\n\nHowever, current method name doesn\u0027t seem to represent the behavior directly for me. I\u0027d like to find better name.","commit_id":"d9970d25dccbdafe567bba360ec0328c1c172baf"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9eb209c64ddfab933a0ae3b72a70cc11fd479b07","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        cls.image_ssh_password \u003d CONF.validation.image_ssh_password"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @classmethod"},{"line_number":130,"context_line":"    def is_requested_microversion_compatible(cls, max_version):"},{"line_number":131,"context_line":"        \"\"\"Check the compatibility of selected request microversions"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        This method will check if selected request microversion for test"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_73654c1d","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":45},"in_reply_to":"bf659307_2b5303e4","updated":"2018-04-04 08:34:15.000000000","message":"yea, use cases are not just test skip but also variation in verification behaviour of test (as zhufl explained).","commit_id":"d9970d25dccbdafe567bba360ec0328c1c172baf"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2aed607f4c7618d174e5411023a6fe1d89119896","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        cls.image_ssh_password \u003d CONF.validation.image_ssh_password"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @classmethod"},{"line_number":130,"context_line":"    def is_requested_microversion_compatible(cls, max_version):"},{"line_number":131,"context_line":"        \"\"\"Check the compatibility of selected request microversions"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        This method will check if selected request microversion for test"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_a57057de","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":45},"in_reply_to":"bf659307_2b5303e4","updated":"2018-04-05 17:23:12.000000000","message":"zhufl,\n\n \u003e Sorry I didn\u0027t catch it? This helper is used to judge the\n \u003e microvertion range,\n \u003e e.g., https://review.openstack.org/#/c/557574/2/tempest/api/compute/limits/test_absolute_limits.py\n \u003e usually we don\u0027t use it to skip tests.\n\nIn the above case, tempest needs to check response body on service client side as I commented on the patch.\n\n \u003e And as to https://review.openstack.org/#/c/557654/3/tempest/api/compute/admin/test_servers.py,\n \u003e the exception handling is here because that\u0027s the\n \u003e different behaviour of different microversions,\n \u003e i.e., when using list_servers with status as filter, up\n \u003e to microversion 2.37, an empty list is returned if an\n \u003e invalid status is specified, and starting from\n \u003e microversion 2.38, a 400 error is returned in that case.\n\nYeah, the above is a perfect explanation about the microversion history. I just wanted to say it is not best that a negative test (HTTP400) exists in non-negative test module.","commit_id":"d9970d25dccbdafe567bba360ec0328c1c172baf"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"f1fe95ee0a510697a422aead9b5053fe527ad822","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        cls.image_ssh_password \u003d CONF.validation.image_ssh_password"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @classmethod"},{"line_number":130,"context_line":"    def is_requested_microversion_compatible(cls, max_version):"},{"line_number":131,"context_line":"        \"\"\"Check the compatibility of selected request microversions"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        This method will check if selected request microversion for test"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_2b5303e4","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":45},"in_reply_to":"bf659307_659a8ab9","updated":"2018-04-03 02:26:10.000000000","message":"Sorry I didn\u0027t catch it?\nThis helper is used to judge the microvertion range, e.g.,\nhttps://review.openstack.org/#/c/557574/2/tempest/api/compute/limits/test_absolute_limits.py\nusually we don\u0027t use it to skip tests.\n\nAnd as to https://review.openstack.org/#/c/557654/3/tempest/api/compute/admin/test_servers.py, the exception handling\nis here because that\u0027s the different behaviour of different microversions, i.e., when using list_servers with status\nas filter, up to microversion 2.37, an empty list is returnd if an invalid status is specified, and starting from \nmicroversion 2.38, a 400 error is returned in that case.","commit_id":"d9970d25dccbdafe567bba360ec0328c1c172baf"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a94608073409a055deed0bd027e1df433f74b268","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        cls.image_ssh_password \u003d CONF.validation.image_ssh_password"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @classmethod"},{"line_number":130,"context_line":"    def is_requested_microversion_compatible(cls, max_version):"},{"line_number":131,"context_line":"        \"\"\"Check the compatibility of selected request microversions"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        This method will check if selected request microversion for test"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_1d03930f","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":45},"in_reply_to":"bf659307_a57057de","updated":"2018-04-05 23:45:04.000000000","message":"Ohmichi,\n\nYea some of the microversion changes can be handled in schema side but not all. \n\nFor example, having base method is idea from cases like below (i am sure there will be more cases like that) -\n- https://review.openstack.org/#/c/557280/2..4/tempest/api/compute/admin/test_quotas.py\n- https://review.openstack.org/#/c/557214/1..2/tempest/api/compute/servers/test_novnc.py\n\nhere we need to check the version comparison inside the tests as that cannot be covered on schema side. \n\nWe have 2 options to handle such cases- \n1. current proposed way. compare the microversion inside tests and verify the expected behaviour accordingly.\n\n2. separate the tests with for microversion, for example, old behaviour verification in test class with max_microversion cap and verify the new behaviour with new test class with min_microversion cap.\n\nsecond option will leads to lot of duplicate code in many cases. \n\nOverall we have to apply both options depends on nature of microversion change.","commit_id":"d9970d25dccbdafe567bba360ec0328c1c172baf"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"46d45e628351b8d4a63849fb65181d86d72955ac","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        cls.image_ssh_password \u003d CONF.validation.image_ssh_password"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @classmethod"},{"line_number":130,"context_line":"    def is_requested_microversion_compatible(cls, max_version):"},{"line_number":131,"context_line":"        \"\"\"Check the compatibility of selected request microversions"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        This method will check if selected request microversion for test"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_eed80b54","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":45},"in_reply_to":"bf659307_da5f04e3","updated":"2018-04-10 23:54:48.000000000","message":"yea we can give better name. This method compare the input microversion with cls.request_microversion so i just used is_requested_*","commit_id":"d9970d25dccbdafe567bba360ec0328c1c172baf"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c8f930210a946887543dab8c308fa8a6953b9899","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        cls.image_ssh_password \u003d CONF.validation.image_ssh_password"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @classmethod"},{"line_number":130,"context_line":"    def is_requested_microversion_compatible(cls, max_version):"},{"line_number":131,"context_line":"        \"\"\"Check the compatibility of selected request microversions"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        This method will check if selected request microversion for test"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_1718ee1b","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":45},"in_reply_to":"bf659307_eed80b54","updated":"2018-04-11 02:26:57.000000000","message":"@Ohmichi, it\u0027s hard to find a better name, do you have any suggestion?:)","commit_id":"d9970d25dccbdafe567bba360ec0328c1c172baf"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ed329d05ebf5cbad4149eb1a3e327642b7f5bd1c","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @classmethod"},{"line_number":130,"context_line":"    def is_requested_microversion_compatible(cls, max_version):"},{"line_number":131,"context_line":"        \"\"\"Check the compatibility of selected request microversions"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        This method will check if selected request microversion for test"},{"line_number":134,"context_line":"        is compatible with respect to \u0027max_version\u0027. Compatible means"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_3ae1602b","line":131,"range":{"start_line":131,"start_character":55,"end_line":131,"end_character":68},"updated":"2018-04-10 21:19:24.000000000","message":"s/microversions/microversion/","commit_id":"d9970d25dccbdafe567bba360ec0328c1c172baf"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"047f059d8f331b37b2825be69111d29ec7ee7d88","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @classmethod"},{"line_number":130,"context_line":"    def is_requested_microversion_compatible(cls, max_version):"},{"line_number":131,"context_line":"        \"\"\"Check the compatibility of selected request microversions"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        This method will check if selected request microversion for test"},{"line_number":134,"context_line":"        is compatible with respect to \u0027max_version\u0027. Compatible means"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_f36c4e37","line":131,"range":{"start_line":131,"start_character":55,"end_line":131,"end_character":68},"in_reply_to":"bf659307_3ae1602b","updated":"2018-04-12 01:00:21.000000000","message":"Done","commit_id":"d9970d25dccbdafe567bba360ec0328c1c172baf"}]}
