)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11079,"name":"TaoBai","email":"baitao5@huawei.com","username":"TaoBai"},"change_message_id":"0f5b23fec669c3449fc1aabb0ba33395cb14419c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Chao Zheng CZ Li \u003clichaoz@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-01-25 01:25:05 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add support for consistency group for XIV/DS8K driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I0850255a59997dbe44d9a7202ab5f947a3d91a3b"},{"line_number":10,"context_line":"Implements: blueprint consistency-groups"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a930d6b_612335a7","line":7,"updated":"2015-01-27 06:53:18.000000000","message":"not accurate, could be similiar like \" Add interface methods t o XIV/DS8K driver for consistency group support\"","commit_id":"bd301edd40e3789e93ecbd96317aea0567d660b9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ad4c25dd3293d2e09115b2b7f3407ab560132db5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add support and Unittest of consistency group for XIV/DS8K cinder driver proxy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I0850255a59997dbe44d9a7202ab5f947a3d91a3b"},{"line_number":10,"context_line":"Implements: blueprint consistency-groups-kilo-update"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da86d52c_d6d2255b","line":10,"updated":"2015-02-04 05:28:29.000000000","message":"Please register a new blueprint, i.e., ibm-xiv-consistency-group-support, and reference it here.  You should not reference the consistency-groups-kilo-update blueprint.","commit_id":"f711d537474ed4c96d14cfc9058c10747cc58674"}],"cinder/tests/test_ibm_xiv_ds8k.py":[{"author":{"_account_id":11079,"name":"TaoBai","email":"baitao5@huawei.com","username":"TaoBai"},"change_message_id":"350a4ce0a7b91ac719261e97c8522e96df351567","unresolved":false,"context_lines":[{"line_number":690,"context_line":"                         \u0027available\u0027,"},{"line_number":691,"context_line":"                         \u0027Consistency Group Snapshot created failed\u0027)"},{"line_number":692,"context_line":"        for snap in snapshots:"},{"line_number":693,"context_line":"            self.assertEqual(snap[\u0027status\u0027],"},{"line_number":694,"context_line":"                             \u0027available\u0027)"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        # clean the environment"}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_fd07811b","line":693,"updated":"2015-02-07 08:27:40.000000000","message":"Here could be within 1 line","commit_id":"e8c6351a0998017ac3b74ef39fa8599067f29353"},{"author":{"_account_id":14832,"name":"Chao Zheng Li","email":"lichaoz@cn.ibm.com","username":"ChaoZhengLi"},"change_message_id":"6c72367d8221bffd8f557192ff465c2a767c44b4","unresolved":false,"context_lines":[{"line_number":690,"context_line":"                         \u0027available\u0027,"},{"line_number":691,"context_line":"                         \u0027Consistency Group Snapshot created failed\u0027)"},{"line_number":692,"context_line":"        for snap in snapshots:"},{"line_number":693,"context_line":"            self.assertEqual(snap[\u0027status\u0027],"},{"line_number":694,"context_line":"                             \u0027available\u0027)"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        # clean the environment"}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_23d733c1","line":693,"in_reply_to":"da86d52c_fd07811b","updated":"2015-03-06 19:30:20.000000000","message":"Done","commit_id":"e8c6351a0998017ac3b74ef39fa8599067f29353"},{"author":{"_account_id":11079,"name":"TaoBai","email":"baitao5@huawei.com","username":"TaoBai"},"change_message_id":"350a4ce0a7b91ac719261e97c8522e96df351567","unresolved":false,"context_lines":[{"line_number":722,"context_line":"                         \u0027deleted\u0027,"},{"line_number":723,"context_line":"                         \u0027Consistency Group Snapshot deleted failed\u0027)"},{"line_number":724,"context_line":"        for snap in snapshots:"},{"line_number":725,"context_line":"            self.assertEqual(snap[\u0027status\u0027],"},{"line_number":726,"context_line":"                             \u0027deleted\u0027)"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        # clean the environment"}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_000f8a2f","line":725,"updated":"2015-02-07 08:27:40.000000000","message":"could within 1 line","commit_id":"e8c6351a0998017ac3b74ef39fa8599067f29353"},{"author":{"_account_id":14832,"name":"Chao Zheng Li","email":"lichaoz@cn.ibm.com","username":"ChaoZhengLi"},"change_message_id":"6c72367d8221bffd8f557192ff465c2a767c44b4","unresolved":false,"context_lines":[{"line_number":722,"context_line":"                         \u0027deleted\u0027,"},{"line_number":723,"context_line":"                         \u0027Consistency Group Snapshot deleted failed\u0027)"},{"line_number":724,"context_line":"        for snap in snapshots:"},{"line_number":725,"context_line":"            self.assertEqual(snap[\u0027status\u0027],"},{"line_number":726,"context_line":"                             \u0027deleted\u0027)"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        # clean the environment"}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_43e427ac","line":725,"in_reply_to":"da86d52c_000f8a2f","updated":"2015-03-06 19:30:20.000000000","message":"Done","commit_id":"e8c6351a0998017ac3b74ef39fa8599067f29353"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ac76e99f90f16fe351c991f00e6f878126a3c49c","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        volumes \u003d []"},{"line_number":188,"context_line":"        for volume in self.volumes.values():"},{"line_number":189,"context_line":"            if group.get(\u0027id\u0027, None) \\"},{"line_number":190,"context_line":"                    \u003d\u003d volume.get(\u0027consistencygroup_id\u0027, None):"},{"line_number":191,"context_line":"                volume[\u0027status\u0027] \u003d \u0027deleted\u0027"},{"line_number":192,"context_line":"                volumes.append(volume)"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_9662dfab","line":190,"updated":"2015-02-08 04:45:15.000000000","message":"Suggest use () rather than \\.  Same apply to other places.","commit_id":"29d205c11e7e56d29e247fc078050cb7c5d1c5ea"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ac76e99f90f16fe351c991f00e6f878126a3c49c","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                volume[\u0027status\u0027] \u003d \u0027deleted\u0027"},{"line_number":192,"context_line":"                volumes.append(volume)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # delete snapshots in consistency group"},{"line_number":195,"context_line":"        self.snapshots \u003d {k: snap for k, snap in self.snapshots.iteritems()"},{"line_number":196,"context_line":"                          if not(snap.get(\u0027consistencygroup_id\u0027, None)"},{"line_number":197,"context_line":"                                 \u003d\u003d group.get(\u0027id\u0027, None))}"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_b657e3c9","line":194,"updated":"2015-02-08 04:45:15.000000000","message":"Upper case first letter.  Same apply to all comments.","commit_id":"29d205c11e7e56d29e247fc078050cb7c5d1c5ea"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ac76e99f90f16fe351c991f00e6f878126a3c49c","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                snapshot[\u0027status\u0027] \u003d \u0027deleted\u0027"},{"line_number":228,"context_line":"                snapshots.append(snapshot)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        #delete snapshots in consistency group"},{"line_number":231,"context_line":"        self.snapshots \u003d {k: snap for k, snap in self.snapshots.iteritems()"},{"line_number":232,"context_line":"                          if not(snap.get(\u0027consistencygroup_id\u0027, None)"},{"line_number":233,"context_line":"                                 \u003d\u003d cgsnapshot.get(\u0027cgsnapshot_id\u0027, None))}"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_d65c57f0","line":230,"updated":"2015-02-08 04:45:15.000000000","message":"Space after #.  Upper first letter.","commit_id":"29d205c11e7e56d29e247fc078050cb7c5d1c5ea"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ac76e99f90f16fe351c991f00e6f878126a3c49c","unresolved":false,"context_lines":[{"line_number":629,"context_line":"        )"},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"    def test_create_consistencygroup(self):"},{"line_number":632,"context_line":"        \"\"\"Test that create_consistencygroup return successfully. \"\"\""},{"line_number":633,"context_line":""},{"line_number":634,"context_line":"        self.driver.do_setup(None)"},{"line_number":635,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_d613770b","line":632,"updated":"2015-02-08 04:45:15.000000000","message":"Remove space after period.  Same applies to other places.","commit_id":"29d205c11e7e56d29e247fc078050cb7c5d1c5ea"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ac76e99f90f16fe351c991f00e6f878126a3c49c","unresolved":false,"context_lines":[{"line_number":639,"context_line":"        model_update \u003d self.driver.create_consistencygroup(ctxt, CONSISTGROUP)"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        self.assertEqual(model_update[\u0027status\u0027],"},{"line_number":642,"context_line":"                         \u0027available\u0027,"},{"line_number":643,"context_line":"                         \"Consistency Group created failed\")"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"    def test_delete_consistencygroup(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_762bab33","line":642,"updated":"2015-02-08 04:45:15.000000000","message":"The order if the parameter should be expected, actual.  So \u0027available\u0027 should be the first parameter.  Please fix other places too.","commit_id":"29d205c11e7e56d29e247fc078050cb7c5d1c5ea"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ac76e99f90f16fe351c991f00e6f878126a3c49c","unresolved":false,"context_lines":[{"line_number":724,"context_line":"            self.assertEqual(snap[\u0027status\u0027], \u0027deleted\u0027)"},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"        # clean the environment"},{"line_number":727,"context_line":"        self.driver.delete_consistencygroup(ctxt, CONSISTGROUP)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_d6e1b7ff","line":727,"updated":"2015-02-08 04:45:15.000000000","message":"Your fake driver should also simulate failure cases so you can add some negative test cases.","commit_id":"29d205c11e7e56d29e247fc078050cb7c5d1c5ea"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"6513579c9220d93361ea7c4d9a7077aa1b3d857f","unresolved":false,"context_lines":[{"line_number":663,"context_line":"        self.assertEqual(\u0027deleted\u0027,"},{"line_number":664,"context_line":"                         model_update[\u0027status\u0027],"},{"line_number":665,"context_line":"                         \u0027Consistency Group deleted failed\u0027)"},{"line_number":666,"context_line":"        for volume in volumes:"},{"line_number":667,"context_line":"            self.assertEqual(\u0027deleted\u0027,"},{"line_number":668,"context_line":"                             volume[\u0027status\u0027],"},{"line_number":669,"context_line":"                             \u0027Consistency Group deleted failed\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_f975d8fa","line":666,"updated":"2015-02-27 01:45:16.000000000","message":"Maybe a dumb question and I\u0027m totally missing something here, isn\u0027t this code just testing the test code/fake driver from up above in this file? Couldn\u0027t these unit test just assert that the proxy was called with the right params and return value and thats it? (ie validating behavior of the driver code and not test code)","commit_id":"138f490fe198a782cc9b5f2236f52583938be09a"},{"author":{"_account_id":14832,"name":"Chao Zheng Li","email":"lichaoz@cn.ibm.com","username":"ChaoZhengLi"},"change_message_id":"c9f55b9c38ef6a03797de71dc9397b47a7f3650c","unresolved":false,"context_lines":[{"line_number":663,"context_line":"        self.assertEqual(\u0027deleted\u0027,"},{"line_number":664,"context_line":"                         model_update[\u0027status\u0027],"},{"line_number":665,"context_line":"                         \u0027Consistency Group deleted failed\u0027)"},{"line_number":666,"context_line":"        for volume in volumes:"},{"line_number":667,"context_line":"            self.assertEqual(\u0027deleted\u0027,"},{"line_number":668,"context_line":"                             volume[\u0027status\u0027],"},{"line_number":669,"context_line":"                             \u0027Consistency Group deleted failed\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_a85d4049","line":666,"in_reply_to":"ba7be1f8_f975d8fa","updated":"2015-03-06 19:29:08.000000000","message":"Hi Patrick,\n\nThank you for comment.\n1. Yes, this code is just testing the proxy layer of driver.\n2. However, because we are using TDD. So the test cases are also the behaviors which we expect the functions do.\n3. To run the testcases without the real driver code, we have to implement a fake driver here.","commit_id":"138f490fe198a782cc9b5f2236f52583938be09a"}]}
