)]}'
{"cinder/exception.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"da61aba7259366debf22b69ab0f7a88c1f01426c","unresolved":false,"context_lines":[{"line_number":925,"context_line":""},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"class DotHillNotTargetPortal(CinderException):"},{"line_number":928,"context_line":"    message \u003d _(\"No active iscsi portals with supplied iscsi ips\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_8c1e7d5d","line":928,"updated":"2015-06-09 13:34:16.000000000","message":"s/iscsi/iSCSI/\ns/iscsi ips/iSCSI IPs/","commit_id":"edf4fd6995f42c20b6936a14bfdf06476dd0352c"}],"cinder/tests/test_dothill.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"da61aba7259366debf22b69ab0f7a88c1f01426c","unresolved":false,"context_lines":[{"line_number":496,"context_line":"    @mock.patch.object(dothill.DotHillClient, \u0027modify_volume_name\u0027)"},{"line_number":497,"context_line":"    def test_retype(self, mock_modify, mock_delete, mock_copy):"},{"line_number":498,"context_line":"        mock_copy.side_effect \u003d [exception.DotHillRequestError, None]"},{"line_number":499,"context_line":"        mock_modify.side_effect \u003d None"},{"line_number":500,"context_line":"        mock_delete.side_effect \u003d None"},{"line_number":501,"context_line":"        self.assertRaises(exception.Invalid, self.common.migrate_volume,"},{"line_number":502,"context_line":"                          test_retype_volume, test_host)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_6cf6a1fa","line":499,"updated":"2015-06-09 13:34:16.000000000","message":"The default side_effect for any mock object is None, so this is uneccessary.","commit_id":"edf4fd6995f42c20b6936a14bfdf06476dd0352c"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"da61aba7259366debf22b69ab0f7a88c1f01426c","unresolved":false,"context_lines":[{"line_number":510,"context_line":"    @mock.patch.object(dothill.DotHillClient, \u0027modify_volume_name\u0027)"},{"line_number":511,"context_line":"    def test_manage_existing(self, mock_modify, mock_volume):"},{"line_number":512,"context_line":"        existing_ref \u003d {\u0027source-name\u0027: \u0027xxxx\u0027}"},{"line_number":513,"context_line":"        mock_volume.side_effect \u003d None"},{"line_number":514,"context_line":"        mock_modify.side_effect \u003d [exception.DotHillRequestError, None]"},{"line_number":515,"context_line":"        self.assertRaises(exception.Invalid, self.common.manage_existing,"},{"line_number":516,"context_line":"                          test_volume, existing_ref)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_4ce08529","line":513,"updated":"2015-06-09 13:34:16.000000000","message":"Ditto","commit_id":"edf4fd6995f42c20b6936a14bfdf06476dd0352c"}],"cinder/volume/drivers/dothill/dothill_client.py":[{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"9d47bbc733931276183b6582fba5b8bcbfcca6a3","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from hashlib import md5"},{"line_number":18,"context_line":"import math"},{"line_number":19,"context_line":"import time"},{"line_number":20,"context_line":"import urllib2"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from lxml import etree"},{"line_number":23,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_3a758e97","line":20,"updated":"2015-06-15 23:34:37.000000000","message":"Not sure why you\u0027re still using urllib2, this has come up in previous reviews, you should switch to requests.  It\u0027s actually a fairly simple replacement.","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from hashlib import md5"},{"line_number":18,"context_line":"import math"},{"line_number":19,"context_line":"import time"},{"line_number":20,"context_line":"import urllib2"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from lxml import etree"},{"line_number":23,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_8b948ae2","line":20,"in_reply_to":"fa32b979_3a758e97","updated":"2015-06-16 01:16:35.000000000","message":"we will address this with https://bugs.launchpad.net/cinder/+bug/1461718\nas discussed in previous merge of dothill drivers.","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":248,"context_line":"                progress \u003d False"},{"line_number":249,"context_line":"                if status:"},{"line_number":250,"context_line":"                    progress \u003d True"},{"line_number":251,"context_line":"                    LOG.debug(\"Volume copy is in progress %s\", status)"},{"line_number":252,"context_line":"                if not progress:"},{"line_number":253,"context_line":"                    LOG.debug(\"Volume copy completed %s\", status)"},{"line_number":254,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_ce470b1c","line":251,"updated":"2015-06-15 22:52:49.000000000","message":"Suggest \"Volume copy is in progress: %s\"","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":248,"context_line":"                progress \u003d False"},{"line_number":249,"context_line":"                if status:"},{"line_number":250,"context_line":"                    progress \u003d True"},{"line_number":251,"context_line":"                    LOG.debug(\"Volume copy is in progress %s\", status)"},{"line_number":252,"context_line":"                if not progress:"},{"line_number":253,"context_line":"                    LOG.debug(\"Volume copy completed %s\", status)"},{"line_number":254,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_267253ae","line":251,"in_reply_to":"fa32b979_ce470b1c","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":250,"context_line":"                    progress \u003d True"},{"line_number":251,"context_line":"                    LOG.debug(\"Volume copy is in progress %s\", status)"},{"line_number":252,"context_line":"                if not progress:"},{"line_number":253,"context_line":"                    LOG.debug(\"Volume copy completed %s\", status)"},{"line_number":254,"context_line":"                    break"},{"line_number":255,"context_line":"            else:"},{"line_number":256,"context_line":"                if count \u003e\u003d 5:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_6e56ffd3","line":253,"updated":"2015-06-15 22:52:49.000000000","message":"Same here","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":250,"context_line":"                    progress \u003d True"},{"line_number":251,"context_line":"                    LOG.debug(\"Volume copy is in progress %s\", status)"},{"line_number":252,"context_line":"                if not progress:"},{"line_number":253,"context_line":"                    LOG.debug(\"Volume copy completed %s\", status)"},{"line_number":254,"context_line":"                    break"},{"line_number":255,"context_line":"            else:"},{"line_number":256,"context_line":"                if count \u003e\u003d 5:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_066f0fc6","line":253,"in_reply_to":"fa32b979_6e56ffd3","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                    break"},{"line_number":255,"context_line":"            else:"},{"line_number":256,"context_line":"                if count \u003e\u003d 5:"},{"line_number":257,"context_line":"                    LOG.debug(\"Error in copying volume %s\", src_name)"},{"line_number":258,"context_line":"                    raise exception.DotHillRequestError"},{"line_number":259,"context_line":"                    break"},{"line_number":260,"context_line":"                time.sleep(1)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_6e6d9f97","line":257,"updated":"2015-06-15 22:52:49.000000000","message":"This should be LOG.error()","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                    break"},{"line_number":255,"context_line":"            else:"},{"line_number":256,"context_line":"                if count \u003e\u003d 5:"},{"line_number":257,"context_line":"                    LOG.debug(\"Error in copying volume %s\", src_name)"},{"line_number":258,"context_line":"                    raise exception.DotHillRequestError"},{"line_number":259,"context_line":"                    break"},{"line_number":260,"context_line":"                time.sleep(1)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_e6646be6","line":257,"in_reply_to":"fa32b979_6e6d9f97","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"}],"cinder/volume/drivers/dothill/dothill_common.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"da61aba7259366debf22b69ab0f7a88c1f01426c","unresolved":false,"context_lines":[{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":384,"context_line":"        LOG.debug(\"Creating snapshot from %(volume_id)s (%(snap_id)s)\","},{"line_number":385,"context_line":"                  {\u0027volume_id\u0027: snapshot[\u0027volume_id\u0027],"},{"line_number":386,"context_line":"                   \u0027snap_id\u0027: snapshot[\u0027id\u0027], })"},{"line_number":387,"context_line":"        if snapshot[\u0027volume\u0027][\u0027name_id\u0027]:"},{"line_number":388,"context_line":"            vol_name \u003d self._get_vol_name(snapshot[\u0027volume\u0027][\u0027name_id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_ccd5951c","line":385,"updated":"2015-06-09 13:34:16.000000000","message":"snapshot passed in is a oslo_versionedobject.  Please use the dot notation, i.e. snapshot.volume_id, snapshot.id, when accessing a snapshot attribute.","commit_id":"edf4fd6995f42c20b6936a14bfdf06476dd0352c"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"285cc48e77c27c7827bf053decd5c3b3c4a22804","unresolved":false,"context_lines":[{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":384,"context_line":"        LOG.debug(\"Creating snapshot from %(volume_id)s (%(snap_id)s)\","},{"line_number":385,"context_line":"                  {\u0027volume_id\u0027: snapshot[\u0027volume_id\u0027],"},{"line_number":386,"context_line":"                   \u0027snap_id\u0027: snapshot[\u0027id\u0027], })"},{"line_number":387,"context_line":"        if snapshot[\u0027volume\u0027][\u0027name_id\u0027]:"},{"line_number":388,"context_line":"            vol_name \u003d self._get_vol_name(snapshot[\u0027volume\u0027][\u0027name_id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_a27ecb67","line":385,"in_reply_to":"3afb71cf_3849f5b7","updated":"2015-06-09 20:49:31.000000000","message":"That\u0027s because the unit tests have to be updated to pass in objects.","commit_id":"edf4fd6995f42c20b6936a14bfdf06476dd0352c"},{"author":{"_account_id":16121,"name":"Nikesh","email":"Nikesh.Mahalaka@dothill.com","username":"nikeshm"},"change_message_id":"9b206c8312299a8317f6a7e768b660d3c947cfbc","unresolved":false,"context_lines":[{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":384,"context_line":"        LOG.debug(\"Creating snapshot from %(volume_id)s (%(snap_id)s)\","},{"line_number":385,"context_line":"                  {\u0027volume_id\u0027: snapshot[\u0027volume_id\u0027],"},{"line_number":386,"context_line":"                   \u0027snap_id\u0027: snapshot[\u0027id\u0027], })"},{"line_number":387,"context_line":"        if snapshot[\u0027volume\u0027][\u0027name_id\u0027]:"},{"line_number":388,"context_line":"            vol_name \u003d self._get_vol_name(snapshot[\u0027volume\u0027][\u0027name_id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_3849f5b7","line":385,"in_reply_to":"3afb71cf_ccd5951c","updated":"2015-06-09 17:48:25.000000000","message":"On changing this,i am getting errors on running unit-tests:\nAttributeError: \u0027dict\u0027 object has no attribute \u0027id\u0027\nAttributeError: \u0027dict\u0027 object has no attribute \u0027volume_id\u0027","commit_id":"edf4fd6995f42c20b6936a14bfdf06476dd0352c"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"da61aba7259366debf22b69ab0f7a88c1f01426c","unresolved":false,"context_lines":[{"line_number":401,"context_line":"            self.client_logout()"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":404,"context_line":"        snap_name \u003d self._get_snap_name(snapshot[\u0027id\u0027])"},{"line_number":405,"context_line":"        LOG.debug(\"Deleting snapshot (%s)\", snapshot[\u0027id\u0027])"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"        self.client_login()"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_6ce0e1fa","line":404,"updated":"2015-06-09 13:34:16.000000000","message":"Ditto","commit_id":"edf4fd6995f42c20b6936a14bfdf06476dd0352c"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"               help\u003d\"linear(for VDisk) or realstor(for Pool)\"),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027dothill_wbi_protocol\u0027,"},{"line_number":41,"context_line":"               choices\u003d[\u0027http\u0027, \u0027https\u0027],"},{"line_number":42,"context_line":"               help\u003d\"DotHill web interface protocol\"),"},{"line_number":43,"context_line":"]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"iscsi_opt \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_8effc3a9","line":42,"updated":"2015-06-15 22:52:49.000000000","message":"Suggest \u0027.\u0027 at EOL here.","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":39,"context_line":"               help\u003d\"linear(for VDisk) or realstor(for Pool)\"),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027dothill_wbi_protocol\u0027,"},{"line_number":41,"context_line":"               choices\u003d[\u0027http\u0027, \u0027https\u0027],"},{"line_number":42,"context_line":"               help\u003d\"DotHill web interface protocol\"),"},{"line_number":43,"context_line":"]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"iscsi_opt \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_0b271a65","line":42,"in_reply_to":"fa32b979_8effc3a9","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"iscsi_opt \u003d ["},{"line_number":46,"context_line":"    cfg.ListOpt(\u0027dothill_iscsi_ips\u0027,"},{"line_number":47,"context_line":"                default\u003d[],"},{"line_number":48,"context_line":"                help\u003d\"List of target iSCSI addresses\"),"},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_6ebfdffb","line":48,"updated":"2015-06-15 22:52:49.000000000","message":"What is the format for this list?  I think that should be specified here in the help text.  Suggest comma separated list.","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":45,"context_line":"iscsi_opt \u003d ["},{"line_number":46,"context_line":"    cfg.ListOpt(\u0027dothill_iscsi_ips\u0027,"},{"line_number":47,"context_line":"                default\u003d[],"},{"line_number":48,"context_line":"                help\u003d\"List of target iSCSI addresses\"),"},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_2b2a1e2d","line":48,"in_reply_to":"fa32b979_6ebfdffb","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"class DotHillCommon(object):"},{"line_number":57,"context_line":"    VERSION \u003d \"0.1\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    stats \u003d {}"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_8ec4a35f","line":57,"updated":"2015-06-15 22:52:49.000000000","message":"We have a version but no documentation on what the different versions are?  I think we should add that somewhere.","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"class DotHillCommon(object):"},{"line_number":57,"context_line":"    VERSION \u003d \"0.1\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    stats \u003d {}"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_eb1c3615","line":57,"in_reply_to":"fa32b979_8ec4a35f","updated":"2015-06-16 01:16:35.000000000","message":"Its already documented in dothill_iscsi.py and dothill_fc.py","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        # Use base64 to encode the volume name (UUID is too long for DotHill)"},{"line_number":165,"context_line":"        volume_name \u003d self._get_vol_name(volume[\u0027id\u0027])"},{"line_number":166,"context_line":"        volume_size \u003d \"%dGB\" % volume[\u0027size\u0027]"},{"line_number":167,"context_line":"        LOG.debug(\"Create Volume %(display_name)s %(name)s %(id)s %(size)s\","},{"line_number":168,"context_line":"                  {\u0027display_name\u0027: volume[\u0027display_name\u0027],"},{"line_number":169,"context_line":"                   \u0027name\u0027: volume[\u0027name\u0027],"},{"line_number":170,"context_line":"                   \u0027id\u0027: volume_name,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_aedc07e5","line":167,"updated":"2015-06-15 22:52:49.000000000","message":"Suggest a separator between the fields or to documented what it is that is being printed like display_name: %(display_name)s name: %(name)s etc.","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        # Use base64 to encode the volume name (UUID is too long for DotHill)"},{"line_number":165,"context_line":"        volume_name \u003d self._get_vol_name(volume[\u0027id\u0027])"},{"line_number":166,"context_line":"        volume_size \u003d \"%dGB\" % volume[\u0027size\u0027]"},{"line_number":167,"context_line":"        LOG.debug(\"Create Volume %(display_name)s %(name)s %(id)s %(size)s\","},{"line_number":168,"context_line":"                  {\u0027display_name\u0027: volume[\u0027display_name\u0027],"},{"line_number":169,"context_line":"                   \u0027name\u0027: volume[\u0027name\u0027],"},{"line_number":170,"context_line":"                   \u0027id\u0027: volume_name,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_0bb5daec","line":167,"in_reply_to":"fa32b979_aedc07e5","updated":"2015-06-16 01:16:35.000000000","message":"LOG.debug(\"Create Volume having display_name: %(display_name)s \"\n          \"name: %(name)s id: %(id)s size: %(size)s\",\n          {\u0027display_name\u0027: volume[\u0027display_name\u0027],\n           \u0027name\u0027: volume[\u0027name\u0027],\n           \u0027id\u0027: volume_name,\n           \u0027size\u0027: volume_size, })\n\nis it ok","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                                 self.backend_type)"},{"line_number":177,"context_line":"            return metadata"},{"line_number":178,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":179,"context_line":"            LOG.exception(_LE(\"Creation of volume %s failed\"), volume[\u0027id\u0027])"},{"line_number":180,"context_line":"            raise exception.Invalid(ex)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_6ee6ffb5","line":179,"updated":"2015-06-15 22:52:49.000000000","message":"\u0027.\u0027 at EOL","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                                 self.backend_type)"},{"line_number":177,"context_line":"            return metadata"},{"line_number":178,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":179,"context_line":"            LOG.exception(_LE(\"Creation of volume %s failed\"), volume[\u0027id\u0027])"},{"line_number":180,"context_line":"            raise exception.Invalid(ex)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_8bc9ea7a","line":179,"in_reply_to":"fa32b979_6ee6ffb5","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":207,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":208,"context_line":"        if self.backend_type \u003d\u003d \"realstor\" and self.backend_name in [\"A\", \"B\"]:"},{"line_number":209,"context_line":"            msg \u003d _(\"Create volume from volume(clone) does not support \""},{"line_number":210,"context_line":"                    \"for virtual pool A and B.\")"},{"line_number":211,"context_line":"            LOG.error(msg)"},{"line_number":212,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":213,"context_line":"        self.get_volume_stats(True)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_693599d8","line":210,"updated":"2015-06-15 22:52:49.000000000","message":"Do you mean \u0027does not have support for ...\"  ?","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":207,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":208,"context_line":"        if self.backend_type \u003d\u003d \"realstor\" and self.backend_name in [\"A\", \"B\"]:"},{"line_number":209,"context_line":"            msg \u003d _(\"Create volume from volume(clone) does not support \""},{"line_number":210,"context_line":"                    \"for virtual pool A and B.\")"},{"line_number":211,"context_line":"            LOG.error(msg)"},{"line_number":212,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":213,"context_line":"        self.get_volume_stats(True)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_abc4ee5e","line":210,"in_reply_to":"fa32b979_693599d8","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        self.get_volume_stats(True)"},{"line_number":214,"context_line":"        self._assert_enough_space_for_copy(volume[\u0027size\u0027])"},{"line_number":215,"context_line":"        self._assert_source_detached(src_vref)"},{"line_number":216,"context_line":"        LOG.debug(\"Cloning Volume %(source_id)s (%(dest_id)s)\","},{"line_number":217,"context_line":"                  {\u0027source_id\u0027: volume[\u0027source_volid\u0027],"},{"line_number":218,"context_line":"                   \u0027dest_id\u0027: volume[\u0027id\u0027], })"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_c93dc5bc","line":216,"updated":"2015-06-15 22:52:49.000000000","message":"Suggest: \"Cloning Volume %(source_id)s to (%(dest_id)s).\"","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        self.get_volume_stats(True)"},{"line_number":214,"context_line":"        self._assert_enough_space_for_copy(volume[\u0027size\u0027])"},{"line_number":215,"context_line":"        self._assert_source_detached(src_vref)"},{"line_number":216,"context_line":"        LOG.debug(\"Cloning Volume %(source_id)s (%(dest_id)s)\","},{"line_number":217,"context_line":"                  {\u0027source_id\u0027: volume[\u0027source_volid\u0027],"},{"line_number":218,"context_line":"                   \u0027dest_id\u0027: volume[\u0027id\u0027], })"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_4ba202b0","line":216,"in_reply_to":"fa32b979_c93dc5bc","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            self.client.copy_volume(orig_name, dest_name, 0, self.backend_name)"},{"line_number":229,"context_line":"            return None"},{"line_number":230,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":231,"context_line":"            LOG.exception(_LE(\"Cloning of volume %s failed\"),"},{"line_number":232,"context_line":"                          volume[\u0027source_volid\u0027])"},{"line_number":233,"context_line":"            raise exception.Invalid(ex)"},{"line_number":234,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_c964e5e6","line":231,"updated":"2015-06-15 22:52:49.000000000","message":"\u0027.\u0027 at EOL","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            self.client.copy_volume(orig_name, dest_name, 0, self.backend_name)"},{"line_number":229,"context_line":"            return None"},{"line_number":230,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":231,"context_line":"            LOG.exception(_LE(\"Cloning of volume %s failed\"),"},{"line_number":232,"context_line":"                          volume[\u0027source_volid\u0027])"},{"line_number":233,"context_line":"            raise exception.Invalid(ex)"},{"line_number":234,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_0bacfa9e","line":231,"in_reply_to":"fa32b979_c964e5e6","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":238,"context_line":"        if self.backend_type \u003d\u003d \"realstor\" and self.backend_name in [\"A\", \"B\"]:"},{"line_number":239,"context_line":"            msg \u003d _(\u0027Create volume from snapshot does not support \u0027"},{"line_number":240,"context_line":"                    \u0027for virtual pool A and B.\u0027)"},{"line_number":241,"context_line":"            LOG.error(msg)"},{"line_number":242,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_c9ab85d5","line":239,"updated":"2015-06-15 22:52:49.000000000","message":"Do you mean \u0027does not have support for ...\"?","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":238,"context_line":"        if self.backend_type \u003d\u003d \"realstor\" and self.backend_name in [\"A\", \"B\"]:"},{"line_number":239,"context_line":"            msg \u003d _(\u0027Create volume from snapshot does not support \u0027"},{"line_number":240,"context_line":"                    \u0027for virtual pool A and B.\u0027)"},{"line_number":241,"context_line":"            LOG.error(msg)"},{"line_number":242,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_2baf7e95","line":239,"in_reply_to":"fa32b979_c9ab85d5","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":243,"context_line":"        self.get_volume_stats(True)"},{"line_number":244,"context_line":"        self._assert_enough_space_for_copy(volume[\u0027size\u0027])"},{"line_number":245,"context_line":"        LOG.debug(\"Creating Volume from snapshot %(source_id)s (%(dest_id)s)\","},{"line_number":246,"context_line":"                  {\u0027source_id\u0027: snapshot[\u0027id\u0027], \u0027dest_id\u0027: volume[\u0027id\u0027], })"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        orig_name \u003d self._get_snap_name(snapshot[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_89ba5d09","line":245,"updated":"2015-06-15 22:52:49.000000000","message":"Suggest:  \"Creating Volume from snapshot %(source_id)s to (%(dest_id)s).\"","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"283190a9d3ea8a1db112c3465e2b84ab17624d43","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":243,"context_line":"        self.get_volume_stats(True)"},{"line_number":244,"context_line":"        self._assert_enough_space_for_copy(volume[\u0027size\u0027])"},{"line_number":245,"context_line":"        LOG.debug(\"Creating Volume from snapshot %(source_id)s (%(dest_id)s)\","},{"line_number":246,"context_line":"                  {\u0027source_id\u0027: snapshot[\u0027id\u0027], \u0027dest_id\u0027: volume[\u0027id\u0027], })"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        orig_name \u003d self._get_snap_name(snapshot[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_c696074c","line":245,"in_reply_to":"fa32b979_2b9d3e59","updated":"2015-06-16 01:24:39.000000000","message":"LOG.debug(\"Creating Volume from snapshot %(source_id)s to \"\n          \"(%(dest_id)s)\", {\u0027source_id\u0027: snapshot[\u0027id\u0027],\n                            \u0027dest_id\u0027: volume[\u0027id\u0027], })","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":243,"context_line":"        self.get_volume_stats(True)"},{"line_number":244,"context_line":"        self._assert_enough_space_for_copy(volume[\u0027size\u0027])"},{"line_number":245,"context_line":"        LOG.debug(\"Creating Volume from snapshot %(source_id)s (%(dest_id)s)\","},{"line_number":246,"context_line":"                  {\u0027source_id\u0027: snapshot[\u0027id\u0027], \u0027dest_id\u0027: volume[\u0027id\u0027], })"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        orig_name \u003d self._get_snap_name(snapshot[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_2b9d3e59","line":245,"in_reply_to":"fa32b979_89ba5d09","updated":"2015-06-16 01:16:35.000000000","message":"done\nfirst line is going beyond 80 chars by comma,\ncan i use comma like below\nLOG.debug(\"debug message\"\n          , {\u0027source_id\u0027: snapshot[\u0027id\u0027], \u0027dest_id\u0027: volume[\u0027id\u0027], })","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":252,"context_line":"            self.client.copy_volume(orig_name, dest_name, 0, self.backend_name)"},{"line_number":253,"context_line":"            return None"},{"line_number":254,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":255,"context_line":"            LOG.exception(_LE(\"Create volume failed from snapshot %s\"),"},{"line_number":256,"context_line":"                          snapshot[\u0027id\u0027])"},{"line_number":257,"context_line":"            raise exception.Invalid(ex)"},{"line_number":258,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_6956f9d3","line":255,"updated":"2015-06-15 22:52:49.000000000","message":"Suggest: \"Create volume failed from snapshot: %s\"","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":252,"context_line":"            self.client.copy_volume(orig_name, dest_name, 0, self.backend_name)"},{"line_number":253,"context_line":"            return None"},{"line_number":254,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":255,"context_line":"            LOG.exception(_LE(\"Create volume failed from snapshot %s\"),"},{"line_number":256,"context_line":"                          snapshot[\u0027id\u0027])"},{"line_number":257,"context_line":"            raise exception.Invalid(ex)"},{"line_number":258,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_6bba66c2","line":255,"in_reply_to":"fa32b979_6956f9d3","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":259,"context_line":"            self.client_logout()"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def delete_volume(self, volume):"},{"line_number":262,"context_line":"        LOG.debug(\"Deleting Volume %s\", volume[\u0027id\u0027])"},{"line_number":263,"context_line":"        if volume[\u0027name_id\u0027]:"},{"line_number":264,"context_line":"            volume_name \u003d self._get_vol_name(volume[\u0027name_id\u0027])"},{"line_number":265,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_89681d89","line":262,"updated":"2015-06-15 22:52:49.000000000","message":"Suggest: \"Deleting Volume: %s\"","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":259,"context_line":"            self.client_logout()"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def delete_volume(self, volume):"},{"line_number":262,"context_line":"        LOG.debug(\"Deleting Volume %s\", volume[\u0027id\u0027])"},{"line_number":263,"context_line":"        if volume[\u0027name_id\u0027]:"},{"line_number":264,"context_line":"            volume_name \u003d self._get_vol_name(volume[\u0027name_id\u0027])"},{"line_number":265,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_0bb15ae1","line":262,"in_reply_to":"fa32b979_89681d89","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            if \u0027The volume was not found on this system.\u0027 in ex:"},{"line_number":275,"context_line":"                return"},{"line_number":276,"context_line":"            raise exception.Invalid(ex)"},{"line_number":277,"context_line":"        finally:"},{"line_number":278,"context_line":"            self.client_logout()"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def get_volume_stats(self, refresh):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_175e6376","line":277,"updated":"2015-06-15 22:52:49.000000000","message":"The logic here needs to be reworked.  You have a LOG.exception that is going to be ignored some times.  I think you should have two separate messages.  One for if you decide to ignore it (a LOG.warn perhaps)  and one with the exception.  If you use the existing exception it should end with a \u0027.\u0027.","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            if \u0027The volume was not found on this system.\u0027 in ex:"},{"line_number":275,"context_line":"                return"},{"line_number":276,"context_line":"            raise exception.Invalid(ex)"},{"line_number":277,"context_line":"        finally:"},{"line_number":278,"context_line":"            self.client_logout()"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def get_volume_stats(self, refresh):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_2bb45ecf","line":277,"in_reply_to":"fa32b979_175e6376","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                                          self.owner))"},{"line_number":312,"context_line":"            pool[\u0027pool_name\u0027] \u003d self.backend_name"},{"line_number":313,"context_line":"        except exception.DotHillRequestError:"},{"line_number":314,"context_line":"            err \u003d (_(\"Unable to get stats for backend_name %s\") %"},{"line_number":315,"context_line":"                   self.backend_name)"},{"line_number":316,"context_line":"            LOG.exception(err)"},{"line_number":317,"context_line":"            raise exception.Invalid(reason\u003derr)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_97e1139d","line":314,"updated":"2015-06-15 22:52:49.000000000","message":"suggest \u0027backend_name: %s\u0027","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                                          self.owner))"},{"line_number":312,"context_line":"            pool[\u0027pool_name\u0027] \u003d self.backend_name"},{"line_number":313,"context_line":"        except exception.DotHillRequestError:"},{"line_number":314,"context_line":"            err \u003d (_(\"Unable to get stats for backend_name %s\") %"},{"line_number":315,"context_line":"                   self.backend_name)"},{"line_number":316,"context_line":"            LOG.exception(err)"},{"line_number":317,"context_line":"            raise exception.Invalid(reason\u003derr)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_6be106d0","line":314,"in_reply_to":"fa32b979_97e1139d","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    def _assert_connector_ok(self, connector, connector_element):"},{"line_number":323,"context_line":"        if not connector[connector_element]:"},{"line_number":324,"context_line":"            msg \u003d _(\"Connector does not provide %s\") % connector_element"},{"line_number":325,"context_line":"            LOG.error(msg)"},{"line_number":326,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":327,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_f79f3f01","line":324,"updated":"2015-06-15 22:52:49.000000000","message":"\u0027provide: %s\u0027","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    def _assert_connector_ok(self, connector, connector_element):"},{"line_number":323,"context_line":"        if not connector[connector_element]:"},{"line_number":324,"context_line":"            msg \u003d _(\"Connector does not provide %s\") % connector_element"},{"line_number":325,"context_line":"            LOG.error(msg)"},{"line_number":326,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":327,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_8bdc8a13","line":324,"in_reply_to":"fa32b979_f79f3f01","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":337,"context_line":"                                          connector_element)"},{"line_number":338,"context_line":"            return data"},{"line_number":339,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":340,"context_line":"            LOG.exception(_LE(\"Error mapping volume %s\"), volume_name)"},{"line_number":341,"context_line":"            raise exception.Invalid(ex)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def unmap_volume(self, volume, connector, connector_element):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_3764c720","line":340,"updated":"2015-06-15 22:52:49.000000000","message":"\u0027volume: %s\u0027","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":337,"context_line":"                                          connector_element)"},{"line_number":338,"context_line":"            return data"},{"line_number":339,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":340,"context_line":"            LOG.exception(_LE(\"Error mapping volume %s\"), volume_name)"},{"line_number":341,"context_line":"            raise exception.Invalid(ex)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def unmap_volume(self, volume, connector, connector_element):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_6b082692","line":340,"in_reply_to":"fa32b979_3764c720","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":353,"context_line":"                                     connector,"},{"line_number":354,"context_line":"                                     connector_element)"},{"line_number":355,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":356,"context_line":"            LOG.exception(_LE(\"Error unmapping volume %s\"), volume_name)"},{"line_number":357,"context_line":"            raise exception.Invalid(ex)"},{"line_number":358,"context_line":"        finally:"},{"line_number":359,"context_line":"            self.client_logout()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_b778d7c5","line":356,"updated":"2015-06-15 22:52:49.000000000","message":"\u0027volume: %s\u0027","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":353,"context_line":"                                     connector,"},{"line_number":354,"context_line":"                                     connector_element)"},{"line_number":355,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":356,"context_line":"            LOG.exception(_LE(\"Error unmapping volume %s\"), volume_name)"},{"line_number":357,"context_line":"            raise exception.Invalid(ex)"},{"line_number":358,"context_line":"        finally:"},{"line_number":359,"context_line":"            self.client_logout()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_0bff1a68","line":356,"in_reply_to":"fa32b979_b778d7c5","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":381,"context_line":"            raise exception.Invalid(ex)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":384,"context_line":"        LOG.debug(\"Creating snapshot from %(volume_id)s (%(snap_id)s)\","},{"line_number":385,"context_line":"                  {\u0027volume_id\u0027: snapshot[\u0027volume_id\u0027],"},{"line_number":386,"context_line":"                   \u0027snap_id\u0027: snapshot[\u0027id\u0027], })"},{"line_number":387,"context_line":"        if snapshot[\u0027volume\u0027][\u0027name_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_3a002e01","line":384,"updated":"2015-06-15 22:52:49.000000000","message":"This message doesn\u0027t make sense to me.  Maybe better as:\n\"Creating snapshot %(snap_id)s from %(volume_id)s.\"","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":381,"context_line":"            raise exception.Invalid(ex)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":384,"context_line":"        LOG.debug(\"Creating snapshot from %(volume_id)s (%(snap_id)s)\","},{"line_number":385,"context_line":"                  {\u0027volume_id\u0027: snapshot[\u0027volume_id\u0027],"},{"line_number":386,"context_line":"                   \u0027snap_id\u0027: snapshot[\u0027id\u0027], })"},{"line_number":387,"context_line":"        if snapshot[\u0027volume\u0027][\u0027name_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_eb699626","line":384,"in_reply_to":"fa32b979_3a002e01","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        try:"},{"line_number":395,"context_line":"            self.client.create_snapshot(vol_name, snap_name)"},{"line_number":396,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":397,"context_line":"            LOG.exception(_LE(\"Creation of snapshot failed for volume %s\"),"},{"line_number":398,"context_line":"                          snapshot[\u0027volume_id\u0027])"},{"line_number":399,"context_line":"            raise exception.Invalid(ex)"},{"line_number":400,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_fa09662d","line":397,"updated":"2015-06-15 22:52:49.000000000","message":"\u0027volume: %s\u0027","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        try:"},{"line_number":395,"context_line":"            self.client.create_snapshot(vol_name, snap_name)"},{"line_number":396,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":397,"context_line":"            LOG.exception(_LE(\"Creation of snapshot failed for volume %s\"),"},{"line_number":398,"context_line":"                          snapshot[\u0027volume_id\u0027])"},{"line_number":399,"context_line":"            raise exception.Invalid(ex)"},{"line_number":400,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_0b5b9a88","line":397,"in_reply_to":"fa32b979_fa09662d","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"9d47bbc733931276183b6582fba5b8bcbfcca6a3","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        try:"},{"line_number":409,"context_line":"            self.client.delete_snapshot(snap_name)"},{"line_number":410,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":411,"context_line":"            LOG.exception(_LE(\"Deleting snapshot %s failed\"), snapshot[\u0027id\u0027])"},{"line_number":412,"context_line":"            # if the volume wasn\u0027t found, ignore the error"},{"line_number":413,"context_line":"            if \u0027The volume was not found on this system.\u0027 in ex:"},{"line_number":414,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_7aba3625","line":411,"updated":"2015-06-15 23:34:37.000000000","message":"It would be good if we didn\u0027t log the exception, particularly if we turn around and say it\u0027s because of not found and ignore it anyway.","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        try:"},{"line_number":409,"context_line":"            self.client.delete_snapshot(snap_name)"},{"line_number":410,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":411,"context_line":"            LOG.exception(_LE(\"Deleting snapshot %s failed\"), snapshot[\u0027id\u0027])"},{"line_number":412,"context_line":"            # if the volume wasn\u0027t found, ignore the error"},{"line_number":413,"context_line":"            if \u0027The volume was not found on this system.\u0027 in ex:"},{"line_number":414,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_6bcb461f","line":411,"in_reply_to":"fa32b979_7aba3625","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            # if the volume wasn\u0027t found, ignore the error"},{"line_number":413,"context_line":"            if \u0027The volume was not found on this system.\u0027 in ex:"},{"line_number":414,"context_line":"                return"},{"line_number":415,"context_line":"            raise exception.Invalid(ex)"},{"line_number":416,"context_line":"        finally:"},{"line_number":417,"context_line":"            self.client_logout()"},{"line_number":418,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_7a3556d8","line":415,"updated":"2015-06-15 22:52:49.000000000","message":"Same comment here as on the other delete.","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            # if the volume wasn\u0027t found, ignore the error"},{"line_number":413,"context_line":"            if \u0027The volume was not found on this system.\u0027 in ex:"},{"line_number":414,"context_line":"                return"},{"line_number":415,"context_line":"            raise exception.Invalid(ex)"},{"line_number":416,"context_line":"        finally:"},{"line_number":417,"context_line":"            self.client_logout()"},{"line_number":418,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_2bd53eb8","line":415,"in_reply_to":"fa32b979_7a3556d8","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":433,"context_line":"        try:"},{"line_number":434,"context_line":"            self.client.extend_volume(volume_name, \"%dGB\" % growth_size)"},{"line_number":435,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":436,"context_line":"            LOG.exception(_LE(\"Extension of volume %s failed\"), volume[\u0027id\u0027])"},{"line_number":437,"context_line":"            raise exception.Invalid(ex)"},{"line_number":438,"context_line":"        finally:"},{"line_number":439,"context_line":"            self.client_logout()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_3a4eee6f","line":436,"updated":"2015-06-15 22:52:49.000000000","message":"\u0027.\u0027 at EOL","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":433,"context_line":"        try:"},{"line_number":434,"context_line":"            self.client.extend_volume(volume_name, \"%dGB\" % growth_size)"},{"line_number":435,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":436,"context_line":"            LOG.exception(_LE(\"Extension of volume %s failed\"), volume[\u0027id\u0027])"},{"line_number":437,"context_line":"            raise exception.Invalid(ex)"},{"line_number":438,"context_line":"        finally:"},{"line_number":439,"context_line":"            self.client_logout()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_6bf26671","line":436,"in_reply_to":"fa32b979_3a4eee6f","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":493,"context_line":"            self.client.modify_volume_name(dest_name, source_name)"},{"line_number":494,"context_line":"            return (True, None)"},{"line_number":495,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":496,"context_line":"            LOG.exception(_LE(\"Error migrating volume %s\"), source_name)"},{"line_number":497,"context_line":"            raise exception.Invalid(ex)"},{"line_number":498,"context_line":"        finally:"},{"line_number":499,"context_line":"            self.client_logout()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_bab0be44","line":496,"updated":"2015-06-15 22:52:49.000000000","message":"\u0027volume: %s\"","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":493,"context_line":"            self.client.modify_volume_name(dest_name, source_name)"},{"line_number":494,"context_line":"            return (True, None)"},{"line_number":495,"context_line":"        except exception.DotHillRequestError as ex:"},{"line_number":496,"context_line":"            LOG.exception(_LE(\"Error migrating volume %s\"), source_name)"},{"line_number":497,"context_line":"            raise exception.Invalid(ex)"},{"line_number":498,"context_line":"        finally:"},{"line_number":499,"context_line":"            self.client_logout()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_cb037241","line":496,"in_reply_to":"fa32b979_bab0be44","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"}],"cinder/volume/drivers/dothill/dothill_iscsi.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                elif len(ip) \u003d\u003d 2:"},{"line_number":80,"context_line":"                    iscsi_ips.append([ip[0], ip[1]])"},{"line_number":81,"context_line":"                else:"},{"line_number":82,"context_line":"                    msg \u003d _(\"Invalid IP address format \u0027%s\u0027\") % ip_addr"},{"line_number":83,"context_line":"                    LOG.error(msg)"},{"line_number":84,"context_line":"                    raise exception.InvalidInput(reason\u003d(msg))"},{"line_number":85,"context_line":"            self.iscsi_ips \u003d iscsi_ips"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_fa41660c","line":82,"updated":"2015-06-15 22:52:49.000000000","message":"\u0027format: \u0027%s\u0027\u0027","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                elif len(ip) \u003d\u003d 2:"},{"line_number":80,"context_line":"                    iscsi_ips.append([ip[0], ip[1]])"},{"line_number":81,"context_line":"                else:"},{"line_number":82,"context_line":"                    msg \u003d _(\"Invalid IP address format \u0027%s\u0027\") % ip_addr"},{"line_number":83,"context_line":"                    LOG.error(msg)"},{"line_number":84,"context_line":"                    raise exception.InvalidInput(reason\u003d(msg))"},{"line_number":85,"context_line":"            self.iscsi_ips \u003d iscsi_ips"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_c6b04746","line":82,"in_reply_to":"fa32b979_fa41660c","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"733770e83fd684ce47e6feba8ba82115f582424d","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        if 12 \u003c\u003d len(chap_secret) \u003c\u003d 16:"},{"line_number":178,"context_line":"            self.common.create_chap_record(initiator_name, chap_secret)"},{"line_number":179,"context_line":"        else:"},{"line_number":180,"context_line":"            msg \u003d _(\u0027chap secret should be 12-16 bytes\u0027)"},{"line_number":181,"context_line":"            LOG.error(msg)"},{"line_number":182,"context_line":"            raise exception.InvalidInput(reason\u003d(msg))"},{"line_number":183,"context_line":"        return chap_secret"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_9a685a89","line":180,"updated":"2015-06-15 22:52:49.000000000","message":"\u0027CHAP secret must be 12-16 bytes.\u0027","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"240bae9d6e6da3b38155931b30cffff421c8d8ff","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        if 12 \u003c\u003d len(chap_secret) \u003c\u003d 16:"},{"line_number":178,"context_line":"            self.common.create_chap_record(initiator_name, chap_secret)"},{"line_number":179,"context_line":"        else:"},{"line_number":180,"context_line":"            msg \u003d _(\u0027chap secret should be 12-16 bytes\u0027)"},{"line_number":181,"context_line":"            LOG.error(msg)"},{"line_number":182,"context_line":"            raise exception.InvalidInput(reason\u003d(msg))"},{"line_number":183,"context_line":"        return chap_secret"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_66edbb24","line":180,"in_reply_to":"fa32b979_9a685a89","updated":"2015-06-16 01:16:35.000000000","message":"Done","commit_id":"c35fa80e7cbbb2f4cdcf37c302c925110dd71827"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"82d72b1d03587f7bd60936ebead85266623c7500","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                    raise exception.InvalidInput(reason\u003d(msg))"},{"line_number":85,"context_line":"            self.iscsi_ips \u003d iscsi_ips"},{"line_number":86,"context_line":"        else:"},{"line_number":87,"context_line":"            msg \u003d _(\u0027At least one valid iSCSI IP address must be set.\u0027)"},{"line_number":88,"context_line":"            LOG.error(msg)"},{"line_number":89,"context_line":"            raise exception.InvalidInput(reason\u003d(msg))"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_aff5d0cb","line":87,"updated":"2015-06-16 07:26:37.000000000","message":"LOG.error needs to localize the message with _LE.\nThis applies to all the LOG.error in all the changes. Please do a search for all the LOG.error.","commit_id":"7f7f13bcac84d0086110a82306832bc5453be0d9"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"9801743bb7fd0448df3463cf6f279029c37ef9ec","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                    raise exception.InvalidInput(reason\u003d(msg))"},{"line_number":85,"context_line":"            self.iscsi_ips \u003d iscsi_ips"},{"line_number":86,"context_line":"        else:"},{"line_number":87,"context_line":"            msg \u003d _(\u0027At least one valid iSCSI IP address must be set.\u0027)"},{"line_number":88,"context_line":"            LOG.error(msg)"},{"line_number":89,"context_line":"            raise exception.InvalidInput(reason\u003d(msg))"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_80168b53","line":87,"in_reply_to":"fa32b979_52e86b10","updated":"2015-06-16 13:14:32.000000000","message":"Since it is being passed to an exception as well as the log, it should be _()","commit_id":"7f7f13bcac84d0086110a82306832bc5453be0d9"},{"author":{"_account_id":16121,"name":"Nikesh","email":"Nikesh.Mahalaka@dothill.com","username":"nikeshm"},"change_message_id":"f4a01cbbb1d580e112f40cdfc17a25d5f9c957be","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                    raise exception.InvalidInput(reason\u003d(msg))"},{"line_number":85,"context_line":"            self.iscsi_ips \u003d iscsi_ips"},{"line_number":86,"context_line":"        else:"},{"line_number":87,"context_line":"            msg \u003d _(\u0027At least one valid iSCSI IP address must be set.\u0027)"},{"line_number":88,"context_line":"            LOG.error(msg)"},{"line_number":89,"context_line":"            raise exception.InvalidInput(reason\u003d(msg))"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_ef475875","line":87,"in_reply_to":"fa32b979_aff5d0cb","updated":"2015-06-16 07:38:53.000000000","message":"Hi,Vincet,i followed this:\nhttp://docs.openstack.org/developer/oslo.i18n/guidelines.html\n\ndo not do this:\n# WRONG\nmsg \u003d _LE(\u0027There was an error.\u0027)\nLOG.exception(msg)\nraise LocalExceptionClass(msg)\nInstead, use this style:\n\n# RIGHT\nmsg \u003d _(\u0027There was an error.\u0027)\nLOG.exception(msg)\nraise LocalExceptionClass(msg)\n\nI remembered,i made this changes after some review in past","commit_id":"7f7f13bcac84d0086110a82306832bc5453be0d9"},{"author":{"_account_id":16121,"name":"Nikesh","email":"Nikesh.Mahalaka@dothill.com","username":"nikeshm"},"change_message_id":"b46ef749e9f355628556fe759a892d00c4363454","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                    raise exception.InvalidInput(reason\u003d(msg))"},{"line_number":85,"context_line":"            self.iscsi_ips \u003d iscsi_ips"},{"line_number":86,"context_line":"        else:"},{"line_number":87,"context_line":"            msg \u003d _(\u0027At least one valid iSCSI IP address must be set.\u0027)"},{"line_number":88,"context_line":"            LOG.error(msg)"},{"line_number":89,"context_line":"            raise exception.InvalidInput(reason\u003d(msg))"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_52e86b10","line":87,"in_reply_to":"fa32b979_ef475875","updated":"2015-06-16 07:45:55.000000000","message":"Also,\nsame as i did in below link\nhttps://github.com/openstack/cinder/blob/52e2e8e2716792b16c041938bf0d5fb431e82b44/cinder/volume/drivers/emc/scaleio.py","commit_id":"7f7f13bcac84d0086110a82306832bc5453be0d9"}]}
