)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"151feaeb63a408581fe2666ea41fcd845cec8986","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding SPDK NVMe-oF target driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding Storage Performance Development Kit targetr"},{"line_number":10,"context_line":"driver. This driver uses SPDK NVMe-oF target and"},{"line_number":11,"context_line":"provides new type of target driver."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"3f79a3b5_474a235a","line":9,"range":{"start_line":9,"start_character":43,"end_line":9,"end_character":50},"updated":"2018-12-19 15:21:20.000000000","message":"target","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"38c3fd231fc5d737383e718970377f8720f8a7c8","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding SPDK NVMe-oF target driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding Storage Performance Development Kit targetr"},{"line_number":10,"context_line":"driver. This driver uses SPDK NVMe-oF target and"},{"line_number":11,"context_line":"provides new type of target driver."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"3f79a3b5_bd59b590","line":9,"range":{"start_line":9,"start_character":43,"end_line":9,"end_character":50},"in_reply_to":"3f79a3b5_474a235a","updated":"2018-12-20 10:39:24.000000000","message":"Done","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"}],"cinder/tests/unit/targets/test_spdknvmf.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e4009db2a82e069fee68026e6c106620b84b193f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"import mock"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from cinder import test"},{"line_number":16,"context_line":"from cinder.tests.unit.volume.drivers import test_spdk"},{"line_number":17,"context_line":"from cinder.volume import configuration as conf"},{"line_number":18,"context_line":"from cinder.volume.targets import spdknvmf as spdknvmf_driver"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_95410e66","line":16,"updated":"2018-06-26 03:41:40.000000000","message":"i don\u0027t think test_spdk file exists here","commit_id":"46dde9d521c5c3753c5cf8bf8f98e652438e4390"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"fa6b494cf62f701c36b5e2f0e21a020ff589be45","unresolved":false,"context_lines":[{"line_number":13,"context_line":"import mock"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from cinder import test"},{"line_number":16,"context_line":"from cinder.tests.unit.volume.drivers import test_spdk"},{"line_number":17,"context_line":"from cinder.volume import configuration as conf"},{"line_number":18,"context_line":"from cinder.volume.targets import spdknvmf as spdknvmf_driver"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_77d19acc","line":16,"in_reply_to":"5f7c97a3_95410e66","updated":"2018-06-28 12:47:04.000000000","message":"Done","commit_id":"46dde9d521c5c3753c5cf8bf8f98e652438e4390"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"a3e39db3e3ea8789d571b623953233ad3363e9e2","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from cinder.volume.targets import spdknvmf as spdknvmf_driver"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"bdevs \u003d [{"},{"line_number":22,"context_line":"    \"num_blocks\": 4096000,"},{"line_number":23,"context_line":"    \"name\": \"Nvme0n1\","},{"line_number":24,"context_line":"    \"driver_specific\": {"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_1062d50a","line":21,"updated":"2018-08-15 19:49:11.000000000","message":"constants could be named  in upper case","commit_id":"57e411eaac4d6b52e1ad64f8b02d159e6c8671c9"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"f59858b74c5cff04ada26fe960a7755d398bf3f7","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from cinder.volume.targets import spdknvmf as spdknvmf_driver"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"bdevs \u003d [{"},{"line_number":22,"context_line":"    \"num_blocks\": 4096000,"},{"line_number":23,"context_line":"    \"name\": \"Nvme0n1\","},{"line_number":24,"context_line":"    \"driver_specific\": {"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_e9dee8d8","line":21,"in_reply_to":"3f79a3b5_1062d50a","updated":"2018-08-21 12:33:27.000000000","message":"Done","commit_id":"57e411eaac4d6b52e1ad64f8b02d159e6c8671c9"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"a3e39db3e3ea8789d571b623953233ad3363e9e2","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        \"serial_number\": params[\u0027serial_number\u0027],"},{"line_number":244,"context_line":"        \"nqn\": params[\u0027nqn\u0027]"},{"line_number":245,"context_line":"    }"},{"line_number":246,"context_line":"    nvmf_subsystems.append(nvmf_subsystem)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    return json.dumps({\"result\": nvmf_subsystem})"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_90334514","line":246,"updated":"2018-08-15 19:49:11.000000000","message":"Please, avoid changing global variables in the tests. It makes code more complicated","commit_id":"57e411eaac4d6b52e1ad64f8b02d159e6c8671c9"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"f59858b74c5cff04ada26fe960a7755d398bf3f7","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        \"serial_number\": params[\u0027serial_number\u0027],"},{"line_number":244,"context_line":"        \"nqn\": params[\u0027nqn\u0027]"},{"line_number":245,"context_line":"    }"},{"line_number":246,"context_line":"    nvmf_subsystems.append(nvmf_subsystem)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    return json.dumps({\"result\": nvmf_subsystem})"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_69ec188f","line":246,"in_reply_to":"3f79a3b5_90334514","updated":"2018-08-21 12:33:27.000000000","message":"Done","commit_id":"57e411eaac4d6b52e1ad64f8b02d159e6c8671c9"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"a3e39db3e3ea8789d571b623953233ad3363e9e2","unresolved":false,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"class SpdkTargetDriverTestCase(test.TestCase):"},{"line_number":311,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":312,"context_line":"        super(SpdkTargetDriverTestCase, self).__init__(*args, **kwargs)"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def setUp(self):"},{"line_number":315,"context_line":"        super(SpdkTargetDriverTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_703c69e0","line":312,"updated":"2018-08-15 19:49:11.000000000","message":"Please, remove empty __init__ method","commit_id":"57e411eaac4d6b52e1ad64f8b02d159e6c8671c9"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"f59858b74c5cff04ada26fe960a7755d398bf3f7","unresolved":false,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"class SpdkTargetDriverTestCase(test.TestCase):"},{"line_number":311,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":312,"context_line":"        super(SpdkTargetDriverTestCase, self).__init__(*args, **kwargs)"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def setUp(self):"},{"line_number":315,"context_line":"        super(SpdkTargetDriverTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_09032444","line":312,"in_reply_to":"3f79a3b5_703c69e0","updated":"2018-08-21 12:33:27.000000000","message":"Done","commit_id":"57e411eaac4d6b52e1ad64f8b02d159e6c8671c9"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"99dd313b72e791637fe754c6099234287025de01","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            if method \u003d\u003d \"kill_instance\":"},{"line_number":290,"context_line":"                return {}"},{"line_number":291,"context_line":"            msg \u003d \"Timeout while waiting for response:\""},{"line_number":292,"context_line":"            raise JSONRPCException(msg)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        if \u0027error\u0027 in response:"},{"line_number":295,"context_line":"            msg \u003d \"\\n\".join([\"Got JSON-RPC error response\","}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_1effb4ab","line":292,"updated":"2018-09-28 11:15:22.000000000","message":"I\u0027m wondering why do we need this in tests. Also, I don\u0027t see if we catch this type of exceptions","commit_id":"7595bb8d68814ef7eca96fb93ffbf947de0b0142"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"b4357048ec208e32735d15426dfee487ea02651e","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            if method \u003d\u003d \"kill_instance\":"},{"line_number":290,"context_line":"                return {}"},{"line_number":291,"context_line":"            msg \u003d \"Timeout while waiting for response:\""},{"line_number":292,"context_line":"            raise JSONRPCException(msg)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        if \u0027error\u0027 in response:"},{"line_number":295,"context_line":"            msg \u003d \"\\n\".join([\"Got JSON-RPC error response\","}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_69d78324","line":292,"in_reply_to":"3f79a3b5_1effb4ab","updated":"2018-10-05 08:36:18.000000000","message":"Done","commit_id":"7595bb8d68814ef7eca96fb93ffbf947de0b0142"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"151feaeb63a408581fe2666ea41fcd845cec8986","unresolved":false,"context_lines":[{"line_number":382,"context_line":"        with mock.patch.object(self.driver, \"_rpc_call\","},{"line_number":383,"context_line":"                               self.jsonrpcclient.call):"},{"line_number":384,"context_line":"            free_node \u003d self.driver._get_first_free_node()"},{"line_number":385,"context_line":"            self.assertEqual(free_node, 3)"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    def test_create_nvmeof_target(self):"},{"line_number":388,"context_line":"        with mock.patch.object(self.driver, \"_rpc_call\","}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_67295f82","line":385,"range":{"start_line":385,"start_character":29,"end_line":385,"end_character":41},"updated":"2018-12-19 15:21:20.000000000","message":"assertEqual args should be in the order of (EXPECTED, ACTUAL)","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"38c3fd231fc5d737383e718970377f8720f8a7c8","unresolved":false,"context_lines":[{"line_number":382,"context_line":"        with mock.patch.object(self.driver, \"_rpc_call\","},{"line_number":383,"context_line":"                               self.jsonrpcclient.call):"},{"line_number":384,"context_line":"            free_node \u003d self.driver._get_first_free_node()"},{"line_number":385,"context_line":"            self.assertEqual(free_node, 3)"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    def test_create_nvmeof_target(self):"},{"line_number":388,"context_line":"        with mock.patch.object(self.driver, \"_rpc_call\","}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_5d61813b","line":385,"range":{"start_line":385,"start_character":29,"end_line":385,"end_character":41},"in_reply_to":"3f79a3b5_67295f82","updated":"2018-12-20 10:39:24.000000000","message":"Done","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"}],"cinder/volume/driver.py":[{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a49c09a830e146aeeb7c86cbc924a136a6956637","unresolved":false,"context_lines":[{"line_number":95,"context_line":"               deprecated_name\u003d\u0027iscsi_helper\u0027,"},{"line_number":96,"context_line":"               default\u003d\u0027tgtadm\u0027,"},{"line_number":97,"context_line":"               choices\u003d[\u0027tgtadm\u0027, \u0027lioadm\u0027, \u0027scstadmin\u0027, \u0027iscsictl\u0027,"},{"line_number":98,"context_line":"                        \u0027ietadm\u0027, \u0027nvmet\u0027, \u0027spdkt\u0027, \u0027fake\u0027],"},{"line_number":99,"context_line":"               help\u003d\u0027Target user-land tool to use. tgtadm is default, \u0027"},{"line_number":100,"context_line":"                    \u0027use lioadm for LIO iSCSI support, scstadmin for SCST \u0027"},{"line_number":101,"context_line":"                    \u0027target support, ietadm for iSCSI Enterprise Target, \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_9d93bea3","line":98,"range":{"start_line":98,"start_character":44,"end_line":98,"end_character":49},"updated":"2018-06-21 12:46:24.000000000","message":"maybe you should change the name to imply nvmeo. So when in the future you will want to add iscsi spdk target.","commit_id":"e6b2c27f72c3a40a7b2689e71da466e09160f9fe"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"e56ec16814e936da9bcc97118cda02ad3eab9c09","unresolved":false,"context_lines":[{"line_number":95,"context_line":"               deprecated_name\u003d\u0027iscsi_helper\u0027,"},{"line_number":96,"context_line":"               default\u003d\u0027tgtadm\u0027,"},{"line_number":97,"context_line":"               choices\u003d[\u0027tgtadm\u0027, \u0027lioadm\u0027, \u0027scstadmin\u0027, \u0027iscsictl\u0027,"},{"line_number":98,"context_line":"                        \u0027ietadm\u0027, \u0027nvmet\u0027, \u0027spdkt\u0027, \u0027fake\u0027],"},{"line_number":99,"context_line":"               help\u003d\u0027Target user-land tool to use. tgtadm is default, \u0027"},{"line_number":100,"context_line":"                    \u0027use lioadm for LIO iSCSI support, scstadmin for SCST \u0027"},{"line_number":101,"context_line":"                    \u0027target support, ietadm for iSCSI Enterprise Target, \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_413aea97","line":98,"range":{"start_line":98,"start_character":44,"end_line":98,"end_character":49},"in_reply_to":"5f7c97a3_9d93bea3","updated":"2018-06-25 12:49:14.000000000","message":"Done","commit_id":"e6b2c27f72c3a40a7b2689e71da466e09160f9fe"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"b97fe09cc937ab966fc38c33762c9694934842a9","unresolved":false,"context_lines":[{"line_number":727,"context_line":"        \"\"\""},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        # Set static backend capabilities from get_volume_stats()"},{"line_number":730,"context_line":"        stats \u003d self.get_volume_stats(True)"},{"line_number":731,"context_line":"        if stats:"},{"line_number":732,"context_line":"            self.capabilities \u003d stats.copy()"},{"line_number":733,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_f2e5a4dc","line":730,"updated":"2018-10-18 13:45:36.000000000","message":"E1128: \u001b[1;31mAssigning to function call which only returns None\u001b[0m (\u001b[1;31massignment-from-none\u001b[0m)","commit_id":"5625efe2f18ca2850dda2531df3df506cecedfe9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"b97fe09cc937ab966fc38c33762c9694934842a9","unresolved":false,"context_lines":[{"line_number":916,"context_line":"        if not ret_function:"},{"line_number":917,"context_line":"            ret_function \u003d CONF.filter_function"},{"line_number":918,"context_line":"        if not ret_function:"},{"line_number":919,"context_line":"            ret_function \u003d self.get_default_filter_function()"},{"line_number":920,"context_line":"        return ret_function"},{"line_number":921,"context_line":""},{"line_number":922,"context_line":"    def get_goodness_function(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_92ca3045","line":919,"updated":"2018-10-18 13:45:36.000000000","message":"E1128: \u001b[1;31mAssigning to function call which only returns None\u001b[0m (\u001b[1;31massignment-from-none\u001b[0m)","commit_id":"5625efe2f18ca2850dda2531df3df506cecedfe9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"b97fe09cc937ab966fc38c33762c9694934842a9","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        if not ret_function:"},{"line_number":934,"context_line":"            ret_function \u003d CONF.goodness_function"},{"line_number":935,"context_line":"        if not ret_function:"},{"line_number":936,"context_line":"            ret_function \u003d self.get_default_goodness_function()"},{"line_number":937,"context_line":"        return ret_function"},{"line_number":938,"context_line":""},{"line_number":939,"context_line":"    def get_default_filter_function(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_b2c72c3e","line":936,"updated":"2018-10-18 13:45:36.000000000","message":"E1128: \u001b[1;31mAssigning to function call which only returns None\u001b[0m (\u001b[1;31massignment-from-none\u001b[0m)","commit_id":"5625efe2f18ca2850dda2531df3df506cecedfe9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"b97fe09cc937ab966fc38c33762c9694934842a9","unresolved":false,"context_lines":[{"line_number":1047,"context_line":"        model_update \u003d None"},{"line_number":1048,"context_line":"        try:"},{"line_number":1049,"context_line":"            LOG.debug(\"Snapshot %s: creating export.\", snapshot.id)"},{"line_number":1050,"context_line":"            model_update \u003d self.create_export_snapshot(ctxt, snapshot,"},{"line_number":1051,"context_line":"                                                       properties)"},{"line_number":1052,"context_line":"            if model_update:"},{"line_number":1053,"context_line":"                snapshot.provider_location \u003d model_update.get("}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_52d498ea","line":1050,"updated":"2018-10-18 13:45:36.000000000","message":"E1128: \u001b[1;31mAssigning to function call which only returns None\u001b[0m (\u001b[1;31massignment-from-none\u001b[0m)","commit_id":"5625efe2f18ca2850dda2531df3df506cecedfe9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"b97fe09cc937ab966fc38c33762c9694934842a9","unresolved":false,"context_lines":[{"line_number":1065,"context_line":"                raise exception.ExportFailure(reason\u003dex)"},{"line_number":1066,"context_line":""},{"line_number":1067,"context_line":"        try:"},{"line_number":1068,"context_line":"            conn \u003d self.initialize_connection_snapshot("},{"line_number":1069,"context_line":"                snapshot, properties)"},{"line_number":1070,"context_line":"        except Exception as err:"},{"line_number":1071,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_72d194f8","line":1068,"updated":"2018-10-18 13:45:36.000000000","message":"E1128: \u001b[1;31mAssigning to function call which only returns None\u001b[0m (\u001b[1;31massignment-from-none\u001b[0m)","commit_id":"5625efe2f18ca2850dda2531df3df506cecedfe9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"b97fe09cc937ab966fc38c33762c9694934842a9","unresolved":false,"context_lines":[{"line_number":1171,"context_line":"        Otherwise to backup an in-use volume, create a temp volume and"},{"line_number":1172,"context_line":"        back it up."},{"line_number":1173,"context_line":"        \"\"\""},{"line_number":1174,"context_line":"        volume \u003d objects.Volume.get_by_id(context, backup.volume_id)"},{"line_number":1175,"context_line":"        snapshot \u003d None"},{"line_number":1176,"context_line":"        if backup.snapshot_id:"},{"line_number":1177,"context_line":"            snapshot \u003d objects.Snapshot.get_by_id(context, backup.snapshot_id)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_12006069","line":1174,"updated":"2018-10-18 13:45:36.000000000","message":"E1101: \u001b[1;31mModule \u0027cinder.objects\u0027 has no \u0027Volume\u0027 member\u001b[0m (\u001b[1;31mno-member\u001b[0m)","commit_id":"5625efe2f18ca2850dda2531df3df506cecedfe9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"b97fe09cc937ab966fc38c33762c9694934842a9","unresolved":false,"context_lines":[{"line_number":1174,"context_line":"        volume \u003d objects.Volume.get_by_id(context, backup.volume_id)"},{"line_number":1175,"context_line":"        snapshot \u003d None"},{"line_number":1176,"context_line":"        if backup.snapshot_id:"},{"line_number":1177,"context_line":"            snapshot \u003d objects.Snapshot.get_by_id(context, backup.snapshot_id)"},{"line_number":1178,"context_line":""},{"line_number":1179,"context_line":"        LOG.debug(\u0027Creating a new backup for volume %s.\u0027, volume[\u0027name\u0027])"},{"line_number":1180,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_32055c7a","line":1177,"updated":"2018-10-18 13:45:36.000000000","message":"E1101: \u001b[1;31mModule \u0027cinder.objects\u0027 has no \u0027Snapshot\u0027 member\u001b[0m (\u001b[1;31mno-member\u001b[0m)","commit_id":"5625efe2f18ca2850dda2531df3df506cecedfe9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"b97fe09cc937ab966fc38c33762c9694934842a9","unresolved":false,"context_lines":[{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"        Otherwise for in-use volume, create a temp snapshot and back it up."},{"line_number":1215,"context_line":"        \"\"\""},{"line_number":1216,"context_line":"        volume \u003d objects.Volume.get_by_id(context, backup.volume_id)"},{"line_number":1217,"context_line":"        snapshot \u003d None"},{"line_number":1218,"context_line":"        if backup.snapshot_id:"},{"line_number":1219,"context_line":"            snapshot \u003d objects.Snapshot.get_by_id(context, backup.snapshot_id)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_d2f98882","line":1216,"updated":"2018-10-18 13:45:36.000000000","message":"E1101: \u001b[1;31mModule \u0027cinder.objects\u0027 has no \u0027Volume\u0027 member\u001b[0m (\u001b[1;31mno-member\u001b[0m)","commit_id":"5625efe2f18ca2850dda2531df3df506cecedfe9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"b97fe09cc937ab966fc38c33762c9694934842a9","unresolved":false,"context_lines":[{"line_number":1216,"context_line":"        volume \u003d objects.Volume.get_by_id(context, backup.volume_id)"},{"line_number":1217,"context_line":"        snapshot \u003d None"},{"line_number":1218,"context_line":"        if backup.snapshot_id:"},{"line_number":1219,"context_line":"            snapshot \u003d objects.Snapshot.get_by_id(context, backup.snapshot_id)"},{"line_number":1220,"context_line":""},{"line_number":1221,"context_line":"        LOG.debug(\u0027Creating a new backup for volume %s.\u0027, volume[\u0027name\u0027])"},{"line_number":1222,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_f2fe0469","line":1219,"updated":"2018-10-18 13:45:36.000000000","message":"E1101: \u001b[1;31mModule \u0027cinder.objects\u0027 has no \u0027Snapshot\u0027 member\u001b[0m (\u001b[1;31mno-member\u001b[0m)","commit_id":"5625efe2f18ca2850dda2531df3df506cecedfe9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"b97fe09cc937ab966fc38c33762c9694934842a9","unresolved":false,"context_lines":[{"line_number":1261,"context_line":"            \u0027encryption_key_id\u0027: volume[\u0027encryption_key_id\u0027],"},{"line_number":1262,"context_line":"            \u0027metadata\u0027: {},"},{"line_number":1263,"context_line":"        }"},{"line_number":1264,"context_line":"        temp_snap_ref \u003d objects.Snapshot(context\u003dcontext, **kwargs)"},{"line_number":1265,"context_line":"        temp_snap_ref.create()"},{"line_number":1266,"context_line":"        try:"},{"line_number":1267,"context_line":"            model_update \u003d self.create_snapshot(temp_snap_ref)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_92f310a1","line":1264,"updated":"2018-10-18 13:45:36.000000000","message":"E1101: \u001b[1;31mModule \u0027cinder.objects\u0027 has no \u0027Snapshot\u0027 member\u001b[0m (\u001b[1;31mno-member\u001b[0m)","commit_id":"5625efe2f18ca2850dda2531df3df506cecedfe9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"b97fe09cc937ab966fc38c33762c9694934842a9","unresolved":false,"context_lines":[{"line_number":1264,"context_line":"        temp_snap_ref \u003d objects.Snapshot(context\u003dcontext, **kwargs)"},{"line_number":1265,"context_line":"        temp_snap_ref.create()"},{"line_number":1266,"context_line":"        try:"},{"line_number":1267,"context_line":"            model_update \u003d self.create_snapshot(temp_snap_ref)"},{"line_number":1268,"context_line":"            if model_update:"},{"line_number":1269,"context_line":"                temp_snap_ref.update(model_update)"},{"line_number":1270,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_b2f08c94","line":1267,"updated":"2018-10-18 13:45:36.000000000","message":"E1101: \u001b[1;31mInstance of \u0027BaseVD\u0027 has no \u0027create_snapshot\u0027 member\u001b[0m (\u001b[1;31mno-member\u001b[0m)","commit_id":"5625efe2f18ca2850dda2531df3df506cecedfe9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"b97fe09cc937ab966fc38c33762c9694934842a9","unresolved":false,"context_lines":[{"line_number":1294,"context_line":"            \u0027admin_metadata\u0027: {\u0027temporary\u0027: \u0027True\u0027},"},{"line_number":1295,"context_line":"        }"},{"line_number":1296,"context_line":"        kwargs.update(volume_options or {})"},{"line_number":1297,"context_line":"        temp_vol_ref \u003d objects.Volume(context\u003dcontext.elevated(), **kwargs)"},{"line_number":1298,"context_line":"        temp_vol_ref.create()"},{"line_number":1299,"context_line":"        return temp_vol_ref"},{"line_number":1300,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_52ed78b6","line":1297,"updated":"2018-10-18 13:45:36.000000000","message":"E1101: \u001b[1;31mModule \u0027cinder.objects\u0027 has no \u0027Volume\u0027 member\u001b[0m (\u001b[1;31mno-member\u001b[0m)","commit_id":"5625efe2f18ca2850dda2531df3df506cecedfe9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"b97fe09cc937ab966fc38c33762c9694934842a9","unresolved":false,"context_lines":[{"line_number":1317,"context_line":"        temp_vol_ref \u003d self._create_temp_volume(context, volume,"},{"line_number":1318,"context_line":"                                                volume_options\u003dvolume_options)"},{"line_number":1319,"context_line":"        try:"},{"line_number":1320,"context_line":"            model_update \u003d self.create_volume_from_snapshot(temp_vol_ref,"},{"line_number":1321,"context_line":"                                                            snapshot)"},{"line_number":1322,"context_line":"            if model_update:"},{"line_number":1323,"context_line":"                temp_vol_ref.update(model_update)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_72eaf4a0","line":1320,"updated":"2018-10-18 13:45:36.000000000","message":"E1101: \u001b[1;31mInstance of \u0027BaseVD\u0027 has no \u0027create_volume_from_snapshot\u0027 member\u001b[0m (\u001b[1;31mno-member\u001b[0m)","commit_id":"5625efe2f18ca2850dda2531df3df506cecedfe9"}],"cinder/volume/targets/spdknvmf.py":[{"author":{"_account_id":19844,"name":"Kien Ha","email":"kienha9922@gmail.com","username":"kien.ha"},"change_message_id":"858af633bdd6829e639ce296010384bd13fc8321","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        for subsystem in output[1:]:"},{"line_number":87,"context_line":"            for namespace in subsystem[\u0027namespaces\u0027]:"},{"line_number":88,"context_line":"                spdk_name \u003d self._get_spdk_volume_name(name)"},{"line_number":89,"context_line":"                if spdk_name is not None:"},{"line_number":90,"context_line":"                    if spdk_name in namespace[\u0027bdev_name\u0027]:"},{"line_number":91,"context_line":"                        return subsystem[\u0027nqn\u0027]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_823bc4c7","line":90,"range":{"start_line":89,"start_character":16,"end_line":90,"end_character":59},"updated":"2018-07-12 03:00:58.000000000","message":"Seems like we can combine the two if statements into one statement","commit_id":"bbe84f8f463e3ed189f8bf30b9f10081766ca0a4"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"6acf02d7efabf4ffcdcc1e15b9e82e59fe1c5114","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        for subsystem in output[1:]:"},{"line_number":87,"context_line":"            for namespace in subsystem[\u0027namespaces\u0027]:"},{"line_number":88,"context_line":"                spdk_name \u003d self._get_spdk_volume_name(name)"},{"line_number":89,"context_line":"                if spdk_name is not None:"},{"line_number":90,"context_line":"                    if spdk_name in namespace[\u0027bdev_name\u0027]:"},{"line_number":91,"context_line":"                        return subsystem[\u0027nqn\u0027]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_8ac0ad2d","line":90,"range":{"start_line":89,"start_character":16,"end_line":90,"end_character":59},"in_reply_to":"5f7c97a3_823bc4c7","updated":"2018-07-12 14:21:59.000000000","message":"Done","commit_id":"bbe84f8f463e3ed189f8bf30b9f10081766ca0a4"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"e27189ec0ede82416faf187563030118d69c3dee","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            if (newdata \u003d\u003d b\u0027\u0027):"},{"line_number":55,"context_line":"                closed \u003d True"},{"line_number":56,"context_line":"            buf +\u003d newdata"},{"line_number":57,"context_line":"            try:"},{"line_number":58,"context_line":"                response \u003d json.loads(buf)"},{"line_number":59,"context_line":"            except ValueError:"},{"line_number":60,"context_line":"                continue  # incomplete response; keep buffering"},{"line_number":61,"context_line":"            break"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        if not response:"},{"line_number":64,"context_line":"            raise exception.VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_e2800fc1","line":61,"range":{"start_line":57,"start_character":12,"end_line":61,"end_character":17},"updated":"2018-07-17 10:44:04.000000000","message":"I don\u0027t see the reason for trying to parse the response inside the loop, I would let the loop receives all the data then parse it after.","commit_id":"2dbee2b628e5b2c3d9e15b2e26c6452176fa088f"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"50cffd3b28e8b64740e0200ab4c06982e624d710","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            if (newdata \u003d\u003d b\u0027\u0027):"},{"line_number":55,"context_line":"                closed \u003d True"},{"line_number":56,"context_line":"            buf +\u003d newdata"},{"line_number":57,"context_line":"            try:"},{"line_number":58,"context_line":"                response \u003d json.loads(buf)"},{"line_number":59,"context_line":"            except ValueError:"},{"line_number":60,"context_line":"                continue  # incomplete response; keep buffering"},{"line_number":61,"context_line":"            break"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        if not response:"},{"line_number":64,"context_line":"            raise exception.VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_260c5639","line":61,"range":{"start_line":57,"start_character":12,"end_line":61,"end_character":17},"in_reply_to":"5f7c97a3_e2800fc1","updated":"2018-07-23 12:14:17.000000000","message":"At this point we don\u0027t know how big is the data and how big the receive buffer should be. We don\u0027t want to make it too big so it is better to make it in the loop.","commit_id":"2dbee2b628e5b2c3d9e15b2e26c6452176fa088f"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"e27189ec0ede82416faf187563030118d69c3dee","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        for subsystem in output[1:]:"},{"line_number":87,"context_line":"            for namespace in subsystem[\u0027namespaces\u0027]:"},{"line_number":88,"context_line":"                spdk_name \u003d self._get_spdk_volume_name(name)"},{"line_number":89,"context_line":"                if spdk_name is not None and \\"},{"line_number":90,"context_line":"                   spdk_name in namespace[\u0027bdev_name\u0027]:"},{"line_number":91,"context_line":"                        return subsystem[\u0027nqn\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_1d4fae6a","line":88,"range":{"start_line":88,"start_character":16,"end_line":88,"end_character":60},"updated":"2018-07-17 10:44:04.000000000","message":"it\u0027s safe to move this line to line: 85 (before the loops),\nthen:\nif spdk_name is not None:\n# enter the loops","commit_id":"2dbee2b628e5b2c3d9e15b2e26c6452176fa088f"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"50cffd3b28e8b64740e0200ab4c06982e624d710","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        for subsystem in output[1:]:"},{"line_number":87,"context_line":"            for namespace in subsystem[\u0027namespaces\u0027]:"},{"line_number":88,"context_line":"                spdk_name \u003d self._get_spdk_volume_name(name)"},{"line_number":89,"context_line":"                if spdk_name is not None and \\"},{"line_number":90,"context_line":"                   spdk_name in namespace[\u0027bdev_name\u0027]:"},{"line_number":91,"context_line":"                        return subsystem[\u0027nqn\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_c699e2cf","line":88,"range":{"start_line":88,"start_character":16,"end_line":88,"end_character":60},"in_reply_to":"5f7c97a3_1d4fae6a","updated":"2018-07-23 12:14:17.000000000","message":"Done","commit_id":"2dbee2b628e5b2c3d9e15b2e26c6452176fa088f"},{"author":{"_account_id":19844,"name":"Kien Ha","email":"kienha9922@gmail.com","username":"kien.ha"},"change_message_id":"924578f1d86d47834e90dfe049119ce24caadc90","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        for subsystem in output[1:]:"},{"line_number":87,"context_line":"            for namespace in subsystem[\u0027namespaces\u0027]:"},{"line_number":88,"context_line":"                spdk_name \u003d self._get_spdk_volume_name(name)"},{"line_number":89,"context_line":"                if spdk_name is not None and \\"},{"line_number":90,"context_line":"                   spdk_name in namespace[\u0027bdev_name\u0027]:"},{"line_number":91,"context_line":"                        return subsystem[\u0027nqn\u0027]"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_1057eb03","line":89,"range":{"start_line":89,"start_character":45,"end_line":89,"end_character":46},"updated":"2018-07-12 18:02:52.000000000","message":"nit: Trailing backslash","commit_id":"2dbee2b628e5b2c3d9e15b2e26c6452176fa088f"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"365925985763ef8b0225eb8d6c87ce484771edec","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        for subsystem in output[1:]:"},{"line_number":87,"context_line":"            for namespace in subsystem[\u0027namespaces\u0027]:"},{"line_number":88,"context_line":"                spdk_name \u003d self._get_spdk_volume_name(name)"},{"line_number":89,"context_line":"                if spdk_name is not None and \\"},{"line_number":90,"context_line":"                   spdk_name in namespace[\u0027bdev_name\u0027]:"},{"line_number":91,"context_line":"                        return subsystem[\u0027nqn\u0027]"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_b70f008a","line":89,"range":{"start_line":89,"start_character":45,"end_line":89,"end_character":46},"in_reply_to":"5f7c97a3_1057eb03","updated":"2018-07-13 08:09:16.000000000","message":"Why this is wrong?","commit_id":"2dbee2b628e5b2c3d9e15b2e26c6452176fa088f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"a3e39db3e3ea8789d571b623953233ad3363e9e2","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                self._rpc_call(\u0027delete_nvmf_subsystem\u0027, params)"},{"line_number":163,"context_line":"                LOG.debug(\u0027SPDK subsystem %s deleted\u0027, nqn)"},{"line_number":164,"context_line":"            except Exception:"},{"line_number":165,"context_line":"                LOG.debug(\u0027SPDK subsystem not deleted\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_10109556","line":165,"updated":"2018-08-15 19:49:11.000000000","message":"Please, add an error message to the log too. It will be helpful for the troubleshooting.","commit_id":"57e411eaac4d6b52e1ad64f8b02d159e6c8671c9"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"f59858b74c5cff04ada26fe960a7755d398bf3f7","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                self._rpc_call(\u0027delete_nvmf_subsystem\u0027, params)"},{"line_number":163,"context_line":"                LOG.debug(\u0027SPDK subsystem %s deleted\u0027, nqn)"},{"line_number":164,"context_line":"            except Exception:"},{"line_number":165,"context_line":"                LOG.debug(\u0027SPDK subsystem not deleted\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_c97f6ca9","line":165,"in_reply_to":"3f79a3b5_10109556","updated":"2018-08-21 12:33:27.000000000","message":"Done","commit_id":"57e411eaac4d6b52e1ad64f8b02d159e6c8671c9"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"99dd313b72e791637fe754c6099234287025de01","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        super(SpdkNvmf, self).__init__(*args, **kwargs)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        self.configuration.append_config_values(spdk_opts)"},{"line_number":52,"context_line":"        self.url \u003d \u0027http://\u0027 + \\"},{"line_number":53,"context_line":"            self.configuration.spdk_rpc_ip + \\"},{"line_number":54,"context_line":"            \u0027:\u0027 + \\"},{"line_number":55,"context_line":"            str(self.configuration.spdk_rpc_port) + \\"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_be27a063","line":52,"range":{"start_line":52,"start_character":20,"end_line":52,"end_character":24},"updated":"2018-09-28 11:15:22.000000000","message":"Does it support https?","commit_id":"7595bb8d68814ef7eca96fb93ffbf947de0b0142"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"99dd313b72e791637fe754c6099234287025de01","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        super(SpdkNvmf, self).__init__(*args, **kwargs)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        self.configuration.append_config_values(spdk_opts)"},{"line_number":52,"context_line":"        self.url \u003d \u0027http://\u0027 + \\"},{"line_number":53,"context_line":"            self.configuration.spdk_rpc_ip + \\"},{"line_number":54,"context_line":"            \u0027:\u0027 + \\"},{"line_number":55,"context_line":"            str(self.configuration.spdk_rpc_port) + \\"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_1e18141c","line":52,"range":{"start_line":52,"start_character":30,"end_line":52,"end_character":32},"updated":"2018-09-28 11:15:22.000000000","message":"Please, use \u0027(\u0027 and \u0027)\u0027 instead of \u0027\\\u0027 for multi-line statements","commit_id":"7595bb8d68814ef7eca96fb93ffbf947de0b0142"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"b4357048ec208e32735d15426dfee487ea02651e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        super(SpdkNvmf, self).__init__(*args, **kwargs)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        self.configuration.append_config_values(spdk_opts)"},{"line_number":52,"context_line":"        self.url \u003d \u0027http://\u0027 + \\"},{"line_number":53,"context_line":"            self.configuration.spdk_rpc_ip + \\"},{"line_number":54,"context_line":"            \u0027:\u0027 + \\"},{"line_number":55,"context_line":"            str(self.configuration.spdk_rpc_port) + \\"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_29e18bfe","line":52,"range":{"start_line":52,"start_character":30,"end_line":52,"end_character":32},"in_reply_to":"3f79a3b5_1e18141c","updated":"2018-10-05 08:36:18.000000000","message":"Done","commit_id":"7595bb8d68814ef7eca96fb93ffbf947de0b0142"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"b4357048ec208e32735d15426dfee487ea02651e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        super(SpdkNvmf, self).__init__(*args, **kwargs)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        self.configuration.append_config_values(spdk_opts)"},{"line_number":52,"context_line":"        self.url \u003d \u0027http://\u0027 + \\"},{"line_number":53,"context_line":"            self.configuration.spdk_rpc_ip + \\"},{"line_number":54,"context_line":"            \u0027:\u0027 + \\"},{"line_number":55,"context_line":"            str(self.configuration.spdk_rpc_port) + \\"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_e9eab3d7","line":52,"range":{"start_line":52,"start_character":20,"end_line":52,"end_character":24},"in_reply_to":"3f79a3b5_be27a063","updated":"2018-10-05 08:36:18.000000000","message":"Yes, but it requires certificates installation on host and client side.","commit_id":"7595bb8d68814ef7eca96fb93ffbf947de0b0142"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"99dd313b72e791637fe754c6099234287025de01","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        if not req.ok:"},{"line_number":72,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":73,"context_line":"                data\u003d_(\"SPDK target responded with error\"))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        return req.json()"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_decffc88","line":73,"updated":"2018-09-28 11:15:22.000000000","message":"Can we add more details what happened from response?","commit_id":"7595bb8d68814ef7eca96fb93ffbf947de0b0142"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"b4357048ec208e32735d15426dfee487ea02651e","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        if not req.ok:"},{"line_number":72,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":73,"context_line":"                data\u003d_(\"SPDK target responded with error\"))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        return req.json()"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_09e84fdd","line":73,"in_reply_to":"3f79a3b5_decffc88","updated":"2018-10-05 08:36:18.000000000","message":"Done","commit_id":"7595bb8d68814ef7eca96fb93ffbf947de0b0142"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"99dd313b72e791637fe754c6099234287025de01","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                if name in alias:"},{"line_number":83,"context_line":"                    return bdev[\u0027name\u0027]"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        return None"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def _get_nqn_with_volume_name(self, name):"},{"line_number":88,"context_line":"        output \u003d self._rpc_call(\u0027get_nvmf_subsystems\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_9ed98457","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":19},"updated":"2018-09-28 11:15:22.000000000","message":"We can omit it here and below","commit_id":"7595bb8d68814ef7eca96fb93ffbf947de0b0142"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"b4357048ec208e32735d15426dfee487ea02651e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                if name in alias:"},{"line_number":83,"context_line":"                    return bdev[\u0027name\u0027]"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        return None"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def _get_nqn_with_volume_name(self, name):"},{"line_number":88,"context_line":"        output \u003d self._rpc_call(\u0027get_nvmf_subsystems\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_a9b6fbfb","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":19},"in_reply_to":"3f79a3b5_9ed98457","updated":"2018-10-05 08:36:18.000000000","message":"Done","commit_id":"7595bb8d68814ef7eca96fb93ffbf947de0b0142"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"99dd313b72e791637fe754c6099234287025de01","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                self._rpc_call(\u0027delete_nvmf_subsystem\u0027, params)"},{"line_number":181,"context_line":"                LOG.debug(\u0027SPDK subsystem %s deleted\u0027, nqn)"},{"line_number":182,"context_line":"            except Exception:"},{"line_number":183,"context_line":"                LOG.debug(\u0027SPDK ERROR: subsystem not deleted\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_5ee3ec06","line":183,"updated":"2018-09-28 11:15:22.000000000","message":"Please, add exception info to the log message","commit_id":"7595bb8d68814ef7eca96fb93ffbf947de0b0142"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"b4357048ec208e32735d15426dfee487ea02651e","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                self._rpc_call(\u0027delete_nvmf_subsystem\u0027, params)"},{"line_number":181,"context_line":"                LOG.debug(\u0027SPDK subsystem %s deleted\u0027, nqn)"},{"line_number":182,"context_line":"            except Exception:"},{"line_number":183,"context_line":"                LOG.debug(\u0027SPDK ERROR: subsystem not deleted\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_c9bb37e2","line":183,"in_reply_to":"3f79a3b5_5ee3ec06","updated":"2018-10-05 08:36:18.000000000","message":"Done","commit_id":"7595bb8d68814ef7eca96fb93ffbf947de0b0142"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d85b43e0a39ca74ee222ce53560c786b1937cbc9","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from cinder.volume import configuration"},{"line_number":20,"context_line":"from cinder.volume.targets import nvmeof"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_config import cfg"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from oslo_log import log as logging"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"spdk_opts \u003d ["},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027spdk_rpc_ip\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f79a3b5_01868217","line":24,"range":{"start_line":22,"start_character":0,"end_line":24,"end_character":35},"updated":"2018-10-10 14:04:41.000000000","message":"Move up with requests into a separate third party import grouping between the native python imports and the local cinder imports.","commit_id":"f66f210afc14a4085751d1fb7a5e1fdea0816030"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"9f5f6c25fced0b3722c99c9a683ca12689332dad","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from cinder.volume import configuration"},{"line_number":20,"context_line":"from cinder.volume.targets import nvmeof"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_config import cfg"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from oslo_log import log as logging"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"spdk_opts \u003d ["},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027spdk_rpc_ip\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f79a3b5_da1ffa57","line":24,"range":{"start_line":22,"start_character":0,"end_line":24,"end_character":35},"in_reply_to":"3f79a3b5_01868217","updated":"2018-10-11 14:50:01.000000000","message":"Done","commit_id":"f66f210afc14a4085751d1fb7a5e1fdea0816030"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"9d2c7c732f9df034925d3460d4b80a50aa3cb566","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    cfg.StrOpt(\u0027spdk_rpc_username\u0027,"},{"line_number":33,"context_line":"               help\u003d\u0027The NVMe target remote configuration username.\u0027),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027spdk_rpc_password\u0027,"},{"line_number":35,"context_line":"               help\u003d\u0027The NVMe target remote configuration password.\u0027),"},{"line_number":36,"context_line":"]"},{"line_number":37,"context_line":"CONF \u003d cfg.CONF"},{"line_number":38,"context_line":"CONF.register_opts(spdk_opts, group\u003dconfiguration.SHARED_CONF_GROUP)"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f79a3b5_7ce27804","line":35,"updated":"2018-10-10 16:23:02.000000000","message":"Needs \"secret\u003dTrue\" parameter.","commit_id":"f66f210afc14a4085751d1fb7a5e1fdea0816030"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"9f5f6c25fced0b3722c99c9a683ca12689332dad","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    cfg.StrOpt(\u0027spdk_rpc_username\u0027,"},{"line_number":33,"context_line":"               help\u003d\u0027The NVMe target remote configuration username.\u0027),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027spdk_rpc_password\u0027,"},{"line_number":35,"context_line":"               help\u003d\u0027The NVMe target remote configuration password.\u0027),"},{"line_number":36,"context_line":"]"},{"line_number":37,"context_line":"CONF \u003d cfg.CONF"},{"line_number":38,"context_line":"CONF.register_opts(spdk_opts, group\u003dconfiguration.SHARED_CONF_GROUP)"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f79a3b5_7a3826d3","line":35,"in_reply_to":"3f79a3b5_7ce27804","updated":"2018-10-11 14:50:01.000000000","message":"Done","commit_id":"f66f210afc14a4085751d1fb7a5e1fdea0816030"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"9d2c7c732f9df034925d3460d4b80a50aa3cb566","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.configuration.append_config_values(spdk_opts)"},{"line_number":51,"context_line":"        self.url \u003d (\u0027http://%(ip)s:%(port)s/\u0027 %"},{"line_number":52,"context_line":"                    {\u0027ip\u0027: self.configuration.spdk_rpc_ip,"},{"line_number":53,"context_line":"                     \u0027port\u0027: self.configuration.spdk_rpc_port})"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def _rpc_call(self, method, params\u003dNone):"},{"line_number":56,"context_line":"        payload \u003d {}"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f79a3b5_dcb4ecf3","line":53,"updated":"2018-10-10 16:23:02.000000000","message":"Will this ever support https, or just http?  Sending passwords over plaintext is not really preferred...","commit_id":"f66f210afc14a4085751d1fb7a5e1fdea0816030"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"9f5f6c25fced0b3722c99c9a683ca12689332dad","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.configuration.append_config_values(spdk_opts)"},{"line_number":51,"context_line":"        self.url \u003d (\u0027http://%(ip)s:%(port)s/\u0027 %"},{"line_number":52,"context_line":"                    {\u0027ip\u0027: self.configuration.spdk_rpc_ip,"},{"line_number":53,"context_line":"                     \u0027port\u0027: self.configuration.spdk_rpc_port})"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def _rpc_call(self, method, params\u003dNone):"},{"line_number":56,"context_line":"        payload \u003d {}"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f79a3b5_7a66e6f0","line":53,"in_reply_to":"3f79a3b5_dcb4ecf3","updated":"2018-10-11 14:50:01.000000000","message":"Https may be used, but it requires installation of SSL certificates. I don\u0027t want to complicate configuration for user. Usually this will be connecting over private network, so this should no be a problem.","commit_id":"f66f210afc14a4085751d1fb7a5e1fdea0816030"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d85b43e0a39ca74ee222ce53560c786b1937cbc9","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                            timeout\u003d30)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        if not req.ok:"},{"line_number":69,"context_line":"            response \u003d \"SPDK target responded with error: \" + req.text"},{"line_number":70,"context_line":"            raise exception.VolumeBackendAPIException(data \u003d response)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        return req.json()"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f79a3b5_218e1e26","line":69,"range":{"start_line":69,"start_character":23,"end_line":69,"end_character":24},"updated":"2018-10-10 14:04:41.000000000","message":"Needs _() around the string for i18n support.","commit_id":"f66f210afc14a4085751d1fb7a5e1fdea0816030"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"9f5f6c25fced0b3722c99c9a683ca12689332dad","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                            timeout\u003d30)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        if not req.ok:"},{"line_number":69,"context_line":"            response \u003d \"SPDK target responded with error: \" + req.text"},{"line_number":70,"context_line":"            raise exception.VolumeBackendAPIException(data \u003d response)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        return req.json()"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f79a3b5_daa29afb","line":69,"range":{"start_line":69,"start_character":23,"end_line":69,"end_character":24},"in_reply_to":"3f79a3b5_218e1e26","updated":"2018-10-11 14:50:01.000000000","message":"Done","commit_id":"f66f210afc14a4085751d1fb7a5e1fdea0816030"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d85b43e0a39ca74ee222ce53560c786b1937cbc9","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        if not req.ok:"},{"line_number":69,"context_line":"            response \u003d \"SPDK target responded with error: \" + req.text"},{"line_number":70,"context_line":"            raise exception.VolumeBackendAPIException(data \u003d response)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        return req.json()"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3f79a3b5_a1746e38","line":70,"range":{"start_line":70,"start_character":58,"end_line":70,"end_character":61},"updated":"2018-10-10 14:04:41.000000000","message":"Should not have spaces around the \u003d in kwarg assignment.","commit_id":"f66f210afc14a4085751d1fb7a5e1fdea0816030"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"9f5f6c25fced0b3722c99c9a683ca12689332dad","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        if not req.ok:"},{"line_number":69,"context_line":"            response \u003d \"SPDK target responded with error: \" + req.text"},{"line_number":70,"context_line":"            raise exception.VolumeBackendAPIException(data \u003d response)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        return req.json()"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3f79a3b5_3a5cee18","line":70,"range":{"start_line":70,"start_character":58,"end_line":70,"end_character":61},"in_reply_to":"3f79a3b5_a1746e38","updated":"2018-10-11 14:50:01.000000000","message":"Done","commit_id":"f66f210afc14a4085751d1fb7a5e1fdea0816030"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"52fb20baa6935f76f51230580a99671f634533e0","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            nqn \u003d \u0027%s:cnode%s\u0027 % (subsystem_name, node)"},{"line_number":124,"context_line":"            choice \u003d string.ascii_uppercase + string.digits"},{"line_number":125,"context_line":"            serial \u003d \u0027\u0027.join("},{"line_number":126,"context_line":"                random.SystemRandom().choice(choice) for _ in range(12))"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            params \u003d {"},{"line_number":129,"context_line":"                \u0027nqn\u0027: nqn,"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f79a3b5_fc8a0811","line":126,"updated":"2018-10-10 16:26:01.000000000","message":"Should use volume.utils.generate_password(length\u003d12, symbolgroups\u003dchoice).","commit_id":"f66f210afc14a4085751d1fb7a5e1fdea0816030"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"9f5f6c25fced0b3722c99c9a683ca12689332dad","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            nqn \u003d \u0027%s:cnode%s\u0027 % (subsystem_name, node)"},{"line_number":124,"context_line":"            choice \u003d string.ascii_uppercase + string.digits"},{"line_number":125,"context_line":"            serial \u003d \u0027\u0027.join("},{"line_number":126,"context_line":"                random.SystemRandom().choice(choice) for _ in range(12))"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            params \u003d {"},{"line_number":129,"context_line":"                \u0027nqn\u0027: nqn,"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f79a3b5_9a91829d","line":126,"in_reply_to":"3f79a3b5_fc8a0811","updated":"2018-10-11 14:50:01.000000000","message":"Done","commit_id":"f66f210afc14a4085751d1fb7a5e1fdea0816030"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"53177b9cc782cc25f6e7703a6be7a767759843e0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"]"},{"line_number":38,"context_line":"CONF \u003d cfg.CONF"},{"line_number":39,"context_line":"CONF.register_opts(spdk_opts, group\u003dconfiguration.SHARED_CONF_GROUP)"},{"line_number":40,"context_line":"CONF.register_opts(spdk_opts)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f79a3b5_568c1734","line":40,"updated":"2018-10-11 20:52:56.000000000","message":"This doesn\u0027t look right. I don\u0027t think it should be registered twice.","commit_id":"3053c2ad658f4385535b1eee3eae6874c05f785d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"151feaeb63a408581fe2666ea41fcd845cec8986","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder.volume.targets import nvmeof"},{"line_number":24,"context_line":"from cinder.volume import utils"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"spdk_opts \u003d ["},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027spdk_rpc_ip\u0027,"},{"line_number":28,"context_line":"               help\u003d\u0027The NVMe target remote configuration IP address.\u0027),"},{"line_number":29,"context_line":"    cfg.PortOpt(\u0027spdk_rpc_port\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_0702eb07","line":26,"updated":"2018-12-19 15:21:20.000000000","message":"Would be great if we can reuse existing config options for this, but honestly not sure if there are any that make sense.","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"38c3fd231fc5d737383e718970377f8720f8a7c8","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder.volume.targets import nvmeof"},{"line_number":24,"context_line":"from cinder.volume import utils"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"spdk_opts \u003d ["},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027spdk_rpc_ip\u0027,"},{"line_number":28,"context_line":"               help\u003d\u0027The NVMe target remote configuration IP address.\u0027),"},{"line_number":29,"context_line":"    cfg.PortOpt(\u0027spdk_rpc_port\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_fd42cd93","line":26,"in_reply_to":"3f79a3b5_0702eb07","updated":"2018-12-20 10:39:24.000000000","message":"I was looking for something similar, but could not find.","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"35601fff063072883bf6364fb77deb8b833e4383","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        super(SpdkNvmf, self).__init__(*args, **kwargs)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        self.configuration.append_config_values(spdk_opts)"},{"line_number":51,"context_line":"        self.url \u003d (\u0027http://%(ip)s:%(port)s/\u0027 %"},{"line_number":52,"context_line":"                    {\u0027ip\u0027: self.configuration.spdk_rpc_ip,"},{"line_number":53,"context_line":"                     \u0027port\u0027: self.configuration.spdk_rpc_port})"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_b75f42dd","line":51,"range":{"start_line":51,"start_character":21,"end_line":51,"end_character":27},"updated":"2018-12-11 20:17:00.000000000","message":"It would be good to support https too.","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"34088399258848abcf891950ee80c687c5ef0912","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        super(SpdkNvmf, self).__init__(*args, **kwargs)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        self.configuration.append_config_values(spdk_opts)"},{"line_number":51,"context_line":"        self.url \u003d (\u0027http://%(ip)s:%(port)s/\u0027 %"},{"line_number":52,"context_line":"                    {\u0027ip\u0027: self.configuration.spdk_rpc_ip,"},{"line_number":53,"context_line":"                     \u0027port\u0027: self.configuration.spdk_rpc_port})"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_581a7681","line":51,"range":{"start_line":51,"start_character":21,"end_line":51,"end_character":27},"in_reply_to":"3f79a3b5_b75f42dd","updated":"2018-12-13 11:50:40.000000000","message":"We plan to support https for next release. For this release only http.","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"35601fff063072883bf6364fb77deb8b833e4383","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            params \u003d {"},{"line_number":57,"context_line":"                \u0027trtype\u0027: \u0027rdma\u0027,"},{"line_number":58,"context_line":"            }"},{"line_number":59,"context_line":"            self._rpc_call(\u0027nvmf_create_transport\u0027, params)"},{"line_number":60,"context_line":"        except Exception:"},{"line_number":61,"context_line":"            pass"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_b7d8a27d","line":59,"range":{"start_line":59,"start_character":12,"end_line":59,"end_character":59},"updated":"2018-12-11 20:17:00.000000000","message":"If we completely ignore the errors of this call can just skip this call?","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"151feaeb63a408581fe2666ea41fcd845cec8986","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            params \u003d {"},{"line_number":57,"context_line":"                \u0027trtype\u0027: \u0027rdma\u0027,"},{"line_number":58,"context_line":"            }"},{"line_number":59,"context_line":"            self._rpc_call(\u0027nvmf_create_transport\u0027, params)"},{"line_number":60,"context_line":"        except Exception:"},{"line_number":61,"context_line":"            pass"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_6c9f06f7","line":59,"range":{"start_line":59,"start_character":12,"end_line":59,"end_character":59},"in_reply_to":"3f79a3b5_13237fab","updated":"2018-12-19 15:21:20.000000000","message":"Probably a good idea to add a comment in the code explaining that, at least so in the future someone doesn\u0027t come along and remove it thinking it is not necessary.","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"38c3fd231fc5d737383e718970377f8720f8a7c8","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            params \u003d {"},{"line_number":57,"context_line":"                \u0027trtype\u0027: \u0027rdma\u0027,"},{"line_number":58,"context_line":"            }"},{"line_number":59,"context_line":"            self._rpc_call(\u0027nvmf_create_transport\u0027, params)"},{"line_number":60,"context_line":"        except Exception:"},{"line_number":61,"context_line":"            pass"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_20549cf0","line":59,"range":{"start_line":59,"start_character":12,"end_line":59,"end_character":59},"in_reply_to":"3f79a3b5_6c9f06f7","updated":"2018-12-20 10:39:24.000000000","message":"Done","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"34088399258848abcf891950ee80c687c5ef0912","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            params \u003d {"},{"line_number":57,"context_line":"                \u0027trtype\u0027: \u0027rdma\u0027,"},{"line_number":58,"context_line":"            }"},{"line_number":59,"context_line":"            self._rpc_call(\u0027nvmf_create_transport\u0027, params)"},{"line_number":60,"context_line":"        except Exception:"},{"line_number":61,"context_line":"            pass"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_13237fab","line":59,"range":{"start_line":59,"start_character":12,"end_line":59,"end_character":59},"in_reply_to":"3f79a3b5_b7d8a27d","updated":"2018-12-13 11:50:40.000000000","message":"SPDK requires to create transport layer every time application starts. If SPDK Cinder driver will be reinitialized (i.e. when Cinder service is restarted) it will send this call second time which will cause SPDK to return error as rdma transport layer was already initialized. In this case we can disregard that error.","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"35601fff063072883bf6364fb77deb8b833e4383","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                            data\u003djson.dumps(payload),"},{"line_number":73,"context_line":"                            auth\u003d(self.configuration.spdk_rpc_username,"},{"line_number":74,"context_line":"                                  self.configuration.spdk_rpc_password),"},{"line_number":75,"context_line":"                            verify\u003dFalse,"},{"line_number":76,"context_line":"                            timeout\u003d30)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        if not req.ok:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_3709f2da","line":75,"range":{"start_line":75,"start_character":27,"end_line":75,"end_character":41},"updated":"2018-12-11 20:17:00.000000000","message":"Can we use \u0027driver_ssl_cert_verify\u0027 config option here? Anyway, it looks a confusing if it supports only http protocol","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"34088399258848abcf891950ee80c687c5ef0912","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                            data\u003djson.dumps(payload),"},{"line_number":73,"context_line":"                            auth\u003d(self.configuration.spdk_rpc_username,"},{"line_number":74,"context_line":"                                  self.configuration.spdk_rpc_password),"},{"line_number":75,"context_line":"                            verify\u003dFalse,"},{"line_number":76,"context_line":"                            timeout\u003d30)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        if not req.ok:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_332b1b7e","line":75,"range":{"start_line":75,"start_character":27,"end_line":75,"end_character":41},"in_reply_to":"3f79a3b5_3709f2da","updated":"2018-12-13 11:50:40.000000000","message":"That is planned for next release.","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a22771f223417423da8c2ce49685e90762e754be","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                            data\u003djson.dumps(payload),"},{"line_number":76,"context_line":"                            auth\u003d(self.configuration.spdk_rpc_username,"},{"line_number":77,"context_line":"                                  self.configuration.spdk_rpc_password),"},{"line_number":78,"context_line":"                            verify\u003dFalse,"},{"line_number":79,"context_line":"                            timeout\u003d30)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        if not req.ok:"}],"source_content_type":"text/x-python","patch_set":23,"id":"3f79a3b5_ac1df078","line":78,"range":{"start_line":78,"start_character":28,"end_line":78,"end_character":39},"updated":"2018-12-21 14:03:15.000000000","message":"This should use self.configuration.driver_ssl_cert_verify\n\nFor example:\n\nhttp://git.openstack.org/cgit/openstack/cinder/tree/cinder/volume/drivers/solidfire.py#n519","commit_id":"0066fadbcf308b1c6cc7cccfd4b47a9499f9b9c4"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"f2c565a301006b7df56cf656e80946446064f8d5","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                            data\u003djson.dumps(payload),"},{"line_number":76,"context_line":"                            auth\u003d(self.configuration.spdk_rpc_username,"},{"line_number":77,"context_line":"                                  self.configuration.spdk_rpc_password),"},{"line_number":78,"context_line":"                            verify\u003dFalse,"},{"line_number":79,"context_line":"                            timeout\u003d30)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        if not req.ok:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1f769fc5_abab3dd4","line":78,"range":{"start_line":78,"start_character":28,"end_line":78,"end_character":39},"in_reply_to":"3f79a3b5_ac1df078","updated":"2018-12-27 14:39:18.000000000","message":"Done","commit_id":"0066fadbcf308b1c6cc7cccfd4b47a9499f9b9c4"}],"cinder/volume/targets/spdkt.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3e4974cfe2908a27fd14ea4570b69bf35e23088d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        super(SPDKT, self).__init__(*args, **kwargs)"},{"line_number":31,"context_line":"        self.sock \u003d socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)"},{"line_number":32,"context_line":"        os.system(\"sudo chmod 777 /var/tmp/spdk.sock\")"},{"line_number":33,"context_line":"        self.sock.connect(\u0027/var/tmp/spdk.sock\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __del__(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_fd1440a1","line":32,"updated":"2018-06-20 20:44:01.000000000","message":"Please, use cinder.utils.execute to execute external commands","commit_id":"8e31ae13fc5e2ccf24292811a54b53832adeeb83"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"c95b2ef0da6f00b186337b8740fbfc2e682eaf4b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        super(SPDKT, self).__init__(*args, **kwargs)"},{"line_number":31,"context_line":"        self.sock \u003d socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)"},{"line_number":32,"context_line":"        os.system(\"sudo chmod 777 /var/tmp/spdk.sock\")"},{"line_number":33,"context_line":"        self.sock.connect(\u0027/var/tmp/spdk.sock\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __del__(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_516e772c","line":32,"in_reply_to":"5f7c97a3_fd1440a1","updated":"2018-06-21 09:05:36.000000000","message":"Done","commit_id":"8e31ae13fc5e2ccf24292811a54b53832adeeb83"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3e4974cfe2908a27fd14ea4570b69bf35e23088d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        super(SPDKT, self).__init__(*args, **kwargs)"},{"line_number":31,"context_line":"        self.sock \u003d socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)"},{"line_number":32,"context_line":"        os.system(\"sudo chmod 777 /var/tmp/spdk.sock\")"},{"line_number":33,"context_line":"        self.sock.connect(\u0027/var/tmp/spdk.sock\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __del__(self):"},{"line_number":36,"context_line":"        self.sock.close()"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_9d0bcc7b","line":33,"updated":"2018-06-20 20:44:01.000000000","message":"can we make path configurable?","commit_id":"8e31ae13fc5e2ccf24292811a54b53832adeeb83"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"c95b2ef0da6f00b186337b8740fbfc2e682eaf4b","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        super(SPDKT, self).__init__(*args, **kwargs)"},{"line_number":31,"context_line":"        self.sock \u003d socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)"},{"line_number":32,"context_line":"        os.system(\"sudo chmod 777 /var/tmp/spdk.sock\")"},{"line_number":33,"context_line":"        self.sock.connect(\u0027/var/tmp/spdk.sock\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __del__(self):"},{"line_number":36,"context_line":"        self.sock.close()"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_aeb20695","line":33,"in_reply_to":"5f7c97a3_9d0bcc7b","updated":"2018-06-21 09:05:36.000000000","message":"I was thinking about that, but SPDK NVMf target currently do not support creating socket in any other location, so currently it wouldn\u0027t make sense to make it configurable. When the approach will change in SPDK target we can modify this driver to support variable paths.","commit_id":"8e31ae13fc5e2ccf24292811a54b53832adeeb83"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3e4974cfe2908a27fd14ea4570b69bf35e23088d","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        return {\u0027location\u0027: location, \u0027auth\u0027: \u0027\u0027, \u0027provider_id\u0027: nqn}"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def delete_nvmeof_target(self, target_name):"},{"line_number":153,"context_line":"        LOG.debug(\u0027SPDK delete target\u0027)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        nqn \u003d self._get_nqn_with_volume_name(target_name.name)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_1d1fbcb7","line":153,"updated":"2018-06-20 20:44:01.000000000","message":"Please, add target name to the log","commit_id":"8e31ae13fc5e2ccf24292811a54b53832adeeb83"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"c95b2ef0da6f00b186337b8740fbfc2e682eaf4b","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        return {\u0027location\u0027: location, \u0027auth\u0027: \u0027\u0027, \u0027provider_id\u0027: nqn}"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def delete_nvmeof_target(self, target_name):"},{"line_number":153,"context_line":"        LOG.debug(\u0027SPDK delete target\u0027)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        nqn \u003d self._get_nqn_with_volume_name(target_name.name)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_f160e337","line":153,"in_reply_to":"5f7c97a3_1d1fbcb7","updated":"2018-06-21 09:05:36.000000000","message":"Done","commit_id":"8e31ae13fc5e2ccf24292811a54b53832adeeb83"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a49c09a830e146aeeb7c86cbc924a136a6956637","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        super(SPDKT, self).__init__(*args, **kwargs)"},{"line_number":31,"context_line":"        self.sock \u003d socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)"},{"line_number":32,"context_line":"        cmd \u003d [\u0027chmod\u0027, \u0027777\u0027, \u0027/var/tmp/spdk.sock\u0027]"},{"line_number":33,"context_line":"        utils.execute(*cmd, run_as_root\u003dTrue)"},{"line_number":34,"context_line":"        self.sock.connect(\u0027/var/tmp/spdk.sock\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_5d6526ae","line":31,"range":{"start_line":31,"start_character":8,"end_line":31,"end_character":69},"updated":"2018-06-21 12:46:24.000000000","message":"maybe it better to use something like https://tinyrpc.readthedocs.io/en/latest/ \nI see we have in the openstack requirements https://github.com/openstack/requirements/blob/master/lower-constraints.txt","commit_id":"e6b2c27f72c3a40a7b2689e71da466e09160f9fe"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"e56ec16814e936da9bcc97118cda02ad3eab9c09","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        super(SPDKT, self).__init__(*args, **kwargs)"},{"line_number":31,"context_line":"        self.sock \u003d socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)"},{"line_number":32,"context_line":"        cmd \u003d [\u0027chmod\u0027, \u0027777\u0027, \u0027/var/tmp/spdk.sock\u0027]"},{"line_number":33,"context_line":"        utils.execute(*cmd, run_as_root\u003dTrue)"},{"line_number":34,"context_line":"        self.sock.connect(\u0027/var/tmp/spdk.sock\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_b6e1c6fe","line":31,"range":{"start_line":31,"start_character":8,"end_line":31,"end_character":69},"in_reply_to":"5f7c97a3_5d6526ae","updated":"2018-06-25 12:49:14.000000000","message":"I\u0027ll investigate possibility of using it.","commit_id":"e6b2c27f72c3a40a7b2689e71da466e09160f9fe"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a49c09a830e146aeeb7c86cbc924a136a6956637","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        super(SPDKT, self).__init__(*args, **kwargs)"},{"line_number":31,"context_line":"        self.sock \u003d socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)"},{"line_number":32,"context_line":"        cmd \u003d [\u0027chmod\u0027, \u0027777\u0027, \u0027/var/tmp/spdk.sock\u0027]"},{"line_number":33,"context_line":"        utils.execute(*cmd, run_as_root\u003dTrue)"},{"line_number":34,"context_line":"        self.sock.connect(\u0027/var/tmp/spdk.sock\u0027)"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_bd223a53","line":32,"range":{"start_line":32,"start_character":13,"end_line":32,"end_character":52},"updated":"2018-06-21 12:46:24.000000000","message":"why 777 permission. I think it should work with 660 as well.","commit_id":"e6b2c27f72c3a40a7b2689e71da466e09160f9fe"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"e56ec16814e936da9bcc97118cda02ad3eab9c09","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        super(SPDKT, self).__init__(*args, **kwargs)"},{"line_number":31,"context_line":"        self.sock \u003d socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)"},{"line_number":32,"context_line":"        cmd \u003d [\u0027chmod\u0027, \u0027777\u0027, \u0027/var/tmp/spdk.sock\u0027]"},{"line_number":33,"context_line":"        utils.execute(*cmd, run_as_root\u003dTrue)"},{"line_number":34,"context_line":"        self.sock.connect(\u0027/var/tmp/spdk.sock\u0027)"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_36d61629","line":32,"range":{"start_line":32,"start_character":13,"end_line":32,"end_character":52},"in_reply_to":"5f7c97a3_bd223a53","updated":"2018-06-25 12:49:14.000000000","message":"770 because it has already 755 permission on SPDK start. 007 because we need to be able to access it as a non root user from which Cinder process is running.","commit_id":"e6b2c27f72c3a40a7b2689e71da466e09160f9fe"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a49c09a830e146aeeb7c86cbc924a136a6956637","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                \u0027listen_addresses\u0027: \u0027\u0027,"},{"line_number":134,"context_line":"                \u0027namespaces\u0027: \u0027\u0027}"},{"line_number":135,"context_line":"            params[\u0027listen_addresses\u0027] \u003d [{"},{"line_number":136,"context_line":"                \u0027trtype\u0027: \u0027RDMA\u0027,"},{"line_number":137,"context_line":"                \u0027trsvcid\u0027: str(target_port),"},{"line_number":138,"context_line":"                \u0027traddr\u0027: target_ip}]"},{"line_number":139,"context_line":"            params[\u0027namespaces\u0027] \u003d [{"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_1dd7ae25","line":136,"range":{"start_line":136,"start_character":26,"end_line":136,"end_character":32},"updated":"2018-06-21 12:46:24.000000000","message":"you should mapped it to the transport type as we can had other then RDMA","commit_id":"e6b2c27f72c3a40a7b2689e71da466e09160f9fe"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"e56ec16814e936da9bcc97118cda02ad3eab9c09","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                \u0027listen_addresses\u0027: \u0027\u0027,"},{"line_number":134,"context_line":"                \u0027namespaces\u0027: \u0027\u0027}"},{"line_number":135,"context_line":"            params[\u0027listen_addresses\u0027] \u003d [{"},{"line_number":136,"context_line":"                \u0027trtype\u0027: \u0027RDMA\u0027,"},{"line_number":137,"context_line":"                \u0027trsvcid\u0027: str(target_port),"},{"line_number":138,"context_line":"                \u0027traddr\u0027: target_ip}]"},{"line_number":139,"context_line":"            params[\u0027namespaces\u0027] \u003d [{"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_b6cb0648","line":136,"range":{"start_line":136,"start_character":26,"end_line":136,"end_character":32},"in_reply_to":"5f7c97a3_1dd7ae25","updated":"2018-06-25 12:49:14.000000000","message":"Done","commit_id":"e6b2c27f72c3a40a7b2689e71da466e09160f9fe"}],"releasenotes/notes/spdk-nvmf-target-31e4d4dd5e2f2114.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d85b43e0a39ca74ee222ce53560c786b1937cbc9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new target, SPDKT, is added for the SPDK driver over RDMA,"},{"line_number":5,"context_line":"    it allows cinder to use SPDK target in order to create/delete"},{"line_number":6,"context_line":"    subsystems on attaching/detaching an SPDK volume to/from an"},{"line_number":7,"context_line":"    instance."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3f79a3b5_2105be79","line":4,"range":{"start_line":4,"start_character":18,"end_line":4,"end_character":23},"updated":"2018-10-10 14:04:41.000000000","message":"It\u0027s actually called \"spdk-nvmeof\", right?","commit_id":"f66f210afc14a4085751d1fb7a5e1fdea0816030"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"9f5f6c25fced0b3722c99c9a683ca12689332dad","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new target, SPDKT, is added for the SPDK driver over RDMA,"},{"line_number":5,"context_line":"    it allows cinder to use SPDK target in order to create/delete"},{"line_number":6,"context_line":"    subsystems on attaching/detaching an SPDK volume to/from an"},{"line_number":7,"context_line":"    instance."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3f79a3b5_7ff811c0","line":4,"range":{"start_line":4,"start_character":18,"end_line":4,"end_character":23},"in_reply_to":"3f79a3b5_2105be79","updated":"2018-10-11 14:50:01.000000000","message":"Done","commit_id":"f66f210afc14a4085751d1fb7a5e1fdea0816030"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"151feaeb63a408581fe2666ea41fcd845cec8986","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new target, spdk-nvmeof, is added for the SPDK driver over RDMA,"},{"line_number":5,"context_line":"    it allows cinder to use SPDK target in order to create/delete"},{"line_number":6,"context_line":"    subsystems on attaching/detaching an SPDK volume to/from an"},{"line_number":7,"context_line":"    instance."}],"source_content_type":"text/x-yaml","patch_set":22,"id":"3f79a3b5_472543ac","line":5,"range":{"start_line":4,"start_character":65,"end_line":5,"end_character":6},"updated":"2018-12-19 15:21:20.000000000","message":"RDMA. It","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"},{"author":{"_account_id":28050,"name":"Maciej Szwed","email":"maciej.szwed@intel.com","username":"maciejszwed"},"change_message_id":"38c3fd231fc5d737383e718970377f8720f8a7c8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new target, spdk-nvmeof, is added for the SPDK driver over RDMA,"},{"line_number":5,"context_line":"    it allows cinder to use SPDK target in order to create/delete"},{"line_number":6,"context_line":"    subsystems on attaching/detaching an SPDK volume to/from an"},{"line_number":7,"context_line":"    instance."}],"source_content_type":"text/x-yaml","patch_set":22,"id":"3f79a3b5_005720f8","line":5,"range":{"start_line":4,"start_character":65,"end_line":5,"end_character":6},"in_reply_to":"3f79a3b5_472543ac","updated":"2018-12-20 10:39:24.000000000","message":"Done","commit_id":"7b0213e37fc54367d4e6efebbe6fb63c78d9ac1c"}]}
