)]}'
{"tempest/api/compute/admin/test_hypervisor.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"6c7ce1f0207ea5180b930e7adb479fc45f04360a","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    min_microversion \u003d \u00272.53\u0027"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @decorators.idempotent_id(\u002796255198-6516-4ecb-ba9f-bd083bdbb070\u0027)"},{"line_number":147,"context_line":"    def test_get_hypervisor_show_servers(self):"},{"line_number":148,"context_line":"        # Show instances about the specific hypervisor"},{"line_number":149,"context_line":"        hypers \u003d self._list_hypervisors()"},{"line_number":150,"context_line":"        self.assertNotEmpty(hypers, \"No hypervisors found.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ca841761","line":147,"range":{"start_line":147,"start_character":8,"end_line":147,"end_character":40},"updated":"2018-08-22 13:47:53.000000000","message":"nit: This test name is also not accurate since the test case below is concerned with listing hypervisors with specific params, so how about:\n\ntest_list_hypervisors_with_params","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"18cd6c696a6685fbb2cbe6a1e319504a1c940f01","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    min_microversion \u003d \u00272.53\u0027"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @decorators.idempotent_id(\u002796255198-6516-4ecb-ba9f-bd083bdbb070\u0027)"},{"line_number":147,"context_line":"    def test_get_hypervisor_show_servers(self):"},{"line_number":148,"context_line":"        # Show instances about the specific hypervisor"},{"line_number":149,"context_line":"        hypers \u003d self._list_hypervisors()"},{"line_number":150,"context_line":"        self.assertNotEmpty(hypers, \"No hypervisors found.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_8addad71","line":147,"range":{"start_line":147,"start_character":8,"end_line":147,"end_character":40},"in_reply_to":"3f79a3b5_ca841761","updated":"2018-08-23 02:11:55.000000000","message":"Done","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"6c7ce1f0207ea5180b930e7adb479fc45f04360a","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @decorators.idempotent_id(\u002796255198-6516-4ecb-ba9f-bd083bdbb070\u0027)"},{"line_number":147,"context_line":"    def test_get_hypervisor_show_servers(self):"},{"line_number":148,"context_line":"        # Show instances about the specific hypervisor"},{"line_number":149,"context_line":"        hypers \u003d self._list_hypervisors()"},{"line_number":150,"context_line":"        self.assertNotEmpty(hypers, \"No hypervisors found.\")"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ea7b1389","line":148,"range":{"start_line":148,"start_character":8,"end_line":148,"end_character":54},"updated":"2018-08-22 13:47:53.000000000","message":"nit: This comment isn\u0027t correct. This is just listing hypervisors, not showing details for a specific one.","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"18cd6c696a6685fbb2cbe6a1e319504a1c940f01","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @decorators.idempotent_id(\u002796255198-6516-4ecb-ba9f-bd083bdbb070\u0027)"},{"line_number":147,"context_line":"    def test_get_hypervisor_show_servers(self):"},{"line_number":148,"context_line":"        # Show instances about the specific hypervisor"},{"line_number":149,"context_line":"        hypers \u003d self._list_hypervisors()"},{"line_number":150,"context_line":"        self.assertNotEmpty(hypers, \"No hypervisors found.\")"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2ad9f955","line":148,"range":{"start_line":148,"start_character":8,"end_line":148,"end_character":54},"in_reply_to":"3f79a3b5_ea7b1389","updated":"2018-08-23 02:11:55.000000000","message":"Done","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"6c7ce1f0207ea5180b930e7adb479fc45f04360a","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        # Show instances about the specific hypervisor"},{"line_number":149,"context_line":"        hypers \u003d self._list_hypervisors()"},{"line_number":150,"context_line":"        self.assertNotEmpty(hypers, \"No hypervisors found.\")"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        hostname \u003d hypers[0][\u0027hypervisor_hostname\u0027]"},{"line_number":153,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":154,"context_line":"            detail\u003dTrue, with_servers\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4a9807bf","line":151,"updated":"2018-08-22 13:47:53.000000000","message":"As per usual the comments gmann uses to indicate that the response bodies are checked by api schema so no additional assertions are needed would be helpful.","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"229cadb2ea95f36ee317c7c2b834dfba1a96d1c3","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        # Show instances about the specific hypervisor"},{"line_number":149,"context_line":"        hypers \u003d self._list_hypervisors()"},{"line_number":150,"context_line":"        self.assertNotEmpty(hypers, \"No hypervisors found.\")"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        hostname \u003d hypers[0][\u0027hypervisor_hostname\u0027]"},{"line_number":153,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":154,"context_line":"            detail\u003dTrue, with_servers\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_204edc37","line":151,"in_reply_to":"3f79a3b5_0a075d84","updated":"2018-08-24 01:35:35.000000000","message":"I think assertions are OK","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"18cd6c696a6685fbb2cbe6a1e319504a1c940f01","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        # Show instances about the specific hypervisor"},{"line_number":149,"context_line":"        hypers \u003d self._list_hypervisors()"},{"line_number":150,"context_line":"        self.assertNotEmpty(hypers, \"No hypervisors found.\")"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        hostname \u003d hypers[0][\u0027hypervisor_hostname\u0027]"},{"line_number":153,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":154,"context_line":"            detail\u003dTrue, with_servers\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0a075d84","line":151,"in_reply_to":"3f79a3b5_4a9807bf","updated":"2018-08-23 02:11:55.000000000","message":"Here we are testing \"list hypervisors with param\" which is new in this microversion, so not only api schema, but also the functionality.\ne.g., if list_hypervisors(**param) returns a empty result, api schame check won\u0027t complain, but the testcase should fail.\nSo better to keep the assertions?","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"6c7ce1f0207ea5180b930e7adb479fc45f04360a","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            detail\u003dTrue, with_servers\u003dTrue,"},{"line_number":155,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"},{"line_number":156,"context_line":"        self.assertNotEmpty(hypervisors)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":159,"context_line":"            with_servers\u003dTrue,"},{"line_number":160,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2a8b4b68","line":157,"updated":"2018-08-22 13:47:53.000000000","message":"Ditto for delete.","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"18cd6c696a6685fbb2cbe6a1e319504a1c940f01","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            detail\u003dTrue, with_servers\u003dTrue,"},{"line_number":155,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"},{"line_number":156,"context_line":"        self.assertNotEmpty(hypervisors)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":159,"context_line":"            with_servers\u003dTrue,"},{"line_number":160,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2a0c99a3","line":157,"in_reply_to":"3f79a3b5_2a8b4b68","updated":"2018-08-23 02:11:55.000000000","message":"ditto","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"229cadb2ea95f36ee317c7c2b834dfba1a96d1c3","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @decorators.idempotent_id(\u002796255198-6516-4ecb-ba9f-bd083bdbb070\u0027)"},{"line_number":147,"context_line":"    def test_list_hypervisors_with_params(self):"},{"line_number":148,"context_line":"        # List hypervisors with filter"},{"line_number":149,"context_line":"        hypers \u003d self._list_hypervisors()"},{"line_number":150,"context_line":"        self.assertNotEmpty(hypers, \"No hypervisors found.\")"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_a05bccf3","line":148,"range":{"start_line":148,"start_character":32,"end_line":148,"end_character":38},"updated":"2018-08-24 01:35:35.000000000","message":"Why is this one with filter? Impl I see above is:\n\n    def _list_hypervisors(self):\n        # List of hypervisors\n        hypers \u003d self.client.list_hypervisors()[\u0027hypervisors\u0027]\n        return hypers\n\nWhich has no filter.","commit_id":"997e5cf9b22f52b63b55b0cb594354289f144757"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"816454ab9c03d1437087f2526e06bbcb2780315c","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @decorators.idempotent_id(\u002796255198-6516-4ecb-ba9f-bd083bdbb070\u0027)"},{"line_number":147,"context_line":"    def test_list_hypervisors_with_params(self):"},{"line_number":148,"context_line":"        # List hypervisors with filter"},{"line_number":149,"context_line":"        hypers \u003d self._list_hypervisors()"},{"line_number":150,"context_line":"        self.assertNotEmpty(hypers, \"No hypervisors found.\")"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c0636819","line":148,"range":{"start_line":148,"start_character":32,"end_line":148,"end_character":38},"in_reply_to":"3f79a3b5_a05bccf3","updated":"2018-08-24 02:20:51.000000000","message":"o, this comment is for the testcase, not for _list_hypervisors","commit_id":"997e5cf9b22f52b63b55b0cb594354289f144757"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"229cadb2ea95f36ee317c7c2b834dfba1a96d1c3","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        # List hypervisors with filter"},{"line_number":149,"context_line":"        hypers \u003d self._list_hypervisors()"},{"line_number":150,"context_line":"        self.assertNotEmpty(hypers, \"No hypervisors found.\")"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        hostname \u003d hypers[0][\u0027hypervisor_hostname\u0027]"},{"line_number":153,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":154,"context_line":"            detail\u003dTrue, with_servers\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_803d708f","line":151,"updated":"2018-08-24 01:35:35.000000000","message":"After this we should have:\n\n       # List Hypervisors with the hypervisor_hostname_pattern query parameter \n       # supersedes `search_hypervisor` for 2.53+\n        hypervisors \u003d (self.client.list_hypervisors(\n            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])\n        self.assertNotEmpty(hypervisors)","commit_id":"997e5cf9b22f52b63b55b0cb594354289f144757"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"816454ab9c03d1437087f2526e06bbcb2780315c","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        # List hypervisors with filter"},{"line_number":149,"context_line":"        hypers \u003d self._list_hypervisors()"},{"line_number":150,"context_line":"        self.assertNotEmpty(hypers, \"No hypervisors found.\")"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        hostname \u003d hypers[0][\u0027hypervisor_hostname\u0027]"},{"line_number":153,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":154,"context_line":"            detail\u003dTrue, with_servers\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_03472a4e","line":151,"in_reply_to":"3f79a3b5_803d708f","updated":"2018-08-24 02:20:51.000000000","message":"thanks, done","commit_id":"997e5cf9b22f52b63b55b0cb594354289f144757"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"229cadb2ea95f36ee317c7c2b834dfba1a96d1c3","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        self.assertNotEmpty(hypers, \"No hypervisors found.\")"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        hostname \u003d hypers[0][\u0027hypervisor_hostname\u0027]"},{"line_number":153,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":154,"context_line":"            detail\u003dTrue, with_servers\u003dTrue,"},{"line_number":155,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"},{"line_number":156,"context_line":"        self.assertNotEmpty(hypervisors)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_005160d9","line":153,"range":{"start_line":153,"start_character":8,"end_line":153,"end_character":52},"updated":"2018-08-24 01:35:35.000000000","message":"This one appears to be just checking GET /os-hypervisors/detail response schema.\n\nI\u0027m just adding comment above for clarity. I think it is useful to track what each one of these is testing with a comment or else you have to cross-reference against Nova API docs to understand.","commit_id":"997e5cf9b22f52b63b55b0cb594354289f144757"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"816454ab9c03d1437087f2526e06bbcb2780315c","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        self.assertNotEmpty(hypers, \"No hypervisors found.\")"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        hostname \u003d hypers[0][\u0027hypervisor_hostname\u0027]"},{"line_number":153,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":154,"context_line":"            detail\u003dTrue, with_servers\u003dTrue,"},{"line_number":155,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"},{"line_number":156,"context_line":"        self.assertNotEmpty(hypervisors)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_e37b0e89","line":153,"range":{"start_line":153,"start_character":8,"end_line":153,"end_character":52},"in_reply_to":"3f79a3b5_005160d9","updated":"2018-08-24 02:20:51.000000000","message":"nice point, thanks","commit_id":"997e5cf9b22f52b63b55b0cb594354289f144757"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"229cadb2ea95f36ee317c7c2b834dfba1a96d1c3","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"},{"line_number":156,"context_line":"        self.assertNotEmpty(hypervisors)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":159,"context_line":"            with_servers\u003dTrue,"},{"line_number":160,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"},{"line_number":161,"context_line":"        self.assertNotEmpty(hypervisors)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c037e8af","line":158,"range":{"start_line":158,"start_character":8,"end_line":158,"end_character":52},"updated":"2018-08-24 01:35:35.000000000","message":"I think it would be useful to add comment that:\n\n\"List Hypervisors with the hypervisor_hostname_pattern and with_servers query parameters supersedes `list_servers_on_hypervisor` for 2.53+\"","commit_id":"997e5cf9b22f52b63b55b0cb594354289f144757"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"816454ab9c03d1437087f2526e06bbcb2780315c","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"},{"line_number":156,"context_line":"        self.assertNotEmpty(hypervisors)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":159,"context_line":"            with_servers\u003dTrue,"},{"line_number":160,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"},{"line_number":161,"context_line":"        self.assertNotEmpty(hypervisors)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_2344a646","line":158,"range":{"start_line":158,"start_character":8,"end_line":158,"end_character":52},"in_reply_to":"3f79a3b5_c037e8af","updated":"2018-08-24 02:20:51.000000000","message":"Done","commit_id":"997e5cf9b22f52b63b55b0cb594354289f144757"},{"author":{"_account_id":27078,"name":"Manik Bindlish","email":"manikbindlish19@gmail.com","username":"manik"},"change_message_id":"818c4027374b0bb8abd9b7337e3271654e2ec2ab","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"},{"line_number":157,"context_line":"        self.assertNotEmpty(hypervisors)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        # List Hypervisors with the hypervisor_hostname_pattern and"},{"line_number":160,"context_line":"        # with_servers query parameters supersedes"},{"line_number":161,"context_line":"        # `list_servers_on_hypervisor` for 2.53+"},{"line_number":162,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":163,"context_line":"            detail\u003dTrue, with_servers\u003dTrue,"},{"line_number":164,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_fccccb6a","line":161,"range":{"start_line":159,"start_character":8,"end_line":161,"end_character":48},"updated":"2018-08-28 05:08:16.000000000","message":"This comment is more relevant before L[167].\nBut here needs to add comment for \"detail\" parameter too in addition with \"hypervisor_hostname_pattern\" and \"with_servers\".","commit_id":"292f3a641ffaf1a9c1957e9f1d5b645815a934ca"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"b4cbc0a6655f5e0c7fa397f3977fa0c7c3c639a0","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"},{"line_number":157,"context_line":"        self.assertNotEmpty(hypervisors)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        # List Hypervisors with the hypervisor_hostname_pattern and"},{"line_number":160,"context_line":"        # with_servers query parameters supersedes"},{"line_number":161,"context_line":"        # `list_servers_on_hypervisor` for 2.53+"},{"line_number":162,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":163,"context_line":"            detail\u003dTrue, with_servers\u003dTrue,"},{"line_number":164,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_9a9edb67","line":161,"range":{"start_line":159,"start_character":8,"end_line":161,"end_character":48},"in_reply_to":"3f79a3b5_fccccb6a","updated":"2018-08-29 06:17:18.000000000","message":"Done","commit_id":"292f3a641ffaf1a9c1957e9f1d5b645815a934ca"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"943890c11fcbbab4198f6f8b2f3162fc2aed4d77","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        # parameter supersedes `search_hypervisor` for 2.53+"},{"line_number":155,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":156,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"},{"line_number":157,"context_line":"        self.assertNotEmpty(hypervisors)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        # List Hypervisors with the hypervisor_hostname_pattern and"},{"line_number":160,"context_line":"        # with_servers query parameters supersedes"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_d660e0a6","line":157,"updated":"2018-10-16 03:50:26.000000000","message":"small nit: Would be nice to add \"No hypervisors found.\" as second argument to assertNotEmpty for easier debugging and consistenty, ditto below.","commit_id":"5b317ac476be8cf071aaa6a38c98e5ed458d930a"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"e7947761fce1554b099155962c66ed6572973f06","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        # parameter supersedes `search_hypervisor` for 2.53+"},{"line_number":155,"context_line":"        hypervisors \u003d (self.client.list_hypervisors("},{"line_number":156,"context_line":"            hypervisor_hostname_pattern\u003dhostname)[\u0027hypervisors\u0027])"},{"line_number":157,"context_line":"        self.assertNotEmpty(hypervisors)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        # List Hypervisors with the hypervisor_hostname_pattern and"},{"line_number":160,"context_line":"        # with_servers query parameters supersedes"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_5f0b8320","line":157,"in_reply_to":"3f79a3b5_d660e0a6","updated":"2018-10-16 07:14:37.000000000","message":"Done","commit_id":"5b317ac476be8cf071aaa6a38c98e5ed458d930a"}],"tempest/lib/api_schema/response/compute/v2_53/hypervisors.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"6c7ce1f0207ea5180b930e7adb479fc45f04360a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        \u0027items\u0027: {"},{"line_number":27,"context_line":"            \u0027properties\u0027: {"},{"line_number":28,"context_line":"                \u0027name\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":29,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027}"},{"line_number":30,"context_line":"            },"},{"line_number":31,"context_line":"            \u0027additionalProperties\u0027: False}}}"},{"line_number":32,"context_line":"list_search_hypervisors \u003d copy.deepcopy(hypervisors.list_search_hypervisors)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ea0a33d0","line":29,"updated":"2018-08-22 13:47:53.000000000","message":"Should this one not include \u0027format\u0027: \u0027uuid\u0027 as well? I mean:\n\n{\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027uuid\u0027}","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"18cd6c696a6685fbb2cbe6a1e319504a1c940f01","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        \u0027items\u0027: {"},{"line_number":27,"context_line":"            \u0027properties\u0027: {"},{"line_number":28,"context_line":"                \u0027name\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":29,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027}"},{"line_number":30,"context_line":"            },"},{"line_number":31,"context_line":"            \u0027additionalProperties\u0027: False}}}"},{"line_number":32,"context_line":"list_search_hypervisors \u003d copy.deepcopy(hypervisors.list_search_hypervisors)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2a7fb9e0","line":29,"in_reply_to":"3f79a3b5_ea0a33d0","updated":"2018-08-23 02:11:55.000000000","message":"Done","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"6c7ce1f0207ea5180b930e7adb479fc45f04360a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027}"},{"line_number":30,"context_line":"            },"},{"line_number":31,"context_line":"            \u0027additionalProperties\u0027: False}}}"},{"line_number":32,"context_line":"list_search_hypervisors \u003d copy.deepcopy(hypervisors.list_search_hypervisors)"},{"line_number":33,"context_line":"list_search_hypervisors[\u0027response_body\u0027][\u0027properties\u0027][\u0027hypervisors\u0027][\u0027items\u0027]["},{"line_number":34,"context_line":"    \u0027properties\u0027].update(servers)"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_aa5bdbf3","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":23},"updated":"2018-08-22 13:47:53.000000000","message":"I believe we also need to make this update:\n\nid\n  The id of the hypervisor as a UUID.\n  New in version 2.53\n\nFor GET /os-hypervisors","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"816454ab9c03d1437087f2526e06bbcb2780315c","unresolved":false,"context_lines":[{"line_number":29,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027}"},{"line_number":30,"context_line":"            },"},{"line_number":31,"context_line":"            \u0027additionalProperties\u0027: False}}}"},{"line_number":32,"context_line":"list_search_hypervisors \u003d copy.deepcopy(hypervisors.list_search_hypervisors)"},{"line_number":33,"context_line":"list_search_hypervisors[\u0027response_body\u0027][\u0027properties\u0027][\u0027hypervisors\u0027][\u0027items\u0027]["},{"line_number":34,"context_line":"    \u0027properties\u0027].update(servers)"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_03e3aa35","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":23},"in_reply_to":"3f79a3b5_20fc9cb3","updated":"2018-08-24 02:20:51.000000000","message":"This change is mainly for list hypervisors with filter, but ok to change to uuid. done","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"18cd6c696a6685fbb2cbe6a1e319504a1c940f01","unresolved":false,"context_lines":[{"line_number":29,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027}"},{"line_number":30,"context_line":"            },"},{"line_number":31,"context_line":"            \u0027additionalProperties\u0027: False}}}"},{"line_number":32,"context_line":"list_search_hypervisors \u003d copy.deepcopy(hypervisors.list_search_hypervisors)"},{"line_number":33,"context_line":"list_search_hypervisors[\u0027response_body\u0027][\u0027properties\u0027][\u0027hypervisors\u0027][\u0027items\u0027]["},{"line_number":34,"context_line":"    \u0027properties\u0027].update(servers)"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ca6965f8","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":23},"in_reply_to":"3f79a3b5_aa5bdbf3","updated":"2018-08-23 02:11:55.000000000","message":"Yeah 2.53 changes to uuid.\nThe previous schema is \"\u0027id\u0027: {\u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027]}\", so the schema check won\u0027t fail in 2.53. If we want to make more strict check, maybe we can do it in other patch?","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"229cadb2ea95f36ee317c7c2b834dfba1a96d1c3","unresolved":false,"context_lines":[{"line_number":29,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027}"},{"line_number":30,"context_line":"            },"},{"line_number":31,"context_line":"            \u0027additionalProperties\u0027: False}}}"},{"line_number":32,"context_line":"list_search_hypervisors \u003d copy.deepcopy(hypervisors.list_search_hypervisors)"},{"line_number":33,"context_line":"list_search_hypervisors[\u0027response_body\u0027][\u0027properties\u0027][\u0027hypervisors\u0027][\u0027items\u0027]["},{"line_number":34,"context_line":"    \u0027properties\u0027].update(servers)"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_20fc9cb3","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":23},"in_reply_to":"3f79a3b5_ca6965f8","updated":"2018-08-24 01:35:35.000000000","message":"But wouldn\u0027t it be relevant to add it here if this change is for 2.53 schema changes?","commit_id":"9084ce371282efed62677cdd905e1f1303e74763"}],"tempest/lib/services/compute/hypervisor_client.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"1805794ccca1e5ba137af4f8f830d364a5cf2409","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    schema_versions_info \u003d ["},{"line_number":32,"context_line":"        {\u0027min\u0027: None, \u0027max\u0027: \u00272.27\u0027, \u0027schema\u0027: schemav21},"},{"line_number":33,"context_line":"        {\u0027min\u0027: \u00272.28\u0027, \u0027max\u0027: \u00272.52\u0027, \u0027schema\u0027: schemav228},"},{"line_number":34,"context_line":"        {\u0027min\u0027: \u00272.23\u0027, \u0027max\u0027: None, \u0027schema\u0027: schemav253}]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def list_hypervisors(self, detail\u003dFalse, **params):"},{"line_number":37,"context_line":"        \"\"\"List hypervisors information."}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_6820724a","line":34,"range":{"start_line":34,"start_character":19,"end_line":34,"end_character":21},"updated":"2018-09-03 15:58:27.000000000","message":"53","commit_id":"5dca51ac19a38c8f1eef307021b71b1f36663e35"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"356572fd8ee559fea0ae1b3b66187c91dc5b83fb","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    schema_versions_info \u003d ["},{"line_number":32,"context_line":"        {\u0027min\u0027: None, \u0027max\u0027: \u00272.27\u0027, \u0027schema\u0027: schemav21},"},{"line_number":33,"context_line":"        {\u0027min\u0027: \u00272.28\u0027, \u0027max\u0027: \u00272.52\u0027, \u0027schema\u0027: schemav228},"},{"line_number":34,"context_line":"        {\u0027min\u0027: \u00272.23\u0027, \u0027max\u0027: None, \u0027schema\u0027: schemav253}]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def list_hypervisors(self, detail\u003dFalse, **params):"},{"line_number":37,"context_line":"        \"\"\"List hypervisors information."}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_e7326ca7","line":34,"range":{"start_line":34,"start_character":19,"end_line":34,"end_character":21},"in_reply_to":"3f79a3b5_6820724a","updated":"2018-09-04 01:22:19.000000000","message":"o, done","commit_id":"5dca51ac19a38c8f1eef307021b71b1f36663e35"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"943890c11fcbbab4198f6f8b2f3162fc2aed4d77","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \"\"\""},{"line_number":43,"context_line":"        url \u003d \u0027os-hypervisors\u0027"},{"line_number":44,"context_line":"        schema \u003d self.get_schema(self.schema_versions_info)"},{"line_number":45,"context_line":"        _schema \u003d schema.list_search_hypervisors"},{"line_number":46,"context_line":"        if detail:"},{"line_number":47,"context_line":"            url +\u003d \u0027/detail\u0027"},{"line_number":48,"context_line":"            _schema \u003d schema.list_hypervisors_detail"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_16e898a4","line":45,"range":{"start_line":45,"start_character":25,"end_line":45,"end_character":48},"updated":"2018-10-16 03:50:26.000000000","message":"This isn\u0027t correct. This is using the same deprecated schema as `search_hypervisor` below. This now supports things like hypervisor_links, servers, etc.\n\nSee: https://developer.openstack.org/api-ref/compute/#list-hypervisors","commit_id":"5b317ac476be8cf071aaa6a38c98e5ed458d930a"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"e7947761fce1554b099155962c66ed6572973f06","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \"\"\""},{"line_number":43,"context_line":"        url \u003d \u0027os-hypervisors\u0027"},{"line_number":44,"context_line":"        schema \u003d self.get_schema(self.schema_versions_info)"},{"line_number":45,"context_line":"        _schema \u003d schema.list_search_hypervisors"},{"line_number":46,"context_line":"        if detail:"},{"line_number":47,"context_line":"            url +\u003d \u0027/detail\u0027"},{"line_number":48,"context_line":"            _schema \u003d schema.list_hypervisors_detail"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_df4d5371","line":45,"range":{"start_line":45,"start_character":25,"end_line":45,"end_character":48},"in_reply_to":"3f79a3b5_16e898a4","updated":"2018-10-16 07:14:37.000000000","message":"1. v2_53/hypervisors.py has servers and id added in schema of list_search_hypervisors, which both are available from 2.53\n2. hypervisor_links is available from 2.33, so maybe we can add it in a seperate patch","commit_id":"5b317ac476be8cf071aaa6a38c98e5ed458d930a"}]}
