)]}'
{"etc/tempest.conf.sample":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"9b9bc8438737224c9096048d282def366de52532","unresolved":false,"context_lines":[{"line_number":290,"context_line":"#catalog_type\u003dvolume"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"# Catalog type of the Volume V2 Service (string value)"},{"line_number":293,"context_line":"#catalog_v2_type\u003dvolumev2"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"# The volume region name to use. If empty, the value of"},{"line_number":296,"context_line":"# identity.region is used instead. If no such region is found"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAT3%2F%2F6PM%3D","line":293,"updated":"2013-12-27 10:46:26.000000000","message":"This is I think ok for now, but be aware that we\u0027ll need to fix this up eventually to get tempest to proper version discovery as long term keystone should not have different catalog types for different versions of the same service. Its something we need to fix up for nova testing too.","commit_id":"9198fa56926787e494cf49ad5cb32096df7fda1f"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"a769b441b5556670101fa0c0a188567ff0150b8f","unresolved":false,"context_lines":[{"line_number":290,"context_line":"#catalog_type\u003dvolume"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"# Catalog type of the Volume V2 Service (string value)"},{"line_number":293,"context_line":"#catalog_v2_type\u003dvolumev2"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"# The volume region name to use. If empty, the value of"},{"line_number":296,"context_line":"# identity.region is used instead. If no such region is found"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAT3%2F%2F2mA%3D","line":293,"in_reply_to":"AAAAT3%2F%2F6PM%3D","updated":"2013-12-30 06:10:17.000000000","message":"got it. do we have plan or blueprint for this?","commit_id":"9198fa56926787e494cf49ad5cb32096df7fda1f"}],"tempest/api/volume/base.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"9b9bc8438737224c9096048d282def366de52532","unresolved":false,"context_lines":[{"line_number":166,"context_line":"class BaseVolumeV2Test(BaseVolumeTest):"},{"line_number":167,"context_line":"    @classmethod"},{"line_number":168,"context_line":"    def setUpClass(cls):"},{"line_number":169,"context_line":"        if not cls.config.volume_feature_enabled.api_v2:"},{"line_number":170,"context_line":"            msg \u003d \"Volume API v2 not supported\""},{"line_number":171,"context_line":"            raise cls.skipException(msg)"},{"line_number":172,"context_line":"        super(BaseVolumeV2Test, cls).setUpClass()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F6Tc%3D","line":169,"updated":"2013-12-27 10:46:26.000000000","message":"We shouldn\u0027t be use cls.config anymore. See:\n\nhttp://www.mail-archive.com/openstack-dev@lists.openstack.org/msg12412.html","commit_id":"9198fa56926787e494cf49ad5cb32096df7fda1f"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"a769b441b5556670101fa0c0a188567ff0150b8f","unresolved":false,"context_lines":[{"line_number":166,"context_line":"class BaseVolumeV2Test(BaseVolumeTest):"},{"line_number":167,"context_line":"    @classmethod"},{"line_number":168,"context_line":"    def setUpClass(cls):"},{"line_number":169,"context_line":"        if not cls.config.volume_feature_enabled.api_v2:"},{"line_number":170,"context_line":"            msg \u003d \"Volume API v2 not supported\""},{"line_number":171,"context_line":"            raise cls.skipException(msg)"},{"line_number":172,"context_line":"        super(BaseVolumeV2Test, cls).setUpClass()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F2l0%3D","line":169,"in_reply_to":"AAAAT3%2F%2F3fI%3D","updated":"2013-12-30 06:10:17.000000000","message":"Thank you very much! I\u0027ll fix it in next patch set.","commit_id":"9198fa56926787e494cf49ad5cb32096df7fda1f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"6cc601adc06445d19d5c9677d78417e7ad2d5e64","unresolved":false,"context_lines":[{"line_number":166,"context_line":"class BaseVolumeV2Test(BaseVolumeTest):"},{"line_number":167,"context_line":"    @classmethod"},{"line_number":168,"context_line":"    def setUpClass(cls):"},{"line_number":169,"context_line":"        if not cls.config.volume_feature_enabled.api_v2:"},{"line_number":170,"context_line":"            msg \u003d \"Volume API v2 not supported\""},{"line_number":171,"context_line":"            raise cls.skipException(msg)"},{"line_number":172,"context_line":"        super(BaseVolumeV2Test, cls).setUpClass()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F3fI%3D","line":169,"in_reply_to":"AAAAT3%2F%2F6Tc%3D","updated":"2013-12-29 14:06:08.000000000","message":"Nice catch, we need a change.","commit_id":"9198fa56926787e494cf49ad5cb32096df7fda1f"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"9b9bc8438737224c9096048d282def366de52532","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                                         cls.os.tenant_name)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    @classmethod"},{"line_number":181,"context_line":"    def create_volume(cls, size\u003d1, **kwargs):"},{"line_number":182,"context_line":"        \"\"\"Wrapper utility that returns a test volume.\"\"\""},{"line_number":183,"context_line":"        resp, volume \u003d cls.volumes_client.create_volume(size, **kwargs)"},{"line_number":184,"context_line":"        assert 202 \u003d\u003d resp.status"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F6RE%3D","line":181,"updated":"2013-12-27 10:46:26.000000000","message":"This function seems to be exactly the same for v1 and v2 except for the status value returned. Perhaps we could share more code here?","commit_id":"9198fa56926787e494cf49ad5cb32096df7fda1f"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"a769b441b5556670101fa0c0a188567ff0150b8f","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                                         cls.os.tenant_name)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    @classmethod"},{"line_number":181,"context_line":"    def create_volume(cls, size\u003d1, **kwargs):"},{"line_number":182,"context_line":"        \"\"\"Wrapper utility that returns a test volume.\"\"\""},{"line_number":183,"context_line":"        resp, volume \u003d cls.volumes_client.create_volume(size, **kwargs)"},{"line_number":184,"context_line":"        assert 202 \u003d\u003d resp.status"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F2io%3D","line":181,"in_reply_to":"AAAAT3%2F%2F6RE%3D","updated":"2013-12-30 06:10:17.000000000","message":"will fix it in next patch","commit_id":"9198fa56926787e494cf49ad5cb32096df7fda1f"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"9b9bc8438737224c9096048d282def366de52532","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    def create_volume(cls, size\u003d1, **kwargs):"},{"line_number":182,"context_line":"        \"\"\"Wrapper utility that returns a test volume.\"\"\""},{"line_number":183,"context_line":"        resp, volume \u003d cls.volumes_client.create_volume(size, **kwargs)"},{"line_number":184,"context_line":"        assert 202 \u003d\u003d resp.status"},{"line_number":185,"context_line":"        cls.volumes.append(volume)"},{"line_number":186,"context_line":"        cls.volumes_client.wait_for_volume_status(volume[\u0027id\u0027], \u0027available\u0027)"},{"line_number":187,"context_line":"        return volume"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F6Rw%3D","line":184,"updated":"2013-12-27 10:46:26.000000000","message":"self.assertEqual instead (this file is the only one which uses this type of assert under tempest/api)","commit_id":"9198fa56926787e494cf49ad5cb32096df7fda1f"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"a769b441b5556670101fa0c0a188567ff0150b8f","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    def create_volume(cls, size\u003d1, **kwargs):"},{"line_number":182,"context_line":"        \"\"\"Wrapper utility that returns a test volume.\"\"\""},{"line_number":183,"context_line":"        resp, volume \u003d cls.volumes_client.create_volume(size, **kwargs)"},{"line_number":184,"context_line":"        assert 202 \u003d\u003d resp.status"},{"line_number":185,"context_line":"        cls.volumes.append(volume)"},{"line_number":186,"context_line":"        cls.volumes_client.wait_for_volume_status(volume[\u0027id\u0027], \u0027available\u0027)"},{"line_number":187,"context_line":"        return volume"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F2i4%3D","line":184,"in_reply_to":"AAAAT3%2F%2F6Rw%3D","updated":"2013-12-30 06:10:17.000000000","message":"self.assertEqual probably could not be used in this classmethod.  Let me try it.","commit_id":"9198fa56926787e494cf49ad5cb32096df7fda1f"}],"tempest/services/volume/v2/json/volumes_client.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"9b9bc8438737224c9096048d282def366de52532","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F6PE%3D","line":1,"updated":"2013-12-27 10:46:26.000000000","message":"Are these pretty much just copies of the v1 files with only minor changes? If so I think it would be much clearer if this was split into two changesets. one which copies the files and one which makes the modifications required for v2. It would also be a good measure of how much code we could share between v1 and v2","commit_id":"9198fa56926787e494cf49ad5cb32096df7fda1f"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"a769b441b5556670101fa0c0a188567ff0150b8f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F2iY%3D","line":1,"in_reply_to":"AAAAT3%2F%2F6PE%3D","updated":"2013-12-30 06:10:17.000000000","message":"Chris, thank you very much! I agree with your opinion. will split into two changesets.","commit_id":"9198fa56926787e494cf49ad5cb32096df7fda1f"}],"tempest/services/volume/v2/xml/volumes_client.py":[{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"1d810e3d433793e96a4533855faf317bb8147669","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        if body is not None:"},{"line_number":94,"context_line":"            volumes +\u003d [self._parse_volume(vol) for vol in list(body)]"},{"line_number":95,"context_line":"        for v in volumes:"},{"line_number":96,"context_line":"            v \u003d self._check_if_bootable(v)"},{"line_number":97,"context_line":"        return resp, volumes"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def list_volumes_with_detail(self, params\u003dNone):"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2F6RI%3D","side":"PARENT","line":96,"updated":"2014-01-06 22:08:25.000000000","message":"Please explain this deletion. I see that this call is not in the json version but it is called in other methods so please clarify that the delete is correct rather than adding it to json.","commit_id":"80e33ddb6c9c79e015245a14d95e9174ceb8b327"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"b761942fed1ac06e7e673f74200a9161d643c186","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        if body is not None:"},{"line_number":94,"context_line":"            volumes +\u003d [self._parse_volume(vol) for vol in list(body)]"},{"line_number":95,"context_line":"        for v in volumes:"},{"line_number":96,"context_line":"            v \u003d self._check_if_bootable(v)"},{"line_number":97,"context_line":"        return resp, volumes"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def list_volumes_with_detail(self, params\u003dNone):"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2F5mA%3D","side":"PARENT","line":96,"in_reply_to":"AAAAUH%2F%2F6RI%3D","updated":"2014-01-07 02:25:37.000000000","message":"Thank you very much for your review! This is due to the change in volume v2. The response data of  list volumes api in v2 does not have item \u0027bootable\u0027, so I remove the checking code in this function.","commit_id":"80e33ddb6c9c79e015245a14d95e9174ceb8b327"}]}
