)]}'
{"cinder/tests/unit/volume/drivers/test_kaminario.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dde17c075cc76b570510fd4929d53edcb2c81840","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        backend_ip, res_volumes \u003d self.driver.failover_host(None, volumes)"},{"line_number":354,"context_line":"        self.assertEqual(\u002710.0.0.1\u0027, backend_ip)"},{"line_number":355,"context_line":"        status \u003d res_volumes[0][\u0027updates\u0027][\u0027replication_status\u0027]"},{"line_number":356,"context_line":"        self.assertEqual(\u0027failed-over\u0027, status)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    def test_delete_volume_replica(self):"},{"line_number":359,"context_line":"        \"\"\"Test _delete_volume_replica.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_44c7f463","line":356,"updated":"2016-07-30 02:25:42.000000000","message":"Use fields.ReplicationStatus.","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"4b62ac55876acf68c13d6a6feea1cd36b8c28b95","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        backend_ip, res_volumes \u003d self.driver.failover_host(None, volumes)"},{"line_number":354,"context_line":"        self.assertEqual(\u002710.0.0.1\u0027, backend_ip)"},{"line_number":355,"context_line":"        status \u003d res_volumes[0][\u0027updates\u0027][\u0027replication_status\u0027]"},{"line_number":356,"context_line":"        self.assertEqual(\u0027failed-over\u0027, status)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    def test_delete_volume_replica(self):"},{"line_number":359,"context_line":"        \"\"\"Test _delete_volume_replica.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_69976148","line":356,"in_reply_to":"bacf61ea_44c7f463","updated":"2016-07-31 16:09:06.000000000","message":"Done","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"053f558bab2ec8ac4bc5f0134df560134ab1b599","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        rep \u003d Replication()"},{"line_number":323,"context_line":"        self.driver.replica \u003d rep"},{"line_number":324,"context_line":"        result \u003d self.driver._create_volume_replica(self.vol, vg, vg, rep.rpo)"},{"line_number":325,"context_line":"        self.assertIsNone(result)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def test_create_volume_replica_exp(self):"},{"line_number":328,"context_line":"        \"\"\"Test _create_volume_replica_exp.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_f71311b6","line":325,"updated":"2016-08-01 10:29:34.000000000","message":"This only tests that _create_volume_replica ran without any exceptions and it is not sufficient. We should assert for the relevant operations/calls within _create_volume_replica.","commit_id":"ea1dd0ecb94afa9f051023d7323d8d3194719d20"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"f3ac6dc3e55b555f9c219cc5b089bef3a71b251d","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        rep \u003d Replication()"},{"line_number":323,"context_line":"        self.driver.replica \u003d rep"},{"line_number":324,"context_line":"        result \u003d self.driver._create_volume_replica(self.vol, vg, vg, rep.rpo)"},{"line_number":325,"context_line":"        self.assertIsNone(result)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def test_create_volume_replica_exp(self):"},{"line_number":328,"context_line":"        \"\"\"Test _create_volume_replica_exp.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_fd000836","line":325,"in_reply_to":"bacf61ea_f71311b6","updated":"2016-08-01 14:02:59.000000000","message":"Done","commit_id":"ea1dd0ecb94afa9f051023d7323d8d3194719d20"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"053f558bab2ec8ac4bc5f0134df560134ab1b599","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        vg \u003d FakeSaveObject()"},{"line_number":330,"context_line":"        rep \u003d Replication()"},{"line_number":331,"context_line":"        self.driver.replica \u003d rep"},{"line_number":332,"context_line":"        self.driver.client \u003d FakeKrestException()"},{"line_number":333,"context_line":"        self.assertRaises(exception.KaminarioCinderDriverException,"},{"line_number":334,"context_line":"                          self.driver._create_volume_replica, self.vol,"},{"line_number":335,"context_line":"                          vg, vg, rep.rpo)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_b74cf9c8","line":332,"range":{"start_line":332,"start_character":8,"end_line":332,"end_character":26},"updated":"2016-08-01 10:29:34.000000000","message":"You meant to set the side_effect attribute?","commit_id":"ea1dd0ecb94afa9f051023d7323d8d3194719d20"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"f3ac6dc3e55b555f9c219cc5b089bef3a71b251d","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        vg \u003d FakeSaveObject()"},{"line_number":330,"context_line":"        rep \u003d Replication()"},{"line_number":331,"context_line":"        self.driver.replica \u003d rep"},{"line_number":332,"context_line":"        self.driver.client \u003d FakeKrestException()"},{"line_number":333,"context_line":"        self.assertRaises(exception.KaminarioCinderDriverException,"},{"line_number":334,"context_line":"                          self.driver._create_volume_replica, self.vol,"},{"line_number":335,"context_line":"                          vg, vg, rep.rpo)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_3df7405a","line":332,"range":{"start_line":332,"start_character":8,"end_line":332,"end_character":26},"in_reply_to":"bacf61ea_b74cf9c8","updated":"2016-08-01 14:02:59.000000000","message":"Done","commit_id":"ea1dd0ecb94afa9f051023d7323d8d3194719d20"}],"cinder/volume/drivers/kaminario/kaminario_common.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dde17c075cc76b570510fd4929d53edcb2c81840","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    return func_wrapper"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"class Replication:"},{"line_number":68,"context_line":"    def __init__(self, config, *args, **kwargs):"},{"line_number":69,"context_line":"        self.backend_id \u003d config.get(\u0027backend_id\u0027)"},{"line_number":70,"context_line":"        self.login \u003d config.get(\u0027login\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_c43f6485","line":67,"updated":"2016-07-30 02:25:42.000000000","message":"This should inherit from object.","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"4b62ac55876acf68c13d6a6feea1cd36b8c28b95","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    return func_wrapper"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"class Replication:"},{"line_number":68,"context_line":"    def __init__(self, config, *args, **kwargs):"},{"line_number":69,"context_line":"        self.backend_id \u003d config.get(\u0027backend_id\u0027)"},{"line_number":70,"context_line":"        self.login \u003d config.get(\u0027login\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_4eaf032a","line":67,"in_reply_to":"bacf61ea_c43f6485","updated":"2016-07-31 16:09:06.000000000","message":"Done","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dde17c075cc76b570510fd4929d53edcb2c81840","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):"},{"line_number":76,"context_line":"    VENDOR \u003d \"Kaminario\""},{"line_number":77,"context_line":"    VERSION \u003d \"1.0\""},{"line_number":78,"context_line":"    stats \u003d {}"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_445414c9","line":77,"updated":"2016-07-30 02:25:42.000000000","message":"Are you not incrementing the version after implementing the replication feature?","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"4b62ac55876acf68c13d6a6feea1cd36b8c28b95","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):"},{"line_number":76,"context_line":"    VENDOR \u003d \"Kaminario\""},{"line_number":77,"context_line":"    VERSION \u003d \"1.0\""},{"line_number":78,"context_line":"    stats \u003d {}"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_aea83f21","line":77,"in_reply_to":"bacf61ea_445414c9","updated":"2016-07-31 16:09:06.000000000","message":"Done","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dde17c075cc76b570510fd4929d53edcb2c81840","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    @kaminario_logger"},{"line_number":178,"context_line":"    def _create_volume_replica(self, volume, vg, vol, rpo):"},{"line_number":179,"context_line":"        \"\"\"Volume replica creation in K2 needs session  and remote volume."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        - create a session"},{"line_number":182,"context_line":"        - create a volume in the volume group"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_a45b50f5","line":179,"updated":"2016-07-30 02:25:42.000000000","message":"Extra space between \"session\" and \"and\".","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"4b62ac55876acf68c13d6a6feea1cd36b8c28b95","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    @kaminario_logger"},{"line_number":178,"context_line":"    def _create_volume_replica(self, volume, vg, vol, rpo):"},{"line_number":179,"context_line":"        \"\"\"Volume replica creation in K2 needs session  and remote volume."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        - create a session"},{"line_number":182,"context_line":"        - create a volume in the volume group"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_8ea57b48","line":179,"in_reply_to":"bacf61ea_a45b50f5","updated":"2016-07-31 16:09:06.000000000","message":"Done","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dde17c075cc76b570510fd4929d53edcb2c81840","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            k2peer \u003d k2peer_rs.hits[0]"},{"line_number":195,"context_line":"        else:"},{"line_number":196,"context_line":"            LOG.exception(_LE(\"Unable to find K2peer in source K2:\"))"},{"line_number":197,"context_line":"            raise"},{"line_number":198,"context_line":"        try:"},{"line_number":199,"context_line":"            LOG.debug(\"Creating source session with name: %(sname)s and \""},{"line_number":200,"context_line":"                      \" target session name: %(tname)s\","}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_0475fc62","line":197,"updated":"2016-07-30 02:25:42.000000000","message":"There\u0027s no exception caught here.  You need to construct an exception and raise it.","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"4b62ac55876acf68c13d6a6feea1cd36b8c28b95","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            k2peer \u003d k2peer_rs.hits[0]"},{"line_number":195,"context_line":"        else:"},{"line_number":196,"context_line":"            LOG.exception(_LE(\"Unable to find K2peer in source K2:\"))"},{"line_number":197,"context_line":"            raise"},{"line_number":198,"context_line":"        try:"},{"line_number":199,"context_line":"            LOG.debug(\"Creating source session with name: %(sname)s and \""},{"line_number":200,"context_line":"                      \" target session name: %(tname)s\","}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_ee64f722","line":197,"in_reply_to":"bacf61ea_0475fc62","updated":"2016-07-31 16:09:06.000000000","message":"Done","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dde17c075cc76b570510fd4929d53edcb2c81840","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            self._delete_by_ref(self.target, \"volume_groups\","},{"line_number":228,"context_line":"                                rvg_name, \"remote vg\")"},{"line_number":229,"context_line":"            self._delete_by_ref(self.client, \"volume_groups\", vg.name, \"vg\")"},{"line_number":230,"context_line":"            LOG.exception(_LE(\"Replication for the volume %s is \""},{"line_number":231,"context_line":"                              \"failed.\"), vol.name)"},{"line_number":232,"context_line":"            raise exception.KaminarioCinderDriverException("},{"line_number":233,"context_line":"                reason\u003dsix.text_type(ex.message))"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_24680087","line":230,"updated":"2016-07-30 02:25:42.000000000","message":"s/is/has","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"4b62ac55876acf68c13d6a6feea1cd36b8c28b95","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            self._delete_by_ref(self.target, \"volume_groups\","},{"line_number":228,"context_line":"                                rvg_name, \"remote vg\")"},{"line_number":229,"context_line":"            self._delete_by_ref(self.client, \"volume_groups\", vg.name, \"vg\")"},{"line_number":230,"context_line":"            LOG.exception(_LE(\"Replication for the volume %s is \""},{"line_number":231,"context_line":"                              \"failed.\"), vol.name)"},{"line_number":232,"context_line":"            raise exception.KaminarioCinderDriverException("},{"line_number":233,"context_line":"                reason\u003dsix.text_type(ex.message))"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_8e2a9b8e","line":230,"in_reply_to":"bacf61ea_24680087","updated":"2016-07-31 16:09:06.000000000","message":"Done","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dde17c075cc76b570510fd4929d53edcb2c81840","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        rs \u003d device.search(url, name\u003dname)"},{"line_number":237,"context_line":"        for result in rs.hits:"},{"line_number":238,"context_line":"            result.delete()"},{"line_number":239,"context_line":"            LOG.debug(\"Deleting %s: %s\" % (msg, name))"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    @kaminario_logger"},{"line_number":242,"context_line":"    def _failover_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_c40da4e9","line":239,"updated":"2016-07-30 02:25:42.000000000","message":"Use keyword parameters.","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"4b62ac55876acf68c13d6a6feea1cd36b8c28b95","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        rs \u003d device.search(url, name\u003dname)"},{"line_number":237,"context_line":"        for result in rs.hits:"},{"line_number":238,"context_line":"            result.delete()"},{"line_number":239,"context_line":"            LOG.debug(\"Deleting %s: %s\" % (msg, name))"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    @kaminario_logger"},{"line_number":242,"context_line":"    def _failover_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_ae2ddfa9","line":239,"in_reply_to":"bacf61ea_c40da4e9","updated":"2016-07-31 16:09:06.000000000","message":"Done","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dde17c075cc76b570510fd4929d53edcb2c81840","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                volume_updates.append("},{"line_number":270,"context_line":"                    {\u0027volume_id\u0027: v[\u0027id\u0027],"},{"line_number":271,"context_line":"                     \u0027updates\u0027: {"},{"line_number":272,"context_line":"                     \u0027replication_status\u0027: \u0027failed-over\u0027}})"},{"line_number":273,"context_line":"            else:"},{"line_number":274,"context_line":"                volume_updates.append({\u0027volume_id\u0027: v[\u0027id\u0027],"},{"line_number":275,"context_line":"                                       \u0027updates\u0027: {\u0027status\u0027: \u0027error\u0027, }})"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_64daf84d","line":272,"updated":"2016-07-30 02:25:42.000000000","message":"Use fields.ReplicationStatus for replication statuses.\n\nhttps://github.com/openstack/cinder/blob/master/cinder/objects/fields.py#L74","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"4b62ac55876acf68c13d6a6feea1cd36b8c28b95","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                volume_updates.append("},{"line_number":270,"context_line":"                    {\u0027volume_id\u0027: v[\u0027id\u0027],"},{"line_number":271,"context_line":"                     \u0027updates\u0027: {"},{"line_number":272,"context_line":"                     \u0027replication_status\u0027: \u0027failed-over\u0027}})"},{"line_number":273,"context_line":"            else:"},{"line_number":274,"context_line":"                volume_updates.append({\u0027volume_id\u0027: v[\u0027id\u0027],"},{"line_number":275,"context_line":"                                       \u0027updates\u0027: {\u0027status\u0027: \u0027error\u0027, }})"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_c9648dba","line":272,"in_reply_to":"bacf61ea_64daf84d","updated":"2016-07-31 16:09:06.000000000","message":"Done","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dde17c075cc76b570510fd4929d53edcb2c81840","unresolved":false,"context_lines":[{"line_number":444,"context_line":"    def _check_for_status(self, obj, status):"},{"line_number":445,"context_line":"        while obj.state !\u003d status:"},{"line_number":446,"context_line":"            obj.refresh()"},{"line_number":447,"context_line":"            time.sleep(1)"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    @kaminario_logger"},{"line_number":450,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_84bc4cdd","line":447,"updated":"2016-07-30 02:25:42.000000000","message":"Use eventlet.sleep()","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"4b62ac55876acf68c13d6a6feea1cd36b8c28b95","unresolved":false,"context_lines":[{"line_number":444,"context_line":"    def _check_for_status(self, obj, status):"},{"line_number":445,"context_line":"        while obj.state !\u003d status:"},{"line_number":446,"context_line":"            obj.refresh()"},{"line_number":447,"context_line":"            time.sleep(1)"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    @kaminario_logger"},{"line_number":450,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_2924495e","line":447,"in_reply_to":"bacf61ea_84bc4cdd","updated":"2016-07-31 16:09:06.000000000","message":"Done","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"053f558bab2ec8ac4bc5f0134df560134ab1b599","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                raise exception.InvalidInput(reason\u003d_(\u0027%s is not set.\u0027) % attr)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        replica \u003d self.configuration.safe_get(\u0027replication_device\u0027)"},{"line_number":128,"context_line":"        if replica and type(replica) is list:"},{"line_number":129,"context_line":"            replica_ops \u003d [\u0027backend_id\u0027, \u0027login\u0027, \u0027password\u0027, \u0027rpo\u0027]"},{"line_number":130,"context_line":"            for attr in replica_ops:"},{"line_number":131,"context_line":"                if attr not in replica[0]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_17a865da","line":128,"range":{"start_line":128,"start_character":11,"end_line":128,"end_character":44},"updated":"2016-08-01 10:29:34.000000000","message":"nit: isinstance(replica, list)","commit_id":"ea1dd0ecb94afa9f051023d7323d8d3194719d20"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"f3ac6dc3e55b555f9c219cc5b089bef3a71b251d","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                raise exception.InvalidInput(reason\u003d_(\u0027%s is not set.\u0027) % attr)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        replica \u003d self.configuration.safe_get(\u0027replication_device\u0027)"},{"line_number":128,"context_line":"        if replica and type(replica) is list:"},{"line_number":129,"context_line":"            replica_ops \u003d [\u0027backend_id\u0027, \u0027login\u0027, \u0027password\u0027, \u0027rpo\u0027]"},{"line_number":130,"context_line":"            for attr in replica_ops:"},{"line_number":131,"context_line":"                if attr not in replica[0]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_dd9ee405","line":128,"range":{"start_line":128,"start_character":11,"end_line":128,"end_character":44},"in_reply_to":"bacf61ea_17a865da","updated":"2016-08-01 14:02:59.000000000","message":"Done","commit_id":"ea1dd0ecb94afa9f051023d7323d8d3194719d20"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"053f558bab2ec8ac4bc5f0134df560134ab1b599","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            self._delete_by_ref(self.target, \"volume_groups\","},{"line_number":229,"context_line":"                                rvg_name, \"remote vg\")"},{"line_number":230,"context_line":"            self._delete_by_ref(self.client, \"volume_groups\", vg.name, \"vg\")"},{"line_number":231,"context_line":"            LOG.exception(_LE(\"Replication for the volume %s has \""},{"line_number":232,"context_line":"                              \"failed.\"), vol.name)"},{"line_number":233,"context_line":"            raise exception.KaminarioCinderDriverException("},{"line_number":234,"context_line":"                reason\u003dsix.text_type(ex.message))"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_77e9e1e5","line":231,"updated":"2016-08-01 10:29:34.000000000","message":"Move this to line 221. If one of the _delete_by_ref fails, this will not be logged.","commit_id":"ea1dd0ecb94afa9f051023d7323d8d3194719d20"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"f3ac6dc3e55b555f9c219cc5b089bef3a71b251d","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            self._delete_by_ref(self.target, \"volume_groups\","},{"line_number":229,"context_line":"                                rvg_name, \"remote vg\")"},{"line_number":230,"context_line":"            self._delete_by_ref(self.client, \"volume_groups\", vg.name, \"vg\")"},{"line_number":231,"context_line":"            LOG.exception(_LE(\"Replication for the volume %s has \""},{"line_number":232,"context_line":"                              \"failed.\"), vol.name)"},{"line_number":233,"context_line":"            raise exception.KaminarioCinderDriverException("},{"line_number":234,"context_line":"                reason\u003dsix.text_type(ex.message))"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_7dc258ea","line":231,"in_reply_to":"bacf61ea_77e9e1e5","updated":"2016-08-01 14:02:59.000000000","message":"Done","commit_id":"ea1dd0ecb94afa9f051023d7323d8d3194719d20"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"053f558bab2ec8ac4bc5f0134df560134ab1b599","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        rsession_name \u003d self.get_rep_name(session_name)"},{"line_number":247,"context_line":"        tgt_ssn \u003d self.target.search(\"replication/sessions\","},{"line_number":248,"context_line":"                                     name\u003drsession_name).hits[0]"},{"line_number":249,"context_line":"        LOG.debug(\"The target session: %s state is changed to failed_over \","},{"line_number":250,"context_line":"                  rsession_name)"},{"line_number":251,"context_line":"        if tgt_ssn.state \u003d\u003d \u0027in_sync\u0027:"},{"line_number":252,"context_line":"            tgt_ssn.state \u003d \u0027failed_over\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_57949d41","line":249,"updated":"2016-08-01 10:29:34.000000000","message":"I think this should be moved inside the if.","commit_id":"ea1dd0ecb94afa9f051023d7323d8d3194719d20"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"f3ac6dc3e55b555f9c219cc5b089bef3a71b251d","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        rsession_name \u003d self.get_rep_name(session_name)"},{"line_number":247,"context_line":"        tgt_ssn \u003d self.target.search(\"replication/sessions\","},{"line_number":248,"context_line":"                                     name\u003drsession_name).hits[0]"},{"line_number":249,"context_line":"        LOG.debug(\"The target session: %s state is changed to failed_over \","},{"line_number":250,"context_line":"                  rsession_name)"},{"line_number":251,"context_line":"        if tgt_ssn.state \u003d\u003d \u0027in_sync\u0027:"},{"line_number":252,"context_line":"            tgt_ssn.state \u003d \u0027failed_over\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_ddb5447e","line":249,"in_reply_to":"bacf61ea_57949d41","updated":"2016-08-01 14:02:59.000000000","message":"Done","commit_id":"ea1dd0ecb94afa9f051023d7323d8d3194719d20"}],"cinder/volume/drivers/kaminario/kaminario_iscsi.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dde17c075cc76b570510fd4929d53edcb2c81840","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @kaminario_logger"},{"line_number":54,"context_line":"    def get_target_info(self, volume):"},{"line_number":55,"context_line":"        if volume.replication_status \u003d\u003d \"failed-over\":"},{"line_number":56,"context_line":"            self.client \u003d self.target"},{"line_number":57,"context_line":"        LOG.debug(\"Searching first iscsi port ip without wan in K2.\")"},{"line_number":58,"context_line":"        iscsi_ip_rs \u003d self.client.search(\"system/net_ips\", wan_port\u003d\"\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_24c4805d","line":55,"updated":"2016-07-30 02:25:42.000000000","message":"Use fields.ReplicationStatus.","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"4b62ac55876acf68c13d6a6feea1cd36b8c28b95","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @kaminario_logger"},{"line_number":54,"context_line":"    def get_target_info(self, volume):"},{"line_number":55,"context_line":"        if volume.replication_status \u003d\u003d \"failed-over\":"},{"line_number":56,"context_line":"            self.client \u003d self.target"},{"line_number":57,"context_line":"        LOG.debug(\"Searching first iscsi port ip without wan in K2.\")"},{"line_number":58,"context_line":"        iscsi_ip_rs \u003d self.client.search(\"system/net_ips\", wan_port\u003d\"\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_09e065f9","line":55,"in_reply_to":"bacf61ea_24c4805d","updated":"2016-07-31 16:09:06.000000000","message":"Done","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"}],"releasenotes/notes/kaminario-cinder-driver-435faa025b2f6df4.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dde17c075cc76b570510fd4929d53edcb2c81840","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add replication feature in Kaminario cinder driver"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"bacf61ea_64a8388e","line":3,"updated":"2016-07-30 02:25:42.000000000","message":"Add period at the end.","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"4b62ac55876acf68c13d6a6feea1cd36b8c28b95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add replication feature in Kaminario cinder driver"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"bacf61ea_69e921e6","line":3,"in_reply_to":"bacf61ea_64a8388e","updated":"2016-07-31 16:09:06.000000000","message":"Done","commit_id":"acfbb4cf236f5ffbfb652245a403098b982782ff"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"053f558bab2ec8ac4bc5f0134df560134ab1b599","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add replication feature in Kaminario cinder driver."},{"line_number":4,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":6,"id":"bacf61ea_fc193889","line":3,"range":{"start_line":3,"start_character":41,"end_line":3,"end_character":54},"updated":"2016-08-01 10:29:34.000000000","message":"nit: iSCSI and FC Cinder drivers","commit_id":"ea1dd0ecb94afa9f051023d7323d8d3194719d20"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"f3ac6dc3e55b555f9c219cc5b089bef3a71b251d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add replication feature in Kaminario cinder driver."},{"line_number":4,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":6,"id":"bacf61ea_dd3a64e6","line":3,"range":{"start_line":3,"start_character":41,"end_line":3,"end_character":54},"in_reply_to":"bacf61ea_fc193889","updated":"2016-08-01 14:02:59.000000000","message":"Done","commit_id":"ea1dd0ecb94afa9f051023d7323d8d3194719d20"}]}
