)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"373977f2850fb805716163147d9eb138f5974163","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-05-27 17:39:26 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"MacroSan Driver"},{"line_number":8,"context_line":"test"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: I9d3675af92a23b8bac6bc05b0b480e514c15ae88"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bfb3d3c7_e096ad93","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":4},"updated":"2019-05-27 10:13:36.000000000","message":"Maybe change this to,\n\"This patch adds Macrosan Driver\"","commit_id":"67087c42d9e0f47f8625eb688065167ca9535b3a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3ff43c8d334f5adb21eb119f538acd706b7ac634","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-05-27 17:39:26 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"MacroSan Driver"},{"line_number":8,"context_line":"test"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: I9d3675af92a23b8bac6bc05b0b480e514c15ae88"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bfb3d3c7_fb0bbe79","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":4},"in_reply_to":"bfb3d3c7_e096ad93","updated":"2019-05-27 12:21:36.000000000","message":"Also needs a blank line after the summary line.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"67087c42d9e0f47f8625eb688065167ca9535b3a"}],"cinder/tests/unit/test_macrosan_drivers.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b042dea5eadba7ae19597a19dbddf87a7d64f38d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from cinder.volume import volume_types"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"test_volume \u003d ("}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_9b1c02c2","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":3},"updated":"2019-05-27 12:31:51.000000000","message":"There should not be any logging in unit test code.","commit_id":"67087c42d9e0f47f8625eb688065167ca9535b3a"}],"cinder/volume/drivers/macrosan/devop_client.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5ef9c0dc8132ec3e1d8d83fa186a7743c0830198","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder.exception import VolumeBackendAPIException"},{"line_number":17,"context_line":"from cinder import ssh_utils"},{"line_number":18,"context_line":"from cinder import utils"},{"line_number":19,"context_line":"import json"},{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":"from oslo_concurrency import processutils"},{"line_number":22,"context_line":"import re"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"ODSP_ENV \u003d \u0027source /etc/profile;\u0027"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_80b6d13d","line":22,"range":{"start_line":16,"start_character":0,"end_line":22,"end_character":9},"updated":"2019-05-27 10:10:26.000000000","message":"this should be in this order\n\nimport json\nimport os\nimport re\n\nfrom oslo_concurrency import processutils\n\nfrom cinder import exception (Note that classes shouldn\u0027t be imported only module should be)\nfrom cinder import ssh_utils\nfrom cinder import utils","commit_id":"67087c42d9e0f47f8625eb688065167ca9535b3a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5ef9c0dc8132ec3e1d8d83fa186a7743c0830198","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        sshcmd \u003d ssh_command(cmd)"},{"line_number":71,"context_line":"        o, _ \u003d processutils.ssh_execute(ssh, sshcmd)"},{"line_number":72,"context_line":"        if command_error(o):"},{"line_number":73,"context_line":"            raise VolumeBackendAPIException(data\u003derror_message(o))"},{"line_number":74,"context_line":"        return o"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def get_ha_state(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_40869968","line":73,"range":{"start_line":73,"start_character":18,"end_line":73,"end_character":43},"updated":"2019-05-27 10:10:26.000000000","message":"from the changes in import, all similar occurrences should change to\nexception.VolumeBackendAPIException","commit_id":"67087c42d9e0f47f8625eb688065167ca9535b3a"}],"cinder/volume/drivers/macrosan/driver.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b042dea5eadba7ae19597a19dbddf87a7d64f38d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import re"},{"line_number":21,"context_line":"import socket"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from os_brick.initiator.connector import ISCSIConnector"},{"line_number":24,"context_line":"from os_brick.initiator import linuxfc"},{"line_number":25,"context_line":"from oslo_config import cfg"},{"line_number":26,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_5b80cac0","line":23,"updated":"2019-05-27 12:31:51.000000000","message":"Import only modules, not classes.","commit_id":"67087c42d9e0f47f8625eb688065167ca9535b3a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b042dea5eadba7ae19597a19dbddf87a7d64f38d","unresolved":false,"context_lines":[{"line_number":68,"context_line":"               help\u003d\"MacroSAN iscsi target\u0027s SP1 ip address\"),"},{"line_number":69,"context_line":"    cfg.StrOpt(\u0027macrosan_iscsi_target_sp2_ipaddr\u0027,"},{"line_number":70,"context_line":"               help\u003d\"MacroSAN iscsi target\u0027s SP2 ip address\"),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027macrosan_username\u0027,"},{"line_number":72,"context_line":"               help\u003d\"Username to login device\"),"},{"line_number":73,"context_line":"    cfg.StrOpt(\u0027macrosan_password\u0027,"},{"line_number":74,"context_line":"               help\u003d\"Password to login device\"),"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_9b71620f","line":71,"range":{"start_line":71,"start_character":16,"end_line":71,"end_character":33},"updated":"2019-05-27 12:31:51.000000000","message":"Don\u0027t introduce driver specific config options in place of standard existing ones. This and the next one should be removed and just use san_login and san_password.","commit_id":"67087c42d9e0f47f8625eb688065167ca9535b3a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b042dea5eadba7ae19597a19dbddf87a7d64f38d","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        raids \u003d self.client.get_raid_list(self.pool)"},{"line_number":156,"context_line":"        free \u003d sum(raid[\u0027free_cap\u0027] for raid in raids)"},{"line_number":157,"context_line":"        if size \u003e free:"},{"line_number":158,"context_line":"            raise VolumeBackendAPIException(\u0027Pool has not enough\u0027"},{"line_number":159,"context_line":"                                            \u0027free capacity\u0027)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        raids \u003d sorted(raids, key\u003dlambda x: x[\u0027free_cap\u0027], reverse\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_5b69aa1e","line":158,"range":{"start_line":158,"start_character":44,"end_line":158,"end_character":45},"updated":"2019-05-27 12:31:51.000000000","message":"Exception messages that end users could see should include the _() translation markers.","commit_id":"67087c42d9e0f47f8625eb688065167ca9535b3a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b042dea5eadba7ae19597a19dbddf87a7d64f38d","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    @utils.synchronized(\u0027MacroSAN\u0027, external\u003dTrue)"},{"line_number":210,"context_line":"    def create_volume(self, volume):"},{"line_number":211,"context_line":"        LOG.info(\u0027\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d create volume, name: %(name)s,\u0027"},{"line_number":212,"context_line":"                 \u0027id: %(volume_id)s, size: %(size)s.\u0027,"},{"line_number":213,"context_line":"                 {\u0027name\u0027: volume[\u0027name\u0027],"},{"line_number":214,"context_line":"                  \u0027volume_id\u0027: volume[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_bb578658","line":211,"range":{"start_line":211,"start_character":12,"end_line":211,"end_character":16},"updated":"2019-05-27 12:31:51.000000000","message":"Things like this should probably be debug level.","commit_id":"67087c42d9e0f47f8625eb688065167ca9535b3a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b042dea5eadba7ae19597a19dbddf87a7d64f38d","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        name \u003d self._volume_name(volume[\u0027provider_location\u0027])"},{"line_number":246,"context_line":"        self._delete_volume(name)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    # @utils.synchronized(\u0027MacroSAN-Attach\u0027, external\u003dTrue)"},{"line_number":249,"context_line":"    def _attach_volume(self, context, volume, properties, remote\u003dFalse):"},{"line_number":250,"context_line":"        return super(MacroSANBaseDriver, self)._attach_volume(context,"},{"line_number":251,"context_line":"                                                              volume,"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_3bc95625","line":248,"updated":"2019-05-27 12:31:51.000000000","message":"Either remove the commented out code, and this whole method, or determine if you need it for locking.","commit_id":"67087c42d9e0f47f8625eb688065167ca9535b3a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b042dea5eadba7ae19597a19dbddf87a7d64f38d","unresolved":false,"context_lines":[{"line_number":546,"context_line":"        return {\u0027_name_id\u0027: name_id,"},{"line_number":547,"context_line":"                \u0027provider_location\u0027: new_volume[\u0027provider_location\u0027]}"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"class MacroSANISCSIDriver(MacroSANBaseDriver, driver.ISCSIDriver):"},{"line_number":551,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":552,"context_line":"        super(MacroSANISCSIDriver, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_7be26ea2","line":549,"updated":"2019-05-27 12:31:51.000000000","message":"Needs @interface.volumedriver decorator.","commit_id":"67087c42d9e0f47f8625eb688065167ca9535b3a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b042dea5eadba7ae19597a19dbddf87a7d64f38d","unresolved":false,"context_lines":[{"line_number":551,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":552,"context_line":"        super(MacroSANISCSIDriver, self).__init__(*args, **kwargs)"},{"line_number":553,"context_line":"        self.storage_protocol \u003d \u0027iSCSI\u0027"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"    def _get_iscsi_ports(self, host):"},{"line_number":556,"context_line":"        try:"},{"line_number":557,"context_line":"            ha_state \u003d self.client.get_ha_state()"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_9bdf22d5","line":554,"updated":"2019-05-27 12:31:51.000000000","message":"Also needs VERSION and CI_WIKI_NAME variables.","commit_id":"67087c42d9e0f47f8625eb688065167ca9535b3a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b042dea5eadba7ae19597a19dbddf87a7d64f38d","unresolved":false,"context_lines":[{"line_number":613,"context_line":"                if created:"},{"line_number":614,"context_line":"                    self.client.add_lun_to_target(tgt_name, name, \u0027iSCSI\u0027)"},{"line_number":615,"context_line":"                lun_id \u003d self.client.get_lun_id(tgt_name, name, \u0027iSCSI\u0027)"},{"line_number":616,"context_line":"        except VolumeBackendAPIException as e:"},{"line_number":617,"context_line":"            raise e"},{"line_number":618,"context_line":""},{"line_number":619,"context_line":"        target_ips \u003d sp1_ports + sp2_ports"},{"line_number":620,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_3bf2b671","line":617,"range":{"start_line":616,"start_character":8,"end_line":617,"end_character":19},"updated":"2019-05-27 12:31:51.000000000","message":"Remove try/except if you are just going to reraise it.","commit_id":"67087c42d9e0f47f8625eb688065167ca9535b3a"}],"cinder/volume/drivers/marcrosan/__init__.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"d637bb5a9d10f79dbf39d0c7e231ef17873184de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"bfb3d3c7_c5293be6","line":1,"updated":"2019-05-27 09:34:36.000000000","message":"i think the directory name should be \u0027macrosan\u0027","commit_id":"79520fb6258651e2ef9c9e9c49b9edeb48d2808c"}],"cinder/volume/drivers/marcrosan/devop_client.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"d637bb5a9d10f79dbf39d0c7e231ef17873184de","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder.exception import VolumeBackendAPIException"},{"line_number":17,"context_line":"from cinder import ssh_utils"},{"line_number":18,"context_line":"from cinder import utils"},{"line_number":19,"context_line":"import json"},{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":"from oslo_concurrency import processutils"},{"line_number":22,"context_line":"import re"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"ODSP_ENV \u003d \u0027source /etc/profile;\u0027"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bfb3d3c7_45646b4a","line":22,"range":{"start_line":16,"start_character":0,"end_line":22,"end_character":9},"updated":"2019-05-27 09:34:36.000000000","message":"imports should be in the order : system, third party and then project imports\nalso needs to be in alphabetical order","commit_id":"79520fb6258651e2ef9c9e9c49b9edeb48d2808c"}]}
