)]}'
{"cinder/tests/unit/test_solidfire.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d6c27a9816ed07b9f8dde04659a0c65c06beccd2","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"class SolidFireReplicationTestCase(test.TestCase):"},{"line_number":1132,"context_line":"    def setUp(self):"},{"line_number":1133,"context_line":"        super(SolidFireReplicationTestCase, self).setUp()"},{"line_number":1134,"context_line":"        self.configuration \u003d mox.MockObject(conf.Configuration)"},{"line_number":1135,"context_line":"        self.configuration.san_ip \u003d \u00271.1.1.1\u0027"},{"line_number":1136,"context_line":"        self.configuration.san_login \u003d \u0027admin\u0027"},{"line_number":1137,"context_line":"        self.configuration.san_password \u003d \u0027admin\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_bda46a08","line":1134,"updated":"2015-11-07 05:25:12.000000000","message":"Can we use mock for this?\n\nself.configuration \u003d mock.Mock(spec\u003dconf.Configuration)","commit_id":"629ec6f08846984de12fdd0421cf044d225e9bed"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4bbb33fa84714bd7145a9ef934fb13d8ba79bfdb","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"class SolidFireReplicationTestCase(test.TestCase):"},{"line_number":1132,"context_line":"    def setUp(self):"},{"line_number":1133,"context_line":"        super(SolidFireReplicationTestCase, self).setUp()"},{"line_number":1134,"context_line":"        self.configuration \u003d mox.MockObject(conf.Configuration)"},{"line_number":1135,"context_line":"        self.configuration.san_ip \u003d \u00271.1.1.1\u0027"},{"line_number":1136,"context_line":"        self.configuration.san_login \u003d \u0027admin\u0027"},{"line_number":1137,"context_line":"        self.configuration.san_password \u003d \u0027admin\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_27b98115","line":1134,"in_reply_to":"da85f559_bda46a08","updated":"2015-11-12 03:50:47.000000000","message":"I think it\u0027s good to change this to use mock to be consistent with the unit test under this TestCase (line 1169).","commit_id":"629ec6f08846984de12fdd0421cf044d225e9bed"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"7f1f9c14c83207c9168e1427b949dabe20ccd33a","unresolved":false,"context_lines":[{"line_number":1266,"context_line":""},{"line_number":1267,"context_line":"class SolidFireReplicationTestCase(test.TestCase):"},{"line_number":1268,"context_line":"    def setUp(self):"},{"line_number":1269,"context_line":"        super(SolidFireReplicationTestCase, self).setUp()"},{"line_number":1270,"context_line":"        self.configuration \u003d mox.MockObject(conf.Configuration)"},{"line_number":1271,"context_line":"        self.configuration.san_ip \u003d \u00271.1.1.1\u0027"},{"line_number":1272,"context_line":"        self.configuration.san_login \u003d \u0027admin\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_6272914b","line":1269,"updated":"2015-11-25 16:45:39.000000000","message":"Should we be using mock instead of Mox here?","commit_id":"e303308fba2c537dbd0ff605c2b0c2b6b3322eef"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"7d76e8885db72f323d6246418adb2f1b15b0fd21","unresolved":false,"context_lines":[{"line_number":1266,"context_line":""},{"line_number":1267,"context_line":"class SolidFireReplicationTestCase(test.TestCase):"},{"line_number":1268,"context_line":"    def setUp(self):"},{"line_number":1269,"context_line":"        super(SolidFireReplicationTestCase, self).setUp()"},{"line_number":1270,"context_line":"        self.configuration \u003d mox.MockObject(conf.Configuration)"},{"line_number":1271,"context_line":"        self.configuration.san_ip \u003d \u00271.1.1.1\u0027"},{"line_number":1272,"context_line":"        self.configuration.san_login \u003d \u0027admin\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_51a9c422","line":1269,"in_reply_to":"9a8ffd7b_6272914b","updated":"2015-12-09 06:40:26.000000000","message":"Done","commit_id":"e303308fba2c537dbd0ff605c2b0c2b6b3322eef"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2134b1b34c439cbb4e94e11d977ab5663ccbddca","unresolved":false,"context_lines":[{"line_number":1266,"context_line":""},{"line_number":1267,"context_line":"class SolidFireReplicationTestCase(test.TestCase):"},{"line_number":1268,"context_line":"    def setUp(self):"},{"line_number":1269,"context_line":"        super(SolidFireReplicationTestCase, self).setUp()"},{"line_number":1270,"context_line":"        self.configuration \u003d mox.MockObject(conf.Configuration)"},{"line_number":1271,"context_line":"        self.configuration.san_ip \u003d \u00271.1.1.1\u0027"},{"line_number":1272,"context_line":"        self.configuration.san_login \u003d \u0027admin\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_f1bc096e","line":1269,"in_reply_to":"9a8ffd7b_6272914b","updated":"2015-11-25 17:42:28.000000000","message":"Probably better to use mock here as the rest of SolidFireReplicationTestCase is already using mock.\n\nself.configuration \u003d mock.Mock(spec\u003dconf.Configuration)","commit_id":"e303308fba2c537dbd0ff605c2b0c2b6b3322eef"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"7f1f9c14c83207c9168e1427b949dabe20ccd33a","unresolved":false,"context_lines":[{"line_number":1293,"context_line":"            \u0027mvip\u0027: \u00271.1.1.1\u0027,"},{"line_number":1294,"context_line":"            \u0027login\u0027: \u0027admin\u0027,"},{"line_number":1295,"context_line":"            \u0027password\u0027: \u0027admin\u0027}]"},{"line_number":1296,"context_line":""},{"line_number":1297,"context_line":"        def _fake_list_cluster_pairs(method, params, version\u003d0):"},{"line_number":1298,"context_line":"            return {"},{"line_number":1299,"context_line":"                \u0027result\u0027: {\u0027clusterPairs\u0027: [{\u0027clusterName\u0027: \u0027test-cluster\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_424aedc6","line":1296,"updated":"2015-11-25 16:45:39.000000000","message":"Probably more readable to move this to @mock.patch, and then set mock_api_request.return_value \u003d {....} since we don\u0027t really need that to be a function","commit_id":"e303308fba2c537dbd0ff605c2b0c2b6b3322eef"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"7d76e8885db72f323d6246418adb2f1b15b0fd21","unresolved":false,"context_lines":[{"line_number":1293,"context_line":"            \u0027mvip\u0027: \u00271.1.1.1\u0027,"},{"line_number":1294,"context_line":"            \u0027login\u0027: \u0027admin\u0027,"},{"line_number":1295,"context_line":"            \u0027password\u0027: \u0027admin\u0027}]"},{"line_number":1296,"context_line":""},{"line_number":1297,"context_line":"        def _fake_list_cluster_pairs(method, params, version\u003d0):"},{"line_number":1298,"context_line":"            return {"},{"line_number":1299,"context_line":"                \u0027result\u0027: {\u0027clusterPairs\u0027: [{\u0027clusterName\u0027: \u0027test-cluster\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_91b3ac97","line":1296,"in_reply_to":"9a8ffd7b_424aedc6","updated":"2015-12-09 06:40:26.000000000","message":"Done","commit_id":"e303308fba2c537dbd0ff605c2b0c2b6b3322eef"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"05d2724805e4b601614141a6a1e40c8e5b4a3a3a","unresolved":false,"context_lines":[{"line_number":1528,"context_line":"            # and features the openstack attribute."},{"line_number":1529,"context_line":"            self.assertEqual(1, rem_vag.call_count)"},{"line_number":1530,"context_line":"            rem_vag.assert_called_with(1)"},{"line_number":1531,"context_line":"                              \u0027_remove_volume_from_vag\u0027) as mock_rem_vol_vag:"},{"line_number":1532,"context_line":"            sfv.terminate_connection(testvol, connector, force\u003dFalse)"},{"line_number":1533,"context_line":"            mock_rem_vol_vag.assert_called_with(vol_id,"},{"line_number":1534,"context_line":"                                                vag[\u0027volumeAccessGroupID\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_9ac64a48","line":1531,"updated":"2015-12-09 15:33:22.000000000","message":"Looks like some sort of rebase error?","commit_id":"3036a890dd055dd4e60d4dd0f72a6bc8a88da85b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"77cc56ca7eb96590423e89e4bc45d4c1228e8c45","unresolved":false,"context_lines":[{"line_number":1539,"context_line":"class SolidFireReplicationTestCase(test.TestCase):"},{"line_number":1540,"context_line":"    def setUp(self):"},{"line_number":1541,"context_line":"        super(SolidFireReplicationTestCase, self).setUp()"},{"line_number":1542,"context_line":"        self.configuration \u003d mox.MockObject(conf.Configuration)"},{"line_number":1543,"context_line":"        self.configuration.san_ip \u003d \u00271.1.1.1\u0027"},{"line_number":1544,"context_line":"        self.configuration.san_login \u003d \u0027admin\u0027"},{"line_number":1545,"context_line":"        self.configuration.san_password \u003d \u0027admin\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_52e19bcf","line":1542,"updated":"2015-12-09 20:09:46.000000000","message":"You replied \"Done\" in patch set 4, but this line isn\u0027t change here to use mock:).  Seems that you lost your changes due to rebase?\n\nself.configuration \u003d mock.Mock(spec\u003dconf.Configuration)","commit_id":"cf420a27086fbbcb91a09d940b4faac96ee64203"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"77cc56ca7eb96590423e89e4bc45d4c1228e8c45","unresolved":false,"context_lines":[{"line_number":1566,"context_line":"            \u0027login\u0027: \u0027admin\u0027,"},{"line_number":1567,"context_line":"            \u0027password\u0027: \u0027admin\u0027}]"},{"line_number":1568,"context_line":""},{"line_number":1569,"context_line":"        def _fake_list_cluster_pairs(method, params, version\u003d0):"},{"line_number":1570,"context_line":"            return {"},{"line_number":1571,"context_line":"                \u0027result\u0027: {\u0027clusterPairs\u0027: [{\u0027clusterName\u0027: \u0027test-cluster\u0027,"},{"line_number":1572,"context_line":"                                             \u0027clusterPairID\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_3203af78","line":1569,"updated":"2015-12-09 20:09:46.000000000","message":"Same here.  I believe Ryan made a comment on this in patch set 4 and you replied \"Done\".  Somehow the change is lost.","commit_id":"cf420a27086fbbcb91a09d940b4faac96ee64203"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8bfacb69e04f72dd0534de7cd58e93bdc812363f","unresolved":false,"context_lines":[{"line_number":1564,"context_line":"            \u0027mvip\u0027: \u00271.1.1.1\u0027,"},{"line_number":1565,"context_line":"            \u0027login\u0027: \u0027admin\u0027,"},{"line_number":1566,"context_line":"            \u0027password\u0027: \u0027admin\u0027}]"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"        def _fake_list_cluster_pairs(method, params, version\u003d0):"},{"line_number":1569,"context_line":"            return {"},{"line_number":1570,"context_line":"                \u0027result\u0027: {\u0027clusterPairs\u0027: [{\u0027clusterName\u0027: \u0027test-cluster\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_ac03bb0c","line":1567,"updated":"2015-12-09 23:36:13.000000000","message":"Instead of defining this function we could do:\n   mock_list_cluster_pairs.return_value \u003d {result: {...}}\n\nsince this is all we\u0027re doing with side_effect","commit_id":"2303d2bb1d3237615b737ef62bef27e90a5ddac3"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8bfacb69e04f72dd0534de7cd58e93bdc812363f","unresolved":false,"context_lines":[{"line_number":1572,"context_line":"                                             \u0027clusterPairUUID\u0027: \u0027fakeuuid\u0027,"},{"line_number":1573,"context_line":"                                             \u0027mvip\u0027: \u00271.1.1.1\u0027,"},{"line_number":1574,"context_line":"                                             \u0027status\u0027: \u0027Connected\u0027}]}}"},{"line_number":1575,"context_line":""},{"line_number":1576,"context_line":"        with mock.patch.object(solidfire.SolidFireDriver,"},{"line_number":1577,"context_line":"                               \u0027_issue_api_request\u0027,"},{"line_number":1578,"context_line":"                               side_effect\u003d_fake_list_cluster_pairs),\\"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_2186f4b9","line":1575,"updated":"2015-12-09 23:36:13.000000000","message":"Would be more readable to have these as decorators instead of context managers (would make it easier to implement comment above as well","commit_id":"2303d2bb1d3237615b737ef62bef27e90a5ddac3"}],"cinder/volume/drivers/solidfire.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"f881ec2333e24ede822921d9a27dc43e4fca1ca7","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"        data[\u0027thin_provision_percent\u0027] \u003d ("},{"line_number":1142,"context_line":"            results[\u0027thinProvisioningPercent\u0027])"},{"line_number":1143,"context_line":"        self.cluster_stats \u003d data"},{"line_number":1144,"context_line":"        data[\u0027replication_enabled\u0027] \u003d self.replication_enabled"},{"line_number":1145,"context_line":""},{"line_number":1146,"context_line":"    def attach_volume(self, context, volume,"},{"line_number":1147,"context_line":"                      instance_uuid, host_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_e106231b","line":1144,"updated":"2015-10-21 21:32:16.000000000","message":"probably want this above `self.cluster_stats \u003d data` so it will be saved?","commit_id":"013c3e57097829cca0ae9e990ce277e93357b902"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"d1d83d4d4c42fada3d7aab0ea8188726e8ebbe1f","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"        data[\u0027thin_provision_percent\u0027] \u003d ("},{"line_number":1142,"context_line":"            results[\u0027thinProvisioningPercent\u0027])"},{"line_number":1143,"context_line":"        self.cluster_stats \u003d data"},{"line_number":1144,"context_line":"        data[\u0027replication_enabled\u0027] \u003d self.replication_enabled"},{"line_number":1145,"context_line":""},{"line_number":1146,"context_line":"    def attach_volume(self, context, volume,"},{"line_number":1147,"context_line":"                      instance_uuid, host_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_c41f7506","line":1144,"in_reply_to":"3a29b11f_e106231b","updated":"2015-10-21 22:05:13.000000000","message":"oops","commit_id":"013c3e57097829cca0ae9e990ce277e93357b902"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"db1d7183c4420db5d3ac650d0479c19067178291","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        self.replication_enabled \u003d False"},{"line_number":180,"context_line":"        self._set_cluster_uuid()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        if self.configuration.safe_get(\u0027replication_device\u0027):"},{"line_number":183,"context_line":"            self._init_cluster_pairs("},{"line_number":184,"context_line":"                self.configuration.safe_get(\u0027replication_device\u0027))"},{"line_number":185,"context_line":"            if len(self.cluster_pairs) \u003e\u003d 1:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_ef8a8563","line":182,"updated":"2015-10-22 05:03:48.000000000","message":"nit, no need to safe_get replication_device more than once. Save it off and use it from there.","commit_id":"629ec6f08846984de12fdd0421cf044d225e9bed"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"84403d2e7460ce0f9a3e04e9219753f33caa0e31","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        self.replication_enabled \u003d False"},{"line_number":180,"context_line":"        self._set_cluster_uuid()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        if self.configuration.safe_get(\u0027replication_device\u0027):"},{"line_number":183,"context_line":"            self._init_cluster_pairs("},{"line_number":184,"context_line":"                self.configuration.safe_get(\u0027replication_device\u0027))"},{"line_number":185,"context_line":"            if len(self.cluster_pairs) \u003e\u003d 1:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_9280c28c","line":182,"in_reply_to":"3a29b11f_ef8a8563","updated":"2015-10-22 13:56:49.000000000","message":"Sure, this actually gets updated in a follow on patch :)","commit_id":"629ec6f08846984de12fdd0421cf044d225e9bed"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"db1d7183c4420db5d3ac650d0479c19067178291","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            remote \u003d next("},{"line_number":207,"context_line":"                (item for item in existing_pairs if"},{"line_number":208,"context_line":"                 item[\u0027clusterName\u0027] \u003d\u003d device[\u0027device_target_id\u0027]), None)"},{"line_number":209,"context_line":"            remote_cluster \u003d {"},{"line_number":210,"context_line":"                \u0027host\u0027: device.get(\u0027managed_backend_name\u0027, None),"},{"line_number":211,"context_line":"                \u0027mvip\u0027: device.get(\u0027mvip\u0027, None),"},{"line_number":212,"context_line":"                \u0027login\u0027: device.get(\u0027login\u0027, None),"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_efb84513","line":209,"updated":"2015-10-22 05:03:48.000000000","message":"I see that if any value is None, _build_endpoint_info will grab the self.configuration.* value. Maybe you want to validate the admin puts in info for the replication arrays?","commit_id":"629ec6f08846984de12fdd0421cf044d225e9bed"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"84403d2e7460ce0f9a3e04e9219753f33caa0e31","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            remote \u003d next("},{"line_number":207,"context_line":"                (item for item in existing_pairs if"},{"line_number":208,"context_line":"                 item[\u0027clusterName\u0027] \u003d\u003d device[\u0027device_target_id\u0027]), None)"},{"line_number":209,"context_line":"            remote_cluster \u003d {"},{"line_number":210,"context_line":"                \u0027host\u0027: device.get(\u0027managed_backend_name\u0027, None),"},{"line_number":211,"context_line":"                \u0027mvip\u0027: device.get(\u0027mvip\u0027, None),"},{"line_number":212,"context_line":"                \u0027login\u0027: device.get(\u0027login\u0027, None),"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_0d57b7ca","line":209,"in_reply_to":"3a29b11f_efb84513","updated":"2015-10-22 13:56:49.000000000","message":"It\u0027s a safety (in the build_endpoint), just to make sure I don\u0027t blow up in the case of a missing key.  The code here is actually setting a valid key, but it\u0027s setting the value to None if something is missing.\n\nThis way if we go past here and call build_endpoint that method may not build a valid endpoint, but it won\u0027t blow up either.  The self.configuration values won\u0027t be used in this case because there\u0027s a valid key that is set to None, so that\u0027s what will actually be used.","commit_id":"629ec6f08846984de12fdd0421cf044d225e9bed"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d93b0804331eb857ef9c8d804dd14b67fdc76085","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                (item for item in existing_pairs if"},{"line_number":208,"context_line":"                 item[\u0027clusterName\u0027] \u003d\u003d device[\u0027device_target_id\u0027]), None)"},{"line_number":209,"context_line":"            remote_cluster \u003d {"},{"line_number":210,"context_line":"                \u0027host\u0027: device.get(\u0027managed_backend_name\u0027, None),"},{"line_number":211,"context_line":"                \u0027mvip\u0027: device.get(\u0027mvip\u0027, None),"},{"line_number":212,"context_line":"                \u0027login\u0027: device.get(\u0027login\u0027, None),"},{"line_number":213,"context_line":"                \u0027passwd\u0027: device.get(\u0027password\u0027, None),"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_759fad03","line":210,"updated":"2015-10-28 20:31:31.000000000","message":"device.get(\u0027key\u0027) is equivalent to device.get(\u0027key\u0027, None), so you could optionally just remove the None from all these.","commit_id":"629ec6f08846984de12fdd0421cf044d225e9bed"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"d576e45c41c2e1efb426f8959674e3736e39d38d","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                (item for item in existing_pairs if"},{"line_number":208,"context_line":"                 item[\u0027clusterName\u0027] \u003d\u003d device[\u0027device_target_id\u0027]), None)"},{"line_number":209,"context_line":"            remote_cluster \u003d {"},{"line_number":210,"context_line":"                \u0027host\u0027: device.get(\u0027managed_backend_name\u0027, None),"},{"line_number":211,"context_line":"                \u0027mvip\u0027: device.get(\u0027mvip\u0027, None),"},{"line_number":212,"context_line":"                \u0027login\u0027: device.get(\u0027login\u0027, None),"},{"line_number":213,"context_line":"                \u0027passwd\u0027: device.get(\u0027password\u0027, None),"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_4e5ec4ea","line":210,"in_reply_to":"1a26ad4f_759fad03","updated":"2015-11-04 06:10:03.000000000","message":"Sure, but is there anything wrong with being explicit here?","commit_id":"629ec6f08846984de12fdd0421cf044d225e9bed"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"ce45813d4099decfe3054a80686682e6be442f7a","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                (item for item in existing_pairs if"},{"line_number":208,"context_line":"                 item[\u0027clusterName\u0027] \u003d\u003d device[\u0027device_target_id\u0027]), None)"},{"line_number":209,"context_line":"            remote_cluster \u003d {"},{"line_number":210,"context_line":"                \u0027host\u0027: device.get(\u0027managed_backend_name\u0027, None),"},{"line_number":211,"context_line":"                \u0027mvip\u0027: device.get(\u0027mvip\u0027, None),"},{"line_number":212,"context_line":"                \u0027login\u0027: device.get(\u0027login\u0027, None),"},{"line_number":213,"context_line":"                \u0027passwd\u0027: device.get(\u0027password\u0027, None),"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_b7e215d4","line":210,"in_reply_to":"fa80f949_4e5ec4ea","updated":"2015-11-04 14:36:58.000000000","message":"Nope you\u0027re fine - I\u0027ll stop bringing this one up ;)","commit_id":"629ec6f08846984de12fdd0421cf044d225e9bed"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d93b0804331eb857ef9c8d804dd14b67fdc76085","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                self.cluster_pairs.append(remote_cluster)"},{"line_number":223,"context_line":"            except exception.SolidFireAPIException as ex:"},{"line_number":224,"context_line":"                    LOG.error(_LE(\u0027Cluster pairing setup failed: %s\u0027) %"},{"line_number":225,"context_line":"                              ex.msg)"},{"line_number":226,"context_line":"                    pass"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _create_cluster_pairing(self, remote_endpoint):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_b531c50d","line":225,"updated":"2015-10-28 20:31:31.000000000","message":"Do we actually need this \"pass\" here?","commit_id":"629ec6f08846984de12fdd0421cf044d225e9bed"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"d576e45c41c2e1efb426f8959674e3736e39d38d","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                self.cluster_pairs.append(remote_cluster)"},{"line_number":223,"context_line":"            except exception.SolidFireAPIException as ex:"},{"line_number":224,"context_line":"                    LOG.error(_LE(\u0027Cluster pairing setup failed: %s\u0027) %"},{"line_number":225,"context_line":"                              ex.msg)"},{"line_number":226,"context_line":"                    pass"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _create_cluster_pairing(self, remote_endpoint):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_4ed32439","line":225,"in_reply_to":"1a26ad4f_b531c50d","updated":"2015-11-04 06:10:03.000000000","message":"Nope, certainly not.  Another case of being overly explicit.  If folks would prefer I am happy to remove it.  It\u0027s sort of a habit for me to be honest.","commit_id":"629ec6f08846984de12fdd0421cf044d225e9bed"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d93b0804331eb857ef9c8d804dd14b67fdc76085","unresolved":false,"context_lines":[{"line_number":235,"context_line":"                version\u003d\u00278.0\u0027,"},{"line_number":236,"context_line":"                endpoint\u003dremote_endpoint)[\u0027result\u0027][\u0027clusterPairID\u0027]"},{"line_number":237,"context_line":"        except exception.SolidFireAPIException as ex:"},{"line_number":238,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":239,"context_line":"                LOG.error(_LE(\u0027Cluster pairing failed: %s\u0027) % ex.msg)"},{"line_number":240,"context_line":"        return pair_id"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_157f59ab","line":238,"updated":"2015-10-28 20:31:31.000000000","message":"Won\u0027t we be logging the error twice for this if we do it here and on line 224?","commit_id":"629ec6f08846984de12fdd0421cf044d225e9bed"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"d576e45c41c2e1efb426f8959674e3736e39d38d","unresolved":false,"context_lines":[{"line_number":235,"context_line":"                version\u003d\u00278.0\u0027,"},{"line_number":236,"context_line":"                endpoint\u003dremote_endpoint)[\u0027result\u0027][\u0027clusterPairID\u0027]"},{"line_number":237,"context_line":"        except exception.SolidFireAPIException as ex:"},{"line_number":238,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":239,"context_line":"                LOG.error(_LE(\u0027Cluster pairing failed: %s\u0027) % ex.msg)"},{"line_number":240,"context_line":"        return pair_id"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_cece3483","line":238,"in_reply_to":"1a26ad4f_157f59ab","updated":"2015-11-04 06:10:03.000000000","message":"Possibly, unless the _build_endpoint is what fails.  Probably something I can certainly remove though, thanks!","commit_id":"629ec6f08846984de12fdd0421cf044d225e9bed"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8bfacb69e04f72dd0534de7cd58e93bdc812363f","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                        self._create_cluster_pairing("},{"line_number":228,"context_line":"                            remote_cluster[\u0027endpoint\u0027]))"},{"line_number":229,"context_line":"                self.cluster_pairs.append(remote_cluster)"},{"line_number":230,"context_line":"            except exception.SolidFireAPIException as ex:"},{"line_number":231,"context_line":"                    LOG.error(_LE(\u0027Cluster pairing setup failed: %s\u0027) %"},{"line_number":232,"context_line":"                              ex.msg)"},{"line_number":233,"context_line":"                    pass"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_cc02c7b4","line":230,"updated":"2015-12-09 23:36:13.000000000","message":"We already log the error in _create_cluster_pairing, and _build_endpoint_info doesn\u0027t have anything that could throw a exception.SolidFireAPIException, so don\u0027t think we need to be logging message here.\n\nAlso seems like in that case it may make sense to just to only log and not raise the exception in _create_cluster_pair and then remove the try/except block above.","commit_id":"2303d2bb1d3237615b737ef62bef27e90a5ddac3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7423eb088696e8c32872db33a9ea018c22e257cc","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                            remote_cluster[\u0027endpoint\u0027]))"},{"line_number":229,"context_line":"                self.cluster_pairs.append(remote_cluster)"},{"line_number":230,"context_line":"            except exception.SolidFireAPIException as ex:"},{"line_number":231,"context_line":"                    LOG.error(_LE(\u0027Cluster pairing setup failed: %s\u0027) %"},{"line_number":232,"context_line":"                              ex.msg)"},{"line_number":233,"context_line":"                    pass"},{"line_number":234,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_72aa651b","line":231,"updated":"2015-12-10 15:04:27.000000000","message":"Change % to , especially since passing in ex.msg. The logger will take care of six.text_type conversion if needed for anything in the exception message.","commit_id":"2303d2bb1d3237615b737ef62bef27e90a5ddac3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7423eb088696e8c32872db33a9ea018c22e257cc","unresolved":false,"context_lines":[{"line_number":230,"context_line":"            except exception.SolidFireAPIException as ex:"},{"line_number":231,"context_line":"                    LOG.error(_LE(\u0027Cluster pairing setup failed: %s\u0027) %"},{"line_number":232,"context_line":"                              ex.msg)"},{"line_number":233,"context_line":"                    pass"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def _create_cluster_pairing(self, remote_endpoint):"},{"line_number":236,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_f26c150a","line":233,"updated":"2015-12-10 15:04:27.000000000","message":"pass not needed here.","commit_id":"2303d2bb1d3237615b737ef62bef27e90a5ddac3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7423eb088696e8c32872db33a9ea018c22e257cc","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                endpoint\u003dremote_endpoint)[\u0027result\u0027][\u0027clusterPairID\u0027]"},{"line_number":244,"context_line":"        except exception.SolidFireAPIException as ex:"},{"line_number":245,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":246,"context_line":"                LOG.error(_LE(\u0027Cluster pairing failed: %s\u0027) % ex.msg)"},{"line_number":247,"context_line":"        return pair_id"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def _set_cluster_uuid(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_7281058f","line":246,"updated":"2015-12-10 15:04:27.000000000","message":"Same: , \u003e %","commit_id":"2303d2bb1d3237615b737ef62bef27e90a5ddac3"}]}
