)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"1153862356a680efdb477d8caa51c0d155007b26","unresolved":false,"context_lines":[{"line_number":7,"context_line":"NexentaStor 5 iSCSI backend driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch implements a driver for NexentaStor 5 iSCSI backend."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I16af54cf1bb08c5742adb0a87f24edad1a097de7"},{"line_number":12,"context_line":"Implements: blueprint nexentastor-5-cinder-iscsi-driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"da6ed579_c57d69e8","line":10,"updated":"2016-01-13 15:53:03.000000000","message":"Add a DocImpact tag here since we are adding config options.","commit_id":"166318404a1d0fe788f264b1bdcec8526ced1db1"}],"cinder/volume/drivers/nexenta/ns5/__init__.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"8d5b13a790ef3a5e8d657e22db1d5e1d9834cf77","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":".. automodule:: nexenta"},{"line_number":20,"context_line":".. moduleauthor:: Yuriy Taraday \u003cyorik.sar@gmail.com\u003e"},{"line_number":21,"context_line":".. moduleauthor:: Mikhail Khodos \u003cmikhail.khodos@nexenta.com\u003e"},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"da6ed579_6b6d9597","line":21,"updated":"2016-01-13 02:17:44.000000000","message":"Remove lines 20-21.\n\nAs you\u0027ll see in the pep8 output, there\u0027s now a hacking rule about these.","commit_id":"c7958ffc6166e9b62c5b429705d740c25a247730"}],"cinder/volume/drivers/nexenta/ns5/iscsi.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"1bae0557201bca812c5c1b0e7fed1e5f9254f9b9","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        :param snapshot: snapshot reference"},{"line_number":211,"context_line":"        \"\"\""},{"line_number":212,"context_line":"        snapshot_vol \u003d self._get_snapshot_volume(snapshot)"},{"line_number":213,"context_line":"        LOG.info(_LI(\u0027Creating snapshot %(snap)s of volume %(vol)s\u0027) % {"},{"line_number":214,"context_line":"            \u0027snap\u0027: snapshot[\u0027name\u0027],"},{"line_number":215,"context_line":"            \u0027vol\u0027: snapshot_vol[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_44ac6e35","line":212,"updated":"2015-06-11 13:54:46.000000000","message":"Instead of making a db call to get the volume name, you can use snapshot.volume_name, since snapshot is an oslo_versionedobject here.","commit_id":"f11a2461af936d551cf1f235e93ea9f24989be8f"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"1bae0557201bca812c5c1b0e7fed1e5f9254f9b9","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        \"\"\""},{"line_number":232,"context_line":"        LOG.info(_LI(\u0027Deleting snapshot: %s\u0027) % snapshot[\u0027name\u0027])"},{"line_number":233,"context_line":"        snapshot_vol \u003d self._get_snapshot_volume(snapshot)"},{"line_number":234,"context_line":"        zvol_name \u003d self._get_zvol_name(snapshot_vol[\u0027name\u0027])"},{"line_number":235,"context_line":"        pool, group, volume \u003d zvol_name.split(\u0027/\u0027)"},{"line_number":236,"context_line":"        url \u003d (\u0027storage/pools/%(pool)s/datasetGroups/%(group)s/\u0027"},{"line_number":237,"context_line":"               \u0027volumes/%(volume)s/snapshots/%(snapshot)s\u0027) % {"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_e448fa8c","line":234,"updated":"2015-06-11 13:54:46.000000000","message":"Ditto","commit_id":"f11a2461af936d551cf1f235e93ea9f24989be8f"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"1bae0557201bca812c5c1b0e7fed1e5f9254f9b9","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        :param snapshot: reference of source snapshot"},{"line_number":256,"context_line":"        \"\"\""},{"line_number":257,"context_line":"        LOG.info(_LI(\u0027Creating volume from snapshot: %s\u0027) % snapshot[\u0027name\u0027])"},{"line_number":258,"context_line":"        snapshot_vol \u003d self._get_snapshot_volume(snapshot)"},{"line_number":259,"context_line":"        zvol_name \u003d self._get_zvol_name(snapshot_vol[\u0027name\u0027])"},{"line_number":260,"context_line":"        pool, group, snapshot_vol \u003d zvol_name.split(\u0027/\u0027)"},{"line_number":261,"context_line":"        url \u003d (\u0027storage/pools/%(pool)s/datasetGroups/%(group)s/\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_c44dfe9a","line":258,"updated":"2015-06-11 13:54:46.000000000","message":"Ditto","commit_id":"f11a2461af936d551cf1f235e93ea9f24989be8f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"4e949ec444b7d67e85f57a449399e71f7305b2cb","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.rrmgr_compression \u003d self.configuration.nexenta_rrmgr_compression"},{"line_number":71,"context_line":"        self.rrmgr_tcp_buf_size \u003d self.configuration.nexenta_rrmgr_tcp_buf_size"},{"line_number":72,"context_line":"        self.rrmgr_connections \u003d self.configuration.nexenta_rrmgr_connections"},{"line_number":73,"context_line":"        self.iscsi_target_portal_port \u003d \\"},{"line_number":74,"context_line":"            self.configuration.nexenta_iscsi_target_portal_port"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_074cf66e","line":73,"updated":"2015-11-06 00:33:24.000000000","message":"Parens are preferred for line continuation (http://docs.openstack.org/developer/hacking/#general)","commit_id":"a0e2a66beb199e55bbeb7576765dfc12c42ab140"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"4e949ec444b7d67e85f57a449399e71f7305b2cb","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            return self.nef(url)[\u0027data\u0027][0][\u0027name\u0027]"},{"line_number":138,"context_line":"        else:"},{"line_number":139,"context_line":"            return False"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def _get_target_group_name(self, volume_name):"},{"line_number":142,"context_line":"        \"\"\"Return Nexenta iSCSI target group name for volume.\"\"\""},{"line_number":143,"context_line":"        return \u0027cinder_%s\u0027 % volume_name"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_c737ceae","line":140,"updated":"2015-11-06 00:33:24.000000000","message":"Optionally this could be @staticmethod too. Just since you set it for _get_clone_snapshot_name - didn\u0027t want this one to feel left out :)","commit_id":"a0e2a66beb199e55bbeb7576765dfc12c42ab140"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"4e949ec444b7d67e85f57a449399e71f7305b2cb","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            \u0027pool\u0027: pool,"},{"line_number":202,"context_line":"            \u0027group\u0027: group,"},{"line_number":203,"context_line":"            \u0027name\u0027: name"},{"line_number":204,"context_line":"        }"},{"line_number":205,"context_line":"        self.nef(url, {\u0027volumeSize\u0027: new_size * units.Gi}, method\u003d\u0027PUT\u0027)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def create_snapshot(self, snapshot):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_47e8bee2","line":204,"updated":"2015-11-06 00:33:24.000000000","message":"If new_size is supposed to already be in GB (from the docstring) why are we multiplying by units.Gi?","commit_id":"a0e2a66beb199e55bbeb7576765dfc12c42ab140"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"4e949ec444b7d67e85f57a449399e71f7305b2cb","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        try:"},{"line_number":244,"context_line":"            self.nef(url, method\u003d\u0027DELETE\u0027)"},{"line_number":245,"context_line":"        except nexenta.NexentaException as exc:"},{"line_number":246,"context_line":"            if \u0027EBUSY\u0027 is exc:"},{"line_number":247,"context_line":"                LOG.warning(_LW("},{"line_number":248,"context_line":"                    \u0027Could not delete snapshot %s - it has dependencies\u0027) %"},{"line_number":249,"context_line":"                    snapshot[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_08f93bc7","line":246,"updated":"2015-11-06 00:33:24.000000000","message":"Should at least log a warning even if it\u0027s not this exact exception?","commit_id":"a0e2a66beb199e55bbeb7576765dfc12c42ab140"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"4e949ec444b7d67e85f57a449399e71f7305b2cb","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        self.create_snapshot(snapshot)"},{"line_number":286,"context_line":"        try:"},{"line_number":287,"context_line":"            self.create_volume_from_snapshot(volume, snapshot)"},{"line_number":288,"context_line":"        except nexenta.NexentaException:"},{"line_number":289,"context_line":"            LOG.error(_LE(\u0027Volume creation failed, deleting created snapshot \u0027"},{"line_number":290,"context_line":"                          \u0027%(volume_name)s@%(name)s\u0027), snapshot)"},{"line_number":291,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_e84157aa","line":288,"updated":"2015-11-06 00:33:24.000000000","message":"Don\u0027t think this will work - we\u0027re passing a single un-named string to be formatted into two named slots.  A unit test for this negative path would also be nice.","commit_id":"a0e2a66beb199e55bbeb7576765dfc12c42ab140"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"4e949ec444b7d67e85f57a449399e71f7305b2cb","unresolved":false,"context_lines":[{"line_number":290,"context_line":"                          \u0027%(volume_name)s@%(name)s\u0027), snapshot)"},{"line_number":291,"context_line":"            try:"},{"line_number":292,"context_line":"                self.delete_snapshot(snapshot)"},{"line_number":293,"context_line":"            except (nexenta.NexentaException, exception.SnapshotIsBusy):"},{"line_number":294,"context_line":"                LOG.warning(_LW(\u0027Failed to delete zfs snapshot \u0027"},{"line_number":295,"context_line":"                                \u0027%(volume_name)s@%(name)s\u0027), snapshot)"},{"line_number":296,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_8bd7654a","line":293,"updated":"2015-11-06 00:33:24.000000000","message":"^ Same as above","commit_id":"a0e2a66beb199e55bbeb7576765dfc12c42ab140"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"4e949ec444b7d67e85f57a449399e71f7305b2cb","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        resp \u003d self.nef(url).get(\u0027data\u0027)"},{"line_number":310,"context_line":"        if not resp:"},{"line_number":311,"context_line":"            return False"},{"line_number":312,"context_line":"        targets \u003d []"},{"line_number":313,"context_line":"        for target in resp:"},{"line_number":314,"context_line":"            targets.append(target[\u0027name\u0027])"},{"line_number":315,"context_line":"        return target in targets"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_cb67adb5","line":312,"updated":"2015-11-06 00:33:24.000000000","message":"Won\u0027t target in the for loop overwrite the value of target that gets passed in as argument?","commit_id":"a0e2a66beb199e55bbeb7576765dfc12c42ab140"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"4e949ec444b7d67e85f57a449399e71f7305b2cb","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        :param target_group: target group"},{"line_number":321,"context_line":"        :return: True if target group exist, else False"},{"line_number":322,"context_line":"        \"\"\""},{"line_number":323,"context_line":"        url \u003d \u0027san/targetgroups?name\u003d%s\u0027 % target_group"},{"line_number":324,"context_line":"        if self.nef(url).get(\u0027data\u0027):"},{"line_number":325,"context_line":"            return True"},{"line_number":326,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_ebe951e7","line":323,"updated":"2015-11-06 00:33:24.000000000","message":"Optionally could just have \"return bool(self.nef(url).get(\u0027data\u0027))\"","commit_id":"a0e2a66beb199e55bbeb7576765dfc12c42ab140"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"4e949ec444b7d67e85f57a449399e71f7305b2cb","unresolved":false,"context_lines":[{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    def _lu_exists(self, volume_name):"},{"line_number":330,"context_line":"        \"\"\"Check if LU exists on appliance."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        :param zvol_name: Zvol name"},{"line_number":333,"context_line":"        :raises: NexentaException if zvol not exists"},{"line_number":334,"context_line":"        :return: True if LU exists, else False"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_8bc1a556","line":331,"updated":"2015-11-06 00:33:24.000000000","message":"This isn\u0027t the param name","commit_id":"a0e2a66beb199e55bbeb7576765dfc12c42ab140"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"4e949ec444b7d67e85f57a449399e71f7305b2cb","unresolved":false,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def _get_lun(self, volume_name):"},{"line_number":343,"context_line":"        \"\"\"Get lu mapping number for Zvol."},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"        :param zvol_name: Zvol name"},{"line_number":346,"context_line":"        :raises: LookupError if Zvol not exist or not mapped to LU"},{"line_number":347,"context_line":"        :return: LUN"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_ebd07121","line":344,"updated":"2015-11-06 00:33:24.000000000","message":"Not param name","commit_id":"a0e2a66beb199e55bbeb7576765dfc12c42ab140"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"4e949ec444b7d67e85f57a449399e71f7305b2cb","unresolved":false,"context_lines":[{"line_number":363,"context_line":"            \u0027name\u0027: self._get_target_name(volume[\u0027name\u0027]),"},{"line_number":364,"context_line":"            \u0027lun\u0027: self._get_lun(volume[\u0027name\u0027])"},{"line_number":365,"context_line":"        }"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    def _do_export(self, _ctx, volume, ensure\u003dFalse):"},{"line_number":368,"context_line":"        \"\"\"Do all steps to get zvol exported at separate target."},{"line_number":369,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_cb71ed45","line":366,"updated":"2015-11-06 00:33:24.000000000","message":"ensure is not used","commit_id":"a0e2a66beb199e55bbeb7576765dfc12c42ab140"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"8d5b13a790ef3a5e8d657e22db1d5e1d9834cf77","unresolved":false,"context_lines":[{"line_number":19,"context_line":".. automodule:: nexenta.volume"},{"line_number":20,"context_line":".. moduleauthor:: Alexey Khodos \u003calexey.khodos@nexenta.com\u003e"},{"line_number":21,"context_line":".. moduleauthor:: Mikhail Khodos \u003cmikhail.khodos@nexenta.com\u003e"},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from oslo_log import log as logging"},{"line_number":25,"context_line":"from oslo_utils import units"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6ed579_0b13b90e","line":22,"updated":"2016-01-13 02:17:44.000000000","message":"Remove lines 20-21.  As you\u0027ll see in the pep8 output, there\u0027s now a hacking rule about these.","commit_id":"c7958ffc6166e9b62c5b429705d740c25a247730"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0e3139ac957025b30210bd2c475d70f0c2824a49","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.dataset_deduplication \u003d self.configuration.nexenta_dataset_dedup"},{"line_number":71,"context_line":"        self.dataset_description \u003d ("},{"line_number":72,"context_line":"            self.configuration.nexenta_dataset_description)"},{"line_number":73,"context_line":"        self.iscsi_target_portal_port \u003d \\"},{"line_number":74,"context_line":"            self.configuration.nexenta_iscsi_target_portal_port"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_23ce13b5","line":73,"range":{"start_line":73,"start_character":40,"end_line":73,"end_character":41},"updated":"2016-01-16 16:03:32.000000000","message":"Please use () instead of \\ to span multiple lines.","commit_id":"283de4bc578020f10804a075f03a1fe461ff65d4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0e3139ac957025b30210bd2c475d70f0c2824a49","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        try:"},{"line_number":100,"context_line":"            self.nef(url, data)"},{"line_number":101,"context_line":"        except exception.NexentaException as e:"},{"line_number":102,"context_line":"            LOG.debug(e)"},{"line_number":103,"context_line":"        url \u003d \u0027services/iscsit/enable\u0027"},{"line_number":104,"context_line":"        self.nef.post(url)"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_633bab9d","line":102,"updated":"2016-01-16 16:03:32.000000000","message":"Should this raise some sort of error if do_setup fails?","commit_id":"283de4bc578020f10804a075f03a1fe461ff65d4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0e3139ac957025b30210bd2c475d70f0c2824a49","unresolved":false,"context_lines":[{"line_number":395,"context_line":"            targetgroup_name, volume_path.replace(\u0027/\u0027, \u0027%2F\u0027))"},{"line_number":396,"context_line":"        data \u003d self.nef(url).get(\u0027data\u0027)"},{"line_number":397,"context_line":"        if not data:"},{"line_number":398,"context_line":"            raise LookupError(_(\"LU does not exist for volume: %s\"),"},{"line_number":399,"context_line":"                              volume[\u0027name\u0027])"},{"line_number":400,"context_line":"        else:"},{"line_number":401,"context_line":"            return data[0][\u0027guid\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_6362cbaf","line":398,"range":{"start_line":398,"start_character":67,"end_line":398,"end_character":68},"updated":"2016-01-16 16:03:32.000000000","message":"Change , to % to format the string.","commit_id":"283de4bc578020f10804a075f03a1fe461ff65d4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0e3139ac957025b30210bd2c475d70f0c2824a49","unresolved":false,"context_lines":[{"line_number":410,"context_line":"            targetgroup_name, lun_id)"},{"line_number":411,"context_line":"        data \u003d self.nef(url).get(\u0027data\u0027)"},{"line_number":412,"context_line":"        if not data:"},{"line_number":413,"context_line":"            raise LookupError(_(\"No views found for LUN: %s\"), lun_id)"},{"line_number":414,"context_line":"        return data[0][\u0027lunNumber\u0027]"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    def _do_export(self, _ctx, volume):"}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_03574fcb","line":413,"range":{"start_line":413,"start_character":61,"end_line":413,"end_character":62},"updated":"2016-01-16 16:03:32.000000000","message":"Same.","commit_id":"283de4bc578020f10804a075f03a1fe461ff65d4"}],"cinder/volume/drivers/nexenta/ns5/jsonrpc.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0e3139ac957025b30210bd2c475d70f0c2824a49","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import requests"},{"line_number":23,"context_line":"import time"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cinder import exception"},{"line_number":26,"context_line":"from oslo_log import log as logging"},{"line_number":27,"context_line":"from oslo_serialization import jsonutils"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_430467c5","line":25,"updated":"2016-01-16 16:03:32.000000000","message":"Nit: time is a standard lib, requests and oslo_* are third party, and cinder local, so import order should be:\n\nimport time\n\nimport oslo_log...\nimport oslo_serialization..\nimport requests\n\nimport cinder...","commit_id":"283de4bc578020f10804a075f03a1fe461ff65d4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0e3139ac957025b30210bd2c475d70f0c2824a49","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                method \u003d name"},{"line_number":52,"context_line":"            else:"},{"line_number":53,"context_line":"                raise exception.VolumeDriverException("},{"line_number":54,"context_line":"                    \u0027Wrong resource call syntax\u0027)"},{"line_number":55,"context_line":"            return NexentaJSONProxy("},{"line_number":56,"context_line":"                self.scheme, self.host, self.port,"},{"line_number":57,"context_line":"                self.user, self.password, self.auto, method)"}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_2313730f","line":54,"updated":"2016-01-16 16:03:32.000000000","message":"Needs _() translation marker.","commit_id":"283de4bc578020f10804a075f03a1fe461ff65d4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0e3139ac957025b30210bd2c475d70f0c2824a49","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            data \u003d jsonutils.dumps(data)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        LOG.debug((\u0027Sending JSON to url: %(path)s, data: %(data)s,\u0027"},{"line_number":79,"context_line":"                   \u0027 method: %(method)s\u0027) % {"},{"line_number":80,"context_line":"            \u0027path\u0027: path,"},{"line_number":81,"context_line":"            \u0027data\u0027: data,"},{"line_number":82,"context_line":"            \u0027method\u0027: method"}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_e3f55bcb","line":79,"updated":"2016-01-16 16:03:32.000000000","message":"() around the string isn\u0027t necessary. Change % to , to pass values in to logger.","commit_id":"283de4bc578020f10804a075f03a1fe461ff65d4"}]}
