)]}'
{"cinder/tests/test_emc.py":[{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d222b47227432134a2b617178e23a110951b5db1","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":16,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from cinder import exception"},{"line_number":20,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":21,"context_line":"from cinder import test"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5P0%3D","line":18,"updated":"2012-12-24 03:15:05.000000000","message":"exception never used","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90063cfb39c4fd8a6bdd3b2775445c0b26a95a57","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":16,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from cinder import exception"},{"line_number":20,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":21,"context_line":"from cinder import test"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5EU%3D","line":18,"in_reply_to":"AAAAM3%2F%2F5P0%3D","updated":"2012-12-24 23:07:30.000000000","message":"Done","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"f40bdfcf8f900cabb1c128718e17157922b0ccc1","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class EMCISCSIDriverTestCase(test.TestCase):"},{"line_number":28,"context_line":"    test_volume \u003d {\u0027name\u0027: \u0027vol1\u0027,"},{"line_number":29,"context_line":"                   \u0027size\u0027: 1,"},{"line_number":30,"context_line":"                   \u0027volume_name\u0027: \u0027vol1\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F590%3D","line":27,"updated":"2012-12-21 18:19:14.000000000","message":"My general feeling for the test is - this is way too simple compared to the big driver you have. :)  Add more cases if possible to test the functionality of the driver code (stub the code that needs to talk to real hardware and test the correctness of the rest).","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"615d5d68179f17cf844deb8bbebf3cf1160d5b26","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class EMCISCSIDriverTestCase(test.TestCase):"},{"line_number":28,"context_line":"    test_volume \u003d {\u0027name\u0027: \u0027vol1\u0027,"},{"line_number":29,"context_line":"                   \u0027size\u0027: 1,"},{"line_number":30,"context_line":"                   \u0027volume_name\u0027: \u0027vol1\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5yo%3D","line":27,"in_reply_to":"AAAAM3%2F%2F590%3D","updated":"2012-12-22 15:01:10.000000000","message":"That\u0027s true.  I struggled to find ways to write a test program. Unfortunately every real call requires a real SMI-S server to respond.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90063cfb39c4fd8a6bdd3b2775445c0b26a95a57","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class EMCISCSIDriverTestCase(test.TestCase):"},{"line_number":28,"context_line":"    test_volume \u003d {\u0027name\u0027: \u0027vol1\u0027,"},{"line_number":29,"context_line":"                   \u0027size\u0027: 1,"},{"line_number":30,"context_line":"                   \u0027volume_name\u0027: \u0027vol1\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5EI%3D","line":27,"in_reply_to":"AAAAM3%2F%2F5yo%3D","updated":"2012-12-24 23:07:30.000000000","message":"Added a FakeEcomConnection class and now the test cases will go through the entire code flow without executing the calls to the backend .","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"f40bdfcf8f900cabb1c128718e17157922b0ccc1","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        LOG.info(_(\"Fake ISCSI properties: %s\") % (properties))"},{"line_number":148,"context_line":"        return properties"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def test_create_destroy(self):"},{"line_number":151,"context_line":"        self.driver.create_volume(self.test_volume)"},{"line_number":152,"context_line":"        self.driver.delete_volume(self.test_volume)"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F59Y%3D","line":150,"updated":"2012-12-21 18:19:14.000000000","message":"These 3 cases don\u0027t test any of your driver code since you have stub them all with fakes that just to info level log.  Then why have these test cases?","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"615d5d68179f17cf844deb8bbebf3cf1160d5b26","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        LOG.info(_(\"Fake ISCSI properties: %s\") % (properties))"},{"line_number":148,"context_line":"        return properties"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def test_create_destroy(self):"},{"line_number":151,"context_line":"        self.driver.create_volume(self.test_volume)"},{"line_number":152,"context_line":"        self.driver.delete_volume(self.test_volume)"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5yg%3D","line":150,"in_reply_to":"AAAAM3%2F%2F59Y%3D","updated":"2012-12-22 15:01:10.000000000","message":"See previous comments.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d222b47227432134a2b617178e23a110951b5db1","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        self.test_volume[\u0027provider_location\u0027] \u003d export[\u0027provider_location\u0027]"},{"line_number":167,"context_line":"        connector \u003d {\u0027initiator\u0027: \u0027initiator1\u0027}"},{"line_number":168,"context_line":"        connection_info \u003d self.driver.initialize_connection(self.test_volume,"},{"line_number":169,"context_line":"                                                            connector)"},{"line_number":170,"context_line":"        driver_volume_type \u003d connection_info[\u0027driver_volume_type\u0027]"},{"line_number":171,"context_line":"        properties \u003d connection_info[\u0027data\u0027]"},{"line_number":172,"context_line":"        self.driver.terminate_connection(self.test_volume, connector)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5Pw%3D","line":169,"updated":"2012-12-24 03:15:05.000000000","message":"driver_volume_type never used","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90063cfb39c4fd8a6bdd3b2775445c0b26a95a57","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        self.test_volume[\u0027provider_location\u0027] \u003d export[\u0027provider_location\u0027]"},{"line_number":167,"context_line":"        connector \u003d {\u0027initiator\u0027: \u0027initiator1\u0027}"},{"line_number":168,"context_line":"        connection_info \u003d self.driver.initialize_connection(self.test_volume,"},{"line_number":169,"context_line":"                                                            connector)"},{"line_number":170,"context_line":"        driver_volume_type \u003d connection_info[\u0027driver_volume_type\u0027]"},{"line_number":171,"context_line":"        properties \u003d connection_info[\u0027data\u0027]"},{"line_number":172,"context_line":"        self.driver.terminate_connection(self.test_volume, connector)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5EQ%3D","line":169,"in_reply_to":"AAAAM3%2F%2F5Pw%3D","updated":"2012-12-24 23:07:30.000000000","message":"Done","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d222b47227432134a2b617178e23a110951b5db1","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        connector \u003d {\u0027initiator\u0027: \u0027initiator1\u0027}"},{"line_number":168,"context_line":"        connection_info \u003d self.driver.initialize_connection(self.test_volume,"},{"line_number":169,"context_line":"                                                            connector)"},{"line_number":170,"context_line":"        driver_volume_type \u003d connection_info[\u0027driver_volume_type\u0027]"},{"line_number":171,"context_line":"        properties \u003d connection_info[\u0027data\u0027]"},{"line_number":172,"context_line":"        self.driver.terminate_connection(self.test_volume, connector)"},{"line_number":173,"context_line":"        self.driver.remove_export(None, self.test_volume)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5Ps%3D","line":170,"updated":"2012-12-24 03:15:05.000000000","message":"properties never used","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90063cfb39c4fd8a6bdd3b2775445c0b26a95a57","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        connector \u003d {\u0027initiator\u0027: \u0027initiator1\u0027}"},{"line_number":168,"context_line":"        connection_info \u003d self.driver.initialize_connection(self.test_volume,"},{"line_number":169,"context_line":"                                                            connector)"},{"line_number":170,"context_line":"        driver_volume_type \u003d connection_info[\u0027driver_volume_type\u0027]"},{"line_number":171,"context_line":"        properties \u003d connection_info[\u0027data\u0027]"},{"line_number":172,"context_line":"        self.driver.terminate_connection(self.test_volume, connector)"},{"line_number":173,"context_line":"        self.driver.remove_export(None, self.test_volume)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5EM%3D","line":170,"in_reply_to":"AAAAM3%2F%2F5Ps%3D","updated":"2012-12-24 23:07:30.000000000","message":"Done","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"}],"cinder/volume/drivers/emc.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from cinder.volume import iscsi"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"from cinder.volume import volume_types"},{"line_number":36,"context_line":"import socket"},{"line_number":37,"context_line":"from xml.dom.minidom import parseString"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"#from nova.virt.libvirt import utils as libvirt_utils"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2BmI%3D","line":36,"updated":"2012-12-18 01:43:28.000000000","message":"This line and next should be put into standard lib import block.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":36,"context_line":"import socket"},{"line_number":37,"context_line":"from xml.dom.minidom import parseString"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"#from nova.virt.libvirt import utils as libvirt_utils"},{"line_number":40,"context_line":"import os"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2Bn8%3D","line":39,"updated":"2012-12-18 01:43:28.000000000","message":"This commented line should be removed. And the next line should be put into the first block of import with tempfile/time etc(standard libs).","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":44,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"try:"},{"line_number":47,"context_line":"    import pywbem"},{"line_number":48,"context_line":"except ImportError:"},{"line_number":49,"context_line":"    LOG.error(_(\u0027Module PyWBEM not installed.  PyWBEM can be downloaded \u0027"},{"line_number":50,"context_line":"              \u0027from http://sourceforge.net/apps/mediawiki/pywbem\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2BmU%3D","line":47,"updated":"2012-12-18 01:43:28.000000000","message":"It\u0027s better to add pywbem as a dependency via adding a line to tools/pip-requires.  Then you can safely import and use it.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    LOG.error(_(\u0027Module PyWBEM not installed.  PyWBEM can be downloaded \u0027"},{"line_number":50,"context_line":"              \u0027from http://sourceforge.net/apps/mediawiki/pywbem\u0027))"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"CINDER_EMC_CONFIG_FILE \u003d \u0027/opt/stack/cinder/etc/cinder/cinder_emc_config.xml\u0027"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def get_iscsi_initiator():"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2Bmo%3D","line":52,"updated":"2012-12-18 01:43:28.000000000","message":"This looks like the default path of devstack.  I think it\u0027s better to be placed in /etc/cinder folder.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        volumesize \u003d int(volume[\u0027size\u0027]) * 1073741824"},{"line_number":98,"context_line":"        volumename \u003d volume[\u0027name\u0027]"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        #LOG.debug(_(\u0027Create Volume: %(volume)s  Size: %(size)lu\u0027)"},{"line_number":101,"context_line":"        #          % {\u0027volume\u0027: volumename,"},{"line_number":102,"context_line":"        #            \u0027size\u0027: volumesize})"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2Bn0%3D","line":100,"updated":"2012-12-18 01:43:28.000000000","message":"Debug code is also have to be removed in final version of patch.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        volumename \u003d volume[\u0027name\u0027]"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        #LOG.debug(_(\u0027Create Volume from Snapshot: Volume:"},{"line_number":219,"context_line":"        #%(volumename)s  Snapshot: %(snapshotname)s\u0027)"},{"line_number":220,"context_line":"        #          % {\u0027volumename\u0027: volumename,"},{"line_number":221,"context_line":"        #            \u0027snapshotname\u0027: snapshotname})"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2BmE%3D","line":219,"updated":"2012-12-18 01:43:28.000000000","message":"It should be removed.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":481,"context_line":""},{"line_number":482,"context_line":"        snapshotname \u003d snapshot[\u0027name\u0027]"},{"line_number":483,"context_line":"        volumename \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":484,"context_line":"        #LOG.debug(_(\u0027Create snapshot: %(snapshot)s: volume: %(volume)s\u0027)"},{"line_number":485,"context_line":"        #          % {\u0027snapshot\u0027: snapshotname,"},{"line_number":486,"context_line":"        #            \u0027volume\u0027: volumename})"},{"line_number":487,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2BmA%3D","line":484,"updated":"2012-12-18 01:43:28.000000000","message":"This should be removed.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":566,"context_line":"        snapshotname \u003d snapshot[\u0027name\u0027]"},{"line_number":567,"context_line":"        volumename \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":568,"context_line":"        #LOG.debug(_(\u0027Delete Snapshot: %(snapshot)s: volume: %(volume)s\u0027)"},{"line_number":569,"context_line":"        #          % {\u0027snapshot\u0027: snapshotname,"},{"line_number":570,"context_line":"        #            \u0027volume\u0027: volumename})"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"        conn \u003d self._get_ecom_connection()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2Bl8%3D","line":569,"updated":"2012-12-18 01:43:28.000000000","message":"Should be removed.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":681,"context_line":"        lun_name \u003d vol_instance[\u0027DeviceID\u0027]"},{"line_number":682,"context_line":"        initiator \u003d self._find_initiator_name(connector)"},{"line_number":683,"context_line":"        storage_system \u003d vol_instance[\u0027SystemName\u0027]"},{"line_number":684,"context_line":"        #device_number \u003d self._find_avail_device_number(storage_system)"},{"line_number":685,"context_line":"        lunmask_ctrl \u003d self._find_lunmasking_scsi_protocol_controller("},{"line_number":686,"context_line":"            storage_system, connector)"},{"line_number":687,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2Bl4%3D","line":684,"updated":"2012-12-18 01:43:28.000000000","message":"should be removed.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":698,"context_line":"                                \u0027ExposePaths\u0027,"},{"line_number":699,"context_line":"                                configservice, LUNames\u003d[lun_name],"},{"line_number":700,"context_line":"                                InitiatorPortIDs\u003d[initiator],"},{"line_number":701,"context_line":"                                #DeviceNumbers\u003d[device_number],"},{"line_number":702,"context_line":"                                DeviceAccesses\u003d[pywbem.Uint16(2)])"},{"line_number":703,"context_line":"        else:"},{"line_number":704,"context_line":"            LOG.debug(_(\u0027ExposePaths parameter \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2Bl0%3D","line":701,"updated":"2012-12-18 01:43:28.000000000","message":"Please remove commented line.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":709,"context_line":"                                \u0027ExposePaths\u0027,"},{"line_number":710,"context_line":"                                configservice, LUNames\u003d[lun_name],"},{"line_number":711,"context_line":"                                #InitiatorPortIDs\u003d[initiator],"},{"line_number":712,"context_line":"                                #DeviceNumbers\u003d[device_number],"},{"line_number":713,"context_line":"                                DeviceAccesses\u003d[pywbem.Uint16(2)],"},{"line_number":714,"context_line":"                                ProtocolControllers\u003d[lunmask_ctrl])"},{"line_number":715,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2Blw%3D","line":712,"updated":"2012-12-18 01:43:28.000000000","message":"ditto.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":820,"context_line":"        volumename \u003d volume[\u0027name\u0027]"},{"line_number":821,"context_line":"        vol_instance \u003d self._find_lun(volume)"},{"line_number":822,"context_line":"        storage_system \u003d vol_instance[\u0027SystemName\u0027]"},{"line_number":823,"context_line":"        # SystemName\u003d\"SYMMETRIX+000195900551\""},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"        configservice \u003d self._find_controller_configuration_service("},{"line_number":826,"context_line":"            storage_system)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2Bls%3D","line":823,"updated":"2012-12-18 01:43:28.000000000","message":"ditto.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":853,"context_line":""},{"line_number":854,"context_line":"        vol_instance \u003d self._find_lun(volume)"},{"line_number":855,"context_line":"        storage_system \u003d vol_instance[\u0027SystemName\u0027]"},{"line_number":856,"context_line":"        # SystemName\u003d\"SYMMETRIX+000195900551\""},{"line_number":857,"context_line":""},{"line_number":858,"context_line":"        configservice \u003d self._find_controller_configuration_service("},{"line_number":859,"context_line":"            storage_system)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2Blo%3D","line":856,"updated":"2012-12-18 01:43:28.000000000","message":"ditto.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":894,"context_line":"                     % (volumename))"},{"line_number":895,"context_line":"        else:"},{"line_number":896,"context_line":"            self._map_lun(volume, connector)"},{"line_number":897,"context_line":"        #except Exception:"},{"line_number":898,"context_line":"        #    pass"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"        iscsi_properties \u003d self._get_iscsi_properties(volume)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2Blk%3D","line":897,"updated":"2012-12-18 01:43:28.000000000","message":"ditto.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":942,"context_line":"        \"\"\""},{"line_number":943,"context_line":"        properties \u003d {}"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"        #location \u003d volume[\u0027provider_location\u0027]"},{"line_number":946,"context_line":"        #device_number \u003d volume[\u0027provider_location\u0027]"},{"line_number":947,"context_line":"        #if not device_number:"},{"line_number":948,"context_line":"        #    properties[\u0027target_lun\u0027] \u003d self._find_device_number(volume)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2Blg%3D","line":945,"updated":"2012-12-18 01:43:28.000000000","message":"ditto.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"            with utils.file_open(volume_path, \"wb\") as image_file:"},{"line_number":1019,"context_line":"                image_service.download(context, image_id, image_file)"},{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"        #self._run_iscsiadm(iscsi_properties, (\"--logout\",),"},{"line_number":1022,"context_line":"        #                   check_exit_code\u003d[0, 255])"},{"line_number":1023,"context_line":""},{"line_number":1024,"context_line":"        self.terminate_connection(volume, connector)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2Blc%3D","line":1021,"updated":"2012-12-18 01:43:28.000000000","message":"ditto.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"        init_conn \u003d self.initialize_connection(volume, connector)"},{"line_number":1031,"context_line":"        iscsi_properties \u003d init_conn[\u0027data\u0027]"},{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":"        # logout, discover, and then login"},{"line_number":1034,"context_line":"        #self._run_iscsiadm(iscsi_properties, (\"--logout\",),"},{"line_number":1035,"context_line":"        #                   check_exit_code\u003d[0, 255])"},{"line_number":1036,"context_line":"        #self._do_iscsi_discovery(volume)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2BlY%3D","line":1033,"updated":"2012-12-18 01:43:28.000000000","message":"ditto.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"            with utils.file_open(volume_path) as volume_file:"},{"line_number":1083,"context_line":"                image_service.update(context, image_id, {}, volume_file)"},{"line_number":1084,"context_line":""},{"line_number":1085,"context_line":"        #self._run_iscsiadm(iscsi_properties, (\"--logout\",),"},{"line_number":1086,"context_line":"        #                   check_exit_code\u003d[0, 255])"},{"line_number":1087,"context_line":""},{"line_number":1088,"context_line":"        self.terminate_connection(volume, connector)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2BlU%3D","line":1085,"updated":"2012-12-18 01:43:28.000000000","message":"ditto.","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":1348,"context_line":"                break"},{"line_number":1349,"context_line":""},{"line_number":1350,"context_line":"        #vol_instance \u003d self._find_lun(volumename)"},{"line_number":1351,"context_line":"        #refs \u003d conn.References(vol_instance.path, Role\u003d\u0027SystemElement\u0027)"},{"line_number":1352,"context_line":""},{"line_number":1353,"context_line":"        if foundsyncname is None:"},{"line_number":1354,"context_line":"            LOG.debug(_(\"Source: %(volumename)s  Target: %(snapshotname)s. \""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2BlM%3D","line":1351,"updated":"2012-12-18 01:43:28.000000000","message":"ditto","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":1487,"context_line":"            if index \u003e -1:"},{"line_number":1488,"context_line":"                unitinstance \u003d conn.GetInstance(unitname, LocalOnly\u003dFalse)"},{"line_number":1489,"context_line":"                numDeviceNumber \u003d int(unitinstance[\u0027DeviceNumber\u0027])"},{"line_number":1490,"context_line":"                #if out_num_device_number \u003c\u003d numDeviceNumber:"},{"line_number":1491,"context_line":"                #    out_num_device_number \u003d numDeviceNumber + 1"},{"line_number":1492,"context_line":"                numlist.append(numDeviceNumber)"},{"line_number":1493,"context_line":"                myunitnames.append(unitname)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2BlE%3D","line":1490,"updated":"2012-12-18 01:43:28.000000000","message":"ditto","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ffe813709612faaeff9ce8af3925383dd8b4c16","unresolved":false,"context_lines":[{"line_number":1554,"context_line":"            exception_message \u003d (_(\"Cannot connect to ECOM server\"))"},{"line_number":1555,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":1556,"context_line":""},{"line_number":1557,"context_line":"        # Symm_LunMaskingView.CreationClassName\u003d\"Symm_LunMaskingView\","},{"line_number":1558,"context_line":"        # DeviceID\u003d\"SYMMETRIX+000195900551+openstack\","},{"line_number":1559,"context_line":"        # SystemCreationClassName\u003d\"Symm_StorageSystem\","},{"line_number":1560,"context_line":"        # SystemName\u003d\"SYMMETRIX+000195900551\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F%2BlA%3D","line":1557,"updated":"2012-12-18 01:43:28.000000000","message":"ditto","commit_id":"62499fbae93c080756f09702c1bb2b47bf6f3e3c"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d222b47227432134a2b617178e23a110951b5db1","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import os"},{"line_number":24,"context_line":"import socket"},{"line_number":25,"context_line":"import tempfile"},{"line_number":26,"context_line":"import time"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5Qc%3D","line":23,"updated":"2012-12-24 03:15:05.000000000","message":"socket not used","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90063cfb39c4fd8a6bdd3b2775445c0b26a95a57","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import os"},{"line_number":24,"context_line":"import socket"},{"line_number":25,"context_line":"import tempfile"},{"line_number":26,"context_line":"import time"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5B8%3D","line":23,"in_reply_to":"AAAAM3%2F%2F5Qc%3D","updated":"2012-12-24 23:07:30.000000000","message":"Removed.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d222b47227432134a2b617178e23a110951b5db1","unresolved":false,"context_lines":[{"line_number":21,"context_line":"\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import os"},{"line_number":24,"context_line":"import socket"},{"line_number":25,"context_line":"import tempfile"},{"line_number":26,"context_line":"import time"},{"line_number":27,"context_line":"import urllib"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5QY%3D","line":24,"updated":"2012-12-24 03:15:05.000000000","message":"tempfile not used","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90063cfb39c4fd8a6bdd3b2775445c0b26a95a57","unresolved":false,"context_lines":[{"line_number":21,"context_line":"\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import os"},{"line_number":24,"context_line":"import socket"},{"line_number":25,"context_line":"import tempfile"},{"line_number":26,"context_line":"import time"},{"line_number":27,"context_line":"import urllib"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5B4%3D","line":24,"in_reply_to":"AAAAM3%2F%2F5QY%3D","updated":"2012-12-24 23:07:30.000000000","message":"Removed.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d222b47227432134a2b617178e23a110951b5db1","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import os"},{"line_number":24,"context_line":"import socket"},{"line_number":25,"context_line":"import tempfile"},{"line_number":26,"context_line":"import time"},{"line_number":27,"context_line":"import urllib"},{"line_number":28,"context_line":"from xml.dom.minidom import parseString"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5QU%3D","line":26,"updated":"2012-12-24 03:15:05.000000000","message":"urllib not used","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90063cfb39c4fd8a6bdd3b2775445c0b26a95a57","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import os"},{"line_number":24,"context_line":"import socket"},{"line_number":25,"context_line":"import tempfile"},{"line_number":26,"context_line":"import time"},{"line_number":27,"context_line":"import urllib"},{"line_number":28,"context_line":"from xml.dom.minidom import parseString"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5B0%3D","line":26,"in_reply_to":"AAAAM3%2F%2F5QU%3D","updated":"2012-12-24 23:07:30.000000000","message":"Removed.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d222b47227432134a2b617178e23a110951b5db1","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from cinder.openstack.common import cfg"},{"line_number":33,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":34,"context_line":"from cinder import utils"},{"line_number":35,"context_line":"from cinder.volume import driver"},{"line_number":36,"context_line":"from cinder.volume import iscsi"},{"line_number":37,"context_line":"from cinder.volume import volume_types"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5QQ%3D","line":35,"updated":"2012-12-24 03:15:05.000000000","message":"iscsi not used","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90063cfb39c4fd8a6bdd3b2775445c0b26a95a57","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from cinder.openstack.common import cfg"},{"line_number":33,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":34,"context_line":"from cinder import utils"},{"line_number":35,"context_line":"from cinder.volume import driver"},{"line_number":36,"context_line":"from cinder.volume import iscsi"},{"line_number":37,"context_line":"from cinder.volume import volume_types"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5Bw%3D","line":35,"in_reply_to":"AAAAM3%2F%2F5QQ%3D","updated":"2012-12-24 23:07:30.000000000","message":"Removed.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"f40bdfcf8f900cabb1c128718e17157922b0ccc1","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            LOG.error(exception_message)"},{"line_number":103,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        storage_type \u003d self._get_volume_type(volume)"},{"line_number":106,"context_line":"        if storage_type is None:"},{"line_number":107,"context_line":"            exception_message \u003d (_(\"Error Create Volume: %(volumename)s. \""},{"line_number":108,"context_line":"                                 \"Storage type %(storage_type)s not found.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F6B8%3D","line":105,"updated":"2012-12-21 18:19:14.000000000","message":"You can safely use following code to get volume type since volume type is always available.\n\nvol_type_id \u003d volume[\u0027volume_type_id\u0027]\nvol_type \u003d volume_types.get_volume_type(None, vol_type_id)","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"615d5d68179f17cf844deb8bbebf3cf1160d5b26","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            LOG.error(exception_message)"},{"line_number":103,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        storage_type \u003d self._get_volume_type(volume)"},{"line_number":106,"context_line":"        if storage_type is None:"},{"line_number":107,"context_line":"            exception_message \u003d (_(\"Error Create Volume: %(volumename)s. \""},{"line_number":108,"context_line":"                                 \"Storage type %(storage_type)s not found.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F52Y%3D","line":105,"in_reply_to":"AAAAM3%2F%2F6B8%3D","updated":"2012-12-22 15:01:10.000000000","message":"See my reply below.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"f40bdfcf8f900cabb1c128718e17157922b0ccc1","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                  % {\u0027volume\u0027: volumename,"},{"line_number":117,"context_line":"                     \u0027storage_type\u0027: storage_type})"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        pool, storage_system \u003d self._find_pool(storage_type)"},{"line_number":120,"context_line":"        if pool is None:"},{"line_number":121,"context_line":"            exception_message \u003d (_(\"Error Create Volume: %(volumename)s. \""},{"line_number":122,"context_line":"                                 \"Pool %(storage_type)s not found.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F6Bk%3D","line":119,"updated":"2012-12-21 18:19:14.000000000","message":"It seems you tend to map one storage_type to one pool, which can be a problem if storage_type equals volume_type.  Volume types can be changed by cinder admin at run time (add/remove types), does that means admin has to change EMC backend\u0027s setting as well?\n\nBack to the definition of volume type, it is a set of volume requirements, which can be treated as requirement of backend capabilities.  It\u0027s flexible and dynamic.  To be able to deal with different volume types, I suggest backend drivers to focus on the capabilities.  \n\nIf I\u0027m writing a backend driver, I\u0027d do:\n  capabilities \u003d extract_backend_capabilities_requirement(vol_type)\n  self._find_pool(capabilities)","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"615d5d68179f17cf844deb8bbebf3cf1160d5b26","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                  % {\u0027volume\u0027: volumename,"},{"line_number":117,"context_line":"                     \u0027storage_type\u0027: storage_type})"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        pool, storage_system \u003d self._find_pool(storage_type)"},{"line_number":120,"context_line":"        if pool is None:"},{"line_number":121,"context_line":"            exception_message \u003d (_(\"Error Create Volume: %(volumename)s. \""},{"line_number":122,"context_line":"                                 \"Pool %(storage_type)s not found.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F52c%3D","line":119,"in_reply_to":"AAAAM3%2F%2F6Bk%3D","updated":"2012-12-22 15:01:10.000000000","message":"I see your concern here.  I\u0027m going to remove the logic that equals storage_type to volume_type.  The storage_type here was intended to be a pool name.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"f40bdfcf8f900cabb1c128718e17157922b0ccc1","unresolved":false,"context_lines":[{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        conn \u003d self._get_ecom_connection()"},{"line_number":356,"context_line":"        if conn is None:"},{"line_number":357,"context_line":"            exception_message \u003d (_(\"Error Create Volume: %(volumename)s. \""},{"line_number":358,"context_line":"                                 \"Cannot connect to ECOM server.\")"},{"line_number":359,"context_line":"                                 % {\u0027volumename\u0027: volumename})"},{"line_number":360,"context_line":"            LOG.error(exception_message)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F6BE%3D","line":357,"updated":"2012-12-21 18:19:14.000000000","message":"s/Create/Delete","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"615d5d68179f17cf844deb8bbebf3cf1160d5b26","unresolved":false,"context_lines":[{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        conn \u003d self._get_ecom_connection()"},{"line_number":356,"context_line":"        if conn is None:"},{"line_number":357,"context_line":"            exception_message \u003d (_(\"Error Create Volume: %(volumename)s. \""},{"line_number":358,"context_line":"                                 \"Cannot connect to ECOM server.\")"},{"line_number":359,"context_line":"                                 % {\u0027volumename\u0027: volumename})"},{"line_number":360,"context_line":"            LOG.error(exception_message)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F50A%3D","line":357,"in_reply_to":"AAAAM3%2F%2F6BE%3D","updated":"2012-12-22 15:01:10.000000000","message":"Done","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"f40bdfcf8f900cabb1c128718e17157922b0ccc1","unresolved":false,"context_lines":[{"line_number":360,"context_line":"            LOG.error(exception_message)"},{"line_number":361,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"        storage_type \u003d self._get_volume_type(volume)"},{"line_number":364,"context_line":"        if storage_type is None:"},{"line_number":365,"context_line":"            exception_message \u003d (_(\"Error Create Volume: %(volumename)s. \""},{"line_number":366,"context_line":"                                 \"Storage type %(storage_type)s not found.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F6AQ%3D","line":363,"updated":"2012-12-21 18:19:14.000000000","message":"For an existing volume, does it have to go through the same process of finding its pool as creating a new one?  I think it\u0027d be a lot easier if the driver or backend itself has a record of which existing volume belongs to what pool.\n\nOr should _find_lun() be used here instead?  I saw there\u0027s usage like below somewhere else.\n    snapshot_instance \u003d self._find_lun(volume)\n    storage_system \u003d snapshot_instance[\u0027SystemName\u0027]\n\nIt seems to me that it\u0027d be more efficient.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"615d5d68179f17cf844deb8bbebf3cf1160d5b26","unresolved":false,"context_lines":[{"line_number":360,"context_line":"            LOG.error(exception_message)"},{"line_number":361,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"        storage_type \u003d self._get_volume_type(volume)"},{"line_number":364,"context_line":"        if storage_type is None:"},{"line_number":365,"context_line":"            exception_message \u003d (_(\"Error Create Volume: %(volumename)s. \""},{"line_number":366,"context_line":"                                 \"Storage type %(storage_type)s not found.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5z0%3D","line":363,"in_reply_to":"AAAAM3%2F%2F6AQ%3D","updated":"2012-12-22 15:01:10.000000000","message":"Actually I don\u0027t need the pool.  I only need the storage_system.  I can get it from the vol_instance itself.  I\u0027ll remove this call here.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"f40bdfcf8f900cabb1c128718e17157922b0ccc1","unresolved":false,"context_lines":[{"line_number":362,"context_line":""},{"line_number":363,"context_line":"        storage_type \u003d self._get_volume_type(volume)"},{"line_number":364,"context_line":"        if storage_type is None:"},{"line_number":365,"context_line":"            exception_message \u003d (_(\"Error Create Volume: %(volumename)s. \""},{"line_number":366,"context_line":"                                 \"Storage type %(storage_type)s not found.\")"},{"line_number":367,"context_line":"                                 % {\u0027volumename\u0027: volumename,"},{"line_number":368,"context_line":"                                    \u0027storage_type\u0027: storage_type})"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F6AM%3D","line":365,"updated":"2012-12-21 18:19:14.000000000","message":"s/Create/Delete","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"615d5d68179f17cf844deb8bbebf3cf1160d5b26","unresolved":false,"context_lines":[{"line_number":362,"context_line":""},{"line_number":363,"context_line":"        storage_type \u003d self._get_volume_type(volume)"},{"line_number":364,"context_line":"        if storage_type is None:"},{"line_number":365,"context_line":"            exception_message \u003d (_(\"Error Create Volume: %(volumename)s. \""},{"line_number":366,"context_line":"                                 \"Storage type %(storage_type)s not found.\")"},{"line_number":367,"context_line":"                                 % {\u0027volumename\u0027: volumename,"},{"line_number":368,"context_line":"                                    \u0027storage_type\u0027: storage_type})"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5x4%3D","line":365,"in_reply_to":"AAAAM3%2F%2F6AM%3D","updated":"2012-12-22 15:01:10.000000000","message":"Done","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d222b47227432134a2b617178e23a110951b5db1","unresolved":false,"context_lines":[{"line_number":792,"context_line":"        if conn is None:"},{"line_number":793,"context_line":"            exception_message \u003d (_(\"Cannot connect to ECOM server\"))"},{"line_number":794,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"        volumename \u003d volume[\u0027name\u0027]"},{"line_number":797,"context_line":"        vol_instance \u003d self._find_lun(volume)"},{"line_number":798,"context_line":"        storage_system \u003d vol_instance[\u0027SystemName\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5QM%3D","line":795,"updated":"2012-12-24 03:15:05.000000000","message":"volumename not used","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90063cfb39c4fd8a6bdd3b2775445c0b26a95a57","unresolved":false,"context_lines":[{"line_number":792,"context_line":"        if conn is None:"},{"line_number":793,"context_line":"            exception_message \u003d (_(\"Cannot connect to ECOM server\"))"},{"line_number":794,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"        volumename \u003d volume[\u0027name\u0027]"},{"line_number":797,"context_line":"        vol_instance \u003d self._find_lun(volume)"},{"line_number":798,"context_line":"        storage_system \u003d vol_instance[\u0027SystemName\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5EE%3D","line":795,"in_reply_to":"AAAAM3%2F%2F5QM%3D","updated":"2012-12-24 23:07:30.000000000","message":"Removed.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d222b47227432134a2b617178e23a110951b5db1","unresolved":false,"context_lines":[{"line_number":801,"context_line":"            storage_system)"},{"line_number":802,"context_line":"        if configservice is None:"},{"line_number":803,"context_line":"            exception_message \u003d (_(\"Cannot find Controller Configuration \""},{"line_number":804,"context_line":"                                 \"Service for pool %s\")"},{"line_number":805,"context_line":"                                 % storage_type)"},{"line_number":806,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":807,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5QI%3D","line":804,"updated":"2012-12-24 03:15:05.000000000","message":"storage_type is never defined","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90063cfb39c4fd8a6bdd3b2775445c0b26a95a57","unresolved":false,"context_lines":[{"line_number":801,"context_line":"            storage_system)"},{"line_number":802,"context_line":"        if configservice is None:"},{"line_number":803,"context_line":"            exception_message \u003d (_(\"Cannot find Controller Configuration \""},{"line_number":804,"context_line":"                                 \"Service for pool %s\")"},{"line_number":805,"context_line":"                                 % storage_type)"},{"line_number":806,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":807,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5EA%3D","line":804,"in_reply_to":"AAAAM3%2F%2F5QI%3D","updated":"2012-12-24 23:07:30.000000000","message":"Changed to storage_system.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d222b47227432134a2b617178e23a110951b5db1","unresolved":false,"context_lines":[{"line_number":833,"context_line":"            storage_system)"},{"line_number":834,"context_line":"        if configservice is None:"},{"line_number":835,"context_line":"            exception_message \u003d (_(\"Cannot find Controller Configuration \""},{"line_number":836,"context_line":"                                 \"Service for pool %s\")"},{"line_number":837,"context_line":"                                 % storage_type)"},{"line_number":838,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":839,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5QE%3D","line":836,"updated":"2012-12-24 03:15:05.000000000","message":"storage_type is never defined","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90063cfb39c4fd8a6bdd3b2775445c0b26a95a57","unresolved":false,"context_lines":[{"line_number":833,"context_line":"            storage_system)"},{"line_number":834,"context_line":"        if configservice is None:"},{"line_number":835,"context_line":"            exception_message \u003d (_(\"Cannot find Controller Configuration \""},{"line_number":836,"context_line":"                                 \"Service for pool %s\")"},{"line_number":837,"context_line":"                                 % storage_type)"},{"line_number":838,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":839,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5Bs%3D","line":836,"in_reply_to":"AAAAM3%2F%2F5QE%3D","updated":"2012-12-24 23:07:30.000000000","message":"Changed to storage_system.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d222b47227432134a2b617178e23a110951b5db1","unresolved":false,"context_lines":[{"line_number":878,"context_line":"    def _do_iscsi_discovery(self, volume):"},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"        LOG.warn(_(\"ISCSI provider_location not stored, using discovery\"))"},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":883,"context_line":""},{"line_number":884,"context_line":"        (out, _err) \u003d self._execute(\u0027iscsiadm\u0027, \u0027-m\u0027, \u0027discovery\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5QA%3D","line":881,"updated":"2012-12-24 03:15:05.000000000","message":"volume_name is never used","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90063cfb39c4fd8a6bdd3b2775445c0b26a95a57","unresolved":false,"context_lines":[{"line_number":878,"context_line":"    def _do_iscsi_discovery(self, volume):"},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"        LOG.warn(_(\"ISCSI provider_location not stored, using discovery\"))"},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":883,"context_line":""},{"line_number":884,"context_line":"        (out, _err) \u003d self._execute(\u0027iscsiadm\u0027, \u0027-m\u0027, \u0027discovery\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5Bo%3D","line":881,"in_reply_to":"AAAAM3%2F%2F5QA%3D","updated":"2012-12-24 23:07:30.000000000","message":"Removed.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"7ce283475a3831b5bdac31ece926745799237067","unresolved":false,"context_lines":[{"line_number":964,"context_line":"        \"\"\"Disallow connection from connector\"\"\""},{"line_number":965,"context_line":"        self._unmap_lun(volume, connector)"},{"line_number":966,"context_line":""},{"line_number":967,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":968,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""},{"line_number":969,"context_line":"        LOG.debug(_(\u0027copy_image_to_volume %s.\u0027) % volume[\u0027name\u0027])"},{"line_number":970,"context_line":"        initiator \u003d get_iscsi_initiator()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5ak%3D","line":967,"updated":"2012-12-23 09:38:36.000000000","message":"How about generalizing this and submitting it as a separate patch so that all drivers have this function implemented?","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90063cfb39c4fd8a6bdd3b2775445c0b26a95a57","unresolved":false,"context_lines":[{"line_number":964,"context_line":"        \"\"\"Disallow connection from connector\"\"\""},{"line_number":965,"context_line":"        self._unmap_lun(volume, connector)"},{"line_number":966,"context_line":""},{"line_number":967,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":968,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""},{"line_number":969,"context_line":"        LOG.debug(_(\u0027copy_image_to_volume %s.\u0027) % volume[\u0027name\u0027])"},{"line_number":970,"context_line":"        initiator \u003d get_iscsi_initiator()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5Bg%3D","line":967,"in_reply_to":"AAAAM3%2F%2F5ak%3D","updated":"2012-12-24 23:07:30.000000000","message":"Good idea, but there\u0027s already a copy_image_to_volume method in the base class ISCSIDriver which works for LVM.  Where do you suggest to add it?  Please clarify.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"7ce283475a3831b5bdac31ece926745799237067","unresolved":false,"context_lines":[{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"        return iscsi_properties, host_device"},{"line_number":1023,"context_line":""},{"line_number":1024,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_id):"},{"line_number":1025,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":1026,"context_line":"        LOG.debug(_(\u0027copy_volume_to_image %s.\u0027) % volume[\u0027name\u0027])"},{"line_number":1027,"context_line":"        initiator \u003d get_iscsi_initiator()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5ag%3D","line":1024,"updated":"2012-12-23 09:38:36.000000000","message":"Same comment as copy_image_to_volume","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90063cfb39c4fd8a6bdd3b2775445c0b26a95a57","unresolved":false,"context_lines":[{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"        return iscsi_properties, host_device"},{"line_number":1023,"context_line":""},{"line_number":1024,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_id):"},{"line_number":1025,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":1026,"context_line":"        LOG.debug(_(\u0027copy_volume_to_image %s.\u0027) % volume[\u0027name\u0027])"},{"line_number":1027,"context_line":"        initiator \u003d get_iscsi_initiator()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5Bc%3D","line":1024,"in_reply_to":"AAAAM3%2F%2F5ag%3D","updated":"2012-12-24 23:07:30.000000000","message":"Same reply as copy_image_to_volume.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"f40bdfcf8f900cabb1c128718e17157922b0ccc1","unresolved":false,"context_lines":[{"line_number":1038,"context_line":"        self.terminate_connection(volume, connector)"},{"line_number":1039,"context_line":""},{"line_number":1040,"context_line":"    def _get_volume_type(self, volume, filename\u003dNone):"},{"line_number":1041,"context_line":"        \"\"\"Get the user input volume type first, if not available,"},{"line_number":1042,"context_line":"        find it from the config file"},{"line_number":1043,"context_line":"        \"\"\""},{"line_number":1044,"context_line":"        input_type \u003d self._get_input_volume_type(volume)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F6Co%3D","line":1041,"updated":"2012-12-21 18:19:14.000000000","message":"Volume type should always be considered available since cinder API service has taken care of that.  So a lot of logic here is not necessary and won\u0027t be used.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"615d5d68179f17cf844deb8bbebf3cf1160d5b26","unresolved":false,"context_lines":[{"line_number":1038,"context_line":"        self.terminate_connection(volume, connector)"},{"line_number":1039,"context_line":""},{"line_number":1040,"context_line":"    def _get_volume_type(self, volume, filename\u003dNone):"},{"line_number":1041,"context_line":"        \"\"\"Get the user input volume type first, if not available,"},{"line_number":1042,"context_line":"        find it from the config file"},{"line_number":1043,"context_line":"        \"\"\""},{"line_number":1044,"context_line":"        input_type \u003d self._get_input_volume_type(volume)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2F5zs%3D","line":1041,"in_reply_to":"AAAAM3%2F%2F6Co%3D","updated":"2012-12-22 15:01:10.000000000","message":"See my previous comment.  I\u0027ll remove the logic that equals the storage_type to volume_type.","commit_id":"eeff4669dd45e9f8034c12cacc3074823201166a"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"9bdad92fec53fb29e1db457757a4f440205cf00e","unresolved":false,"context_lines":[{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        vol_instance \u003d self._find_lun(volume)"},{"line_number":329,"context_line":"        if vol_instance is None:"},{"line_number":330,"context_line":"            LOG.info(_(\u0027Volume %(name)s not found on the array. \u0027"},{"line_number":331,"context_line":"                     \u0027No volume to delete.\u0027)"},{"line_number":332,"context_line":"                     % {\u0027name\u0027: volumename})"},{"line_number":333,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F48U%3D","line":330,"updated":"2012-12-25 07:25:47.000000000","message":"This looks like a serious problem, so I suggest raise the log level to at least warning or higher and should raise exception so that the correct status can be updated to DB.","commit_id":"7536dac663ed2429593d7bc8e5826ed201a34960"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"536a776718ab5b1c1b06fafa998baf4913b5872d","unresolved":false,"context_lines":[{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        vol_instance \u003d self._find_lun(volume)"},{"line_number":329,"context_line":"        if vol_instance is None:"},{"line_number":330,"context_line":"            LOG.info(_(\u0027Volume %(name)s not found on the array. \u0027"},{"line_number":331,"context_line":"                     \u0027No volume to delete.\u0027)"},{"line_number":332,"context_line":"                     % {\u0027name\u0027: volumename})"},{"line_number":333,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F41A%3D","line":330,"in_reply_to":"AAAAM3%2F%2F48U%3D","updated":"2012-12-25 20:16:14.000000000","message":"Initially I logged an error and raised exception, but had problems during QE testing.   This usually occurrs when Cinder DB and the backend array are out of sync.  If a volume was deleted by the user directly from the management UI of the array, there\u0027s no way to remove that entry from the Cinder DB any more.  Not raising an exception will allow the user to delete that volume from Horizon, remove it from Cinder DB, and keep Cinder DB and the backend array in sync again.  \r\n\r\nI\u0027ll raise the log level to Error.","commit_id":"7536dac663ed2429593d7bc8e5826ed201a34960"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"9bdad92fec53fb29e1db457757a4f440205cf00e","unresolved":false,"context_lines":[{"line_number":483,"context_line":"            LOG.info(_(\u0027Snapshot: %(snapshot)s: volume: %(volume)s \u0027"},{"line_number":484,"context_line":"                     \u0027not found on the array. No snapshot to delete.\u0027)"},{"line_number":485,"context_line":"                     % {\u0027snapshot\u0027: snapshotname,"},{"line_number":486,"context_line":"                        \u0027volume\u0027: volumename})"},{"line_number":487,"context_line":"            return"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"        repservice \u003d self._find_replication_service(storage_system)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F48M%3D","line":486,"updated":"2012-12-25 07:25:47.000000000","message":"Same as the \u0027volume not found\u0027 case in \u0027delete_volume()\u0027, here it should raise error.","commit_id":"7536dac663ed2429593d7bc8e5826ed201a34960"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"536a776718ab5b1c1b06fafa998baf4913b5872d","unresolved":false,"context_lines":[{"line_number":483,"context_line":"            LOG.info(_(\u0027Snapshot: %(snapshot)s: volume: %(volume)s \u0027"},{"line_number":484,"context_line":"                     \u0027not found on the array. No snapshot to delete.\u0027)"},{"line_number":485,"context_line":"                     % {\u0027snapshot\u0027: snapshotname,"},{"line_number":486,"context_line":"                        \u0027volume\u0027: volumename})"},{"line_number":487,"context_line":"            return"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"        repservice \u003d self._find_replication_service(storage_system)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F40c%3D","line":486,"in_reply_to":"AAAAM3%2F%2F48M%3D","updated":"2012-12-25 20:16:14.000000000","message":"See previous comments.  I did this for the same reason.  I\u0027ll change the log level to Error.","commit_id":"7536dac663ed2429593d7bc8e5826ed201a34960"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"9bdad92fec53fb29e1db457757a4f440205cf00e","unresolved":false,"context_lines":[{"line_number":966,"context_line":""},{"line_number":967,"context_line":"        self.terminate_connection(volume, connector)"},{"line_number":968,"context_line":""},{"line_number":969,"context_line":"    def _get_storage_type(self, volume, filename\u003dNone):"},{"line_number":970,"context_line":"        \"\"\"Get the storage type from the config file"},{"line_number":971,"context_line":"        \"\"\""},{"line_number":972,"context_line":"        if filename \u003d\u003d None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F48Y%3D","line":969,"updated":"2012-12-25 07:25:47.000000000","message":"The \u0027volume\u0027 argument isn\u0027t used thus not needed.  And it seems storage type is also quite static value, so how about make \u0027storage_type\u0027 a class member variable, thus you don\u0027t have to reparse the same configuration file every time there\u0027s \u0027create_volume\u0027 request?","commit_id":"7536dac663ed2429593d7bc8e5826ed201a34960"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"536a776718ab5b1c1b06fafa998baf4913b5872d","unresolved":false,"context_lines":[{"line_number":966,"context_line":""},{"line_number":967,"context_line":"        self.terminate_connection(volume, connector)"},{"line_number":968,"context_line":""},{"line_number":969,"context_line":"    def _get_storage_type(self, volume, filename\u003dNone):"},{"line_number":970,"context_line":"        \"\"\"Get the storage type from the config file"},{"line_number":971,"context_line":"        \"\"\""},{"line_number":972,"context_line":"        if filename \u003d\u003d None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F40Q%3D","line":969,"in_reply_to":"AAAAM3%2F%2F48Y%3D","updated":"2012-12-25 20:16:14.000000000","message":"I\u0027ll remove the \u0027volume\u0027 argument.  The benefit of parsing the config file for every create_volume request is that you can potentially use a different storage_type (pool name) every time without restarting cinder-volume service.  So I\u0027d prefer keep it there.","commit_id":"7536dac663ed2429593d7bc8e5826ed201a34960"}]}
