)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"7438ae768fdfb8a727d3053d693891331db3fb91","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch implements cinder Replication version 2 in the"},{"line_number":10,"context_line":"Dell Storage Center Cinder driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Also added the check_result function to standardize the logging of"},{"line_number":13,"context_line":"Dell SC Rest API errors."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I6e4fee07deffb9e2f86c5c514a0bcf85b37d57a1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba8a016a_a7166e53","line":12,"updated":"2015-11-22 01:52:46.000000000","message":"s/added/adds for you use \"implements\" not \"implemented\" above.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"}],"cinder/tests/unit/test_dellsc.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"887a1309e87c7897adbd5cfa862e8cbe498ab10d","unresolved":false,"context_lines":[{"line_number":1792,"context_line":"        ret \u003d self.driver.replication_enable({}, vref)"},{"line_number":1793,"context_line":"        self.assertEqual(model_update, ret)"},{"line_number":1794,"context_line":"        # we didn\u0027t try to resume, right?"},{"line_number":1795,"context_line":"        assert mock_resume_replication.call_count \u003d\u003d 0"},{"line_number":1796,"context_line":"        # Good run"},{"line_number":1797,"context_line":"        vref \u003d {\u0027replication_driver_data\u0027: \u002712345\u0027,"},{"line_number":1798,"context_line":"                \u0027id\u0027: \u0027guid\u0027}"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_828dd67d","line":1795,"updated":"2015-12-03 05:31:23.000000000","message":"Please, replace such asserts with self.assertEqual calls","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"937b4c986dc6fd9c5eb39372240879ced0d69728","unresolved":false,"context_lines":[{"line_number":1792,"context_line":"        ret \u003d self.driver.replication_enable({}, vref)"},{"line_number":1793,"context_line":"        self.assertEqual(model_update, ret)"},{"line_number":1794,"context_line":"        # we didn\u0027t try to resume, right?"},{"line_number":1795,"context_line":"        assert mock_resume_replication.call_count \u003d\u003d 0"},{"line_number":1796,"context_line":"        # Good run"},{"line_number":1797,"context_line":"        vref \u003d {\u0027replication_driver_data\u0027: \u002712345\u0027,"},{"line_number":1798,"context_line":"                \u0027id\u0027: \u0027guid\u0027}"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_a3c5175c","line":1795,"in_reply_to":"9a8ffd7b_828dd67d","updated":"2015-12-03 22:08:28.000000000","message":"+1","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"887a1309e87c7897adbd5cfa862e8cbe498ab10d","unresolved":false,"context_lines":[{"line_number":1921,"context_line":"                              mock_close_connection,"},{"line_number":1922,"context_line":"                              mock_open_connection,"},{"line_number":1923,"context_line":"                              mock_init):"},{"line_number":1924,"context_line":"        # mock_find_sc.side_effect \u003d []"},{"line_number":1925,"context_line":"        # backends \u003d self.driver.backends"},{"line_number":1926,"context_line":"        # self.driver.backends \u003d [{\u0027target_device_id\u0027: \u002712345\u0027,"},{"line_number":1927,"context_line":"        #                          \u0027managed_backend_name\u0027: \u0027host@dell1\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_c2de7e6c","line":1924,"updated":"2015-12-03 05:31:23.000000000","message":"Commented code should be removed","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"937b4c986dc6fd9c5eb39372240879ced0d69728","unresolved":false,"context_lines":[{"line_number":1921,"context_line":"                              mock_close_connection,"},{"line_number":1922,"context_line":"                              mock_open_connection,"},{"line_number":1923,"context_line":"                              mock_init):"},{"line_number":1924,"context_line":"        # mock_find_sc.side_effect \u003d []"},{"line_number":1925,"context_line":"        # backends \u003d self.driver.backends"},{"line_number":1926,"context_line":"        # self.driver.backends \u003d [{\u0027target_device_id\u0027: \u002712345\u0027,"},{"line_number":1927,"context_line":"        #                          \u0027managed_backend_name\u0027: \u0027host@dell1\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_c3a3839d","line":1924,"in_reply_to":"7a740942_e3cfb0b1","updated":"2015-12-03 22:08:28.000000000","message":"In that case, you can use TODO and add comments that you will add a test later, but not keep so many lines of commented out code.  Also this test is just doing a pass.","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"bbfa7c96360b34e414dec9e13d4c7825d5368c4a","unresolved":false,"context_lines":[{"line_number":1921,"context_line":"                              mock_close_connection,"},{"line_number":1922,"context_line":"                              mock_open_connection,"},{"line_number":1923,"context_line":"                              mock_init):"},{"line_number":1924,"context_line":"        # mock_find_sc.side_effect \u003d []"},{"line_number":1925,"context_line":"        # backends \u003d self.driver.backends"},{"line_number":1926,"context_line":"        # self.driver.backends \u003d [{\u0027target_device_id\u0027: \u002712345\u0027,"},{"line_number":1927,"context_line":"        #                          \u0027managed_backend_name\u0027: \u0027host@dell1\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_e3cfb0b1","line":1924,"in_reply_to":"9a8ffd7b_c2de7e6c","updated":"2015-12-03 19:54:25.000000000","message":"Expect a test in here at some point.","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"}],"cinder/tests/unit/test_dellscapi.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"937b4c986dc6fd9c5eb39372240879ced0d69728","unresolved":false,"context_lines":[{"line_number":5835,"context_line":"                       \u0027_get_json\u0027,"},{"line_number":5836,"context_line":"                       return_value\u003d[])"},{"line_number":5837,"context_line":"    # def _find_qos(self, qosnode):"},{"line_number":5838,"context_line":"    def test__find_qos_create_fail(self,"},{"line_number":5839,"context_line":"                                   mock_get_json,"},{"line_number":5840,"context_line":"                                   mock_post,"},{"line_number":5841,"context_line":"                                   mock_close_connection,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_83933bfa","line":5838,"updated":"2015-12-03 22:08:28.000000000","message":"Is there any special reason to have some test functions named \"test__\" with double underscores and others with \"test_\" with single underscore?  No big deal.  Just looks odd.","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"937b4c986dc6fd9c5eb39372240879ced0d69728","unresolved":false,"context_lines":[{"line_number":6229,"context_line":"                               mock_open_connection,"},{"line_number":6230,"context_line":"                               mock_init):"},{"line_number":6231,"context_line":"        # First we test that we found the volume and got back True (or whatever"},{"line_number":6232,"context_line":"        # delete_replication returns.  Could be banana.  Doesn\u0027t matter.)"},{"line_number":6233,"context_line":"        # Then we do not find it but we do find the repl volume."},{"line_number":6234,"context_line":"        # Then we find neither."},{"line_number":6235,"context_line":"        # Then we find the reply volume but we get an error response."}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_63364f05","line":6232,"updated":"2015-12-03 22:08:28.000000000","message":"\"banana\"?  You really want to keep this in the code?:)  Could be confusing for someone new to read this though.  Better to specify a expected behavior rather than \"anything works\".","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"3874d8264e0a867fcbe82e7b8f2b622009386b08","unresolved":false,"context_lines":[{"line_number":5840,"context_line":"                                   mock_post,"},{"line_number":5841,"context_line":"                                   mock_close_connection,"},{"line_number":5842,"context_line":"                                   mock_open_connection,"},{"line_number":5843,"context_line":"                                   mock_init):"},{"line_number":5844,"context_line":"        mock_post.side_effect \u003d [self.RESPONSE_200, self.RESPONSE_400]"},{"line_number":5845,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":5846,"context_line":"                          self.scapi._find_qos,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_bddecfda","line":5843,"updated":"2015-12-08 21:32:47.000000000","message":"xing-yang: \"Is there any special reason to have some test functions named \"test__\" with double underscores and others with \"test_\" with single underscore? No big deal. Just looks odd.\"\n\nThey are testing a function that begins with an underscore.  So a test for _fn becomes test__fn.  A test for fn becomes test_fn.  I don\u0027t think I\u0027m consistent with this.","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"3874d8264e0a867fcbe82e7b8f2b622009386b08","unresolved":false,"context_lines":[{"line_number":6231,"context_line":"                               mock_open_connection,"},{"line_number":6232,"context_line":"                               mock_init):"},{"line_number":6233,"context_line":"        # First we test that we found the volume and got back True (or whatever"},{"line_number":6234,"context_line":"        # delete_replication returns.  Could be banana.  Doesn\u0027t matter.)"},{"line_number":6235,"context_line":"        # Then we do not find it but we do find the repl volume."},{"line_number":6236,"context_line":"        # Then we find neither."},{"line_number":6237,"context_line":"        # Then we find the reply volume but we get an error response."}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_1da12346","line":6234,"updated":"2015-12-08 21:32:47.000000000","message":"xing-yang:\"\"banana\"? You really want to keep this in the code?:) Could be confusing for someone new to read this though. Better to specify a expected behavior rather than \"anything works\".\"\n\nFunction changed.  Doesn\u0027t apply anymore.","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"}],"cinder/volume/drivers/dell/dell_storagecenter_api.py":[{"author":{"_account_id":15011,"name":"Jeff Seiler","email":"jeff_seiler@dell.com","username":"jseiler"},"change_message_id":"a7766e8129b65ceefbbb43985644c2819505d0ad","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        # Failover Check."},{"line_number":794,"context_line":"        # If an empty list was returned then either there is no such volume"},{"line_number":795,"context_line":"        # or we are in a failover state.  Look for failover volume."},{"line_number":796,"context_line":"        if not vollist:"},{"line_number":797,"context_line":"            LOG.debug(\u0027Unable to locate volume. Checking for failover.\u0027)"},{"line_number":798,"context_line":"            # Get our failover name."},{"line_number":799,"context_line":"            fn \u003d self._failover_name(name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_45623caf","line":796,"updated":"2015-11-13 04:04:04.000000000","message":"Before doing the failover check, do you want to check that replication is enabled first.","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":15011,"name":"Jeff Seiler","email":"jeff_seiler@dell.com","username":"jseiler"},"change_message_id":"a7766e8129b65ceefbbb43985644c2819505d0ad","unresolved":false,"context_lines":[{"line_number":1832,"context_line":"        if scserver.get(\u0027deleteAllowed\u0027) is True:"},{"line_number":1833,"context_line":"            r \u003d self.client.delete(\u0027StorageCenter/ScServer/%s\u0027"},{"line_number":1834,"context_line":"                                   % self._get_id(scserver))"},{"line_number":1835,"context_line":"            if self._check_result(r):"},{"line_number":1836,"context_line":"                LOG.debug(\u0027ScServer deleted.\u0027)"},{"line_number":1837,"context_line":"        else:"},{"line_number":1838,"context_line":"            LOG.debug(\u0027_delete_server: deleteAllowed is False.\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_e677c406","line":1835,"updated":"2015-11-13 04:04:04.000000000","message":"Did you want a comment for the expected response (i.e. # 200 expected.)?","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":15011,"name":"Jeff Seiler","email":"jeff_seiler@dell.com","username":"jseiler"},"change_message_id":"40a72ffebc2b937e37615b2bafc17c4fdc097389","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        # Failover Check."},{"line_number":794,"context_line":"        # If an empty list was returned then either there is no such volume"},{"line_number":795,"context_line":"        # or we are in a failover state.  Look for failover volume."},{"line_number":796,"context_line":"        if not vollist:"},{"line_number":797,"context_line":"            LOG.debug(\u0027Unable to locate volume. Checking for failover.\u0027)"},{"line_number":798,"context_line":"            # Get our failover name."},{"line_number":799,"context_line":"            fn \u003d self._failover_name(name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_57b98c2d","line":796,"updated":"2015-11-16 16:07:41.000000000","message":"Before doing the failover check, do you want to check that replication is enabled first.","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"8da093dca2666081429a169f43135b143cde1384","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        # Failover Check."},{"line_number":794,"context_line":"        # If an empty list was returned then either there is no such volume"},{"line_number":795,"context_line":"        # or we are in a failover state.  Look for failover volume."},{"line_number":796,"context_line":"        if not vollist:"},{"line_number":797,"context_line":"            LOG.debug(\u0027Unable to locate volume. Checking for failover.\u0027)"},{"line_number":798,"context_line":"            # Get our failover name."},{"line_number":799,"context_line":"            fn \u003d self._failover_name(name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_d4bc5a6e","line":796,"in_reply_to":"ba8a016a_57b98c2d","updated":"2015-11-17 16:30:55.000000000","message":"Replication doesn\u0027t have to be enabled on this backend.  It has to be enabled on the source backend.  If we pick up the volume with this there has been a failover as evidenced by the fact the volume has the failover_name.\n\nPublic APIs are no fun.","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"5779975325a329c3d5246f5a239c12b4dbd376f5","unresolved":false,"context_lines":[{"line_number":416,"context_line":"        r \u003d self.client.post(\u0027ApiConnection/Logout\u0027,"},{"line_number":417,"context_line":"                             {})"},{"line_number":418,"context_line":"        # 204 expected."},{"line_number":419,"context_line":"        self._check_result(r)"},{"line_number":420,"context_line":"        self.client \u003d None"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def find_sc(self, ssn\u003d-1):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_52193787","line":419,"updated":"2015-11-26 09:07:15.000000000","message":"The `self._check_result(r)` doesn\u0027t actually verify that it is 204. Is that  safe? Maybe you could change the comment together.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":416,"context_line":"        r \u003d self.client.post(\u0027ApiConnection/Logout\u0027,"},{"line_number":417,"context_line":"                             {})"},{"line_number":418,"context_line":"        # 204 expected."},{"line_number":419,"context_line":"        self._check_result(r)"},{"line_number":420,"context_line":"        self.client \u003d None"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def find_sc(self, ssn\u003d-1):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_6030899f","line":419,"in_reply_to":"9a8ffd7b_52193787","updated":"2015-11-30 21:18:51.000000000","message":"It is fine.  Anything in the 200 range is fine.  I would expect 204 so I like that here if I\u0027m in the debugger.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"5779975325a329c3d5246f5a239c12b4dbd376f5","unresolved":false,"context_lines":[{"line_number":960,"context_line":"        :returns: Dell server object."},{"line_number":961,"context_line":"        \"\"\""},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"        LOG.info(_LI(\u0027ScPhysicalServer create %s\u0027), wwnoriscsiname)"},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"        scserver \u003d None"},{"line_number":966,"context_line":"        payload \u003d {}"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_6d2a5e80","line":963,"updated":"2015-11-26 09:07:15.000000000","message":"create \u003d\u003e creates?","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":960,"context_line":"        :returns: Dell server object."},{"line_number":961,"context_line":"        \"\"\""},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"        LOG.info(_LI(\u0027ScPhysicalServer create %s\u0027), wwnoriscsiname)"},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"        scserver \u003d None"},{"line_number":966,"context_line":"        payload \u003d {}"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_c0cdb587","line":963,"in_reply_to":"9a8ffd7b_6d2a5e80","updated":"2015-11-30 21:18:51.000000000","message":"Changing to         LOG.info(_LI(\u0027Creating server %s\u0027), wwnoriscsiname)","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"5779975325a329c3d5246f5a239c12b4dbd376f5","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"            domains \u003d self._get_json(r)"},{"line_number":1072,"context_line":"            return domains"},{"line_number":1073,"context_line":""},{"line_number":1074,"context_line":"        LOG.error(_LE(\u0027Error getting FaultDomainList\u0027))"},{"line_number":1075,"context_line":"        return None"},{"line_number":1076,"context_line":""},{"line_number":1077,"context_line":"    def _find_fc_initiators(self, scserver):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_ad47e649","line":1074,"updated":"2015-11-26 09:07:15.000000000","message":"Would you add more detailed error info, so that users are easier to locate problems. The previous `LOG.debug` is deleted.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"            domains \u003d self._get_json(r)"},{"line_number":1072,"context_line":"            return domains"},{"line_number":1073,"context_line":""},{"line_number":1074,"context_line":"        LOG.error(_LE(\u0027Error getting FaultDomainList\u0027))"},{"line_number":1075,"context_line":"        return None"},{"line_number":1076,"context_line":""},{"line_number":1077,"context_line":"    def _find_fc_initiators(self, scserver):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_20860114","line":1074,"in_reply_to":"9a8ffd7b_ad47e649","updated":"2015-11-30 21:18:51.000000000","message":"Changed to LOG.error(_LE(\u0027Error getting FaultDomainList for %s\u0027), cportid) but I\u0027m not sure that helps the user.  Doesn\u0027t hurt em either.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"5779975325a329c3d5246f5a239c12b4dbd376f5","unresolved":false,"context_lines":[{"line_number":2169,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":2170,"context_line":"                _(\u0027Error retrieving volume size\u0027))"},{"line_number":2171,"context_line":""},{"line_number":2172,"context_line":"    def _import_one(self, scvolume, newname):"},{"line_number":2173,"context_line":"        # First thing to check is if the size is something we can"},{"line_number":2174,"context_line":"        # work with."},{"line_number":2175,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_2df776f6","line":2172,"updated":"2015-11-26 09:07:15.000000000","message":"It looks like nowhere invokes `_import_one`. Would you explain the purpose?","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":2169,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":2170,"context_line":"                _(\u0027Error retrieving volume size\u0027))"},{"line_number":2171,"context_line":""},{"line_number":2172,"context_line":"    def _import_one(self, scvolume, newname):"},{"line_number":2173,"context_line":"        # First thing to check is if the size is something we can"},{"line_number":2174,"context_line":"        # work with."},{"line_number":2175,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_607de9e6","line":2172,"in_reply_to":"9a8ffd7b_2df776f6","updated":"2015-11-30 21:18:51.000000000","message":"Good catch.  Parts of manage_existing and _complete_failover use the same code.  I think this was to complete that.  Will combine the 3 items.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"5779975325a329c3d5246f5a239c12b4dbd376f5","unresolved":false,"context_lines":[{"line_number":2373,"context_line":"                                   payload)"},{"line_number":2374,"context_line":"            if self._check_result(r):"},{"line_number":2375,"context_line":"                # check that we whacked the dest volume"},{"line_number":2376,"context_line":"                LOG.info(_LI(\u0027Replication deleted.\u0027))"},{"line_number":2377,"context_line":"                return True"},{"line_number":2378,"context_line":"            else:"},{"line_number":2379,"context_line":"                LOG.error(_LE(\u0027Unable to delete replication for \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_0d271265","line":2376,"updated":"2015-11-26 09:07:15.000000000","message":"Would you add volume id/name to the log?","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":2373,"context_line":"                                   payload)"},{"line_number":2374,"context_line":"            if self._check_result(r):"},{"line_number":2375,"context_line":"                # check that we whacked the dest volume"},{"line_number":2376,"context_line":"                LOG.info(_LI(\u0027Replication deleted.\u0027))"},{"line_number":2377,"context_line":"                return True"},{"line_number":2378,"context_line":"            else:"},{"line_number":2379,"context_line":"                LOG.error(_LE(\u0027Unable to delete replication for \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_e0ac7937","line":2376,"in_reply_to":"9a8ffd7b_0d271265","updated":"2015-11-30 21:18:51.000000000","message":"Changed to                 LOG.info(_LI(\u0027Replication %(vol)s to %(dest)s.\u0027),\n                         {\u0027vol\u0027: scvolume.get(\u0027name\u0027),\n                          \u0027dest\u0027: destssn})","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"937b4c986dc6fd9c5eb39372240879ced0d69728","unresolved":false,"context_lines":[{"line_number":349,"context_line":"            LOG.error(_LE(\u0027Error invalid json: %s\u0027),"},{"line_number":350,"context_line":"                      blob)"},{"line_number":351,"context_line":"        except TypeError:"},{"line_number":352,"context_line":"            LOG.error(_LE(\u0027Error TypeError.  Is this a test case?\u0027))"},{"line_number":353,"context_line":"        return None"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    def _get_id(self, blob):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_86b90931","line":352,"updated":"2015-12-03 22:08:28.000000000","message":"By the way, OpenStack doc team wants only one space after the period before the next sentence.  It\u0027s trivial, but just FYI.","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"937b4c986dc6fd9c5eb39372240879ced0d69728","unresolved":false,"context_lines":[{"line_number":388,"context_line":""},{"line_number":389,"context_line":"        if not self._check_result(r):"},{"line_number":390,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":391,"context_line":"                _(\u0027Failed to connect to Dell REST API\u0027))"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        # We should be logged in.  Try to grab the api version out of the"},{"line_number":394,"context_line":"        # response."}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_e6c1ed81","line":391,"updated":"2015-12-03 22:08:28.000000000","message":"The correct usage is:\n\nexception.VolumeBackendAPIException(data\u003dmsg)","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"937b4c986dc6fd9c5eb39372240879ced0d69728","unresolved":false,"context_lines":[{"line_number":787,"context_line":"                if scvolume:"},{"line_number":788,"context_line":"                    LOG.info(_LI(\u0027Imported %(fail)s to %(guid)s.\u0027),"},{"line_number":789,"context_line":"                             {\u0027fail\u0027: fn,"},{"line_number":790,"context_line":"                              \u0027quid\u0027: name})"},{"line_number":791,"context_line":"                    return scvolume"},{"line_number":792,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":793,"context_line":"                    _(\u0027Unable to complete import of %s.\u0027) % fn)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_866ca99d","line":790,"updated":"2015-12-03 22:08:28.000000000","message":"s/quid/guid","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"937b4c986dc6fd9c5eb39372240879ced0d69728","unresolved":false,"context_lines":[{"line_number":790,"context_line":"                              \u0027quid\u0027: name})"},{"line_number":791,"context_line":"                    return scvolume"},{"line_number":792,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":793,"context_line":"                    _(\u0027Unable to complete import of %s.\u0027) % fn)"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        # If multiple volumes of the same name are found we need to error."},{"line_number":796,"context_line":"        if len(vollist) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_460561c0","line":793,"updated":"2015-12-03 22:08:28.000000000","message":"Same comment as earlier.  Looks like this is like this in existing code already.  I\u0027m not asking you to change existing code.  Comments are just for the new code.","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"937b4c986dc6fd9c5eb39372240879ced0d69728","unresolved":false,"context_lines":[{"line_number":2297,"context_line":""},{"line_number":2298,"context_line":"        LOG.error(_LE(\u0027Unable to find or create QoS Node named %s\u0027), qosnode)"},{"line_number":2299,"context_line":"        raise exception.VolumeBackendAPIException("},{"line_number":2300,"context_line":"            _(\u0027Failed to find QoSnode\u0027))"},{"line_number":2301,"context_line":""},{"line_number":2302,"context_line":"    def get_screplication(self, scvolume, destssn):"},{"line_number":2303,"context_line":"        \u0027\u0027\u0027Find the screplication object for the volume on the dest backend."}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_c6ce3183","line":2300,"updated":"2015-12-03 22:08:28.000000000","message":"Here too","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"887a1309e87c7897adbd5cfa862e8cbe498ab10d","unresolved":false,"context_lines":[{"line_number":2370,"context_line":"                try:"},{"line_number":2371,"context_line":"                    # Go for broke."},{"line_number":2372,"context_line":"                    diskfolder \u003d self._get_json(r)[0]"},{"line_number":2373,"context_line":"                except Exception:"},{"line_number":2374,"context_line":"                    # We just log this as an error and return nothing."},{"line_number":2375,"context_line":"                    LOG.error(_LE(\u0027Unable to find \u0027"},{"line_number":2376,"context_line":"                                  \u0027disk folder %(name)s on %(ssn)s\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_623232a9","line":2373,"updated":"2015-12-03 05:31:23.000000000","message":"Can we handle more specific exception here?","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"bbfa7c96360b34e414dec9e13d4c7825d5368c4a","unresolved":false,"context_lines":[{"line_number":2370,"context_line":"                try:"},{"line_number":2371,"context_line":"                    # Go for broke."},{"line_number":2372,"context_line":"                    diskfolder \u003d self._get_json(r)[0]"},{"line_number":2373,"context_line":"                except Exception:"},{"line_number":2374,"context_line":"                    # We just log this as an error and return nothing."},{"line_number":2375,"context_line":"                    LOG.error(_LE(\u0027Unable to find \u0027"},{"line_number":2376,"context_line":"                                  \u0027disk folder %(name)s on %(ssn)s\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_6854ff53","line":2373,"in_reply_to":"9a8ffd7b_623232a9","updated":"2015-12-03 19:54:25.000000000","message":"There are a lot of things that can go wrong with that call and the desire is to eat them all.","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"887a1309e87c7897adbd5cfa862e8cbe498ab10d","unresolved":false,"context_lines":[{"line_number":2372,"context_line":"                    diskfolder \u003d self._get_json(r)[0]"},{"line_number":2373,"context_line":"                except Exception:"},{"line_number":2374,"context_line":"                    # We just log this as an error and return nothing."},{"line_number":2375,"context_line":"                    LOG.error(_LE(\u0027Unable to find \u0027"},{"line_number":2376,"context_line":"                                  \u0027disk folder %(name)s on %(ssn)s\u0027),"},{"line_number":2377,"context_line":"                              {\u0027name\u0027: foldername,"},{"line_number":2378,"context_line":"                               \u0027ssn\u0027: ssn})"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_e2e5c208","line":2375,"updated":"2015-12-03 05:31:23.000000000","message":"Please, add LOG.debug call to log an exception","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"bbfa7c96360b34e414dec9e13d4c7825d5368c4a","unresolved":false,"context_lines":[{"line_number":2372,"context_line":"                    diskfolder \u003d self._get_json(r)[0]"},{"line_number":2373,"context_line":"                except Exception:"},{"line_number":2374,"context_line":"                    # We just log this as an error and return nothing."},{"line_number":2375,"context_line":"                    LOG.error(_LE(\u0027Unable to find \u0027"},{"line_number":2376,"context_line":"                                  \u0027disk folder %(name)s on %(ssn)s\u0027),"},{"line_number":2377,"context_line":"                              {\u0027name\u0027: foldername,"},{"line_number":2378,"context_line":"                               \u0027ssn\u0027: ssn})"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_a8b5077f","line":2375,"in_reply_to":"9a8ffd7b_e2e5c208","updated":"2015-12-03 19:54:25.000000000","message":"What do you want added here? Switch the LOG.error to LOG.debug or LOG.debug(ex)?","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"887a1309e87c7897adbd5cfa862e8cbe498ab10d","unresolved":false,"context_lines":[{"line_number":2455,"context_line":"        pf.append(\u0027Name\u0027, self._repl_name(guid))"},{"line_number":2456,"context_line":"        # TODO(tswanson): We might not know this info.  So either do a try"},{"line_number":2457,"context_line":"        # catch on this or get rid of it."},{"line_number":2458,"context_line":"        # vfname \u003d (self.vfname if self.vfname.endswith(\u0027/\u0027)"},{"line_number":2459,"context_line":"        #           else self.vfname + \u0027/\u0027)"},{"line_number":2460,"context_line":"        # pf.append(\u0027volumeFolderPath\u0027, vfname)"},{"line_number":2461,"context_line":"        r \u003d self.client.post(\u0027StorageCenter/ScVolume/GetList\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_22b66af9","line":2458,"updated":"2015-12-03 05:31:23.000000000","message":"Please, remove commented code","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"bbfa7c96360b34e414dec9e13d4c7825d5368c4a","unresolved":false,"context_lines":[{"line_number":2455,"context_line":"        pf.append(\u0027Name\u0027, self._repl_name(guid))"},{"line_number":2456,"context_line":"        # TODO(tswanson): We might not know this info.  So either do a try"},{"line_number":2457,"context_line":"        # catch on this or get rid of it."},{"line_number":2458,"context_line":"        # vfname \u003d (self.vfname if self.vfname.endswith(\u0027/\u0027)"},{"line_number":2459,"context_line":"        #           else self.vfname + \u0027/\u0027)"},{"line_number":2460,"context_line":"        # pf.append(\u0027volumeFolderPath\u0027, vfname)"},{"line_number":2461,"context_line":"        r \u003d self.client.post(\u0027StorageCenter/ScVolume/GetList\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_68771fd5","line":2458,"in_reply_to":"9a8ffd7b_22b66af9","updated":"2015-12-03 19:54:25.000000000","message":"Will do.","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"67e5d4fc96800bb5962bbbabc11696aaa382469e","unresolved":false,"context_lines":[{"line_number":350,"context_line":"            LOG.error(_LE(\u0027Error invalid json: %s\u0027),"},{"line_number":351,"context_line":"                      blob)"},{"line_number":352,"context_line":"        except TypeError:"},{"line_number":353,"context_line":"            LOG.error(_LE(\u0027Error TypeError.  Is this a test case?\u0027))"},{"line_number":354,"context_line":"        return None"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    def _get_id(self, blob):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_3da63b54","line":353,"updated":"2015-12-09 12:56:36.000000000","message":"Please, add more useful log message here and below","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"43b001feff4c85fa26f71298e2f2d25586e1ecf2","unresolved":false,"context_lines":[{"line_number":350,"context_line":"            LOG.error(_LE(\u0027Error invalid json: %s\u0027),"},{"line_number":351,"context_line":"                      blob)"},{"line_number":352,"context_line":"        except TypeError:"},{"line_number":353,"context_line":"            LOG.error(_LE(\u0027Error TypeError.  Is this a test case?\u0027))"},{"line_number":354,"context_line":"        return None"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    def _get_id(self, blob):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_70b5ba2f","line":353,"in_reply_to":"7a740942_3da63b54","updated":"2015-12-09 16:48:20.000000000","message":"Will do.","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"67e5d4fc96800bb5962bbbabc11696aaa382469e","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        r \u003d self.client.post(url,"},{"line_number":471,"context_line":"                             payload)"},{"line_number":472,"context_line":"        # 201 expected."},{"line_number":473,"context_line":"        if self._check_result(r):"},{"line_number":474,"context_line":"            scfolder \u003d self._first_result(r)"},{"line_number":475,"context_line":"        return scfolder"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_9d42cf67","line":472,"updated":"2015-12-09 12:56:36.000000000","message":"Such comments are not useful. Please remove them","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"43b001feff4c85fa26f71298e2f2d25586e1ecf2","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        r \u003d self.client.post(url,"},{"line_number":471,"context_line":"                             payload)"},{"line_number":472,"context_line":"        # 201 expected."},{"line_number":473,"context_line":"        if self._check_result(r):"},{"line_number":474,"context_line":"            scfolder \u003d self._first_result(r)"},{"line_number":475,"context_line":"        return scfolder"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_05451616","line":472,"in_reply_to":"7a740942_9d42cf67","updated":"2015-12-09 16:48:20.000000000","message":"I disagree completely.  They\u0027ve helped me quite a number of times.","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":15011,"name":"Jeff Seiler","email":"jeff_seiler@dell.com","username":"jseiler"},"change_message_id":"78bcc862fca80b452fa07cd4fd918002dcfcad2d","unresolved":false,"context_lines":[{"line_number":1617,"context_line":"                    if self._check_result(r):"},{"line_number":1618,"context_line":"                        # Check our result in the json."},{"line_number":1619,"context_line":"                        result \u003d self._get_json(r)"},{"line_number":1620,"context_line":"                        # Cascade and droptop return a boolean directly."},{"line_number":1621,"context_line":"                        # Droptop2 on up return it in a dict under \u0027result\u0027."},{"line_number":1622,"context_line":"                        if result is True or (type(result) is dict and"},{"line_number":1623,"context_line":"                                              result.get(\u0027result\u0027)):"},{"line_number":1624,"context_line":"                            LOG.debug(\u0027Volume %(vol)s unmapped from %(srv)s\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_5264cf20","line":1621,"range":{"start_line":1620,"start_character":26,"end_line":1621,"end_character":75},"updated":"2016-01-04 20:43:30.000000000","message":"Would it make sense to include the EM versions as well. The project names are not known to the outside world. Also, once EM is released, it\u0027s harder to correlate a project name to a version name.\nCascade (15.1), Droptop (15.2), Droptop2 (15.3)","commit_id":"d4d3d2f54d2c157774325dceb93259070beb0b7b"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"aa335d8f60c756ba9a8c7e4b760e2fd80817012c","unresolved":false,"context_lines":[{"line_number":1617,"context_line":"                    if self._check_result(r):"},{"line_number":1618,"context_line":"                        # Check our result in the json."},{"line_number":1619,"context_line":"                        result \u003d self._get_json(r)"},{"line_number":1620,"context_line":"                        # Cascade and droptop return a boolean directly."},{"line_number":1621,"context_line":"                        # Droptop2 on up return it in a dict under \u0027result\u0027."},{"line_number":1622,"context_line":"                        if result is True or (type(result) is dict and"},{"line_number":1623,"context_line":"                                              result.get(\u0027result\u0027)):"},{"line_number":1624,"context_line":"                            LOG.debug(\u0027Volume %(vol)s unmapped from %(srv)s\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_8367544c","line":1621,"range":{"start_line":1620,"start_character":26,"end_line":1621,"end_character":75},"in_reply_to":"fa69d971_5264cf20","updated":"2016-01-04 23:13:53.000000000","message":"It would make more sense to use the EM version and not project names. Changed here and in the Payload filter comments.","commit_id":"d4d3d2f54d2c157774325dceb93259070beb0b7b"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0f084c79e2ade7ce0244290e694a0d7175a5427c","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        2.2.0 - Added API 2.2 support."},{"line_number":200,"context_line":"        2.3.0 - Added Legacy Port Mode Support"},{"line_number":201,"context_line":"        2.3.1 - Updated error handling."},{"line_number":202,"context_line":"        2.4.0 - Added Replication."},{"line_number":203,"context_line":"    \"\"\""},{"line_number":204,"context_line":"    APIVERSION \u003d \u00272.4.0\u0027"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_f961d505","line":202,"updated":"2016-01-06 13:51:39.000000000","message":"Should this be same as dell_storagecenter_fc.py like: \"Added Replication V2 support.\"?","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"d111c7b354fa2e09dac9bf6996ca0a99a1b4a9c0","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        2.2.0 - Added API 2.2 support."},{"line_number":200,"context_line":"        2.3.0 - Added Legacy Port Mode Support"},{"line_number":201,"context_line":"        2.3.1 - Updated error handling."},{"line_number":202,"context_line":"        2.4.0 - Added Replication."},{"line_number":203,"context_line":"    \"\"\""},{"line_number":204,"context_line":"    APIVERSION \u003d \u00272.4.0\u0027"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_3a943841","line":202,"in_reply_to":"fa69d971_f961d505","updated":"2016-01-06 16:09:46.000000000","message":"Well technically this is just adding support to the api for Storage Center replication.  The other functions implement cinder replication V2.  But for the sake of consistency I\u0027ve changed it to the above.","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0f084c79e2ade7ce0244290e694a0d7175a5427c","unresolved":false,"context_lines":[{"line_number":661,"context_line":"        return []"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"    def _find_daily_replay_profile(self):"},{"line_number":664,"context_line":"        \"\"\"Find the system replay profile named \"Daily\""},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"        :return: Profile instanceId or None."},{"line_number":667,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_f657a255","line":664,"updated":"2016-01-06 13:51:39.000000000","message":"Add a \".\" at the end of this line please.","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"d111c7b354fa2e09dac9bf6996ca0a99a1b4a9c0","unresolved":false,"context_lines":[{"line_number":661,"context_line":"        return []"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"    def _find_daily_replay_profile(self):"},{"line_number":664,"context_line":"        \"\"\"Find the system replay profile named \"Daily\""},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"        :return: Profile instanceId or None."},{"line_number":667,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_5a980c6a","line":664,"in_reply_to":"fa69d971_f657a255","updated":"2016-01-06 16:09:46.000000000","message":"Done","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0f084c79e2ade7ce0244290e694a0d7175a5427c","unresolved":false,"context_lines":[{"line_number":677,"context_line":"        return None"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def _find_replay_profiles(self, replay_profile_string):"},{"line_number":680,"context_line":"        \"\"\"Find our replay profiles"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"        Note that if called on volume creation the removeids list can be safely"},{"line_number":683,"context_line":"        ignored."}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_16da76e8","line":680,"updated":"2016-01-06 13:51:39.000000000","message":"Add a \".\" at the end of this line please.","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"d111c7b354fa2e09dac9bf6996ca0a99a1b4a9c0","unresolved":false,"context_lines":[{"line_number":677,"context_line":"        return None"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def _find_replay_profiles(self, replay_profile_string):"},{"line_number":680,"context_line":"        \"\"\"Find our replay profiles"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"        Note that if called on volume creation the removeids list can be safely"},{"line_number":683,"context_line":"        ignored."}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_7a9b9066","line":680,"in_reply_to":"fa69d971_16da76e8","updated":"2016-01-06 16:09:46.000000000","message":"Done","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0f084c79e2ade7ce0244290e694a0d7175a5427c","unresolved":false,"context_lines":[{"line_number":715,"context_line":"        return addids, removeids"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"    def update_replay_profiles(self, scvolume, replay_profile_string):"},{"line_number":718,"context_line":"        \"\"\"Update our replay profiles"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"        If the replay_profile_string is empty we look for the user\u0027s default"},{"line_number":721,"context_line":"        profiles. If those aren\u0027t found we look for the Daily profile."}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_56a1ce44","line":718,"updated":"2016-01-06 13:51:39.000000000","message":"Add a \".\" at the end of this line please.","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"d111c7b354fa2e09dac9bf6996ca0a99a1b4a9c0","unresolved":false,"context_lines":[{"line_number":715,"context_line":"        return addids, removeids"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"    def update_replay_profiles(self, scvolume, replay_profile_string):"},{"line_number":718,"context_line":"        \"\"\"Update our replay profiles"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"        If the replay_profile_string is empty we look for the user\u0027s default"},{"line_number":721,"context_line":"        profiles. If those aren\u0027t found we look for the Daily profile."}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_faa780a4","line":718,"in_reply_to":"fa69d971_56a1ce44","updated":"2016-01-06 16:09:46.000000000","message":"Done","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0f084c79e2ade7ce0244290e694a0d7175a5427c","unresolved":false,"context_lines":[{"line_number":728,"context_line":"        :return: True/False."},{"line_number":729,"context_line":"        \"\"\""},{"line_number":730,"context_line":"        addids \u003d []"},{"line_number":731,"context_line":"        removeids \u003d []"},{"line_number":732,"context_line":"        # Find our replay_profiles."},{"line_number":733,"context_line":"        addids, removeids \u003d self._find_replay_profiles(replay_profile_string)"},{"line_number":734,"context_line":"        # We either found what we were looking for."}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_19dce971","line":731,"updated":"2016-01-06 13:51:39.000000000","message":"These two var definition are no need because they will be assigned in line 733.","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"d111c7b354fa2e09dac9bf6996ca0a99a1b4a9c0","unresolved":false,"context_lines":[{"line_number":728,"context_line":"        :return: True/False."},{"line_number":729,"context_line":"        \"\"\""},{"line_number":730,"context_line":"        addids \u003d []"},{"line_number":731,"context_line":"        removeids \u003d []"},{"line_number":732,"context_line":"        # Find our replay_profiles."},{"line_number":733,"context_line":"        addids, removeids \u003d self._find_replay_profiles(replay_profile_string)"},{"line_number":734,"context_line":"        # We either found what we were looking for."}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_dadabc16","line":731,"in_reply_to":"fa69d971_19dce971","updated":"2016-01-06 16:09:46.000000000","message":"They sure are.  Fixed.","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0f084c79e2ade7ce0244290e694a0d7175a5427c","unresolved":false,"context_lines":[{"line_number":2457,"context_line":"        return True"},{"line_number":2458,"context_line":""},{"line_number":2459,"context_line":"    def get_screplication(self, scvolume, destssn):"},{"line_number":2460,"context_line":"        \u0027\u0027\u0027Find the screplication object for the volume on the dest backend."},{"line_number":2461,"context_line":""},{"line_number":2462,"context_line":"        :param scvolume:"},{"line_number":2463,"context_line":"        :param destssn:"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_f9231554","line":2460,"updated":"2016-01-06 13:51:39.000000000","message":"Should be \"\"\" instead of \u0027\u0027\u0027.","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"d111c7b354fa2e09dac9bf6996ca0a99a1b4a9c0","unresolved":false,"context_lines":[{"line_number":2457,"context_line":"        return True"},{"line_number":2458,"context_line":""},{"line_number":2459,"context_line":"    def get_screplication(self, scvolume, destssn):"},{"line_number":2460,"context_line":"        \u0027\u0027\u0027Find the screplication object for the volume on the dest backend."},{"line_number":2461,"context_line":""},{"line_number":2462,"context_line":"        :param scvolume:"},{"line_number":2463,"context_line":"        :param destssn:"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_3a251808","line":2460,"in_reply_to":"fa69d971_f9231554","updated":"2016-01-06 16:09:46.000000000","message":"Fixed here and in create_replication.","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"}],"cinder/volume/drivers/dell/dell_storagecenter_common.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1d858a190cf580a7b67064c69001345ea7d2f6b8","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        self.configuration.append_config_values(san_opts)"},{"line_number":61,"context_line":"        self.backend_name \u003d\\"},{"line_number":62,"context_line":"            self.configuration.safe_get(\u0027volume_backend_name\u0027) or \u0027Dell\u0027"},{"line_number":63,"context_line":"        self.backends \u003d self.configuration.safe_get(\u0027replication_device\u0027)"},{"line_number":64,"context_line":"        self.replication_enabled \u003d True if self.backends else False"},{"line_number":65,"context_line":"        self.is_direct_connect \u003d False"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_e680244c","line":63,"updated":"2015-11-12 22:08:23.000000000","message":"You might want to check these replication devices to make sure they were configured correctly.","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"def96cdd7f05e416c3bc16876e0c8ccc1d4b9c3a","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        self.configuration.append_config_values(san_opts)"},{"line_number":61,"context_line":"        self.backend_name \u003d\\"},{"line_number":62,"context_line":"            self.configuration.safe_get(\u0027volume_backend_name\u0027) or \u0027Dell\u0027"},{"line_number":63,"context_line":"        self.backends \u003d self.configuration.safe_get(\u0027replication_device\u0027)"},{"line_number":64,"context_line":"        self.replication_enabled \u003d True if self.backends else False"},{"line_number":65,"context_line":"        self.is_direct_connect \u003d False"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_c615e049","line":63,"in_reply_to":"da85f559_e680244c","updated":"2015-11-12 22:44:51.000000000","message":"I\u0027ll add this to do_setup.  Just make sure that there is a backend where I\u0027ve been told to expect one.  Also I need to make sure that a direct connect backend isn\u0027t being setup for replication.","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1d858a190cf580a7b67064c69001345ea7d2f6b8","unresolved":false,"context_lines":[{"line_number":848,"context_line":""},{"line_number":849,"context_line":"        return False"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    def replication_enable(self, context, vref):"},{"line_number":852,"context_line":"        \"\"\""},{"line_number":853,"context_line":""},{"line_number":854,"context_line":"        :param context:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_6b24fdc5","line":851,"updated":"2015-11-12 22:08:23.000000000","message":"If this fails, do you want to return a model update with replication_status ass \u0027error\u0027?","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"def96cdd7f05e416c3bc16876e0c8ccc1d4b9c3a","unresolved":false,"context_lines":[{"line_number":848,"context_line":""},{"line_number":849,"context_line":"        return False"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    def replication_enable(self, context, vref):"},{"line_number":852,"context_line":"        \"\"\""},{"line_number":853,"context_line":""},{"line_number":854,"context_line":"        :param context:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_da5a942a","line":851,"in_reply_to":"da85f559_6b24fdc5","updated":"2015-11-12 22:44:51.000000000","message":"Seems like a good idea.  Will add.","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"939acd7b9ad88c9e4721d6d1dc70d9f0f89d966b","unresolved":false,"context_lines":[{"line_number":848,"context_line":""},{"line_number":849,"context_line":"        return False"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    def replication_enable(self, context, vref):"},{"line_number":852,"context_line":"        \"\"\""},{"line_number":853,"context_line":""},{"line_number":854,"context_line":"        :param context:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_e6db4420","line":851,"in_reply_to":"da85f559_6b24fdc5","updated":"2015-11-12 22:09:25.000000000","message":"oops on the spelling error :)","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1d858a190cf580a7b67064c69001345ea7d2f6b8","unresolved":false,"context_lines":[{"line_number":863,"context_line":"            volumename \u003d vref.get(\u0027id\u0027)"},{"line_number":864,"context_line":"            status \u003d vref.get(\u0027replication_status\u0027)"},{"line_number":865,"context_line":"            destssns \u003d vref.get(\u0027replication_driver_data\u0027)"},{"line_number":866,"context_line":"            if destssns and status \u003d\u003d \u0027enabled\u0027:"},{"line_number":867,"context_line":"                scvolume \u003d api.find_volume(volumename)"},{"line_number":868,"context_line":"                if scvolume:"},{"line_number":869,"context_line":"                    for destssn in destssns:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_ebc54d0a","line":866,"updated":"2015-11-12 22:08:23.000000000","message":"replication_status should be treated as the current status of replication per volume. Whether it is \u0027enabled\u0027, \u0027disabled\u0027, \u0027error\u0027 etc.\n\nIt looks like you are treating it as whether or not the volume is *capable* of being replicated. I believe you should be checking to see if the volume is replicated type (with your _do_repl method), then issuing this command based on that.","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"def96cdd7f05e416c3bc16876e0c8ccc1d4b9c3a","unresolved":false,"context_lines":[{"line_number":863,"context_line":"            volumename \u003d vref.get(\u0027id\u0027)"},{"line_number":864,"context_line":"            status \u003d vref.get(\u0027replication_status\u0027)"},{"line_number":865,"context_line":"            destssns \u003d vref.get(\u0027replication_driver_data\u0027)"},{"line_number":866,"context_line":"            if destssns and status \u003d\u003d \u0027enabled\u0027:"},{"line_number":867,"context_line":"                scvolume \u003d api.find_volume(volumename)"},{"line_number":868,"context_line":"                if scvolume:"},{"line_number":869,"context_line":"                    for destssn in destssns:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_5ae30434","line":866,"in_reply_to":"da85f559_ebc54d0a","updated":"2015-11-12 22:44:51.000000000","message":"Good point.  I couldn\u0027t find anything that would disable the replication in the cinder client.  Only reenable.  So not sure how to put everything in a position to test this.","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1d858a190cf580a7b67064c69001345ea7d2f6b8","unresolved":false,"context_lines":[{"line_number":879,"context_line":"                              \u0027destinations found.  %s\u0027),"},{"line_number":880,"context_line":"                          volumename)"},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"    def replication_disable(self, context, vref):"},{"line_number":883,"context_line":"        \"\"\""},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"        :param context:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_4b2b3995","line":882,"updated":"2015-11-12 22:08:23.000000000","message":"If this fails, do you want to return a model update with replication_status ass \u0027error\u0027?","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"def96cdd7f05e416c3bc16876e0c8ccc1d4b9c3a","unresolved":false,"context_lines":[{"line_number":879,"context_line":"                              \u0027destinations found.  %s\u0027),"},{"line_number":880,"context_line":"                          volumename)"},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"    def replication_disable(self, context, vref):"},{"line_number":883,"context_line":"        \"\"\""},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"        :param context:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_1a625cae","line":882,"in_reply_to":"da85f559_4b2b3995","updated":"2015-11-12 22:44:51.000000000","message":"I think returning an ass error is a good thing to do.  Will add.","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"939acd7b9ad88c9e4721d6d1dc70d9f0f89d966b","unresolved":false,"context_lines":[{"line_number":879,"context_line":"                              \u0027destinations found.  %s\u0027),"},{"line_number":880,"context_line":"                          volumename)"},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"    def replication_disable(self, context, vref):"},{"line_number":883,"context_line":"        \"\"\""},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"        :param context:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_a6e53cdd","line":882,"in_reply_to":"da85f559_4b2b3995","updated":"2015-11-12 22:09:25.000000000","message":"oops on the spelling error :)","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1d858a190cf580a7b67064c69001345ea7d2f6b8","unresolved":false,"context_lines":[{"line_number":894,"context_line":"            volumename \u003d vref.get(\u0027id\u0027)"},{"line_number":895,"context_line":"            status \u003d vref.get(\u0027replication_status\u0027)"},{"line_number":896,"context_line":"            destssns \u003d vref.get(\u0027replication_driver_data\u0027)"},{"line_number":897,"context_line":"            if destssns and status \u003d\u003d \u0027enabled\u0027:"},{"line_number":898,"context_line":"                scvolume \u003d api.find_volume(volumename)"},{"line_number":899,"context_line":"                if scvolume:"},{"line_number":900,"context_line":"                    for destssn in destssns:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_abcf4528","line":897,"updated":"2015-11-12 22:08:23.000000000","message":"same as above","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"def96cdd7f05e416c3bc16876e0c8ccc1d4b9c3a","unresolved":false,"context_lines":[{"line_number":894,"context_line":"            volumename \u003d vref.get(\u0027id\u0027)"},{"line_number":895,"context_line":"            status \u003d vref.get(\u0027replication_status\u0027)"},{"line_number":896,"context_line":"            destssns \u003d vref.get(\u0027replication_driver_data\u0027)"},{"line_number":897,"context_line":"            if destssns and status \u003d\u003d \u0027enabled\u0027:"},{"line_number":898,"context_line":"                scvolume \u003d api.find_volume(volumename)"},{"line_number":899,"context_line":"                if scvolume:"},{"line_number":900,"context_line":"                    for destssn in destssns:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_7af848c5","line":897,"in_reply_to":"da85f559_abcf4528","updated":"2015-11-12 22:44:51.000000000","message":"I can also check the current state of the universe on the device and use that.","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1d858a190cf580a7b67064c69001345ea7d2f6b8","unresolved":false,"context_lines":[{"line_number":920,"context_line":"            if ssnstring \u003d\u003d backend[\u0027device_target_id\u0027]:"},{"line_number":921,"context_line":"                return backend[\u0027managed_backend_name\u0027]"},{"line_number":922,"context_line":""},{"line_number":923,"context_line":"    def _parse_secondary(self, api, vref, secondary):"},{"line_number":924,"context_line":"        # we just return what we want for now.  Should look"},{"line_number":925,"context_line":"        # at secondary."},{"line_number":926,"context_line":"        LOG.debug(secondary)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_6baf1d2c","line":923,"updated":"2015-11-12 22:08:23.000000000","message":"Should you return None or something alike in case the replication type check fails?","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"def96cdd7f05e416c3bc16876e0c8ccc1d4b9c3a","unresolved":false,"context_lines":[{"line_number":920,"context_line":"            if ssnstring \u003d\u003d backend[\u0027device_target_id\u0027]:"},{"line_number":921,"context_line":"                return backend[\u0027managed_backend_name\u0027]"},{"line_number":922,"context_line":""},{"line_number":923,"context_line":"    def _parse_secondary(self, api, vref, secondary):"},{"line_number":924,"context_line":"        # we just return what we want for now.  Should look"},{"line_number":925,"context_line":"        # at secondary."},{"line_number":926,"context_line":"        LOG.debug(secondary)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_fab8b8ea","line":923,"in_reply_to":"da85f559_6baf1d2c","updated":"2015-11-12 22:44:51.000000000","message":"Or blow up.  But Nonetype is probably the better way to go.  Will add.","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1d858a190cf580a7b67064c69001345ea7d2f6b8","unresolved":false,"context_lines":[{"line_number":924,"context_line":"        # we just return what we want for now.  Should look"},{"line_number":925,"context_line":"        # at secondary."},{"line_number":926,"context_line":"        LOG.debug(secondary)"},{"line_number":927,"context_line":"        if vref[\u0027replication_status\u0027] \u003d\u003d \u0027enabled\u0027:"},{"line_number":928,"context_line":"            replication_driver_data \u003d vref[\u0027replication_driver_data\u0027]"},{"line_number":929,"context_line":"            if replication_driver_data:"},{"line_number":930,"context_line":"                # This is just a string of ssns separated by commas."}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_8b85a1ae","line":927,"updated":"2015-11-12 22:08:23.000000000","message":"Same as above, regarding checking if replicated type.","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"def96cdd7f05e416c3bc16876e0c8ccc1d4b9c3a","unresolved":false,"context_lines":[{"line_number":924,"context_line":"        # we just return what we want for now.  Should look"},{"line_number":925,"context_line":"        # at secondary."},{"line_number":926,"context_line":"        LOG.debug(secondary)"},{"line_number":927,"context_line":"        if vref[\u0027replication_status\u0027] \u003d\u003d \u0027enabled\u0027:"},{"line_number":928,"context_line":"            replication_driver_data \u003d vref[\u0027replication_driver_data\u0027]"},{"line_number":929,"context_line":"            if replication_driver_data:"},{"line_number":930,"context_line":"                # This is just a string of ssns separated by commas."}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_bab23005","line":927,"in_reply_to":"da85f559_8b85a1ae","updated":"2015-11-12 22:44:51.000000000","message":"Definitely here.  The only thing that matters at this point is that the backend I choose is alive and replicated to.","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1d858a190cf580a7b67064c69001345ea7d2f6b8","unresolved":false,"context_lines":[{"line_number":938,"context_line":"                    if api.find_sc(ssn):"},{"line_number":939,"context_line":"                        return ssn, self._find_host(ssnstring)"},{"line_number":940,"context_line":""},{"line_number":941,"context_line":"    def replication_failover(self, context, vref, secondary):"},{"line_number":942,"context_line":"        LOG.debug(context)"},{"line_number":943,"context_line":"        LOG.debug(vref)"},{"line_number":944,"context_line":"        LOG.debug(secondary)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_2bfb5549","line":941,"updated":"2015-11-12 22:08:23.000000000","message":"Should probably have a check to make sure volume is of replicated type before you attempt to failover. Similar to what I mentioned in the replication_enable comment.\n\nOr maybe the check in _parse_decondary is enough?","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"def96cdd7f05e416c3bc16876e0c8ccc1d4b9c3a","unresolved":false,"context_lines":[{"line_number":938,"context_line":"                    if api.find_sc(ssn):"},{"line_number":939,"context_line":"                        return ssn, self._find_host(ssnstring)"},{"line_number":940,"context_line":""},{"line_number":941,"context_line":"    def replication_failover(self, context, vref, secondary):"},{"line_number":942,"context_line":"        LOG.debug(context)"},{"line_number":943,"context_line":"        LOG.debug(vref)"},{"line_number":944,"context_line":"        LOG.debug(secondary)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_9a216cb7","line":941,"in_reply_to":"da85f559_2bfb5549","updated":"2015-11-12 22:44:51.000000000","message":"It does occur to me that replication could be added to a backend after many volumes were created without.  So I probably want a check that it was created with replication.","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1d858a190cf580a7b67064c69001345ea7d2f6b8","unresolved":false,"context_lines":[{"line_number":955,"context_line":"        # just blow up."},{"line_number":956,"context_line":"        raise exception.ReplicationError(\u0027Unable to failover replication.\u0027)"},{"line_number":957,"context_line":""},{"line_number":958,"context_line":"    def list_replication_targets(self, context, vref):"},{"line_number":959,"context_line":"        \"\"\""},{"line_number":960,"context_line":""},{"line_number":961,"context_line":"        :param context:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_6b763dda","line":958,"updated":"2015-11-12 22:08:23.000000000","message":"This needs to return remote_device_id for each target. This is the value you will pass as secondary to replication_failover.","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"def96cdd7f05e416c3bc16876e0c8ccc1d4b9c3a","unresolved":false,"context_lines":[{"line_number":955,"context_line":"        # just blow up."},{"line_number":956,"context_line":"        raise exception.ReplicationError(\u0027Unable to failover replication.\u0027)"},{"line_number":957,"context_line":""},{"line_number":958,"context_line":"    def list_replication_targets(self, context, vref):"},{"line_number":959,"context_line":"        \"\"\""},{"line_number":960,"context_line":""},{"line_number":961,"context_line":"        :param context:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_dd0cce3d","line":958,"in_reply_to":"da85f559_6b763dda","updated":"2015-11-12 22:44:51.000000000","message":"Oh,  I can do that.","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1d858a190cf580a7b67064c69001345ea7d2f6b8","unresolved":false,"context_lines":[{"line_number":977,"context_line":"        return replication_targets"},{"line_number":978,"context_line":""},{"line_number":979,"context_line":"    def get_replication_updates(self, context):"},{"line_number":980,"context_line":"        # No idea what to do with this."},{"line_number":981,"context_line":"        return []"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_0b1c5176","line":980,"updated":"2015-11-12 22:08:23.000000000","message":":)","commit_id":"fae4e1465faaf95bb1a2bd207c2eb54d0dce0ffa"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"96ebe4f20a98938128be4423eb30bd3e1cde5e8d","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        for backend in self.backends:"},{"line_number":168,"context_line":"            # todo(tswanson): Add replicate active replay to extra specs."},{"line_number":169,"context_line":"            if not api.create_replication(scvolume,"},{"line_number":170,"context_line":"                                          backend[\u0027device_target_id\u0027],"},{"line_number":171,"context_line":"                                          backend[\u0027qosnode\u0027],"},{"line_number":172,"context_line":"                                          sync):"},{"line_number":173,"context_line":"                # todo(tswanson): Better error."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_dd6828bd","line":170,"updated":"2015-11-17 00:22:35.000000000","message":"why is this device_target_id?","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"8da093dca2666081429a169f43135b143cde1384","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        for backend in self.backends:"},{"line_number":168,"context_line":"            # todo(tswanson): Add replicate active replay to extra specs."},{"line_number":169,"context_line":"            if not api.create_replication(scvolume,"},{"line_number":170,"context_line":"                                          backend[\u0027device_target_id\u0027],"},{"line_number":171,"context_line":"                                          backend[\u0027qosnode\u0027],"},{"line_number":172,"context_line":"                                          sync):"},{"line_number":173,"context_line":"                # todo(tswanson): Better error."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_543b8ad1","line":170,"in_reply_to":"ba8a016a_dd6828bd","updated":"2015-11-17 16:30:55.000000000","message":"Unless it changed I thought device_target_id was an identifier specified by the driver.  In this case it is the SSN of the destination Storage Center.","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"96ebe4f20a98938128be4423eb30bd3e1cde5e8d","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                # todo(tswanson): Better error."},{"line_number":174,"context_line":"                raise exception.VolumeBackendAPIException(\u0027Replication Fail\u0027)"},{"line_number":175,"context_line":"            if not replication_driver_data:"},{"line_number":176,"context_line":"                replication_driver_data \u003d backend[\u0027device_target_id\u0027]"},{"line_number":177,"context_line":"            else:"},{"line_number":178,"context_line":"                replication_driver_data +\u003d \u0027,\u0027"},{"line_number":179,"context_line":"                replication_driver_data +\u003d backend[\u0027device_target_id\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_1d6eb0c9","line":176,"updated":"2015-11-17 00:22:35.000000000","message":"why is this device_target_id?","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"8da093dca2666081429a169f43135b143cde1384","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                # todo(tswanson): Better error."},{"line_number":174,"context_line":"                raise exception.VolumeBackendAPIException(\u0027Replication Fail\u0027)"},{"line_number":175,"context_line":"            if not replication_driver_data:"},{"line_number":176,"context_line":"                replication_driver_data \u003d backend[\u0027device_target_id\u0027]"},{"line_number":177,"context_line":"            else:"},{"line_number":178,"context_line":"                replication_driver_data +\u003d \u0027,\u0027"},{"line_number":179,"context_line":"                replication_driver_data +\u003d backend[\u0027device_target_id\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_d4745a9d","line":176,"in_reply_to":"ba8a016a_1d6eb0c9","updated":"2015-11-17 16:30:55.000000000","message":"I need to know where this has been replicated to.  So I put the destination SSN in here.","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"96ebe4f20a98938128be4423eb30bd3e1cde5e8d","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                replication_driver_data \u003d backend[\u0027device_target_id\u0027]"},{"line_number":177,"context_line":"            else:"},{"line_number":178,"context_line":"                replication_driver_data +\u003d \u0027,\u0027"},{"line_number":179,"context_line":"                replication_driver_data +\u003d backend[\u0027device_target_id\u0027]"},{"line_number":180,"context_line":"        return replication_driver_data"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def create_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_9d62a0d7","line":179,"updated":"2015-11-17 00:22:35.000000000","message":"why is this device_target_id?","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"8da093dca2666081429a169f43135b143cde1384","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                replication_driver_data \u003d backend[\u0027device_target_id\u0027]"},{"line_number":177,"context_line":"            else:"},{"line_number":178,"context_line":"                replication_driver_data +\u003d \u0027,\u0027"},{"line_number":179,"context_line":"                replication_driver_data +\u003d backend[\u0027device_target_id\u0027]"},{"line_number":180,"context_line":"        return replication_driver_data"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def create_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_b47196aa","line":179,"in_reply_to":"ba8a016a_9d62a0d7","updated":"2015-11-17 16:30:55.000000000","message":"Or the list of destination SSNs in here.","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"96ebe4f20a98938128be4423eb30bd3e1cde5e8d","unresolved":false,"context_lines":[{"line_number":772,"context_line":"                _(\u0027Must specify source-name or source-id. (%s)\u0027) %"},{"line_number":773,"context_line":"                existing_ref)"},{"line_number":774,"context_line":"        # Only return a model_update if we have replication info to add."},{"line_number":775,"context_line":"        return None"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    def manage_existing_get_size(self, volume, existing_ref):"},{"line_number":778,"context_line":"        \"\"\"Return size of volume to be managed by manage_existing."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_2244b372","line":775,"updated":"2015-11-17 00:22:35.000000000","message":"Maybe set model_update to None above the replication check that way you can return model_update here and remove the second return in the if repl_data check","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"8da093dca2666081429a169f43135b143cde1384","unresolved":false,"context_lines":[{"line_number":772,"context_line":"                _(\u0027Must specify source-name or source-id. (%s)\u0027) %"},{"line_number":773,"context_line":"                existing_ref)"},{"line_number":774,"context_line":"        # Only return a model_update if we have replication info to add."},{"line_number":775,"context_line":"        return None"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    def manage_existing_get_size(self, volume, existing_ref):"},{"line_number":778,"context_line":"        \"\"\"Return size of volume to be managed by manage_existing."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_74ab2ed7","line":775,"in_reply_to":"ba8a016a_2244b372","updated":"2015-11-17 16:30:55.000000000","message":"Seems like a plan.","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"96ebe4f20a98938128be4423eb30bd3e1cde5e8d","unresolved":false,"context_lines":[{"line_number":920,"context_line":"                else:"},{"line_number":921,"context_line":"                    LOG.error(_LE(\u0027Volume %s not found\u0027), volumename)"},{"line_number":922,"context_line":"            else:"},{"line_number":923,"context_line":"                LOG.error(_LE(\u0027Replication not enabled or not replication \u0027"},{"line_number":924,"context_line":"                              \u0027destinations found.  %s\u0027),"},{"line_number":925,"context_line":"                          volumename)"},{"line_number":926,"context_line":"        return model_update"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_c29047ef","line":923,"updated":"2015-11-17 00:22:35.000000000","message":"s/not/no","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"8da093dca2666081429a169f43135b143cde1384","unresolved":false,"context_lines":[{"line_number":920,"context_line":"                else:"},{"line_number":921,"context_line":"                    LOG.error(_LE(\u0027Volume %s not found\u0027), volumename)"},{"line_number":922,"context_line":"            else:"},{"line_number":923,"context_line":"                LOG.error(_LE(\u0027Replication not enabled or not replication \u0027"},{"line_number":924,"context_line":"                              \u0027destinations found.  %s\u0027),"},{"line_number":925,"context_line":"                          volumename)"},{"line_number":926,"context_line":"        return model_update"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_14918299","line":923,"in_reply_to":"ba8a016a_c29047ef","updated":"2015-11-17 16:30:55.000000000","message":"Done","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"96ebe4f20a98938128be4423eb30bd3e1cde5e8d","unresolved":false,"context_lines":[{"line_number":970,"context_line":"                return"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"            # Now check that we are configured for this."},{"line_number":973,"context_line":"            destssn, host \u003d self._parse_secondary(api, vref, secondary)"},{"line_number":974,"context_line":"            if destssn and host:"},{"line_number":975,"context_line":"                volumename \u003d vref.get(\u0027id\u0027)"},{"line_number":976,"context_line":"                # This will break the replication on the SC side.  At the"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_82f31f73","line":973,"updated":"2015-11-17 00:22:35.000000000","message":"The \u0027secondary\u0027 values that gets passed into fail over will be remote_device_id of the replication device entry, which will be found from running list_replication_devices. From there, you should identify the device to fail over to with the secondary value.","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"8da093dca2666081429a169f43135b143cde1384","unresolved":false,"context_lines":[{"line_number":970,"context_line":"                return"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"            # Now check that we are configured for this."},{"line_number":973,"context_line":"            destssn, host \u003d self._parse_secondary(api, vref, secondary)"},{"line_number":974,"context_line":"            if destssn and host:"},{"line_number":975,"context_line":"                volumename \u003d vref.get(\u0027id\u0027)"},{"line_number":976,"context_line":"                # This will break the replication on the SC side.  At the"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_b4b756f4","line":973,"in_reply_to":"ba8a016a_82f31f73","updated":"2015-11-17 16:30:55.000000000","message":"It changed to remote_device_id?  I had that value as target_device_id.","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"96ebe4f20a98938128be4423eb30bd3e1cde5e8d","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"            # that are being replicated to."},{"line_number":1008,"context_line":"            target \u003d {}"},{"line_number":1009,"context_line":"            target[\u0027type\u0027] \u003d \u0027managed\u0027"},{"line_number":1010,"context_line":"            target[\u0027remote_device_id\u0027] \u003d backend[\u0027target_device_id\u0027]"},{"line_number":1011,"context_line":"            target[\u0027backend_name\u0027] \u003d backend[\u0027managed_backend_name\u0027]"},{"line_number":1012,"context_line":"            targets.append(target)"},{"line_number":1013,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_1d579003","line":1010,"updated":"2015-11-17 00:22:35.000000000","message":"why is this target_device_id ?","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"8da093dca2666081429a169f43135b143cde1384","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"            # that are being replicated to."},{"line_number":1008,"context_line":"            target \u003d {}"},{"line_number":1009,"context_line":"            target[\u0027type\u0027] \u003d \u0027managed\u0027"},{"line_number":1010,"context_line":"            target[\u0027remote_device_id\u0027] \u003d backend[\u0027target_device_id\u0027]"},{"line_number":1011,"context_line":"            target[\u0027backend_name\u0027] \u003d backend[\u0027managed_backend_name\u0027]"},{"line_number":1012,"context_line":"            targets.append(target)"},{"line_number":1013,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_74780e2c","line":1010,"in_reply_to":"ba8a016a_1d579003","updated":"2015-11-17 16:30:55.000000000","message":"I\u0027m guessing this changed from target_device_id to remote_device_id.","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"96ebe4f20a98938128be4423eb30bd3e1cde5e8d","unresolved":false,"context_lines":[{"line_number":1013,"context_line":""},{"line_number":1014,"context_line":"        replication_targets \u003d {\u0027volume_id\u0027: vref.get(\u0027id\u0027), \u0027targets\u0027: targets}"},{"line_number":1015,"context_line":"        LOG.info(_LI(\u0027list_replication_targets: %s\u0027), replication_targets)"},{"line_number":1016,"context_line":"        return replication_targets"},{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"    def get_replication_updates(self, context):"},{"line_number":1019,"context_line":"        # No idea what to do with this."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_225a7384","line":1016,"updated":"2015-11-17 00:22:35.000000000","message":"Should just return an empty list if there are no replication targets: https://github.com/openstack/cinder/blob/master/cinder/volume/driver.py#L1772-L1773 .  This will return volume id and an empty targets array at the least.","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"8da093dca2666081429a169f43135b143cde1384","unresolved":false,"context_lines":[{"line_number":1013,"context_line":""},{"line_number":1014,"context_line":"        replication_targets \u003d {\u0027volume_id\u0027: vref.get(\u0027id\u0027), \u0027targets\u0027: targets}"},{"line_number":1015,"context_line":"        LOG.info(_LI(\u0027list_replication_targets: %s\u0027), replication_targets)"},{"line_number":1016,"context_line":"        return replication_targets"},{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"    def get_replication_updates(self, context):"},{"line_number":1019,"context_line":"        # No idea what to do with this."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_945a5282","line":1016,"in_reply_to":"ba8a016a_225a7384","updated":"2015-11-17 16:30:55.000000000","message":"Seems odd to return a dict in one case and a list in the other.  I presumed that to mean return an empty targets list.","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"4386a0ffbcc74d1e356a91140e10092b527d9987","unresolved":false,"context_lines":[{"line_number":1013,"context_line":""},{"line_number":1014,"context_line":"        replication_targets \u003d {\u0027volume_id\u0027: vref.get(\u0027id\u0027), \u0027targets\u0027: targets}"},{"line_number":1015,"context_line":"        LOG.info(_LI(\u0027list_replication_targets: %s\u0027), replication_targets)"},{"line_number":1016,"context_line":"        return replication_targets"},{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"    def get_replication_updates(self, context):"},{"line_number":1019,"context_line":"        # No idea what to do with this."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_c1b01be0","line":1016,"in_reply_to":"ba8a016a_945a5282","updated":"2015-11-17 16:58:32.000000000","message":"That would make for sense...","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"7438ae768fdfb8a727d3053d693891331db3fb91","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def create_volume(self, volume):"},{"line_number":183,"context_line":"        \"\"\"Create a volume.\"\"\""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        model_update \u003d {}"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # We use id as our name as it is unique."}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_323abace","line":184,"updated":"2015-11-22 01:52:46.000000000","message":"Should we remove this blank line?","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def create_volume(self, volume):"},{"line_number":183,"context_line":"        \"\"\"Create a volume.\"\"\""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        model_update \u003d {}"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # We use id as our name as it is unique."}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_20484187","line":184,"in_reply_to":"ba8a016a_323abace","updated":"2015-11-30 21:18:51.000000000","message":"Deleted.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"5779975325a329c3d5246f5a239c12b4dbd376f5","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                # Update Consistency Group"},{"line_number":206,"context_line":"                self._add_volume_to_consistency_group(api, scvolume, volume)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"                # Replicate if we are supposed to."},{"line_number":209,"context_line":"                do_repl, sync \u003d self._do_repl(api, volume)"},{"line_number":210,"context_line":"                if do_repl:"},{"line_number":211,"context_line":"                    repl_data \u003d self._create_replications(api,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_8d4a22c4","line":208,"updated":"2015-11-26 09:07:15.000000000","message":"This block of code (under \"# Replicate if we are supposed to\") occurs many times. Would you extract a common method?","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                # Update Consistency Group"},{"line_number":206,"context_line":"                self._add_volume_to_consistency_group(api, scvolume, volume)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"                # Replicate if we are supposed to."},{"line_number":209,"context_line":"                do_repl, sync \u003d self._do_repl(api, volume)"},{"line_number":210,"context_line":"                if do_repl:"},{"line_number":211,"context_line":"                    repl_data \u003d self._create_replications(api,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_a3d75bec","line":208,"in_reply_to":"9a8ffd7b_8d4a22c4","updated":"2015-11-30 21:18:51.000000000","message":"Moved it to create_replications.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"5779975325a329c3d5246f5a239c12b4dbd376f5","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                            self._add_volume_to_consistency_group(api,"},{"line_number":340,"context_line":"                                                                  scvolume,"},{"line_number":341,"context_line":"                                                                  volume)"},{"line_number":342,"context_line":"                            # Replicate if we are supposed to."},{"line_number":343,"context_line":"                            do_repl, sync \u003d self._do_repl(api, volume)"},{"line_number":344,"context_line":"                            if do_repl:"},{"line_number":345,"context_line":"                                repl_data \u003d self._create_replications(api,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_cd27ca10","line":342,"updated":"2015-11-26 09:07:15.000000000","message":"Ditto.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                            self._add_volume_to_consistency_group(api,"},{"line_number":340,"context_line":"                                                                  scvolume,"},{"line_number":341,"context_line":"                                                                  volume)"},{"line_number":342,"context_line":"                            # Replicate if we are supposed to."},{"line_number":343,"context_line":"                            do_repl, sync \u003d self._do_repl(api, volume)"},{"line_number":344,"context_line":"                            if do_repl:"},{"line_number":345,"context_line":"                                repl_data \u003d self._create_replications(api,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_e3224301","line":342,"in_reply_to":"9a8ffd7b_cd27ca10","updated":"2015-11-30 21:18:51.000000000","message":"Moved into create_replications.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"5779975325a329c3d5246f5a239c12b4dbd376f5","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                                                              scvolume,"},{"line_number":387,"context_line":"                                                              volume)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                        # Replicate if we are supposed to."},{"line_number":390,"context_line":"                        do_repl, sync \u003d self._do_repl(api, volume)"},{"line_number":391,"context_line":"                        if do_repl:"},{"line_number":392,"context_line":"                            repl_data \u003d self._create_replications(api,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_4d7afaf2","line":389,"updated":"2015-11-26 09:07:15.000000000","message":"Ditto.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                                                              scvolume,"},{"line_number":387,"context_line":"                                                              volume)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                        # Replicate if we are supposed to."},{"line_number":390,"context_line":"                        do_repl, sync \u003d self._do_repl(api, volume)"},{"line_number":391,"context_line":"                        if do_repl:"},{"line_number":392,"context_line":"                            repl_data \u003d self._create_replications(api,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_c3013f3b","line":389,"in_reply_to":"9a8ffd7b_4d7afaf2","updated":"2015-11-30 21:18:51.000000000","message":"Moved to create_replications.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"5779975325a329c3d5246f5a239c12b4dbd376f5","unresolved":false,"context_lines":[{"line_number":551,"context_line":"                    if (scvolume and"},{"line_number":552,"context_line":"                       api.rename_volume(scvolume, original_volume_name)):"},{"line_number":553,"context_line":"                        model_update \u003d {\u0027_name_id\u0027: None}"},{"line_number":554,"context_line":"                        # Replicate if we are supposed to."},{"line_number":555,"context_line":"                        do_repl, sync \u003d self._do_repl(api, volume)"},{"line_number":556,"context_line":"                        if do_repl:"},{"line_number":557,"context_line":"                            repl_data \u003d self._create_replications(api,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_2d8776d8","line":554,"updated":"2015-11-26 09:07:15.000000000","message":"Ditto.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":551,"context_line":"                    if (scvolume and"},{"line_number":552,"context_line":"                       api.rename_volume(scvolume, original_volume_name)):"},{"line_number":553,"context_line":"                        model_update \u003d {\u0027_name_id\u0027: None}"},{"line_number":554,"context_line":"                        # Replicate if we are supposed to."},{"line_number":555,"context_line":"                        do_repl, sync \u003d self._do_repl(api, volume)"},{"line_number":556,"context_line":"                        if do_repl:"},{"line_number":557,"context_line":"                            repl_data \u003d self._create_replications(api,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_23160b56","line":554,"in_reply_to":"9a8ffd7b_2d8776d8","updated":"2015-11-30 21:18:51.000000000","message":"Changed.  Also changed to using new_volume to see if replications should be happening.  They might have migrated to a replication free backend.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"5779975325a329c3d5246f5a239c12b4dbd376f5","unresolved":false,"context_lines":[{"line_number":754,"context_line":"        if existing_ref.get(\u0027source-name\u0027) or existing_ref.get(\u0027source-id\u0027):"},{"line_number":755,"context_line":"            with self._client.open_connection() as api:"},{"line_number":756,"context_line":"                api.manage_existing(volume[\u0027id\u0027], existing_ref)"},{"line_number":757,"context_line":"                # Replicate if we are supposed to."},{"line_number":758,"context_line":"                do_repl, sync \u003d self._do_repl(api, volume)"},{"line_number":759,"context_line":"                if do_repl:"},{"line_number":760,"context_line":"                    scvolume \u003d api.find_volume(volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_8d78e2f3","line":757,"updated":"2015-11-26 09:07:15.000000000","message":"Ditto (even though here it is slightly different.)","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":754,"context_line":"        if existing_ref.get(\u0027source-name\u0027) or existing_ref.get(\u0027source-id\u0027):"},{"line_number":755,"context_line":"            with self._client.open_connection() as api:"},{"line_number":756,"context_line":"                api.manage_existing(volume[\u0027id\u0027], existing_ref)"},{"line_number":757,"context_line":"                # Replicate if we are supposed to."},{"line_number":758,"context_line":"                do_repl, sync \u003d self._do_repl(api, volume)"},{"line_number":759,"context_line":"                if do_repl:"},{"line_number":760,"context_line":"                    scvolume \u003d api.find_volume(volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_be676ee9","line":757,"in_reply_to":"9a8ffd7b_8d78e2f3","updated":"2015-11-30 21:18:51.000000000","message":"Slightly less different now.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"5779975325a329c3d5246f5a239c12b4dbd376f5","unresolved":false,"context_lines":[{"line_number":877,"context_line":"                scvolume \u003d api.find_volume(volumename)"},{"line_number":878,"context_line":"                if scvolume:"},{"line_number":879,"context_line":"                    for destssn in destssns:"},{"line_number":880,"context_line":"                        if not api.resume_replication(scvolume, destssn):"},{"line_number":881,"context_line":"                            LOG.error(_LE(\u0027Unable to resume replication on \u0027"},{"line_number":882,"context_line":"                                          \u0027volume %(vol)s to SC %(ssn)s\u0027),"},{"line_number":883,"context_line":"                                      {\u0027vol\u0027: volumename,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_8de6a2b2","line":880,"updated":"2015-11-26 09:07:15.000000000","message":"It would be glad to see lower nesting depth.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":877,"context_line":"                scvolume \u003d api.find_volume(volumename)"},{"line_number":878,"context_line":"                if scvolume:"},{"line_number":879,"context_line":"                    for destssn in destssns:"},{"line_number":880,"context_line":"                        if not api.resume_replication(scvolume, destssn):"},{"line_number":881,"context_line":"                            LOG.error(_LE(\u0027Unable to resume replication on \u0027"},{"line_number":882,"context_line":"                                          \u0027volume %(vol)s to SC %(ssn)s\u0027),"},{"line_number":883,"context_line":"                                      {\u0027vol\u0027: volumename,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_9e5e2a11","line":880,"in_reply_to":"9a8ffd7b_8de6a2b2","updated":"2015-11-30 21:18:51.000000000","message":"I\u0027ve done worse.","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"7b6c4b71c27cdd613b7393a8e503ed96c1021fec","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"            # that are being replicated to."},{"line_number":1008,"context_line":"            target \u003d {}"},{"line_number":1009,"context_line":"            target[\u0027type\u0027] \u003d \u0027managed\u0027"},{"line_number":1010,"context_line":"            target[\u0027remote_device_id\u0027] \u003d backend[\u0027target_device_id\u0027]"},{"line_number":1011,"context_line":"            target[\u0027backend_name\u0027] \u003d backend[\u0027managed_backend_name\u0027]"},{"line_number":1012,"context_line":"            targets.append(target)"},{"line_number":1013,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_903940db","line":1010,"updated":"2015-11-30 18:28:24.000000000","message":"the only thing that will be listed with the python-cinderclient call is target_device_id. This should be changed to reflect that: https://review.openstack.org/#/c/231708/","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"            # that are being replicated to."},{"line_number":1008,"context_line":"            target \u003d {}"},{"line_number":1009,"context_line":"            target[\u0027type\u0027] \u003d \u0027managed\u0027"},{"line_number":1010,"context_line":"            target[\u0027remote_device_id\u0027] \u003d backend[\u0027target_device_id\u0027]"},{"line_number":1011,"context_line":"            target[\u0027backend_name\u0027] \u003d backend[\u0027managed_backend_name\u0027]"},{"line_number":1012,"context_line":"            targets.append(target)"},{"line_number":1013,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_9eb5ca32","line":1010,"in_reply_to":"9a8ffd7b_903940db","updated":"2015-11-30 21:18:51.000000000","message":"Done","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"887a1309e87c7897adbd5cfa862e8cbe498ab10d","unresolved":false,"context_lines":[{"line_number":845,"context_line":"        :param vref:"},{"line_number":846,"context_line":"        :return:"},{"line_number":847,"context_line":"        \"\"\""},{"line_number":848,"context_line":"        # todo(tswanson): Add exceptions."},{"line_number":849,"context_line":"        LOG.debug(context)"},{"line_number":850,"context_line":"        LOG.debug(vref)"},{"line_number":851,"context_line":"        LOG.debug(\u0027replication_enable\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_e2938259","line":848,"updated":"2015-12-03 05:31:23.000000000","message":"Please, add log messages to make logs more useful","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"bbfa7c96360b34e414dec9e13d4c7825d5368c4a","unresolved":false,"context_lines":[{"line_number":845,"context_line":"        :param vref:"},{"line_number":846,"context_line":"        :return:"},{"line_number":847,"context_line":"        \"\"\""},{"line_number":848,"context_line":"        # todo(tswanson): Add exceptions."},{"line_number":849,"context_line":"        LOG.debug(context)"},{"line_number":850,"context_line":"        LOG.debug(vref)"},{"line_number":851,"context_line":"        LOG.debug(\u0027replication_enable\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_e37330b3","line":848,"in_reply_to":"9a8ffd7b_e2938259","updated":"2015-12-03 19:54:25.000000000","message":"Will do.","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"887a1309e87c7897adbd5cfa862e8cbe498ab10d","unresolved":false,"context_lines":[{"line_number":882,"context_line":"        :return:"},{"line_number":883,"context_line":"        \"\"\""},{"line_number":884,"context_line":"        # todo(tswanson): Add exceptions."},{"line_number":885,"context_line":"        LOG.debug(context)"},{"line_number":886,"context_line":"        LOG.debug(vref)"},{"line_number":887,"context_line":"        LOG.debug(\u0027replication_disable\u0027)"},{"line_number":888,"context_line":"        model_update \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_22842a09","line":885,"updated":"2015-12-03 05:31:23.000000000","message":"The same as above","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"bbfa7c96360b34e414dec9e13d4c7825d5368c4a","unresolved":false,"context_lines":[{"line_number":882,"context_line":"        :return:"},{"line_number":883,"context_line":"        \"\"\""},{"line_number":884,"context_line":"        # todo(tswanson): Add exceptions."},{"line_number":885,"context_line":"        LOG.debug(context)"},{"line_number":886,"context_line":"        LOG.debug(vref)"},{"line_number":887,"context_line":"        LOG.debug(\u0027replication_disable\u0027)"},{"line_number":888,"context_line":"        model_update \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_83658ce2","line":885,"in_reply_to":"9a8ffd7b_22842a09","updated":"2015-12-03 19:54:25.000000000","message":"Will do.","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"887a1309e87c7897adbd5cfa862e8cbe498ab10d","unresolved":false,"context_lines":[{"line_number":945,"context_line":"        return None, None"},{"line_number":946,"context_line":""},{"line_number":947,"context_line":"    def replication_failover(self, context, vref, secondary):"},{"line_number":948,"context_line":"        LOG.debug(context)"},{"line_number":949,"context_line":"        LOG.debug(vref)"},{"line_number":950,"context_line":"        LOG.debug(secondary)"},{"line_number":951,"context_line":"        LOG.info(_LI(\u0027Failing replication %(vol)s to %(sec)s\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_e27aa223","line":948,"updated":"2015-12-03 05:31:23.000000000","message":"The same as above","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"bbfa7c96360b34e414dec9e13d4c7825d5368c4a","unresolved":false,"context_lines":[{"line_number":945,"context_line":"        return None, None"},{"line_number":946,"context_line":""},{"line_number":947,"context_line":"    def replication_failover(self, context, vref, secondary):"},{"line_number":948,"context_line":"        LOG.debug(context)"},{"line_number":949,"context_line":"        LOG.debug(vref)"},{"line_number":950,"context_line":"        LOG.debug(secondary)"},{"line_number":951,"context_line":"        LOG.info(_LI(\u0027Failing replication %(vol)s to %(sec)s\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_e39a50c5","line":948,"in_reply_to":"9a8ffd7b_e27aa223","updated":"2015-12-03 19:54:25.000000000","message":"Ditto","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"887a1309e87c7897adbd5cfa862e8cbe498ab10d","unresolved":false,"context_lines":[{"line_number":1028,"context_line":"        return replication_targets"},{"line_number":1029,"context_line":""},{"line_number":1030,"context_line":"    def get_replication_updates(self, context):"},{"line_number":1031,"context_line":"        # No idea what to do with this."},{"line_number":1032,"context_line":"        return []"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_42904e43","line":1031,"updated":"2015-12-03 05:31:23.000000000","message":"The comment looks confusing","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"bbfa7c96360b34e414dec9e13d4c7825d5368c4a","unresolved":false,"context_lines":[{"line_number":1028,"context_line":"        return replication_targets"},{"line_number":1029,"context_line":""},{"line_number":1030,"context_line":"    def get_replication_updates(self, context):"},{"line_number":1031,"context_line":"        # No idea what to do with this."},{"line_number":1032,"context_line":"        return []"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_c324f4b0","line":1031,"in_reply_to":"9a8ffd7b_42904e43","updated":"2015-12-03 19:54:25.000000000","message":"The comment indicates confusion.","commit_id":"e79e2ab1b88f4ca07709288cfbbb1f4005e6877c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8992f10441ed98d8b582887f8afb9a6ba929e5e8","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"            if self.replication_enabled:"},{"line_number":105,"context_line":"                # Check that our replication destinations are available."},{"line_number":106,"context_line":"                # todo(tswanson): Check if we need a diskfolder.  (Or not.)"},{"line_number":107,"context_line":"                # todo(tswanson): Can we check that the backend specifies"},{"line_number":108,"context_line":"                # todo(tswanson): the same ssn as target_device_id."},{"line_number":109,"context_line":"                for backend in self.backends:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_26b5b5cc","line":106,"updated":"2015-12-03 22:14:31.000000000","message":"nit: We usually use capital TODO.","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"3874d8264e0a867fcbe82e7b8f2b622009386b08","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"            if self.replication_enabled:"},{"line_number":105,"context_line":"                # Check that our replication destinations are available."},{"line_number":106,"context_line":"                # todo(tswanson): Check if we need a diskfolder.  (Or not.)"},{"line_number":107,"context_line":"                # todo(tswanson): Can we check that the backend specifies"},{"line_number":108,"context_line":"                # todo(tswanson): the same ssn as target_device_id."},{"line_number":109,"context_line":"                for backend in self.backends:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_5dc00b50","line":106,"in_reply_to":"7a740942_26b5b5cc","updated":"2015-12-08 21:32:47.000000000","message":"Done","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8992f10441ed98d8b582887f8afb9a6ba929e5e8","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                              backend.get(\u0027diskfolder\u0027, None)):"},{"line_number":183,"context_line":"                    # todo(tswanson): Better error."},{"line_number":184,"context_line":"                    raise exception.VolumeBackendAPIException("},{"line_number":185,"context_line":"                        \u0027Replication Fail\u0027)"},{"line_number":186,"context_line":"                if not replication_driver_data:"},{"line_number":187,"context_line":"                    replication_driver_data \u003d backend[\u0027target_device_id\u0027]"},{"line_number":188,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_a6c1a530","line":185,"updated":"2015-12-03 22:14:31.000000000","message":"Same comment I had earlier.","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"00eca29ba489c7ff40b88bd3eb946827ae5db9d9","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                              backend.get(\u0027diskfolder\u0027, None)):"},{"line_number":183,"context_line":"                    # todo(tswanson): Better error."},{"line_number":184,"context_line":"                    raise exception.VolumeBackendAPIException("},{"line_number":185,"context_line":"                        \u0027Replication Fail\u0027)"},{"line_number":186,"context_line":"                if not replication_driver_data:"},{"line_number":187,"context_line":"                    replication_driver_data \u003d backend[\u0027target_device_id\u0027]"},{"line_number":188,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_a9c4b45e","line":185,"updated":"2015-12-07 11:23:27.000000000","message":"Usually we throw the exception in this way\n\n```\n\nexception_msg \u003d (_(\u0027My server is not feeling good today.\u0027))\n\nraise exception.VolumeBackendAPIException(data\u003dexception_msg)\n\n```","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"45361578751d61dfe8e06c958964c98ffba51f73","unresolved":false,"context_lines":[{"line_number":854,"context_line":""},{"line_number":855,"context_line":"        :param context:"},{"line_number":856,"context_line":"        :param vref:"},{"line_number":857,"context_line":"        :return:"},{"line_number":858,"context_line":"        \"\"\""},{"line_number":859,"context_line":"        volumename \u003d vref.get(\u0027id\u0027)"},{"line_number":860,"context_line":"        LOG.info(_LI(\u0027Enabling replication on %s\u0027), volumename)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_796965f8","line":857,"updated":"2015-12-08 18:30:32.000000000","message":"Missing parameter descriptions","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"3874d8264e0a867fcbe82e7b8f2b622009386b08","unresolved":false,"context_lines":[{"line_number":854,"context_line":""},{"line_number":855,"context_line":"        :param context:"},{"line_number":856,"context_line":"        :param vref:"},{"line_number":857,"context_line":"        :return:"},{"line_number":858,"context_line":"        \"\"\""},{"line_number":859,"context_line":"        volumename \u003d vref.get(\u0027id\u0027)"},{"line_number":860,"context_line":"        LOG.info(_LI(\u0027Enabling replication on %s\u0027), volumename)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_7d9e2764","line":857,"in_reply_to":"7a740942_796965f8","updated":"2015-12-08 21:32:47.000000000","message":"Done","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"45361578751d61dfe8e06c958964c98ffba51f73","unresolved":false,"context_lines":[{"line_number":887,"context_line":""},{"line_number":888,"context_line":"        :param context:"},{"line_number":889,"context_line":"        :param vref:"},{"line_number":890,"context_line":"        :return: model_update"},{"line_number":891,"context_line":"        \"\"\""},{"line_number":892,"context_line":"        volumename \u003d vref.get(\u0027id\u0027)"},{"line_number":893,"context_line":"        LOG.info(_LI(\u0027Disabling replication on %s\u0027), volumename)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_8b29548c","line":890,"updated":"2015-12-08 18:30:32.000000000","message":"Same as above","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"3874d8264e0a867fcbe82e7b8f2b622009386b08","unresolved":false,"context_lines":[{"line_number":887,"context_line":""},{"line_number":888,"context_line":"        :param context:"},{"line_number":889,"context_line":"        :param vref:"},{"line_number":890,"context_line":"        :return: model_update"},{"line_number":891,"context_line":"        \"\"\""},{"line_number":892,"context_line":"        volumename \u003d vref.get(\u0027id\u0027)"},{"line_number":893,"context_line":"        LOG.info(_LI(\u0027Disabling replication on %s\u0027), volumename)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_bd7faf13","line":890,"in_reply_to":"7a740942_8b29548c","updated":"2015-12-08 21:32:47.000000000","message":"Done","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"45361578751d61dfe8e06c958964c98ffba51f73","unresolved":false,"context_lines":[{"line_number":919,"context_line":"        \"\"\"Find the backend associated with this ssnstring."},{"line_number":920,"context_line":""},{"line_number":921,"context_line":"        :param ssnstring:"},{"line_number":922,"context_line":"        :return:"},{"line_number":923,"context_line":"        \"\"\""},{"line_number":924,"context_line":"        for backend in self.backends:"},{"line_number":925,"context_line":"            if ssnstring \u003d\u003d backend[\u0027target_device_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_4b560c07","line":922,"updated":"2015-12-08 18:30:32.000000000","message":"Same as above","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"3874d8264e0a867fcbe82e7b8f2b622009386b08","unresolved":false,"context_lines":[{"line_number":919,"context_line":"        \"\"\"Find the backend associated with this ssnstring."},{"line_number":920,"context_line":""},{"line_number":921,"context_line":"        :param ssnstring:"},{"line_number":922,"context_line":"        :return:"},{"line_number":923,"context_line":"        \"\"\""},{"line_number":924,"context_line":"        for backend in self.backends:"},{"line_number":925,"context_line":"            if ssnstring \u003d\u003d backend[\u0027target_device_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_7d75c72f","line":922,"in_reply_to":"7a740942_4b560c07","updated":"2015-12-08 21:32:47.000000000","message":"Done","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"45361578751d61dfe8e06c958964c98ffba51f73","unresolved":false,"context_lines":[{"line_number":963,"context_line":"                                destssn \u003d ssn"},{"line_number":964,"context_line":"                                break"},{"line_number":965,"context_line":"                    except exception.VolumeBackendAPIException:"},{"line_number":966,"context_line":"                        LOG.info(_LI(\u0027SSN %s appears to be down.\u0027), ssn)"},{"line_number":967,"context_line":"        LOG.info(_LI(\u0027replication failover secondary is %(ssn)s %(host)s\u0027),"},{"line_number":968,"context_line":"                 {\u0027ssn\u0027: destssn,"},{"line_number":969,"context_line":"                  \u0027host\u0027: host})"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_cbe43cad","line":966,"updated":"2015-12-08 18:30:32.000000000","message":"IMO, this should be a warning","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"3874d8264e0a867fcbe82e7b8f2b622009386b08","unresolved":false,"context_lines":[{"line_number":963,"context_line":"                                destssn \u003d ssn"},{"line_number":964,"context_line":"                                break"},{"line_number":965,"context_line":"                    except exception.VolumeBackendAPIException:"},{"line_number":966,"context_line":"                        LOG.info(_LI(\u0027SSN %s appears to be down.\u0027), ssn)"},{"line_number":967,"context_line":"        LOG.info(_LI(\u0027replication failover secondary is %(ssn)s %(host)s\u0027),"},{"line_number":968,"context_line":"                 {\u0027ssn\u0027: destssn,"},{"line_number":969,"context_line":"                  \u0027host\u0027: host})"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_fdae977f","line":966,"in_reply_to":"7a740942_cbe43cad","updated":"2015-12-08 21:32:47.000000000","message":"Done","commit_id":"9c0902da97e8235ac870f2d2d58d7362706c1fc5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5b4c9d2a37c7bf1958655aac8183ef236df8d62e","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    def _create_replications(self, api, volume, scvolume):"},{"line_number":162,"context_line":"        \"\"\"Creates any appropriate replications for a given volume."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        :param api:Dell REST API object."},{"line_number":165,"context_line":"        :param volume: Cinder volume object."},{"line_number":166,"context_line":"        :param scvolume: Dell Storage Center Volume object."},{"line_number":167,"context_line":"        :return: model_update"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_8f405909","line":164,"updated":"2015-12-17 01:01:38.000000000","message":"nit: Add a space before \"Dell\".","commit_id":"44639a5d10a73f6d04b987a235ab8e86b90508d5"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"3f38f7ae4a22ccca09e5e6e1f18087cb456fd86b","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    def _create_replications(self, api, volume, scvolume):"},{"line_number":162,"context_line":"        \"\"\"Creates any appropriate replications for a given volume."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        :param api:Dell REST API object."},{"line_number":165,"context_line":"        :param volume: Cinder volume object."},{"line_number":166,"context_line":"        :param scvolume: Dell Storage Center Volume object."},{"line_number":167,"context_line":"        :return: model_update"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_c801ecb0","line":164,"in_reply_to":"3a7e1126_8f405909","updated":"2015-12-18 16:27:26.000000000","message":"Done","commit_id":"44639a5d10a73f6d04b987a235ab8e86b90508d5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5b4c9d2a37c7bf1958655aac8183ef236df8d62e","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                # Update Consistency Group"},{"line_number":224,"context_line":"                self._add_volume_to_consistency_group(api, scvolume, volume)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"                # Create replications.  (Or not.  It checks.)"},{"line_number":227,"context_line":"                model_update \u003d self._create_replications(api, volume, scvolume)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_c0e14e00","line":226,"range":{"start_line":226,"start_character":59,"end_line":226,"end_character":61},"updated":"2015-12-17 01:01:38.000000000","message":"FYI, OpenStack doc team requires only one space after a period rather than two.  No need to change it now.  Maybe you should do that in the future.","commit_id":"44639a5d10a73f6d04b987a235ab8e86b90508d5"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"3f38f7ae4a22ccca09e5e6e1f18087cb456fd86b","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                # Update Consistency Group"},{"line_number":224,"context_line":"                self._add_volume_to_consistency_group(api, scvolume, volume)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"                # Create replications.  (Or not.  It checks.)"},{"line_number":227,"context_line":"                model_update \u003d self._create_replications(api, volume, scvolume)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_48b2dc07","line":226,"range":{"start_line":226,"start_character":59,"end_line":226,"end_character":61},"in_reply_to":"3a7e1126_c0e14e00","updated":"2015-12-18 16:27:26.000000000","message":"My typing teacher is rolling over in his grave.  Fixed.","commit_id":"44639a5d10a73f6d04b987a235ab8e86b90508d5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5b4c9d2a37c7bf1958655aac8183ef236df8d62e","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                model_update \u003d self._create_replications(api, volume, scvolume)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"            except Exception:"},{"line_number":230,"context_line":"                # if we actually created a volume and we lunched"},{"line_number":231,"context_line":"                # delete it now."},{"line_number":232,"context_line":"                if scvolume:"},{"line_number":233,"context_line":"                    api.delete_volume(volume_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_409c7e69","line":230,"range":{"start_line":230,"start_character":57,"end_line":230,"end_character":64},"updated":"2015-12-17 01:01:38.000000000","message":"\"lunched\"?  Is this misspelled or some English usage I don\u0027t know?:)","commit_id":"44639a5d10a73f6d04b987a235ab8e86b90508d5"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"3f38f7ae4a22ccca09e5e6e1f18087cb456fd86b","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                model_update \u003d self._create_replications(api, volume, scvolume)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"            except Exception:"},{"line_number":230,"context_line":"                # if we actually created a volume and we lunched"},{"line_number":231,"context_line":"                # delete it now."},{"line_number":232,"context_line":"                if scvolume:"},{"line_number":233,"context_line":"                    api.delete_volume(volume_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_a8e4a0e0","line":230,"range":{"start_line":230,"start_character":57,"end_line":230,"end_character":64},"in_reply_to":"3a7e1126_409c7e69","updated":"2015-12-18 16:27:26.000000000","message":"Removed slang.","commit_id":"44639a5d10a73f6d04b987a235ab8e86b90508d5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5b4c9d2a37c7bf1958655aac8183ef236df8d62e","unresolved":false,"context_lines":[{"line_number":525,"context_line":"            data[\u0027QoS_support\u0027] \u003d False"},{"line_number":526,"context_line":"            data[\u0027replication_enabled\u0027] \u003d self.replication_enabled"},{"line_number":527,"context_line":"            data[\u0027replication_type\u0027] \u003d [\u0027async\u0027, \u0027sync\u0027]"},{"line_number":528,"context_line":"            # todo (tswanson): Something with this."},{"line_number":529,"context_line":"            data[\u0027replication_count\u0027] \u003d 0"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"            self._stats \u003d data"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_80ffc633","line":528,"range":{"start_line":528,"start_character":50,"end_line":528,"end_character":51},"updated":"2015-12-17 01:01:38.000000000","message":"TODO(tswanson):","commit_id":"44639a5d10a73f6d04b987a235ab8e86b90508d5"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"3f38f7ae4a22ccca09e5e6e1f18087cb456fd86b","unresolved":false,"context_lines":[{"line_number":525,"context_line":"            data[\u0027QoS_support\u0027] \u003d False"},{"line_number":526,"context_line":"            data[\u0027replication_enabled\u0027] \u003d self.replication_enabled"},{"line_number":527,"context_line":"            data[\u0027replication_type\u0027] \u003d [\u0027async\u0027, \u0027sync\u0027]"},{"line_number":528,"context_line":"            # todo (tswanson): Something with this."},{"line_number":529,"context_line":"            data[\u0027replication_count\u0027] \u003d 0"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"            self._stats \u003d data"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_084294ae","line":528,"range":{"start_line":528,"start_character":50,"end_line":528,"end_character":51},"in_reply_to":"3a7e1126_80ffc633","updated":"2015-12-18 16:27:26.000000000","message":"Removed altogether.","commit_id":"44639a5d10a73f6d04b987a235ab8e86b90508d5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5b4c9d2a37c7bf1958655aac8183ef236df8d62e","unresolved":false,"context_lines":[{"line_number":851,"context_line":"        return False"},{"line_number":852,"context_line":""},{"line_number":853,"context_line":"    def replication_enable(self, context, vref):"},{"line_number":854,"context_line":"        \"\"\"Renable replication on vref."},{"line_number":855,"context_line":""},{"line_number":856,"context_line":"        :param context: NA"},{"line_number":857,"context_line":"        :param vref: Cinder volume reference."}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_802266b8","line":854,"range":{"start_line":854,"start_character":38,"end_line":854,"end_character":39},"updated":"2015-12-17 01:01:38.000000000","message":"It\u0027s \"Enable\", not \"Renable\".","commit_id":"44639a5d10a73f6d04b987a235ab8e86b90508d5"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"3f38f7ae4a22ccca09e5e6e1f18087cb456fd86b","unresolved":false,"context_lines":[{"line_number":851,"context_line":"        return False"},{"line_number":852,"context_line":""},{"line_number":853,"context_line":"    def replication_enable(self, context, vref):"},{"line_number":854,"context_line":"        \"\"\"Renable replication on vref."},{"line_number":855,"context_line":""},{"line_number":856,"context_line":"        :param context: NA"},{"line_number":857,"context_line":"        :param vref: Cinder volume reference."}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_685d5878","line":854,"range":{"start_line":854,"start_character":38,"end_line":854,"end_character":39},"in_reply_to":"3a7e1126_802266b8","updated":"2015-12-18 16:27:26.000000000","message":"\"Re-enable\". Point largely being that we had to have been enabled once before this command makes sense. Although I do use \"Enabling\" in the log message...","commit_id":"44639a5d10a73f6d04b987a235ab8e86b90508d5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5b4c9d2a37c7bf1958655aac8183ef236df8d62e","unresolved":false,"context_lines":[{"line_number":992,"context_line":"            2. \"\u003cVolume GUID\u003e\" outside of the volume folder."},{"line_number":993,"context_line":"            3. \"Cinder failover \u003cVolume GUID\u003e\" anywhere on the system."},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        If \"Cinder failover \u003cVolume GUID\" was found:"},{"line_number":996,"context_line":"            1.Volume is renamed to \"\u003cVolume GUID\u003e\"."},{"line_number":997,"context_line":"            2.Volume is moved to the new backend\u0027s volume folder."},{"line_number":998,"context_line":"            3.Bob\u0027s your uncle"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_bbe1d300","line":995,"updated":"2015-12-17 01:01:38.000000000","message":"Missing ending \u003e","commit_id":"44639a5d10a73f6d04b987a235ab8e86b90508d5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5b4c9d2a37c7bf1958655aac8183ef236df8d62e","unresolved":false,"context_lines":[{"line_number":995,"context_line":"        If \"Cinder failover \u003cVolume GUID\" was found:"},{"line_number":996,"context_line":"            1.Volume is renamed to \"\u003cVolume GUID\u003e\"."},{"line_number":997,"context_line":"            2.Volume is moved to the new backend\u0027s volume folder."},{"line_number":998,"context_line":"            3.Bob\u0027s your uncle"},{"line_number":999,"context_line":""},{"line_number":1000,"context_line":"        :param context;"},{"line_number":1001,"context_line":"        :param vref: Cinder volume reference."}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_3bc5e35a","line":998,"updated":"2015-12-17 01:01:38.000000000","message":"I hope someone else who read this comment understands what to do as I don\u0027t know what you meant here:).","commit_id":"44639a5d10a73f6d04b987a235ab8e86b90508d5"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"3f38f7ae4a22ccca09e5e6e1f18087cb456fd86b","unresolved":false,"context_lines":[{"line_number":995,"context_line":"        If \"Cinder failover \u003cVolume GUID\" was found:"},{"line_number":996,"context_line":"            1.Volume is renamed to \"\u003cVolume GUID\u003e\"."},{"line_number":997,"context_line":"            2.Volume is moved to the new backend\u0027s volume folder."},{"line_number":998,"context_line":"            3.Bob\u0027s your uncle"},{"line_number":999,"context_line":""},{"line_number":1000,"context_line":"        :param context;"},{"line_number":1001,"context_line":"        :param vref: Cinder volume reference."}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_68a2384d","line":998,"in_reply_to":"3a7e1126_3bc5e35a","updated":"2015-12-18 16:27:26.000000000","message":"Changed to \"3.Bob\u0027s your uncle (Or the volume is now available on the secondary backend.)\"","commit_id":"44639a5d10a73f6d04b987a235ab8e86b90508d5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"26baf28d5e9aa188fde9ff407deef0b40de513c0","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            specs \u003d self._get_volume_extra_specs(volume)"},{"line_number":156,"context_line":"            do_repl \u003d specs.get(\u0027replication_enabled\u0027) \u003d\u003d \u0027\u003cis\u003e True\u0027"},{"line_number":157,"context_line":"            sync \u003d specs.get(\u0027replication_type\u0027) \u003d\u003d \u0027sync\u0027"},{"line_number":158,"context_line":"        LOG.debug(\u0027do_repl %r sync %r\u0027, do_repl, sync)"},{"line_number":159,"context_line":"        return do_repl, sync"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def _create_replications(self, api, volume, scvolume):"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_52d72123","line":158,"updated":"2016-01-02 06:42:42.000000000","message":"Please use keyword parameters for variables to put in the string.","commit_id":"5d0ad2d422b7ea941571ef703ba9d17e41fce154"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"b85d749d352d59202b2248838ae737511e828904","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            specs \u003d self._get_volume_extra_specs(volume)"},{"line_number":156,"context_line":"            do_repl \u003d specs.get(\u0027replication_enabled\u0027) \u003d\u003d \u0027\u003cis\u003e True\u0027"},{"line_number":157,"context_line":"            sync \u003d specs.get(\u0027replication_type\u0027) \u003d\u003d \u0027sync\u0027"},{"line_number":158,"context_line":"        LOG.debug(\u0027do_repl %r sync %r\u0027, do_repl, sync)"},{"line_number":159,"context_line":"        return do_repl, sync"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def _create_replications(self, api, volume, scvolume):"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_1ff50d82","line":158,"in_reply_to":"fa69d971_52d72123","updated":"2016-01-04 16:37:24.000000000","message":"Meant to remove that.  Removed.","commit_id":"5d0ad2d422b7ea941571ef703ba9d17e41fce154"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"26baf28d5e9aa188fde9ff407deef0b40de513c0","unresolved":false,"context_lines":[{"line_number":835,"context_line":"                        \u0027current and requested %(spectype)s values. Value \u0027"},{"line_number":836,"context_line":"                        \u0027received: %s\u0027) % {\u0027specname\u0027: specname,"},{"line_number":837,"context_line":"                                           \u0027spectype\u0027: spectype}"},{"line_number":838,"context_line":"                LOG.debug(msg)"},{"line_number":839,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"            current \u003d spec[0]"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_f282d5ff","line":838,"updated":"2016-01-02 06:42:42.000000000","message":"This should be an error message.  Also a debug message should not use _(\"xxxx\").","commit_id":"5d0ad2d422b7ea941571ef703ba9d17e41fce154"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"b85d749d352d59202b2248838ae737511e828904","unresolved":false,"context_lines":[{"line_number":835,"context_line":"                        \u0027current and requested %(spectype)s values. Value \u0027"},{"line_number":836,"context_line":"                        \u0027received: %s\u0027) % {\u0027specname\u0027: specname,"},{"line_number":837,"context_line":"                                           \u0027spectype\u0027: spectype}"},{"line_number":838,"context_line":"                LOG.debug(msg)"},{"line_number":839,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"            current \u003d spec[0]"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_82ea000e","line":838,"in_reply_to":"fa69d971_f282d5ff","updated":"2016-01-04 16:37:24.000000000","message":"Done","commit_id":"5d0ad2d422b7ea941571ef703ba9d17e41fce154"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"26baf28d5e9aa188fde9ff407deef0b40de513c0","unresolved":false,"context_lines":[{"line_number":845,"context_line":"                LOG.debug(\u0027Retyping volume %(vol)s to use %(specname)s \u0027"},{"line_number":846,"context_line":"                          \u0027%(spec)s.\u0027,"},{"line_number":847,"context_line":"                          {\u0027vol\u0027: volume_name,"},{"line_number":848,"context_line":"                           \u0027spec\u0027: requested})"},{"line_number":849,"context_line":"                return current, requested"},{"line_number":850,"context_line":"            else:"},{"line_number":851,"context_line":"                LOG.info(_LI(\u0027Retype was to same Storage Profile.\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_32906d43","line":848,"updated":"2016-01-02 06:42:42.000000000","message":"Missing parameter \"specname\".","commit_id":"5d0ad2d422b7ea941571ef703ba9d17e41fce154"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"b85d749d352d59202b2248838ae737511e828904","unresolved":false,"context_lines":[{"line_number":845,"context_line":"                LOG.debug(\u0027Retyping volume %(vol)s to use %(specname)s \u0027"},{"line_number":846,"context_line":"                          \u0027%(spec)s.\u0027,"},{"line_number":847,"context_line":"                          {\u0027vol\u0027: volume_name,"},{"line_number":848,"context_line":"                           \u0027spec\u0027: requested})"},{"line_number":849,"context_line":"                return current, requested"},{"line_number":850,"context_line":"            else:"},{"line_number":851,"context_line":"                LOG.info(_LI(\u0027Retype was to same Storage Profile.\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_82d1a059","line":848,"in_reply_to":"fa69d971_32906d43","updated":"2016-01-04 16:37:24.000000000","message":"Huh.  Fixed.","commit_id":"5d0ad2d422b7ea941571ef703ba9d17e41fce154"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"26baf28d5e9aa188fde9ff407deef0b40de513c0","unresolved":false,"context_lines":[{"line_number":915,"context_line":"                            self._delete_replications(api, volume)"},{"line_number":916,"context_line":"                            model_update \u003d {\u0027replication_status\u0027: \u0027disabled\u0027,"},{"line_number":917,"context_line":"                                            \u0027replication_driver_data\u0027: \u0027\u0027}"},{"line_number":918,"context_line":"                        # So? Good?"},{"line_number":919,"context_line":""},{"line_number":920,"context_line":"                    # Active Replay"},{"line_number":921,"context_line":"                    current, requested \u003d ("}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_129d2959","line":918,"updated":"2016-01-02 06:42:42.000000000","message":"Please remove the above comment.","commit_id":"5d0ad2d422b7ea941571ef703ba9d17e41fce154"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"b85d749d352d59202b2248838ae737511e828904","unresolved":false,"context_lines":[{"line_number":915,"context_line":"                            self._delete_replications(api, volume)"},{"line_number":916,"context_line":"                            model_update \u003d {\u0027replication_status\u0027: \u0027disabled\u0027,"},{"line_number":917,"context_line":"                                            \u0027replication_driver_data\u0027: \u0027\u0027}"},{"line_number":918,"context_line":"                        # So? Good?"},{"line_number":919,"context_line":""},{"line_number":920,"context_line":"                    # Active Replay"},{"line_number":921,"context_line":"                    current, requested \u003d ("}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_8238c0a1","line":918,"in_reply_to":"fa69d971_129d2959","updated":"2016-01-04 16:37:24.000000000","message":"Done","commit_id":"5d0ad2d422b7ea941571ef703ba9d17e41fce154"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"26baf28d5e9aa188fde9ff407deef0b40de513c0","unresolved":false,"context_lines":[{"line_number":1085,"context_line":"            1.Volume is renamed to \"\u003cVolume GUID\u003e\"."},{"line_number":1086,"context_line":"            2.Volume is moved to the new backend\u0027s volume folder."},{"line_number":1087,"context_line":"            3.Bob\u0027s your uncle (Or the volume is now available on the"},{"line_number":1088,"context_line":"              secondary backend.)"},{"line_number":1089,"context_line":""},{"line_number":1090,"context_line":"        :param context;"},{"line_number":1091,"context_line":"        :param vref: Cinder volume reference."}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_7204a5bf","line":1088,"updated":"2016-01-02 06:42:42.000000000","message":"I\u0027d prefer that you remove \"Bob\u0027s your uncle\":).  Quite a few developers/reviewers are not native English speakers.","commit_id":"5d0ad2d422b7ea941571ef703ba9d17e41fce154"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"b85d749d352d59202b2248838ae737511e828904","unresolved":false,"context_lines":[{"line_number":1085,"context_line":"            1.Volume is renamed to \"\u003cVolume GUID\u003e\"."},{"line_number":1086,"context_line":"            2.Volume is moved to the new backend\u0027s volume folder."},{"line_number":1087,"context_line":"            3.Bob\u0027s your uncle (Or the volume is now available on the"},{"line_number":1088,"context_line":"              secondary backend.)"},{"line_number":1089,"context_line":""},{"line_number":1090,"context_line":"        :param context;"},{"line_number":1091,"context_line":"        :param vref: Cinder volume reference."}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_a262a4ab","line":1088,"in_reply_to":"fa69d971_7204a5bf","updated":"2016-01-04 16:37:24.000000000","message":"Done","commit_id":"5d0ad2d422b7ea941571ef703ba9d17e41fce154"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"26baf28d5e9aa188fde9ff407deef0b40de513c0","unresolved":false,"context_lines":[{"line_number":1122,"context_line":"                    LOG.error(_LE(\u0027Unable to break replication from \u0027"},{"line_number":1123,"context_line":"                                  \u0027%(from)s to %(to)d.\u0027),"},{"line_number":1124,"context_line":"                              {\u0027from\u0027: volumename,"},{"line_number":1125,"context_line":"                               \u0027to\u0027: destssn})"},{"line_number":1126,"context_line":"                else:"},{"line_number":1127,"context_line":"                    LOG.error(_LE(\u0027Unable to find valid destination.\u0027))"},{"line_number":1128,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_522f21f6","line":1125,"updated":"2016-01-02 06:42:42.000000000","message":"Is destssn an int or string?  You used \"%d\" here but used \"%s\" on line 962.","commit_id":"5d0ad2d422b7ea941571ef703ba9d17e41fce154"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"b85d749d352d59202b2248838ae737511e828904","unresolved":false,"context_lines":[{"line_number":1122,"context_line":"                    LOG.error(_LE(\u0027Unable to break replication from \u0027"},{"line_number":1123,"context_line":"                                  \u0027%(from)s to %(to)d.\u0027),"},{"line_number":1124,"context_line":"                              {\u0027from\u0027: volumename,"},{"line_number":1125,"context_line":"                               \u0027to\u0027: destssn})"},{"line_number":1126,"context_line":"                else:"},{"line_number":1127,"context_line":"                    LOG.error(_LE(\u0027Unable to find valid destination.\u0027))"},{"line_number":1128,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_a2baa4be","line":1125,"in_reply_to":"fa69d971_522f21f6","updated":"2016-01-04 16:37:24.000000000","message":"By this point it should be an int.  (Starts as a string.)  Above I use a %s as it could be a NoneType up there.","commit_id":"5d0ad2d422b7ea941571ef703ba9d17e41fce154"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"983e1df2bebb3a7950e542421b25698b0caca9e3","unresolved":false,"context_lines":[{"line_number":948,"context_line":"        LOG.info(_LI(\u0027Enabling replication on %s\u0027), volumename)"},{"line_number":949,"context_line":"        model_update \u003d {}"},{"line_number":950,"context_line":"        with self._client.open_connection() as api:"},{"line_number":951,"context_line":"            replication_driver_data \u003d vref.get(\u0027replication_driver_data\u0027, \u0027\u0027)"},{"line_number":952,"context_line":"            destssns \u003d replication_driver_data.split(\u0027,\u0027)"},{"line_number":953,"context_line":"            do_repl, sync \u003d self._do_repl(api, vref)"},{"line_number":954,"context_line":"            if destssns and do_repl:"},{"line_number":955,"context_line":"                scvolume \u003d api.find_volume(volumename)"},{"line_number":956,"context_line":"                if scvolume:"},{"line_number":957,"context_line":"                    for destssn in destssns:"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa69d971_ed7b6f26","line":954,"range":{"start_line":951,"start_character":0,"end_line":954,"end_character":36},"updated":"2016-01-05 21:02:02.000000000","message":"Same thing as replication_disable","commit_id":"23e8f9a91b63a2dfcbd43919822d2eda072c62bc"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"f1ecf1addff9b91a3d42549eb0c6c20902ce916c","unresolved":false,"context_lines":[{"line_number":948,"context_line":"        LOG.info(_LI(\u0027Enabling replication on %s\u0027), volumename)"},{"line_number":949,"context_line":"        model_update \u003d {}"},{"line_number":950,"context_line":"        with self._client.open_connection() as api:"},{"line_number":951,"context_line":"            replication_driver_data \u003d vref.get(\u0027replication_driver_data\u0027, \u0027\u0027)"},{"line_number":952,"context_line":"            destssns \u003d replication_driver_data.split(\u0027,\u0027)"},{"line_number":953,"context_line":"            do_repl, sync \u003d self._do_repl(api, vref)"},{"line_number":954,"context_line":"            if destssns and do_repl:"},{"line_number":955,"context_line":"                scvolume \u003d api.find_volume(volumename)"},{"line_number":956,"context_line":"                if scvolume:"},{"line_number":957,"context_line":"                    for destssn in destssns:"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa69d971_d83e6b27","line":954,"range":{"start_line":951,"start_character":0,"end_line":954,"end_character":36},"in_reply_to":"fa69d971_ed7b6f26","updated":"2016-01-05 21:44:43.000000000","message":"I removed the simple split and tidy the string.","commit_id":"23e8f9a91b63a2dfcbd43919822d2eda072c62bc"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"983e1df2bebb3a7950e542421b25698b0caca9e3","unresolved":false,"context_lines":[{"line_number":982,"context_line":"        model_update \u003d {}"},{"line_number":983,"context_line":"        with self._client.open_connection() as api:"},{"line_number":984,"context_line":"            replication_driver_data \u003d vref.get(\u0027replication_driver_data\u0027, \u0027\u0027)"},{"line_number":985,"context_line":"            destssns \u003d replication_driver_data.split(\u0027,\u0027)"},{"line_number":986,"context_line":"            do_repl, sync \u003d self._do_repl(api, vref)"},{"line_number":987,"context_line":"            if destssns and do_repl:"},{"line_number":988,"context_line":"                scvolume \u003d api.find_volume(volumename)"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa69d971_2d5bc7f7","line":985,"range":{"start_line":985,"start_character":12,"end_line":985,"end_character":57},"updated":"2016-01-05 21:02:02.000000000","message":"If you do a split on an empty string, it will return [\u0027\u0027] which is not empty/None/0 (it is a list with 1 item), therefore an `if [\u0027\u0027]:` always evaluates to True. \n\nIn your case, that means destssns will be True in all scenarios. This should be refactored to account replication_driver_data being an empty string and destssns becoming [\u0027\u0027].","commit_id":"23e8f9a91b63a2dfcbd43919822d2eda072c62bc"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"f1ecf1addff9b91a3d42549eb0c6c20902ce916c","unresolved":false,"context_lines":[{"line_number":982,"context_line":"        model_update \u003d {}"},{"line_number":983,"context_line":"        with self._client.open_connection() as api:"},{"line_number":984,"context_line":"            replication_driver_data \u003d vref.get(\u0027replication_driver_data\u0027, \u0027\u0027)"},{"line_number":985,"context_line":"            destssns \u003d replication_driver_data.split(\u0027,\u0027)"},{"line_number":986,"context_line":"            do_repl, sync \u003d self._do_repl(api, vref)"},{"line_number":987,"context_line":"            if destssns and do_repl:"},{"line_number":988,"context_line":"                scvolume \u003d api.find_volume(volumename)"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa69d971_18b3a3ea","line":985,"range":{"start_line":985,"start_character":12,"end_line":985,"end_character":57},"in_reply_to":"fa69d971_2d5bc7f7","updated":"2016-01-05 21:44:43.000000000","message":"Made a fn to split the string.","commit_id":"23e8f9a91b63a2dfcbd43919822d2eda072c62bc"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"983e1df2bebb3a7950e542421b25698b0caca9e3","unresolved":false,"context_lines":[{"line_number":984,"context_line":"            replication_driver_data \u003d vref.get(\u0027replication_driver_data\u0027, \u0027\u0027)"},{"line_number":985,"context_line":"            destssns \u003d replication_driver_data.split(\u0027,\u0027)"},{"line_number":986,"context_line":"            do_repl, sync \u003d self._do_repl(api, vref)"},{"line_number":987,"context_line":"            if destssns and do_repl:"},{"line_number":988,"context_line":"                scvolume \u003d api.find_volume(volumename)"},{"line_number":989,"context_line":"                if scvolume:"},{"line_number":990,"context_line":"                    for destssn in destssns:"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa69d971_cde9cbe7","line":987,"range":{"start_line":987,"start_character":12,"end_line":987,"end_character":36},"updated":"2016-01-05 21:02:02.000000000","message":"This if clause is essentially only checking do_repl as destssns will always be True. See above comment. destssns check should be removed or the above should be changed.","commit_id":"23e8f9a91b63a2dfcbd43919822d2eda072c62bc"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"f1ecf1addff9b91a3d42549eb0c6c20902ce916c","unresolved":false,"context_lines":[{"line_number":984,"context_line":"            replication_driver_data \u003d vref.get(\u0027replication_driver_data\u0027, \u0027\u0027)"},{"line_number":985,"context_line":"            destssns \u003d replication_driver_data.split(\u0027,\u0027)"},{"line_number":986,"context_line":"            do_repl, sync \u003d self._do_repl(api, vref)"},{"line_number":987,"context_line":"            if destssns and do_repl:"},{"line_number":988,"context_line":"                scvolume \u003d api.find_volume(volumename)"},{"line_number":989,"context_line":"                if scvolume:"},{"line_number":990,"context_line":"                    for destssn in destssns:"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa69d971_f8fb2f79","line":987,"range":{"start_line":987,"start_character":12,"end_line":987,"end_character":36},"in_reply_to":"fa69d971_cde9cbe7","updated":"2016-01-05 21:44:43.000000000","message":"Done","commit_id":"23e8f9a91b63a2dfcbd43919822d2eda072c62bc"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"983e1df2bebb3a7950e542421b25698b0caca9e3","unresolved":false,"context_lines":[{"line_number":1144,"context_line":"        targets \u003d []"},{"line_number":1145,"context_line":"        with self._client.open_connection() as api:"},{"line_number":1146,"context_line":"            do_repl, sync \u003d self._do_repl(api, vref)"},{"line_number":1147,"context_line":"            # If we have to replication_driver_data then we have no replication"},{"line_number":1148,"context_line":"            # targets"},{"line_number":1149,"context_line":"            replication_driver_data \u003d vref.get(\u0027replication_driver_data\u0027, \u0027\u0027)"},{"line_number":1150,"context_line":"            if replication_driver_data:"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa69d971_823e4326","line":1147,"range":{"start_line":1147,"start_character":25,"end_line":1147,"end_character":27},"updated":"2016-01-05 21:02:02.000000000","message":"to -\u003e no ?","commit_id":"23e8f9a91b63a2dfcbd43919822d2eda072c62bc"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"f1ecf1addff9b91a3d42549eb0c6c20902ce916c","unresolved":false,"context_lines":[{"line_number":1144,"context_line":"        targets \u003d []"},{"line_number":1145,"context_line":"        with self._client.open_connection() as api:"},{"line_number":1146,"context_line":"            do_repl, sync \u003d self._do_repl(api, vref)"},{"line_number":1147,"context_line":"            # If we have to replication_driver_data then we have no replication"},{"line_number":1148,"context_line":"            # targets"},{"line_number":1149,"context_line":"            replication_driver_data \u003d vref.get(\u0027replication_driver_data\u0027, \u0027\u0027)"},{"line_number":1150,"context_line":"            if replication_driver_data:"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa69d971_58f59b54","line":1147,"range":{"start_line":1147,"start_character":25,"end_line":1147,"end_character":27},"in_reply_to":"fa69d971_823e4326","updated":"2016-01-05 21:44:43.000000000","message":"Done","commit_id":"23e8f9a91b63a2dfcbd43919822d2eda072c62bc"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"983e1df2bebb3a7950e542421b25698b0caca9e3","unresolved":false,"context_lines":[{"line_number":1146,"context_line":"            do_repl, sync \u003d self._do_repl(api, vref)"},{"line_number":1147,"context_line":"            # If we have to replication_driver_data then we have no replication"},{"line_number":1148,"context_line":"            # targets"},{"line_number":1149,"context_line":"            replication_driver_data \u003d vref.get(\u0027replication_driver_data\u0027, \u0027\u0027)"},{"line_number":1150,"context_line":"            if replication_driver_data:"},{"line_number":1151,"context_line":"                # This is just a string of ssns separated by commas."},{"line_number":1152,"context_line":"                ssnstrings \u003d replication_driver_data.split(\u0027,\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa69d971_a28027c0","line":1149,"range":{"start_line":1149,"start_character":38,"end_line":1149,"end_character":77},"updated":"2016-01-05 21:02:02.000000000","message":"vref.get(\u0027replication_driver_data\u0027) will return None if there is no replication_driver_data. It looks a bit more clean.","commit_id":"23e8f9a91b63a2dfcbd43919822d2eda072c62bc"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"f1ecf1addff9b91a3d42549eb0c6c20902ce916c","unresolved":false,"context_lines":[{"line_number":1146,"context_line":"            do_repl, sync \u003d self._do_repl(api, vref)"},{"line_number":1147,"context_line":"            # If we have to replication_driver_data then we have no replication"},{"line_number":1148,"context_line":"            # targets"},{"line_number":1149,"context_line":"            replication_driver_data \u003d vref.get(\u0027replication_driver_data\u0027, \u0027\u0027)"},{"line_number":1150,"context_line":"            if replication_driver_data:"},{"line_number":1151,"context_line":"                # This is just a string of ssns separated by commas."},{"line_number":1152,"context_line":"                ssnstrings \u003d replication_driver_data.split(\u0027,\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa69d971_589cbb0e","line":1149,"range":{"start_line":1149,"start_character":38,"end_line":1149,"end_character":77},"in_reply_to":"fa69d971_a28027c0","updated":"2016-01-05 21:44:43.000000000","message":"Changed how this was being done.","commit_id":"23e8f9a91b63a2dfcbd43919822d2eda072c62bc"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"983e1df2bebb3a7950e542421b25698b0caca9e3","unresolved":false,"context_lines":[{"line_number":1157,"context_line":"                        # If we find a backend then we report it."},{"line_number":1158,"context_line":"                        if ssnstrings.count(backend[\u0027target_device_id\u0027]):"},{"line_number":1159,"context_line":"                            target \u003d {}"},{"line_number":1160,"context_line":"                            target[\u0027type\u0027] \u003d \u0027managed\u0027"},{"line_number":1161,"context_line":"                            target[\u0027target_device_id\u0027] \u003d ("},{"line_number":1162,"context_line":"                                backend[\u0027target_device_id\u0027])"},{"line_number":1163,"context_line":"                            target[\u0027backend_name\u0027] \u003d ("},{"line_number":1164,"context_line":"                                backend[\u0027managed_backend_name\u0027])"},{"line_number":1165,"context_line":"                            targets.append(target)"},{"line_number":1166,"context_line":"                        else:"},{"line_number":1167,"context_line":"                            # We note if the source is not replicated to a"},{"line_number":1168,"context_line":"                            # configured destination for the backend."}],"source_content_type":"text/x-python","patch_set":14,"id":"fa69d971_a257c758","line":1165,"range":{"start_line":1160,"start_character":28,"end_line":1165,"end_character":50},"updated":"2016-01-05 21:02:02.000000000","message":"Only target_device_id will be printed now, the other things you are including will be ignored.","commit_id":"23e8f9a91b63a2dfcbd43919822d2eda072c62bc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0f084c79e2ade7ce0244290e694a0d7175a5427c","unresolved":false,"context_lines":[{"line_number":880,"context_line":"                    # Get our volume"},{"line_number":881,"context_line":"                    scvolume \u003d api.find_volume(volume_name)"},{"line_number":882,"context_line":"                    if scvolume is None:"},{"line_number":883,"context_line":"                        LOG.error(_LE(\u0027retype unable to find volume %s.\u0027),"},{"line_number":884,"context_line":"                                  volume_name)"},{"line_number":885,"context_line":"                        return False"},{"line_number":886,"context_line":"                    # Check our specs."}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_b9483dcd","line":883,"updated":"2016-01-06 13:51:39.000000000","message":"s/retype/Retype","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"d111c7b354fa2e09dac9bf6996ca0a99a1b4a9c0","unresolved":false,"context_lines":[{"line_number":880,"context_line":"                    # Get our volume"},{"line_number":881,"context_line":"                    scvolume \u003d api.find_volume(volume_name)"},{"line_number":882,"context_line":"                    if scvolume is None:"},{"line_number":883,"context_line":"                        LOG.error(_LE(\u0027retype unable to find volume %s.\u0027),"},{"line_number":884,"context_line":"                                  volume_name)"},{"line_number":885,"context_line":"                        return False"},{"line_number":886,"context_line":"                    # Check our specs."}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_7aeab075","line":883,"in_reply_to":"fa69d971_b9483dcd","updated":"2016-01-06 16:09:46.000000000","message":"Changed.  Although I tend to like to keep the case on function names lower case.","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0f084c79e2ade7ce0244290e694a0d7175a5427c","unresolved":false,"context_lines":[{"line_number":1064,"context_line":"        return destssn, host"},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    def replication_failover(self, context, vref, secondary):"},{"line_number":1067,"context_line":"        \"\"\"failover to secondary"},{"line_number":1068,"context_line":""},{"line_number":1069,"context_line":"        The flow is as follows."},{"line_number":1070,"context_line":"            1.The user explicitly requests a failover of a replicated volume."}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_196ce933","line":1067,"updated":"2016-01-06 13:51:39.000000000","message":"s/failover/Failover, also add a full stop at the end of this line.","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"d111c7b354fa2e09dac9bf6996ca0a99a1b4a9c0","unresolved":false,"context_lines":[{"line_number":1064,"context_line":"        return destssn, host"},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    def replication_failover(self, context, vref, secondary):"},{"line_number":1067,"context_line":"        \"\"\"failover to secondary"},{"line_number":1068,"context_line":""},{"line_number":1069,"context_line":"        The flow is as follows."},{"line_number":1070,"context_line":"            1.The user explicitly requests a failover of a replicated volume."}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_faf6a05b","line":1067,"in_reply_to":"fa69d971_196ce933","updated":"2016-01-06 16:09:46.000000000","message":"Done","commit_id":"7eab5f9c8082fa4fc845ffe333886cf0f70da50a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7b3789e0c54e67451ca60c491a235a1542f3e30b","unresolved":false,"context_lines":[{"line_number":852,"context_line":"                LOG.debug(\u0027Retyping volume %(vol)s to use %(specname)s \u0027"},{"line_number":853,"context_line":"                          \u0027%(spec)s.\u0027,"},{"line_number":854,"context_line":"                          {\u0027vol\u0027: volume_name,"},{"line_number":855,"context_line":"                           \u0027specname\u0027: requested})"},{"line_number":856,"context_line":"                return current, requested"},{"line_number":857,"context_line":"            else:"},{"line_number":858,"context_line":"                LOG.info(_LI(\u0027Retype was to same Storage Profile.\u0027))"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_04b8b1e4","line":855,"updated":"2016-01-07 21:36:18.000000000","message":"Missing  parameter \"spec\".","commit_id":"2c140cf05c4b71254e4c4f97b160b2b368e1e0ae"}],"cinder/volume/drivers/dell/dell_storagecenter_fc.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"96ebe4f20a98938128be4423eb30bd3e1cde5e8d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        2.4.0 - Added Replication."},{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    VERSION \u003d \u00272.4.0\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":53,"context_line":"        super(DellStorageCenterFCDriver, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_7d2b3c83","line":50,"updated":"2015-11-17 00:22:35.000000000","message":"Even though you are not touching this file, you increment the version? Is that to keep the versions consistent across the common, fc, and iscsi files?","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"8da093dca2666081429a169f43135b143cde1384","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        2.4.0 - Added Replication."},{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    VERSION \u003d \u00272.4.0\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":53,"context_line":"        super(DellStorageCenterFCDriver, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_af5aa328","line":50,"in_reply_to":"ba8a016a_7d2b3c83","updated":"2015-11-17 16:30:55.000000000","message":"I need to put that in one spot.  Initially it was intended to be different among the bits but it didn\u0027t really work out that way.","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"5779975325a329c3d5246f5a239c12b4dbd376f5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        2.2.0 - Driver retype support for switching volume\u0027s Storage Profile"},{"line_number":45,"context_line":"        2.3.0 - Added Legacy Port Mode Support"},{"line_number":46,"context_line":"        2.3.1 - Updated error handling."},{"line_number":47,"context_line":"        2.4.0 - Added Replication."},{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    VERSION \u003d \u00272.4.0\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_cd0d8a3f","line":47,"updated":"2015-11-26 09:07:15.000000000","message":"Would you add which replication api version (V2?) you are adding?","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        2.2.0 - Driver retype support for switching volume\u0027s Storage Profile"},{"line_number":45,"context_line":"        2.3.0 - Added Legacy Port Mode Support"},{"line_number":46,"context_line":"        2.3.1 - Updated error handling."},{"line_number":47,"context_line":"        2.4.0 - Added Replication."},{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    VERSION \u003d \u00272.4.0\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_9ee38a33","line":47,"in_reply_to":"9a8ffd7b_cd0d8a3f","updated":"2015-11-30 21:18:51.000000000","message":"Done","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"}],"cinder/volume/drivers/dell/dell_storagecenter_iscsi.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"96ebe4f20a98938128be4423eb30bd3e1cde5e8d","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        2.4.0 - Added Replication."},{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    VERSION \u003d \u00272.4.0\u0027"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":52,"context_line":"        super(DellStorageCenterISCSIDriver, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_1d20f09a","line":49,"updated":"2015-11-17 00:22:35.000000000","message":"Even though you are not touching this file, you increment the version? Is that to keep the versions consistent across the common, fc, and iscsi files?","commit_id":"a5adfc6556584b36eefc8185def523b5f02fab9d"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"5779975325a329c3d5246f5a239c12b4dbd376f5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                Added API 2.2 support."},{"line_number":44,"context_line":"        2.3.0 - Added Legacy Port Mode Support"},{"line_number":45,"context_line":"        2.3.1 - Updated error handling."},{"line_number":46,"context_line":"        2.4.0 - Added Replication."},{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    VERSION \u003d \u00272.4.0\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_ad2b6693","line":46,"updated":"2015-11-26 09:07:15.000000000","message":"Would you add which replication api version (V2?) you are adding?","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"5e90bb0599806e44616bf0aac4edd584ba0743d5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                Added API 2.2 support."},{"line_number":44,"context_line":"        2.3.0 - Added Legacy Port Mode Support"},{"line_number":45,"context_line":"        2.3.1 - Updated error handling."},{"line_number":46,"context_line":"        2.4.0 - Added Replication."},{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    VERSION \u003d \u00272.4.0\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_dec0327f","line":46,"in_reply_to":"9a8ffd7b_ad2b6693","updated":"2015-11-30 21:18:51.000000000","message":"Done","commit_id":"6b758749dbbddc4f7c7d5c22f709d0d0df403144"}],"releasenotes/notes/Dell-SC-v2-replication-bd48520ffd053f4b.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"26baf28d5e9aa188fde9ff407deef0b40de513c0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added replication support to the Dell Storage Center drivers.Added v2 replication support."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"fa69d971_32138dba","line":3,"updated":"2016-01-02 06:42:42.000000000","message":"Please add one space between the period and \"Added V2…\".","commit_id":"5d0ad2d422b7ea941571ef703ba9d17e41fce154"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"b85d749d352d59202b2248838ae737511e828904","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added replication support to the Dell Storage Center drivers.Added v2 replication support."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"fa69d971_02fa9075","line":3,"in_reply_to":"fa69d971_32138dba","updated":"2016-01-04 16:37:24.000000000","message":"Changed to Added replication v2 support to the Dell Storage Center drivers.","commit_id":"5d0ad2d422b7ea941571ef703ba9d17e41fce154"}]}
