)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"c80f9ad95b51e0680e1460fa3222acd6c8461967","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add gmcv support in SVC driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"SVC Global Mirror with Change Volumes(gmcv) provides asynchronous replication based on point-in-time copies of data. Add two"},{"line_number":10,"context_line":"properties: replication_type\u003d\"\u003cin\u003e gmcv\" and drivers:cycleperiodseconds\u003d500 in volume type to support replication volume with"},{"line_number":11,"context_line":"gmcv. Here is an example to define an gmcv replication type: openstack volume type set --property replication_type\u003d\"\u003cin\u003e gmcv\""},{"line_number":12,"context_line":"--property replication_enabled\u003d\u0027\u003cis\u003e True\u0027 --property drivers:cycleperiodseconds\u003d500 --property volume_backend_name\u003dsvc75"},{"line_number":13,"context_line":"SVCGMCVReplicationType"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I525f82dccf88bc085825523d7e899143e2190a96"},{"line_number":16,"context_line":"Implements: blueprint gmcv-support-in-svc-driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1f013ff3_f35f260c","line":13,"range":{"start_line":9,"start_character":0,"end_line":13,"end_character":22},"updated":"2017-05-15 09:17:29.000000000","message":"The commit message lines should be wrapped to no more than 72 characters.","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"925434e16ceb6eb584a569462910b300a89d7c9f","unresolved":false,"context_lines":[{"line_number":16,"context_line":"--property replication_enabled\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":17,"context_line":"--property drivers:cycle_period_seconds\u003d500"},{"line_number":18,"context_line":"--property volume_backend_name\u003dsvc75 SVCGMCVReplicationType"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I525f82dccf88bc085825523d7e899143e2190a96"},{"line_number":21,"context_line":"Implements: blueprint gmcv-support-in-svc-driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5f201791_e45af180","line":19,"updated":"2017-06-27 23:03:01.000000000","message":"This needs a DocImpact tag and it would probably be good to add the example into the release note as well.","commit_id":"27be2ba93320e17c3526d16b268777b6217f979f"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"b582ddb9ce27435ab0bf8080c5e2623e310ee935","unresolved":false,"context_lines":[{"line_number":16,"context_line":"--property replication_enabled\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":17,"context_line":"--property drivers:cycle_period_seconds\u003d500"},{"line_number":18,"context_line":"--property volume_backend_name\u003dsvc75 SVCGMCVReplicationType"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I525f82dccf88bc085825523d7e899143e2190a96"},{"line_number":21,"context_line":"Implements: blueprint gmcv-support-in-svc-driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5f201791_934141ac","line":19,"in_reply_to":"5f201791_e45af180","updated":"2017-06-28 03:03:10.000000000","message":"Add DocImpact tag and update release note. Thank you, Jay.","commit_id":"27be2ba93320e17c3526d16b268777b6217f979f"}],"cinder/tests/unit/volume/drivers/ibm/test_storwize_svc.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":6296,"context_line":"        # Create global mirror with change volumes replication."},{"line_number":6297,"context_line":"        volume, model_update \u003d self._create_test_volume("},{"line_number":6298,"context_line":"            self.gmcv_default_type)"},{"line_number":6299,"context_line":"        self.assertEqual(\u0027enabled\u0027, model_update[\u0027replication_status\u0027])"},{"line_number":6300,"context_line":"        self._validate_replic_vol_creation(volume, True)"},{"line_number":6301,"context_line":"        self.driver.delete_volume(volume)"},{"line_number":6302,"context_line":"        self._validate_replic_vol_deletion(volume, True)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_3d20de9a","line":6299,"range":{"start_line":6299,"start_character":25,"end_line":6299,"end_character":34},"updated":"2017-06-19 15:00:46.000000000","message":"Please  use ReplicationStatus in cinder/objects/fields.py","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":6296,"context_line":"        # Create global mirror with change volumes replication."},{"line_number":6297,"context_line":"        volume, model_update \u003d self._create_test_volume("},{"line_number":6298,"context_line":"            self.gmcv_default_type)"},{"line_number":6299,"context_line":"        self.assertEqual(\u0027enabled\u0027, model_update[\u0027replication_status\u0027])"},{"line_number":6300,"context_line":"        self._validate_replic_vol_creation(volume, True)"},{"line_number":6301,"context_line":"        self.driver.delete_volume(volume)"},{"line_number":6302,"context_line":"        self._validate_replic_vol_deletion(volume, True)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_6cdc4874","line":6299,"range":{"start_line":6299,"start_character":25,"end_line":6299,"end_character":34},"in_reply_to":"7f231b9d_3d20de9a","updated":"2017-06-21 05:41:28.000000000","message":"Change all hard coded replication status to use ReplicationStatus in cinder/objects/fields.py in new patch. Thank you, Xing.","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":6333,"context_line":"            self.assertEqual(storwize_const.GMCV_MULTI, cycling_mode)"},{"line_number":6334,"context_line":"            self.assertEqual(storwize_const.GLOBAL, vol_rep_type)"},{"line_number":6335,"context_line":"            self.assertEqual(storwize_const.GMCV, rep_type)"},{"line_number":6336,"context_line":"            self.assertEqual(rel_info[\u0027primary\u0027], \u0027master\u0027)"},{"line_number":6337,"context_line":"            self.assertEqual(rel_info[\u0027master_vdisk_name\u0027], volume[\u0027name\u0027])"},{"line_number":6338,"context_line":"            self.assertEqual("},{"line_number":6339,"context_line":"                rel_info[\u0027aux_vdisk_name\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_5d527a14","line":6336,"range":{"start_line":6336,"start_character":29,"end_line":6336,"end_character":58},"updated":"2017-06-19 15:00:46.000000000","message":"(\u0027master\u0027, rel_info[\u0027primary\u0027])","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":6333,"context_line":"            self.assertEqual(storwize_const.GMCV_MULTI, cycling_mode)"},{"line_number":6334,"context_line":"            self.assertEqual(storwize_const.GLOBAL, vol_rep_type)"},{"line_number":6335,"context_line":"            self.assertEqual(storwize_const.GMCV, rep_type)"},{"line_number":6336,"context_line":"            self.assertEqual(rel_info[\u0027primary\u0027], \u0027master\u0027)"},{"line_number":6337,"context_line":"            self.assertEqual(rel_info[\u0027master_vdisk_name\u0027], volume[\u0027name\u0027])"},{"line_number":6338,"context_line":"            self.assertEqual("},{"line_number":6339,"context_line":"                rel_info[\u0027aux_vdisk_name\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_2ce65046","line":6336,"range":{"start_line":6336,"start_character":29,"end_line":6336,"end_character":58},"in_reply_to":"7f231b9d_5d527a14","updated":"2017-06-21 05:41:28.000000000","message":"Done","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":6338,"context_line":"            self.assertEqual("},{"line_number":6339,"context_line":"                rel_info[\u0027aux_vdisk_name\u0027],"},{"line_number":6340,"context_line":"                storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027])"},{"line_number":6341,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027inconsistent_copying\u0027)"},{"line_number":6342,"context_line":"            self.assertEqual("},{"line_number":6343,"context_line":"                rel_info[\u0027master_change_vdisk_name\u0027],"},{"line_number":6344,"context_line":"                storwize_const.REPLICA_CHG_VOL_PREFIX + volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_fd42663d","line":6341,"updated":"2017-06-19 15:00:46.000000000","message":"Reversed","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":6338,"context_line":"            self.assertEqual("},{"line_number":6339,"context_line":"                rel_info[\u0027aux_vdisk_name\u0027],"},{"line_number":6340,"context_line":"                storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027])"},{"line_number":6341,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027inconsistent_copying\u0027)"},{"line_number":6342,"context_line":"            self.assertEqual("},{"line_number":6343,"context_line":"                rel_info[\u0027master_change_vdisk_name\u0027],"},{"line_number":6344,"context_line":"                storwize_const.REPLICA_CHG_VOL_PREFIX + volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_ecd17859","line":6341,"in_reply_to":"7f231b9d_fd42663d","updated":"2017-06-21 05:41:28.000000000","message":"Done","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":6346,"context_line":"                rel_info[\u0027aux_change_vdisk_name\u0027],"},{"line_number":6347,"context_line":"                storwize_const.REPLICA_CHG_VOL_PREFIX +"},{"line_number":6348,"context_line":"                storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027])"},{"line_number":6349,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027inconsistent_copying\u0027)"},{"line_number":6350,"context_line":"            self.sim._rc_state_transition(\u0027wait\u0027, rel_info)"},{"line_number":6351,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027consistent_copying\u0027)"},{"line_number":6352,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_bd486e5b","line":6349,"updated":"2017-06-19 15:00:46.000000000","message":"Same","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":6346,"context_line":"                rel_info[\u0027aux_change_vdisk_name\u0027],"},{"line_number":6347,"context_line":"                storwize_const.REPLICA_CHG_VOL_PREFIX +"},{"line_number":6348,"context_line":"                storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027])"},{"line_number":6349,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027inconsistent_copying\u0027)"},{"line_number":6350,"context_line":"            self.sim._rc_state_transition(\u0027wait\u0027, rel_info)"},{"line_number":6351,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027consistent_copying\u0027)"},{"line_number":6352,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_accb80a3","line":6349,"in_reply_to":"7f231b9d_bd486e5b","updated":"2017-06-21 05:41:28.000000000","message":"Done","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":6348,"context_line":"                storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027])"},{"line_number":6349,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027inconsistent_copying\u0027)"},{"line_number":6350,"context_line":"            self.sim._rc_state_transition(\u0027wait\u0027, rel_info)"},{"line_number":6351,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027consistent_copying\u0027)"},{"line_number":6352,"context_line":"        else:"},{"line_number":6353,"context_line":"            vol_rep_type \u003d rel_info[\u0027copy_type\u0027]"},{"line_number":6354,"context_line":"            rep_type \u003d self.driver._get_volume_replicated_type("}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_3d6e9ec8","line":6351,"updated":"2017-06-19 15:00:46.000000000","message":"Same","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":6348,"context_line":"                storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027])"},{"line_number":6349,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027inconsistent_copying\u0027)"},{"line_number":6350,"context_line":"            self.sim._rc_state_transition(\u0027wait\u0027, rel_info)"},{"line_number":6351,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027consistent_copying\u0027)"},{"line_number":6352,"context_line":"        else:"},{"line_number":6353,"context_line":"            vol_rep_type \u003d rel_info[\u0027copy_type\u0027]"},{"line_number":6354,"context_line":"            rep_type \u003d self.driver._get_volume_replicated_type("}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_8cd0c452","line":6351,"in_reply_to":"7f231b9d_3d6e9ec8","updated":"2017-06-21 05:41:28.000000000","message":"Done","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":6355,"context_line":"                self.ctxt, volume)"},{"line_number":6356,"context_line":"            self.assertEqual(vol_rep_type, rep_type)"},{"line_number":6357,"context_line":""},{"line_number":6358,"context_line":"            self.assertEqual(rel_info[\u0027primary\u0027], \u0027master\u0027)"},{"line_number":6359,"context_line":"            self.assertEqual(rel_info[\u0027master_vdisk_name\u0027], volume[\u0027name\u0027])"},{"line_number":6360,"context_line":"            self.assertEqual("},{"line_number":6361,"context_line":"                rel_info[\u0027aux_vdisk_name\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_9d8a5261","line":6358,"updated":"2017-06-19 15:00:46.000000000","message":"Same","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":6355,"context_line":"                self.ctxt, volume)"},{"line_number":6356,"context_line":"            self.assertEqual(vol_rep_type, rep_type)"},{"line_number":6357,"context_line":""},{"line_number":6358,"context_line":"            self.assertEqual(rel_info[\u0027primary\u0027], \u0027master\u0027)"},{"line_number":6359,"context_line":"            self.assertEqual(rel_info[\u0027master_vdisk_name\u0027], volume[\u0027name\u0027])"},{"line_number":6360,"context_line":"            self.assertEqual("},{"line_number":6361,"context_line":"                rel_info[\u0027aux_vdisk_name\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_6cc5688e","line":6358,"in_reply_to":"7f231b9d_9d8a5261","updated":"2017-06-21 05:41:28.000000000","message":"Done","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":6360,"context_line":"            self.assertEqual("},{"line_number":6361,"context_line":"                rel_info[\u0027aux_vdisk_name\u0027],"},{"line_number":6362,"context_line":"                storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027])"},{"line_number":6363,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027inconsistent_copying\u0027)"},{"line_number":6364,"context_line":""},{"line_number":6365,"context_line":"            self.sim._rc_state_transition(\u0027wait\u0027, rel_info)"},{"line_number":6366,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027consistent_synchronized\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_7dd41648","line":6363,"updated":"2017-06-19 15:00:46.000000000","message":"same","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":6360,"context_line":"            self.assertEqual("},{"line_number":6361,"context_line":"                rel_info[\u0027aux_vdisk_name\u0027],"},{"line_number":6362,"context_line":"                storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027])"},{"line_number":6363,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027inconsistent_copying\u0027)"},{"line_number":6364,"context_line":""},{"line_number":6365,"context_line":"            self.sim._rc_state_transition(\u0027wait\u0027, rel_info)"},{"line_number":6366,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027consistent_synchronized\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_4cc2ac87","line":6363,"in_reply_to":"7f231b9d_7dd41648","updated":"2017-06-21 05:41:28.000000000","message":"Done","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":6363,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027inconsistent_copying\u0027)"},{"line_number":6364,"context_line":""},{"line_number":6365,"context_line":"            self.sim._rc_state_transition(\u0027wait\u0027, rel_info)"},{"line_number":6366,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027consistent_synchronized\u0027)"},{"line_number":6367,"context_line":""},{"line_number":6368,"context_line":"    def _validate_gmcv_vol_retype(self, volume):"},{"line_number":6369,"context_line":"        self._assert_vol_exists(volume[\u0027name\u0027], True)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_5dd71a4c","line":6366,"updated":"2017-06-19 15:00:46.000000000","message":"same","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":6363,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027inconsistent_copying\u0027)"},{"line_number":6364,"context_line":""},{"line_number":6365,"context_line":"            self.sim._rc_state_transition(\u0027wait\u0027, rel_info)"},{"line_number":6366,"context_line":"            self.assertEqual(rel_info[\u0027state\u0027], \u0027consistent_synchronized\u0027)"},{"line_number":6367,"context_line":""},{"line_number":6368,"context_line":"    def _validate_gmcv_vol_retype(self, volume):"},{"line_number":6369,"context_line":"        self._assert_vol_exists(volume[\u0027name\u0027], True)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_2cbf70fc","line":6366,"in_reply_to":"7f231b9d_5dd71a4c","updated":"2017-06-21 05:41:28.000000000","message":"Done, thank you.","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"2d52a98eeae81374fc61b5898788ea236a09822d","unresolved":false,"context_lines":[{"line_number":2107,"context_line":"            return (\u0027\u0027, \u0027\u0027)"},{"line_number":2108,"context_line":"        elif cycleperiodseconds:"},{"line_number":2109,"context_line":"            rcrel[\u0027cycle_period_seconds\u0027] \u003d cycleperiodseconds"},{"line_number":2110,"context_line":"        return (\u0027\u0027, \u0027\u0027)"},{"line_number":2111,"context_line":""},{"line_number":2112,"context_line":"    def _rc_state_transition(self, function, rcrel):"},{"line_number":2113,"context_line":"        if (function \u003d\u003d \u0027wait\u0027 and"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f201791_565fd740","line":2110,"range":{"start_line":2110,"start_character":8,"end_line":2110,"end_character":23},"updated":"2017-06-21 09:54:09.000000000","message":"what do local variables nonull_num and rcrel do here? return value doesn\u0027t need them, so how they can be used and verified by test cases?","commit_id":"1d763bdb1e4725aba8df49ee70ea57c395f74602"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"04ddef2befdb3f536d97c3ad30b08ef867ee0fd5","unresolved":false,"context_lines":[{"line_number":2107,"context_line":"            return (\u0027\u0027, \u0027\u0027)"},{"line_number":2108,"context_line":"        elif cycleperiodseconds:"},{"line_number":2109,"context_line":"            rcrel[\u0027cycle_period_seconds\u0027] \u003d cycleperiodseconds"},{"line_number":2110,"context_line":"        return (\u0027\u0027, \u0027\u0027)"},{"line_number":2111,"context_line":""},{"line_number":2112,"context_line":"    def _rc_state_transition(self, function, rcrel):"},{"line_number":2113,"context_line":"        if (function \u003d\u003d \u0027wait\u0027 and"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f201791_66ffa5aa","line":2110,"range":{"start_line":2110,"start_character":8,"end_line":2110,"end_character":23},"in_reply_to":"5f201791_565fd740","updated":"2017-06-22 05:57:30.000000000","message":"chrcrelationship can only change one attribute at a time, nonull_num is used for this check. rcrel comes from self._rcrelationship_list, it is used to verify chrcrelationship results through _cmd_lsrcrelationship. Thanks.","commit_id":"1d763bdb1e4725aba8df49ee70ea57c395f74602"}],"cinder/volume/drivers/ibm/storwize_svc/replication.py":[{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"a83ee98924c5f26252878c9686a46af83b5b80e6","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        self.target \u003d replication_target"},{"line_number":291,"context_line":"        self.target_helpers \u003d target_helpers(self._run_ssh)"},{"line_number":292,"context_line":"        self._master_helpers \u003d self.driver._master_backend_helpers"},{"line_number":293,"context_line":"        self.global_m \u003d StorwizeSVCReplicationGlobalMirror("},{"line_number":294,"context_line":"            self.driver, replication_target, self.target_helpers)"},{"line_number":295,"context_line":"        self.metro_m \u003d StorwizeSVCReplicationMetroMirror("},{"line_number":296,"context_line":"            self.driver, replication_target, self.target_helpers)"},{"line_number":297,"context_line":"        self.gmcv \u003d StorwizeSVCReplicationGMCV("},{"line_number":298,"context_line":"            self.driver, replication_target, self.target_helpers)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def _run_ssh(self, cmd_list, check_exit_code\u003dTrue, attempts\u003d1):"},{"line_number":301,"context_line":"        utils.check_ssh_injection(cmd_list)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_114ea56e","line":298,"range":{"start_line":293,"start_character":8,"end_line":298,"end_character":65},"updated":"2017-05-09 14:19:19.000000000","message":"Does all replication objects need to be instantiated?","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"e1d66eec0fd87b836b875ab7a7787dc059d05a73","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        self.target \u003d replication_target"},{"line_number":291,"context_line":"        self.target_helpers \u003d target_helpers(self._run_ssh)"},{"line_number":292,"context_line":"        self._master_helpers \u003d self.driver._master_backend_helpers"},{"line_number":293,"context_line":"        self.global_m \u003d StorwizeSVCReplicationGlobalMirror("},{"line_number":294,"context_line":"            self.driver, replication_target, self.target_helpers)"},{"line_number":295,"context_line":"        self.metro_m \u003d StorwizeSVCReplicationMetroMirror("},{"line_number":296,"context_line":"            self.driver, replication_target, self.target_helpers)"},{"line_number":297,"context_line":"        self.gmcv \u003d StorwizeSVCReplicationGMCV("},{"line_number":298,"context_line":"            self.driver, replication_target, self.target_helpers)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def _run_ssh(self, cmd_list, check_exit_code\u003dTrue, attempts\u003d1):"},{"line_number":301,"context_line":"        utils.check_ssh_injection(cmd_list)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_1d18fa72","line":298,"range":{"start_line":293,"start_character":8,"end_line":298,"end_character":65},"in_reply_to":"3f044301_114ea56e","updated":"2017-05-22 09:50:31.000000000","message":"Client can setup all replication types. We may consider lazy property in a separate bug. thanks.","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":252,"context_line":"            self.target_helpers.stop_relationship("},{"line_number":253,"context_line":"                storwize_const.REPLICA_AUX_VOL_PREFIX + vref[\u0027name\u0027],"},{"line_number":254,"context_line":"                access\u003dTrue)"},{"line_number":255,"context_line":"            return {\u0027replication_status\u0027: \u0027failed-over\u0027}"},{"line_number":256,"context_line":"        except Exception as e:"},{"line_number":257,"context_line":"            msg \u003d (_(\u0027Unable to fail-over the volume %(id)s to the \u0027"},{"line_number":258,"context_line":"                   \u0027secondary back-end, error: %(error)s\u0027) %"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_ea73bae5","line":255,"range":{"start_line":255,"start_character":43,"end_line":255,"end_character":54},"updated":"2017-06-19 15:00:46.000000000","message":"Please use ReplicationStatus in cinder/objects/fields.py","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":252,"context_line":"            self.target_helpers.stop_relationship("},{"line_number":253,"context_line":"                storwize_const.REPLICA_AUX_VOL_PREFIX + vref[\u0027name\u0027],"},{"line_number":254,"context_line":"                access\u003dTrue)"},{"line_number":255,"context_line":"            return {\u0027replication_status\u0027: \u0027failed-over\u0027}"},{"line_number":256,"context_line":"        except Exception as e:"},{"line_number":257,"context_line":"            msg \u003d (_(\u0027Unable to fail-over the volume %(id)s to the \u0027"},{"line_number":258,"context_line":"                   \u0027secondary back-end, error: %(error)s\u0027) %"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_6c4a0828","line":255,"range":{"start_line":255,"start_character":43,"end_line":255,"end_character":54},"in_reply_to":"7f231b9d_ea73bae5","updated":"2017-06-21 05:41:28.000000000","message":"Done","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        except Exception as e:"},{"line_number":257,"context_line":"            msg \u003d (_(\u0027Unable to fail-over the volume %(id)s to the \u0027"},{"line_number":258,"context_line":"                   \u0027secondary back-end, error: %(error)s\u0027) %"},{"line_number":259,"context_line":"                   {\"id\": vref[\u0027id\u0027], \"error\": e})"},{"line_number":260,"context_line":"            LOG.exception(msg)"},{"line_number":261,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_0a2716cc","line":259,"range":{"start_line":259,"start_character":47,"end_line":259,"end_character":48},"updated":"2017-06-19 15:00:46.000000000","message":"This should be wrapped in six.text_type","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        except Exception as e:"},{"line_number":257,"context_line":"            msg \u003d (_(\u0027Unable to fail-over the volume %(id)s to the \u0027"},{"line_number":258,"context_line":"                   \u0027secondary back-end, error: %(error)s\u0027) %"},{"line_number":259,"context_line":"                   {\"id\": vref[\u0027id\u0027], \"error\": e})"},{"line_number":260,"context_line":"            LOG.exception(msg)"},{"line_number":261,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_4c474c1f","line":259,"range":{"start_line":259,"start_character":47,"end_line":259,"end_character":48},"in_reply_to":"7f231b9d_0a2716cc","updated":"2017-06-21 05:41:28.000000000","message":"Done","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":269,"context_line":"            try:"},{"line_number":270,"context_line":"                self.target_helpers.stop_relationship(tgt_volume, access\u003dTrue)"},{"line_number":271,"context_line":"                self.target_helpers.start_relationship(tgt_volume, \u0027master\u0027)"},{"line_number":272,"context_line":"                return {\u0027replication_status\u0027: \u0027enabled\u0027,"},{"line_number":273,"context_line":"                        \u0027status\u0027: \u0027available\u0027}"},{"line_number":274,"context_line":"            except Exception as e:"},{"line_number":275,"context_line":"                msg \u003d (_(\u0027Unable to fail-back the volume:%(vol)s to the \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_ea5cda4b","line":272,"range":{"start_line":272,"start_character":47,"end_line":272,"end_character":54},"updated":"2017-06-19 15:00:46.000000000","message":"Same","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":269,"context_line":"            try:"},{"line_number":270,"context_line":"                self.target_helpers.stop_relationship(tgt_volume, access\u003dTrue)"},{"line_number":271,"context_line":"                self.target_helpers.start_relationship(tgt_volume, \u0027master\u0027)"},{"line_number":272,"context_line":"                return {\u0027replication_status\u0027: \u0027enabled\u0027,"},{"line_number":273,"context_line":"                        \u0027status\u0027: \u0027available\u0027}"},{"line_number":274,"context_line":"            except Exception as e:"},{"line_number":275,"context_line":"                msg \u003d (_(\u0027Unable to fail-back the volume:%(vol)s to the \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_0c5154d9","line":272,"range":{"start_line":272,"start_character":47,"end_line":272,"end_character":54},"in_reply_to":"7f231b9d_ea5cda4b","updated":"2017-06-21 05:41:28.000000000","message":"Done","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            except Exception as e:"},{"line_number":275,"context_line":"                msg \u003d (_(\u0027Unable to fail-back the volume:%(vol)s to the \u0027"},{"line_number":276,"context_line":"                         \u0027master back-end, error:%(error)s\u0027) %"},{"line_number":277,"context_line":"                       {\"vol\": volume[\u0027name\u0027], \"error\": e})"},{"line_number":278,"context_line":"                LOG.exception(msg)"},{"line_number":279,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_6a1faa6b","line":277,"range":{"start_line":277,"start_character":56,"end_line":277,"end_character":58},"updated":"2017-06-19 15:00:46.000000000","message":"This should be wrapped in six.text_type","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            except Exception as e:"},{"line_number":275,"context_line":"                msg \u003d (_(\u0027Unable to fail-back the volume:%(vol)s to the \u0027"},{"line_number":276,"context_line":"                         \u0027master back-end, error:%(error)s\u0027) %"},{"line_number":277,"context_line":"                       {\"vol\": volume[\u0027name\u0027], \"error\": e})"},{"line_number":278,"context_line":"                LOG.exception(msg)"},{"line_number":279,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_ac5940ff","line":277,"range":{"start_line":277,"start_character":56,"end_line":277,"end_character":58},"in_reply_to":"7f231b9d_6a1faa6b","updated":"2017-06-21 05:41:28.000000000","message":"Done","commit_id":"952b9c58fba103955eed79796e101fd11485f269"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_common.py":[{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"a83ee98924c5f26252878c9686a46af83b5b80e6","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        ssh_cmd.append(rc_rel)"},{"line_number":322,"context_line":"        self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    def chrcrelationshipcycleperiod(self, relationship, cycleperiodseconds):"},{"line_number":325,"context_line":"        # Note: Can only change one attribute at a time,"},{"line_number":326,"context_line":"        # so define two chrcrelationshipxxx here"},{"line_number":327,"context_line":"        if cycleperiodseconds:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_7fadb52f","line":324,"range":{"start_line":324,"start_character":8,"end_line":324,"end_character":35},"updated":"2017-05-09 14:19:19.000000000","message":"use \"_\" for function naming.(see: https://www.python.org/dev/peps/pep-0008/#descriptive-naming-styles)\nThis will make it understandable","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"e1d66eec0fd87b836b875ab7a7787dc059d05a73","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        ssh_cmd.append(rc_rel)"},{"line_number":322,"context_line":"        self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    def chrcrelationshipcycleperiod(self, relationship, cycleperiodseconds):"},{"line_number":325,"context_line":"        # Note: Can only change one attribute at a time,"},{"line_number":326,"context_line":"        # so define two chrcrelationshipxxx here"},{"line_number":327,"context_line":"        if cycleperiodseconds:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_a7b9fbe9","line":324,"range":{"start_line":324,"start_character":8,"end_line":324,"end_character":35},"in_reply_to":"3f044301_7fadb52f","updated":"2017-05-22 09:50:31.000000000","message":"Done, thanks.","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"a83ee98924c5f26252878c9686a46af83b5b80e6","unresolved":false,"context_lines":[{"line_number":330,"context_line":"            ssh_cmd.append(relationship)"},{"line_number":331,"context_line":"            self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    def chrcrelationshipchangevolume(self, relationship, changevolume, master):"},{"line_number":334,"context_line":"        # Note: Can only change one attribute at a time,"},{"line_number":335,"context_line":"        # so define two chrcrelationshipxxx here"},{"line_number":336,"context_line":"        if changevolume:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_3fa72d52","line":333,"range":{"start_line":333,"start_character":8,"end_line":333,"end_character":36},"updated":"2017-05-09 14:19:19.000000000","message":"ditto","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"e1d66eec0fd87b836b875ab7a7787dc059d05a73","unresolved":false,"context_lines":[{"line_number":330,"context_line":"            ssh_cmd.append(relationship)"},{"line_number":331,"context_line":"            self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    def chrcrelationshipchangevolume(self, relationship, changevolume, master):"},{"line_number":334,"context_line":"        # Note: Can only change one attribute at a time,"},{"line_number":335,"context_line":"        # so define two chrcrelationshipxxx here"},{"line_number":336,"context_line":"        if changevolume:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_27c5eb5b","line":333,"range":{"start_line":333,"start_character":8,"end_line":333,"end_character":36},"in_reply_to":"3f044301_3fa72d52","updated":"2017-05-22 09:50:31.000000000","message":"Done, thanks.","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"c80f9ad95b51e0680e1460fa3222acd6c8461967","unresolved":false,"context_lines":[{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"            # Any keys that the driver should look at should have the"},{"line_number":1143,"context_line":"            # \u0027drivers\u0027 scope."},{"line_number":1144,"context_line":"            if (scope and scope \u003d\u003d \u0027drivers\u0027) and key \u003d\u003d \u0027cycleperiodseconds\u0027:"},{"line_number":1145,"context_line":"                opts[key] \u003d value"},{"line_number":1146,"context_line":"            elif scope and scope !\u003d \u0027drivers\u0027:"},{"line_number":1147,"context_line":"                continue"},{"line_number":1148,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_81e9ac81","line":1145,"range":{"start_line":1144,"start_character":0,"end_line":1145,"end_character":33},"updated":"2017-05-15 09:17:29.000000000","message":"Add this config in cfg. so this config can get a default value and these two lines are not needed here.","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"e1d66eec0fd87b836b875ab7a7787dc059d05a73","unresolved":false,"context_lines":[{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"            # Any keys that the driver should look at should have the"},{"line_number":1143,"context_line":"            # \u0027drivers\u0027 scope."},{"line_number":1144,"context_line":"            if (scope and scope \u003d\u003d \u0027drivers\u0027) and key \u003d\u003d \u0027cycleperiodseconds\u0027:"},{"line_number":1145,"context_line":"                opts[key] \u003d value"},{"line_number":1146,"context_line":"            elif scope and scope !\u003d \u0027drivers\u0027:"},{"line_number":1147,"context_line":"                continue"},{"line_number":1148,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_e7a493bb","line":1145,"range":{"start_line":1144,"start_character":0,"end_line":1145,"end_character":33},"in_reply_to":"1f013ff3_81e9ac81","updated":"2017-05-22 09:50:31.000000000","message":"Done, thanks.","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"c80f9ad95b51e0680e1460fa3222acd6c8461967","unresolved":false,"context_lines":[{"line_number":1660,"context_line":"            self.ssh.stoprcrelationship(vol_attrs[\u0027RC_name\u0027], access\u003daccess)"},{"line_number":1661,"context_line":""},{"line_number":1662,"context_line":"    def create_relationship(self, master, aux, system, asyncmirror,"},{"line_number":1663,"context_line":"                            cyclingmode\u003dNone, masterchange\u003dNone,"},{"line_number":1664,"context_line":"                            cycleperiodseconds\u003dNone):"},{"line_number":1665,"context_line":"        try:"},{"line_number":1666,"context_line":"            rc_id \u003d self.ssh.mkrcrelationship(master, aux, system,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_96f7abf6","line":1663,"range":{"start_line":1663,"start_character":28,"end_line":1663,"end_character":45},"updated":"2017-05-15 09:17:29.000000000","message":"The default value should be False? I see the value given to it sometime is True.","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"e1d66eec0fd87b836b875ab7a7787dc059d05a73","unresolved":false,"context_lines":[{"line_number":1660,"context_line":"            self.ssh.stoprcrelationship(vol_attrs[\u0027RC_name\u0027], access\u003daccess)"},{"line_number":1661,"context_line":""},{"line_number":1662,"context_line":"    def create_relationship(self, master, aux, system, asyncmirror,"},{"line_number":1663,"context_line":"                            cyclingmode\u003dNone, masterchange\u003dNone,"},{"line_number":1664,"context_line":"                            cycleperiodseconds\u003dNone):"},{"line_number":1665,"context_line":"        try:"},{"line_number":1666,"context_line":"            rc_id \u003d self.ssh.mkrcrelationship(master, aux, system,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_6790834f","line":1663,"range":{"start_line":1663,"start_character":28,"end_line":1663,"end_character":45},"in_reply_to":"1f013ff3_96f7abf6","updated":"2017-05-22 09:50:31.000000000","message":"Done, thanks.","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"c80f9ad95b51e0680e1460fa3222acd6c8461967","unresolved":false,"context_lines":[{"line_number":2466,"context_line":""},{"line_number":2467,"context_line":"        rep_type \u003d self._get_volume_replicated_type("},{"line_number":2468,"context_line":"            ctxt, None, source_vol[\u0027volume_type_id\u0027])"},{"line_number":2469,"context_line":"        if rep_type and rep_type \u003d\u003d storwize_const.GMCV:"},{"line_number":2470,"context_line":"            # GMCV volume will have problem to failback"},{"line_number":2471,"context_line":"            # when it has flash copy relationship besides change volumes"},{"line_number":2472,"context_line":"            msg \u003d (_(\u0027create_snapshot: Create snapshot to \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_c7d22435","line":2469,"range":{"start_line":2469,"start_character":1,"end_line":2469,"end_character":56},"updated":"2017-05-15 09:17:29.000000000","message":"Is rep_type \u003d\u003d storwize_const.GMCV enough?","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"e1d66eec0fd87b836b875ab7a7787dc059d05a73","unresolved":false,"context_lines":[{"line_number":2466,"context_line":""},{"line_number":2467,"context_line":"        rep_type \u003d self._get_volume_replicated_type("},{"line_number":2468,"context_line":"            ctxt, None, source_vol[\u0027volume_type_id\u0027])"},{"line_number":2469,"context_line":"        if rep_type and rep_type \u003d\u003d storwize_const.GMCV:"},{"line_number":2470,"context_line":"            # GMCV volume will have problem to failback"},{"line_number":2471,"context_line":"            # when it has flash copy relationship besides change volumes"},{"line_number":2472,"context_line":"            msg \u003d (_(\u0027create_snapshot: Create snapshot to \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_c784ef0e","line":2469,"range":{"start_line":2469,"start_character":1,"end_line":2469,"end_character":56},"in_reply_to":"1f013ff3_c7d22435","updated":"2017-05-22 09:50:31.000000000","message":"Yes, it is enough. Done, thanks.","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"c80f9ad95b51e0680e1460fa3222acd6c8461967","unresolved":false,"context_lines":[{"line_number":3311,"context_line":"                         \u0027 Volume \u003d %s\u0027) % volume[\u0027id\u0027])"},{"line_number":3312,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":3313,"context_line":"        elif storwize_const.GMCV \u003d\u003d new_rep_type:"},{"line_number":3314,"context_line":"            # To gmcv, we may change cycleperiodseconds if needed"},{"line_number":3315,"context_line":"            previous_cps \u003d (old_opts[\u0027cycleperiodseconds\u0027]"},{"line_number":3316,"context_line":"                            if \u0027cycleperiodseconds\u0027 in old_opts else \u0027300\u0027)"},{"line_number":3317,"context_line":"            new_cps \u003d (new_opts[\u0027cycleperiodseconds\u0027]"},{"line_number":3318,"context_line":"                       if \u0027cycleperiodseconds\u0027 in new_opts else \u0027300\u0027)"},{"line_number":3319,"context_line":"            if previous_cps !\u003d new_cps:"},{"line_number":3320,"context_line":"                self._helpers.change_relationship_cycleperiod(volume[\u0027name\u0027],"},{"line_number":3321,"context_line":"                                                              new_cps)"},{"line_number":3322,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_671230b4","line":3319,"range":{"start_line":3314,"start_character":1,"end_line":3319,"end_character":39},"updated":"2017-05-15 09:17:29.000000000","message":"Add config cycleperiodseconds in cfg so, it will get a default value.","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"e1d66eec0fd87b836b875ab7a7787dc059d05a73","unresolved":false,"context_lines":[{"line_number":3311,"context_line":"                         \u0027 Volume \u003d %s\u0027) % volume[\u0027id\u0027])"},{"line_number":3312,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":3313,"context_line":"        elif storwize_const.GMCV \u003d\u003d new_rep_type:"},{"line_number":3314,"context_line":"            # To gmcv, we may change cycleperiodseconds if needed"},{"line_number":3315,"context_line":"            previous_cps \u003d (old_opts[\u0027cycleperiodseconds\u0027]"},{"line_number":3316,"context_line":"                            if \u0027cycleperiodseconds\u0027 in old_opts else \u0027300\u0027)"},{"line_number":3317,"context_line":"            new_cps \u003d (new_opts[\u0027cycleperiodseconds\u0027]"},{"line_number":3318,"context_line":"                       if \u0027cycleperiodseconds\u0027 in new_opts else \u0027300\u0027)"},{"line_number":3319,"context_line":"            if previous_cps !\u003d new_cps:"},{"line_number":3320,"context_line":"                self._helpers.change_relationship_cycleperiod(volume[\u0027name\u0027],"},{"line_number":3321,"context_line":"                                                              new_cps)"},{"line_number":3322,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_a79c5b5d","line":3319,"range":{"start_line":3314,"start_character":1,"end_line":3319,"end_character":39},"in_reply_to":"1f013ff3_671230b4","updated":"2017-05-22 09:50:31.000000000","message":"Done, thanks.","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"c80f9ad95b51e0680e1460fa3222acd6c8461967","unresolved":false,"context_lines":[{"line_number":3470,"context_line":"                rep_cps \u003d (rep_opts[\u0027cycleperiodseconds\u0027]"},{"line_number":3471,"context_line":"                           if \u0027cycleperiodseconds\u0027 in rep_opts else \u0027300\u0027)"},{"line_number":3472,"context_line":"            if rel_info[\u0027cycle_period_seconds\u0027] !\u003d rep_cps:"},{"line_number":3473,"context_line":"                msg \u003d (_(\"Failed to manage existing volume due to \""},{"line_number":3474,"context_line":"                         \"the replication type of the volume to be managed is \""},{"line_number":3475,"context_line":"                         \"mismatch with the provided replication type.\"))"},{"line_number":3476,"context_line":"                raise exception.ManageExistingVolumeTypeMismatch(reason\u003dmsg)"},{"line_number":3477,"context_line":""},{"line_number":3478,"context_line":"        if volume[\u0027volume_type_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_07e48cab","line":3475,"range":{"start_line":3473,"start_character":2,"end_line":3475,"end_character":73},"updated":"2017-05-15 09:17:29.000000000","message":"Error message is not accurate. The replication type matches, but the  cycle_period_seconds does not.","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"e1d66eec0fd87b836b875ab7a7787dc059d05a73","unresolved":false,"context_lines":[{"line_number":3470,"context_line":"                rep_cps \u003d (rep_opts[\u0027cycleperiodseconds\u0027]"},{"line_number":3471,"context_line":"                           if \u0027cycleperiodseconds\u0027 in rep_opts else \u0027300\u0027)"},{"line_number":3472,"context_line":"            if rel_info[\u0027cycle_period_seconds\u0027] !\u003d rep_cps:"},{"line_number":3473,"context_line":"                msg \u003d (_(\"Failed to manage existing volume due to \""},{"line_number":3474,"context_line":"                         \"the replication type of the volume to be managed is \""},{"line_number":3475,"context_line":"                         \"mismatch with the provided replication type.\"))"},{"line_number":3476,"context_line":"                raise exception.ManageExistingVolumeTypeMismatch(reason\u003dmsg)"},{"line_number":3477,"context_line":""},{"line_number":3478,"context_line":"        if volume[\u0027volume_type_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_47ad7f86","line":3475,"range":{"start_line":3473,"start_character":2,"end_line":3475,"end_character":73},"in_reply_to":"1f013ff3_07e48cab","updated":"2017-05-22 09:50:31.000000000","message":"Done, thanks.","commit_id":"37c3a23d21401508ce3a8baea46e68bc2b9800a0"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"39ba8e56a8164394a6d190e5683aae4348d1b254","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        # so define two chrcrelationshipxxx here"},{"line_number":337,"context_line":"        if cycleperiodseconds:"},{"line_number":338,"context_line":"            ssh_cmd \u003d [\u0027svctask\u0027, \u0027chrcrelationship\u0027]"},{"line_number":339,"context_line":"            ssh_cmd.extend([\u0027-cycleperiodseconds\u0027, str(cycleperiodseconds)])"},{"line_number":340,"context_line":"            ssh_cmd.append(relationship)"},{"line_number":341,"context_line":"            self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":342,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_b27b2d26","line":339,"range":{"start_line":339,"start_character":51,"end_line":339,"end_character":54},"updated":"2017-05-24 08:29:08.000000000","message":"using six.text_types instead of str","commit_id":"2d5aec93c8643b9123a3abdd070a50c197c64d29"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"e48f450ad09e512ffaeadb4d873401f8fa2c0d51","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        # so define two chrcrelationshipxxx here"},{"line_number":337,"context_line":"        if cycleperiodseconds:"},{"line_number":338,"context_line":"            ssh_cmd \u003d [\u0027svctask\u0027, \u0027chrcrelationship\u0027]"},{"line_number":339,"context_line":"            ssh_cmd.extend([\u0027-cycleperiodseconds\u0027, str(cycleperiodseconds)])"},{"line_number":340,"context_line":"            ssh_cmd.append(relationship)"},{"line_number":341,"context_line":"            self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":342,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_05e00396","line":339,"range":{"start_line":339,"start_character":51,"end_line":339,"end_character":54},"in_reply_to":"ff0f0b1f_b27b2d26","updated":"2017-05-26 08:50:36.000000000","message":"Done, thanks.","commit_id":"2d5aec93c8643b9123a3abdd070a50c197c64d29"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"39ba8e56a8164394a6d190e5683aae4348d1b254","unresolved":false,"context_lines":[{"line_number":1593,"context_line":"            status \u003d attrs[\u0027status\u0027]"},{"line_number":1594,"context_line":"            rc_controlled \u003d attrs[\u0027rc_controlled\u0027]"},{"line_number":1595,"context_line":"            # We should ignore GMCV flash copies"},{"line_number":1596,"context_line":"            if \u0027yes\u0027 !\u003d rc_controlled:"},{"line_number":1597,"context_line":"                mapping_ids_without_rc.append(map_id)"},{"line_number":1598,"context_line":"            else:"},{"line_number":1599,"context_line":"                continue"},{"line_number":1600,"context_line":""},{"line_number":1601,"context_line":"            if allow_fctgt and target \u003d\u003d name and status \u003d\u003d \u0027copying\u0027:"},{"line_number":1602,"context_line":"                self.ssh.stopfcmap(map_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_320cbda3","line":1599,"range":{"start_line":1596,"start_character":12,"end_line":1599,"end_character":24},"updated":"2017-05-24 08:29:08.000000000","message":"it maybe better to merge the “continue” case here into #L1588, such as if not attrs or \u0027yes\u0027 \u003d\u003d attrs【\u0027rc_controlled\u0027]: continue","commit_id":"2d5aec93c8643b9123a3abdd070a50c197c64d29"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"e48f450ad09e512ffaeadb4d873401f8fa2c0d51","unresolved":false,"context_lines":[{"line_number":1593,"context_line":"            status \u003d attrs[\u0027status\u0027]"},{"line_number":1594,"context_line":"            rc_controlled \u003d attrs[\u0027rc_controlled\u0027]"},{"line_number":1595,"context_line":"            # We should ignore GMCV flash copies"},{"line_number":1596,"context_line":"            if \u0027yes\u0027 !\u003d rc_controlled:"},{"line_number":1597,"context_line":"                mapping_ids_without_rc.append(map_id)"},{"line_number":1598,"context_line":"            else:"},{"line_number":1599,"context_line":"                continue"},{"line_number":1600,"context_line":""},{"line_number":1601,"context_line":"            if allow_fctgt and target \u003d\u003d name and status \u003d\u003d \u0027copying\u0027:"},{"line_number":1602,"context_line":"                self.ssh.stopfcmap(map_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_25fc273d","line":1599,"range":{"start_line":1596,"start_character":12,"end_line":1599,"end_character":24},"in_reply_to":"ff0f0b1f_320cbda3","updated":"2017-05-26 08:50:36.000000000","message":"Done, thanks.","commit_id":"2d5aec93c8643b9123a3abdd070a50c197c64d29"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"39ba8e56a8164394a6d190e5683aae4348d1b254","unresolved":false,"context_lines":[{"line_number":2475,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":2476,"context_line":""},{"line_number":2477,"context_line":"        rep_type \u003d self._get_volume_replicated_type("},{"line_number":2478,"context_line":"            ctxt, None, source_vol[\u0027volume_type_id\u0027])"},{"line_number":2479,"context_line":"        if rep_type \u003d\u003d storwize_const.GMCV:"},{"line_number":2480,"context_line":"            # GMCV volume will have problem to failback"},{"line_number":2481,"context_line":"            # when it has flash copy relationship besides change volumes"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_32203dac","line":2478,"range":{"start_line":2478,"start_character":24,"end_line":2478,"end_character":52},"updated":"2017-05-24 08:29:08.000000000","message":"it may be better to change #L2471 to source_vol \u003d snapshot.volume, so you can use source_vol.volume_type_id instead of source_vol[\u0027volume_type_id\u0027] here.","commit_id":"2d5aec93c8643b9123a3abdd070a50c197c64d29"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"e48f450ad09e512ffaeadb4d873401f8fa2c0d51","unresolved":false,"context_lines":[{"line_number":2475,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":2476,"context_line":""},{"line_number":2477,"context_line":"        rep_type \u003d self._get_volume_replicated_type("},{"line_number":2478,"context_line":"            ctxt, None, source_vol[\u0027volume_type_id\u0027])"},{"line_number":2479,"context_line":"        if rep_type \u003d\u003d storwize_const.GMCV:"},{"line_number":2480,"context_line":"            # GMCV volume will have problem to failback"},{"line_number":2481,"context_line":"            # when it has flash copy relationship besides change volumes"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_45addb2f","line":2478,"range":{"start_line":2478,"start_character":24,"end_line":2478,"end_character":52},"in_reply_to":"ff0f0b1f_32203dac","updated":"2017-05-26 08:50:36.000000000","message":"Marked as TODO for impact to existing UT cases","commit_id":"2d5aec93c8643b9123a3abdd070a50c197c64d29"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"39ba8e56a8164394a6d190e5683aae4348d1b254","unresolved":false,"context_lines":[{"line_number":2609,"context_line":"                self._master_backend_helpers.delete_relationship("},{"line_number":2610,"context_line":"                    volume[\u0027name\u0027])"},{"line_number":2611,"context_line":"                tgt_vol \u003d (storwize_const.REPLICA_AUX_VOL_PREFIX +"},{"line_number":2612,"context_line":"                           volume[\u0027name\u0027])"},{"line_number":2613,"context_line":"                self._master_backend_helpers.extend_vdisk(volume[\u0027name\u0027],"},{"line_number":2614,"context_line":"                                                          extend_amt)"},{"line_number":2615,"context_line":"                self._aux_backend_helpers.extend_vdisk(tgt_vol, extend_amt)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_ed154641","line":2612,"range":{"start_line":2612,"start_character":27,"end_line":2612,"end_character":41},"updated":"2017-05-24 08:29:08.000000000","message":"using \u0027.\u0027 instead of [] here and below.","commit_id":"2d5aec93c8643b9123a3abdd070a50c197c64d29"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"e48f450ad09e512ffaeadb4d873401f8fa2c0d51","unresolved":false,"context_lines":[{"line_number":2609,"context_line":"                self._master_backend_helpers.delete_relationship("},{"line_number":2610,"context_line":"                    volume[\u0027name\u0027])"},{"line_number":2611,"context_line":"                tgt_vol \u003d (storwize_const.REPLICA_AUX_VOL_PREFIX +"},{"line_number":2612,"context_line":"                           volume[\u0027name\u0027])"},{"line_number":2613,"context_line":"                self._master_backend_helpers.extend_vdisk(volume[\u0027name\u0027],"},{"line_number":2614,"context_line":"                                                          extend_amt)"},{"line_number":2615,"context_line":"                self._aux_backend_helpers.extend_vdisk(tgt_vol, extend_amt)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_257f87ac","line":2612,"range":{"start_line":2612,"start_character":27,"end_line":2612,"end_character":41},"in_reply_to":"ff0f0b1f_ed154641","updated":"2017-05-26 08:50:36.000000000","message":"Done, thanks.","commit_id":"2d5aec93c8643b9123a3abdd070a50c197c64d29"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"39ba8e56a8164394a6d190e5683aae4348d1b254","unresolved":false,"context_lines":[{"line_number":3471,"context_line":"                    volume[\u0027volume_type_id\u0027],"},{"line_number":3472,"context_line":"                    volume_metadata\u003dvolume.get(\u0027volume_metadata\u0027))"},{"line_number":3473,"context_line":"                # Check cycleperiodseconds"},{"line_number":3474,"context_line":"                rep_cps \u003d str(rep_opts.get(\u0027cycleperiodseconds\u0027))"},{"line_number":3475,"context_line":"            if rel_info[\u0027cycle_period_seconds\u0027] !\u003d rep_cps:"},{"line_number":3476,"context_line":"                msg \u003d _(\"Failed to manage existing volume due to \""},{"line_number":3477,"context_line":"                        \"the gmcv replication type of the volume \""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_6d0816d9","line":3474,"range":{"start_line":3474,"start_character":26,"end_line":3474,"end_character":29},"updated":"2017-05-24 08:29:08.000000000","message":"six.text_types??","commit_id":"2d5aec93c8643b9123a3abdd070a50c197c64d29"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"e48f450ad09e512ffaeadb4d873401f8fa2c0d51","unresolved":false,"context_lines":[{"line_number":3471,"context_line":"                    volume[\u0027volume_type_id\u0027],"},{"line_number":3472,"context_line":"                    volume_metadata\u003dvolume.get(\u0027volume_metadata\u0027))"},{"line_number":3473,"context_line":"                # Check cycleperiodseconds"},{"line_number":3474,"context_line":"                rep_cps \u003d str(rep_opts.get(\u0027cycleperiodseconds\u0027))"},{"line_number":3475,"context_line":"            if rel_info[\u0027cycle_period_seconds\u0027] !\u003d rep_cps:"},{"line_number":3476,"context_line":"                msg \u003d _(\"Failed to manage existing volume due to \""},{"line_number":3477,"context_line":"                        \"the gmcv replication type of the volume \""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_c54fab90","line":3474,"range":{"start_line":3474,"start_character":26,"end_line":3474,"end_character":29},"in_reply_to":"ff0f0b1f_6d0816d9","updated":"2017-05-26 08:50:36.000000000","message":"Done, thanks.","commit_id":"2d5aec93c8643b9123a3abdd070a50c197c64d29"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":124,"context_line":"               default\u003dNone,"},{"line_number":125,"context_line":"               help\u003d\u0027Specifies the name of the pool in which mirrored copy \u0027"},{"line_number":126,"context_line":"                    \u0027is stored. Example: \"pool2\"\u0027),"},{"line_number":127,"context_line":"    cfg.IntOpt(\u0027cycleperiodseconds\u0027,"},{"line_number":128,"context_line":"               default\u003d300,"},{"line_number":129,"context_line":"               min\u003d60, max\u003d86400,"},{"line_number":130,"context_line":"               help\u003d\u0027This defines an optional cycle period that applies to \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_6aa68ac3","line":127,"range":{"start_line":127,"start_character":16,"end_line":127,"end_character":34},"updated":"2017-06-19 15:00:46.000000000","message":"Can you name this \u0027cycle_period_seconds\u0027 to be consistent with the naming style of other options?","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":124,"context_line":"               default\u003dNone,"},{"line_number":125,"context_line":"               help\u003d\u0027Specifies the name of the pool in which mirrored copy \u0027"},{"line_number":126,"context_line":"                    \u0027is stored. Example: \"pool2\"\u0027),"},{"line_number":127,"context_line":"    cfg.IntOpt(\u0027cycleperiodseconds\u0027,"},{"line_number":128,"context_line":"               default\u003d300,"},{"line_number":129,"context_line":"               min\u003d60, max\u003d86400,"},{"line_number":130,"context_line":"               help\u003d\u0027This defines an optional cycle period that applies to \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_4c9f4c50","line":127,"range":{"start_line":127,"start_character":16,"end_line":127,"end_character":34},"in_reply_to":"7f231b9d_6aa68ac3","updated":"2017-06-21 05:41:28.000000000","message":"modified to cycle_period_seconds, thank you.","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":132,"context_line":"               \u0027A Global Mirror relationship using the multi cycling_mode \u0027"},{"line_number":133,"context_line":"               \u0027performs a complete cycle at most once each period. \u0027"},{"line_number":134,"context_line":"               \u0027The default is 300 seconds, and the valid seconds \u0027"},{"line_number":135,"context_line":"               \u0027are 60-86400\u0027),"},{"line_number":136,"context_line":"]"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_aae942e3","line":135,"range":{"start_line":135,"start_character":16,"end_line":135,"end_character":28},"updated":"2017-06-19 15:00:46.000000000","message":"Add ending period.","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":132,"context_line":"               \u0027A Global Mirror relationship using the multi cycling_mode \u0027"},{"line_number":133,"context_line":"               \u0027performs a complete cycle at most once each period. \u0027"},{"line_number":134,"context_line":"               \u0027The default is 300 seconds, and the valid seconds \u0027"},{"line_number":135,"context_line":"               \u0027are 60-86400\u0027),"},{"line_number":136,"context_line":"]"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_2cac108b","line":135,"range":{"start_line":135,"start_character":16,"end_line":135,"end_character":28},"in_reply_to":"7f231b9d_aae942e3","updated":"2017-06-21 05:41:28.000000000","message":"Done","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"2d52a98eeae81374fc61b5898788ea236a09822d","unresolved":false,"context_lines":[{"line_number":2539,"context_line":"            # GMCV volume will have problem to failback"},{"line_number":2540,"context_line":"            # when it has flash copy relationship besides change volumes"},{"line_number":2541,"context_line":"            msg \u003d _(\u0027create_snapshot: Create snapshot to \u0027"},{"line_number":2542,"context_line":"                    \u0027gmcv replication volume is now allowed.\u0027)"},{"line_number":2543,"context_line":"            LOG.error(msg)"},{"line_number":2544,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":2545,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f201791_1babc81d","line":2542,"range":{"start_line":2542,"start_character":45,"end_line":2542,"end_character":59},"updated":"2017-06-21 09:54:09.000000000","message":"it is allowed, or not allowed? you throw exception here, it seems that it is not allowed?","commit_id":"1d763bdb1e4725aba8df49ee70ea57c395f74602"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"04ddef2befdb3f536d97c3ad30b08ef867ee0fd5","unresolved":false,"context_lines":[{"line_number":2539,"context_line":"            # GMCV volume will have problem to failback"},{"line_number":2540,"context_line":"            # when it has flash copy relationship besides change volumes"},{"line_number":2541,"context_line":"            msg \u003d _(\u0027create_snapshot: Create snapshot to \u0027"},{"line_number":2542,"context_line":"                    \u0027gmcv replication volume is now allowed.\u0027)"},{"line_number":2543,"context_line":"            LOG.error(msg)"},{"line_number":2544,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":2545,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f201791_e9882620","line":2542,"range":{"start_line":2542,"start_character":45,"end_line":2542,"end_character":59},"in_reply_to":"5f201791_1babc81d","updated":"2017-06-22 05:57:30.000000000","message":"It should be \"not\". I will update. Thanks.","commit_id":"1d763bdb1e4725aba8df49ee70ea57c395f74602"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"2d52a98eeae81374fc61b5898788ea236a09822d","unresolved":false,"context_lines":[{"line_number":2684,"context_line":"                        source_change_vol, extend_amt)"},{"line_number":2685,"context_line":"                    self._aux_backend_helpers.extend_vdisk("},{"line_number":2686,"context_line":"                        tgt_change_vol, extend_amt)"},{"line_number":2687,"context_line":"                    src_change_opts \u003d (self._get_vdisk_params("},{"line_number":2688,"context_line":"                        volume.volume_type_id))"},{"line_number":2689,"context_line":"                    cycle_period_seconds \u003d (src_change_opts.get("},{"line_number":2690,"context_line":"                        \u0027cycle_period_seconds\u0027))"},{"line_number":2691,"context_line":"                    self._master_backend_helpers.create_relationship("}],"source_content_type":"text/x-python","patch_set":8,"id":"5f201791_bb1e146e","line":2688,"range":{"start_line":2687,"start_character":38,"end_line":2688,"end_character":47},"updated":"2017-06-21 09:54:09.000000000","message":"nit: you can remove () here.","commit_id":"1d763bdb1e4725aba8df49ee70ea57c395f74602"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"04ddef2befdb3f536d97c3ad30b08ef867ee0fd5","unresolved":false,"context_lines":[{"line_number":2684,"context_line":"                        source_change_vol, extend_amt)"},{"line_number":2685,"context_line":"                    self._aux_backend_helpers.extend_vdisk("},{"line_number":2686,"context_line":"                        tgt_change_vol, extend_amt)"},{"line_number":2687,"context_line":"                    src_change_opts \u003d (self._get_vdisk_params("},{"line_number":2688,"context_line":"                        volume.volume_type_id))"},{"line_number":2689,"context_line":"                    cycle_period_seconds \u003d (src_change_opts.get("},{"line_number":2690,"context_line":"                        \u0027cycle_period_seconds\u0027))"},{"line_number":2691,"context_line":"                    self._master_backend_helpers.create_relationship("}],"source_content_type":"text/x-python","patch_set":8,"id":"5f201791_498f1a23","line":2688,"range":{"start_line":2687,"start_character":38,"end_line":2688,"end_character":47},"in_reply_to":"5f201791_bb1e146e","updated":"2017-06-22 05:57:30.000000000","message":"will update, thanks.","commit_id":"1d763bdb1e4725aba8df49ee70ea57c395f74602"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"2d52a98eeae81374fc61b5898788ea236a09822d","unresolved":false,"context_lines":[{"line_number":2686,"context_line":"                        tgt_change_vol, extend_amt)"},{"line_number":2687,"context_line":"                    src_change_opts \u003d (self._get_vdisk_params("},{"line_number":2688,"context_line":"                        volume.volume_type_id))"},{"line_number":2689,"context_line":"                    cycle_period_seconds \u003d (src_change_opts.get("},{"line_number":2690,"context_line":"                        \u0027cycle_period_seconds\u0027))"},{"line_number":2691,"context_line":"                    self._master_backend_helpers.create_relationship("},{"line_number":2692,"context_line":"                        volume.name, tgt_vol, tgt_sys.get(\u0027system_name\u0027),"},{"line_number":2693,"context_line":"                        True, True, source_change_vol, cycle_period_seconds)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f201791_fb2a4c8e","line":2690,"range":{"start_line":2689,"start_character":43,"end_line":2690,"end_character":48},"updated":"2017-06-21 09:54:09.000000000","message":"same","commit_id":"1d763bdb1e4725aba8df49ee70ea57c395f74602"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"04ddef2befdb3f536d97c3ad30b08ef867ee0fd5","unresolved":false,"context_lines":[{"line_number":2686,"context_line":"                        tgt_change_vol, extend_amt)"},{"line_number":2687,"context_line":"                    src_change_opts \u003d (self._get_vdisk_params("},{"line_number":2688,"context_line":"                        volume.volume_type_id))"},{"line_number":2689,"context_line":"                    cycle_period_seconds \u003d (src_change_opts.get("},{"line_number":2690,"context_line":"                        \u0027cycle_period_seconds\u0027))"},{"line_number":2691,"context_line":"                    self._master_backend_helpers.create_relationship("},{"line_number":2692,"context_line":"                        volume.name, tgt_vol, tgt_sys.get(\u0027system_name\u0027),"},{"line_number":2693,"context_line":"                        True, True, source_change_vol, cycle_period_seconds)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f201791_2994de36","line":2690,"range":{"start_line":2689,"start_character":43,"end_line":2690,"end_character":48},"in_reply_to":"5f201791_fb2a4c8e","updated":"2017-06-22 05:57:30.000000000","message":"will update, thanks.","commit_id":"1d763bdb1e4725aba8df49ee70ea57c395f74602"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"2d52a98eeae81374fc61b5898788ea236a09822d","unresolved":false,"context_lines":[{"line_number":3375,"context_line":"            previous_cps \u003d old_opts.get(\u0027cycle_period_seconds\u0027)"},{"line_number":3376,"context_line":"            new_cps \u003d new_opts.get(\u0027cycle_period_seconds\u0027)"},{"line_number":3377,"context_line":"            if previous_cps !\u003d new_cps:"},{"line_number":3378,"context_line":"                self._helpers.change_relationship_cycleperiod(volume[\u0027name\u0027],"},{"line_number":3379,"context_line":"                                                              new_cps)"},{"line_number":3380,"context_line":""},{"line_number":3381,"context_line":"    def retype(self, ctxt, volume, new_type, diff, host):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f201791_56735781","line":3378,"range":{"start_line":3378,"start_character":62,"end_line":3378,"end_character":76},"updated":"2017-06-21 09:54:09.000000000","message":"volume.name","commit_id":"1d763bdb1e4725aba8df49ee70ea57c395f74602"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"04ddef2befdb3f536d97c3ad30b08ef867ee0fd5","unresolved":false,"context_lines":[{"line_number":3375,"context_line":"            previous_cps \u003d old_opts.get(\u0027cycle_period_seconds\u0027)"},{"line_number":3376,"context_line":"            new_cps \u003d new_opts.get(\u0027cycle_period_seconds\u0027)"},{"line_number":3377,"context_line":"            if previous_cps !\u003d new_cps:"},{"line_number":3378,"context_line":"                self._helpers.change_relationship_cycleperiod(volume[\u0027name\u0027],"},{"line_number":3379,"context_line":"                                                              new_cps)"},{"line_number":3380,"context_line":""},{"line_number":3381,"context_line":"    def retype(self, ctxt, volume, new_type, diff, host):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f201791_69741636","line":3378,"range":{"start_line":3378,"start_character":62,"end_line":3378,"end_character":76},"in_reply_to":"5f201791_56735781","updated":"2017-06-22 05:57:30.000000000","message":"Will update, thanks.","commit_id":"1d763bdb1e4725aba8df49ee70ea57c395f74602"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"e5ff31a00510146f6b743df897bbfd2e8d2822c3","unresolved":false,"context_lines":[{"line_number":132,"context_line":"               \u0027A Global Mirror relationship using the multi cycling_mode \u0027"},{"line_number":133,"context_line":"               \u0027performs a complete cycle at most once each period. \u0027"},{"line_number":134,"context_line":"               \u0027The default is 300 seconds, and the valid seconds \u0027"},{"line_number":135,"context_line":"               \u0027are 60-86400.\u0027),"},{"line_number":136,"context_line":"]"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f1d235d_8c820dc8","line":135,"range":{"start_line":135,"start_character":16,"end_line":135,"end_character":30},"updated":"2017-06-29 14:31:28.000000000","message":"I don\u0027t see anywhere that this value is checked and enforced.  I think you should do that and report an invalid input exception in the case you find it.","commit_id":"5a5cd819541ebfb09f167250260f4a29f29806f7"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"88f2f04249e8284e216d11329eed2cd3f4da281d","unresolved":false,"context_lines":[{"line_number":132,"context_line":"               \u0027A Global Mirror relationship using the multi cycling_mode \u0027"},{"line_number":133,"context_line":"               \u0027performs a complete cycle at most once each period. \u0027"},{"line_number":134,"context_line":"               \u0027The default is 300 seconds, and the valid seconds \u0027"},{"line_number":135,"context_line":"               \u0027are 60-86400.\u0027),"},{"line_number":136,"context_line":"]"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f1d235d_8ec54891","line":135,"range":{"start_line":135,"start_character":16,"end_line":135,"end_character":30},"in_reply_to":"3f1d235d_8c820dc8","updated":"2017-06-30 08:31:26.000000000","message":"Addressed in new patch, thank you.","commit_id":"5a5cd819541ebfb09f167250260f4a29f29806f7"}],"releasenotes/notes/storwize-gmcv-support-8aceee3f40eddb9f.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bc46aa78e34380a3711c8997c5fbc76d40dbfc48","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add global mirror with change volumes(gmcv) support and"},{"line_number":4,"context_line":"    user can manage gmcv replication volume by SVC driver"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7f231b9d_4a0d0ee6","line":4,"updated":"2017-06-19 15:00:46.000000000","message":"Add ending period.","commit_id":"952b9c58fba103955eed79796e101fd11485f269"},{"author":{"_account_id":22583,"name":"Cheng Yong Zhao","email":"zhaochy@cn.ibm.com","username":"zhaochy"},"change_message_id":"fde6152156aafd96300e3487d20cea1775008a29","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add global mirror with change volumes(gmcv) support and"},{"line_number":4,"context_line":"    user can manage gmcv replication volume by SVC driver"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"5f201791_acb140e4","line":4,"in_reply_to":"7f231b9d_4a0d0ee6","updated":"2017-06-21 05:41:28.000000000","message":"Done, thank you for your review.","commit_id":"952b9c58fba103955eed79796e101fd11485f269"}]}
