)]}'
{"tempest/api/volume/test_snapshot_metadata.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"72b3c2900eaec284c604e4a5c25eb604e2bd8a65","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        metadata \u003d {\"key1\": \"value1\","},{"line_number":86,"context_line":"                    \"KEY1\": \"value1\","},{"line_number":87,"context_line":"                    \"KEY2\": \"value2\","},{"line_number":88,"context_line":"                    \"key3\": \"value3\"}"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        resp, c_body \u003d self.client.create_snapshot_metadata(self.snapshot_id,"},{"line_number":91,"context_line":"                                                            metadata)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F894g%3D","line":88,"updated":"2013-12-18 10:07:35.000000000","message":"Why should we specify complex metadata(upper and lower keys) for this test?\n\nThe following assert checks just the response bodies between create_snapshot_metadata() and get_snapshot_metadata().","commit_id":"c9284ca76f37ddaed506675a7348295dbcba7820"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5b81fa964f67fdfd9bca0c903679c15256b40e6a","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        metadata \u003d {\"key1\": \"value1\","},{"line_number":86,"context_line":"                    \"KEY1\": \"value1\","},{"line_number":87,"context_line":"                    \"KEY2\": \"value2\","},{"line_number":88,"context_line":"                    \"key3\": \"value3\"}"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        resp, c_body \u003d self.client.create_snapshot_metadata(self.snapshot_id,"},{"line_number":91,"context_line":"                                                            metadata)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F83Zo%3D","line":88,"in_reply_to":"AAAATn%2F85bM%3D","updated":"2013-12-19 12:43:57.000000000","message":"Can we know which keys are saved upper or lower?\n\nI feel it is better to have the expected keys and check them and the returned keys of create_snapshot_metadata().\n\nFor example, if the lower keys must be saved, better to check them like the following:\n\n expected \u003d {\"key1\": \"value1\",\n             \"KEY2\": \"value2\",\n             \"key3\": \"value3\"}\n self.assertEqual(expected, body)","commit_id":"c9284ca76f37ddaed506675a7348295dbcba7820"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"47a8b72f1d8a5a3e0bead68afb2f65513e795569","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        metadata \u003d {\"key1\": \"value1\","},{"line_number":86,"context_line":"                    \"KEY1\": \"value1\","},{"line_number":87,"context_line":"                    \"KEY2\": \"value2\","},{"line_number":88,"context_line":"                    \"key3\": \"value3\"}"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        resp, c_body \u003d self.client.create_snapshot_metadata(self.snapshot_id,"},{"line_number":91,"context_line":"                                                            metadata)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F85bM%3D","line":88,"in_reply_to":"AAAATn%2F894g%3D","updated":"2013-12-19 02:07:46.000000000","message":"I have fixed a bug for create_snapshot_metadata: \nTo modify the response body to what the server saved, not just copied from the request body. If the request body has the upper and lower keys, return the keys which the server accept(may be case sensitive or not), so i check the response bodies between create_snapshot_metadata() and get_snapshot_metadata().","commit_id":"c9284ca76f37ddaed506675a7348295dbcba7820"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"72b3c2900eaec284c604e4a5c25eb604e2bd8a65","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        metadata \u003d {\"key1\": \"value1\","},{"line_number":102,"context_line":"                    \"KEY1\": \"value1\","},{"line_number":103,"context_line":"                    \"KEY2\": \"value2\","},{"line_number":104,"context_line":"                    \"key3\": \"value3\"}"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        resp, c_body \u003d self.client.update_all_snapshot_metadata("},{"line_number":107,"context_line":"            self.snapshot_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F894c%3D","line":104,"updated":"2013-12-18 10:07:35.000000000","message":"ditto","commit_id":"c9284ca76f37ddaed506675a7348295dbcba7820"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"47a8b72f1d8a5a3e0bead68afb2f65513e795569","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        metadata \u003d {\"key1\": \"value1\","},{"line_number":102,"context_line":"                    \"KEY1\": \"value1\","},{"line_number":103,"context_line":"                    \"KEY2\": \"value2\","},{"line_number":104,"context_line":"                    \"key3\": \"value3\"}"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        resp, c_body \u003d self.client.update_all_snapshot_metadata("},{"line_number":107,"context_line":"            self.snapshot_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F85bI%3D","line":104,"in_reply_to":"AAAATn%2F894c%3D","updated":"2013-12-19 02:07:46.000000000","message":"ditto","commit_id":"c9284ca76f37ddaed506675a7348295dbcba7820"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"340ad45335d748e182a3f0724b8ca17f229e290d","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        resp, body \u003d self.client.get_snapshot_metadata(self.snapshot_id)"},{"line_number":81,"context_line":"        self.assertNotIn(\"key1\", body)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def test_create_snapshot_metadata_case_sensitive_or_not(self):"},{"line_number":84,"context_line":"        # Create metadata for the snapshot"},{"line_number":85,"context_line":"        metadata \u003d {\"key1\": \"value1\","},{"line_number":86,"context_line":"                    \"KEY1\": \"value1\","}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAT3%2F%2F%2BPc%3D","line":83,"updated":"2013-12-26 00:35:28.000000000","message":"This test seems a little overkill now because the behavior is unstable. How about removing this test from this patch as the first step?","commit_id":"bb6fd83df23059e7815b242e9ab3806970a5bc12"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"4bdc393629ed12564c611d53fab3e2d3c6d5632a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        resp, body \u003d self.client.get_snapshot_metadata(self.snapshot_id)"},{"line_number":81,"context_line":"        self.assertNotIn(\"key1\", body)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def test_create_snapshot_metadata_case_sensitive_or_not(self):"},{"line_number":84,"context_line":"        # Create metadata for the snapshot"},{"line_number":85,"context_line":"        metadata \u003d {\"key1\": \"value1\","},{"line_number":86,"context_line":"                    \"KEY1\": \"value1\","}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAT3%2F%2F%2BNA%3D","line":83,"in_reply_to":"AAAAT3%2F%2F%2BPc%3D","updated":"2013-12-26 01:11:01.000000000","message":"Done.","commit_id":"bb6fd83df23059e7815b242e9ab3806970a5bc12"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"340ad45335d748e182a3f0724b8ca17f229e290d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        # sensitive or not"},{"line_number":97,"context_line":"        self.assertEqual(c_body, body)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_update_snapshot_metadata_case_sensitive_or_not(self):"},{"line_number":100,"context_line":"        # Update metadata for the snapshot"},{"line_number":101,"context_line":"        metadata \u003d {\"key1\": \"value1\","},{"line_number":102,"context_line":"                    \"KEY1\": \"value1\","}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAT3%2F%2F%2BPY%3D","line":99,"updated":"2013-12-26 00:35:28.000000000","message":"ditto","commit_id":"bb6fd83df23059e7815b242e9ab3806970a5bc12"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"4bdc393629ed12564c611d53fab3e2d3c6d5632a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        # sensitive or not"},{"line_number":97,"context_line":"        self.assertEqual(c_body, body)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_update_snapshot_metadata_case_sensitive_or_not(self):"},{"line_number":100,"context_line":"        # Update metadata for the snapshot"},{"line_number":101,"context_line":"        metadata \u003d {\"key1\": \"value1\","},{"line_number":102,"context_line":"                    \"KEY1\": \"value1\","}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAT3%2F%2F%2BM8%3D","line":99,"in_reply_to":"AAAAT3%2F%2F%2BPY%3D","updated":"2013-12-26 01:11:01.000000000","message":"Done.","commit_id":"bb6fd83df23059e7815b242e9ab3806970a5bc12"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"340ad45335d748e182a3f0724b8ca17f229e290d","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        # Update metadata item for the snapshot"},{"line_number":118,"context_line":"        metadata \u003d {\"key1\": \"value1\","},{"line_number":119,"context_line":"                    \"KEY2\": \"value2\","},{"line_number":120,"context_line":"                    \"key3\": \"value3\"}"},{"line_number":121,"context_line":"        create_expect \u003d {\"key1\": \"value1\","},{"line_number":122,"context_line":"                         \"KEY2\": \"value2\","},{"line_number":123,"context_line":"                         \"key3\": \"value3\"}"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAT3%2F%2F%2BPU%3D","line":120,"updated":"2013-12-26 00:35:28.000000000","message":"Please use lower cases only.","commit_id":"bb6fd83df23059e7815b242e9ab3806970a5bc12"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"4bdc393629ed12564c611d53fab3e2d3c6d5632a","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        # Update metadata item for the snapshot"},{"line_number":118,"context_line":"        metadata \u003d {\"key1\": \"value1\","},{"line_number":119,"context_line":"                    \"KEY2\": \"value2\","},{"line_number":120,"context_line":"                    \"key3\": \"value3\"}"},{"line_number":121,"context_line":"        create_expect \u003d {\"key1\": \"value1\","},{"line_number":122,"context_line":"                         \"KEY2\": \"value2\","},{"line_number":123,"context_line":"                         \"key3\": \"value3\"}"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAT3%2F%2F%2BM4%3D","line":120,"in_reply_to":"AAAAT3%2F%2F%2BPU%3D","updated":"2013-12-26 01:11:01.000000000","message":"Done.","commit_id":"bb6fd83df23059e7815b242e9ab3806970a5bc12"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"db1ef04daaed5e4349ac1f4632e698b01e15f777","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        cls.volume \u003d cls.create_volume()"},{"line_number":31,"context_line":"        # Create a snapshot"},{"line_number":32,"context_line":"        cls.snapshot \u003d cls.create_snapshot(volume_id\u003dcls.volume[\u0027id\u0027])"},{"line_number":33,"context_line":"        cls.snapshot_id \u003d cls.snapshot[\u0027id\u0027]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def tearDownClass(cls):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F73M%3D","line":33,"updated":"2013-12-26 19:31:34.000000000","message":"you forgot to clean, or to add for future clean up, the resources you created during setup.","commit_id":"aa49ca5e11ae586c6d3068ad47495b68978e37f1"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a924e1a65ab98b1d391b741842b719122f150a57","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        cls.volume \u003d cls.create_volume()"},{"line_number":31,"context_line":"        # Create a snapshot"},{"line_number":32,"context_line":"        cls.snapshot \u003d cls.create_snapshot(volume_id\u003dcls.volume[\u0027id\u0027])"},{"line_number":33,"context_line":"        cls.snapshot_id \u003d cls.snapshot[\u0027id\u0027]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def tearDownClass(cls):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F7XE%3D","line":33,"in_reply_to":"AAAAT3%2F%2F73M%3D","updated":"2013-12-26 23:45:16.000000000","message":"Hi Mauro,\n\nThe resources created by cls.create_snapshot() will be deleted automatically in tearDownClass() of BaseVolumeTest.\nSo we don\u0027t need addCleanup here.\n\nhttps://github.com/openstack/tempest/blob/master/tempest/api/volume/base.py#L67\n\nThe name is duplicated with client\u0027s method, and that makes readability wrong :-(","commit_id":"aa49ca5e11ae586c6d3068ad47495b68978e37f1"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7f1324b7fc280b190768dfa1ed3470dfddd67a58","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from tempest import test"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class SnapshotMetadataActionsTest(BaseVolumeTest):"},{"line_number":23,"context_line":"    _interface \u003d \"json\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAT3%2F%2F684%3D","line":22,"updated":"2013-12-27 04:50:11.000000000","message":"Could you rename this to SnapshotMetadataTest?\nbecause this is not action tests.","commit_id":"2ecd6372bc96c259cc971b275ee29c825a3507d5"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"387a70373317889b2efcefa64208779f39cbaaef","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from tempest import test"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class SnapshotMetadataActionsTest(BaseVolumeTest):"},{"line_number":23,"context_line":"    _interface \u003d \"json\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAT3%2F%2F4sU%3D","line":22,"in_reply_to":"AAAAT3%2F%2F684%3D","updated":"2013-12-28 01:41:16.000000000","message":"Done.","commit_id":"2ecd6372bc96c259cc971b275ee29c825a3507d5"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7f1324b7fc280b190768dfa1ed3470dfddd67a58","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        self.assertEqual(expect, body)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"class SnapshotMetadataActionsTestXML(SnapshotMetadataActionsTest):"},{"line_number":123,"context_line":"    _interface \u003d \"xml\""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAT3%2F%2F680%3D","line":122,"updated":"2013-12-27 04:50:11.000000000","message":"ditto: SnapshotMetadataTestXML","commit_id":"2ecd6372bc96c259cc971b275ee29c825a3507d5"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"387a70373317889b2efcefa64208779f39cbaaef","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        self.assertEqual(expect, body)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"class SnapshotMetadataActionsTestXML(SnapshotMetadataActionsTest):"},{"line_number":123,"context_line":"    _interface \u003d \"xml\""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAT3%2F%2F4sM%3D","line":122,"in_reply_to":"AAAAT3%2F%2F680%3D","updated":"2013-12-28 01:41:16.000000000","message":"Done.","commit_id":"2ecd6372bc96c259cc971b275ee29c825a3507d5"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"4a3cc3aecdc266fcc4d83b7df22e551855f845dd","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        cls.snapshot_id \u003d cls.snapshot[\u0027id\u0027]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def tearDownClass(cls):"},{"line_number":37,"context_line":"        super(SnapshotMetadataTest, cls).tearDownClass()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2F1Uc%3D","line":36,"updated":"2013-12-30 14:26:59.000000000","message":"This method is not needed.","commit_id":"bb2eb5e9102d8aa9b7b20e8f0065cceaf6092729"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"41eb6e6e60be8b29eaae4434a9932256b507b727","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        cls.snapshot_id \u003d cls.snapshot[\u0027id\u0027]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def tearDownClass(cls):"},{"line_number":37,"context_line":"        super(SnapshotMetadataTest, cls).tearDownClass()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2FzU0%3D","line":36,"in_reply_to":"AAAAT3%2F%2F1Uc%3D","updated":"2013-12-31 07:43:23.000000000","message":"Done.","commit_id":"bb2eb5e9102d8aa9b7b20e8f0065cceaf6092729"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"4a3cc3aecdc266fcc4d83b7df22e551855f845dd","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            \"key1\")"},{"line_number":62,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":63,"context_line":"        resp, body \u003d self.client.get_snapshot_metadata(self.snapshot_id)"},{"line_number":64,"context_line":"        self.assertNotIn(\"key1\", body)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":67,"context_line":"    def test_update_snapshot_metadata(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2F1UU%3D","line":64,"updated":"2013-12-30 14:26:59.000000000","message":"This should check for the expected value, as the other tests do.","commit_id":"bb2eb5e9102d8aa9b7b20e8f0065cceaf6092729"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"41eb6e6e60be8b29eaae4434a9932256b507b727","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            \"key1\")"},{"line_number":62,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":63,"context_line":"        resp, body \u003d self.client.get_snapshot_metadata(self.snapshot_id)"},{"line_number":64,"context_line":"        self.assertNotIn(\"key1\", body)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":67,"context_line":"    def test_update_snapshot_metadata(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2FzUQ%3D","line":64,"in_reply_to":"AAAAT3%2F%2F1UU%3D","updated":"2013-12-31 07:43:23.000000000","message":"Done.","commit_id":"bb2eb5e9102d8aa9b7b20e8f0065cceaf6092729"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"4a3cc3aecdc266fcc4d83b7df22e551855f845dd","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        resp, body \u003d self.client.create_snapshot_metadata(self.snapshot_id,"},{"line_number":76,"context_line":"                                                          metadata)"},{"line_number":77,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":78,"context_line":"        # Get the metadata of the snapshot"},{"line_number":79,"context_line":"        resp, body \u003d self.client.get_snapshot_metadata(self.snapshot_id)"},{"line_number":80,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":81,"context_line":"        self.assertEqual(metadata, body)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2F1UA%3D","line":78,"updated":"2013-12-30 14:26:59.000000000","message":"The next call and asserts is not necessary as this is already tested in the first test.","commit_id":"bb2eb5e9102d8aa9b7b20e8f0065cceaf6092729"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"41eb6e6e60be8b29eaae4434a9932256b507b727","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        resp, body \u003d self.client.create_snapshot_metadata(self.snapshot_id,"},{"line_number":76,"context_line":"                                                          metadata)"},{"line_number":77,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":78,"context_line":"        # Get the metadata of the snapshot"},{"line_number":79,"context_line":"        resp, body \u003d self.client.get_snapshot_metadata(self.snapshot_id)"},{"line_number":80,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":81,"context_line":"        self.assertEqual(metadata, body)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2FzUA%3D","line":78,"in_reply_to":"AAAAT3%2F%2F1UA%3D","updated":"2013-12-31 07:43:23.000000000","message":"I don\u0027t think so. \nI think \"create-get\" and then \"update-get\" look clear for a flagrant contrast.","commit_id":"bb2eb5e9102d8aa9b7b20e8f0065cceaf6092729"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"4a3cc3aecdc266fcc4d83b7df22e551855f845dd","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        metadata \u003d {\"key1\": \"value1\","},{"line_number":96,"context_line":"                    \"key2\": \"value2\","},{"line_number":97,"context_line":"                    \"key3\": \"value3\"}"},{"line_number":98,"context_line":"        create_expect \u003d {\"key1\": \"value1\","},{"line_number":99,"context_line":"                         \"key2\": \"value2\","},{"line_number":100,"context_line":"                         \"key3\": \"value3\"}"},{"line_number":101,"context_line":"        update_item \u003d {\"key3\": \"value3_update\"}"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2F1To%3D","line":98,"updated":"2013-12-30 14:26:59.000000000","message":"These two dicts are the same, and create_expect is not needed as per the following comment.","commit_id":"bb2eb5e9102d8aa9b7b20e8f0065cceaf6092729"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"41eb6e6e60be8b29eaae4434a9932256b507b727","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        metadata \u003d {\"key1\": \"value1\","},{"line_number":96,"context_line":"                    \"key2\": \"value2\","},{"line_number":97,"context_line":"                    \"key3\": \"value3\"}"},{"line_number":98,"context_line":"        create_expect \u003d {\"key1\": \"value1\","},{"line_number":99,"context_line":"                         \"key2\": \"value2\","},{"line_number":100,"context_line":"                         \"key3\": \"value3\"}"},{"line_number":101,"context_line":"        update_item \u003d {\"key3\": \"value3_update\"}"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2FzT8%3D","line":98,"in_reply_to":"AAAAT3%2F%2F1To%3D","updated":"2013-12-31 07:43:23.000000000","message":"Done.","commit_id":"bb2eb5e9102d8aa9b7b20e8f0065cceaf6092729"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"4a3cc3aecdc266fcc4d83b7df22e551855f845dd","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        expect \u003d {\"key1\": \"value1\","},{"line_number":103,"context_line":"                  \"key2\": \"value2\","},{"line_number":104,"context_line":"                  \"key3\": \"value3_update\"}"},{"line_number":105,"context_line":"        # Create metadata for the snapshot"},{"line_number":106,"context_line":"        resp, body \u003d self.client.create_snapshot_metadata(self.snapshot_id,"},{"line_number":107,"context_line":"                                                          metadata)"},{"line_number":108,"context_line":"        self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2F1Tw%3D","line":105,"updated":"2013-12-30 14:26:59.000000000","message":"The next call and asserts is not necessary as this is already tested in the first test.","commit_id":"bb2eb5e9102d8aa9b7b20e8f0065cceaf6092729"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"41eb6e6e60be8b29eaae4434a9932256b507b727","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        expect \u003d {\"key1\": \"value1\","},{"line_number":103,"context_line":"                  \"key2\": \"value2\","},{"line_number":104,"context_line":"                  \"key3\": \"value3_update\"}"},{"line_number":105,"context_line":"        # Create metadata for the snapshot"},{"line_number":106,"context_line":"        resp, body \u003d self.client.create_snapshot_metadata(self.snapshot_id,"},{"line_number":107,"context_line":"                                                          metadata)"},{"line_number":108,"context_line":"        self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2FzTs%3D","line":105,"in_reply_to":"AAAAT3%2F%2F1Tw%3D","updated":"2013-12-31 07:43:23.000000000","message":"I don\u0027t think so. I think \"create-get\" and then \"update-get\" look clear for a flagrant contrast.","commit_id":"bb2eb5e9102d8aa9b7b20e8f0065cceaf6092729"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"20986b5be7fafec09d5fe466320f8df0a9f6e6b5","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.volume.base import BaseVolumeTest"},{"line_number":19,"context_line":"from tempest import test"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAT3%2F%2FwRA%3D","line":18,"updated":"2014-01-02 10:55:14.000000000","message":"please import module instead of class. \"\nfrom tempest.api.volume import base\"","commit_id":"4726508ff6c03e3d4917c56fc7eacff6339326e6"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"4e75597c8d72b8080e9a00c61f6e51c062b3cddd","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.volume.base import BaseVolumeTest"},{"line_number":19,"context_line":"from tempest import test"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F%2F9jU%3D","line":18,"in_reply_to":"AAAAT3%2F%2FwRA%3D","updated":"2014-01-06 08:56:24.000000000","message":"Done.","commit_id":"4726508ff6c03e3d4917c56fc7eacff6339326e6"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"20986b5be7fafec09d5fe466320f8df0a9f6e6b5","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from tempest import test"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class SnapshotMetadataTest(BaseVolumeTest):"},{"line_number":23,"context_line":"    _interface \u003d \"json\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAT3%2F%2FwLg%3D","line":22,"updated":"2014-01-02 10:55:14.000000000","message":"the parent class is BaseVolumeV1Test now.  It\u0027s a legacy problem of change  I712a90d39981564af09393ed1b7f4be12897c808. I\u0027ll submit a patch to remove \u0027volumes_client\u0027 in class \"BaseVolumeTest\".","commit_id":"4726508ff6c03e3d4917c56fc7eacff6339326e6"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"4e75597c8d72b8080e9a00c61f6e51c062b3cddd","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from tempest import test"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class SnapshotMetadataTest(BaseVolumeTest):"},{"line_number":23,"context_line":"    _interface \u003d \"json\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F%2F9jY%3D","line":22,"in_reply_to":"AAAAT3%2F%2FwLg%3D","updated":"2014-01-06 08:56:24.000000000","message":"Done.","commit_id":"4726508ff6c03e3d4917c56fc7eacff6339326e6"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"20986b5be7fafec09d5fe466320f8df0a9f6e6b5","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":54,"context_line":"        self.assertEqual(metadata, body)"},{"line_number":55,"context_line":"        # Delete one item metadata of the snapshot"},{"line_number":56,"context_line":"        resp, body \u003d self.client.delete_snapshot_metadata_item("},{"line_number":57,"context_line":"            self.snapshot_id,"},{"line_number":58,"context_line":"            \"key1\")"},{"line_number":59,"context_line":"        self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAT3%2F%2FwOk%3D","line":56,"updated":"2014-01-02 10:55:14.000000000","message":"Is there method \"delete_snapshot_metadata\" to delete metadata but not only item? If yes, it should be covered too.","commit_id":"4726508ff6c03e3d4917c56fc7eacff6339326e6"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"4e75597c8d72b8080e9a00c61f6e51c062b3cddd","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":54,"context_line":"        self.assertEqual(metadata, body)"},{"line_number":55,"context_line":"        # Delete one item metadata of the snapshot"},{"line_number":56,"context_line":"        resp, body \u003d self.client.delete_snapshot_metadata_item("},{"line_number":57,"context_line":"            self.snapshot_id,"},{"line_number":58,"context_line":"            \"key1\")"},{"line_number":59,"context_line":"        self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F%2F9jc%3D","line":56,"in_reply_to":"AAAAT3%2F%2FwOk%3D","updated":"2014-01-06 08:56:24.000000000","message":"We just can delete one item of snapshot metadata.\nBut we can update the snapshot metadata to {}.\nI write the update metadata to {} in tearDown().","commit_id":"4726508ff6c03e3d4917c56fc7eacff6339326e6"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"20986b5be7fafec09d5fe466320f8df0a9f6e6b5","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        # Get the metadata of the snapshot"},{"line_number":76,"context_line":"        resp, body \u003d self.client.get_snapshot_metadata(self.snapshot_id)"},{"line_number":77,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":78,"context_line":"        self.assertEqual(metadata, body)"},{"line_number":79,"context_line":"        # Update metadata item"},{"line_number":80,"context_line":"        resp, body \u003d self.client.update_snapshot_metadata("},{"line_number":81,"context_line":"            self.snapshot_id,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAT3%2F%2FwQA%3D","line":78,"updated":"2014-01-02 10:55:14.000000000","message":"I agree with David\u0027s opinion. line 75~78 are duplicate with line 51~54.","commit_id":"4726508ff6c03e3d4917c56fc7eacff6339326e6"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"4e75597c8d72b8080e9a00c61f6e51c062b3cddd","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        # Get the metadata of the snapshot"},{"line_number":76,"context_line":"        resp, body \u003d self.client.get_snapshot_metadata(self.snapshot_id)"},{"line_number":77,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":78,"context_line":"        self.assertEqual(metadata, body)"},{"line_number":79,"context_line":"        # Update metadata item"},{"line_number":80,"context_line":"        resp, body \u003d self.client.update_snapshot_metadata("},{"line_number":81,"context_line":"            self.snapshot_id,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F%2F9gQ%3D","line":78,"in_reply_to":"AAAAT3%2F%2FwQA%3D","updated":"2014-01-06 08:56:24.000000000","message":"Thanks very much.\nBut i will stick to my opinion.","commit_id":"4726508ff6c03e3d4917c56fc7eacff6339326e6"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"20986b5be7fafec09d5fe466320f8df0a9f6e6b5","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":103,"context_line":"        # Get the metadata of the snapshot"},{"line_number":104,"context_line":"        resp, body \u003d self.client.get_snapshot_metadata(self.snapshot_id)"},{"line_number":105,"context_line":"        self.assertEqual(metadata, body)"},{"line_number":106,"context_line":"        # Update metadata item"},{"line_number":107,"context_line":"        resp, body \u003d self.client.update_snapshot_metadata_item("},{"line_number":108,"context_line":"            self.snapshot_id,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAT3%2F%2FwPg%3D","line":105,"updated":"2014-01-02 10:55:14.000000000","message":"line 103~105 are duplicate with line 51~54.","commit_id":"4726508ff6c03e3d4917c56fc7eacff6339326e6"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"4e75597c8d72b8080e9a00c61f6e51c062b3cddd","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":103,"context_line":"        # Get the metadata of the snapshot"},{"line_number":104,"context_line":"        resp, body \u003d self.client.get_snapshot_metadata(self.snapshot_id)"},{"line_number":105,"context_line":"        self.assertEqual(metadata, body)"},{"line_number":106,"context_line":"        # Update metadata item"},{"line_number":107,"context_line":"        resp, body \u003d self.client.update_snapshot_metadata_item("},{"line_number":108,"context_line":"            self.snapshot_id,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F%2F9gM%3D","line":105,"in_reply_to":"AAAAT3%2F%2FwPg%3D","updated":"2014-01-06 08:56:24.000000000","message":"Thanks very much.\nBut i will stick to my opinion.","commit_id":"4726508ff6c03e3d4917c56fc7eacff6339326e6"}],"tempest/api/volume/test_snapshot_metadata_negative.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"72b3c2900eaec284c604e4a5c25eb604e2bd8a65","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def test_create_snapshot_metadata_with_nonexistent_snapshot(self):"},{"line_number":76,"context_line":"        # Create metadata for the nonexistent snapshot should fail"},{"line_number":77,"context_line":"        metadata \u003d {\"key1\": \"value1\"}"},{"line_number":78,"context_line":"        nonexistent_snapshot_id \u003d str(uuid.uuid4())"},{"line_number":79,"context_line":"        self.assertRaises(exceptions.NotFound,"},{"line_number":80,"context_line":"                          self.client.create_snapshot_metadata,"},{"line_number":81,"context_line":"                          nonexistent_snapshot_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F894A%3D","line":78,"updated":"2013-12-18 10:07:35.000000000","message":"nit: we can use data_utils.rand_uuid() instead of str(uuid.uuid4()).","commit_id":"c9284ca76f37ddaed506675a7348295dbcba7820"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"47a8b72f1d8a5a3e0bead68afb2f65513e795569","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def test_create_snapshot_metadata_with_nonexistent_snapshot(self):"},{"line_number":76,"context_line":"        # Create metadata for the nonexistent snapshot should fail"},{"line_number":77,"context_line":"        metadata \u003d {\"key1\": \"value1\"}"},{"line_number":78,"context_line":"        nonexistent_snapshot_id \u003d str(uuid.uuid4())"},{"line_number":79,"context_line":"        self.assertRaises(exceptions.NotFound,"},{"line_number":80,"context_line":"                          self.client.create_snapshot_metadata,"},{"line_number":81,"context_line":"                          nonexistent_snapshot_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F85bA%3D","line":78,"in_reply_to":"AAAATn%2F894A%3D","updated":"2013-12-19 02:07:46.000000000","message":"Done","commit_id":"c9284ca76f37ddaed506675a7348295dbcba7820"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"72b3c2900eaec284c604e4a5c25eb604e2bd8a65","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    def test_delete_snapshot_metadata_with_nonexistent_snapshot(self):"},{"line_number":86,"context_line":"        # Delete metadata for the nonexistent snapshot should fail"},{"line_number":87,"context_line":"        delete_item_key \u003d \"key1\""},{"line_number":88,"context_line":"        nonexistent_snapshot_id \u003d str(uuid.uuid4())"},{"line_number":89,"context_line":"        self.assertRaises(exceptions.NotFound,"},{"line_number":90,"context_line":"                          self.client.delete_snapshot_metadata,"},{"line_number":91,"context_line":"                          nonexistent_snapshot_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8934%3D","line":88,"updated":"2013-12-18 10:07:35.000000000","message":"ditto","commit_id":"c9284ca76f37ddaed506675a7348295dbcba7820"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"47a8b72f1d8a5a3e0bead68afb2f65513e795569","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    def test_delete_snapshot_metadata_with_nonexistent_snapshot(self):"},{"line_number":86,"context_line":"        # Delete metadata for the nonexistent snapshot should fail"},{"line_number":87,"context_line":"        delete_item_key \u003d \"key1\""},{"line_number":88,"context_line":"        nonexistent_snapshot_id \u003d str(uuid.uuid4())"},{"line_number":89,"context_line":"        self.assertRaises(exceptions.NotFound,"},{"line_number":90,"context_line":"                          self.client.delete_snapshot_metadata,"},{"line_number":91,"context_line":"                          nonexistent_snapshot_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F85a4%3D","line":88,"in_reply_to":"AAAATn%2F8934%3D","updated":"2013-12-19 02:07:46.000000000","message":"Done.","commit_id":"c9284ca76f37ddaed506675a7348295dbcba7820"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"72b3c2900eaec284c604e4a5c25eb604e2bd8a65","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    def test_update_all_snapshot_metadata_with_nonexistent_snapshot(self):"},{"line_number":112,"context_line":"        # Update metadata for nonexistent snapshot should fail"},{"line_number":113,"context_line":"        metadata \u003d {\"key1\": \"value1\"}"},{"line_number":114,"context_line":"        nonexistent_snapshot_id \u003d str(uuid.uuid4())"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # Update for nonexistent snapshot"},{"line_number":117,"context_line":"        self.assertRaises(exceptions.NotFound,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F893s%3D","line":114,"updated":"2013-12-18 10:07:35.000000000","message":"ditto","commit_id":"c9284ca76f37ddaed506675a7348295dbcba7820"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"47a8b72f1d8a5a3e0bead68afb2f65513e795569","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    def test_update_all_snapshot_metadata_with_nonexistent_snapshot(self):"},{"line_number":112,"context_line":"        # Update metadata for nonexistent snapshot should fail"},{"line_number":113,"context_line":"        metadata \u003d {\"key1\": \"value1\"}"},{"line_number":114,"context_line":"        nonexistent_snapshot_id \u003d str(uuid.uuid4())"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # Update for nonexistent snapshot"},{"line_number":117,"context_line":"        self.assertRaises(exceptions.NotFound,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F85a0%3D","line":114,"in_reply_to":"AAAATn%2F893s%3D","updated":"2013-12-19 02:07:46.000000000","message":"Done.","commit_id":"c9284ca76f37ddaed506675a7348295dbcba7820"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"72b3c2900eaec284c604e4a5c25eb604e2bd8a65","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    def test_update_item_snapshot_metadata_with_nonexistent_snapshot(self):"},{"line_number":124,"context_line":"        # Update metadata for nonexistent snapshot should fail"},{"line_number":125,"context_line":"        metadata \u003d {\"key1\": \"value1\"}"},{"line_number":126,"context_line":"        nonexistent_snapshot_id \u003d str(uuid.uuid4())"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        # Update for nonexistent snapshot"},{"line_number":129,"context_line":"        self.assertRaises(exceptions.NotFound,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F893o%3D","line":126,"updated":"2013-12-18 10:07:35.000000000","message":"ditto","commit_id":"c9284ca76f37ddaed506675a7348295dbcba7820"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"47a8b72f1d8a5a3e0bead68afb2f65513e795569","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    def test_update_item_snapshot_metadata_with_nonexistent_snapshot(self):"},{"line_number":124,"context_line":"        # Update metadata for nonexistent snapshot should fail"},{"line_number":125,"context_line":"        metadata \u003d {\"key1\": \"value1\"}"},{"line_number":126,"context_line":"        nonexistent_snapshot_id \u003d str(uuid.uuid4())"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        # Update for nonexistent snapshot"},{"line_number":129,"context_line":"        self.assertRaises(exceptions.NotFound,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F85as%3D","line":126,"in_reply_to":"AAAATn%2F893o%3D","updated":"2013-12-19 02:07:46.000000000","message":"Done.","commit_id":"c9284ca76f37ddaed506675a7348295dbcba7820"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"340ad45335d748e182a3f0724b8ca17f229e290d","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        resp_vol, cls.volume \u003d \\"},{"line_number":34,"context_line":"            cls.volumes_client.create_volume(size\u003d1, display_name\u003dvol_name)"},{"line_number":35,"context_line":"        cls.volumes_client.wait_for_volume_status(cls.volume[\u0027id\u0027],"},{"line_number":36,"context_line":"                                                  \u0027available\u0027)"},{"line_number":37,"context_line":"        # Create a test shared snapshot for tests"},{"line_number":38,"context_line":"        snap_name \u003d data_utils.rand_name(cls.__name__ + \u0027-Snapshot-\u0027)"},{"line_number":39,"context_line":"        resp_snap, cls.snapshot \u003d \\"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAT3%2F%2F%2BPE%3D","line":36,"updated":"2013-12-26 00:35:28.000000000","message":"line 32-36 can be merged to\n\n cls.volume \u003d cls.create_volume()\n\nvol_name is optional and I guess it is no problem if not specifying it because its name is not referred in this test class.","commit_id":"bb6fd83df23059e7815b242e9ab3806970a5bc12"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"fdeafcfc2f45d1ba645ad1c7352b2be5965e2fc1","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        resp_vol, cls.volume \u003d \\"},{"line_number":34,"context_line":"            cls.volumes_client.create_volume(size\u003d1, display_name\u003dvol_name)"},{"line_number":35,"context_line":"        cls.volumes_client.wait_for_volume_status(cls.volume[\u0027id\u0027],"},{"line_number":36,"context_line":"                                                  \u0027available\u0027)"},{"line_number":37,"context_line":"        # Create a test shared snapshot for tests"},{"line_number":38,"context_line":"        snap_name \u003d data_utils.rand_name(cls.__name__ + \u0027-Snapshot-\u0027)"},{"line_number":39,"context_line":"        resp_snap, cls.snapshot \u003d \\"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAT3%2F%2F9rI%3D","line":36,"in_reply_to":"AAAAT3%2F%2F%2BPE%3D","updated":"2013-12-26 07:41:02.000000000","message":"Done.","commit_id":"bb6fd83df23059e7815b242e9ab3806970a5bc12"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"340ad45335d748e182a3f0724b8ca17f229e290d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                                       display_name\u003dsnap_name)"},{"line_number":42,"context_line":"        cls.snapshot_id \u003d cls.snapshot[\u0027id\u0027]"},{"line_number":43,"context_line":"        cls.client.wait_for_snapshot_status(cls.snapshot_id,"},{"line_number":44,"context_line":"                                            \u0027available\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @classmethod"},{"line_number":47,"context_line":"    def tearDownClass(cls):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAT3%2F%2F%2BPA%3D","line":44,"updated":"2013-12-26 00:35:28.000000000","message":"also line 37-44 can be merged to\n\n snapshot \u003d cls.create_snapshot()\n cls.snapshot_id \u003d snapshot[\u0027id\u0027]","commit_id":"bb6fd83df23059e7815b242e9ab3806970a5bc12"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"fdeafcfc2f45d1ba645ad1c7352b2be5965e2fc1","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                                       display_name\u003dsnap_name)"},{"line_number":42,"context_line":"        cls.snapshot_id \u003d cls.snapshot[\u0027id\u0027]"},{"line_number":43,"context_line":"        cls.client.wait_for_snapshot_status(cls.snapshot_id,"},{"line_number":44,"context_line":"                                            \u0027available\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @classmethod"},{"line_number":47,"context_line":"    def tearDownClass(cls):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAT3%2F%2F9rE%3D","line":44,"in_reply_to":"AAAAT3%2F%2F%2BPA%3D","updated":"2013-12-26 07:41:02.000000000","message":"Done.","commit_id":"bb6fd83df23059e7815b242e9ab3806970a5bc12"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"340ad45335d748e182a3f0724b8ca17f229e290d","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        cls.volumes_client.delete_volume(cls.volume[\u0027id\u0027])"},{"line_number":54,"context_line":"        cls.volumes_client.wait_for_resource_deletion(cls.volume[\u0027id\u0027])"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        super(SnapshotMetadataNegativeActionsTest, cls).tearDownClass()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def tearDown(self):"},{"line_number":59,"context_line":"        # Update the metadata to {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAT3%2F%2F%2BO4%3D","line":56,"updated":"2013-12-26 00:35:28.000000000","message":"we can remove line48-54 because tearDownClass() of tempest/api/volume/base.py deletes them.","commit_id":"bb6fd83df23059e7815b242e9ab3806970a5bc12"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"fdeafcfc2f45d1ba645ad1c7352b2be5965e2fc1","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        cls.volumes_client.delete_volume(cls.volume[\u0027id\u0027])"},{"line_number":54,"context_line":"        cls.volumes_client.wait_for_resource_deletion(cls.volume[\u0027id\u0027])"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        super(SnapshotMetadataNegativeActionsTest, cls).tearDownClass()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def tearDown(self):"},{"line_number":59,"context_line":"        # Update the metadata to {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAT3%2F%2F9q0%3D","line":56,"in_reply_to":"AAAAT3%2F%2F%2BO4%3D","updated":"2013-12-26 07:41:02.000000000","message":"Done.","commit_id":"bb6fd83df23059e7815b242e9ab3806970a5bc12"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7f1324b7fc280b190768dfa1ed3470dfddd67a58","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from tempest import test"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class SnapshotMetadataNegativeActionsTest(BaseVolumeTest):"},{"line_number":25,"context_line":"    _interface \u003d \"json\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAT3%2F%2F69A%3D","line":24,"updated":"2013-12-27 04:50:11.000000000","message":"Could you rename this to SnapshotMetadataNegativeTest?\nbecause this is not action tests and the other negative test class name is XXXNegativeTest.","commit_id":"2ecd6372bc96c259cc971b275ee29c825a3507d5"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7f1324b7fc280b190768dfa1ed3470dfddd67a58","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                          update_item)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"class SnapshotMetadataNegativeActionsTestXML("},{"line_number":136,"context_line":"    SnapshotMetadataNegativeActionsTest):"},{"line_number":137,"context_line":"    _interface \u003d \"xml\""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAT3%2F%2F688%3D","line":135,"updated":"2013-12-27 04:50:11.000000000","message":"ditto: SnapshotMetadataNegativeTestXML","commit_id":"2ecd6372bc96c259cc971b275ee29c825a3507d5"}],"tempest/services/volume/json/snapshots_client.py":[{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"db1ef04daaed5e4349ac1f4632e698b01e15f777","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        body \u003d json.loads(body)"},{"line_number":182,"context_line":"        return resp, body[\u0027meta\u0027]"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def delete_snapshot_metadata(self, snapshot_id, id):"},{"line_number":185,"context_line":"        \"\"\"Delete metadata item for the snapshot.\"\"\""},{"line_number":186,"context_line":"        url \u003d \"snapshots/%s/metadata/%s\" % (str(snapshot_id), str(id))"},{"line_number":187,"context_line":"        resp, body \u003d self.delete(url, self.headers)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F71I%3D","line":184,"updated":"2013-12-26 19:31:34.000000000","message":"I would name this as delete_snapshot_metadata_item just to be more consistent with update_snapshot_metadata_item and be clear that we\u0027re deleting an item","commit_id":"aa49ca5e11ae586c6d3068ad47495b68978e37f1"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a924e1a65ab98b1d391b741842b719122f150a57","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        body \u003d json.loads(body)"},{"line_number":182,"context_line":"        return resp, body[\u0027meta\u0027]"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def delete_snapshot_metadata(self, snapshot_id, id):"},{"line_number":185,"context_line":"        \"\"\"Delete metadata item for the snapshot.\"\"\""},{"line_number":186,"context_line":"        url \u003d \"snapshots/%s/metadata/%s\" % (str(snapshot_id), str(id))"},{"line_number":187,"context_line":"        resp, body \u003d self.delete(url, self.headers)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F7W4%3D","line":184,"in_reply_to":"AAAAT3%2F%2F71I%3D","updated":"2013-12-26 23:45:16.000000000","message":"agreed, nice idea.","commit_id":"aa49ca5e11ae586c6d3068ad47495b68978e37f1"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"b1bcfedd9961c9fc10fd4a366d60461fe49a0b2b","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        body \u003d json.loads(body)"},{"line_number":182,"context_line":"        return resp, body[\u0027meta\u0027]"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def delete_snapshot_metadata(self, snapshot_id, id):"},{"line_number":185,"context_line":"        \"\"\"Delete metadata item for the snapshot.\"\"\""},{"line_number":186,"context_line":"        url \u003d \"snapshots/%s/metadata/%s\" % (str(snapshot_id), str(id))"},{"line_number":187,"context_line":"        resp, body \u003d self.delete(url, self.headers)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F7P4%3D","line":184,"in_reply_to":"AAAAT3%2F%2F7W4%3D","updated":"2013-12-27 01:20:30.000000000","message":"Done.","commit_id":"aa49ca5e11ae586c6d3068ad47495b68978e37f1"}],"tempest/services/volume/xml/snapshots_client.py":[{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"db1ef04daaed5e4349ac1f4632e698b01e15f777","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        body \u003d xml_to_json(etree.fromstring(body))"},{"line_number":222,"context_line":"        return resp, body"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def delete_snapshot_metadata(self, snapshot_id, id):"},{"line_number":225,"context_line":"        \"\"\"Delete metadata item for the snapshot.\"\"\""},{"line_number":226,"context_line":"        url \u003d \"snapshots/%s/metadata/%s\" % (str(snapshot_id), str(id))"},{"line_number":227,"context_line":"        return self.delete(url)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F71A%3D","line":224,"updated":"2013-12-26 19:31:34.000000000","message":"same of json client","commit_id":"aa49ca5e11ae586c6d3068ad47495b68978e37f1"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"b1bcfedd9961c9fc10fd4a366d60461fe49a0b2b","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        body \u003d xml_to_json(etree.fromstring(body))"},{"line_number":222,"context_line":"        return resp, body"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def delete_snapshot_metadata(self, snapshot_id, id):"},{"line_number":225,"context_line":"        \"\"\"Delete metadata item for the snapshot.\"\"\""},{"line_number":226,"context_line":"        url \u003d \"snapshots/%s/metadata/%s\" % (str(snapshot_id), str(id))"},{"line_number":227,"context_line":"        return self.delete(url)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F7Po%3D","line":224,"in_reply_to":"AAAAT3%2F%2F71A%3D","updated":"2013-12-27 01:20:30.000000000","message":"Done.","commit_id":"aa49ca5e11ae586c6d3068ad47495b68978e37f1"}]}
