)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     haiping zhou \u003czhp36@sohu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-03-25 17:54:35 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"ver-for-surfs1.0"},{"line_number":8,"context_line":"submit driver codes"},{"line_number":9,"context_line":"BP-driver-for-surfs1.0"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da0c15f0_7b3db7ba","line":7,"updated":"2016-03-26 10:05:08.000000000","message":"Maybe \"Add driver for surfs\"?\n\nAlso need a blank line between this summary line and the longer description below it.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"54be1c3945519ddde1c59d4f8bece9773ba051ab","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-03-25 17:54:35 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"ver-for-surfs1.0"},{"line_number":8,"context_line":"submit driver codes"},{"line_number":9,"context_line":"BP-driver-for-surfs1.0"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I3c24eff30d60a9bca5aab564941a10d479f98672"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da0c15f0_915fd571","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":19},"updated":"2016-03-25 23:14:46.000000000","message":"Maybe add a little more detail to the description of the patch here?","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"54be1c3945519ddde1c59d4f8bece9773ba051ab","unresolved":false,"context_lines":[{"line_number":7,"context_line":"ver-for-surfs1.0"},{"line_number":8,"context_line":"submit driver codes"},{"line_number":9,"context_line":"BP-driver-for-surfs1.0"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I3c24eff30d60a9bca5aab564941a10d479f98672"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da0c15f0_5117fda2","line":10,"updated":"2016-03-25 23:14:46.000000000","message":"Implements: driver-for-surfs1","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":7,"context_line":"ver-for-surfs1.0"},{"line_number":8,"context_line":"submit driver codes"},{"line_number":9,"context_line":"BP-driver-for-surfs1.0"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I3c24eff30d60a9bca5aab564941a10d479f98672"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da0c15f0_1b759b97","line":10,"in_reply_to":"da0c15f0_5117fda2","updated":"2016-03-26 10:05:08.000000000","message":"Actually, to get this to link correctly, I think that needs to be:\n\nImplements: blueprint driver-for-surfs1.0","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d00023f511946888f6c708f921dbede359147b5d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     haipingzhou \u003czhp36@sohu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-24 07:17:53 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"driver-for-surfs1.0"},{"line_number":8,"context_line":"-------------------"},{"line_number":9,"context_line":"add driver for surfs1.0"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3aaa91ec_1e235ca8","line":7,"updated":"2016-06-24 14:46:37.000000000","message":"Please reformat the commit message to follow the guidelines:\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d2360c5592e5a8047d0de7c5037de7cf3a863055","unresolved":false,"context_lines":[{"line_number":7,"context_line":"driver-for-surfs1.0"},{"line_number":8,"context_line":"-------------------"},{"line_number":9,"context_line":"add driver for surfs1.0"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"blueprint driver-for-surfs1.0"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I3c24eff30d60a9bca5aab564941a10d479f98672"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3aaa91ec_22c2bae9","line":10,"updated":"2016-06-29 13:25:57.000000000","message":"Please add DocImpact, we need documentation for the new driver.\n\nSee https://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"8889fc6a1ee89ffc1a483fa0bd3b8b2c3fb09cab","unresolved":false,"context_lines":[{"line_number":8,"context_line":"-------------------"},{"line_number":9,"context_line":"add driver for surfs1.0"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"blueprint driver-for-surfs1.0"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I3c24eff30d60a9bca5aab564941a10d479f98672"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1aa78d24_03854606","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":29},"updated":"2016-07-08 22:29:36.000000000","message":"Implements: bluepring driver-for-surfs1.0","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"}],"cinder/volume/drivers/sursen/README.rst":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d00023f511946888f6c708f921dbede359147b5d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"SurFS driver for Cinder v1.0"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":"SurFS is available as open source under the MPL v2 license at GitHub:"},{"line_number":4,"context_line":"https://github.com/surcloudorg/SurFS"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_3e5578f9","line":1,"updated":"2016-06-24 14:46:37.000000000","message":"This kind of information will go in the openstack-manuals project. That is where end users expect to find driver configuration information.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d2360c5592e5a8047d0de7c5037de7cf3a863055","unresolved":false,"context_lines":[{"line_number":1,"context_line":"SurFS driver for Cinder v1.0"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":"SurFS is available as open source under the MPL v2 license at GitHub:"},{"line_number":4,"context_line":"https://github.com/surcloudorg/SurFS"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_e5fd5cb2","line":1,"in_reply_to":"3aaa91ec_3e5578f9","updated":"2016-06-29 13:25:57.000000000","message":"+1\n\nPlease remove this file and add necessary info in openstack-manuals.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":12,"context_line":"volume_backend_name\u003dSURFS_iSCSI_BEHIND"},{"line_number":13,"context_line":"volume_pool_name\u003dsur-pool"},{"line_number":14,"context_line":"volume_driver\u003dcinder.volume.drivers.sursen.surfs.surfsdriver.SurFSVolumeDriver"},{"line_number":15,"context_line":"capacity_reservation\u003d10  //Reserved space for pool,default value is 10G"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_1e9dcb59","line":15,"updated":"2016-06-27 16:48:43.000000000","message":"Can you use the existing config parameter in cinder.conf reserved_percentage?\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/driver.py#L49","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"}],"cinder/volume/drivers/sursen/ReadMe":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"......"},{"line_number":3,"context_line":"enabled_backends \u003dsurzfs"},{"line_number":4,"context_line":"......."}],"source_content_type":"application/octet-stream","patch_set":1,"id":"da0c15f0_fb77079d","line":1,"updated":"2016-03-26 10:05:08.000000000","message":"Up to you on including this readme, but if you make this an RST formatted file it can show up nicely formatted when browsed on github.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"}],"cinder/volume/drivers/sursen/__init__.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d00023f511946888f6c708f921dbede359147b5d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":6,"context_line":"#    a copy of the License at"},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"#         http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":9,"context_line":"#"},{"line_number":10,"context_line":"#    Unless required by applicable law or agreed to in writing, software"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_be496862","line":7,"updated":"2016-06-24 14:46:37.000000000","message":"Empty files should not have copyright headers.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"}],"cinder/volume/drivers/sursen/common.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# author:sursen"},{"line_number":2,"context_line":"# INIConfig: read or write ini"},{"line_number":3,"context_line":"# SysCmdExecute: command line executer"},{"line_number":4,"context_line":"# CommonUtils:common tools"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_3b721fae","line":1,"updated":"2016-03-26 10:05:08.000000000","message":"Needs Apache header.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"54be1c3945519ddde1c59d4f8bece9773ba051ab","unresolved":false,"context_lines":[{"line_number":15,"context_line":"        self.path \u003d path"},{"line_number":16,"context_line":"        self.cf \u003d ConfigParser.ConfigParser()"},{"line_number":17,"context_line":"        self.cf.read(self.path)"},{"line_number":18,"context_line":"        self.sign \u003d False"},{"line_number":19,"context_line":"        "},{"line_number":20,"context_line":"    def get(self, field, key):"},{"line_number":21,"context_line":"        result \u003d \"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_519a5d15","line":18,"updated":"2016-03-25 23:14:46.000000000","message":"whitespace","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":32,"context_line":"            return False"},{"line_number":33,"context_line":"        self.sign \u003d True"},{"line_number":34,"context_line":"        return True"},{"line_number":35,"context_line":"    "},{"line_number":36,"context_line":"    def remove_key(self, field, key):"},{"line_number":37,"context_line":"        try:"},{"line_number":38,"context_line":"            self.cf.remove_option(field, key)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_bb5e2f10","line":35,"updated":"2016-03-26 10:05:08.000000000","message":"Remove all the extra space on the blank lines.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            return False"},{"line_number":66,"context_line":"        return True"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"class SysCmdExecute(object):"},{"line_number":69,"context_line":"    def __init__(self, path\u003dNone):"},{"line_number":70,"context_line":"        self.outstr \u003d \u0027\u0027"},{"line_number":71,"context_line":"        self.rtcode \u003d 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_9bb08b45","line":68,"updated":"2016-03-26 10:05:08.000000000","message":"Search for \"rootwrap\" to properly handle executing external processes.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            else:"},{"line_number":105,"context_line":"                return n"},{"line_number":106,"context_line":"            "},{"line_number":107,"context_line":"    def get_all_devs_for_volume(self, key_str\u003dNone):"},{"line_number":108,"context_line":"        devarr \u003d []"},{"line_number":109,"context_line":"        devs \u003d os.listdir(self.path)"},{"line_number":110,"context_line":"        if key_str is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_1b83db57","line":107,"updated":"2016-03-26 10:05:08.000000000","message":"Is this os-brick functionality, or something local to your storage? Looks like stuff for an os-brick connector, if this is even doing anything different than the standard storage management.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d2360c5592e5a8047d0de7c5037de7cf3a863055","unresolved":false,"context_lines":[{"line_number":18,"context_line":"class INIConfig(object):"},{"line_number":19,"context_line":"    def __init__(self, path):"},{"line_number":20,"context_line":"        if path is None:"},{"line_number":21,"context_line":"            raise NameError(\u0027path is none!!!!\u0027)"},{"line_number":22,"context_line":"            return"},{"line_number":23,"context_line":"        self.path \u003d path"},{"line_number":24,"context_line":"        self.cf \u003d ConfigParser.ConfigParser()"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_e599dc7a","line":21,"updated":"2016-06-29 13:25:57.000000000","message":"Exception messages should be translated.\n\nSee http://docs.openstack.org/developer/oslo.i18n/guidelines.html","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d2360c5592e5a8047d0de7c5037de7cf3a863055","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    def __init__(self, path):"},{"line_number":20,"context_line":"        if path is None:"},{"line_number":21,"context_line":"            raise NameError(\u0027path is none!!!!\u0027)"},{"line_number":22,"context_line":"            return"},{"line_number":23,"context_line":"        self.path \u003d path"},{"line_number":24,"context_line":"        self.cf \u003d ConfigParser.ConfigParser()"},{"line_number":25,"context_line":"        self.cf.read(self.path)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_22375a00","line":22,"updated":"2016-06-29 13:25:57.000000000","message":"Please remove this.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d2360c5592e5a8047d0de7c5037de7cf3a863055","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        if \u0027M\u0027 in f_str:"},{"line_number":96,"context_line":"            return \u0027M\u0027"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def format_size(self, floatstr, signstr, basesign):"},{"line_number":99,"context_line":"        if floatstr is None or signstr is None:"},{"line_number":100,"context_line":"            return floatstr"},{"line_number":101,"context_line":"        if basesign \u003d\u003d \u0027G\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_b038b0d4","line":98,"range":{"start_line":98,"start_character":26,"end_line":98,"end_character":53},"updated":"2016-06-29 13:25:57.000000000","message":"Could you please add a doc comment? What are these params?","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d2360c5592e5a8047d0de7c5037de7cf3a863055","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        if cstr is None:"},{"line_number":135,"context_line":"            return None"},{"line_number":136,"context_line":"        def f(x):"},{"line_number":137,"context_line":"            if str(x).isdigit() or str(x) \u003d\u003d \".\":"},{"line_number":138,"context_line":"                return x"},{"line_number":139,"context_line":"            return"},{"line_number":140,"context_line":"        return filter(f, cstr)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_b01ef009","line":137,"range":{"start_line":137,"start_character":35,"end_line":137,"end_character":41},"updated":"2016-06-29 13:25:57.000000000","message":"I guess cstr is a string, then why do we need to convert to string here?","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        if cstr is None:"},{"line_number":135,"context_line":"            return None"},{"line_number":136,"context_line":"        def f(x):"},{"line_number":137,"context_line":"            if str(x).isdigit() or str(x) \u003d\u003d \".\":"},{"line_number":138,"context_line":"                return x"},{"line_number":139,"context_line":"            return"},{"line_number":140,"context_line":"        return filter(f, cstr)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_9e453bb5","line":137,"updated":"2016-06-27 16:48:43.000000000","message":"str() -\u003e six.text_type()","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d2360c5592e5a8047d0de7c5037de7cf3a863055","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        cmdstr\u003d[\u0027touch\u0027,file_path]"},{"line_number":146,"context_line":"        m_execute(*cmdstr, root_helper\u003dm_r_helper, run_as_root\u003dTrue)"},{"line_number":147,"context_line":"        anum\u003d0"},{"line_number":148,"context_line":"        while 1:"},{"line_number":149,"context_line":"            if os.path.exists(file_path) or anum \u003e5000:"},{"line_number":150,"context_line":"                cmdstr\u003d[\u0027chown\u0027,\u0027cinder:cinder\u0027,file_path]"},{"line_number":151,"context_line":"                m_execute(*cmdstr, root_helper\u003dm_r_helper, run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_308e802e","line":148,"range":{"start_line":148,"start_character":14,"end_line":148,"end_character":15},"updated":"2016-06-29 13:25:57.000000000","message":"nit: True","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d2360c5592e5a8047d0de7c5037de7cf3a863055","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        m_execute(*cmdstr, root_helper\u003dm_r_helper, run_as_root\u003dTrue)"},{"line_number":147,"context_line":"        anum\u003d0"},{"line_number":148,"context_line":"        while 1:"},{"line_number":149,"context_line":"            if os.path.exists(file_path) or anum \u003e5000:"},{"line_number":150,"context_line":"                cmdstr\u003d[\u0027chown\u0027,\u0027cinder:cinder\u0027,file_path]"},{"line_number":151,"context_line":"                m_execute(*cmdstr, root_helper\u003dm_r_helper, run_as_root\u003dTrue)"},{"line_number":152,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_70eac875","line":149,"updated":"2016-06-29 13:25:57.000000000","message":"I think you also need a sleep between the checks.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d2360c5592e5a8047d0de7c5037de7cf3a863055","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                break"},{"line_number":153,"context_line":"            else:"},{"line_number":154,"context_line":"                anum\u003danum + 1"},{"line_number":155,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_b0f6f08c","line":155,"range":{"start_line":155,"start_character":15,"end_line":155,"end_character":24},"updated":"2016-06-29 13:25:57.000000000","message":"not needed","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"}],"cinder/volume/drivers/sursen/iscsipatch.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"import os"},{"line_number":2,"context_line":"from cinder.volume.drivers.sursen import common"},{"line_number":3,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":4,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_9b97eb8f","line":1,"updated":"2016-03-26 10:05:08.000000000","message":"Apache header needed.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"import os"},{"line_number":2,"context_line":"from cinder.volume.drivers.sursen import common"},{"line_number":3,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":4,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"class InitiatorManager(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_bb8c6f80","line":3,"updated":"2016-03-26 10:05:08.000000000","message":"Should be using oslo_log.\n\nImports should also be in alphabetical order, grouped by standard libs, third party libs, then local imports.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"54be1c3945519ddde1c59d4f8bece9773ba051ab","unresolved":false,"context_lines":[{"line_number":17,"context_line":"        if len(self.inicfg.get_sections())\u003d\u003d0:"},{"line_number":18,"context_line":"            self.inicfg.create_seciton(\u0027ISCSIDEFAULT\u0027)"},{"line_number":19,"context_line":"            self.inicfg.create_seciton(\u0027INITNAMELIST\u0027)"},{"line_number":20,"context_line":"            self.inicfg.op_execute()"},{"line_number":21,"context_line":"    "},{"line_number":22,"context_line":"    def add_vol_initname_pair(self,volumename,initname):"},{"line_number":23,"context_line":"        self.inicfg.set(\u0027INITNAMELIST\u0027,volumename,initname)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_f189f1cb","line":20,"updated":"2016-03-25 23:14:46.000000000","message":"whitespace","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","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":"import os"},{"line_number":17,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":18,"context_line":"from cinder.volume.drivers.sursen import common"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_41f2d607","line":16,"updated":"2016-06-27 16:48:43.000000000","message":"Please add an empty line after this.\n\nhttp://docs.openstack.org/developer/hacking/#import-order-template","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class InitiatorManager(object):"},{"line_number":23,"context_line":"    def __init__(self,initpath,iexecute,i_helper):"},{"line_number":24,"context_line":"        if initpath is None or iexecute is None or i_helper is None:"},{"line_number":25,"context_line":"            raise NameError(\u0027InitiatorManager init error\u0027)"},{"line_number":26,"context_line":"        if os.path.exists(initpath):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_7e0b2f2c","line":23,"updated":"2016-06-27 16:48:43.000000000","message":"Need a space after the comma.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d2360c5592e5a8047d0de7c5037de7cf3a863055","unresolved":false,"context_lines":[{"line_number":22,"context_line":"class InitiatorManager(object):"},{"line_number":23,"context_line":"    def __init__(self,initpath,iexecute,i_helper):"},{"line_number":24,"context_line":"        if initpath is None or iexecute is None or i_helper is None:"},{"line_number":25,"context_line":"            raise NameError(\u0027InitiatorManager init error\u0027)"},{"line_number":26,"context_line":"        if os.path.exists(initpath):"},{"line_number":27,"context_line":"            pass"},{"line_number":28,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_f0f6b85b","line":25,"updated":"2016-06-29 13:25:57.000000000","message":"Need to translate exception messages.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":25,"context_line":"            raise NameError(\u0027InitiatorManager init error\u0027)"},{"line_number":26,"context_line":"        if os.path.exists(initpath):"},{"line_number":27,"context_line":"            pass"},{"line_number":28,"context_line":"        else:"},{"line_number":29,"context_line":"            icomm\u003dcommon.CommonUtils()"},{"line_number":30,"context_line":"            icomm.create_cinder_file(iexecute, i_helper, initpath)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_a151fada","line":28,"updated":"2016-06-27 16:48:43.000000000","message":"Use \"if not os.path.exists(initpath):\" to replace lines 26-28.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"}],"cinder/volume/drivers/sursen/surdrivers.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"import socket"},{"line_number":2,"context_line":"from cinder import utils"},{"line_number":3,"context_line":"from oslo.config import cfg"},{"line_number":4,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_fbec272b","line":1,"updated":"2016-03-26 10:05:08.000000000","message":"Header needed and imports need to be organized. I don\u0027t think the brick functionality should be imported here either.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"54be1c3945519ddde1c59d4f8bece9773ba051ab","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"CONF \u003d cfg.CONF"},{"line_number":125,"context_line":"CONF.register_opts(volume_opts)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"class SurIscsiVolumeDriver(driver.VolumeDriver):"},{"line_number":128,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":129,"context_line":"        super(SurIscsiVolumeDriver, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_11746533","line":126,"updated":"2016-03-25 23:14:46.000000000","message":"There is a lot of excess whitespace in this class that should be removed (all the red areas).","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        "},{"line_number":134,"context_line":"        self.hostname \u003d socket.gethostname()"},{"line_number":135,"context_line":"        "},{"line_number":136,"context_line":"        self.iscsiobj \u003d driver.ISCSIDriver(*args, **kwargs)"},{"line_number":137,"context_line":"        self.target_helper \u003d self.iscsiobj.get_target_helper(self.db)"},{"line_number":138,"context_line":"        self.targetbase \u003d iscsi.LioAdm(root_helper\u003dself.r_helper,"},{"line_number":139,"context_line":"                              execute\u003dself._execute)     "}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_9bdecb6b","line":136,"updated":"2016-03-26 10:05:08.000000000","message":"Maybe better to inherit from ISCSIDriver instead?","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        try:"},{"line_number":231,"context_line":"            iscsi_target \u003d self.db.volume_get_iscsi_target_num(context, volume[\u0027id\u0027])"},{"line_number":232,"context_line":"        except exception.NotFound:"},{"line_number":233,"context_line":"            LOG.info(\"Skipping remove_export. No iscsi_target, provisioned for volume: %s\" % volume[\u0027id\u0027])"},{"line_number":234,"context_line":"            return"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        self.targetbase.remove_iscsi_target(iscsi_target, 0, volume[\u0027id\u0027], volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_bbe3cf32","line":233,"updated":"2016-03-26 10:05:08.000000000","message":"Needs _LI() translation marker.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        try:"},{"line_number":238,"context_line":"            self.initiator_manager.remove_vol_initname_pair(volume[\u0027id\u0027])"},{"line_number":239,"context_line":"        except:"},{"line_number":240,"context_line":"            LOG.warn(\u0027Failed to remove initiator for the volume %s\u0027 \u0026volume[\u0027name\u0027])"},{"line_number":241,"context_line":"        "},{"line_number":242,"context_line":"    def validate_connector(self, connector):"},{"line_number":243,"context_line":"        self.iscsiobj.validate_connector(connector)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_3bce9fb4","line":240,"updated":"2016-03-26 10:05:08.000000000","message":"LOG.warn is deprecated, use LOG.warning instead.\n\nNeeds _LW() translation on the string.\n\nMissing comma before your format value.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":247,"context_line":"            # self.target_helper.initialize_connection(volume, connector)"},{"line_number":248,"context_line":"            volume_iqn \u003d volume[\u0027provider_location\u0027].split(\u0027 \u0027)[1]"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"            (auth_method, auth_user, auth_pass) \u003d \\"},{"line_number":251,"context_line":"                     volume[\u0027provider_auth\u0027].split(\u0027 \u0027, 3)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        # Add initiator iqns to target ACL"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_7bc0177d","line":250,"updated":"2016-03-26 10:05:08.000000000","message":"Wrap the assignment in parentheses to avoid using \\ for line continuation.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                          connector[\u0027initiator\u0027],"},{"line_number":260,"context_line":"                          run_as_root\u003dTrue)"},{"line_number":261,"context_line":"            except putils.ProcessExecutionError:"},{"line_number":262,"context_line":"                LOG.error(_(\"Failed to add initiator iqn %s to target\") % connector[\u0027initiator\u0027])"},{"line_number":263,"context_line":"                raise iexception.ISCSITargetAttachFailed(volume_id\u003dvolume[\u0027id\u0027])"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        iscsi_properties \u003d self.iscsiobj._get_iscsi_properties(volume)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_dbbfa3f9","line":262,"updated":"2016-03-26 10:05:08.000000000","message":"Should be _LE(). Change % to , to pass in formatting values to the logger to format the string when actually needed.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        try:"},{"line_number":267,"context_line":"            self.initiator_manager.add_vol_initname_pair(volume[\u0027id\u0027], connector[\u0027initiator\u0027])"},{"line_number":268,"context_line":"        except:"},{"line_number":269,"context_line":"            LOG.warn(\u0027Failed to record the initiator for the volume %s\u0027%volume[\u0027id\u0027])"},{"line_number":270,"context_line":"        return {"},{"line_number":271,"context_line":"            \u0027driver_volume_type\u0027: \u0027iscsi\u0027,"},{"line_number":272,"context_line":"            \u0027data\u0027: iscsi_properties"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_bbbaaf08","line":269,"updated":"2016-03-26 10:05:08.000000000","message":"/warn/warning/","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"54be1c3945519ddde1c59d4f8bece9773ba051ab","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        try:"},{"line_number":295,"context_line":"            volume_info \u003d self.target_helper.db.volume_get(context, volume[\u0027id\u0027])"},{"line_number":296,"context_line":"        except exception.NotFound:"},{"line_number":297,"context_line":"            LOG.info(_(\"Skipping ensure_export. No iscsi_target \""},{"line_number":298,"context_line":"                       \"provision for volume: %s\"), volume[\u0027id\u0027])"},{"line_number":299,"context_line":"            return"},{"line_number":300,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_d1f5cd83","line":297,"range":{"start_line":297,"start_character":21,"end_line":297,"end_character":22},"updated":"2016-03-25 23:14:46.000000000","message":"You need to import _ from the il8n module to use it for LOG messages.\n\nAdd \u0027from cinder.i18n import _\u0027 to the top of this file.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":315,"context_line":"    def _ensure_patch(self,iscsi_name,auth_usrid,auth_passwd,volid):"},{"line_number":316,"context_line":"        initname\u003dself.initiator_manager.get_vol_initname(volid)"},{"line_number":317,"context_line":"        if initname is None or initname\u003d\u003d\u0027\u0027:"},{"line_number":318,"context_line":"            LOG.warn(\u0027Failed to get initname for volume-%s\u0027%volid)"},{"line_number":319,"context_line":"            return"},{"line_number":320,"context_line":"        try:"},{"line_number":321,"context_line":"            self._execute(\u0027cinder-rtstool\u0027, \u0027add-initiator\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_1b38fb9f","line":318,"updated":"2016-03-26 10:05:08.000000000","message":"/warn/warning/\n\nFix spacing and change % to , before volid.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                          initname,"},{"line_number":326,"context_line":"                          run_as_root\u003dTrue)"},{"line_number":327,"context_line":"        except:"},{"line_number":328,"context_line":"            LOG.warn(\u0027Failed to add-initiator for volume-%s\u0027%volid)                      "},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":331,"context_line":"        \"\"\"Get volume status."}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_fb3a6797","line":328,"updated":"2016-03-26 10:05:08.000000000","message":"Same.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":343,"context_line":"        pass"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"class SurFibreChannelDriver(driver.FibreChannelDriver):"},{"line_number":346,"context_line":"    def __init__(self):"},{"line_number":347,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_5b427311","line":346,"updated":"2016-03-26 10:05:08.000000000","message":"You should probably mark this as WIP if you are still working on this.","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinder.brick import exception as iexception"},{"line_number":26,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":27,"context_line":"from cinder.volume.drivers.sursen import iscsipatch"},{"line_number":28,"context_line":"from cinder.openstack.common import processutils as putils"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_4125b65a","line":28,"updated":"2016-06-27 16:48:43.000000000","message":"http://docs.openstack.org/developer/hacking/#import-order-template","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"f1503cf111af06580a26065192876276517fd25a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"volume_opts \u003d ["},{"line_number":34,"context_line":"    cfg.IntOpt(\u0027num_shell_tries\u0027,"},{"line_number":35,"context_line":"               default\u003d3,"},{"line_number":36,"context_line":"               help\u003d\u0027Number of times to attempt to run flakey shell commands\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_14c851a5","line":33,"updated":"2016-06-24 18:58:37.000000000","message":"Please don\u0027t re-define all of these common driver options... they already exist from the base driver class.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"volume_opts \u003d ["},{"line_number":34,"context_line":"    cfg.IntOpt(\u0027num_shell_tries\u0027,"},{"line_number":35,"context_line":"               default\u003d3,"},{"line_number":36,"context_line":"               help\u003d\u0027Number of times to attempt to run flakey shell commands\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_81715e7a","line":33,"in_reply_to":"3aaa91ec_14c851a5","updated":"2016-06-27 16:48:43.000000000","message":"+1","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"f1503cf111af06580a26065192876276517fd25a","unresolved":false,"context_lines":[{"line_number":140,"context_line":"CONF \u003d cfg.CONF"},{"line_number":141,"context_line":"CONF.register_opts(volume_opts)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"class SurIscsiVolumeDriver(driver.VolumeDriver):"},{"line_number":144,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":145,"context_line":"        super(SurIscsiVolumeDriver, self).__init__(*args, **kwargs)"},{"line_number":146,"context_line":"        self.configuration.append_config_values(volume_opts)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_f4702574","line":143,"updated":"2016-06-24 18:58:37.000000000","message":"Did you guys modify anything here or just duplicate the base iscsi driver? Why was this done?","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":140,"context_line":"CONF \u003d cfg.CONF"},{"line_number":141,"context_line":"CONF.register_opts(volume_opts)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"class SurIscsiVolumeDriver(driver.VolumeDriver):"},{"line_number":144,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":145,"context_line":"        super(SurIscsiVolumeDriver, self).__init__(*args, **kwargs)"},{"line_number":146,"context_line":"        self.configuration.append_config_values(volume_opts)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_875dee4a","line":143,"in_reply_to":"3aaa91ec_f4702574","updated":"2016-06-27 16:48:43.000000000","message":"I do see lots of duplications but there are modifications as well.  It will be good if the duplicated part can just call the existing functions.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        if self.volume_dd_bksize.isdigit() is False:"},{"line_number":160,"context_line":"            self.volume_dd_bksize \u003d \u00271M\u0027"},{"line_number":161,"context_line":"        else:"},{"line_number":162,"context_line":"            if int(self.volume_dd_bksize) \u003e 1000 or int(self.volume_dd_bksize) \u003c 1024:"},{"line_number":163,"context_line":"                self.volume_dd_bksize \u003d \u00271M\u0027"},{"line_number":164,"context_line":"            else:"},{"line_number":165,"context_line":"                self.volume_dd_bksize \u003d int(self.volume_dd_bksize) * 1024"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_e1b942cd","line":162,"updated":"2016-06-27 16:48:43.000000000","message":"Use Ki in units for 1024.\n\nhttps://github.com/openstack/oslo.utils/blob/master/oslo_utils/units.py#L21","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d2360c5592e5a8047d0de7c5037de7cf3a863055","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        # Linux ZFS reserves name that starts with snapshot, so that"},{"line_number":182,"context_line":"        # such volume name can\u0027t be created. Mangle it."},{"line_number":183,"context_line":"        if \u0027@\u0027 in snapshot_name:"},{"line_number":184,"context_line":"            raise NameError(\u0027wrong snapshot name\u0027)"},{"line_number":185,"context_line":"        return snapshot_name"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def _get_iscsitarget_chap_auth(self, context, iscsi_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_cb42f13d","line":184,"updated":"2016-06-29 13:25:57.000000000","message":"Need to translate exception messages.\nSee http://docs.openstack.org/developer/oslo.i18n/guidelines.html","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        try:"},{"line_number":189,"context_line":"            # \u0027iscsi_name\u0027: \u0027iqn.2010-10.org.openstack:volume-00000001\u0027"},{"line_number":190,"context_line":"            vol_id \u003d iscsi_name.split(\u0027:volume-\u0027)[1]"},{"line_number":191,"context_line":"            volume_info \u003d self.db.volume_get(context, vol_id)"},{"line_number":192,"context_line":"            # \u0027provider_auth\u0027: \u0027CHAP user_id password\u0027"},{"line_number":193,"context_line":"            if volume_info[\u0027provider_auth\u0027]:"},{"line_number":194,"context_line":"                return tuple(volume_info[\u0027provider_auth\u0027].split(\u0027 \u0027, 3)[1:])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_64e3a006","line":191,"updated":"2016-06-27 16:48:43.000000000","message":"Is there a way for you to pass volume as a parameter to this function?  We do not recommend a driver to access db directly.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        }"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def remove_export(self, context, volume):"},{"line_number":245,"context_line":"        # self.target_helper.remove_export(context, volume)"},{"line_number":246,"context_line":"        try:"},{"line_number":247,"context_line":"            iscsi_target \u003d self.db.volume_get_iscsi_target_num(context, volume[\u0027id\u0027])"},{"line_number":248,"context_line":"        except exception.NotFound:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_a49bc871","line":245,"updated":"2016-06-27 16:48:43.000000000","message":"Remove commented out code.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d2360c5592e5a8047d0de7c5037de7cf3a863055","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        try:"},{"line_number":247,"context_line":"            iscsi_target \u003d self.db.volume_get_iscsi_target_num(context, volume[\u0027id\u0027])"},{"line_number":248,"context_line":"        except exception.NotFound:"},{"line_number":249,"context_line":"            LOG.info(\"Skipping remove_export. No iscsi_target, provisioned for volume: %s\" % volume[\u0027id\u0027])"},{"line_number":250,"context_line":"            return"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        self.targetbase.remove_iscsi_target(iscsi_target, 0, volume[\u0027id\u0027], volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_0b6079ce","line":249,"updated":"2016-06-29 13:25:57.000000000","message":"_LI(\"..\")\n\nSee http://docs.openstack.org/developer/oslo.i18n/guidelines.html\n\nPlease fix other log messages.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":262,"context_line":"        if CONF.iscsi_helper \u003d\u003d \u0027lioadm\u0027:"},{"line_number":263,"context_line":"            # self.target_helper.initialize_connection(volume, connector)"},{"line_number":264,"context_line":"            volume_iqn \u003d volume[\u0027provider_location\u0027].split(\u0027 \u0027)[1]"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"            (auth_method, auth_user, auth_pass) \u003d \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_6478c02c","line":263,"updated":"2016-06-27 16:48:43.000000000","message":"Remove commented out code.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":263,"context_line":"            # self.target_helper.initialize_connection(volume, connector)"},{"line_number":264,"context_line":"            volume_iqn \u003d volume[\u0027provider_location\u0027].split(\u0027 \u0027)[1]"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"            (auth_method, auth_user, auth_pass) \u003d \\"},{"line_number":267,"context_line":"                     volume[\u0027provider_auth\u0027].split(\u0027 \u0027, 3)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        # Add initiator iqns to target ACL"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_4498246b","line":266,"updated":"2016-06-27 16:48:43.000000000","message":"Use () instead of \\ for statement spanning in multiple lines.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                          run_as_root\u003dTrue)"},{"line_number":277,"context_line":"            except putils.ProcessExecutionError:"},{"line_number":278,"context_line":"                LOG.error(_(\"Failed to add initiator iqn %s to target\") % connector[\u0027initiator\u0027])"},{"line_number":279,"context_line":"                raise iexception.ISCSITargetAttachFailed(volume_id\u003dvolume[\u0027id\u0027])"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        iscsi_properties \u003d self.iscsiobj._get_iscsi_properties(volume)"},{"line_number":282,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_44d024ca","line":279,"updated":"2016-06-27 16:48:43.000000000","message":"A lot of code is from here:\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/targets/lio.py#L164\n\nIs it possible to use the existing code rather than duplicating them here?","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"f1503cf111af06580a26065192876276517fd25a","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"        return self._stats"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"class SurRemotefsDriver(remotefs.RemoteFSDriver):"},{"line_number":357,"context_line":"    def __init__(self):"},{"line_number":358,"context_line":"        pass"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"class SurFibreChannelDriver(driver.FibreChannelDriver):"},{"line_number":361,"context_line":"    def __init__(self):"},{"line_number":362,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_b4433d12","line":362,"range":{"start_line":356,"start_character":0,"end_line":362,"end_character":12},"updated":"2016-06-24 18:58:37.000000000","message":"What is this for? These don\u0027t seem to be used by anything, and surely don\u0027t function correctly as drivers...","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"        return self._stats"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"class SurRemotefsDriver(remotefs.RemoteFSDriver):"},{"line_number":357,"context_line":"    def __init__(self):"},{"line_number":358,"context_line":"        pass"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"class SurFibreChannelDriver(driver.FibreChannelDriver):"},{"line_number":361,"context_line":"    def __init__(self):"},{"line_number":362,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_e4bf905e","line":362,"range":{"start_line":356,"start_character":0,"end_line":362,"end_character":12},"in_reply_to":"3aaa91ec_b4433d12","updated":"2016-06-27 16:48:43.000000000","message":"+1.  Those two classes should be removed.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"}],"cinder/volume/drivers/sursen/surfs/__init__.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2016 SurCloud"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_e4667028","line":1,"updated":"2016-06-27 16:48:43.000000000","message":"Don\u0027t add copyright info to an empty file.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"}],"cinder/volume/drivers/sursen/surfs/surfscmdexecute.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c974b4f193d265c41025f7dfff573fc00cd128b9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"import os"},{"line_number":2,"context_line":"import json"},{"line_number":3,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":4,"context_line":"from cinder import utils"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_9b4c0b44","line":1,"updated":"2016-03-26 10:05:08.000000000","message":"Header","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"54be1c3945519ddde1c59d4f8bece9773ba051ab","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        dmsg\u003djson.loads(msg)"},{"line_number":44,"context_line":"        stmsg\u003ddmsg[\u0027success\u0027]"},{"line_number":45,"context_line":"        if stmsg is False:"},{"line_number":46,"context_line":"            return"},{"line_number":47,"context_line":"        datamsg\u003ddmsg[\u0027data\u0027]"},{"line_number":48,"context_line":"        ips\u003dself.inicfg.get(\u0027SURDEFAULT\u0027,\u0027IPS\u0027)"},{"line_number":49,"context_line":"        newips\u003d\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_11abc575","line":46,"updated":"2016-03-25 23:14:46.000000000","message":"Lots of white space and there should be a space before and after operators.  ex.  a\u003d\u003db should be a \u003d\u003d b","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class SurFSStatus(object):"},{"line_number":27,"context_line":"    def __init__(self,path\u003d\u0027/etc/surfs\u0027,filename\u003d\u0027poolmsg.ini\u0027,execute\u003dNone,helper\u003dNone):"},{"line_number":28,"context_line":"        if os.path.exists(path):"},{"line_number":29,"context_line":"            pass"},{"line_number":30,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_845dec4a","line":27,"updated":"2016-06-27 16:48:43.000000000","message":"A space is needed after \",\".","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.freesize\u003d0"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def get_pool_size(self):"},{"line_number":52,"context_line":"        bk\u003d1024 * 1024 * 1024"},{"line_number":53,"context_line":"        t_size\u003dself.totalsize / bk"},{"line_number":54,"context_line":"        f_size\u003dself.freesize / bk"},{"line_number":55,"context_line":"        return t_size,f_size"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_87120e57","line":52,"updated":"2016-06-27 16:48:43.000000000","message":"Use units.Gi\n\nhttps://github.com/openstack/oslo.utils/blob/master/oslo_utils/units.py#L25","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        cmdstr\u003d[\u0027surfs\u0027,\u0027connect\u0027]"},{"line_number":98,"context_line":"        try:"},{"line_number":99,"context_line":"            (getpoolmsg,_) \u003d self._execute(*cmdstr, root_helper\u003dself.r_helper, run_as_root\u003dTrue)"},{"line_number":100,"context_line":"        except:"},{"line_number":101,"context_line":"            raise NameError(\u0027Failed to connect surfs\u0027)"},{"line_number":102,"context_line":"        self.sur_status.refresh_pool_msg(getpoolmsg)"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_47566607","line":100,"updated":"2016-06-27 16:48:43.000000000","message":"Need a specific Exception here.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        try:"},{"line_number":99,"context_line":"            (getpoolmsg,_) \u003d self._execute(*cmdstr, root_helper\u003dself.r_helper, run_as_root\u003dTrue)"},{"line_number":100,"context_line":"        except:"},{"line_number":101,"context_line":"            raise NameError(\u0027Failed to connect surfs\u0027)"},{"line_number":102,"context_line":"        self.sur_status.refresh_pool_msg(getpoolmsg)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def check_volume_exist(self, volumename\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_079a9ec5","line":101,"updated":"2016-06-27 16:48:43.000000000","message":"Should use VolumeBackendAPIException or VolumeDriverException in exception.py.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.sur_status.refresh_pool_msg(getpoolmsg)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def check_volume_exist(self, volumename\u003dNone):"},{"line_number":105,"context_line":"        pass"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def create_vol_from_snap(self,vol_name,snap_name,vol_size,src_size):"},{"line_number":108,"context_line":"        if src_size + 1 \u003e vol_size:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_a7b58a32","line":105,"updated":"2016-06-27 16:48:43.000000000","message":"How can this always pass without checking anything?","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    def create_vol_from_snap(self,vol_name,snap_name,vol_size,src_size):"},{"line_number":108,"context_line":"        if src_size + 1 \u003e vol_size:"},{"line_number":109,"context_line":"            vol_size\u003dsrc_size + 1"},{"line_number":110,"context_line":"        vsize\u003dstr(vol_size) + \u0027g\u0027"},{"line_number":111,"context_line":"        cmdstr\u003d[\u0027surfs\u0027,\u0027snap_to_volume\u0027,snap_name,vol_name,vsize]"},{"line_number":112,"context_line":"        try:"},{"line_number":113,"context_line":"            (r_msg,_)\u003dself._execute(*cmdstr, root_helper\u003dself.r_helper, run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_87dcce75","line":110,"updated":"2016-06-27 16:48:43.000000000","message":"str() -\u003e six.text_type()","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        cmdstr\u003d[\u0027surfs\u0027,\u0027snap_to_volume\u0027,snap_name,vol_name,vsize]"},{"line_number":112,"context_line":"        try:"},{"line_number":113,"context_line":"            (r_msg,_)\u003dself._execute(*cmdstr, root_helper\u003dself.r_helper, run_as_root\u003dTrue)"},{"line_number":114,"context_line":"        except:"},{"line_number":115,"context_line":"            raise NameError(\u0027Failed to do command for creating volume :%s\u0027%vol_name)"},{"line_number":116,"context_line":"        rmsg\u003djson.loads(r_msg)"},{"line_number":117,"context_line":"        if rmsg[\u0027success\u0027] is False:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_a7510adb","line":114,"updated":"2016-06-27 16:48:43.000000000","message":"Need a specific Exception.  This applies to all places where you have try and except.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            raise NameError(\u0027Failed to do command for creating volume :%s\u0027%vol_name)"},{"line_number":116,"context_line":"        rmsg\u003djson.loads(r_msg)"},{"line_number":117,"context_line":"        if rmsg[\u0027success\u0027] is False:"},{"line_number":118,"context_line":"            raise NameError(\u0027Failed to create volume :%s\u0027%vol_name)"},{"line_number":119,"context_line":"        try:"},{"line_number":120,"context_line":"            self._refresh_pool_msg()"},{"line_number":121,"context_line":"        except:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_67c0c27d","line":118,"updated":"2016-06-27 16:48:43.000000000","message":"See comment on line 101.  This should not be a NameError. \n\nThis comment applies to many other places where you used NameError.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        try:"},{"line_number":120,"context_line":"            self._refresh_pool_msg()"},{"line_number":121,"context_line":"        except:"},{"line_number":122,"context_line":"            LOG.warn(\u0027Failed to update status of pool\u0027)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def create_surfs_snapshot(self,snap_name,src_vol_name):"},{"line_number":125,"context_line":"        cmdstr\u003d[\u0027surfs\u0027,\u0027snap\u0027,src_vol_name,snap_name]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_e72f923c","line":122,"updated":"2016-06-27 16:48:43.000000000","message":"Need _LE","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            (r_msg,_)\u003dself._execute(*cmdstr, root_helper\u003dself.r_helper, run_as_root\u003dTrue)"},{"line_number":128,"context_line":"        except:"},{"line_number":129,"context_line":"            raise NameError(\u0027Failed to do command for creating snapshot :%s\u0027%snap_name)"},{"line_number":130,"context_line":"        rmsg\u003djson.loads(r_msg)"},{"line_number":131,"context_line":"        if rmsg[\u0027success\u0027] is False:"},{"line_number":132,"context_line":"            raise NameError(\u0027Failed to create snapshot :%s\u0027%snap_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_67e3a206","line":129,"updated":"2016-06-27 16:48:43.000000000","message":"All exception messages need to use _","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        except putils.ProcessExecutionError as err:"},{"line_number":215,"context_line":"            LOG.error(_(\u0027Cmd     :%s\u0027) % err.cmd)"},{"line_number":216,"context_line":"            LOG.error(_(\u0027StdOut  :%s\u0027) % err.stdout)"},{"line_number":217,"context_line":"            LOG.error(_(\u0027StdErr  :%s\u0027) % err.stderr)"},{"line_number":218,"context_line":"            raise NameError(\u0027Failed to create surfs :%s\u0027 %name)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        rmsg\u003djson.loads(rtmsg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_c79ed662","line":217,"updated":"2016-06-27 16:48:43.000000000","message":"Need _LE for error messages.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":215,"context_line":"            LOG.error(_(\u0027Cmd     :%s\u0027) % err.cmd)"},{"line_number":216,"context_line":"            LOG.error(_(\u0027StdOut  :%s\u0027) % err.stdout)"},{"line_number":217,"context_line":"            LOG.error(_(\u0027StdErr  :%s\u0027) % err.stderr)"},{"line_number":218,"context_line":"            raise NameError(\u0027Failed to create surfs :%s\u0027 %name)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        rmsg\u003djson.loads(rtmsg)"},{"line_number":221,"context_line":"        if rmsg[\u0027success\u0027] is False:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_478146fb","line":218,"updated":"2016-06-27 16:48:43.000000000","message":"Need _\n\nAlso see previous comments on the Exception type.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"8889fc6a1ee89ffc1a483fa0bd3b8b2c3fb09cab","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            self._refresh_pool_msg()"},{"line_number":226,"context_line":"        except:"},{"line_number":227,"context_line":"            LOG.warn(\u0027Failed to update status of pool\u0027)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def _get_pool_status(self):"},{"line_number":230,"context_line":"        return self.sur_status.get_pool_size()"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_e378fafa","line":227,"range":{"start_line":227,"start_character":21,"end_line":227,"end_character":55},"updated":"2016-07-08 22:29:36.000000000","message":"This should also get translated like the link that Vipin posted in an earlier file.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"}],"cinder/volume/drivers/sursen/surfs/surfsdriver.py":[{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"54be1c3945519ddde1c59d4f8bece9773ba051ab","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":34,"context_line":"        self.db \u003d kwargs.get(\u0027db\u0027)"},{"line_number":35,"context_line":"        super(SurFSVolumeDriver, self).__init__(*args, **kwargs)"},{"line_number":36,"context_line":"        self.configuration.append_config_values(volume_opts)"},{"line_number":37,"context_line":"                              "},{"line_number":38,"context_line":"        self.backend_name \u003d \\"},{"line_number":39,"context_line":"               self.configuration.safe_get(\u0027volume_backend_name\u0027) or \u0027SURFS_iSCSI_BEHIND\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_b1b65988","line":36,"updated":"2016-03-25 23:14:46.000000000","message":"whitespace","commit_id":"f20837db1a2bc28eb72341810c2b02a2ce165603"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from cinder.volume import utils as cutils"},{"line_number":18,"context_line":"from cinder.volume.drivers.sursen import surdrivers"},{"line_number":19,"context_line":"from cinder.volume.drivers.sursen.surfs import surfscmdexecute"},{"line_number":20,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_c7753633","line":20,"updated":"2016-06-27 16:48:43.000000000","message":"See previous comments on import style.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"8889fc6a1ee89ffc1a483fa0bd3b8b2c3fb09cab","unresolved":false,"context_lines":[{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"volume_opts \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027surfs_pool\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027sur_pool\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Name for the pool that will contain exported volumes\u0027),"},{"line_number":28,"context_line":"    cfg.IntOpt(\u0027surfs_mirrors\u0027,"},{"line_number":29,"context_line":"               default\u003d0,"},{"line_number":30,"context_line":"               help\u003d\u0027If \u003e0, create LVs with multiple mirrors. Note that \u0027"},{"line_number":31,"context_line":"                    \u0027this requires surfs_mirrors + 2 LVs with available space\u0027),"},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027surfs_type\u0027,"},{"line_number":33,"context_line":"               default\u003d\u0027default\u0027,"},{"line_number":34,"context_line":"               help\u003d\u0027Type of surfs volumes to deploy; (default or thin)\u0027),"},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027surfs_cfg_path\u0027,"},{"line_number":36,"context_line":"               default\u003d\u0027/etc/surfs\u0027,"},{"line_number":37,"context_line":"               help\u003d\u0027Type of surfs volumes to deploy; (default or thin)\u0027),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027capacity_reservation\u0027,"},{"line_number":39,"context_line":"               default\u003d10,"},{"line_number":40,"context_line":"               help\u003d\u0027reservation for pool\u0027),"},{"line_number":41,"context_line":"    ]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"CONF \u003d cfg.CONF"},{"line_number":44,"context_line":"CONF.register_opts(volume_opts)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_2335e245","line":41,"range":{"start_line":24,"start_character":0,"end_line":41,"end_character":5},"updated":"2016-07-08 22:29:36.000000000","message":"You have volume_opts being defined in two different files? Can you make the same ones common_surfs_opts or something?","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":46,"context_line":"class SurFSVolumeDriver(surdrivers.SurIscsiVolumeDriver):"},{"line_number":47,"context_line":"    VERSION \u003d \u00271.0.0\u0027"},{"line_number":48,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":49,"context_line":"        self.db \u003d kwargs.get(\u0027db\u0027)"},{"line_number":50,"context_line":"        super(SurFSVolumeDriver, self).__init__(*args, **kwargs)"},{"line_number":51,"context_line":"        self.configuration.append_config_values(volume_opts)"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_a7a90a7e","line":49,"updated":"2016-06-27 16:48:43.000000000","message":"Driver should not access db directly.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        super(SurFSVolumeDriver, self).__init__(*args, **kwargs)"},{"line_number":51,"context_line":"        self.configuration.append_config_values(volume_opts)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        self.backend_name \u003d \\"},{"line_number":54,"context_line":"               self.configuration.safe_get(\u0027volume_backend_name\u0027) or \u0027SURFS_iSCSI_BEHIND\u0027"},{"line_number":55,"context_line":"        self.poolname \u003d self.configuration.safe_get(\u0027volume_pool_name\u0027) or \u0027sur-pool\u0027"},{"line_number":56,"context_line":"        self.surfs_cfg_path\u003dself.configuration.safe_get(\u0027surfs_cfg_path\u0027) or \u0027/etc/surfs\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_279d1a5a","line":53,"updated":"2016-06-27 16:48:43.000000000","message":"Use () instead of \\","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.poolname \u003d self.configuration.safe_get(\u0027volume_pool_name\u0027) or \u0027sur-pool\u0027"},{"line_number":56,"context_line":"        self.surfs_cfg_path\u003dself.configuration.safe_get(\u0027surfs_cfg_path\u0027) or \u0027/etc/surfs\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        resverper\u003dself.configuration.safe_get(\u0027capacity_reservation\u0027)"},{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            self.reservation\u003dfloat(resverper)"},{"line_number":61,"context_line":"        except:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_e7e032cf","line":58,"updated":"2016-06-27 16:48:43.000000000","message":"Suggest to use existing config parameter reserved_percentage.","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            free_capacity\u003dfloat(\u0027%0.1f\u0027%xcapa)"},{"line_number":87,"context_line":"        else:"},{"line_number":88,"context_line":"            free_capacity\u003d0.0"},{"line_number":89,"context_line":"        location_info \u003d \\"},{"line_number":90,"context_line":"            (\u0027SurFSVolumeDriver:%(hostname)s:%(surfs_pool)s\u0027"},{"line_number":91,"context_line":"             \u0027:%(surfs_type)s:%(surfs_mirrors)s\u0027 %"},{"line_number":92,"context_line":"             {\u0027hostname\u0027: self.hostname,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_a7ee2ab2","line":89,"updated":"2016-06-27 16:48:43.000000000","message":"()","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"31cf8b3dbff58dffb521f8f78cccbde8b2528203","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            free_capacity_gb\u003dfree_capacity,"},{"line_number":103,"context_line":"            reserved_percentage\u003dself.configuration.reserved_percentage,"},{"line_number":104,"context_line":"            location_info\u003dlocation_info,"},{"line_number":105,"context_line":"            QoS_support\u003dFalse,"},{"line_number":106,"context_line":"        ))"},{"line_number":107,"context_line":"        data[\"pools\"].append(single_pool)"},{"line_number":108,"context_line":"        return data"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_8725ee0b","line":105,"updated":"2016-06-27 16:48:43.000000000","message":"Better to use {\"key\": \"value\", ……} than dict().","commit_id":"bd5404d9b49832f948422b8238ff32eb284b47c3"}]}
