)]}'
{"cinder/tests/unit/test_hpelefthand.py":[{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"a31d00e2de323df3e67482f905b3af0d1fa7ad2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    (c) Copyright 2014-2015 Hewlett Packard Enterprise Development LP"},{"line_number":2,"context_line":"#    All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_15f69ad7","line":1,"range":{"start_line":1,"start_character":24,"end_line":1,"end_character":28},"updated":"2016-01-08 00:19:55.000000000","message":"2016","commit_id":"d81ed6aa865e9f8968b37a9251155f3e9e504f7d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"0eac5a93c6a610ea66b889fc9e7ea4a726616541","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    (c) Copyright 2014-2015 Hewlett Packard Enterprise Development LP"},{"line_number":2,"context_line":"#    All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_15a0da8f","line":1,"range":{"start_line":1,"start_character":24,"end_line":1,"end_character":28},"in_reply_to":"fa69d971_15f69ad7","updated":"2016-01-08 00:29:24.000000000","message":"Done","commit_id":"d81ed6aa865e9f8968b37a9251155f3e9e504f7d"}],"cinder/volume/drivers/hpe/hpe_lefthand_iscsi.py":[{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"720f8e7b804d2363b8271ec77e82f429d2ef5aa9","unresolved":false,"context_lines":[{"line_number":1204,"context_line":"        # If replication is not enabled and the volume is of replicated type,"},{"line_number":1205,"context_line":"        # we treat this as an error."},{"line_number":1206,"context_line":"        if not self._replication_enabled:"},{"line_number":1207,"context_line":"            msg \u003d _LE(\"Enabling replication failed because replication is \""},{"line_number":1208,"context_line":"                      \"not properly configured.\")"},{"line_number":1209,"context_line":"            LOG.error(msg)"},{"line_number":1210,"context_line":"            model_update[\u0027replication_status\u0027] \u003d \"error\""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_b63ae196","line":1207,"updated":"2015-12-11 02:01:43.000000000","message":"Maintain a consistent style in using _LE or not","commit_id":"6e08431ec33dd99ba83064ece9ae31d75eea371b"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"586d9c6b5f7be9c769e2eefddfd1c4c51f7e56f0","unresolved":false,"context_lines":[{"line_number":1204,"context_line":"        # If replication is not enabled and the volume is of replicated type,"},{"line_number":1205,"context_line":"        # we treat this as an error."},{"line_number":1206,"context_line":"        if not self._replication_enabled:"},{"line_number":1207,"context_line":"            msg \u003d _LE(\"Enabling replication failed because replication is \""},{"line_number":1208,"context_line":"                      \"not properly configured.\")"},{"line_number":1209,"context_line":"            LOG.error(msg)"},{"line_number":1210,"context_line":"            model_update[\u0027replication_status\u0027] \u003d \"error\""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_2f0e733b","line":1207,"in_reply_to":"7a740942_b63ae196","updated":"2015-12-11 15:50:18.000000000","message":"From what I understand, _LE should only be used if the message is not going to be passed into an exception. If it is, only _ should be used; that is why there is an inconsistency.","commit_id":"6e08431ec33dd99ba83064ece9ae31d75eea371b"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"720f8e7b804d2363b8271ec77e82f429d2ef5aa9","unresolved":false,"context_lines":[{"line_number":1223,"context_line":"    def replication_disable(self, context, volume):"},{"line_number":1224,"context_line":"        \"\"\"Disable replication on the specified volume.\"\"\""},{"line_number":1225,"context_line":"        if not self._volume_of_replicated_type(volume):"},{"line_number":1226,"context_line":"            msg \u003d _(\"Unable to enable volume replication because volume is \""},{"line_number":1227,"context_line":"                    \"not of replicated type.\")"},{"line_number":1228,"context_line":"            LOG.error(msg)"},{"line_number":1229,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_965ec5e7","line":1226,"updated":"2015-12-11 02:01:43.000000000","message":"Unable to enable volume replication --》  Unable to disable volume replication  ？","commit_id":"6e08431ec33dd99ba83064ece9ae31d75eea371b"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"586d9c6b5f7be9c769e2eefddfd1c4c51f7e56f0","unresolved":false,"context_lines":[{"line_number":1223,"context_line":"    def replication_disable(self, context, volume):"},{"line_number":1224,"context_line":"        \"\"\"Disable replication on the specified volume.\"\"\""},{"line_number":1225,"context_line":"        if not self._volume_of_replicated_type(volume):"},{"line_number":1226,"context_line":"            msg \u003d _(\"Unable to enable volume replication because volume is \""},{"line_number":1227,"context_line":"                    \"not of replicated type.\")"},{"line_number":1228,"context_line":"            LOG.error(msg)"},{"line_number":1229,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_0f013706","line":1226,"in_reply_to":"7a740942_965ec5e7","updated":"2015-12-11 15:50:18.000000000","message":"Done","commit_id":"6e08431ec33dd99ba83064ece9ae31d75eea371b"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"720f8e7b804d2363b8271ec77e82f429d2ef5aa9","unresolved":false,"context_lines":[{"line_number":1468,"context_line":"            replication_sync_period \u003d self.MIN_REP_SYNC_PERIOD"},{"line_number":1469,"context_line":"            LOG.warning(_LW(\"There was no extra_spec value for %(spec_name)s, \""},{"line_number":1470,"context_line":"                            \"so the default value of %(def_val)s will be \""},{"line_number":1471,"context_line":"                            \"used. To overwrite this, set this value in the\""},{"line_number":1472,"context_line":"                            \"volume type extra_specs.\"),"},{"line_number":1473,"context_line":"                        {\u0027spec_name\u0027: self.EXTRA_SPEC_REP_SYNC_PERIOD,"},{"line_number":1474,"context_line":"                         \u0027def_val\u0027: self.MIN_REP_SYNC_PERIOD})"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_b6d66125","line":1471,"updated":"2015-12-11 02:01:43.000000000","message":"Lack of space","commit_id":"6e08431ec33dd99ba83064ece9ae31d75eea371b"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"586d9c6b5f7be9c769e2eefddfd1c4c51f7e56f0","unresolved":false,"context_lines":[{"line_number":1468,"context_line":"            replication_sync_period \u003d self.MIN_REP_SYNC_PERIOD"},{"line_number":1469,"context_line":"            LOG.warning(_LW(\"There was no extra_spec value for %(spec_name)s, \""},{"line_number":1470,"context_line":"                            \"so the default value of %(def_val)s will be \""},{"line_number":1471,"context_line":"                            \"used. To overwrite this, set this value in the\""},{"line_number":1472,"context_line":"                            \"volume type extra_specs.\"),"},{"line_number":1473,"context_line":"                        {\u0027spec_name\u0027: self.EXTRA_SPEC_REP_SYNC_PERIOD,"},{"line_number":1474,"context_line":"                         \u0027def_val\u0027: self.MIN_REP_SYNC_PERIOD})"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_12463e4f","line":1471,"in_reply_to":"7a740942_b6d66125","updated":"2015-12-11 15:50:18.000000000","message":"Done","commit_id":"6e08431ec33dd99ba83064ece9ae31d75eea371b"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"720f8e7b804d2363b8271ec77e82f429d2ef5aa9","unresolved":false,"context_lines":[{"line_number":1489,"context_line":"            retention_count \u003d self.DEFAULT_RETENTION_COUNT"},{"line_number":1490,"context_line":"            LOG.warning(_LW(\"There was no extra_spec value for %(spec_name)s, \""},{"line_number":1491,"context_line":"                            \"so the default value of %(def_val)s will be \""},{"line_number":1492,"context_line":"                            \"used. To overwrite this, set this value in the\""},{"line_number":1493,"context_line":"                            \"volume type extra_specs.\"),"},{"line_number":1494,"context_line":"                        {\u0027spec_name\u0027: self.EXTRA_SPEC_REP_RETENTION_COUNT,"},{"line_number":1495,"context_line":"                         \u0027def_val\u0027: self.DEFAULT_RETENTION_COUNT})"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_76e0f9fa","line":1492,"updated":"2015-12-11 02:01:43.000000000","message":"Lack of space","commit_id":"6e08431ec33dd99ba83064ece9ae31d75eea371b"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"586d9c6b5f7be9c769e2eefddfd1c4c51f7e56f0","unresolved":false,"context_lines":[{"line_number":1489,"context_line":"            retention_count \u003d self.DEFAULT_RETENTION_COUNT"},{"line_number":1490,"context_line":"            LOG.warning(_LW(\"There was no extra_spec value for %(spec_name)s, \""},{"line_number":1491,"context_line":"                            \"so the default value of %(def_val)s will be \""},{"line_number":1492,"context_line":"                            \"used. To overwrite this, set this value in the\""},{"line_number":1493,"context_line":"                            \"volume type extra_specs.\"),"},{"line_number":1494,"context_line":"                        {\u0027spec_name\u0027: self.EXTRA_SPEC_REP_RETENTION_COUNT,"},{"line_number":1495,"context_line":"                         \u0027def_val\u0027: self.DEFAULT_RETENTION_COUNT})"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_d2a196f9","line":1492,"in_reply_to":"7a740942_76e0f9fa","updated":"2015-12-11 15:50:18.000000000","message":"Done","commit_id":"6e08431ec33dd99ba83064ece9ae31d75eea371b"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"720f8e7b804d2363b8271ec77e82f429d2ef5aa9","unresolved":false,"context_lines":[{"line_number":1511,"context_line":"            spec_name \u003d self.EXTRA_SPEC_REP_REMOTE_RETENTION_COUNT"},{"line_number":1512,"context_line":"            LOG.warning(_LW(\"There was no extra_spec value for %(spec_name)s, \""},{"line_number":1513,"context_line":"                            \"so the default value of %(def_val)s will be \""},{"line_number":1514,"context_line":"                            \"used. To overwrite this, set this value in the\""},{"line_number":1515,"context_line":"                            \"volume type extra_specs.\"),"},{"line_number":1516,"context_line":"                        {\u0027spec_name\u0027: spec_name,"},{"line_number":1517,"context_line":"                         \u0027def_val\u0027: self.DEFAULT_REMOTE_RETENTION_COUNT})"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_d6f1adce","line":1514,"updated":"2015-12-11 02:01:43.000000000","message":"Lack of space","commit_id":"6e08431ec33dd99ba83064ece9ae31d75eea371b"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"586d9c6b5f7be9c769e2eefddfd1c4c51f7e56f0","unresolved":false,"context_lines":[{"line_number":1511,"context_line":"            spec_name \u003d self.EXTRA_SPEC_REP_REMOTE_RETENTION_COUNT"},{"line_number":1512,"context_line":"            LOG.warning(_LW(\"There was no extra_spec value for %(spec_name)s, \""},{"line_number":1513,"context_line":"                            \"so the default value of %(def_val)s will be \""},{"line_number":1514,"context_line":"                            \"used. To overwrite this, set this value in the\""},{"line_number":1515,"context_line":"                            \"volume type extra_specs.\"),"},{"line_number":1516,"context_line":"                        {\u0027spec_name\u0027: spec_name,"},{"line_number":1517,"context_line":"                         \u0027def_val\u0027: self.DEFAULT_REMOTE_RETENTION_COUNT})"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_92a78e0a","line":1514,"in_reply_to":"7a740942_d6f1adce","updated":"2015-12-11 15:50:18.000000000","message":"Done","commit_id":"6e08431ec33dd99ba83064ece9ae31d75eea371b"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"5440cae5d8a29a39da57595f54850e0eaf167bcb","unresolved":false,"context_lines":[{"line_number":1208,"context_line":""},{"line_number":1209,"context_line":"    def replication_enable(self, context, volume):"},{"line_number":1210,"context_line":"        \"\"\"Enable replication on a replication capable volume.\"\"\""},{"line_number":1211,"context_line":"        if not self._volume_of_replicated_type(volume):"},{"line_number":1212,"context_line":"            msg \u003d _(\"Unable to enable volume replication because volume is \""},{"line_number":1213,"context_line":"                    \"not of replicated type.\")"},{"line_number":1214,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_89114054","line":1211,"updated":"2016-01-07 07:11:49.000000000","message":"This check should be dropped now,\nsee @valid_replication_volume in cinder/volume/api.py","commit_id":"c88a981a014d8930c1d5149d8506028ed9e60d5d"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"f4a02dd29ab18fe23604f7a3afd3f1eeeb431fde","unresolved":false,"context_lines":[{"line_number":1208,"context_line":""},{"line_number":1209,"context_line":"    def replication_enable(self, context, volume):"},{"line_number":1210,"context_line":"        \"\"\"Enable replication on a replication capable volume.\"\"\""},{"line_number":1211,"context_line":"        if not self._volume_of_replicated_type(volume):"},{"line_number":1212,"context_line":"            msg \u003d _(\"Unable to enable volume replication because volume is \""},{"line_number":1213,"context_line":"                    \"not of replicated type.\")"},{"line_number":1214,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_7a6d77cb","line":1211,"in_reply_to":"fa69d971_5bc45c5e","updated":"2016-01-08 02:37:36.000000000","message":"I meant, the validation of volume type  for replication related api is done inrelated APIs see following in cinder/volume/api.py:\n\n@wrap_check_policy\n    @valid_replication_volume\n    def failover_replication(self,\n                             ctxt,\n                             volume,\n                             secondary\u003dNone):\n\nSo i think you can safely remote the `if` section here.","commit_id":"c88a981a014d8930c1d5149d8506028ed9e60d5d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"8359a3a2b1eee9c133666ee3e8efebc29b7263a2","unresolved":false,"context_lines":[{"line_number":1208,"context_line":""},{"line_number":1209,"context_line":"    def replication_enable(self, context, volume):"},{"line_number":1210,"context_line":"        \"\"\"Enable replication on a replication capable volume.\"\"\""},{"line_number":1211,"context_line":"        if not self._volume_of_replicated_type(volume):"},{"line_number":1212,"context_line":"            msg \u003d _(\"Unable to enable volume replication because volume is \""},{"line_number":1213,"context_line":"                    \"not of replicated type.\")"},{"line_number":1214,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_d5e51fa8","line":1211,"in_reply_to":"fa69d971_7a6d77cb","updated":"2016-01-08 15:24:12.000000000","message":"Peter, I did remove the if for replication_enable, replication_disable, list_replication_targets, and replication_failover in the newest patch set. Instead I have @valid_replication_volume doing the check for those four functions. Thanks for letting me know this now exists.","commit_id":"c88a981a014d8930c1d5149d8506028ed9e60d5d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"22c7a47108e9f6e9b4d56775ddd2a35b802d4f44","unresolved":false,"context_lines":[{"line_number":1208,"context_line":""},{"line_number":1209,"context_line":"    def replication_enable(self, context, volume):"},{"line_number":1210,"context_line":"        \"\"\"Enable replication on a replication capable volume.\"\"\""},{"line_number":1211,"context_line":"        if not self._volume_of_replicated_type(volume):"},{"line_number":1212,"context_line":"            msg \u003d _(\"Unable to enable volume replication because volume is \""},{"line_number":1213,"context_line":"                    \"not of replicated type.\")"},{"line_number":1214,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_5bc45c5e","line":1211,"in_reply_to":"fa69d971_89114054","updated":"2016-01-07 16:14:12.000000000","message":"Great, thanks for pointing this out. I will switch over to this instead. Is there only a wrapper for this? Or is there something to replace the rest of my calls to self._volume_of_replicated_type?","commit_id":"c88a981a014d8930c1d5149d8506028ed9e60d5d"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"5440cae5d8a29a39da57595f54850e0eaf167bcb","unresolved":false,"context_lines":[{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"    def replication_disable(self, context, volume):"},{"line_number":1238,"context_line":"        \"\"\"Disable replication on the specified volume.\"\"\""},{"line_number":1239,"context_line":"        if not self._volume_of_replicated_type(volume):"},{"line_number":1240,"context_line":"            msg \u003d _(\"Unable to disable volume replication because volume is \""},{"line_number":1241,"context_line":"                    \"not of replicated type.\")"},{"line_number":1242,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_893f00b3","line":1239,"updated":"2016-01-07 07:11:49.000000000","message":"Ditto","commit_id":"c88a981a014d8930c1d5149d8506028ed9e60d5d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"22c7a47108e9f6e9b4d56775ddd2a35b802d4f44","unresolved":false,"context_lines":[{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"    def replication_disable(self, context, volume):"},{"line_number":1238,"context_line":"        \"\"\"Disable replication on the specified volume.\"\"\""},{"line_number":1239,"context_line":"        if not self._volume_of_replicated_type(volume):"},{"line_number":1240,"context_line":"            msg \u003d _(\"Unable to disable volume replication because volume is \""},{"line_number":1241,"context_line":"                    \"not of replicated type.\")"},{"line_number":1242,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_1ba584b4","line":1239,"in_reply_to":"fa69d971_893f00b3","updated":"2016-01-07 16:14:12.000000000","message":"Done","commit_id":"c88a981a014d8930c1d5149d8506028ed9e60d5d"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"5440cae5d8a29a39da57595f54850e0eaf167bcb","unresolved":false,"context_lines":[{"line_number":1272,"context_line":""},{"line_number":1273,"context_line":"    def replication_failover(self, context, volume, secondary):"},{"line_number":1274,"context_line":"        \"\"\"Force failover to a secondary replication target.\"\"\""},{"line_number":1275,"context_line":"        if not self._volume_of_replicated_type(volume):"},{"line_number":1276,"context_line":"            msg \u003d _(\"Unable to enable volume replication because volume is \""},{"line_number":1277,"context_line":"                    \"not of replicated type.\")"},{"line_number":1278,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_294a9455","line":1275,"updated":"2016-01-07 07:11:49.000000000","message":"Ditto","commit_id":"c88a981a014d8930c1d5149d8506028ed9e60d5d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"22c7a47108e9f6e9b4d56775ddd2a35b802d4f44","unresolved":false,"context_lines":[{"line_number":1272,"context_line":""},{"line_number":1273,"context_line":"    def replication_failover(self, context, volume, secondary):"},{"line_number":1274,"context_line":"        \"\"\"Force failover to a secondary replication target.\"\"\""},{"line_number":1275,"context_line":"        if not self._volume_of_replicated_type(volume):"},{"line_number":1276,"context_line":"            msg \u003d _(\"Unable to enable volume replication because volume is \""},{"line_number":1277,"context_line":"                    \"not of replicated type.\")"},{"line_number":1278,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_dbae0c98","line":1275,"in_reply_to":"fa69d971_294a9455","updated":"2016-01-07 16:14:12.000000000","message":"Done","commit_id":"c88a981a014d8930c1d5149d8506028ed9e60d5d"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"5440cae5d8a29a39da57595f54850e0eaf167bcb","unresolved":false,"context_lines":[{"line_number":1279,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1280,"context_line":""},{"line_number":1281,"context_line":"        failover_target \u003d None"},{"line_number":1282,"context_line":"        for target in self._replication_targets:"},{"line_number":1283,"context_line":"            if target[\u0027target_device_id\u0027] \u003d\u003d secondary:"},{"line_number":1284,"context_line":"                failover_target \u003d target"},{"line_number":1285,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_56a767a6","line":1282,"updated":"2016-01-07 07:11:49.000000000","message":"Can you fail back from origin secondary to origin primary again?\n\nsince on the origin secondary cinder back end, the self._replication_targets is [], \n\nYou cannot fail back to original primary system.\n\n(BTW, Same issue found with HPE 3PAR replication implementation)\nPlease let me know if i miss something\n\nThanks\nPeter","commit_id":"c88a981a014d8930c1d5149d8506028ed9e60d5d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"22c7a47108e9f6e9b4d56775ddd2a35b802d4f44","unresolved":false,"context_lines":[{"line_number":1279,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1280,"context_line":""},{"line_number":1281,"context_line":"        failover_target \u003d None"},{"line_number":1282,"context_line":"        for target in self._replication_targets:"},{"line_number":1283,"context_line":"            if target[\u0027target_device_id\u0027] \u003d\u003d secondary:"},{"line_number":1284,"context_line":"                failover_target \u003d target"},{"line_number":1285,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_1be104d1","line":1282,"in_reply_to":"fa69d971_56a767a6","updated":"2016-01-07 16:14:12.000000000","message":"The ability to fail-back was just merged yesterday. This patch will not provide that ability, but I will probably have a follow up patch to do so (investigating right now). \n\nSame with 3PAR, I am working on that patch right now. Yes, replication targets will be [] in the case of a managed fail-over (unmanaged does not have this problem since it is the same driver instance that deals with it), but the plan is to preserve the primary host in the volumes replication_driver_data.","commit_id":"c88a981a014d8930c1d5149d8506028ed9e60d5d"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"5440cae5d8a29a39da57595f54850e0eaf167bcb","unresolved":false,"context_lines":[{"line_number":1339,"context_line":""},{"line_number":1340,"context_line":"    def list_replication_targets(self, context, volume):"},{"line_number":1341,"context_line":"        \"\"\"Provides a means to obtain replication targets for a volume.\"\"\""},{"line_number":1342,"context_line":"        if not self._volume_of_replicated_type(volume):"},{"line_number":1343,"context_line":"            return []"},{"line_number":1344,"context_line":""},{"line_number":1345,"context_line":"        client \u003d None"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_a96c44d0","line":1342,"updated":"2016-01-07 07:11:49.000000000","message":"Ditto","commit_id":"c88a981a014d8930c1d5149d8506028ed9e60d5d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"22c7a47108e9f6e9b4d56775ddd2a35b802d4f44","unresolved":false,"context_lines":[{"line_number":1339,"context_line":""},{"line_number":1340,"context_line":"    def list_replication_targets(self, context, volume):"},{"line_number":1341,"context_line":"        \"\"\"Provides a means to obtain replication targets for a volume.\"\"\""},{"line_number":1342,"context_line":"        if not self._volume_of_replicated_type(volume):"},{"line_number":1343,"context_line":"            return []"},{"line_number":1344,"context_line":""},{"line_number":1345,"context_line":"        client \u003d None"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_58da1f19","line":1342,"in_reply_to":"fa69d971_a96c44d0","updated":"2016-01-07 16:14:12.000000000","message":"Done","commit_id":"c88a981a014d8930c1d5149d8506028ed9e60d5d"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"a31d00e2de323df3e67482f905b3af0d1fa7ad2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    (c) Copyright 2014-2015 Hewlett Packard Enterprise Development LP"},{"line_number":2,"context_line":"#    All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_95092ae0","line":1,"range":{"start_line":1,"start_character":24,"end_line":1,"end_character":28},"updated":"2016-01-08 00:19:55.000000000","message":"2016","commit_id":"d81ed6aa865e9f8968b37a9251155f3e9e504f7d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"0eac5a93c6a610ea66b889fc9e7ea4a726616541","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    (c) Copyright 2014-2015 Hewlett Packard Enterprise Development LP"},{"line_number":2,"context_line":"#    All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_15c77a46","line":1,"range":{"start_line":1,"start_character":24,"end_line":1,"end_character":28},"in_reply_to":"fa69d971_95092ae0","updated":"2016-01-08 00:29:24.000000000","message":"Done","commit_id":"d81ed6aa865e9f8968b37a9251155f3e9e504f7d"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"a31d00e2de323df3e67482f905b3af0d1fa7ad2c","unresolved":false,"context_lines":[{"line_number":1588,"context_line":"                # Destroy remote client"},{"line_number":1589,"context_line":"                self._destroy_replication_client(cl)"},{"line_number":1590,"context_line":""},{"line_number":1591,"context_line":"                # Create remote snapshot schedule on the primary sysem."},{"line_number":1592,"context_line":"                # We want to start the remote snapshot schedule instantly; a"},{"line_number":1593,"context_line":"                # date in the past will do that. We will use the Linux epoch"},{"line_number":1594,"context_line":"                # date formatted to ISO 8601 (YYYY-MM-DDTHH:MM:SSZ)."}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_f512e657","line":1591,"range":{"start_line":1591,"start_character":65,"end_line":1591,"end_character":70},"updated":"2016-01-08 00:19:55.000000000","message":"system","commit_id":"d81ed6aa865e9f8968b37a9251155f3e9e504f7d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"0eac5a93c6a610ea66b889fc9e7ea4a726616541","unresolved":false,"context_lines":[{"line_number":1588,"context_line":"                # Destroy remote client"},{"line_number":1589,"context_line":"                self._destroy_replication_client(cl)"},{"line_number":1590,"context_line":""},{"line_number":1591,"context_line":"                # Create remote snapshot schedule on the primary sysem."},{"line_number":1592,"context_line":"                # We want to start the remote snapshot schedule instantly; a"},{"line_number":1593,"context_line":"                # date in the past will do that. We will use the Linux epoch"},{"line_number":1594,"context_line":"                # date formatted to ISO 8601 (YYYY-MM-DDTHH:MM:SSZ)."}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_d5d7a2eb","line":1591,"range":{"start_line":1591,"start_character":65,"end_line":1591,"end_character":70},"in_reply_to":"fa69d971_f512e657","updated":"2016-01-08 00:29:24.000000000","message":"Done","commit_id":"d81ed6aa865e9f8968b37a9251155f3e9e504f7d"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"a31d00e2de323df3e67482f905b3af0d1fa7ad2c","unresolved":false,"context_lines":[{"line_number":1616,"context_line":"            self._do_volume_replication_destroy(volume, client)"},{"line_number":1617,"context_line":"            msg \u003d (_(\"There was an error setting up a remote copy group \""},{"line_number":1618,"context_line":"                     \"on the LeftHand arrays: (\u0027%s\u0027). The volume will not be \""},{"line_number":1619,"context_line":"                     \"recognized as replication type.\") %"},{"line_number":1620,"context_line":"                   six.text_type(ex))"},{"line_number":1621,"context_line":"            LOG.error(msg)"},{"line_number":1622,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_da02710b","line":1619,"range":{"start_line":1619,"start_character":33,"end_line":1619,"end_character":35},"updated":"2016-01-08 00:19:55.000000000","message":"\"as a\"?","commit_id":"d81ed6aa865e9f8968b37a9251155f3e9e504f7d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"0eac5a93c6a610ea66b889fc9e7ea4a726616541","unresolved":false,"context_lines":[{"line_number":1616,"context_line":"            self._do_volume_replication_destroy(volume, client)"},{"line_number":1617,"context_line":"            msg \u003d (_(\"There was an error setting up a remote copy group \""},{"line_number":1618,"context_line":"                     \"on the LeftHand arrays: (\u0027%s\u0027). The volume will not be \""},{"line_number":1619,"context_line":"                     \"recognized as replication type.\") %"},{"line_number":1620,"context_line":"                   six.text_type(ex))"},{"line_number":1621,"context_line":"            LOG.error(msg)"},{"line_number":1622,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_555e5277","line":1619,"range":{"start_line":1619,"start_character":33,"end_line":1619,"end_character":35},"in_reply_to":"fa69d971_da02710b","updated":"2016-01-08 00:29:24.000000000","message":"I think as replication type makes sense, right? Volume is of replication type or is not of replication type.","commit_id":"d81ed6aa865e9f8968b37a9251155f3e9e504f7d"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"a31d00e2de323df3e67482f905b3af0d1fa7ad2c","unresolved":false,"context_lines":[{"line_number":1622,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1623,"context_line":""},{"line_number":1624,"context_line":"    def _do_volume_replication_destroy(self, volume, client):"},{"line_number":1625,"context_line":"        \"\"\"This will remove all depencies of a replicated volume"},{"line_number":1626,"context_line":""},{"line_number":1627,"context_line":"        It should be used when deleting a replication enabled volume"},{"line_number":1628,"context_line":"        or if setting up a remote copy group fails. It will try and do the"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_35087e28","line":1625,"range":{"start_line":1625,"start_character":32,"end_line":1625,"end_character":41},"updated":"2016-01-08 00:19:55.000000000","message":"dependices","commit_id":"d81ed6aa865e9f8968b37a9251155f3e9e504f7d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"0eac5a93c6a610ea66b889fc9e7ea4a726616541","unresolved":false,"context_lines":[{"line_number":1622,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1623,"context_line":""},{"line_number":1624,"context_line":"    def _do_volume_replication_destroy(self, volume, client):"},{"line_number":1625,"context_line":"        \"\"\"This will remove all depencies of a replicated volume"},{"line_number":1626,"context_line":""},{"line_number":1627,"context_line":"        It should be used when deleting a replication enabled volume"},{"line_number":1628,"context_line":"        or if setting up a remote copy group fails. It will try and do the"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_755fd675","line":1625,"range":{"start_line":1625,"start_character":32,"end_line":1625,"end_character":41},"in_reply_to":"fa69d971_35087e28","updated":"2016-01-08 00:29:24.000000000","message":"Done","commit_id":"d81ed6aa865e9f8968b37a9251155f3e9e504f7d"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"fa9dbeeba6641f156925e5e49f328e78215a9cd5","unresolved":false,"context_lines":[{"line_number":1207,"context_line":"        errors \u003d []"},{"line_number":1208,"context_line":"        return errors"},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"    @api.valid_replication_volume"},{"line_number":1211,"context_line":"    def replication_enable(self, context, volume):"},{"line_number":1212,"context_line":"        \"\"\"Enable replication on a replication capable volume.\"\"\""},{"line_number":1213,"context_line":"        model_update \u003d {}"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_1c7e5719","line":1210,"updated":"2016-01-11 03:48:43.000000000","message":"Add this decorator is unnecessary.\n\nIn volume-api, this check is already done.\n\nSo, @valid_replication_volume could be removed.\n\nlet me know if you want it here for other reasons.\nThanks\nPeter","commit_id":"e92e7455027aa48712319f86c6b1d2a787307eef"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"fa9dbeeba6641f156925e5e49f328e78215a9cd5","unresolved":false,"context_lines":[{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":"        return model_update"},{"line_number":1232,"context_line":""},{"line_number":1233,"context_line":"    @api.valid_replication_volume"},{"line_number":1234,"context_line":"    def replication_disable(self, context, volume):"},{"line_number":1235,"context_line":"        \"\"\"Disable replication on the specified volume.\"\"\""},{"line_number":1236,"context_line":"        model_update \u003d {}"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_dc73df4c","line":1233,"updated":"2016-01-11 03:48:43.000000000","message":"Ditto","commit_id":"e92e7455027aa48712319f86c6b1d2a787307eef"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"fa9dbeeba6641f156925e5e49f328e78215a9cd5","unresolved":false,"context_lines":[{"line_number":1261,"context_line":""},{"line_number":1262,"context_line":"        return model_update"},{"line_number":1263,"context_line":""},{"line_number":1264,"context_line":"    @api.valid_replication_volume"},{"line_number":1265,"context_line":"    def replication_failover(self, context, volume, secondary):"},{"line_number":1266,"context_line":"        \"\"\"Force failover to a secondary replication target.\"\"\""},{"line_number":1267,"context_line":"        failover_target \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_fc702342","line":1264,"updated":"2016-01-11 03:48:43.000000000","message":"Ditto","commit_id":"e92e7455027aa48712319f86c6b1d2a787307eef"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"fa9dbeeba6641f156925e5e49f328e78215a9cd5","unresolved":false,"context_lines":[{"line_number":1323,"context_line":""},{"line_number":1324,"context_line":"        return model_update"},{"line_number":1325,"context_line":""},{"line_number":1326,"context_line":"    @api.valid_replication_volume"},{"line_number":1327,"context_line":"    def list_replication_targets(self, context, volume):"},{"line_number":1328,"context_line":"        \"\"\"Provides a means to obtain replication targets for a volume.\"\"\""},{"line_number":1329,"context_line":"        client \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_9c900745","line":1326,"updated":"2016-01-11 03:48:43.000000000","message":"Ditto","commit_id":"e92e7455027aa48712319f86c6b1d2a787307eef"},{"author":{"_account_id":16793,"name":"Liucheng Jiang","email":"jiangliucheng@huawei.com","username":"Jiangliucheng"},"change_message_id":"8a810dc5dd85facb92bd34d3c8985431122ecd7f","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                policy \u003d \"AutoAddPolicy\""},{"line_number":205,"context_line":"                if CONF.strict_ssh_host_key_policy:"},{"line_number":206,"context_line":"                    policy \u003d \"RejectPolicy\""},{"line_number":207,"context_line":"                client.setSSHOptions("},{"line_number":208,"context_line":"                    ssh_ip,"},{"line_number":209,"context_line":"                    self.configuration.hpelefthand_username,"},{"line_number":210,"context_line":"                    self.configuration.hpelefthand_password,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_dd259d5c","line":207,"range":{"start_line":207,"start_character":16,"end_line":207,"end_character":37},"updated":"2016-01-12 08:47:15.000000000","message":"Ask: This code is to do more configure, like timeout set, that HPELeftHandClient\u0027init() didn\u0027t completed do?","commit_id":"e80f75c22223266fd6bde89d086e0b6423a9c304"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"20531736aad761174b221b6e9d11ede92aee102e","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                policy \u003d \"AutoAddPolicy\""},{"line_number":205,"context_line":"                if CONF.strict_ssh_host_key_policy:"},{"line_number":206,"context_line":"                    policy \u003d \"RejectPolicy\""},{"line_number":207,"context_line":"                client.setSSHOptions("},{"line_number":208,"context_line":"                    ssh_ip,"},{"line_number":209,"context_line":"                    self.configuration.hpelefthand_username,"},{"line_number":210,"context_line":"                    self.configuration.hpelefthand_password,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_d4578a00","line":207,"range":{"start_line":207,"start_character":16,"end_line":207,"end_character":37},"in_reply_to":"da6ed579_dd259d5c","updated":"2016-01-12 22:20:58.000000000","message":"Yes, setting up the client with SSH is not mandatory. We have an additional call to set SSH up if desired.","commit_id":"e80f75c22223266fd6bde89d086e0b6423a9c304"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"37cb83e71ed823c8e590b1c12f40ad242c5cd1af","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"    # v2 replication methods"},{"line_number":1203,"context_line":"    def get_replication_updates(self, context):"},{"line_number":1204,"context_line":"        # TODO(aorourke): the manager does not do anything with these updates."},{"line_number":1205,"context_line":"        # When that is chanaged, I will modify this as well."},{"line_number":1206,"context_line":"        errors \u003d []"},{"line_number":1207,"context_line":"        return errors"},{"line_number":1208,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_c1ad8b89","line":1205,"updated":"2016-01-12 22:03:55.000000000","message":"s/chanaged/changed","commit_id":"e80f75c22223266fd6bde89d086e0b6423a9c304"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"20531736aad761174b221b6e9d11ede92aee102e","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"    # v2 replication methods"},{"line_number":1203,"context_line":"    def get_replication_updates(self, context):"},{"line_number":1204,"context_line":"        # TODO(aorourke): the manager does not do anything with these updates."},{"line_number":1205,"context_line":"        # When that is chanaged, I will modify this as well."},{"line_number":1206,"context_line":"        errors \u003d []"},{"line_number":1207,"context_line":"        return errors"},{"line_number":1208,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_544cfa6f","line":1205,"in_reply_to":"da6ed579_c1ad8b89","updated":"2016-01-12 22:20:58.000000000","message":"Done","commit_id":"e80f75c22223266fd6bde89d086e0b6423a9c304"},{"author":{"_account_id":16793,"name":"Liucheng Jiang","email":"jiangliucheng@huawei.com","username":"Jiangliucheng"},"change_message_id":"8a810dc5dd85facb92bd34d3c8985431122ecd7f","unresolved":false,"context_lines":[{"line_number":1220,"context_line":"            client \u003d self._login()"},{"line_number":1221,"context_line":"            try:"},{"line_number":1222,"context_line":"                if self._do_volume_replication_setup(volume, client):"},{"line_number":1223,"context_line":"                    model_update[\u0027replication_status\u0027] \u003d \"enabled\""},{"line_number":1224,"context_line":"                else:"},{"line_number":1225,"context_line":"                    model_update[\u0027replication_status\u0027] \u003d \"error\""},{"line_number":1226,"context_line":"            finally:"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_609f2660","line":1223,"range":{"start_line":1223,"start_character":20,"end_line":1223,"end_character":66},"updated":"2016-01-12 08:47:15.000000000","message":"During enable or disable, check manager.py, I think manager just want rep_driver_data. Especially, manager will update replication_status to enabled when success.","commit_id":"e80f75c22223266fd6bde89d086e0b6423a9c304"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"37cb83e71ed823c8e590b1c12f40ad242c5cd1af","unresolved":false,"context_lines":[{"line_number":1279,"context_line":"            client \u003d self._login(timeout\u003d30)"},{"line_number":1280,"context_line":"            name \u003d volume[\u0027name\u0027] + self.REP_SCHEDULE_SUFFIX + \"_Pri\""},{"line_number":1281,"context_line":"            client.stopRemoteSnapshotSchedule(name)"},{"line_number":1282,"context_line":"        except Exception:"},{"line_number":1283,"context_line":"            pass"},{"line_number":1284,"context_line":"        finally:"},{"line_number":1285,"context_line":"            self._logout(client)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_8679e9fe","line":1282,"updated":"2016-01-12 22:03:55.000000000","message":"Can you log a message here?","commit_id":"e80f75c22223266fd6bde89d086e0b6423a9c304"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"20531736aad761174b221b6e9d11ede92aee102e","unresolved":false,"context_lines":[{"line_number":1279,"context_line":"            client \u003d self._login(timeout\u003d30)"},{"line_number":1280,"context_line":"            name \u003d volume[\u0027name\u0027] + self.REP_SCHEDULE_SUFFIX + \"_Pri\""},{"line_number":1281,"context_line":"            client.stopRemoteSnapshotSchedule(name)"},{"line_number":1282,"context_line":"        except Exception:"},{"line_number":1283,"context_line":"            pass"},{"line_number":1284,"context_line":"        finally:"},{"line_number":1285,"context_line":"            self._logout(client)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_d40f8adf","line":1282,"in_reply_to":"da6ed579_8679e9fe","updated":"2016-01-12 22:20:58.000000000","message":"Done","commit_id":"e80f75c22223266fd6bde89d086e0b6423a9c304"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"37cb83e71ed823c8e590b1c12f40ad242c5cd1af","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"            try:"},{"line_number":1296,"context_line":"                name \u003d volume[\u0027name\u0027] + self.REP_SCHEDULE_SUFFIX + \"_Rmt\""},{"line_number":1297,"context_line":"                cl.stopRemoteSnapshotSchedule(name)"},{"line_number":1298,"context_line":"            except Exception:"},{"line_number":1299,"context_line":"                pass"},{"line_number":1300,"context_line":"            # Update the provider info for a proper fail-over."},{"line_number":1301,"context_line":"            volume_info \u003d cl.getVolumeByName(volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_4683f1cc","line":1298,"updated":"2016-01-12 22:03:55.000000000","message":"Here too.","commit_id":"e80f75c22223266fd6bde89d086e0b6423a9c304"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"20531736aad761174b221b6e9d11ede92aee102e","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"            try:"},{"line_number":1296,"context_line":"                name \u003d volume[\u0027name\u0027] + self.REP_SCHEDULE_SUFFIX + \"_Rmt\""},{"line_number":1297,"context_line":"                cl.stopRemoteSnapshotSchedule(name)"},{"line_number":1298,"context_line":"            except Exception:"},{"line_number":1299,"context_line":"                pass"},{"line_number":1300,"context_line":"            # Update the provider info for a proper fail-over."},{"line_number":1301,"context_line":"            volume_info \u003d cl.getVolumeByName(volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_f412ce08","line":1298,"in_reply_to":"da6ed579_4683f1cc","updated":"2016-01-12 22:20:58.000000000","message":"If the above exception is reached, this one will as well. I added a warning message notifying remote copy has been automatically paused and the primary is unreachable above. This exception can safely be swallowed as it is just confirming the same thing.","commit_id":"e80f75c22223266fd6bde89d086e0b6423a9c304"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"37cb83e71ed823c8e590b1c12f40ad242c5cd1af","unresolved":false,"context_lines":[{"line_number":1458,"context_line":""},{"line_number":1459,"context_line":"    def _does_snapshot_schedule_exist(self, schedule_name, client):"},{"line_number":1460,"context_line":"        try:"},{"line_number":1461,"context_line":"            exists \u003d client.doesRemoteSnapshotScheduleExist(schedule_name)"},{"line_number":1462,"context_line":"        except Exception:"},{"line_number":1463,"context_line":"            exists \u003d False"},{"line_number":1464,"context_line":"        return exists"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_0173a381","line":1461,"updated":"2016-01-12 22:03:55.000000000","message":"So the snapshots created this way will not be managed by Cinder?  Can you add a note about this?","commit_id":"e80f75c22223266fd6bde89d086e0b6423a9c304"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"20531736aad761174b221b6e9d11ede92aee102e","unresolved":false,"context_lines":[{"line_number":1458,"context_line":""},{"line_number":1459,"context_line":"    def _does_snapshot_schedule_exist(self, schedule_name, client):"},{"line_number":1460,"context_line":"        try:"},{"line_number":1461,"context_line":"            exists \u003d client.doesRemoteSnapshotScheduleExist(schedule_name)"},{"line_number":1462,"context_line":"        except Exception:"},{"line_number":1463,"context_line":"            exists \u003d False"},{"line_number":1464,"context_line":"        return exists"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_74725e4b","line":1461,"in_reply_to":"da6ed579_0173a381","updated":"2016-01-12 22:20:58.000000000","message":"This call is not where the snapshots are created. They are created down below in _do_volume_replication_setup. I have a comment on lines 1571-1574 noting they are not managed and will automatically be cleaned up on volume deletion.","commit_id":"e80f75c22223266fd6bde89d086e0b6423a9c304"}]}
