)]}'
{"tempest/api/image/v1/test_images.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"870b2e6b556946cbfa6f56c5cd1bde97d8001cbd","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    @classmethod"},{"line_number":176,"context_line":"    def _create_snapshot(cls, name, image_id, flavor, **kwargs):"},{"line_number":177,"context_line":"        resp, server \u003d cls.os.servers_v3_client.create_server("},{"line_number":178,"context_line":"            name, image_id, flavor, **kwargs)"},{"line_number":179,"context_line":"        cls.servers.append(server)"},{"line_number":180,"context_line":"        cls.os.servers_v3_client.wait_for_server_status("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2FxqY%3D","line":177,"updated":"2014-01-01 12:19:17.000000000","message":"So there doesn\u0027t seem to be any handling of the case where the v3 api is not active? Presumably this and the snapshot related tests need to be skipped if this is the case? Also I don\u0027t think the creation of the snapshot should be added in setupClass because of the extra overhead for the tests which don\u0027t require them. Perhaps a new class which inherits from this one?","commit_id":"3a0b05d04c7c30abfcc32d75fc2f06fe77e4026c"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"29ef7df1cffeea4d28d56f800188879d342dbabc","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    @classmethod"},{"line_number":176,"context_line":"    def _create_snapshot(cls, name, image_id, flavor, **kwargs):"},{"line_number":177,"context_line":"        resp, server \u003d cls.os.servers_v3_client.create_server("},{"line_number":178,"context_line":"            name, image_id, flavor, **kwargs)"},{"line_number":179,"context_line":"        cls.servers.append(server)"},{"line_number":180,"context_line":"        cls.os.servers_v3_client.wait_for_server_status("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2FxB8%3D","line":177,"in_reply_to":"AAAAT3%2F%2FxqY%3D","updated":"2014-01-02 02:32:28.000000000","message":"thanks for your review. Yes, this case should be handled.","commit_id":"3a0b05d04c7c30abfcc32d75fc2f06fe77e4026c"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"db801b30b34850f81069190b2dad9f839cfbd31e","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        self.assertFalse(self.created_set - self.dup_set \u003c\u003d result_set)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"class ListSnapshotImagesTest(ListImagesTest):"},{"line_number":245,"context_line":"    @classmethod"},{"line_number":246,"context_line":"    def setUpClass(cls):"},{"line_number":247,"context_line":"        super(ListSnapshotImagesTest, cls).setUpClass()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F3oM%3D","line":244,"updated":"2014-01-07 12:57:18.000000000","message":"why use \"ListImagesTest\" as parent class? This class doesn\u0027t reuse its data and methods.","commit_id":"5a61d509ad575d8290f501e1a5baf1df8be6320f"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"d54c3d2ae7449a60991647aa31e813c9dc043056","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        self.assertFalse(self.created_set - self.dup_set \u003c\u003d result_set)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"class ListSnapshotImagesTest(ListImagesTest):"},{"line_number":245,"context_line":"    @classmethod"},{"line_number":246,"context_line":"    def setUpClass(cls):"},{"line_number":247,"context_line":"        super(ListSnapshotImagesTest, cls).setUpClass()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F0nQ%3D","line":244,"in_reply_to":"AAAAUH%2F%2F3oM%3D","updated":"2014-01-08 03:24:41.000000000","message":"just want to put the snapshot image in the set of images that created by ListImagesTest. If there are only one image, the filter can\u0027t be verified.\nOK, I will create more image in this class.","commit_id":"5a61d509ad575d8290f501e1a5baf1df8be6320f"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"db801b30b34850f81069190b2dad9f839cfbd31e","unresolved":false,"context_lines":[{"line_number":245,"context_line":"    @classmethod"},{"line_number":246,"context_line":"    def setUpClass(cls):"},{"line_number":247,"context_line":"        super(ListSnapshotImagesTest, cls).setUpClass()"},{"line_number":248,"context_line":"        if not cls.config.compute_feature_enabled.api_v3:"},{"line_number":249,"context_line":"            cls.servers_client \u003d cls.os.servers_client"},{"line_number":250,"context_line":"        else:"},{"line_number":251,"context_line":"            cls.servers_client \u003d cls.os.servers_v3_client"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F3pI%3D","line":248,"updated":"2014-01-07 12:57:18.000000000","message":"We shouldn\u0027t use cls.config anymore. See: http://www.mail-archive.com/openstack-dev@lists.openstack.org/msg12412.html","commit_id":"5a61d509ad575d8290f501e1a5baf1df8be6320f"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"d54c3d2ae7449a60991647aa31e813c9dc043056","unresolved":false,"context_lines":[{"line_number":245,"context_line":"    @classmethod"},{"line_number":246,"context_line":"    def setUpClass(cls):"},{"line_number":247,"context_line":"        super(ListSnapshotImagesTest, cls).setUpClass()"},{"line_number":248,"context_line":"        if not cls.config.compute_feature_enabled.api_v3:"},{"line_number":249,"context_line":"            cls.servers_client \u003d cls.os.servers_client"},{"line_number":250,"context_line":"        else:"},{"line_number":251,"context_line":"            cls.servers_client \u003d cls.os.servers_v3_client"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F0iU%3D","line":248,"in_reply_to":"AAAAUH%2F%2F3pI%3D","updated":"2014-01-08 03:24:41.000000000","message":"thanks, done","commit_id":"5a61d509ad575d8290f501e1a5baf1df8be6320f"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"db801b30b34850f81069190b2dad9f839cfbd31e","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        else:"},{"line_number":251,"context_line":"            cls.servers_client \u003d cls.os.servers_v3_client"},{"line_number":252,"context_line":"        cls.servers \u003d []"},{"line_number":253,"context_line":"        # We add a few images here to test the listing functionality of"},{"line_number":254,"context_line":"        cls.snapshot \u003d cls._create_snapshot("},{"line_number":255,"context_line":"            \u0027snapshot\u0027, cls.config.compute.image_ref,"},{"line_number":256,"context_line":"            cls.config.compute.flavor_ref)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F3ow%3D","line":253,"updated":"2014-01-07 12:57:18.000000000","message":"comment is not right","commit_id":"5a61d509ad575d8290f501e1a5baf1df8be6320f"},{"author":{"_account_id":9046,"name":"Maithem","email":"munshedm@vmware.com","username":"Maithem"},"change_message_id":"76e66c55460cb898a5f8baba856406a2c1250711","unresolved":false,"context_lines":[{"line_number":296,"context_line":"            {\u0027instance_uuid\u0027: self.servers[0][\u0027id\u0027]})"},{"line_number":297,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027200\u0027)"},{"line_number":298,"context_line":"        result_set \u003d set(map(lambda x: x[\u0027id\u0027], images))"},{"line_number":299,"context_line":"        self.assertEqual(result_set, self.snapshot_set)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":302,"context_line":"    def test_index_type(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FAi0%3D","line":299,"updated":"2014-01-19 10:06:05.000000000","message":"Arguments should be (expected, result)","commit_id":"27f6b057608d5000f5885339de23380d6cc32be7"},{"author":{"_account_id":9046,"name":"Maithem","email":"munshedm@vmware.com","username":"Maithem"},"change_message_id":"76e66c55460cb898a5f8baba856406a2c1250711","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        params \u003d {\u0027image_type\u0027: \u0027snapshot\u0027}"},{"line_number":305,"context_line":"        resp, images \u003d self.client.image_list_detail(params)"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027200\u0027)"},{"line_number":308,"context_line":"        result_set \u003d set(map(lambda x: x[\u0027id\u0027], images))"},{"line_number":309,"context_line":"        self.assertIn(self.snapshot, result_set)"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FAiw%3D","line":307,"updated":"2014-01-19 10:06:05.000000000","message":"ditto","commit_id":"27f6b057608d5000f5885339de23380d6cc32be7"},{"author":{"_account_id":9046,"name":"Maithem","email":"munshedm@vmware.com","username":"Maithem"},"change_message_id":"76e66c55460cb898a5f8baba856406a2c1250711","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        resp, images \u003d self.client.image_list_detail(limit\u003d1)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027200\u0027)"},{"line_number":317,"context_line":"        self.assertEqual(len(images), 1)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":320,"context_line":"    def test_index_by_change_since(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FAis%3D","line":317,"updated":"2014-01-19 10:06:05.000000000","message":"ditto","commit_id":"27f6b057608d5000f5885339de23380d6cc32be7"},{"author":{"_account_id":9046,"name":"Maithem","email":"munshedm@vmware.com","username":"Maithem"},"change_message_id":"76e66c55460cb898a5f8baba856406a2c1250711","unresolved":false,"context_lines":[{"line_number":369,"context_line":"        # The metadata for the image should match the updated values"},{"line_number":370,"context_line":"        req_metadata \u003d {\u0027key1\u0027: \u0027alt1\u0027, \u0027key2\u0027: \u0027value2\u0027}"},{"line_number":371,"context_line":"        resp, metadata \u003d self.client.get_image_meta(self.image_id)"},{"line_number":372,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":373,"context_line":"        self.assertEqual(metadata[\u0027properties\u0027], {\u0027key1\u0027: \u0027value1\u0027})"},{"line_number":374,"context_line":"        metadata[\u0027properties\u0027].update(req_metadata)"},{"line_number":375,"context_line":"        resp, metadata \u003d self.client.update_image("}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FAio%3D","line":372,"updated":"2014-01-19 10:06:05.000000000","message":"Please keep this consistent throughout the code.","commit_id":"27f6b057608d5000f5885339de23380d6cc32be7"}],"tempest/api/image/v1/test_images_negative.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"0c0d4436be337cb6c1a320fc98539efa3c8a4389","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def test_get_image_not_existing(self):"},{"line_number":76,"context_line":"        # Check raises a NotFound"},{"line_number":77,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.get_image,"},{"line_number":78,"context_line":"                          \"nonexistingimageid\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FGCU%3D","line":78,"updated":"2014-01-17 14:16:50.000000000","message":"This patch posted after the moratorium on new negative tests.\nCan you remove this test?\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2013-November/018748.html","commit_id":"9f787ceab54c5e2f6f087aa489f38544aa52897c"}],"tempest/services/image/v1/json/image_client.py":[{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"3262cc25d1db00303270ade0a9915d475de12c67","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return resp, body[\u0027images\u0027]"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def image_list_detail(self, properties\u003ddict(), changes_since\u003dNone,"},{"line_number":195,"context_line":"                          **kwargs):"},{"line_number":196,"context_line":"        url \u003d \u0027v1/images/detail\u0027"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        params \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2FxBY%3D","line":195,"updated":"2014-01-02 02:42:27.000000000","message":"It seems as if the changes_since can be included in properties too.\nWhy do we add a new parameter for \"changes_since\"?","commit_id":"3a0b05d04c7c30abfcc32d75fc2f06fe77e4026c"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"a0b44756e25093f7686f9a5af32a8ab96ecd03a7","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return resp, body[\u0027images\u0027]"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def image_list_detail(self, properties\u003ddict(), changes_since\u003dNone,"},{"line_number":195,"context_line":"                          **kwargs):"},{"line_number":196,"context_line":"        url \u003d \u0027v1/images/detail\u0027"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        params \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2Fwuk%3D","line":195,"in_reply_to":"AAAAT3%2F%2FxBY%3D","updated":"2014-01-02 06:36:40.000000000","message":"No, it can\u0027t. Did I miss something?\n\nIt likes limit, we can use the kwargs parameter, but the issue is \u0027-\u0027 in changes-since.","commit_id":"3a0b05d04c7c30abfcc32d75fc2f06fe77e4026c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8d642b5586cc9640741871f12b4d813f7edfe812","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        kwargs.update(params)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        if changes_since is not None:"},{"line_number":205,"context_line":"            kwargs[\u0027change-since\u0027] \u003d changes_since"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        if len(kwargs) \u003e 0:"},{"line_number":208,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F0Tg%3D","line":205,"updated":"2014-01-08 05:15:04.000000000","message":"s/change-since/changes-since/ because glance does not have \u0027change-since\u0027 filter.","commit_id":"5a61d509ad575d8290f501e1a5baf1df8be6320f"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"90e9448859adc3573f9d1dcb75a96251b9dd3cc9","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        kwargs.update(params)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        if changes_since is not None:"},{"line_number":205,"context_line":"            kwargs[\u0027change-since\u0027] \u003d changes_since"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        if len(kwargs) \u003e 0:"},{"line_number":208,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F0N8%3D","line":205,"in_reply_to":"AAAAUH%2F%2F0Tg%3D","updated":"2014-01-08 05:54:35.000000000","message":"ok, Done","commit_id":"5a61d509ad575d8290f501e1a5baf1df8be6320f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"96a3bae00922d57e4e472785ac9e6a2f30e50a0c","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        kwargs.update(params)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        if change_since is not None:"},{"line_number":205,"context_line":"            kwargs[\u0027change-since\u0027] \u003d change_since"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        if len(kwargs) \u003e 0:"},{"line_number":208,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FpdE%3D","line":205,"updated":"2014-01-10 05:09:31.000000000","message":"Hi Ivan,\n\nthat is opposite change.\n\ns/change-since/changes-since/ in kwargs[].","commit_id":"ead501972853de0d90769d2ec1ae08a50158e8ba"}]}
