)]}'
{"tempest/api/compute/servers/test_server_tags.py":[{"author":{"_account_id":25085,"name":"Zhongwei He","email":"areialray@gmail.com","username":"zwhe"},"change_message_id":"9d1cca61af6dee658d636cd774ce19f1163b39f9","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    @classmethod"},{"line_number":28,"context_line":"    def skip_checks(cls):"},{"line_number":29,"context_line":"        super(ServerTagsTestJSON, cls).skip_checks()"},{"line_number":30,"context_line":"        if not test.is_extension_enabled(\u0027os-server-tags\u0027, \u0027compute\u0027):"},{"line_number":31,"context_line":"            msg \u003d \"os-server-tags extension is not enabled.\""},{"line_number":32,"context_line":"            raise cls.skipException(msg)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"},{"line_number":35,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_9590a7ee","line":32,"range":{"start_line":30,"start_character":0,"end_line":32,"end_character":40},"updated":"2017-02-18 08:11:56.000000000","message":"Maybe you can use   test.is_extension_enabled(\u0027os-server-tags\u0027, \u0027compute\u0027)  to replace this","commit_id":"047a6c5615599e8ef406e0efa6ddf0430f78b674"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"8a5b13d12557e3428d0835d46c81c44a3e3a2b0a","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    @classmethod"},{"line_number":28,"context_line":"    def skip_checks(cls):"},{"line_number":29,"context_line":"        super(ServerTagsTestJSON, cls).skip_checks()"},{"line_number":30,"context_line":"        if not test.is_extension_enabled(\u0027os-server-tags\u0027, \u0027compute\u0027):"},{"line_number":31,"context_line":"            msg \u003d \"os-server-tags extension is not enabled.\""},{"line_number":32,"context_line":"            raise cls.skipException(msg)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"},{"line_number":35,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_06b64b8a","line":32,"range":{"start_line":30,"start_character":0,"end_line":32,"end_character":40},"in_reply_to":"da36d5c6_9590a7ee","updated":"2017-02-18 15:39:53.000000000","message":"I thought that\u0027s what I did? I followed this example: https://github.com/openstack/tempest/blob/8ba6e74ca78ea16c5684bebf9fa8a2ba497a703b/tempest/api/compute/servers/test_server_group.py","commit_id":"047a6c5615599e8ef406e0efa6ddf0430f78b674"},{"author":{"_account_id":25085,"name":"Zhongwei He","email":"areialray@gmail.com","username":"zwhe"},"change_message_id":"9d1cca61af6dee658d636cd774ce19f1163b39f9","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def test_add_single_tag(self):"},{"line_number":64,"context_line":"        # Check that no tags exist."},{"line_number":65,"context_line":"        body \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"},{"line_number":66,"context_line":"        self.assertEqual([], body)"},{"line_number":67,"context_line":"        # Add server tag to the server."},{"line_number":68,"context_line":"        tags \u003d [\u0027foo\u0027]"},{"line_number":69,"context_line":"        self._add_server_tags(self.server[\u0027id\u0027], tags)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_b5492b91","line":66,"range":{"start_line":66,"start_character":8,"end_line":66,"end_character":34},"updated":"2017-02-18 08:11:56.000000000","message":"Would you like to use self.assertEmpty(body)?","commit_id":"047a6c5615599e8ef406e0efa6ddf0430f78b674"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"8a5b13d12557e3428d0835d46c81c44a3e3a2b0a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def test_add_single_tag(self):"},{"line_number":64,"context_line":"        # Check that no tags exist."},{"line_number":65,"context_line":"        body \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"},{"line_number":66,"context_line":"        self.assertEqual([], body)"},{"line_number":67,"context_line":"        # Add server tag to the server."},{"line_number":68,"context_line":"        tags \u003d [\u0027foo\u0027]"},{"line_number":69,"context_line":"        self._add_server_tags(self.server[\u0027id\u0027], tags)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_86aa3b18","line":66,"range":{"start_line":66,"start_character":8,"end_line":66,"end_character":34},"in_reply_to":"da36d5c6_b5492b91","updated":"2017-02-18 15:39:53.000000000","message":"Yes, that\u0027s more readable.","commit_id":"047a6c5615599e8ef406e0efa6ddf0430f78b674"},{"author":{"_account_id":25085,"name":"Zhongwei He","email":"areialray@gmail.com","username":"zwhe"},"change_message_id":"9d1cca61af6dee658d636cd774ce19f1163b39f9","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    @decorators.idempotent_id(\u00277ec22a2f-aa66-4be0-92e8-44cd402d567b\u0027)"},{"line_number":75,"context_line":"    def test_delete_single_tag(self):"},{"line_number":76,"context_line":"        # Add server tag to the server."},{"line_number":77,"context_line":"        tags \u003d [\u0027foo\u0027]"},{"line_number":78,"context_line":"        self._add_server_tags(self.server[\u0027id\u0027], tags)"},{"line_number":79,"context_line":"        # Remove tag from server and check that it was removed."},{"line_number":80,"context_line":"        self._delete_server_tags(self.server[\u0027id\u0027], tags)"},{"line_number":81,"context_line":"        body \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"},{"line_number":82,"context_line":"        self.assertEqual([], body)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @decorators.idempotent_id(\u0027a2c1af8c-127d-417d-974b-8115f7e3d831\u0027)"},{"line_number":85,"context_line":"    def test_replace_tags(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_75589357","line":82,"range":{"start_line":77,"start_character":0,"end_line":82,"end_character":34},"updated":"2017-02-18 08:11:56.000000000","message":"Maybe it\u0027s better to use \u0027assigned_tags\u0027 to replace the variable \u0027tags\u0027,and \u0027fetched_tags\u0027 for \u0027body\u0027.","commit_id":"047a6c5615599e8ef406e0efa6ddf0430f78b674"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"8a5b13d12557e3428d0835d46c81c44a3e3a2b0a","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    @decorators.idempotent_id(\u00277ec22a2f-aa66-4be0-92e8-44cd402d567b\u0027)"},{"line_number":75,"context_line":"    def test_delete_single_tag(self):"},{"line_number":76,"context_line":"        # Add server tag to the server."},{"line_number":77,"context_line":"        tags \u003d [\u0027foo\u0027]"},{"line_number":78,"context_line":"        self._add_server_tags(self.server[\u0027id\u0027], tags)"},{"line_number":79,"context_line":"        # Remove tag from server and check that it was removed."},{"line_number":80,"context_line":"        self._delete_server_tags(self.server[\u0027id\u0027], tags)"},{"line_number":81,"context_line":"        body \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"},{"line_number":82,"context_line":"        self.assertEqual([], body)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @decorators.idempotent_id(\u0027a2c1af8c-127d-417d-974b-8115f7e3d831\u0027)"},{"line_number":85,"context_line":"    def test_replace_tags(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_66ad4731","line":82,"range":{"start_line":77,"start_character":0,"end_line":82,"end_character":34},"in_reply_to":"da36d5c6_75589357","updated":"2017-02-18 15:39:53.000000000","message":"I\u0027ll make these changes here and in the other test functions.","commit_id":"047a6c5615599e8ef406e0efa6ddf0430f78b674"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9077fd4373c1b4b01937f5439de10b1de9686ec5","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            self.client.add_single_tag(server_id, tag)"},{"line_number":52,"context_line":"        self.addCleanup(self.client.delete_tags, server_id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _delete_server_tags(self, server_id, tags):"},{"line_number":55,"context_line":"        if not isinstance(tags, (list, tuple)):"},{"line_number":56,"context_line":"            tags \u003d [tags]"},{"line_number":57,"context_line":"        for tag in tags:"},{"line_number":58,"context_line":"            self.client.delete_single_tag(server_id, tag)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_36ca93a2","line":56,"range":{"start_line":54,"start_character":0,"end_line":56,"end_character":25},"updated":"2017-02-20 07:20:52.000000000","message":"this function seems not necessary. it is only used in test_delete_single_tag","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"db7a769fd52fbf6ec5673113ab3702a4f71dc53d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            self.client.add_single_tag(server_id, tag)"},{"line_number":52,"context_line":"        self.addCleanup(self.client.delete_tags, server_id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _delete_server_tags(self, server_id, tags):"},{"line_number":55,"context_line":"        if not isinstance(tags, (list, tuple)):"},{"line_number":56,"context_line":"            tags \u003d [tags]"},{"line_number":57,"context_line":"        for tag in tags:"},{"line_number":58,"context_line":"            self.client.delete_single_tag(server_id, tag)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_b36f5f91","line":56,"range":{"start_line":54,"start_character":0,"end_line":56,"end_character":25},"in_reply_to":"da36d5c6_36ca93a2","updated":"2017-02-20 18:55:48.000000000","message":"Done","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9077fd4373c1b4b01937f5439de10b1de9686ec5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        self._add_server_tags(self.server[\u0027id\u0027], assigned_tag)"},{"line_number":74,"context_line":"        # Check that added tag exists."},{"line_number":75,"context_line":"        fetched_tags \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"},{"line_number":76,"context_line":"        self.assertEqual(1, len(fetched_tags))"},{"line_number":77,"context_line":"        self.assertEqual([assigned_tag], fetched_tags)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @decorators.idempotent_id(\u00277ec22a2f-aa66-4be0-92e8-44cd402d567b\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_56462724","line":76,"range":{"start_line":76,"start_character":8,"end_line":76,"end_character":46},"updated":"2017-02-20 07:20:52.000000000","message":"this is not needed, because the following check can cover it","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"db7a769fd52fbf6ec5673113ab3702a4f71dc53d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        self._add_server_tags(self.server[\u0027id\u0027], assigned_tag)"},{"line_number":74,"context_line":"        # Check that added tag exists."},{"line_number":75,"context_line":"        fetched_tags \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"},{"line_number":76,"context_line":"        self.assertEqual(1, len(fetched_tags))"},{"line_number":77,"context_line":"        self.assertEqual([assigned_tag], fetched_tags)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @decorators.idempotent_id(\u00277ec22a2f-aa66-4be0-92e8-44cd402d567b\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_33636fb3","line":76,"range":{"start_line":76,"start_character":8,"end_line":76,"end_character":46},"in_reply_to":"da36d5c6_56462724","updated":"2017-02-20 18:55:48.000000000","message":"Done","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9077fd4373c1b4b01937f5439de10b1de9686ec5","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        self.assertEqual([assigned_tag], fetched_tags)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @decorators.idempotent_id(\u00277ec22a2f-aa66-4be0-92e8-44cd402d567b\u0027)"},{"line_number":80,"context_line":"    def test_delete_single_tag(self):"},{"line_number":81,"context_line":"        # Add server tag to the server."},{"line_number":82,"context_line":"        assigned_tag \u003d data_utils.rand_name(\u0027tag\u0027)"},{"line_number":83,"context_line":"        self._add_server_tags(self.server[\u0027id\u0027], assigned_tag)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_1663cfb2","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":30},"updated":"2017-02-20 07:20:52.000000000","message":"maybe this can be merged into test_add_single_tag, i.e., test_create_delete_single_tag?","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"db7a769fd52fbf6ec5673113ab3702a4f71dc53d","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        self.assertEqual([assigned_tag], fetched_tags)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @decorators.idempotent_id(\u00277ec22a2f-aa66-4be0-92e8-44cd402d567b\u0027)"},{"line_number":80,"context_line":"    def test_delete_single_tag(self):"},{"line_number":81,"context_line":"        # Add server tag to the server."},{"line_number":82,"context_line":"        assigned_tag \u003d data_utils.rand_name(\u0027tag\u0027)"},{"line_number":83,"context_line":"        self._add_server_tags(self.server[\u0027id\u0027], assigned_tag)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_735de7e8","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":30},"in_reply_to":"da36d5c6_1663cfb2","updated":"2017-02-20 18:55:48.000000000","message":"Done","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9077fd4373c1b4b01937f5439de10b1de9686ec5","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self._add_server_tags(self.server[\u0027id\u0027], tags)"},{"line_number":94,"context_line":"        new_tags \u003d [data_utils.rand_name(\u0027tag\u0027), data_utils.rand_name(\u0027tag\u0027)]"},{"line_number":95,"context_line":"        # Replace tags with new tags and check that they are present."},{"line_number":96,"context_line":"        fetched_tags \u003d self.client.replace_tags("},{"line_number":97,"context_line":"            self.server[\u0027id\u0027], new_tags)[\u0027tags\u0027]"},{"line_number":98,"context_line":"        self.addCleanup(self.client.delete_tags, self.server[\u0027id\u0027])"},{"line_number":99,"context_line":"        self.assertEqual(2, len(fetched_tags))"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_f6b9dbed","line":96,"range":{"start_line":96,"start_character":8,"end_line":96,"end_character":20},"updated":"2017-02-20 07:20:52.000000000","message":"better to use replace_tags?","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"db7a769fd52fbf6ec5673113ab3702a4f71dc53d","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self._add_server_tags(self.server[\u0027id\u0027], tags)"},{"line_number":94,"context_line":"        new_tags \u003d [data_utils.rand_name(\u0027tag\u0027), data_utils.rand_name(\u0027tag\u0027)]"},{"line_number":95,"context_line":"        # Replace tags with new tags and check that they are present."},{"line_number":96,"context_line":"        fetched_tags \u003d self.client.replace_tags("},{"line_number":97,"context_line":"            self.server[\u0027id\u0027], new_tags)[\u0027tags\u0027]"},{"line_number":98,"context_line":"        self.addCleanup(self.client.delete_tags, self.server[\u0027id\u0027])"},{"line_number":99,"context_line":"        self.assertEqual(2, len(fetched_tags))"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_d36cd39e","line":96,"range":{"start_line":96,"start_character":8,"end_line":96,"end_character":20},"in_reply_to":"da36d5c6_f6b9dbed","updated":"2017-02-20 18:55:48.000000000","message":"Done","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9077fd4373c1b4b01937f5439de10b1de9686ec5","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        fetched_tags \u003d self.client.replace_tags("},{"line_number":97,"context_line":"            self.server[\u0027id\u0027], new_tags)[\u0027tags\u0027]"},{"line_number":98,"context_line":"        self.addCleanup(self.client.delete_tags, self.server[\u0027id\u0027])"},{"line_number":99,"context_line":"        self.assertEqual(2, len(fetched_tags))"},{"line_number":100,"context_line":"        for old_tag in tags:"},{"line_number":101,"context_line":"            self.assertNotIn(old_tag, fetched_tags)"},{"line_number":102,"context_line":"        six.assertCountEqual(self, new_tags, fetched_tags)"},{"line_number":103,"context_line":"        # List the tags and check that the tags were replaced."},{"line_number":104,"context_line":"        fetched_tags \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"},{"line_number":105,"context_line":"        self.assertEqual(2, len(fetched_tags))"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_36b453f1","line":102,"range":{"start_line":99,"start_character":0,"end_line":102,"end_character":58},"updated":"2017-02-20 07:20:52.000000000","message":"this seems can be replaced by one line:\nself.assertEqual(set(new_tags), set(fetched_tags))","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"db7a769fd52fbf6ec5673113ab3702a4f71dc53d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        fetched_tags \u003d self.client.replace_tags("},{"line_number":97,"context_line":"            self.server[\u0027id\u0027], new_tags)[\u0027tags\u0027]"},{"line_number":98,"context_line":"        self.addCleanup(self.client.delete_tags, self.server[\u0027id\u0027])"},{"line_number":99,"context_line":"        self.assertEqual(2, len(fetched_tags))"},{"line_number":100,"context_line":"        for old_tag in tags:"},{"line_number":101,"context_line":"            self.assertNotIn(old_tag, fetched_tags)"},{"line_number":102,"context_line":"        six.assertCountEqual(self, new_tags, fetched_tags)"},{"line_number":103,"context_line":"        # List the tags and check that the tags were replaced."},{"line_number":104,"context_line":"        fetched_tags \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"},{"line_number":105,"context_line":"        self.assertEqual(2, len(fetched_tags))"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_93e7bb11","line":102,"range":{"start_line":99,"start_character":0,"end_line":102,"end_character":58},"in_reply_to":"da36d5c6_36b453f1","updated":"2017-02-20 18:55:48.000000000","message":"I chose to stick with just six.assertCountEqual, used here: https://github.com/openstack/tempest/blob/96e604bf4fa45ae7d0a284048fe6c2f668c11d41/tempest/api/network/test_networks.py\n\nIt has a misleading name, but basically checks that the contents of both containers are identical, regardless of order; it\u0027s a wrapper for assertCountEqual in py3.4 and assertItemsEqual in py2.7; this is the reference for py3.4: https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertCountEqual","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9077fd4373c1b4b01937f5439de10b1de9686ec5","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        for old_tag in tags:"},{"line_number":101,"context_line":"            self.assertNotIn(old_tag, fetched_tags)"},{"line_number":102,"context_line":"        six.assertCountEqual(self, new_tags, fetched_tags)"},{"line_number":103,"context_line":"        # List the tags and check that the tags were replaced."},{"line_number":104,"context_line":"        fetched_tags \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"},{"line_number":105,"context_line":"        self.assertEqual(2, len(fetched_tags))"},{"line_number":106,"context_line":"        for old_tag in tags:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_f6a0fba7","line":103,"updated":"2017-02-20 07:20:52.000000000","message":"better to add a blank line to separate code logic blocks","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"db7a769fd52fbf6ec5673113ab3702a4f71dc53d","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        for old_tag in tags:"},{"line_number":101,"context_line":"            self.assertNotIn(old_tag, fetched_tags)"},{"line_number":102,"context_line":"        six.assertCountEqual(self, new_tags, fetched_tags)"},{"line_number":103,"context_line":"        # List the tags and check that the tags were replaced."},{"line_number":104,"context_line":"        fetched_tags \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"},{"line_number":105,"context_line":"        self.assertEqual(2, len(fetched_tags))"},{"line_number":106,"context_line":"        for old_tag in tags:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_f369d78c","line":103,"in_reply_to":"da36d5c6_f6a0fba7","updated":"2017-02-20 18:55:48.000000000","message":"Done","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9077fd4373c1b4b01937f5439de10b1de9686ec5","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        six.assertCountEqual(self, new_tags, fetched_tags)"},{"line_number":103,"context_line":"        # List the tags and check that the tags were replaced."},{"line_number":104,"context_line":"        fetched_tags \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"},{"line_number":105,"context_line":"        self.assertEqual(2, len(fetched_tags))"},{"line_number":106,"context_line":"        for old_tag in tags:"},{"line_number":107,"context_line":"            self.assertNotIn(old_tag, fetched_tags)"},{"line_number":108,"context_line":"        six.assertCountEqual(self, new_tags, fetched_tags)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @decorators.idempotent_id(\u0027a63b2a74-e918-4b7c-bcab-10c855f3a57e\u0027)"},{"line_number":111,"context_line":"    def test_delete_all_tags(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_76cecb84","line":108,"range":{"start_line":105,"start_character":0,"end_line":108,"end_character":58},"updated":"2017-02-20 07:20:52.000000000","message":"ditto","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"db7a769fd52fbf6ec5673113ab3702a4f71dc53d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        six.assertCountEqual(self, new_tags, fetched_tags)"},{"line_number":103,"context_line":"        # List the tags and check that the tags were replaced."},{"line_number":104,"context_line":"        fetched_tags \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"},{"line_number":105,"context_line":"        self.assertEqual(2, len(fetched_tags))"},{"line_number":106,"context_line":"        for old_tag in tags:"},{"line_number":107,"context_line":"            self.assertNotIn(old_tag, fetched_tags)"},{"line_number":108,"context_line":"        six.assertCountEqual(self, new_tags, fetched_tags)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @decorators.idempotent_id(\u0027a63b2a74-e918-4b7c-bcab-10c855f3a57e\u0027)"},{"line_number":111,"context_line":"    def test_delete_all_tags(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_13058bc1","line":108,"range":{"start_line":105,"start_character":0,"end_line":108,"end_character":58},"in_reply_to":"da36d5c6_76cecb84","updated":"2017-02-20 18:55:48.000000000","message":"Done","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9077fd4373c1b4b01937f5439de10b1de9686ec5","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        # Check that added tag exists. Throws a 404 if no found, else a 204,"},{"line_number":127,"context_line":"        # which was already checked by the schema validation."},{"line_number":128,"context_line":"        body \u003d self.client.check_tag_existence(self.server[\u0027id\u0027], assigned_tag)"},{"line_number":129,"context_line":"        self.assertIsInstance(body, dict)"},{"line_number":130,"context_line":"        self.assertDictEqual({}, body)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @decorators.idempotent_id(\u00273b7fb7e1-8275-4f0d-88b2-9ce7aee167e7\u0027)"},{"line_number":133,"context_line":"    def test_check_tag_existence_negative(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_16a66fc1","line":130,"range":{"start_line":129,"start_character":0,"end_line":130,"end_character":38},"updated":"2017-02-20 07:20:52.000000000","message":"seems not very necessary","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"db7a769fd52fbf6ec5673113ab3702a4f71dc53d","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        # Check that added tag exists. Throws a 404 if no found, else a 204,"},{"line_number":127,"context_line":"        # which was already checked by the schema validation."},{"line_number":128,"context_line":"        body \u003d self.client.check_tag_existence(self.server[\u0027id\u0027], assigned_tag)"},{"line_number":129,"context_line":"        self.assertIsInstance(body, dict)"},{"line_number":130,"context_line":"        self.assertDictEqual({}, body)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @decorators.idempotent_id(\u00273b7fb7e1-8275-4f0d-88b2-9ce7aee167e7\u0027)"},{"line_number":133,"context_line":"    def test_check_tag_existence_negative(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_530f03e1","line":130,"range":{"start_line":129,"start_character":0,"end_line":130,"end_character":38},"in_reply_to":"da36d5c6_16a66fc1","updated":"2017-02-20 18:55:48.000000000","message":"Done","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9077fd4373c1b4b01937f5439de10b1de9686ec5","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        self.assertDictEqual({}, body)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @decorators.idempotent_id(\u00273b7fb7e1-8275-4f0d-88b2-9ce7aee167e7\u0027)"},{"line_number":133,"context_line":"    def test_check_tag_existence_negative(self):"},{"line_number":134,"context_line":"        # Check that non-existent tag throws 404."},{"line_number":135,"context_line":"        self.assertRaises(lib_exc.NotFound, self.client.check_tag_existence,"},{"line_number":136,"context_line":"                          self.server[\u0027id\u0027], data_utils.rand_name(\u0027tag\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_36829301","line":133,"range":{"start_line":133,"start_character":33,"end_line":133,"end_character":41},"updated":"2017-02-20 07:20:52.000000000","message":"usually negative tests are in a separated file","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"db7a769fd52fbf6ec5673113ab3702a4f71dc53d","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        self.assertDictEqual({}, body)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @decorators.idempotent_id(\u00273b7fb7e1-8275-4f0d-88b2-9ce7aee167e7\u0027)"},{"line_number":133,"context_line":"    def test_check_tag_existence_negative(self):"},{"line_number":134,"context_line":"        # Check that non-existent tag throws 404."},{"line_number":135,"context_line":"        self.assertRaises(lib_exc.NotFound, self.client.check_tag_existence,"},{"line_number":136,"context_line":"                          self.server[\u0027id\u0027], data_utils.rand_name(\u0027tag\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_731407f5","line":133,"range":{"start_line":133,"start_character":33,"end_line":133,"end_character":41},"in_reply_to":"da36d5c6_36829301","updated":"2017-02-20 18:55:48.000000000","message":"Done","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"2d1fa89dc3da4aad3d2a21259d9a585245dd4588","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            self.client.add_single_tag(server_id, tag)"},{"line_number":51,"context_line":"        self.addCleanup(self.client.delete_tags, server_id)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @decorators.idempotent_id(\u0027311d0f8d-cb63-45f6-a047-e24d95d651aa\u0027)"},{"line_number":54,"context_line":"    def test_list_tags(self):"},{"line_number":55,"context_line":"        # Check that the server initially contains no tags."},{"line_number":56,"context_line":"        fetched_tags \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"},{"line_number":57,"context_line":"        self.assertEmpty(fetched_tags)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @decorators.idempotent_id(\u00278d95abe2-c658-4c42-9a44-c0258500306b\u0027)"},{"line_number":60,"context_line":"    def test_create_delete_single_tag(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_b072e7e3","line":57,"range":{"start_line":53,"start_character":0,"end_line":57,"end_character":38},"updated":"2017-02-21 06:33:04.000000000","message":"this testcase seems can be removed, because test_create_delete_single_tag already covers it","commit_id":"24e8907611811ac76c0e48e803425569bcb8a927"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"78eedd8e91d237d09b78d0c82066b07045893a33","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            self.client.add_single_tag(server_id, tag)"},{"line_number":51,"context_line":"        self.addCleanup(self.client.delete_tags, server_id)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @decorators.idempotent_id(\u0027311d0f8d-cb63-45f6-a047-e24d95d651aa\u0027)"},{"line_number":54,"context_line":"    def test_list_tags(self):"},{"line_number":55,"context_line":"        # Check that the server initially contains no tags."},{"line_number":56,"context_line":"        fetched_tags \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"},{"line_number":57,"context_line":"        self.assertEmpty(fetched_tags)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @decorators.idempotent_id(\u00278d95abe2-c658-4c42-9a44-c0258500306b\u0027)"},{"line_number":60,"context_line":"    def test_create_delete_single_tag(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_686ea897","line":57,"range":{"start_line":53,"start_character":0,"end_line":57,"end_character":38},"in_reply_to":"da36d5c6_b072e7e3","updated":"2017-02-21 19:29:51.000000000","message":"Done","commit_id":"24e8907611811ac76c0e48e803425569bcb8a927"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"2d1fa89dc3da4aad3d2a21259d9a585245dd4588","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        new_tags \u003d [data_utils.rand_name(\u0027tag\u0027), data_utils.rand_name(\u0027tag\u0027)]"},{"line_number":86,"context_line":"        replaced_tags \u003d self.client.replace_tags("},{"line_number":87,"context_line":"            self.server[\u0027id\u0027], new_tags)[\u0027tags\u0027]"},{"line_number":88,"context_line":"        self.addCleanup(self.client.delete_tags, self.server[\u0027id\u0027])"},{"line_number":89,"context_line":"        six.assertCountEqual(self, new_tags, replaced_tags)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        # List the tags and check that the tags were replaced."}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_eb10ee50","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":67},"updated":"2017-02-21 06:33:04.000000000","message":"this seems not needed? there already exists addCleanup in _add_server_tags.","commit_id":"24e8907611811ac76c0e48e803425569bcb8a927"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"78eedd8e91d237d09b78d0c82066b07045893a33","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        new_tags \u003d [data_utils.rand_name(\u0027tag\u0027), data_utils.rand_name(\u0027tag\u0027)]"},{"line_number":86,"context_line":"        replaced_tags \u003d self.client.replace_tags("},{"line_number":87,"context_line":"            self.server[\u0027id\u0027], new_tags)[\u0027tags\u0027]"},{"line_number":88,"context_line":"        self.addCleanup(self.client.delete_tags, self.server[\u0027id\u0027])"},{"line_number":89,"context_line":"        six.assertCountEqual(self, new_tags, replaced_tags)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        # List the tags and check that the tags were replaced."}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_c85eb4e8","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":67},"in_reply_to":"da36d5c6_eb10ee50","updated":"2017-02-21 19:29:51.000000000","message":"You\u0027re right, nice catch.","commit_id":"24e8907611811ac76c0e48e803425569bcb8a927"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"2d1fa89dc3da4aad3d2a21259d9a585245dd4588","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        replaced_tags \u003d self.client.replace_tags("},{"line_number":87,"context_line":"            self.server[\u0027id\u0027], new_tags)[\u0027tags\u0027]"},{"line_number":88,"context_line":"        self.addCleanup(self.client.delete_tags, self.server[\u0027id\u0027])"},{"line_number":89,"context_line":"        six.assertCountEqual(self, new_tags, replaced_tags)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        # List the tags and check that the tags were replaced."},{"line_number":92,"context_line":"        fetched_tags \u003d self.client.list_tags(self.server[\u0027id\u0027])[\u0027tags\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_4b4d7a71","line":89,"range":{"start_line":89,"start_character":12,"end_line":89,"end_character":28},"updated":"2017-02-21 06:33:04.000000000","message":"Thanks for your detailed explaination, I now got it, its name is really misleading:)","commit_id":"24e8907611811ac76c0e48e803425569bcb8a927"}],"tempest/api/compute/servers/test_server_tags_negative.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"aafc9a6b66aed552661fb2e15846c6d1ec45f400","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"da36d5c6_f99a476d","updated":"2017-02-22 18:53:02.000000000","message":"I do think we need these negative tests as those are already being tested on nova side.","commit_id":"055f258d7568790fca226eae277a5d95c3b1ec6e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"2b58cbc827abe053f844abc44809a1bcf780a142","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"da36d5c6_f1cdf385","in_reply_to":"da36d5c6_f99a476d","updated":"2017-02-22 23:10:37.000000000","message":"Done","commit_id":"055f258d7568790fca226eae277a5d95c3b1ec6e"}],"tempest/lib/api_schema/response/compute/v2_26/servers.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"21569df903308d1cb9435c6449e75430a1d343c3","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"delete_all_tags \u003d {\u0027status_code\u0027: [204]}"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"check_tag_existence \u003d copy.deepcopy(delete_all_tags)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"update_tag \u003d {"},{"line_number":74,"context_line":"    \u0027status_code\u0027: [201, 204],"}],"source_content_type":"text/x-python","patch_set":10,"id":"da36d5c6_ad193c8a","line":71,"range":{"start_line":71,"start_character":22,"end_line":71,"end_character":52},"updated":"2017-02-23 19:04:31.000000000","message":"There is not any relation between delete_all_tags and check_tag_existence from technical viewpoint, that is just the same as the status code 204.\nThat is very short and it is good to write directly to avoid unnecessary confusion like\n\n check_tag_existence \u003d {\u0027status_code\u0027: [204]}","commit_id":"e048f0d2a0b9ac7e36502124c2d884f392d2c31c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4f6d23b5db69f9f8edf74aba95a02fc091d60bcb","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"delete_all_tags \u003d {\u0027status_code\u0027: [204]}"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"check_tag_existence \u003d copy.deepcopy(delete_all_tags)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"update_tag \u003d {"},{"line_number":74,"context_line":"    \u0027status_code\u0027: [201, 204],"}],"source_content_type":"text/x-python","patch_set":10,"id":"da36d5c6_d249a8b8","line":71,"range":{"start_line":71,"start_character":22,"end_line":71,"end_character":52},"in_reply_to":"da36d5c6_ad193c8a","updated":"2017-02-23 21:28:48.000000000","message":"Done","commit_id":"e048f0d2a0b9ac7e36502124c2d884f392d2c31c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"21569df903308d1cb9435c6449e75430a1d343c3","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    }"},{"line_number":84,"context_line":"}"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"delete_tag \u003d copy.deepcopy(delete_all_tags)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da36d5c6_2d0e2c3b","line":86,"updated":"2017-02-23 19:04:31.000000000","message":"ditto","commit_id":"e048f0d2a0b9ac7e36502124c2d884f392d2c31c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4f6d23b5db69f9f8edf74aba95a02fc091d60bcb","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    }"},{"line_number":84,"context_line":"}"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"delete_tag \u003d copy.deepcopy(delete_all_tags)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da36d5c6_32cf642a","line":86,"in_reply_to":"da36d5c6_2d0e2c3b","updated":"2017-02-23 21:28:48.000000000","message":"Done","commit_id":"e048f0d2a0b9ac7e36502124c2d884f392d2c31c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"59c52020d18b7d0c2fbd2fe82c1276d8a39b6ebf","unresolved":false,"context_lines":[{"line_number":71,"context_line":"check_tag_existence \u003d {\u0027status_code\u0027: [204]}"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"update_tag \u003d {"},{"line_number":74,"context_line":"    \u0027status_code\u0027: [201, 204],"},{"line_number":75,"context_line":"    \u0027response_header\u0027: {"},{"line_number":76,"context_line":"        \u0027type\u0027: \u0027object\u0027,"},{"line_number":77,"context_line":"        \u0027properties\u0027: {"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba2be162_e42bbae9","line":74,"range":{"start_line":74,"start_character":4,"end_line":74,"end_character":30},"updated":"2017-03-01 18:39:15.000000000","message":"I had a question about this list of status codes, but the API switches status code like\n\n 112         if id in _get_tags_names(tags):\n 113             # NOTE(snikitin): server already has specified tag\n 114             return webob.Response(status_int\u003d204)\n 115\n 116         tag \u003d objects.Tag(context\u003dcontext, resource_id\u003dserver_id, tag\u003did)\n 117\n 118         try:\n 119             tag.create()\n 120         except exception.InstanceNotFound as e:\n 121             raise webob.exc.HTTPNotFound(explanation\u003de.format_message())\n 122\n 123         response \u003d webob.Response(status_int\u003d201)\n\nSo LGTM.","commit_id":"7c95befefb7db27296114f87cf49e8f2b8f43a59"}],"tempest/lib/services/compute/server_tags_client.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9077fd4373c1b4b01937f5439de10b1de9686ec5","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        For a full list of available parameters, please refer to the official"},{"line_number":29,"context_line":"        API reference:"},{"line_number":30,"context_line":"        https://developer.openstack.org/api-ref/"},{"line_number":31,"context_line":"        compute/?expanded\u003dlist-tags-detail"},{"line_number":32,"context_line":"        \"\"\""},{"line_number":33,"context_line":"        url \u003d \u0027servers/%s/tags\u0027 % server_id"},{"line_number":34,"context_line":"        resp, body \u003d self.get(url)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_96ac1fef","line":31,"range":{"start_line":30,"start_character":0,"end_line":31,"end_character":42},"updated":"2017-02-20 07:20:52.000000000","message":"better to be put in one line, and can be simplified as https://developer.openstack.org/api-ref/compute/#list-tags-detail","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"8e423a6ccc8d0ac467855fa01e23ba8a4aa40aef","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        For a full list of available parameters, please refer to the official"},{"line_number":29,"context_line":"        API reference:"},{"line_number":30,"context_line":"        https://developer.openstack.org/api-ref/"},{"line_number":31,"context_line":"        compute/?expanded\u003dlist-tags-detail"},{"line_number":32,"context_line":"        \"\"\""},{"line_number":33,"context_line":"        url \u003d \u0027servers/%s/tags\u0027 % server_id"},{"line_number":34,"context_line":"        resp, body \u003d self.get(url)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_33cc4f35","line":31,"range":{"start_line":30,"start_character":0,"end_line":31,"end_character":42},"in_reply_to":"da36d5c6_96ac1fef","updated":"2017-02-20 19:01:39.000000000","message":"Done, although in some places the continuation is still needed onto a 2nd line.","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9077fd4373c1b4b01937f5439de10b1de9686ec5","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        https://developer.openstack.org/api-ref/"},{"line_number":31,"context_line":"        compute/?expanded\u003dlist-tags-detail"},{"line_number":32,"context_line":"        \"\"\""},{"line_number":33,"context_line":"        url \u003d \u0027servers/%s/tags\u0027 % server_id"},{"line_number":34,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":35,"context_line":"        body \u003d json.loads(body)"},{"line_number":36,"context_line":"        self.validate_response(schema.list_tags, resp, body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_9665ffe2","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":43},"updated":"2017-02-20 07:20:52.000000000","message":"according to the url, I wonder why they are not put in servers_client?","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"8e423a6ccc8d0ac467855fa01e23ba8a4aa40aef","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        https://developer.openstack.org/api-ref/"},{"line_number":31,"context_line":"        compute/?expanded\u003dlist-tags-detail"},{"line_number":32,"context_line":"        \"\"\""},{"line_number":33,"context_line":"        url \u003d \u0027servers/%s/tags\u0027 % server_id"},{"line_number":34,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":35,"context_line":"        body \u003d json.loads(body)"},{"line_number":36,"context_line":"        self.validate_response(schema.list_tags, resp, body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_13c74b13","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":43},"in_reply_to":"da36d5c6_9665ffe2","updated":"2017-02-20 19:01:39.000000000","message":"Possibly because it follows the same namespace convention employed here: https://github.com/openstack/nova/tree/master/nova/policies\n\nNotice that server_tags.py is distinct from servers.py.","commit_id":"673ff5826521833ed0acf1b0e6211f61352e3443"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"aafc9a6b66aed552661fb2e15846c6d1ec45f400","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"da36d5c6_390cdfec","updated":"2017-02-22 18:53:02.000000000","message":"these clients are API call on resource server so should be in servers_client class.","commit_id":"055f258d7568790fca226eae277a5d95c3b1ec6e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"2b58cbc827abe053f844abc44809a1bcf780a142","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"da36d5c6_11c7e764","in_reply_to":"da36d5c6_390cdfec","updated":"2017-02-22 23:10:37.000000000","message":"Done","commit_id":"055f258d7568790fca226eae277a5d95c3b1ec6e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"aafc9a6b66aed552661fb2e15846c6d1ec45f400","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.validate_response(schema.list_tags, resp, body)"},{"line_number":36,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def replace_tags(self, server_id, tags):"},{"line_number":39,"context_line":"        \"\"\"Replaces all tags on specified server with the new set of tags."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        For a full list of available parameters, please refer to the official"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_b9e60f13","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":20},"updated":"2017-02-22 18:53:02.000000000","message":"this should be update_all_tags","commit_id":"055f258d7568790fca226eae277a5d95c3b1ec6e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"2b58cbc827abe053f844abc44809a1bcf780a142","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.validate_response(schema.list_tags, resp, body)"},{"line_number":36,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def replace_tags(self, server_id, tags):"},{"line_number":39,"context_line":"        \"\"\"Replaces all tags on specified server with the new set of tags."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        For a full list of available parameters, please refer to the official"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_31c4eb5d","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":20},"in_reply_to":"da36d5c6_b9e60f13","updated":"2017-02-22 23:10:37.000000000","message":"Done","commit_id":"055f258d7568790fca226eae277a5d95c3b1ec6e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"aafc9a6b66aed552661fb2e15846c6d1ec45f400","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        self.validate_response(schema.replace_tags, resp, body)"},{"line_number":52,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def delete_tags(self, server_id):"},{"line_number":55,"context_line":"        \"\"\"Deletes all tags from the specified server."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        For a full list of available parameters, please refer to the official"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_19a39bb3","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":19},"updated":"2017-02-22 18:53:02.000000000","message":"-\u003edelete_all_tags","commit_id":"055f258d7568790fca226eae277a5d95c3b1ec6e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"2b58cbc827abe053f844abc44809a1bcf780a142","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        self.validate_response(schema.replace_tags, resp, body)"},{"line_number":52,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def delete_tags(self, server_id):"},{"line_number":55,"context_line":"        \"\"\"Deletes all tags from the specified server."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        For a full list of available parameters, please refer to the official"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_51a31fb2","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":19},"in_reply_to":"da36d5c6_19a39bb3","updated":"2017-02-22 23:10:37.000000000","message":"Done","commit_id":"055f258d7568790fca226eae277a5d95c3b1ec6e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"aafc9a6b66aed552661fb2e15846c6d1ec45f400","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        self.validate_response(schema.check_tag_existence, resp, body)"},{"line_number":79,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def add_single_tag(self, server_id, tag):"},{"line_number":82,"context_line":"        \"\"\"Adds a single tag to the server if server has no specified tag."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        For a full list of available parameters, please refer to the official"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_f9fec7ac","line":81,"range":{"start_line":81,"start_character":8,"end_line":81,"end_character":22},"updated":"2017-02-22 18:53:02.000000000","message":"This should be name as update_tag","commit_id":"055f258d7568790fca226eae277a5d95c3b1ec6e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"2b58cbc827abe053f844abc44809a1bcf780a142","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        self.validate_response(schema.check_tag_existence, resp, body)"},{"line_number":79,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def add_single_tag(self, server_id, tag):"},{"line_number":82,"context_line":"        \"\"\"Adds a single tag to the server if server has no specified tag."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        For a full list of available parameters, please refer to the official"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_71a8238e","line":81,"range":{"start_line":81,"start_character":8,"end_line":81,"end_character":22},"in_reply_to":"da36d5c6_f9fec7ac","updated":"2017-02-22 23:10:37.000000000","message":"Done","commit_id":"055f258d7568790fca226eae277a5d95c3b1ec6e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"aafc9a6b66aed552661fb2e15846c6d1ec45f400","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self.validate_response(schema.add_single_tag, resp, body)"},{"line_number":94,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def delete_single_tag(self, server_id, tag):"},{"line_number":97,"context_line":"        \"\"\"Deletes a single tag from the specified server."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        For a full list of available parameters, please refer to the official"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_b9cd2f87","line":96,"range":{"start_line":96,"start_character":8,"end_line":96,"end_character":25},"updated":"2017-02-22 18:53:02.000000000","message":"-\u003e delete_tag","commit_id":"055f258d7568790fca226eae277a5d95c3b1ec6e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"2b58cbc827abe053f844abc44809a1bcf780a142","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self.validate_response(schema.add_single_tag, resp, body)"},{"line_number":94,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def delete_single_tag(self, server_id, tag):"},{"line_number":97,"context_line":"        \"\"\"Deletes a single tag from the specified server."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        For a full list of available parameters, please refer to the official"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_91a91793","line":96,"range":{"start_line":96,"start_character":8,"end_line":96,"end_character":25},"in_reply_to":"da36d5c6_b9cd2f87","updated":"2017-02-22 23:10:37.000000000","message":"Done","commit_id":"055f258d7568790fca226eae277a5d95c3b1ec6e"}],"tempest/lib/services/compute/servers_client.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c28bef7cfd7eb19edf642a371229b9795413533d","unresolved":false,"context_lines":[{"line_number":739,"context_line":""},{"line_number":740,"context_line":"        For a full list of available parameters, please refer to the official"},{"line_number":741,"context_line":"        API reference:"},{"line_number":742,"context_line":"        https://developer.openstack.org/api-ref/compute/#list-tags-detail"},{"line_number":743,"context_line":"        \"\"\""},{"line_number":744,"context_line":"        url \u003d \u0027servers/%s/tags\u0027 % server_id"},{"line_number":745,"context_line":"        resp, body \u003d self.get(url)"}],"source_content_type":"text/x-python","patch_set":9,"id":"da36d5c6_10251cc0","line":742,"range":{"start_line":742,"start_character":8,"end_line":742,"end_character":73},"updated":"2017-02-23 04:15:13.000000000","message":"should be https://developer.openstack.org/api-ref/compute/#list-tags","commit_id":"488176f3bb07e8c0df0da238b7cc5443ed2a114f"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c28bef7cfd7eb19edf642a371229b9795413533d","unresolved":false,"context_lines":[{"line_number":753,"context_line":""},{"line_number":754,"context_line":"        For a full list of available parameters, please refer to the official"},{"line_number":755,"context_line":"        API reference:"},{"line_number":756,"context_line":"        https://developer.openstack.org/api-ref/compute/#replace-tags-detail"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"        :param tags: List of tags to replace current server tags with."},{"line_number":759,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"da36d5c6_b039b0f4","line":756,"range":{"start_line":756,"start_character":8,"end_line":756,"end_character":76},"updated":"2017-02-23 04:15:13.000000000","message":"should be https://developer.openstack.org/api-ref/compute/#replace-tags","commit_id":"488176f3bb07e8c0df0da238b7cc5443ed2a114f"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c28bef7cfd7eb19edf642a371229b9795413533d","unresolved":false,"context_lines":[{"line_number":770,"context_line":""},{"line_number":771,"context_line":"        For a full list of available parameters, please refer to the official"},{"line_number":772,"context_line":"        API reference:"},{"line_number":773,"context_line":"        https://developer.openstack.org/api-ref/compute/#delete-all-tags-detail"},{"line_number":774,"context_line":"        \"\"\""},{"line_number":775,"context_line":"        url \u003d \u0027servers/%s/tags\u0027 % server_id"},{"line_number":776,"context_line":"        resp, body \u003d self.delete(url)"}],"source_content_type":"text/x-python","patch_set":9,"id":"da36d5c6_5054f41f","line":773,"range":{"start_line":773,"start_character":8,"end_line":773,"end_character":79},"updated":"2017-02-23 04:15:13.000000000","message":"should be https://developer.openstack.org/api-ref/compute/#delete-all-tags","commit_id":"488176f3bb07e8c0df0da238b7cc5443ed2a114f"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c28bef7cfd7eb19edf642a371229b9795413533d","unresolved":false,"context_lines":[{"line_number":783,"context_line":""},{"line_number":784,"context_line":"        For a full list of available parameters, please refer to the official"},{"line_number":785,"context_line":"        API reference:"},{"line_number":786,"context_line":"        https://developer.openstack.org/api-ref/"},{"line_number":787,"context_line":"        compute/#check-tag-existence-detail"},{"line_number":788,"context_line":""},{"line_number":789,"context_line":"        :param tag: Check for existence of tag on specified server."},{"line_number":790,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"da36d5c6_30fb0049","line":787,"range":{"start_line":786,"start_character":0,"end_line":787,"end_character":43},"updated":"2017-02-23 04:15:13.000000000","message":"should be https://developer.openstack.org/api-ref/compute/#check-tag-existence\nand should be put in one line","commit_id":"488176f3bb07e8c0df0da238b7cc5443ed2a114f"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c28bef7cfd7eb19edf642a371229b9795413533d","unresolved":false,"context_lines":[{"line_number":799,"context_line":""},{"line_number":800,"context_line":"        For a full list of available parameters, please refer to the official"},{"line_number":801,"context_line":"        API reference:"},{"line_number":802,"context_line":"        https://developer.openstack.org/api-ref/"},{"line_number":803,"context_line":"        compute/#add-a-single-tag-detail"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"        :param tag: Tag to be added to the specified server."},{"line_number":806,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"da36d5c6_50f87449","line":803,"range":{"start_line":802,"start_character":0,"end_line":803,"end_character":40},"updated":"2017-02-23 04:15:13.000000000","message":"should be https://developer.openstack.org/api-ref/compute/#add-a-single-tag","commit_id":"488176f3bb07e8c0df0da238b7cc5443ed2a114f"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c28bef7cfd7eb19edf642a371229b9795413533d","unresolved":false,"context_lines":[{"line_number":815,"context_line":""},{"line_number":816,"context_line":"        For a full list of available parameters, please refer to the official"},{"line_number":817,"context_line":"        API reference:"},{"line_number":818,"context_line":"        https://developer.openstack.org/api-ref/"},{"line_number":819,"context_line":"        compute/#delete-a-single-tag-detail"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"        :param tag: Tag to be removed from the specified server."},{"line_number":822,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"da36d5c6_909cac10","line":819,"range":{"start_line":818,"start_character":0,"end_line":819,"end_character":43},"updated":"2017-02-23 04:15:13.000000000","message":"should be https://developer.openstack.org/api-ref/compute/#delete-a-single-tag","commit_id":"488176f3bb07e8c0df0da238b7cc5443ed2a114f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"21569df903308d1cb9435c6449e75430a1d343c3","unresolved":false,"context_lines":[{"line_number":788,"context_line":"        :param tag: Check for existence of tag on specified server."},{"line_number":789,"context_line":"        \"\"\""},{"line_number":790,"context_line":"        url \u003d \u0027servers/%s/tags/%s\u0027 % (server_id, tag)"},{"line_number":791,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":792,"context_line":"        schema \u003d self.get_schema(self.schema_versions_info)"},{"line_number":793,"context_line":"        self.validate_response(schema.check_tag_existence, resp, body)"},{"line_number":794,"context_line":"        return rest_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da36d5c6_6849f25f","line":791,"range":{"start_line":791,"start_character":0,"end_line":791,"end_character":34},"updated":"2017-02-23 19:04:31.000000000","message":"oops, the API seems not-so-good.. This case should be head instead of get..\n\napi-wg/guidelines/http.rst\n\n HTTP Methods\n ------------\n\n HTTP defines a concept of METHODS on a resource uri.\n\n +-------------+--------------+--------------------+--------------------+\n | METHOD      | URI          | ACTION             | HAS BODY?          |\n +-------------+--------------+--------------------+--------------------+\n | HEAD        | /foo/ID      | EXISTS             | NO                 |\n +-------------+--------------+--------------------+--------------------+\n | GET         | /foo/ID      | READ               | NO                 |\n +-------------+--------------+--------------------+--------------------+\n | POST        | /foo         | CREATE             | YES                |\n +-------------+--------------+--------------------+--------------------+\n | PUT         | /foo/ID      | UPDATE             | YES                |\n +-------------+--------------+--------------------+--------------------+\n | PATCH       | /foo/ID      | UPDATE (partial)   | YES                |\n +-------------+--------------+--------------------+--------------------+\n | DELETE      | /foo/ID      | DELETE             | NO                 |\n +-------------+--------------+--------------------+--------------------+\n\nThis test itself is fine anyways.","commit_id":"e048f0d2a0b9ac7e36502124c2d884f392d2c31c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4f6d23b5db69f9f8edf74aba95a02fc091d60bcb","unresolved":false,"context_lines":[{"line_number":788,"context_line":"        :param tag: Check for existence of tag on specified server."},{"line_number":789,"context_line":"        \"\"\""},{"line_number":790,"context_line":"        url \u003d \u0027servers/%s/tags/%s\u0027 % (server_id, tag)"},{"line_number":791,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":792,"context_line":"        schema \u003d self.get_schema(self.schema_versions_info)"},{"line_number":793,"context_line":"        self.validate_response(schema.check_tag_existence, resp, body)"},{"line_number":794,"context_line":"        return rest_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da36d5c6_d28e08cf","line":791,"range":{"start_line":791,"start_character":0,"end_line":791,"end_character":34},"in_reply_to":"da36d5c6_6849f25f","updated":"2017-02-23 21:28:48.000000000","message":"That makes sense. As I understood, until the API changes in Nova, this is fine in Tempest?","commit_id":"e048f0d2a0b9ac7e36502124c2d884f392d2c31c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fa60b5bebec03c01439d6c22afdc1433658fec2d","unresolved":false,"context_lines":[{"line_number":788,"context_line":"        :param tag: Check for existence of tag on specified server."},{"line_number":789,"context_line":"        \"\"\""},{"line_number":790,"context_line":"        url \u003d \u0027servers/%s/tags/%s\u0027 % (server_id, tag)"},{"line_number":791,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":792,"context_line":"        schema \u003d self.get_schema(self.schema_versions_info)"},{"line_number":793,"context_line":"        self.validate_response(schema.check_tag_existence, resp, body)"},{"line_number":794,"context_line":"        return rest_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba2be162_c49b1671","line":791,"range":{"start_line":791,"start_character":0,"end_line":791,"end_character":34},"in_reply_to":"da36d5c6_d28e08cf","updated":"2017-03-01 18:35:12.000000000","message":"Yeah, that\u0027s fine on Tempest side.","commit_id":"e048f0d2a0b9ac7e36502124c2d884f392d2c31c"}]}
