)]}'
{"cinder/tests/unit/volume/drivers/solidfire/test_solidfire.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"162dc52f65e448ed1734eb7657e7a2d5424eabaa","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import datetime"},{"line_number":18,"context_line":"import re"},{"line_number":19,"context_line":"from copy import deepcopy"},{"line_number":20,"context_line":"from unittest import mock"},{"line_number":21,"context_line":"from unittest.mock import patch, call"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_62dc3a74","line":19,"updated":"2020-08-19 19:51:16.000000000","message":"pep8: H306: imports not in alphabetical order (re, copy.deepcopy)","commit_id":"6528690ee5a9b2eaa630600ae16cf6b793658888"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"162dc52f65e448ed1734eb7657e7a2d5424eabaa","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import re"},{"line_number":19,"context_line":"from copy import deepcopy"},{"line_number":20,"context_line":"from unittest import mock"},{"line_number":21,"context_line":"from unittest.mock import patch, call"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ddt import data"},{"line_number":24,"context_line":"from ddt import ddt"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_42d77650","line":21,"updated":"2020-08-19 19:51:16.000000000","message":"pep8: F401 \u0027unittest.mock.patch\u0027 imported but unused","commit_id":"6528690ee5a9b2eaa630600ae16cf6b793658888"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"162dc52f65e448ed1734eb7657e7a2d5424eabaa","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import re"},{"line_number":19,"context_line":"from copy import deepcopy"},{"line_number":20,"context_line":"from unittest import mock"},{"line_number":21,"context_line":"from unittest.mock import patch, call"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ddt import data"},{"line_number":24,"context_line":"from ddt import ddt"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_a2e65243","line":21,"updated":"2020-08-19 19:51:16.000000000","message":"pep8: H301: one import per line","commit_id":"6528690ee5a9b2eaa630600ae16cf6b793658888"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"162dc52f65e448ed1734eb7657e7a2d5424eabaa","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        self.fake_secondary_cluster \u003d ("},{"line_number":177,"context_line":"            {\u0027endpoint\u0027: {\u0027passwd\u0027: \u0027admin\u0027, \u0027port\u0027: 443,"},{"line_number":178,"context_line":"                           \u0027url\u0027: \u0027https://192.168.139.102:443\u0027,"},{"line_number":179,"context_line":"                           \u0027svip\u0027: \u002710.10.8.134\u0027,"},{"line_number":180,"context_line":"                           \u0027mvip\u0027: \u0027192.168.139.102\u0027,"},{"line_number":181,"context_line":"                           \u0027login\u0027: \u0027admin\u0027},"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_82e18e2d","line":178,"updated":"2020-08-19 19:51:16.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"6528690ee5a9b2eaa630600ae16cf6b793658888"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"162dc52f65e448ed1734eb7657e7a2d5424eabaa","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                           \u0027svip\u0027: \u002710.10.8.134\u0027,"},{"line_number":180,"context_line":"                           \u0027mvip\u0027: \u0027192.168.139.102\u0027,"},{"line_number":181,"context_line":"                           \u0027login\u0027: \u0027admin\u0027},"},{"line_number":182,"context_line":"              \u0027name\u0027: \u0027AutoTest2-6AjG-FOR-TEST-ONLY\u0027,"},{"line_number":183,"context_line":"              \u0027clusterPairID\u0027: 331,"},{"line_number":184,"context_line":"              \u0027clusterAPIVersion\u0027: \u00279.4\u0027,"},{"line_number":185,"context_line":"              \u0027uuid\u0027: \u00279c499d4b-8fff-48b4-b875-27601d5d9889\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_e2d16a59","line":182,"updated":"2020-08-19 19:51:16.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"6528690ee5a9b2eaa630600ae16cf6b793658888"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"82346b2723df95a31fe7f31a7eb86dace3f99552","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9f560f44_438f3329","updated":"2020-08-24 19:01:57.000000000","message":"I missed: \u0027_get_cluster_pair\u0027 and \u0027_get_or_create_cluster_pairing\u0027 unit tests.","commit_id":"adddad0d02d76a15270c1839325bba2686858ee2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"196e25af59be0220116421001527166a7ce55fa4","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import re"},{"line_number":20,"context_line":"from unittest import mock"},{"line_number":21,"context_line":"from unittest.mock import call"},{"line_number":22,"context_line":"from unittest.mock import MagicMock"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ddt import data"},{"line_number":25,"context_line":"from ddt import ddt"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_adeff01a","line":22,"range":{"start_line":22,"start_character":26,"end_line":22,"end_character":35},"updated":"2020-09-11 15:31:35.000000000","message":"Only modules should be imported, not classes.","commit_id":"b1d6210d454c05aeca2fbe944c6b6e82c508372f"}],"cinder/volume/drivers/solidfire.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d519d4392806c0421df7db21e5e66e9abf4a6a1b","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                remote_endpoint)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"            self.failed_over \u003d True"},{"line_number":310,"context_line":"            self.replication_enabled \u003d True"},{"line_number":311,"context_line":"        else:"},{"line_number":312,"context_line":"            self.active_cluster \u003d self._create_cluster_reference()"},{"line_number":313,"context_line":"            if self.configuration.replication_device:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_8feccdbb","side":"PARENT","line":310,"range":{"start_line":310,"start_character":12,"end_line":310,"end_character":43},"updated":"2020-08-24 20:30:46.000000000","message":"any reason to remove this?","commit_id":"2f600816a1d04510559fd0a474ea7be4cde5ee08"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d519d4392806c0421df7db21e5e66e9abf4a6a1b","unresolved":false,"context_lines":[{"line_number":380,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":381,"context_line":"                    LOG.error(\u0027Cluster pairing failed: %s\u0027, ex.msg)"},{"line_number":382,"context_line":"        LOG.debug(\u0027Initialized Cluster pair with ID: %s\u0027, pair_id)"},{"line_number":383,"context_line":"        remote_device[\u0027clusterPairID\u0027] \u003d pair_id"},{"line_number":384,"context_line":"        return pair_id"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def _get_cluster_info(self, remote_endpoint):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_0feb9d77","side":"PARENT","line":383,"range":{"start_line":383,"start_character":8,"end_line":383,"end_character":48},"updated":"2020-08-24 20:30:46.000000000","message":"and this?","commit_id":"2f600816a1d04510559fd0a474ea7be4cde5ee08"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"82346b2723df95a31fe7f31a7eb86dace3f99552","unresolved":false,"context_lines":[{"line_number":237,"context_line":"          2.1.0  - Add Cinder Active/Active support"},{"line_number":238,"context_line":"                    - Enable Active/Active support flag"},{"line_number":239,"context_line":"                    - Implement Active/Active replication support"},{"line_number":240,"context_line":"    \"\"\""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    VERSION \u003d \u00272.1.0\u0027"},{"line_number":243,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_2d8e6e78","line":240,"updated":"2020-08-24 19:01:57.000000000","message":"2.2.0 - Add storage assisted migration ....\n\nI believe that should bump the minor version since its a new feature of the driver.","commit_id":"adddad0d02d76a15270c1839325bba2686858ee2"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"82346b2723df95a31fe7f31a7eb86dace3f99552","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                    - Implement Active/Active replication support"},{"line_number":240,"context_line":"    \"\"\""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    VERSION \u003d \u00272.1.0\u0027"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    SUPPORTS_ACTIVE_ACTIVE \u003d True"},{"line_number":245,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_6d84e65e","line":242,"range":{"start_line":242,"start_character":17,"end_line":242,"end_character":18},"updated":"2020-08-24 19:01:57.000000000","message":"2.2.0","commit_id":"adddad0d02d76a15270c1839325bba2686858ee2"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"82346b2723df95a31fe7f31a7eb86dace3f99552","unresolved":false,"context_lines":[{"line_number":489,"context_line":"                    _wait_cluster_pairing_connected)"},{"line_number":490,"context_line":"                # TODO(sfernand): find the proper timings and use the"},{"line_number":491,"context_line":"                #  correct consts."},{"line_number":492,"context_line":"                remote_pair \u003d timer.start(interval\u003d3, timeout\u003d30).wait()"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"            except loopingcall.LoopingCallTimeOut:"},{"line_number":495,"context_line":"                msg \u003d _(\"Cluster pair not found or in an invalid state.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_cde37204","line":492,"range":{"start_line":492,"start_character":54,"end_line":492,"end_character":61},"updated":"2020-08-24 19:01:57.000000000","message":"You may want to add this timeout config as a backend option for SolidFire, and set a default value for it.","commit_id":"adddad0d02d76a15270c1839325bba2686858ee2"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"82346b2723df95a31fe7f31a7eb86dace3f99552","unresolved":false,"context_lines":[{"line_number":497,"context_line":"                #  ignores message"},{"line_number":498,"context_line":"                raise SolidFireReplicationPairingError(reason\u003dmsg)"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"        return None, remote_pair"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def _create_cluster_reference(self, endpoint\u003dNone):"},{"line_number":503,"context_line":"        cluster_ref \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_ed7d961c","line":500,"range":{"start_line":500,"start_character":15,"end_line":500,"end_character":32},"updated":"2020-08-24 19:01:57.000000000","message":"This is confusing, cause you are returning only the remote_pair above, and here a tuple.","commit_id":"adddad0d02d76a15270c1839325bba2686858ee2"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"bec5a91810e31ccf267a38d9a40550875aee3c99","unresolved":false,"context_lines":[{"line_number":1518,"context_line":"            LOG.debug(\"Starting pairing source volume ID: %s\","},{"line_number":1519,"context_line":"                      src_sf_volid)"},{"line_number":1520,"context_line":""},{"line_number":1521,"context_line":"            # Make sure we split any pair the volume have"},{"line_number":1522,"context_line":"            params \u003d {"},{"line_number":1523,"context_line":"                \u0027volumeID\u0027: src_sf_volid,"},{"line_number":1524,"context_line":"                \u0027mode\u0027: rep_type"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_8a4cc59e","line":1521,"range":{"start_line":1521,"start_character":53,"end_line":1521,"end_character":57},"updated":"2020-08-24 13:08:39.000000000","message":"has","commit_id":"adddad0d02d76a15270c1839325bba2686858ee2"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"bec5a91810e31ccf267a38d9a40550875aee3c99","unresolved":false,"context_lines":[{"line_number":1554,"context_line":""},{"line_number":1555,"context_line":"        _pair_volumes()"},{"line_number":1556,"context_line":""},{"line_number":1557,"context_line":"        # TODO(sfernand): should return a reference to allow volume"},{"line_number":1558,"context_line":"        #  pairing rollback/cleanup?"},{"line_number":1559,"context_line":"        return None, None"},{"line_number":1560,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_ea5c614c","line":1557,"range":{"start_line":1557,"start_character":32,"end_line":1557,"end_character":33},"updated":"2020-08-24 13:08:39.000000000","message":"should it return","commit_id":"adddad0d02d76a15270c1839325bba2686858ee2"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"82346b2723df95a31fe7f31a7eb86dace3f99552","unresolved":false,"context_lines":[{"line_number":2271,"context_line":"        volume[\u0027user_id\u0027] \u003d new_user"},{"line_number":2272,"context_line":"        return self.target_driver.ensure_export(context, volume, None)"},{"line_number":2273,"context_line":""},{"line_number":2274,"context_line":"    def _do_cluster_migrate_setup(self, src_volume, dst_cluster_ref):"},{"line_number":2275,"context_line":""},{"line_number":2276,"context_line":"        LOG.info(\"Setting up cluster migration for volume [%s]\","},{"line_number":2277,"context_line":"                 src_volume.name)"},{"line_number":2278,"context_line":""},{"line_number":2279,"context_line":"        # We should be able to rollback in case something went wrong"},{"line_number":2280,"context_line":"        def _do_migrate_setup_rollback(src_sf_volume_id, dst_sf_volume_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_4df5a256","line":2277,"range":{"start_line":2274,"start_character":0,"end_line":2277,"end_character":33},"updated":"2020-08-24 19:01:57.000000000","message":"This method name is a little bit confusing, like you were trying to migrate a cluster, not the volume.","commit_id":"adddad0d02d76a15270c1839325bba2686858ee2"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"82346b2723df95a31fe7f31a7eb86dace3f99552","unresolved":false,"context_lines":[{"line_number":2348,"context_line":"        try:"},{"line_number":2349,"context_line":"            timer \u003d loopingcall.FixedIntervalWithTimeoutLoopingCall("},{"line_number":2350,"context_line":"                _wait_sync_completed)"},{"line_number":2351,"context_line":"            timer.start(interval\u003d30, timeout\u003d3600).wait()"},{"line_number":2352,"context_line":"        except loopingcall.LoopingCallTimeOut:"},{"line_number":2353,"context_line":"            msg \u003d _(\"Timeout waiting volumes to sync.\")"},{"line_number":2354,"context_line":"            raise SolidFireDataSyncTimeoutError(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_2d566e2b","line":2351,"range":{"start_line":2351,"start_character":36,"end_line":2351,"end_character":48},"updated":"2020-08-24 19:01:57.000000000","message":"consider a backend config option for this timeout","commit_id":"adddad0d02d76a15270c1839325bba2686858ee2"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"82346b2723df95a31fe7f31a7eb86dace3f99552","unresolved":false,"context_lines":[{"line_number":2382,"context_line":"        self._issue_api_request(\u0027DeleteVolume\u0027, params)"},{"line_number":2383,"context_line":"        self._issue_api_request(\u0027PurgeDeletedVolume\u0027, params)"},{"line_number":2384,"context_line":""},{"line_number":2385,"context_line":"    def _do_cluster_migrate(self, volume, host, dst_config):"},{"line_number":2386,"context_line":""},{"line_number":2387,"context_line":"        LOG.debug(\"Start migrating volume [%(name)s] to cluster [%(cluster)s]\","},{"line_number":2388,"context_line":"                  {\"name\": volume.name, \"cluster\": host[\"host\"]})"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_882328a7","line":2385,"range":{"start_line":2385,"start_character":8,"end_line":2385,"end_character":27},"updated":"2020-08-24 19:01:57.000000000","message":"You aren\u0027t migrating a cluster, right? what about: \u0027_do_intercluster_volume_migration\u0027, something like that.","commit_id":"adddad0d02d76a15270c1839325bba2686858ee2"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d519d4392806c0421df7db21e5e66e9abf4a6a1b","unresolved":false,"context_lines":[{"line_number":2445,"context_line":"                          {\"active\": self.active_cluster[\u0027mvip\u0027],"},{"line_number":2446,"context_line":"                           \"dst\": dst_config.san_ip})"},{"line_number":2447,"context_line":""},{"line_number":2448,"context_line":"                migrate \u003d self._do_cluster_migrate"},{"line_number":2449,"context_line":"            else:"},{"line_number":2450,"context_line":"                LOG.info(\"Same cluster, nothing to do.\")"},{"line_number":2451,"context_line":"                return True, {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_cf93654e","line":2448,"range":{"start_line":2448,"start_character":16,"end_line":2448,"end_character":50},"updated":"2020-08-24 20:30:46.000000000","message":"You can call `self._do_cluster_migrate` directly in L2456 if there\u0027re no other possibilities for migrate method.","commit_id":"adddad0d02d76a15270c1839325bba2686858ee2"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d519d4392806c0421df7db21e5e66e9abf4a6a1b","unresolved":false,"context_lines":[{"line_number":2446,"context_line":"                           \"dst\": dst_config.san_ip})"},{"line_number":2447,"context_line":""},{"line_number":2448,"context_line":"                migrate \u003d self._do_cluster_migrate"},{"line_number":2449,"context_line":"            else:"},{"line_number":2450,"context_line":"                LOG.info(\"Same cluster, nothing to do.\")"},{"line_number":2451,"context_line":"                return True, {}"},{"line_number":2452,"context_line":"        else:"},{"line_number":2453,"context_line":"            LOG.info(\"Same host or backend, nothing to do.\")"},{"line_number":2454,"context_line":"            return True, {}"},{"line_number":2455,"context_line":""},{"line_number":2456,"context_line":"        updates \u003d migrate(volume, host, dst_config)"},{"line_number":2457,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_af4d51c5","line":2454,"range":{"start_line":2449,"start_character":0,"end_line":2454,"end_character":27},"updated":"2020-08-24 20:30:46.000000000","message":"Return early. It will reduce the indent level of the main code path:\n\n    if volume.host \u003d\u003d host[\"host\"] or src_backend \u003d\u003d dst_backend:\n        LOG.info(\"nothing to do\")\n        return True, {}\n\n    try:\n        dst_config \u003d ...\n    except:\n        ...\n\n    if self.active_cluster[\u0027mvip\u0027] \u003d\u003d dst_config.san_ip:\n        LOG.info(\"nothing to do\")\n        return True, {}\n\n    self._do_cluster_migrate(volume, host, dst_config)","commit_id":"adddad0d02d76a15270c1839325bba2686858ee2"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"655dad1ae60e740d94bd2b27a5e10b8d8fb82131","unresolved":false,"context_lines":[{"line_number":2438,"context_line":"        if self.active_cluster[\u0027mvip\u0027] \u003d\u003d dst_config.san_ip:"},{"line_number":2439,"context_line":"            LOG.info(\"Same cluster, nothing to do.\")"},{"line_number":2440,"context_line":"            return True, {}"},{"line_number":2441,"context_line":"        else:"},{"line_number":2442,"context_line":"            LOG.info(\"Source and destination clusters are different. \""},{"line_number":2443,"context_line":"                     \"A cluster migration will be performed.\")"},{"line_number":2444,"context_line":"            LOG.debug(\"Active cluster: [%(active)s], \""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_39eb0213","line":2441,"range":{"start_line":2441,"start_character":8,"end_line":2441,"end_character":13},"updated":"2020-08-28 13:04:37.000000000","message":"Now that you covered all the corner cases with early return, you can write the happy path code without any conditions.","commit_id":"2533d656b0e06787b36210176b0b48a884bcc5e4"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"44d02e78693220159d7381db08adab2b17d14fbd","unresolved":false,"context_lines":[{"line_number":2438,"context_line":"        if self.active_cluster[\u0027mvip\u0027] \u003d\u003d dst_config.san_ip:"},{"line_number":2439,"context_line":"            LOG.info(\"Same cluster, nothing to do.\")"},{"line_number":2440,"context_line":"            return True, {}"},{"line_number":2441,"context_line":"        else:"},{"line_number":2442,"context_line":"            LOG.info(\"Source and destination clusters are different. \""},{"line_number":2443,"context_line":"                     \"A cluster migration will be performed.\")"},{"line_number":2444,"context_line":"            LOG.debug(\"Active cluster: [%(active)s], \""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_c81c8dc3","line":2441,"range":{"start_line":2441,"start_character":8,"end_line":2441,"end_character":13},"in_reply_to":"9f560f44_2d6ba5f1","updated":"2020-09-01 02:52:29.000000000","message":"Yeah manager.py has several `else` clauses right after raising exceptions in the preceding `if` clause.\n\nI think it\u0027s better to say \"this is the happy path\" rather than \"do the following if they\u0027re different clusters\", but it\u0027s just a nit.","commit_id":"2533d656b0e06787b36210176b0b48a884bcc5e4"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"e46d19236eaac1cc2ba1b2d481875115cf7a9528","unresolved":false,"context_lines":[{"line_number":2438,"context_line":"        if self.active_cluster[\u0027mvip\u0027] \u003d\u003d dst_config.san_ip:"},{"line_number":2439,"context_line":"            LOG.info(\"Same cluster, nothing to do.\")"},{"line_number":2440,"context_line":"            return True, {}"},{"line_number":2441,"context_line":"        else:"},{"line_number":2442,"context_line":"            LOG.info(\"Source and destination clusters are different. \""},{"line_number":2443,"context_line":"                     \"A cluster migration will be performed.\")"},{"line_number":2444,"context_line":"            LOG.debug(\"Active cluster: [%(active)s], \""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_2d6ba5f1","line":2441,"range":{"start_line":2441,"start_character":8,"end_line":2441,"end_character":13},"in_reply_to":"9f560f44_39eb0213","updated":"2020-08-31 12:58:25.000000000","message":"I got it, but i would prefer this more explicit. This is a common pratice in manager.py so it is not really a problem, right?","commit_id":"2533d656b0e06787b36210176b0b48a884bcc5e4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"196e25af59be0220116421001527166a7ce55fa4","unresolved":false,"context_lines":[{"line_number":503,"context_line":"                    _wait_cluster_pairing_connected)"},{"line_number":504,"context_line":"                remote_pair \u003d timer.start("},{"line_number":505,"context_line":"                    interval\u003d3,"},{"line_number":506,"context_line":"                    timeout\u003dself.configuration.sf_cluster_pairing_timeout) \\"},{"line_number":507,"context_line":"                    .wait()"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"            except loopingcall.LoopingCallTimeOut:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_0db7fc22","line":506,"range":{"start_line":506,"start_character":75,"end_line":506,"end_character":76},"updated":"2020-09-11 15:31:35.000000000","message":"We\u0027ve made an effort to avoid using \\ to span multiple lines. This can cause very subtle bugs. Please break within a () or wrap the call with () to span lines without the need to use \\.","commit_id":"b1d6210d454c05aeca2fbe944c6b6e82c508372f"}],"releasenotes/notes/sf-add-migration-support-691ace064d7576e9.yaml":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"82346b2723df95a31fe7f31a7eb86dace3f99552","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    NetApp SolidFire driver:"},{"line_number":5,"context_line":"    Added inter-cluster volume migration (storage assisted) support. This allows "},{"line_number":6,"context_line":"    users to migrate volumes between different SolidFire backends."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9f560f44_430a93d1","line":6,"range":{"start_line":6,"start_character":10,"end_line":6,"end_character":20},"updated":"2020-08-24 19:01:57.000000000","message":"to efficiently migration volumes","commit_id":"adddad0d02d76a15270c1839325bba2686858ee2"}]}
