)]}'
{"tempest/api/image/base.py":[{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"d4e3507885b0ecc3a0a7685da3f409f43464e0bf","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        alt_tenant_name \u003d cls.os_alt.tenant_name"},{"line_number":116,"context_line":"        identity_client \u003d cls._get_identity_admin_client()"},{"line_number":117,"context_line":"        _, tenants \u003d identity_client.list_tenants()"},{"line_number":118,"context_line":"        cls.alt_tenant_id \u003d [tnt[\u0027id\u0027] for tnt in tenants if tnt[\u0027name\u0027] \u003d\u003d"},{"line_number":119,"context_line":"                             alt_tenant_name][0]"},{"line_number":120,"context_line":"        cls.alt_img_cli \u003d cls.os_alt.image_client"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATX%2F%2F7uA%3D","line":117,"updated":"2013-10-24 01:23:08.000000000","message":"maybe we\u0027d better check the response first, so that error could be found earlier. right?","commit_id":"fc32f4f1d96f6c96297012a93d7ac03859e8ae72"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"73f0888876046e9c6a17587454bf2e21120abaad","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        cls.alt_img_cli \u003d cls.os_alt.image_client"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def _create_image(self):"},{"line_number":122,"context_line":"        image_file \u003d StringIO.StringIO(\u0027*\u0027 * 1024)"},{"line_number":123,"context_line":"        resp, image \u003d self.create_image(container_format\u003d\u0027bare\u0027,"},{"line_number":124,"context_line":"                                        disk_format\u003d\u0027raw\u0027,"},{"line_number":125,"context_line":"                                        is_public\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fr%2FQ%3D","line":122,"updated":"2013-10-30 12:45:19.000000000","message":"is there a particula reason we should import StringIO just to fill image_file with some data?","commit_id":"2cdeaf353702dddf08c124cdb22e8bb18daa97d6"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"ba071e461d6584c2148fc3405daf8efc39af7b80","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        cls.alt_img_cli \u003d cls.os_alt.image_client"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def _create_image(self):"},{"line_number":122,"context_line":"        image_file \u003d StringIO.StringIO(\u0027*\u0027 * 1024)"},{"line_number":123,"context_line":"        resp, image \u003d self.create_image(container_format\u003d\u0027bare\u0027,"},{"line_number":124,"context_line":"                                        disk_format\u003d\u0027raw\u0027,"},{"line_number":125,"context_line":"                                        is_public\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fqa0%3D","line":122,"in_reply_to":"AAAATn%2F%2Fr%2FQ%3D","updated":"2013-10-30 17:41:55.000000000","message":"I reply to myself, we do need it, raw_request assumes data to be a file-like object","commit_id":"2cdeaf353702dddf08c124cdb22e8bb18daa97d6"}],"tempest/api/image/v1/test_image_members.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"750cc56519a8b5fb9dee843832b5e77095d4545d","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                          non_exist_tenant, image_id)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":121,"context_line":"    def test_get_image_without_nembership(self):"},{"line_number":122,"context_line":"        # Image is hidden from another tenants."},{"line_number":123,"context_line":"        image_id \u003d self._create_image()"},{"line_number":124,"context_line":"        self.assertRaises(exceptions.NotFound,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2F5iI%3D","line":121,"updated":"2013-10-08 10:53:59.000000000","message":"s/nembership/membership","commit_id":"3b0ad1e707c5ca484bd9221e49b1acbbb779098e"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"8b7ab6ae14f853a2b6173a8f97534bd6d5ad6e46","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.delete_member,"},{"line_number":118,"context_line":"                          non_exist_tenant, image_id)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":121,"context_line":"    def test_get_image_without_membership(self):"},{"line_number":122,"context_line":"        # Image is hidden from another tenants."},{"line_number":123,"context_line":"        image_id \u003d self._create_image()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2F2NY%3D","line":120,"updated":"2013-10-09 01:54:16.000000000","message":"Should we start now to move negative tests into one seperated file?","commit_id":"46f1d27a1722dfac1ab5ce9b718638e1ff968c3c"}],"tempest/api/image/v1/test_image_members_negative.py":[{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"d4e3507885b0ecc3a0a7685da3f409f43464e0bf","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.image import base"},{"line_number":19,"context_line":"from tempest.common.utils.data_utils import rand_name"},{"line_number":20,"context_line":"from tempest import exceptions"},{"line_number":21,"context_line":"from tempest.test import attr"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F%2F%2F8%3D","line":19,"updated":"2013-10-24 01:23:08.000000000","message":"do we need to start to do the right things right now? I prefer to use: from tempest.common.utils import data_utils\nmaybe you can do that in another patch.","commit_id":"fc32f4f1d96f6c96297012a93d7ac03859e8ae72"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"d4e3507885b0ecc3a0a7685da3f409f43464e0bf","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":27,"context_line":"    def test_add_member_with_non_existing_image(self):"},{"line_number":28,"context_line":"        # Add member with non existing image."},{"line_number":29,"context_line":"        non_exist_image \u003d rand_name(\u0027image_\u0027)"},{"line_number":30,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.add_member,"},{"line_number":31,"context_line":"                          self.alt_tenant_id, non_exist_image)"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F%2F%2Fg%3D","line":29,"updated":"2013-10-24 01:23:08.000000000","message":"I suppose a uuid should be here, rather than a random string.","commit_id":"fc32f4f1d96f6c96297012a93d7ac03859e8ae72"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"d4e3507885b0ecc3a0a7685da3f409f43464e0bf","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":34,"context_line":"    def test_delete_member_with_non_existing_image(self):"},{"line_number":35,"context_line":"        # Delete member with non existing image."},{"line_number":36,"context_line":"        non_exist_image \u003d rand_name(\u0027image_\u0027)"},{"line_number":37,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.delete_member,"},{"line_number":38,"context_line":"                          self.alt_tenant_id, non_exist_image)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F%2F%2Fc%3D","line":36,"updated":"2013-10-24 01:23:08.000000000","message":"ditto","commit_id":"fc32f4f1d96f6c96297012a93d7ac03859e8ae72"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"73f0888876046e9c6a17587454bf2e21120abaad","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 2013 IBM Corp."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FsAA%3D","line":3,"updated":"2013-10-30 12:45:19.000000000","message":"maybe this should be either deleted or updated?","commit_id":"2cdeaf353702dddf08c124cdb22e8bb18daa97d6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"36fee667860b1d7ea71d3cd4fed3c00d342fcf4d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    def test_delete_member_with_non_existing_tenant(self):"},{"line_number":42,"context_line":"        # Delete member with non existing tenant."},{"line_number":43,"context_line":"        image_id \u003d self._create_image()"},{"line_number":44,"context_line":"        non_exist_tenant \u003d data_utils.rand_uuid()"},{"line_number":45,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.delete_member,"},{"line_number":46,"context_line":"                          non_exist_tenant, image_id)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fpe8%3D","line":44,"updated":"2013-10-30 22:11:11.000000000","message":"Keystone generates a tenant-id with uuid.uuid4().hex.\nThe ID does not contain hyphens between the sections of UUID.\n\nThe UUID of data_utils.rand_uuid() contains dashes, that format is different from ID generated by keystone.","commit_id":"2cdeaf353702dddf08c124cdb22e8bb18daa97d6"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"a723c4de93e3f944d6dd8e09cf1be9b4953b7eba","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class ImageMembersNegativeTest(base.BaseV1ImageMembersTest):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":27,"context_line":"    def test_add_member_with_non_existing_image(self):"},{"line_number":28,"context_line":"        # Add member with non existing image."},{"line_number":29,"context_line":"        non_exist_image \u003d data_utils.rand_uuid()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2FIP4%3D","line":26,"updated":"2013-11-14 03:36:16.000000000","message":"if further changes are demanded maybe you can replace \"gate\" occurrences with \"smoke\"","commit_id":"a709b76eb70ed5ec0e6686d74077d47eb960a47e"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"a723c4de93e3f944d6dd8e09cf1be9b4953b7eba","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                          self.alt_tenant_id, non_exist_image)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":41,"context_line":"    def test_delete_member_with_non_existing_tenant(self):"},{"line_number":42,"context_line":"        # Delete member with non existing tenant."},{"line_number":43,"context_line":"        image_id \u003d self._create_image()"},{"line_number":44,"context_line":"        non_exist_tenant \u003d data_utils.rand_uuid_hex()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2FIQE%3D","line":41,"updated":"2013-11-14 03:36:16.000000000","message":"if you want to add this maybe we should also have the matching add member with non existing tenant","commit_id":"a709b76eb70ed5ec0e6686d74077d47eb960a47e"}],"tempest/common/utils/data_utils.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"3b0c0377f3fc24cf1342cd85b33256b2c0b25c2e","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from tempest import exceptions"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def rand_uuid():"},{"line_number":28,"context_line":"    return str(uuid.uuid4())"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FQfI%3D","line":27,"updated":"2013-11-12 06:12:10.000000000","message":"I think the name of this function should be contained \u0027str\u0027 such as rand_uuid_str(). Because returned value is not UUID but str.\nOr users of this function may confuse for that.\nWDYT?","commit_id":"2cdeaf353702dddf08c124cdb22e8bb18daa97d6"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"59a1b79d46ac61f5c3c3d05ae2c288bd76b80025","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from tempest import exceptions"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def rand_uuid():"},{"line_number":28,"context_line":"    return str(uuid.uuid4())"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FPYc%3D","line":27,"in_reply_to":"AAAATn%2F%2FQfI%3D","updated":"2013-11-12 12:21:22.000000000","message":"I expect string from these methods without adding it to the name.","commit_id":"2cdeaf353702dddf08c124cdb22e8bb18daa97d6"}]}
