)]}'
{"cinder/exception.py":[{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":677,"context_line":""},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"# FC Zone Manager"},{"line_number":680,"context_line":"class ZoneManagerException(CinderException):"},{"line_number":681,"context_line":"    message \u003d _(\"Connection control failure: %(reason)s\")"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TfY%3D","line":680,"updated":"2013-12-12 22:46:11.000000000","message":"Would it be possible to have more context in these exceptions, so that it is obvious which fabric has reported the failure?\n\nYou could perhaps have a FabricDescriptor object that contains the name, IP etc. of the switch, and that could be passed to each exception\u0027s constructor.  These error messages could embed a stringified version of that object at the start of the description.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":677,"context_line":""},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"# FC Zone Manager"},{"line_number":680,"context_line":"class ZoneManagerException(CinderException):"},{"line_number":681,"context_line":"    message \u003d _(\"Connection control failure: %(reason)s\")"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2Futc%3D","line":680,"in_reply_to":"AAAATn%2F9TfY%3D","updated":"2014-01-16 04:55:14.000000000","message":"I\u0027ll look into this. Will keep it towards the end as this may need some code changes in many places. Also, need to see how I can obtain context info in certain places - For rg, Zone Manager doesn\u0027t have context information on fabric IP address.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"}],"cinder/tests/test_brcd_fc_zone_driver.py":[{"author":{"_account_id":8911,"name":"Sergey Vilgelm","email":"sergey@vilgelm.info","username":"sergey.vilgelm"},"change_message_id":"f2160beda8b36b46314d86c3824b417131499f3a","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        return device_map"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"class GlobalVars(object):"},{"line_number":245,"context_line":"    global _active_cfg"},{"line_number":246,"context_line":"    _active_cfg \u003d {}"},{"line_number":247,"context_line":"    global _zone_state"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bweg%3D","line":244,"updated":"2013-11-20 16:03:36.000000000","message":"This class is very strange. What are you doing here?","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5b4addc018e6621ef394a27608e97110d65b70a3","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        return device_map"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"class GlobalVars(object):"},{"line_number":245,"context_line":"    global _active_cfg"},{"line_number":246,"context_line":"    _active_cfg \u003d {}"},{"line_number":247,"context_line":"    global _zone_state"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BuhM%3D","line":244,"in_reply_to":"AAAATn%2F%2Bweg%3D","updated":"2013-11-26 22:48:44.000000000","message":"I used this to hold a few state variables referred by more than one class. Will think of a cleaner way when I add more tests later.","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8911,"name":"Sergey Vilgelm","email":"sergey@vilgelm.info","username":"sergey.vilgelm"},"change_message_id":"f2160beda8b36b46314d86c3824b417131499f3a","unresolved":false,"context_lines":[{"line_number":247,"context_line":"    global _zone_state"},{"line_number":248,"context_line":"    _zone_state \u003d list()"},{"line_number":249,"context_line":"    global _is_normal_test"},{"line_number":250,"context_line":"    is_normal_Test \u003d True"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bwck%3D","line":250,"updated":"2013-11-20 16:03:36.000000000","message":"Do you have error here? Variables \"_is_normal_test\" and \"is_normal_Test\" are different.","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5b4addc018e6621ef394a27608e97110d65b70a3","unresolved":false,"context_lines":[{"line_number":247,"context_line":"    global _zone_state"},{"line_number":248,"context_line":"    _zone_state \u003d list()"},{"line_number":249,"context_line":"    global _is_normal_test"},{"line_number":250,"context_line":"    is_normal_Test \u003d True"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BuhI%3D","line":250,"in_reply_to":"AAAATn%2F%2Bwck%3D","updated":"2013-11-26 22:48:44.000000000","message":"Done","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":"Unit tests for Brocade fc zone driver"},{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":"import mox"},{"line_number":26,"context_line":"import paramiko"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qTU%3D","line":23,"updated":"2013-12-09 06:39:26.000000000","message":"Docstring should end with period","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":"Unit tests for Brocade fc zone driver"},{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":"import mox"},{"line_number":26,"context_line":"import paramiko"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lk0%3D","line":23,"in_reply_to":"AAAATn%2F9qTU%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"class BrcdFcZoneDriverBaseTest(object):"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def setup_config(self, is_normal, mode):"},{"line_number":66,"context_line":"        #configuration \u003d mox.MockObject(conf.Configuration)"},{"line_number":67,"context_line":"        fc_test_opts \u003d ["},{"line_number":68,"context_line":"            cfg.StrOpt(\u0027fc_fabric_address_BRCD_FAB_1\u0027, default\u003d\u002710.24.48.213\u0027,"},{"line_number":69,"context_line":"                       help\u003d\u0027FC Fabric names\u0027),"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qTE%3D","line":66,"updated":"2013-12-09 06:39:26.000000000","message":"Remove this commented out line please","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"6102d492b9615c0e2da99ebcb9f064de374ae033","unresolved":false,"context_lines":[{"line_number":63,"context_line":"class BrcdFcZoneDriverBaseTest(object):"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def setup_config(self, is_normal, mode):"},{"line_number":66,"context_line":"        #configuration \u003d mox.MockObject(conf.Configuration)"},{"line_number":67,"context_line":"        fc_test_opts \u003d ["},{"line_number":68,"context_line":"            cfg.StrOpt(\u0027fc_fabric_address_BRCD_FAB_1\u0027, default\u003d\u002710.24.48.213\u0027,"},{"line_number":69,"context_line":"                       help\u003d\u0027FC Fabric names\u0027),"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9uDw%3D","line":66,"updated":"2013-12-10 21:59:19.000000000","message":"remove","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":63,"context_line":"class BrcdFcZoneDriverBaseTest(object):"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def setup_config(self, is_normal, mode):"},{"line_number":66,"context_line":"        #configuration \u003d mox.MockObject(conf.Configuration)"},{"line_number":67,"context_line":"        fc_test_opts \u003d ["},{"line_number":68,"context_line":"            cfg.StrOpt(\u0027fc_fabric_address_BRCD_FAB_1\u0027, default\u003d\u002710.24.48.213\u0027,"},{"line_number":69,"context_line":"                       help\u003d\u0027FC Fabric names\u0027),"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lkw%3D","line":66,"in_reply_to":"AAAATn%2F9qTE%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"2c918540fe78399529de6bce3fddf4d0f8d3a52d","unresolved":false,"context_lines":[{"line_number":63,"context_line":"class BrcdFcZoneDriverBaseTest(object):"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def setup_config(self, is_normal, mode):"},{"line_number":66,"context_line":"        #configuration \u003d mox.MockObject(conf.Configuration)"},{"line_number":67,"context_line":"        fc_test_opts \u003d ["},{"line_number":68,"context_line":"            cfg.StrOpt(\u0027fc_fabric_address_BRCD_FAB_1\u0027, default\u003d\u002710.24.48.213\u0027,"},{"line_number":69,"context_line":"                       help\u003d\u0027FC Fabric names\u0027),"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9Y2c%3D","line":66,"in_reply_to":"AAAATn%2F9uDw%3D","updated":"2013-12-12 05:00:48.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        #self.setup_fakes()"},{"line_number":113,"context_line":"        GlobalVars._zone_state \u003d []"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    \"\"\""},{"line_number":116,"context_line":"    def setup_fakes(self):"},{"line_number":117,"context_line":"        super(TestBrcdFcZoneDriver, self).setup_fakes()"},{"line_number":118,"context_line":"        self.stubs.Set(BrcdFCZoneDriver,"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qS8%3D","line":115,"updated":"2013-12-09 06:39:26.000000000","message":"Remove this commented out code please","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        #self.setup_fakes()"},{"line_number":113,"context_line":"        GlobalVars._zone_state \u003d []"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    \"\"\""},{"line_number":116,"context_line":"    def setup_fakes(self):"},{"line_number":117,"context_line":"        super(TestBrcdFcZoneDriver, self).setup_fakes()"},{"line_number":118,"context_line":"        self.stubs.Set(BrcdFCZoneDriver,"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lko%3D","line":115,"in_reply_to":"AAAATn%2F9qS8%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"6102d492b9615c0e2da99ebcb9f064de374ae033","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        self.stubs.Set(BrcdFCZoneDriver,"},{"line_number":122,"context_line":"                       \"get_active_zone_set\","},{"line_number":123,"context_line":"                       self.fake_get_active_zone_set)"},{"line_number":124,"context_line":"    \"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def setup_driver(self, config):"},{"line_number":127,"context_line":"        #self.driver \u003d BrcdFCZoneDriver(configuration\u003dconfiguration)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9tzU%3D","line":124,"updated":"2013-12-10 21:59:19.000000000","message":"should not leave in commented out code.\nremove.","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"2c918540fe78399529de6bce3fddf4d0f8d3a52d","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        self.stubs.Set(BrcdFCZoneDriver,"},{"line_number":122,"context_line":"                       \"get_active_zone_set\","},{"line_number":123,"context_line":"                       self.fake_get_active_zone_set)"},{"line_number":124,"context_line":"    \"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def setup_driver(self, config):"},{"line_number":127,"context_line":"        #self.driver \u003d BrcdFCZoneDriver(configuration\u003dconfiguration)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9Y2Q%3D","line":124,"in_reply_to":"AAAATn%2F9tzU%3D","updated":"2013-12-12 05:00:48.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    \"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def setup_driver(self, config):"},{"line_number":127,"context_line":"        #self.driver \u003d BrcdFCZoneDriver(configuration\u003dconfiguration)"},{"line_number":128,"context_line":"        self.driver \u003d importutils.import_object("},{"line_number":129,"context_line":"            \u0027cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver\u0027"},{"line_number":130,"context_line":"            \u0027.BrcdFCZoneDriver\u0027, configuration\u003dconfig)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qS4%3D","line":127,"updated":"2013-12-09 06:39:26.000000000","message":"Remove this commented out code please","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"6102d492b9615c0e2da99ebcb9f064de374ae033","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    \"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def setup_driver(self, config):"},{"line_number":127,"context_line":"        #self.driver \u003d BrcdFCZoneDriver(configuration\u003dconfiguration)"},{"line_number":128,"context_line":"        self.driver \u003d importutils.import_object("},{"line_number":129,"context_line":"            \u0027cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver\u0027"},{"line_number":130,"context_line":"            \u0027.BrcdFCZoneDriver\u0027, configuration\u003dconfig)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9tzQ%3D","line":127,"updated":"2013-12-10 21:59:19.000000000","message":"remove","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    \"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def setup_driver(self, config):"},{"line_number":127,"context_line":"        #self.driver \u003d BrcdFCZoneDriver(configuration\u003dconfiguration)"},{"line_number":128,"context_line":"        self.driver \u003d importutils.import_object("},{"line_number":129,"context_line":"            \u0027cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver\u0027"},{"line_number":130,"context_line":"            \u0027.BrcdFCZoneDriver\u0027, configuration\u003dconfig)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lkk%3D","line":127,"in_reply_to":"AAAATn%2F9qS4%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"2c918540fe78399529de6bce3fddf4d0f8d3a52d","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    \"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def setup_driver(self, config):"},{"line_number":127,"context_line":"        #self.driver \u003d BrcdFCZoneDriver(configuration\u003dconfiguration)"},{"line_number":128,"context_line":"        self.driver \u003d importutils.import_object("},{"line_number":129,"context_line":"            \u0027cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver\u0027"},{"line_number":130,"context_line":"            \u0027.BrcdFCZoneDriver\u0027, configuration\u003dconfig)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9Y2E%3D","line":127,"in_reply_to":"AAAATn%2F9tzQ%3D","updated":"2013-12-12 05:00:48.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"6102d492b9615c0e2da99ebcb9f064de374ae033","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        fabric_map \u003d {}"},{"line_number":137,"context_line":"        return fabric_map"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    #Normal flows for i-t mode"},{"line_number":140,"context_line":"    def test_add_connection(self):"},{"line_number":141,"context_line":"        GlobalVars._active_cfg \u003d _active_cfg_before_add"},{"line_number":142,"context_line":"        GlobalVars._is_normal_test \u003d True"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9tzA%3D","line":139,"updated":"2013-12-10 21:59:19.000000000","message":"Please add normal comment blocks for descriptions for methods, not do commented out code.\n\n\"\"\" Normal flows for i-t mode.\"","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"2c918540fe78399529de6bce3fddf4d0f8d3a52d","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        fabric_map \u003d {}"},{"line_number":137,"context_line":"        return fabric_map"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    #Normal flows for i-t mode"},{"line_number":140,"context_line":"    def test_add_connection(self):"},{"line_number":141,"context_line":"        GlobalVars._active_cfg \u003d _active_cfg_before_add"},{"line_number":142,"context_line":"        GlobalVars._is_normal_test \u003d True"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9Y10%3D","line":139,"in_reply_to":"AAAATn%2F9tzA%3D","updated":"2013-12-12 05:00:48.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"6102d492b9615c0e2da99ebcb9f064de374ae033","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            \u0027BRCD_FAB_1\u0027, _initiator_target_map)"},{"line_number":158,"context_line":"        self.assertFalse(_zone_name in GlobalVars._zone_state)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    #Normal flows for i mode"},{"line_number":161,"context_line":"    def test_add_connection_for_initiator_mode(self):"},{"line_number":162,"context_line":"        GlobalVars._is_normal_test \u003d True"},{"line_number":163,"context_line":"        GlobalVars._active_cfg \u003d _active_cfg_before_add"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9tyw%3D","line":160,"updated":"2013-12-10 21:59:19.000000000","message":"same as above","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"2c918540fe78399529de6bce3fddf4d0f8d3a52d","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            \u0027BRCD_FAB_1\u0027, _initiator_target_map)"},{"line_number":158,"context_line":"        self.assertFalse(_zone_name in GlobalVars._zone_state)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    #Normal flows for i mode"},{"line_number":161,"context_line":"    def test_add_connection_for_initiator_mode(self):"},{"line_number":162,"context_line":"        GlobalVars._is_normal_test \u003d True"},{"line_number":163,"context_line":"        GlobalVars._active_cfg \u003d _active_cfg_before_add"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9Y1s%3D","line":160,"in_reply_to":"AAAATn%2F9tyw%3D","updated":"2013-12-12 05:00:48.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"6102d492b9615c0e2da99ebcb9f064de374ae033","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            \u0027BRCD_FAB_1\u0027, _initiator_target_map)"},{"line_number":174,"context_line":"        self.assertFalse(_zone_name in GlobalVars._zone_state)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    #Test abnormal flows"},{"line_number":177,"context_line":"    def test_add_connection_for_invalid_fabric(self):"},{"line_number":178,"context_line":"        GlobalVars._is_normal_test \u003d True"},{"line_number":179,"context_line":"        GlobalVars._active_cfg \u003d _active_cfg_before_add"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9tyk%3D","line":176,"updated":"2013-12-10 21:59:19.000000000","message":"same as above","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"2c918540fe78399529de6bce3fddf4d0f8d3a52d","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            \u0027BRCD_FAB_1\u0027, _initiator_target_map)"},{"line_number":174,"context_line":"        self.assertFalse(_zone_name in GlobalVars._zone_state)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    #Test abnormal flows"},{"line_number":177,"context_line":"    def test_add_connection_for_invalid_fabric(self):"},{"line_number":178,"context_line":"        GlobalVars._is_normal_test \u003d True"},{"line_number":179,"context_line":"        GlobalVars._active_cfg \u003d _active_cfg_before_add"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9Y1g%3D","line":176,"in_reply_to":"AAAATn%2F9tyk%3D","updated":"2013-12-12 05:00:48.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"60411592ef41bdeb1ab0e7f89effc48619463b1e","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        fabric_map \u003d {}"},{"line_number":122,"context_line":"        return fabric_map"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    #Normal flows for i-t mode"},{"line_number":125,"context_line":"    def test_add_connection(self):"},{"line_number":126,"context_line":"        GlobalVars._active_cfg \u003d _active_cfg_before_add"},{"line_number":127,"context_line":"        GlobalVars._is_normal_test \u003d True"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9f80%3D","line":124,"updated":"2013-12-10 22:18:31.000000000","message":"fix comment style.  space after #","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        fabric_map \u003d {}"},{"line_number":122,"context_line":"        return fabric_map"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    #Normal flows for i-t mode"},{"line_number":125,"context_line":"    def test_add_connection(self):"},{"line_number":126,"context_line":"        GlobalVars._active_cfg \u003d _active_cfg_before_add"},{"line_number":127,"context_line":"        GlobalVars._is_normal_test \u003d True"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9Y0s%3D","line":124,"in_reply_to":"AAAATn%2F9f80%3D","updated":"2013-12-12 05:02:29.000000000","message":"Moved it as normal method comments","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"60411592ef41bdeb1ab0e7f89effc48619463b1e","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            \u0027BRCD_FAB_1\u0027, _initiator_target_map)"},{"line_number":143,"context_line":"        self.assertFalse(_zone_name in GlobalVars._zone_state)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    #Normal flows for i mode"},{"line_number":146,"context_line":"    def test_add_connection_for_initiator_mode(self):"},{"line_number":147,"context_line":"        GlobalVars._is_normal_test \u003d True"},{"line_number":148,"context_line":"        GlobalVars._active_cfg \u003d _active_cfg_before_add"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9f88%3D","line":145,"updated":"2013-12-10 22:18:31.000000000","message":"fix comment style.  space after #","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            \u0027BRCD_FAB_1\u0027, _initiator_target_map)"},{"line_number":143,"context_line":"        self.assertFalse(_zone_name in GlobalVars._zone_state)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    #Normal flows for i mode"},{"line_number":146,"context_line":"    def test_add_connection_for_initiator_mode(self):"},{"line_number":147,"context_line":"        GlobalVars._is_normal_test \u003d True"},{"line_number":148,"context_line":"        GlobalVars._active_cfg \u003d _active_cfg_before_add"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9Y0o%3D","line":145,"in_reply_to":"AAAATn%2F9f88%3D","updated":"2013-12-12 05:02:29.000000000","message":"Moved as normal method comment","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def setUp(self):"},{"line_number":107,"context_line":"        super(TestBrcdFcZoneDriver, self).setUp()"},{"line_number":108,"context_line":"        #setup config for normal flow"},{"line_number":109,"context_line":"        self.setup_driver(self.setup_config(True, 1))"},{"line_number":110,"context_line":"        GlobalVars._zone_state \u003d []"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9URU%3D","line":108,"updated":"2013-12-12 19:11:18.000000000","message":"missing space after #","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def setUp(self):"},{"line_number":107,"context_line":"        super(TestBrcdFcZoneDriver, self).setUp()"},{"line_number":108,"context_line":"        #setup config for normal flow"},{"line_number":109,"context_line":"        self.setup_driver(self.setup_config(True, 1))"},{"line_number":110,"context_line":"        GlobalVars._zone_state \u003d []"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F81SI%3D","line":108,"in_reply_to":"AAAATn%2F9URU%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"#    (c) Copyright 2013 Brocade Communications Systems Inc."},{"line_number":4,"context_line":"#    All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Copyright 2013 OpenStack LLC"},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":9,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2FjE%3D","line":6,"updated":"2014-01-04 14:18:44.000000000","message":"2014? :)","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":3,"context_line":"#    (c) Copyright 2013 Brocade Communications Systems Inc."},{"line_number":4,"context_line":"#    All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Copyright 2013 OpenStack LLC"},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":9,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FO6g%3D","line":6,"in_reply_to":"AAAAUH%2F%2F%2FjE%3D","updated":"2014-01-16 04:57:23.000000000","message":"Will change in all files in the next patch.","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"}],"cinder/tests/test_brcd_lookup_service.py":[{"author":{"_account_id":8911,"name":"Sergey Vilgelm","email":"sergey@vilgelm.info","username":"sergey.vilgelm"},"change_message_id":"f2160beda8b36b46314d86c3824b417131499f3a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.configuration \u003d self.setup_config()"},{"line_number":53,"context_line":"        #self.setup_driver(self.setup_config())"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def tearDown(self):"},{"line_number":56,"context_line":"        super(TestFCSanLookupService, self).tearDown()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    #override some of the functions"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bwbk%3D","line":55,"updated":"2013-11-20 16:03:36.000000000","message":"not needed","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5b4addc018e6621ef394a27608e97110d65b70a3","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.configuration \u003d self.setup_config()"},{"line_number":53,"context_line":"        #self.setup_driver(self.setup_config())"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def tearDown(self):"},{"line_number":56,"context_line":"        super(TestFCSanLookupService, self).tearDown()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    #override some of the functions"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BuhE%3D","line":55,"in_reply_to":"AAAATn%2F%2Bwbk%3D","updated":"2013-11-26 22:48:44.000000000","message":"Done","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8911,"name":"Sergey Vilgelm","email":"sergey@vilgelm.info","username":"sergey.vilgelm"},"change_message_id":"f2160beda8b36b46314d86c3824b417131499f3a","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"class GlobalParams(object):"},{"line_number":116,"context_line":"    global _is_normal_test"},{"line_number":117,"context_line":"    is_normal_Test \u003d True"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BwcE%3D","line":117,"updated":"2013-11-20 16:03:36.000000000","message":"ditto","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5b4addc018e6621ef394a27608e97110d65b70a3","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"class GlobalParams(object):"},{"line_number":116,"context_line":"    global _is_normal_test"},{"line_number":117,"context_line":"    is_normal_Test \u003d True"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BuhA%3D","line":117,"in_reply_to":"AAAATn%2F%2BwcE%3D","updated":"2013-11-26 22:48:44.000000000","message":"Done","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":"Unit tests for fc san lookup service"},{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":"import mox"},{"line_number":26,"context_line":"import paramiko"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qS0%3D","line":23,"updated":"2013-12-09 06:39:26.000000000","message":"Period at end of docstring","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":"Unit tests for fc san lookup service"},{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":"import mox"},{"line_number":26,"context_line":"import paramiko"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lgo%3D","line":23,"in_reply_to":"AAAATn%2F9qS0%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def setUp(self):"},{"line_number":51,"context_line":"        super(TestFCSanLookupService, self).setUp()"},{"line_number":52,"context_line":"        self.configuration \u003d self.setup_config()"},{"line_number":53,"context_line":"        #self.setup_driver(self.setup_config())"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    #override some of the functions"},{"line_number":56,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qSs%3D","line":53,"updated":"2013-12-09 06:39:26.000000000","message":"Remove this commented out code please","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def setUp(self):"},{"line_number":51,"context_line":"        super(TestFCSanLookupService, self).setUp()"},{"line_number":52,"context_line":"        self.configuration \u003d self.setup_config()"},{"line_number":53,"context_line":"        #self.setup_driver(self.setup_config())"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    #override some of the functions"},{"line_number":56,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lgk%3D","line":53,"in_reply_to":"AAAATn%2F9qSs%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    #override some of the functions"},{"line_number":56,"context_line":"    \"\"\""},{"line_number":57,"context_line":"    def __init__(self, **kwargs):"},{"line_number":58,"context_line":"        pass"},{"line_number":59,"context_line":"    \"\"\""},{"line_number":60,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qSo%3D","line":57,"updated":"2013-12-09 06:39:26.000000000","message":"Remove this commented out code please","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    #override some of the functions"},{"line_number":56,"context_line":"    \"\"\""},{"line_number":57,"context_line":"    def __init__(self, **kwargs):"},{"line_number":58,"context_line":"        pass"},{"line_number":59,"context_line":"    \"\"\""},{"line_number":60,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lgg%3D","line":57,"in_reply_to":"AAAATn%2F9qSo%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"60411592ef41bdeb1ab0e7f89effc48619463b1e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        super(TestFCSanLookupService, self).setUp()"},{"line_number":51,"context_line":"        self.configuration \u003d self.setup_config()"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    #override some of the functions"},{"line_number":54,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":55,"context_line":"        test.TestCase.__init__(self, *args, **kwargs)"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9f8s%3D","line":53,"updated":"2013-12-10 22:18:31.000000000","message":"space after #","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        super(TestFCSanLookupService, self).setUp()"},{"line_number":51,"context_line":"        self.configuration \u003d self.setup_config()"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    #override some of the functions"},{"line_number":54,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":55,"context_line":"        test.TestCase.__init__(self, *args, **kwargs)"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9Y0Q%3D","line":53,"in_reply_to":"AAAATn%2F9f8s%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"}],"cinder/volume/manager.py":[{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1c8ec7b9a86b1df27cf1a946ac748cf82f26d059","unresolved":false,"context_lines":[{"line_number":594,"context_line":"        target WWN is passed to ZoneManager to add or update zone config."},{"line_number":595,"context_line":"        \"\"\""},{"line_number":596,"context_line":"        initiator_target_map \u003d None"},{"line_number":597,"context_line":"        vol_type \u003d None"},{"line_number":598,"context_line":"        if (conn_info.get(\u0027data\u0027)):"},{"line_number":599,"context_line":"            if conn_info.get(\u0027data\u0027).get(\u0027initiator_target_map\u0027):"},{"line_number":600,"context_line":"                initiator_target_map \u003d conn_info.get(\u0027data\u0027).get("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FoZQ%3D","line":597,"updated":"2013-09-02 07:08:53.000000000","message":"vol_type \u003d conn_info.get(\u0027driver_volume_type\u0027, None)","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1c8ec7b9a86b1df27cf1a946ac748cf82f26d059","unresolved":false,"context_lines":[{"line_number":595,"context_line":"        \"\"\""},{"line_number":596,"context_line":"        initiator_target_map \u003d None"},{"line_number":597,"context_line":"        vol_type \u003d None"},{"line_number":598,"context_line":"        if (conn_info.get(\u0027data\u0027)):"},{"line_number":599,"context_line":"            if conn_info.get(\u0027data\u0027).get(\u0027initiator_target_map\u0027):"},{"line_number":600,"context_line":"                initiator_target_map \u003d conn_info.get(\u0027data\u0027).get("},{"line_number":601,"context_line":"                    \u0027initiator_target_map\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FodU%3D","line":598,"updated":"2013-09-02 07:08:53.000000000","message":"Code above already accesses conn_info[\u0027data\u0027], so there is no need to check this.","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1c8ec7b9a86b1df27cf1a946ac748cf82f26d059","unresolved":false,"context_lines":[{"line_number":596,"context_line":"        initiator_target_map \u003d None"},{"line_number":597,"context_line":"        vol_type \u003d None"},{"line_number":598,"context_line":"        if (conn_info.get(\u0027data\u0027)):"},{"line_number":599,"context_line":"            if conn_info.get(\u0027data\u0027).get(\u0027initiator_target_map\u0027):"},{"line_number":600,"context_line":"                initiator_target_map \u003d conn_info.get(\u0027data\u0027).get("},{"line_number":601,"context_line":"                    \u0027initiator_target_map\u0027)"},{"line_number":602,"context_line":"        if (conn_info.get(\u0027driver_volume_type\u0027)):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FoZ4%3D","line":599,"updated":"2013-09-02 07:08:53.000000000","message":"How about:  if \u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]:","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1c8ec7b9a86b1df27cf1a946ac748cf82f26d059","unresolved":false,"context_lines":[{"line_number":597,"context_line":"        vol_type \u003d None"},{"line_number":598,"context_line":"        if (conn_info.get(\u0027data\u0027)):"},{"line_number":599,"context_line":"            if conn_info.get(\u0027data\u0027).get(\u0027initiator_target_map\u0027):"},{"line_number":600,"context_line":"                initiator_target_map \u003d conn_info.get(\u0027data\u0027).get("},{"line_number":601,"context_line":"                    \u0027initiator_target_map\u0027)"},{"line_number":602,"context_line":"        if (conn_info.get(\u0027driver_volume_type\u0027)):"},{"line_number":603,"context_line":"            vol_type \u003d conn_info.get(\u0027driver_volume_type\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FoZ0%3D","line":600,"updated":"2013-09-02 07:08:53.000000000","message":"initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1c8ec7b9a86b1df27cf1a946ac748cf82f26d059","unresolved":false,"context_lines":[{"line_number":600,"context_line":"                initiator_target_map \u003d conn_info.get(\u0027data\u0027).get("},{"line_number":601,"context_line":"                    \u0027initiator_target_map\u0027)"},{"line_number":602,"context_line":"        if (conn_info.get(\u0027driver_volume_type\u0027)):"},{"line_number":603,"context_line":"            vol_type \u003d conn_info.get(\u0027driver_volume_type\u0027)"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        \"\"\""},{"line_number":606,"context_line":"        Invoke Zonemanager to handle automated FC zone management"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FoZU%3D","line":603,"updated":"2013-09-02 07:08:53.000000000","message":"Remove lines 602-603 after the change in line 597","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1c8ec7b9a86b1df27cf1a946ac748cf82f26d059","unresolved":false,"context_lines":[{"line_number":612,"context_line":"            kwargs \u003d {\"driver_volume_type\": vol_type,"},{"line_number":613,"context_line":"                      \"configuration\": self.configuration}"},{"line_number":614,"context_line":"            zonemanager \u003d ZoneManager(\u0027None\u0027, service_name\u003d\u0027volume\u0027, **kwargs)"},{"line_number":615,"context_line":"            LOG.info(_(\"Got Zone manager instance. Calling add_connection \""},{"line_number":616,"context_line":"                       \"with {%s}\"), initiator_target_map)"},{"line_number":617,"context_line":"            zonemanager.add_connection(initiator_target_map)"},{"line_number":618,"context_line":"        return conn_info"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FoYg%3D","line":615,"updated":"2013-09-02 07:08:53.000000000","message":"Should probably be LOG.debug","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":608,"context_line":"                                              \u003d\u003d \u0027fabric\u0027):"},{"line_number":609,"context_line":"            kwargs \u003d {\"driver_volume_type\": vol_type,"},{"line_number":610,"context_line":"                      \"configuration\": self.configuration}"},{"line_number":611,"context_line":"            zonemanager \u003d ZoneManager(\u0027None\u0027, service_name\u003d\u0027volume\u0027, **kwargs)"},{"line_number":612,"context_line":"            LOG.debug(_(\"Got Zone manager instance. Calling add_connection \""},{"line_number":613,"context_line":"                        \"with {%s}\"), initiator_target_map)"},{"line_number":614,"context_line":"            if (initiator_target_map):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FdCo%3D","line":611,"updated":"2013-09-04 18:08:42.000000000","message":"You may create a zonemanager and never use it if volume driver doesn\u0027t support initiator_target_map. Move this into the if block at line 614","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"from cinder.volume import volume_types"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"from cinder.taskflow import states"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"from cinder.zonemanager.fc_zone_manager import ZoneManager"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"from eventlet.greenpool import GreenPool"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qOc%3D","line":65,"updated":"2013-12-09 06:39:26.000000000","message":"remove this empty line","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":62,"context_line":"from cinder.volume import volume_types"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"from cinder.taskflow import states"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"from cinder.zonemanager.fc_zone_manager import ZoneManager"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"from eventlet.greenpool import GreenPool"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lgQ%3D","line":65,"in_reply_to":"AAAATn%2F9qOc%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":653,"context_line":"                               else \u0027rw\u0027)"},{"line_number":654,"context_line":"            conn_info[\u0027data\u0027][\u0027access_mode\u0027] \u003d access_mode"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"        \"\"\""},{"line_number":657,"context_line":"        If volume_type is fibre_channel, invoke FCZoneManager to add access"},{"line_number":658,"context_line":"        control via FC zoning."},{"line_number":659,"context_line":"        Initiator_target map associating each initiator WWN to one or more"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qSg%3D","line":656,"updated":"2013-12-09 06:39:26.000000000","message":"Need to be a comment using \u0027#\u0027 sign, and not the docstring-like comment. Also, if you can, start your comment with \u0027#NOTE(your_nickname):\u0027","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":653,"context_line":"                               else \u0027rw\u0027)"},{"line_number":654,"context_line":"            conn_info[\u0027data\u0027][\u0027access_mode\u0027] \u003d access_mode"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"        \"\"\""},{"line_number":657,"context_line":"        If volume_type is fibre_channel, invoke FCZoneManager to add access"},{"line_number":658,"context_line":"        control via FC zoning."},{"line_number":659,"context_line":"        Initiator_target map associating each initiator WWN to one or more"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9le4%3D","line":656,"in_reply_to":"AAAATn%2F9qSg%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":664,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"},{"line_number":665,"context_line":"            initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]"},{"line_number":666,"context_line":"        \"\"\""},{"line_number":667,"context_line":"        Invoke Zonemanager to handle automated FC zone management"},{"line_number":668,"context_line":"        when vol_type is fibre_channel and zoning_mode is fabric"},{"line_number":669,"context_line":"        \"\"\""},{"line_number":670,"context_line":"        LOG.debug(_(\"Zoning Mode: %s\"), self.configuration.zoning_mode)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qSY%3D","line":667,"updated":"2013-12-09 06:39:26.000000000","message":"Same as above","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":664,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"},{"line_number":665,"context_line":"            initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]"},{"line_number":666,"context_line":"        \"\"\""},{"line_number":667,"context_line":"        Invoke Zonemanager to handle automated FC zone management"},{"line_number":668,"context_line":"        when vol_type is fibre_channel and zoning_mode is fabric"},{"line_number":669,"context_line":"        \"\"\""},{"line_number":670,"context_line":"        LOG.debug(_(\"Zoning Mode: %s\"), self.configuration.zoning_mode)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9le0%3D","line":667,"in_reply_to":"AAAATn%2F9qSY%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        volume_ref \u003d self.db.volume_get(context, volume_id)"},{"line_number":694,"context_line":"        self.driver.terminate_connection(volume_ref, connector, force\u003dforce)"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        # The below section need to be uncommented once volume driver start"},{"line_number":697,"context_line":"        # returning connection info ~sk"},{"line_number":698,"context_line":""},{"line_number":699,"context_line":"        #info \u003d self.driver.terminate_connection("}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qSQ%3D","line":696,"updated":"2013-12-09 06:39:26.000000000","message":"I think it would be good if you not keep this code in Cinder, as comment. Can you please save it somewhere in your local repository, and update it in the patch where the connection information is returned?","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        volume_ref \u003d self.db.volume_get(context, volume_id)"},{"line_number":694,"context_line":"        self.driver.terminate_connection(volume_ref, connector, force\u003dforce)"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        # The below section need to be uncommented once volume driver start"},{"line_number":697,"context_line":"        # returning connection info ~sk"},{"line_number":698,"context_line":""},{"line_number":699,"context_line":"        #info \u003d self.driver.terminate_connection("}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9leA%3D","line":696,"in_reply_to":"AAAATn%2F9qSQ%3D","updated":"2013-12-10 01:16:06.000000000","message":"I wanted to keep this code commented out here for ease of integration since the volume driver change is done independently in another branch. I will remove the code from here if I don\u0027t see the driver code coming in soon. Hope that is fine.","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":707,"context_line":"        #if (info.get(\u0027driver_volume_type\u0027)):"},{"line_number":708,"context_line":"        #    vol_type \u003d info.get(\u0027driver_volume_type\u0027)"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"        \"\"\"Call zone manager to remove connection control"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        Invoke Zonemanager to handle automated FC zone management"},{"line_number":713,"context_line":"        when vol_type is fibre_channel and zoning_mode is fabric"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qSU%3D","line":710,"updated":"2013-12-09 06:39:26.000000000","message":"Same as above","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":707,"context_line":"        #if (info.get(\u0027driver_volume_type\u0027)):"},{"line_number":708,"context_line":"        #    vol_type \u003d info.get(\u0027driver_volume_type\u0027)"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"        \"\"\"Call zone manager to remove connection control"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        Invoke Zonemanager to handle automated FC zone management"},{"line_number":713,"context_line":"        when vol_type is fibre_channel and zoning_mode is fabric"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9ldM%3D","line":710,"in_reply_to":"AAAATn%2F9qSU%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"60411592ef41bdeb1ab0e7f89effc48619463b1e","unresolved":false,"context_lines":[{"line_number":734,"context_line":"        # FCZoneManager to add access control via FC zoning. Initiator_target"},{"line_number":735,"context_line":"        # map associating each initiator WWN to one or more target WWN is"},{"line_number":736,"context_line":"        # passed to ZoneManager to add or update zone config."},{"line_number":737,"context_line":"        LOG.debug(_(\"Connection Info:%s\"), conn_info)"},{"line_number":738,"context_line":"        initiator_target_map \u003d None"},{"line_number":739,"context_line":"        vol_type \u003d conn_info.get(\u0027driver_volume_type\u0027, None)"},{"line_number":740,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9f78%3D","line":737,"updated":"2013-12-10 22:18:31.000000000","message":"remove, this makes the debug log verbose.","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":734,"context_line":"        # FCZoneManager to add access control via FC zoning. Initiator_target"},{"line_number":735,"context_line":"        # map associating each initiator WWN to one or more target WWN is"},{"line_number":736,"context_line":"        # passed to ZoneManager to add or update zone config."},{"line_number":737,"context_line":"        LOG.debug(_(\"Connection Info:%s\"), conn_info)"},{"line_number":738,"context_line":"        initiator_target_map \u003d None"},{"line_number":739,"context_line":"        vol_type \u003d conn_info.get(\u0027driver_volume_type\u0027, None)"},{"line_number":740,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9Yy4%3D","line":737,"in_reply_to":"AAAATn%2F9f78%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"60411592ef41bdeb1ab0e7f89effc48619463b1e","unresolved":false,"context_lines":[{"line_number":758,"context_line":"                # NOTE(skolathur):  Suppress any error for now since we don\u0027t"},{"line_number":759,"context_line":"                # have a way to control vol driver task and zone driver task"},{"line_number":760,"context_line":"                # in single TXN"},{"line_number":761,"context_line":"                LOG.error(str(e))"},{"line_number":762,"context_line":"        return conn_info"},{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fzw%3D","line":761,"updated":"2013-12-10 22:18:31.000000000","message":"Please refactor this code into it\u0027s own method that is called if and only if vol_type \u003d\u003d \u0027fibre_channel\u0027   It keeps this method cleaner.","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":758,"context_line":"                # NOTE(skolathur):  Suppress any error for now since we don\u0027t"},{"line_number":759,"context_line":"                # have a way to control vol driver task and zone driver task"},{"line_number":760,"context_line":"                # in single TXN"},{"line_number":761,"context_line":"                LOG.error(str(e))"},{"line_number":762,"context_line":"        return conn_info"},{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YwM%3D","line":761,"in_reply_to":"AAAATn%2F9fzw%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"60411592ef41bdeb1ab0e7f89effc48619463b1e","unresolved":false,"context_lines":[{"line_number":795,"context_line":"        #    kwargs \u003d {\"driver_volume_type\": vol_type,"},{"line_number":796,"context_line":"        #              \"configuration\": self.configuration}"},{"line_number":797,"context_line":"        #    zonemanager \u003d ZoneManager(\u0027None\u0027, service_name\u003d\u0027volume\u0027, **kwargs)"},{"line_number":798,"context_line":"        #    zonemanager.delete_connection(initiator_target_map)"},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"    @utils.require_driver_initialized"},{"line_number":801,"context_line":"    def accept_transfer(self, context, volume_id, new_user, new_project):"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fzo%3D","line":798,"updated":"2013-12-10 22:18:31.000000000","message":"please remove.","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":795,"context_line":"        #    kwargs \u003d {\"driver_volume_type\": vol_type,"},{"line_number":796,"context_line":"        #              \"configuration\": self.configuration}"},{"line_number":797,"context_line":"        #    zonemanager \u003d ZoneManager(\u0027None\u0027, service_name\u003d\u0027volume\u0027, **kwargs)"},{"line_number":798,"context_line":"        #    zonemanager.delete_connection(initiator_target_map)"},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"    @utils.require_driver_initialized"},{"line_number":801,"context_line":"    def accept_transfer(self, context, volume_id, new_user, new_project):"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YwE%3D","line":798,"in_reply_to":"AAAATn%2F9fzo%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":987,"context_line":"            context, volume, \"resize.end\","},{"line_number":988,"context_line":"            extra_usage_info\u003d{\u0027size\u0027: int(new_size)})"},{"line_number":989,"context_line":""},{"line_number":990,"context_line":"    def _add_connection(self, conn_info):"},{"line_number":991,"context_line":"        _initiator_target_map \u003d None"},{"line_number":992,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"},{"line_number":993,"context_line":"            initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UQM%3D","line":990,"updated":"2013-12-12 19:11:18.000000000","message":"change name to _add_fc_connection\n\nAlso need some explanation in a standard \"\"\" block to describe what the purpose of this method is for those that don\u0027t know what FC requires.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":987,"context_line":"            context, volume, \"resize.end\","},{"line_number":988,"context_line":"            extra_usage_info\u003d{\u0027size\u0027: int(new_size)})"},{"line_number":989,"context_line":""},{"line_number":990,"context_line":"    def _add_connection(self, conn_info):"},{"line_number":991,"context_line":"        _initiator_target_map \u003d None"},{"line_number":992,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"},{"line_number":993,"context_line":"            initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4xA%3D","line":990,"in_reply_to":"AAAATn%2F9UQM%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":988,"context_line":"            extra_usage_info\u003d{\u0027size\u0027: int(new_size)})"},{"line_number":989,"context_line":""},{"line_number":990,"context_line":"    def _add_connection(self, conn_info):"},{"line_number":991,"context_line":"        _initiator_target_map \u003d None"},{"line_number":992,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"},{"line_number":993,"context_line":"            initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]"},{"line_number":994,"context_line":"        LOG.debug(_(\"Initiator Target map:%s\"), _initiator_target_map)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9Tdc%3D","line":991,"updated":"2013-12-12 22:46:11.000000000","message":"You have _initiator_target_map (note leading underscore) here but not later on.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":988,"context_line":"            extra_usage_info\u003d{\u0027size\u0027: int(new_size)})"},{"line_number":989,"context_line":""},{"line_number":990,"context_line":"    def _add_connection(self, conn_info):"},{"line_number":991,"context_line":"        _initiator_target_map \u003d None"},{"line_number":992,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"},{"line_number":993,"context_line":"            initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]"},{"line_number":994,"context_line":"        LOG.debug(_(\"Initiator Target map:%s\"), _initiator_target_map)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4w4%3D","line":991,"in_reply_to":"AAAATn%2F9Tdc%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":989,"context_line":""},{"line_number":990,"context_line":"    def _add_connection(self, conn_info):"},{"line_number":991,"context_line":"        _initiator_target_map \u003d None"},{"line_number":992,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"},{"line_number":993,"context_line":"            initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]"},{"line_number":994,"context_line":"        LOG.debug(_(\"Initiator Target map:%s\"), _initiator_target_map)"},{"line_number":995,"context_line":"        # NOTE(skolathur): Invoke Zonemanager to handle automated FC zone"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X30%3D","line":992,"updated":"2013-12-12 05:45:58.000000000","message":"We can lose the surrounding ()s since we\u0027re on the same line.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":989,"context_line":""},{"line_number":990,"context_line":"    def _add_connection(self, conn_info):"},{"line_number":991,"context_line":"        _initiator_target_map \u003d None"},{"line_number":992,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"},{"line_number":993,"context_line":"            initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]"},{"line_number":994,"context_line":"        LOG.debug(_(\"Initiator Target map:%s\"), _initiator_target_map)"},{"line_number":995,"context_line":"        # NOTE(skolathur): Invoke Zonemanager to handle automated FC zone"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4w0%3D","line":992,"in_reply_to":"AAAATn%2F9X30%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":991,"context_line":"        _initiator_target_map \u003d None"},{"line_number":992,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"},{"line_number":993,"context_line":"            initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]"},{"line_number":994,"context_line":"        LOG.debug(_(\"Initiator Target map:%s\"), _initiator_target_map)"},{"line_number":995,"context_line":"        # NOTE(skolathur): Invoke Zonemanager to handle automated FC zone"},{"line_number":996,"context_line":"        # management when vol_type is fibre_channel and zoning_mode is fabric"},{"line_number":997,"context_line":"        # Initiator_target map associating each initiator WWN to one or more"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X38%3D","line":994,"updated":"2013-12-12 05:45:58.000000000","message":"Global comment: we shouldn\u0027t be translating debug level messages.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":991,"context_line":"        _initiator_target_map \u003d None"},{"line_number":992,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"},{"line_number":993,"context_line":"            initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]"},{"line_number":994,"context_line":"        LOG.debug(_(\"Initiator Target map:%s\"), _initiator_target_map)"},{"line_number":995,"context_line":"        # NOTE(skolathur): Invoke Zonemanager to handle automated FC zone"},{"line_number":996,"context_line":"        # management when vol_type is fibre_channel and zoning_mode is fabric"},{"line_number":997,"context_line":"        # Initiator_target map associating each initiator WWN to one or more"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4ws%3D","line":994,"in_reply_to":"AAAATn%2F9X38%3D","updated":"2014-01-16 04:55:14.000000000","message":"Leaving as is for now.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":991,"context_line":"        _initiator_target_map \u003d None"},{"line_number":992,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"},{"line_number":993,"context_line":"            initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]"},{"line_number":994,"context_line":"        LOG.debug(_(\"Initiator Target map:%s\"), _initiator_target_map)"},{"line_number":995,"context_line":"        # NOTE(skolathur): Invoke Zonemanager to handle automated FC zone"},{"line_number":996,"context_line":"        # management when vol_type is fibre_channel and zoning_mode is fabric"},{"line_number":997,"context_line":"        # Initiator_target map associating each initiator WWN to one or more"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UPc%3D","line":994,"in_reply_to":"AAAATn%2F9X38%3D","updated":"2013-12-12 19:11:18.000000000","message":"This is fine to do as it\u0027s done throughout the cinder codebase.  \nLook at the rest of the manager.py for example.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":991,"context_line":"        _initiator_target_map \u003d None"},{"line_number":992,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"},{"line_number":993,"context_line":"            initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]"},{"line_number":994,"context_line":"        LOG.debug(_(\"Initiator Target map:%s\"), _initiator_target_map)"},{"line_number":995,"context_line":"        # NOTE(skolathur): Invoke Zonemanager to handle automated FC zone"},{"line_number":996,"context_line":"        # management when vol_type is fibre_channel and zoning_mode is fabric"},{"line_number":997,"context_line":"        # Initiator_target map associating each initiator WWN to one or more"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FhSk%3D","line":994,"in_reply_to":"AAAATn%2F9X38%3D","updated":"2014-01-16 04:55:14.000000000","message":"leaving it for now as this is common in cinder.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":997,"context_line":"        # Initiator_target map associating each initiator WWN to one or more"},{"line_number":998,"context_line":"        # target WWN is passed to ZoneManager to add or update zone config."},{"line_number":999,"context_line":""},{"line_number":1000,"context_line":"        LOG.debug(_(\"Zoning Mode: %s\"), self.configuration.zoning_mode)"},{"line_number":1001,"context_line":"        if (self.configuration.zoning_mode \u003d\u003d \u0027fabric\u0027 and"},{"line_number":1002,"context_line":"                initiator_target_map):"},{"line_number":1003,"context_line":"            kwargs \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X4Q%3D","line":1000,"updated":"2013-12-12 05:45:58.000000000","message":"Global comment: we shouldn\u0027t be translating debug level messages.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":997,"context_line":"        # Initiator_target map associating each initiator WWN to one or more"},{"line_number":998,"context_line":"        # target WWN is passed to ZoneManager to add or update zone config."},{"line_number":999,"context_line":""},{"line_number":1000,"context_line":"        LOG.debug(_(\"Zoning Mode: %s\"), self.configuration.zoning_mode)"},{"line_number":1001,"context_line":"        if (self.configuration.zoning_mode \u003d\u003d \u0027fabric\u0027 and"},{"line_number":1002,"context_line":"                initiator_target_map):"},{"line_number":1003,"context_line":"            kwargs \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UPY%3D","line":1000,"in_reply_to":"AAAATn%2F9X4Q%3D","updated":"2013-12-12 19:11:18.000000000","message":"This is fine to do as it\u0027s done throughout the cinder codebase.  \nLook at the rest of the manager.py for example.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":997,"context_line":"        # Initiator_target map associating each initiator WWN to one or more"},{"line_number":998,"context_line":"        # target WWN is passed to ZoneManager to add or update zone config."},{"line_number":999,"context_line":""},{"line_number":1000,"context_line":"        LOG.debug(_(\"Zoning Mode: %s\"), self.configuration.zoning_mode)"},{"line_number":1001,"context_line":"        if (self.configuration.zoning_mode \u003d\u003d \u0027fabric\u0027 and"},{"line_number":1002,"context_line":"                initiator_target_map):"},{"line_number":1003,"context_line":"            kwargs \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FhSg%3D","line":1000,"in_reply_to":"AAAATn%2F9X4Q%3D","updated":"2014-01-16 04:55:14.000000000","message":"leaving it for now as this is common in cinder.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":997,"context_line":"        # Initiator_target map associating each initiator WWN to one or more"},{"line_number":998,"context_line":"        # target WWN is passed to ZoneManager to add or update zone config."},{"line_number":999,"context_line":""},{"line_number":1000,"context_line":"        LOG.debug(_(\"Zoning Mode: %s\"), self.configuration.zoning_mode)"},{"line_number":1001,"context_line":"        if (self.configuration.zoning_mode \u003d\u003d \u0027fabric\u0027 and"},{"line_number":1002,"context_line":"                initiator_target_map):"},{"line_number":1003,"context_line":"            kwargs \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4wo%3D","line":1000,"in_reply_to":"AAAATn%2F9X4Q%3D","updated":"2014-01-16 04:55:14.000000000","message":"same as above","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"            except Exception as e:"},{"line_number":1009,"context_line":"                # NOTE(skolathur):  Suppress any error for now since we don\u0027t"},{"line_number":1010,"context_line":"                # have a way to control vol driver task and zone driver task"},{"line_number":1011,"context_line":"                # in single TXN"},{"line_number":1012,"context_line":"                LOG.error(str(e))"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UOQ%3D","line":1011,"updated":"2013-12-12 19:11:18.000000000","message":"If this fails, we need to raise an exception.   Please create a new exception and raise it here.   If we didn\u0027t zone properly, then the attach is going to fail, but we\u0027ll leave the volume in the attached state, when it\u0027s not.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"            except Exception as e:"},{"line_number":1009,"context_line":"                # NOTE(skolathur):  Suppress any error for now since we don\u0027t"},{"line_number":1010,"context_line":"                # have a way to control vol driver task and zone driver task"},{"line_number":1011,"context_line":"                # in single TXN"},{"line_number":1012,"context_line":"                LOG.error(str(e))"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FhSo%3D","line":1011,"in_reply_to":"AAAATn%2F9Tb4%3D","updated":"2014-01-16 04:55:14.000000000","message":"Can we just call terminate_connection or we need to do any additional db updates? I\u0027ll test this out and fix the clean up part.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"            except Exception as e:"},{"line_number":1009,"context_line":"                # NOTE(skolathur):  Suppress any error for now since we don\u0027t"},{"line_number":1010,"context_line":"                # have a way to control vol driver task and zone driver task"},{"line_number":1011,"context_line":"                # in single TXN"},{"line_number":1012,"context_line":"                LOG.error(str(e))"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FhSs%3D","line":1011,"in_reply_to":"AAAATn%2F9UOQ%3D","updated":"2014-01-16 04:55:14.000000000","message":"Since the ZoneManager is throwing a custom exception, I am just going to re-raise it here. Hope that would suffice.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"            except Exception as e:"},{"line_number":1009,"context_line":"                # NOTE(skolathur):  Suppress any error for now since we don\u0027t"},{"line_number":1010,"context_line":"                # have a way to control vol driver task and zone driver task"},{"line_number":1011,"context_line":"                # in single TXN"},{"line_number":1012,"context_line":"                LOG.error(str(e))"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9Tb4%3D","line":1011,"in_reply_to":"AAAATn%2F9UOQ%3D","updated":"2013-12-12 22:46:11.000000000","message":"We also need to call terminate_connection here to back out the initialize_connection that we\u0027re now failing.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e49a56306b5fa82e2d12a47b9fd529504e9330ed","unresolved":false,"context_lines":[{"line_number":1184,"context_line":"            except Exception as e:"},{"line_number":1185,"context_line":"                # NOTE(skolathur):  Suppress any error for now since we don\u0027t"},{"line_number":1186,"context_line":"                # have a way to control vol driver task and zone driver task"},{"line_number":1187,"context_line":"                # in single TXN"},{"line_number":1188,"context_line":"                LOG.error(str(e))"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2FlT8%3D","line":1187,"updated":"2014-01-10 22:06:01.000000000","message":"We still need to raise an exception here.   This is bad to just leave this as a log entry.","commit_id":"9e37fbf50e9d0b6e5505d5ac3c9ce1f2e07b9f7a"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"7e111c0165d31b4457896a8ca12c83cf2326b1dc","unresolved":false,"context_lines":[{"line_number":1184,"context_line":"            except Exception as e:"},{"line_number":1185,"context_line":"                # NOTE(skolathur):  Suppress any error for now since we don\u0027t"},{"line_number":1186,"context_line":"                # have a way to control vol driver task and zone driver task"},{"line_number":1187,"context_line":"                # in single TXN"},{"line_number":1188,"context_line":"                LOG.error(str(e))"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2FcuA%3D","line":1187,"in_reply_to":"AAAAUH%2F%2FlT8%3D","updated":"2014-01-16 04:58:13.000000000","message":"Done","commit_id":"9e37fbf50e9d0b6e5505d5ac3c9ce1f2e07b9f7a"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"cb96d72e423c515623103eaf50bd392771e4479a","unresolved":false,"context_lines":[{"line_number":1155,"context_line":"            QUOTAS.commit(context, new_reservations, project_id\u003dproject_id)"},{"line_number":1156,"context_line":"        self.publish_service_capabilities(context)"},{"line_number":1157,"context_line":""},{"line_number":1158,"context_line":"    def _add_connection(self, conn_info):"},{"line_number":1159,"context_line":"        _initiator_target_map \u003d None"},{"line_number":1160,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"},{"line_number":1161,"context_line":"            _initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FKxw%3D","line":1158,"updated":"2014-01-16 19:30:16.000000000","message":"What happened to the name and the comment block here from patch 24?   This is supposed to be called _add_fc_connection","commit_id":"060373bb05199dc09605b139267329d6aa69b307"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"d620405b1b019ad282ee72f026e0525d774a08cf","unresolved":false,"context_lines":[{"line_number":1155,"context_line":"            QUOTAS.commit(context, new_reservations, project_id\u003dproject_id)"},{"line_number":1156,"context_line":"        self.publish_service_capabilities(context)"},{"line_number":1157,"context_line":""},{"line_number":1158,"context_line":"    def _add_connection(self, conn_info):"},{"line_number":1159,"context_line":"        _initiator_target_map \u003d None"},{"line_number":1160,"context_line":"        if (\u0027initiator_target_map\u0027 in conn_info[\u0027data\u0027]):"},{"line_number":1161,"context_line":"            _initiator_target_map \u003d conn_info[\u0027data\u0027][\u0027initiator_target_map\u0027]"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FI58%3D","line":1158,"in_reply_to":"AAAAUH%2F%2FKxw%3D","updated":"2014-01-17 02:55:09.000000000","message":"I think I made some mistake while merge at the time of checkin. Corrected and uploaded a patch","commit_id":"060373bb05199dc09605b139267329d6aa69b307"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"38c7f54e0dfcbf60286a2c813d7eead536d7e31e","unresolved":false,"context_lines":[{"line_number":788,"context_line":"            self._add_fc_connection(conn_info)"},{"line_number":789,"context_line":"        return conn_info"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":"    def terminate_connection(self, context, volume_id, connector, force\u003dFalse):"},{"line_number":792,"context_line":"        \"\"\"Cleanup connection from host represented by connector."},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"        The format of connector is the same as for initialize_connection."}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BdZM%3D","line":791,"updated":"2014-01-25 23:35:52.000000000","message":"Just to check - this code drop does nothing on terminate_connection?","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"bf6a0d95bb9a08baf0b4babe8a3b778f527cb77b","unresolved":false,"context_lines":[{"line_number":788,"context_line":"            self._add_fc_connection(conn_info)"},{"line_number":789,"context_line":"        return conn_info"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":"    def terminate_connection(self, context, volume_id, connector, force\u003dFalse):"},{"line_number":792,"context_line":"        \"\"\"Cleanup connection from host represented by connector."},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"        The format of connector is the same as for initialize_connection."}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BIJ8%3D","line":791,"in_reply_to":"AAAAUH%2F%2BV2Q%3D","updated":"2014-01-30 18:52:39.000000000","message":"If we leave the zones alone, it could just be some dead zones. As long as the volume is not mapped to the host, it should not create any other issues, I guess. But my idea was to introduce the delete_connection call once the volume driver changes to return conn_info is in place. In case of zoning mode is set as initiator-target, a zone is created for each pair of I-T and detach will result in deleting only corresponding zones. If zoning mode used is \u0027initiator\u0027 then we zone multiple targets to same initiator. But in this case, detaching a target will result in updating the zone to remove only the target zone member. So, unless all targets are detached, the initiator is not removed from the zoning config. If you see any issues in this logic, let me know. Currently, we zone using the pwwns passed in connection info and we don\u0027t have a physical pwwn to virtual pwwn lookup in zone manager. I am thinking this is something we can look into in the next drop either from volume driver to provide the mapping or from zone driver to build the lookup logic. Btw, I was thinking of a schema change to persist the attach/detach state for the same pair of initiator-target and use it for deciding whether a zone has to be deleted (delete only for the last detach for the same pair). But I am not sure of the use case where multiple attach happening for the same pair of initiator-target. This is another enhancement I am hoping we can add in next drop.","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"bf6a0d95bb9a08baf0b4babe8a3b778f527cb77b","unresolved":false,"context_lines":[{"line_number":788,"context_line":"            self._add_fc_connection(conn_info)"},{"line_number":789,"context_line":"        return conn_info"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":"    def terminate_connection(self, context, volume_id, connector, force\u003dFalse):"},{"line_number":792,"context_line":"        \"\"\"Cleanup connection from host represented by connector."},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"        The format of connector is the same as for initialize_connection."}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BItg%3D","line":791,"in_reply_to":"AAAAUH%2F%2BdZM%3D","updated":"2014-01-30 18:52:39.000000000","message":"I have the code to call delete_connection after terminate_connection of volume_driver is called. This has been removed since it depends on the terminate_connection call to volume_driver returning connection_info. It can be plugged in once driver starts returning I_T map in connection info.","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"67156ab58a6f8a2fc9b08ee07f569acd24d99046","unresolved":false,"context_lines":[{"line_number":788,"context_line":"            self._add_fc_connection(conn_info)"},{"line_number":789,"context_line":"        return conn_info"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":"    def terminate_connection(self, context, volume_id, connector, force\u003dFalse):"},{"line_number":792,"context_line":"        \"\"\"Cleanup connection from host represented by connector."},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"        The format of connector is the same as for initialize_connection."}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BV2Q%3D","line":791,"in_reply_to":"AAAAUH%2F%2BdZM%3D","updated":"2014-01-27 21:25:58.000000000","message":"We don\u0027t want to always unzone at this point, because there may be other volumes still connected to other VMS or baremetal nodes.  If we unzone a host, anything else connected to it will stop working.   We would need a DB table entry to find out if this is the last volume being disconnected, and then unzone if so, else leave it alone.   Are we hurting anything by leaving a host zoned?","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"b297bfe28304095ab30415cc8da2e90eb3996f6d","unresolved":false,"context_lines":[{"line_number":825,"context_line":"        # NOTE(skolathur): If volume_type is fibre_channel, invoke"},{"line_number":826,"context_line":"        # FCZoneManager to add access control via FC zoning."},{"line_number":827,"context_line":"        vol_type \u003d conn_info.get(\u0027driver_volume_type\u0027, None)"},{"line_number":828,"context_line":"        if (vol_type \u003d\u003d \u0027fibre_channel\u0027):"},{"line_number":829,"context_line":"            self._add_fc_connection(conn_info)"},{"line_number":830,"context_line":"        return conn_info"},{"line_number":831,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUX%2F%2FxG0%3D","line":828,"updated":"2014-02-10 22:43:18.000000000","message":"We really shouldn\u0027t be doing this if the FCZM hasn\u0027t been configured.   If the zoning mode is none, there is no reason to call the zone manager to add a connection.","commit_id":"2e2dfa9c83f98022bac93dd81e332efff49c245b"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"6403b9dff02f1f1b93f1bfd86005114ac788f0cd","unresolved":false,"context_lines":[{"line_number":825,"context_line":"        # NOTE(skolathur): If volume_type is fibre_channel, invoke"},{"line_number":826,"context_line":"        # FCZoneManager to add access control via FC zoning."},{"line_number":827,"context_line":"        vol_type \u003d conn_info.get(\u0027driver_volume_type\u0027, None)"},{"line_number":828,"context_line":"        if (vol_type \u003d\u003d \u0027fibre_channel\u0027):"},{"line_number":829,"context_line":"            self._add_fc_connection(conn_info)"},{"line_number":830,"context_line":"        return conn_info"},{"line_number":831,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUX%2F%2Fl6s%3D","line":828,"in_reply_to":"AAAAUX%2F%2FxG0%3D","updated":"2014-02-12 07:52:52.000000000","message":"The check was done in _add_fc_connection. Moving it up here now.","commit_id":"2e2dfa9c83f98022bac93dd81e332efff49c245b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"b297bfe28304095ab30415cc8da2e90eb3996f6d","unresolved":false,"context_lines":[{"line_number":841,"context_line":""},{"line_number":842,"context_line":"        volume_ref \u003d self.db.volume_get(context, volume_id)"},{"line_number":843,"context_line":"        try:"},{"line_number":844,"context_line":"            self.driver.terminate_connection(volume_ref,"},{"line_number":845,"context_line":"                                             connector, force\u003dforce)"},{"line_number":846,"context_line":"        except Exception as err:"},{"line_number":847,"context_line":"            err_msg \u003d (_(\u0027Unable to terminate volume connection: %(err)s\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUX%2F%2FxG4%3D","line":844,"updated":"2014-02-10 22:43:18.000000000","message":"Shouldn\u0027t we be removing the FC connection at this point?","commit_id":"2e2dfa9c83f98022bac93dd81e332efff49c245b"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"6403b9dff02f1f1b93f1bfd86005114ac788f0cd","unresolved":false,"context_lines":[{"line_number":841,"context_line":""},{"line_number":842,"context_line":"        volume_ref \u003d self.db.volume_get(context, volume_id)"},{"line_number":843,"context_line":"        try:"},{"line_number":844,"context_line":"            self.driver.terminate_connection(volume_ref,"},{"line_number":845,"context_line":"                                             connector, force\u003dforce)"},{"line_number":846,"context_line":"        except Exception as err:"},{"line_number":847,"context_line":"            err_msg \u003d (_(\u0027Unable to terminate volume connection: %(err)s\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUX%2F%2Fl1E%3D","line":844,"in_reply_to":"AAAAUX%2F%2FxG4%3D","updated":"2014-02-12 07:52:52.000000000","message":"Yes, I had the code commented out since it depends on volume driver returning connection_info after terminate_connection call. I removed the commented code based on an earlier comment. I can add the code back but the volume driver change also will need to come in.","commit_id":"2e2dfa9c83f98022bac93dd81e332efff49c245b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"b53a02512ee8ccc85b53756a66f9366e08999e34","unresolved":false,"context_lines":[{"line_number":866,"context_line":"                kwargs \u003d {\"driver_volume_type\": vol_type,"},{"line_number":867,"context_line":"                          \"configuration\": self.configuration}"},{"line_number":868,"context_line":"                zonemanager \u003d ZoneManager(**kwargs)"},{"line_number":869,"context_line":"                zonemanager.delete_connection(initiator_target_map)"},{"line_number":870,"context_line":"        except Exception as err:"},{"line_number":871,"context_line":"            err_msg \u003d (_(\u0027Unable to terminate volume connection: %(err)s\u0027)"},{"line_number":872,"context_line":"                       % {\u0027err\u0027: str(err)})"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUX%2F%2FT7A%3D","line":869,"updated":"2014-02-14 02:23:22.000000000","message":"This should all get put inside it\u0027s own method to clean up terminate_connection.","commit_id":"387634070eda0c967a21b514204a3971d117f28d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"0b278fa4415b17f8c4589767bda5d94b28b3abdf","unresolved":false,"context_lines":[{"line_number":866,"context_line":"                kwargs \u003d {\"driver_volume_type\": vol_type,"},{"line_number":867,"context_line":"                          \"configuration\": self.configuration}"},{"line_number":868,"context_line":"                zonemanager \u003d ZoneManager(**kwargs)"},{"line_number":869,"context_line":"                zonemanager.delete_connection(initiator_target_map)"},{"line_number":870,"context_line":"        except Exception as err:"},{"line_number":871,"context_line":"            err_msg \u003d (_(\u0027Unable to terminate volume connection: %(err)s\u0027)"},{"line_number":872,"context_line":"                       % {\u0027err\u0027: str(err)})"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUX%2F%2FTFI%3D","line":869,"in_reply_to":"AAAAUX%2F%2FT7A%3D","updated":"2014-02-14 06:25:02.000000000","message":"Moved the code below and also changed to re-use common code prior to calling add_connection or delete_connection","commit_id":"387634070eda0c967a21b514204a3971d117f28d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"4a31903af1e96f671597f534715fb1d52baab48e","unresolved":false,"context_lines":[{"line_number":1286,"context_line":"        # Initiator_target map associating each initiator WWN to one or more"},{"line_number":1287,"context_line":"        # target WWN is passed to ZoneManager to add or update zone config."},{"line_number":1288,"context_line":"        LOG.debug(_(\"Zoning op: %s\"), zone_op)"},{"line_number":1289,"context_line":"        if (_initiator_target_map):"},{"line_number":1290,"context_line":"            kwargs \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":1291,"context_line":"                      \u0027configuration\u0027: self.configuration}"},{"line_number":1292,"context_line":"            zonemanager \u003d ZoneManager(**kwargs)"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAUX%2F%2FTTQ%3D","line":1289,"updated":"2014-02-14 04:57:48.000000000","message":"if _initiator_target_map is not None:","commit_id":"a1db27476cf482de2e5161601a134d4f047c9ebf"},{"author":{"_account_id":9429,"name":"Jia Ming Zhang","email":"jmzhang@cn.ibm.com","username":"Lynxzh"},"change_message_id":"b7f61da7d9b350f74599f1ded4a5e8028d00cfa4","unresolved":false,"context_lines":[{"line_number":831,"context_line":"        mode \u003d self.configuration.zoning_mode"},{"line_number":832,"context_line":"        LOG.debug(_(\"Zoning Mode: %s\"), mode)"},{"line_number":833,"context_line":"        if vol_type \u003d\u003d \u0027fibre_channel\u0027 and mode \u003d\u003d \u0027fabric\u0027:"},{"line_number":834,"context_line":"            self._add_or_delete_fc_connection(conn_info, 1)"},{"line_number":835,"context_line":"        return conn_info"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"    def terminate_connection(self, context, volume_id, connector, force\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAUX%2F%2BbuA%3D","line":834,"updated":"2014-02-22 08:48:42.000000000","message":"I suggest here with a direct zone manager invocation by directly call: zonemanager.add_connection(configuration, initiator_target_map)","commit_id":"ed48e1ba0fdfbcfa760a906017fb11c9e051b6c2"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"f8cf1f4e99bc81de10ec9c16f9e17929661711af","unresolved":false,"context_lines":[{"line_number":831,"context_line":"        mode \u003d self.configuration.zoning_mode"},{"line_number":832,"context_line":"        LOG.debug(_(\"Zoning Mode: %s\"), mode)"},{"line_number":833,"context_line":"        if vol_type \u003d\u003d \u0027fibre_channel\u0027 and mode \u003d\u003d \u0027fabric\u0027:"},{"line_number":834,"context_line":"            self._add_or_delete_fc_connection(conn_info, 1)"},{"line_number":835,"context_line":"        return conn_info"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"    def terminate_connection(self, context, volume_id, connector, force\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAU3%2F%2F%2FeA%3D","line":834,"in_reply_to":"AAAAUX%2F%2BbuA%3D","updated":"2014-02-22 23:39:19.000000000","message":"Its done this way for two reasons - Invoke ZoneManager only if it is fibre_channel and fabric zoning. We didn\u0027t want delegate this decision making to zone manager in case it is iSCSi or open zoning. Also, I moved the code that extract out initiator_target map to a common place based on earlier review comments to keep initialize_connection and terminate connection methods cleaner.","commit_id":"ed48e1ba0fdfbcfa760a906017fb11c9e051b6c2"},{"author":{"_account_id":9429,"name":"Jia Ming Zhang","email":"jmzhang@cn.ibm.com","username":"Lynxzh"},"change_message_id":"b7f61da7d9b350f74599f1ded4a5e8028d00cfa4","unresolved":false,"context_lines":[{"line_number":843,"context_line":"        # before going forward. The exception will be caught"},{"line_number":844,"context_line":"        # and the volume status updated."},{"line_number":845,"context_line":"        utils.require_driver_initialized(self.driver)"},{"line_number":846,"context_line":""},{"line_number":847,"context_line":"        volume_ref \u003d self.db.volume_get(context, volume_id)"},{"line_number":848,"context_line":"        try:"},{"line_number":849,"context_line":"            conn_info \u003d self.driver.terminate_connection(volume_ref,"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAUX%2F%2Bbs8%3D","line":846,"updated":"2014-02-22 08:48:42.000000000","message":"I suggest here with a direct zone manager invocation by directly call: zonemanager.delete_connection(configuration, initiator_target_map).","commit_id":"ed48e1ba0fdfbcfa760a906017fb11c9e051b6c2"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"f8cf1f4e99bc81de10ec9c16f9e17929661711af","unresolved":false,"context_lines":[{"line_number":843,"context_line":"        # before going forward. The exception will be caught"},{"line_number":844,"context_line":"        # and the volume status updated."},{"line_number":845,"context_line":"        utils.require_driver_initialized(self.driver)"},{"line_number":846,"context_line":""},{"line_number":847,"context_line":"        volume_ref \u003d self.db.volume_get(context, volume_id)"},{"line_number":848,"context_line":"        try:"},{"line_number":849,"context_line":"            conn_info \u003d self.driver.terminate_connection(volume_ref,"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAU3%2F%2F%2Fd8%3D","line":846,"in_reply_to":"AAAAUX%2F%2Bbs8%3D","updated":"2014-02-22 23:39:19.000000000","message":"Its done this way for two reasons - Invoke ZoneManager only if it is fibre_channel and fabric zoning. We didn\u0027t want delegate this decision making to zone manager in case it is iSCSi or open zoning. Also, I moved the code that extract out initiator_target map to a common place based on earlier review comments to keep initialize_connection and terminate connection methods cleaner.","commit_id":"ed48e1ba0fdfbcfa760a906017fb11c9e051b6c2"}],"cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py":[{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"6fdaf4bdc83150e75ac9d78be4db33442fc82da6","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                try:"},{"line_number":139,"context_line":"                    LOG.debug(_(\"Getting name server data for \""},{"line_number":140,"context_line":"                                \"fabric %s\"), fabric_ip)"},{"line_number":141,"context_line":"                    self.client.connect(fabric_ip, 22, fabric_user, fabric_pwd)"},{"line_number":142,"context_line":"                    nsinfo \u003d self.get_nameserver_info()"},{"line_number":143,"context_line":"                except Exception:"},{"line_number":144,"context_line":"                    with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2Fp6c%3D","line":141,"updated":"2013-09-01 09:06:01.000000000","message":"Should the port be hard-coded?","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"6fdaf4bdc83150e75ac9d78be4db33442fc82da6","unresolved":false,"context_lines":[{"line_number":216,"context_line":"            if len(output) \u003e 0:"},{"line_number":217,"context_line":"                return (False, output)"},{"line_number":218,"context_line":"        except Exception as e:"},{"line_number":219,"context_line":"            msg \u003d _(\"Error executing command via ssh: %s\") % e"},{"line_number":220,"context_line":"            LOG.error(msg)"},{"line_number":221,"context_line":"            raise paramiko.SSHException(msg)"},{"line_number":222,"context_line":"        return (True, ZoneConstant.SUCCESS)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2Fp6Y%3D","line":219,"updated":"2013-09-01 09:06:01.000000000","message":"str(e)?\n\nAlso, should same comments as previously mentioned about blindly wrapping everything as SSH exception?","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"6fdaf4bdc83150e75ac9d78be4db33442fc82da6","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        except Exception as e:"},{"line_number":233,"context_line":"            msg \u003d _(\"Error executing command via ssh: %s\") % e"},{"line_number":234,"context_line":"            LOG.error(msg)"},{"line_number":235,"context_line":"            raise paramiko.SSHException(msg)"},{"line_number":236,"context_line":"        return switchData"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def _parse_ns_output(self, switchData, returnList):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2Fp6U%3D","line":235,"updated":"2013-09-01 09:06:01.000000000","message":"Ditto.","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class BrcdFCSanLookupService:"},{"line_number":37,"context_line":"    global client"},{"line_number":38,"context_line":"    patrn \u003d re.compile(\u0027[;\\s]+\u0027)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2Fci8%3D","line":36,"updated":"2013-09-04 18:08:42.000000000","message":"It looks like BrcdFCSanLookupService can inherit from class BrcdFCZoneClientCLI since a lot of ssh connection, switch data parsing can be shared.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class BrcdFCSanLookupService:"},{"line_number":37,"context_line":"    global client"},{"line_number":38,"context_line":"    patrn \u003d re.compile(\u0027[;\\s]+\u0027)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeYA%3D","line":37,"updated":"2013-09-04 12:57:02.000000000","message":"client declaration not required here as you assign it in init.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    patrn \u003d re.compile(\u0027[;\\s]+\u0027)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, **kwargs):"},{"line_number":41,"context_line":"        \"\"\"initializing the client\"\"\""},{"line_number":42,"context_line":"        self.configuration \u003d self.create_configuration()"},{"line_number":43,"context_line":"        self.client \u003d paramiko.SSHClient()"},{"line_number":44,"context_line":"        self.client.load_system_host_keys()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeYI%3D","line":41,"updated":"2013-09-04 12:57:02.000000000","message":"Correct single line statement. Refer https://github.com/openstack-dev/hacking/blob/master/HACKING.rst.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.client.set_missing_host_key_policy(paramiko.WarningPolicy())"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def create_configuration(self):"},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":"        Configuration specific to SAN context values"},{"line_number":50,"context_line":"        \"\"\""},{"line_number":51,"context_line":"        san_context_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeZ0%3D","line":48,"updated":"2013-09-04 12:57:02.000000000","message":"Correct single line statement. Refer https://github.com/openstack-dev/hacking/blob/master/HACKING.rst.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        Configuration specific to SAN context values"},{"line_number":50,"context_line":"        \"\"\""},{"line_number":51,"context_line":"        san_context_opts \u003d ["},{"line_number":52,"context_line":"            cfg.StrOpt(\u0027fc_fabric_names\u0027, default\u003d\u0027\u0027, help\u003d\u0027FC Fabric names\u0027),"},{"line_number":53,"context_line":"        ]"},{"line_number":54,"context_line":"        config \u003d conf.Configuration(san_context_opts, config_group\u003dNone)"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeYw%3D","line":52,"updated":"2013-09-04 12:57:02.000000000","message":"Declare config opts on top before the class and reuse it inside this class. Its general practice followed through out project. See cinder/volume/manager.py.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        if (len(fabric_names) \u003e 0):"},{"line_number":65,"context_line":"            for fabric_name in fabric_names:"},{"line_number":66,"context_line":"                fc_fabric_opts.append(cfg.StrOpt(\u0027fc_fabric_address_\u0027"},{"line_number":67,"context_line":"                                                 + fabric_name,"},{"line_number":68,"context_line":"                                                 default\u003d\u0027\u0027,"},{"line_number":69,"context_line":"                                                 help\u003d\u0027Management IP \u0027"},{"line_number":70,"context_line":"                                                 \u0027of fabric\u0027))"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeYs%3D","line":67,"updated":"2013-09-04 12:57:02.000000000","message":"Dynamic config opt registering can prove erroneous. Is there some other strategy you can think of? Leave it on you.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                                        target_wwn_list):"},{"line_number":92,"context_line":"        \"\"\""},{"line_number":93,"context_line":"        Implementation to provide the initiator/target map for available"},{"line_number":94,"context_line":"        SAN contexts."},{"line_number":95,"context_line":"        :param initiator_wwn_list List of initiator port WWN"},{"line_number":96,"context_line":"        :param target_wwn_list List of target port WWN"},{"line_number":97,"context_line":"        :return device wwn map in following format"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeXw%3D","line":94,"updated":"2013-09-04 12:57:02.000000000","message":"Fix multiline comment. Refer https://github.com/openstack-dev/hacking/blob/master/HACKING.rst.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        fabric_map \u003d {}"},{"line_number":112,"context_line":"        fabric_names \u003d self.configuration.fc_fabric_names"},{"line_number":113,"context_line":"        fabrics \u003d None"},{"line_number":114,"context_line":"        if (fabric_names \u003d\u003d None or len(fabric_names) \u003d\u003d 0):"},{"line_number":115,"context_line":"            raise exception.InvalidParameterValue(err\u003d_("},{"line_number":116,"context_line":"                \"Missing valid fc fabric configuration\"))"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2Fc%2Fc%3D","line":114,"updated":"2013-09-04 18:08:42.000000000","message":"This can be simplified as :\n\nif not fabroc_names: \n  , which covers both tests.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        fabrics \u003d fabric_names.split(\u0027,\u0027)"},{"line_number":119,"context_line":"        LOG.debug(_(\"FC Fabric List: %s\"), fabrics)"},{"line_number":120,"context_line":"        if (len(fabrics) \u003e 0):"},{"line_number":121,"context_line":"            for t in target_wwn_list:"},{"line_number":122,"context_line":"                formatted_target_list.append(self.get_formatted_wwn(t))"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeXo%3D","line":120,"updated":"2013-09-04 12:57:02.000000000","message":"Can directly use if(fabricks): its implicit.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                formatted_initiator_list.append(self.get_formatted_wwn(i))"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"            for fabric_name in fabrics:"},{"line_number":128,"context_line":"                fabric_ip \u003d self.configuration.safe_get(\u0027fc_fabric_address_\u0027"},{"line_number":129,"context_line":"                                                        + fabric_name)"},{"line_number":130,"context_line":"                fabric_user \u003d self.configuration.safe_get(\u0027fc_fabric_user_\u0027"},{"line_number":131,"context_line":"                                                          + fabric_name)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2Fc%2BQ%3D","line":128,"updated":"2013-09-04 18:08:42.000000000","message":"Those fabric_* are static during the life cycle of fc san lookup service, how about put in __init__?","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                visible_initiators \u003d filter(lambda x: x in"},{"line_number":158,"context_line":"                                            formatted_initiator_list, nsinfo)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"                if (len(visible_targets) \u003e 0):"},{"line_number":161,"context_line":"                    LOG.debug(_(\"Filtered targets is: %s\"), visible_targets)"},{"line_number":162,"context_line":"                    # getting rid of the : before returning"},{"line_number":163,"context_line":"                    for idx, elem in enumerate(visible_targets):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeXg%3D","line":160,"updated":"2013-09-04 12:57:02.000000000","message":"same as above.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                    LOG.debug(_(\"No targets are in the nameserver for SAN %s\"),"},{"line_number":167,"context_line":"                              fabric_name)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"                if (len(visible_initiators) \u003e 0):"},{"line_number":170,"context_line":"                    # getting rid of the : before returning ~sk"},{"line_number":171,"context_line":"                    for idx, elem in enumerate(visible_initiators):"},{"line_number":172,"context_line":"                        elem \u003d str(elem).replace(\u0027:\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeXc%3D","line":169,"updated":"2013-09-04 12:57:02.000000000","message":"same as above.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        return device_map"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def get_nameserver_info(self):"},{"line_number":186,"context_line":"        \"\"\""},{"line_number":187,"context_line":"        This method will return the connected node port wwn list(local"},{"line_number":188,"context_line":"        and remote) for the given switch fabric"},{"line_number":189,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeXU%3D","line":186,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring. Refer https://github.com/openstack-dev/hacking/blob/master/HACKING.rst.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        return returnList"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def close_connection(self):"},{"line_number":207,"context_line":"        \"\"\"This will close the client connection\"\"\""},{"line_number":208,"context_line":"        try:"},{"line_number":209,"context_line":"            self.client.close()"},{"line_number":210,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeXQ%3D","line":207,"updated":"2013-09-04 12:57:02.000000000","message":"Fix single line comment.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            #just log and move"},{"line_number":212,"context_line":"            LOG.warn(_(\"Failed closing SSH connection %s\"), str(e))"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def executecmd(self, cmd):"},{"line_number":215,"context_line":"        try:"},{"line_number":216,"context_line":"            LOG.debug((\"Executing command via ssh: %s\"), cmd)"},{"line_number":217,"context_line":"            stdin, stdout, stderr \u003d self.client.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2Fc3I%3D","line":214,"updated":"2013-09-04 18:08:42.000000000","message":"executecmd doesn\u0027t seem being used anywhere.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def executecmd(self, cmd):"},{"line_number":215,"context_line":"        try:"},{"line_number":216,"context_line":"            LOG.debug((\"Executing command via ssh: %s\"), cmd)"},{"line_number":217,"context_line":"            stdin, stdout, stderr \u003d self.client.exec_command(cmd)"},{"line_number":218,"context_line":"            output \u003d stdout.readlines()"},{"line_number":219,"context_line":"            stdin.close()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeXI%3D","line":216,"updated":"2013-09-04 12:57:02.000000000","message":"Fix internationalization.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        try:"},{"line_number":234,"context_line":"            switchData \u003d stdout.readlines()"},{"line_number":235,"context_line":"            stdout.close()"},{"line_number":236,"context_line":"            stderr.close()"},{"line_number":237,"context_line":"        except Exception as e:"},{"line_number":238,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":239,"context_line":"                LOG.error(_(\"Error while getting ns data via ssh: %s\"), str(e))"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2Fc14%3D","line":236,"updated":"2013-09-04 18:08:42.000000000","message":"shouldn\u0027t the switch error being logged when exception raises?","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        return switchData"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def _parse_ns_output(self, switchData, returnList):"},{"line_number":243,"context_line":"        \"\"\"Parses name server data and adds the device port wwns to the list"},{"line_number":244,"context_line":"        returns list of device port wwn from ns info"},{"line_number":245,"context_line":"        \"\"\""},{"line_number":246,"context_line":"        for line in switchData:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeXE%3D","line":243,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        for line in switchData:"},{"line_number":247,"context_line":"            if not(\" NL \" in line or \" N \" in line):"},{"line_number":248,"context_line":"                continue"},{"line_number":249,"context_line":"            lineSplit \u003d re.split(\u0027\\\\s+\u0027, line)"},{"line_number":250,"context_line":"            if len(lineSplit) \u003e 3:"},{"line_number":251,"context_line":"                wwnComponent \u003d self.patrn.split(lineSplit[3])"},{"line_number":252,"context_line":"                if len(wwnComponent) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FcvA%3D","line":249,"updated":"2013-09-04 18:08:42.000000000","message":"I believe the code is looking for the nsshow output which is delimited by \u0027;\u0027 on brocade FOS.\n Type Pid    COS     PortName                NodeName                 TTL(sec)\n N    0b1800;    2,3;10:00:00:00:c9:bb:32:7c;20:00:00:00:c9:bb:32:7c; na\n\nit seems the  line.split(\u0027;\u0027) can be used directly instead of regex.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":248,"context_line":"                continue"},{"line_number":249,"context_line":"            lineSplit \u003d re.split(\u0027\\\\s+\u0027, line)"},{"line_number":250,"context_line":"            if len(lineSplit) \u003e 3:"},{"line_number":251,"context_line":"                wwnComponent \u003d self.patrn.split(lineSplit[3])"},{"line_number":252,"context_line":"                if len(wwnComponent) \u003e 1:"},{"line_number":253,"context_line":"                    nodePortWwn \u003d wwnComponent[1]"},{"line_number":254,"context_line":"                    returnList.append(nodePortWwn)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2Fcrg%3D","line":251,"updated":"2013-09-04 18:08:42.000000000","message":"Just with above example, the lineSplit will be:\n[\u0027N\u0027, \u00270b1800;\u0027, \u00272,3;10:00:00:00:c9:bb:32:7c;20:00:00:00:c9:bb:32:7c;\u0027, \u0027na\u0027]\nand linSplit[3] will be \u0027na\u0027. I think the intention is to get PortName. Not sure I parse it wrong manually. \nJust in case, my brocade switch f/w is FOS      v6.4.2b, switchtype 44.2\n\nCan you clarify?","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":261,"context_line":"                LOG.error(_(\"Malformed nameserver output is: %s\"), switchData)"},{"line_number":262,"context_line":"                raise exception.InvalidParameterValue("},{"line_number":263,"context_line":"                    err\u003d_(\"Malformed nameserver info\"))"},{"line_number":264,"context_line":"        return returnList"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def get_formatted_wwn(self, wwn_str):"},{"line_number":267,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2Fcmo%3D","line":264,"updated":"2013-09-04 18:08:42.000000000","message":"This function has \"side effect\" since mutable variable returnList is changed within the function. Such side effect may not work well with threads and concurrency in general. Probably better to generate a new_returnList and return it.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        return returnList"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def get_formatted_wwn(self, wwn_str):"},{"line_number":267,"context_line":"        \"\"\""},{"line_number":268,"context_line":"        Utility API that formats WWN to insert \u0027:\u0027"},{"line_number":269,"context_line":"        \"\"\""},{"line_number":270,"context_line":"        col \u003d \u0027:\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeW8%3D","line":267,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        if (len(wwn_str) !\u003d 16):"},{"line_number":272,"context_line":"            return wwn_str"},{"line_number":273,"context_line":"        else:"},{"line_number":274,"context_line":"            return (wwn_str[:2] + col + wwn_str[2:4] + col + wwn_str[4:6]"},{"line_number":275,"context_line":"                    + col + wwn_str[6:8] + col + wwn_str[8:10]"},{"line_number":276,"context_line":"                    + col + wwn_str[10:12] + col + wwn_str[12:14]"},{"line_number":277,"context_line":"                    + col + wwn_str[14:])"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeWs%3D","line":274,"updated":"2013-09-04 12:57:02.000000000","message":"Can use notation like \u0027%s%s...\u0027 %(a,b,...) instead of + for strings.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            return (wwn_str[:2] + col + wwn_str[2:4] + col + wwn_str[4:6]"},{"line_number":275,"context_line":"                    + col + wwn_str[6:8] + col + wwn_str[8:10]"},{"line_number":276,"context_line":"                    + col + wwn_str[10:12] + col + wwn_str[12:14]"},{"line_number":277,"context_line":"                    + col + wwn_str[14:])"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FclE%3D","line":277,"updated":"2013-09-04 18:08:42.000000000","message":"how about:\nreturn \u0027:\u0027.join([wwn_str[i:i + 2] for i in range(0, len(wwn_str), 2)])","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"c3915e9c1b0521da7b5b218f376c329042de0e7d","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                                                 default\u003d\u0027\u0027,"},{"line_number":72,"context_line":"                                                 help\u003d\u0027Fabric user ID\u0027))"},{"line_number":73,"context_line":"                fc_fabric_opts.append(cfg.StrOpt(\u0027fc_fabric_password_\u0027"},{"line_number":74,"context_line":"                                                 + fabric_name, default\u003d\u0027\u0027,"},{"line_number":75,"context_line":"                                                 help\u003d\u0027Password for user\u0027))"},{"line_number":76,"context_line":"                fc_fabric_opts.append(cfg.IntOpt(\u0027fc_fabric_port_\u0027"},{"line_number":77,"context_line":"                                                 + fabric_name, default\u003d22,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FCeg%3D","line":74,"updated":"2013-09-13 03:31:31.000000000","message":"We should pass secret\u003dTrue here so that these will be treated as sensitive and not appear in traces, etc.","commit_id":"b712288797b9deb5eb773c6e3c4667d346c2ac04"},{"author":{"_account_id":8911,"name":"Sergey Vilgelm","email":"sergey@vilgelm.info","username":"sergey.vilgelm"},"change_message_id":"f2160beda8b36b46314d86c3824b417131499f3a","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        switchData \u003d \u0027\u0027"},{"line_number":221,"context_line":"        try:"},{"line_number":222,"context_line":"            switchData \u003d stdout.readlines()"},{"line_number":223,"context_line":"            stdout.close()"},{"line_number":224,"context_line":"            stderr.close()"},{"line_number":225,"context_line":"        except Exception as e:"},{"line_number":226,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BwvI%3D","line":223,"updated":"2013-11-20 16:03:36.000000000","message":"You should close stdout and stderr in finally section!!!","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5b4addc018e6621ef394a27608e97110d65b70a3","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        switchData \u003d \u0027\u0027"},{"line_number":221,"context_line":"        try:"},{"line_number":222,"context_line":"            switchData \u003d stdout.readlines()"},{"line_number":223,"context_line":"            stdout.close()"},{"line_number":224,"context_line":"            stderr.close()"},{"line_number":225,"context_line":"        except Exception as e:"},{"line_number":226,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bug8%3D","line":223,"in_reply_to":"AAAATn%2F%2BwvI%3D","updated":"2013-11-26 22:48:44.000000000","message":"Done","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class BrcdFCSanLookupService(FCCommon):"},{"line_number":42,"context_line":"    patrn \u003d re.compile(\u0027[;\\s]+\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def __init__(self, **kwargs):"},{"line_number":45,"context_line":"        \"\"\"initializing the client.\"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qOU%3D","line":42,"updated":"2013-12-09 06:39:26.000000000","message":"\u0027patrn\u0027 not used anywhere","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class BrcdFCSanLookupService(FCCommon):"},{"line_number":42,"context_line":"    patrn \u003d re.compile(\u0027[;\\s]+\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def __init__(self, **kwargs):"},{"line_number":45,"context_line":"        \"\"\"initializing the client.\"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9ldA%3D","line":42,"in_reply_to":"AAAATn%2F9qOU%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    patrn \u003d re.compile(\u0027[;\\s]+\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def __init__(self, **kwargs):"},{"line_number":45,"context_line":"        \"\"\"initializing the client.\"\"\""},{"line_number":46,"context_line":"        self.configuration \u003d kwargs.get(\u0027configuration\u0027, None)"},{"line_number":47,"context_line":"        self.create_configuration()"},{"line_number":48,"context_line":"        self.client \u003d paramiko.SSHClient()"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qR4%3D","line":45,"updated":"2013-12-09 06:39:26.000000000","message":"Capital \u0027I\u0027","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    patrn \u003d re.compile(\u0027[;\\s]+\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def __init__(self, **kwargs):"},{"line_number":45,"context_line":"        \"\"\"initializing the client.\"\"\""},{"line_number":46,"context_line":"        self.configuration \u003d kwargs.get(\u0027configuration\u0027, None)"},{"line_number":47,"context_line":"        self.create_configuration()"},{"line_number":48,"context_line":"        self.client \u003d paramiko.SSHClient()"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lc0%3D","line":45,"in_reply_to":"AAAATn%2F9qR4%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        fabric_names \u003d config.fc_fabric_names.split(\u0027,\u0027)"},{"line_number":58,"context_line":"        LOG.debug(_(\u0027Fabric Names: %s\u0027), fabric_names)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        \"\"\""},{"line_number":61,"context_line":"        There can be more than one SAN in the network and we need to"},{"line_number":62,"context_line":"        get credentials for each for SAN context lookup later."},{"line_number":63,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qRw%3D","line":60,"updated":"2013-12-09 06:39:26.000000000","message":"Comment this code using \u0027#\u0027es","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        fabric_names \u003d config.fc_fabric_names.split(\u0027,\u0027)"},{"line_number":58,"context_line":"        LOG.debug(_(\u0027Fabric Names: %s\u0027), fabric_names)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        \"\"\""},{"line_number":61,"context_line":"        There can be more than one SAN in the network and we need to"},{"line_number":62,"context_line":"        get credentials for each for SAN context lookup later."},{"line_number":63,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lcs%3D","line":60,"in_reply_to":"AAAATn%2F9qRw%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        return returnlist"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def get_formatted_wwn(self, wwn_str):"},{"line_number":259,"context_line":"        \"\"\"Utility API that formats WWN to insert \u0027:\u0027."},{"line_number":260,"context_line":"        \"\"\""},{"line_number":261,"context_line":"        col \u003d \u0027:\u0027"},{"line_number":262,"context_line":"        if (len(wwn_str) !\u003d 16):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qRE%3D","line":259,"updated":"2013-12-09 06:39:26.000000000","message":"You can make it a single-line docstring","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        return returnlist"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def get_formatted_wwn(self, wwn_str):"},{"line_number":259,"context_line":"        \"\"\"Utility API that formats WWN to insert \u0027:\u0027."},{"line_number":260,"context_line":"        \"\"\""},{"line_number":261,"context_line":"        col \u003d \u0027:\u0027"},{"line_number":262,"context_line":"        if (len(wwn_str) !\u003d 16):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lcY%3D","line":259,"in_reply_to":"AAAATn%2F9qRE%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a16b17d610723e074735027fe940acef32261041","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import paramiko"},{"line_number":23,"context_line":"import re"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from oslo.config import cfg"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9ffY%3D","line":23,"updated":"2013-12-10 23:29:28.000000000","message":"unused import","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import paramiko"},{"line_number":23,"context_line":"import re"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from oslo.config import cfg"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9Yn0%3D","line":23,"in_reply_to":"AAAATn%2F9ffY%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a16b17d610723e074735027fe940acef32261041","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from cinder import exception"},{"line_number":28,"context_line":"from cinder.openstack.common import excutils"},{"line_number":29,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":30,"context_line":"from cinder.volume import configuration as conf"},{"line_number":31,"context_line":"import cinder.zonemanager.drivers.brocade.fc_zone_constants as ZoneConstant"},{"line_number":32,"context_line":"from cinder.zonemanager.drivers.fc_common import FCCommon"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9ffc%3D","line":30,"updated":"2013-12-10 23:29:28.000000000","message":"unused import","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from cinder import exception"},{"line_number":28,"context_line":"from cinder.openstack.common import excutils"},{"line_number":29,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":30,"context_line":"from cinder.volume import configuration as conf"},{"line_number":31,"context_line":"import cinder.zonemanager.drivers.brocade.fc_zone_constants as ZoneConstant"},{"line_number":32,"context_line":"from cinder.zonemanager.drivers.fc_common import FCCommon"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9Ynw%3D","line":30,"in_reply_to":"AAAATn%2F9ffc%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a16b17d610723e074735027fe940acef32261041","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        This method will return the connected node port wwn list(local"},{"line_number":195,"context_line":"        and remote) for the given switch fabric"},{"line_number":196,"context_line":"        \"\"\""},{"line_number":197,"context_line":"        cliOutput \u003d None"},{"line_number":198,"context_line":"        returnList \u003d []"},{"line_number":199,"context_line":"        try:"},{"line_number":200,"context_line":"            cliOutput \u003d self._get_switch_data(ZoneConstant.NS_SHOW)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fdw%3D","line":197,"updated":"2013-12-10 23:29:28.000000000","message":"cli_output\n\nhttp://www.python.org/dev/peps/pep-0008/#naming-conventions","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        This method will return the connected node port wwn list(local"},{"line_number":195,"context_line":"        and remote) for the given switch fabric"},{"line_number":196,"context_line":"        \"\"\""},{"line_number":197,"context_line":"        cliOutput \u003d None"},{"line_number":198,"context_line":"        returnList \u003d []"},{"line_number":199,"context_line":"        try:"},{"line_number":200,"context_line":"            cliOutput \u003d self._get_switch_data(ZoneConstant.NS_SHOW)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YmU%3D","line":197,"in_reply_to":"AAAATn%2F9fdw%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a16b17d610723e074735027fe940acef32261041","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        stdin, stdout, stderr \u003d None, None, None"},{"line_number":226,"context_line":"        try:"},{"line_number":227,"context_line":"            stdin, stdout, stderr \u003d self.client.exec_command(cmd)"},{"line_number":228,"context_line":"            switchData \u003d stdout.readlines()"},{"line_number":229,"context_line":"        except Exception as e:"},{"line_number":230,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":231,"context_line":"                LOG.error(_(\"Error while getting ns data via ssh: %s\"), str(e))"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fdk%3D","line":228,"updated":"2013-12-10 23:29:28.000000000","message":"http://www.python.org/dev/peps/pep-0008/#naming-conventions\n\nswitch_data","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        stdin, stdout, stderr \u003d None, None, None"},{"line_number":226,"context_line":"        try:"},{"line_number":227,"context_line":"            stdin, stdout, stderr \u003d self.client.exec_command(cmd)"},{"line_number":228,"context_line":"            switchData \u003d stdout.readlines()"},{"line_number":229,"context_line":"        except Exception as e:"},{"line_number":230,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":231,"context_line":"                LOG.error(_(\"Error while getting ns data via ssh: %s\"), str(e))"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YmQ%3D","line":228,"in_reply_to":"AAAATn%2F9fdk%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a16b17d610723e074735027fe940acef32261041","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                continue"},{"line_number":254,"context_line":"            linesplit \u003d line.split(\u0027;\u0027)"},{"line_number":255,"context_line":"            if len(linesplit) \u003e 2:"},{"line_number":256,"context_line":"                nodePortWwn \u003d linesplit[2]"},{"line_number":257,"context_line":"                returnlist.append(nodePortWwn)"},{"line_number":258,"context_line":"            else:"},{"line_number":259,"context_line":"                LOG.error("}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fdc%3D","line":256,"updated":"2013-12-10 23:29:28.000000000","message":"http://www.python.org/dev/peps/pep-0008/#naming-conventions\n\nnode_port_wwn","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                continue"},{"line_number":254,"context_line":"            linesplit \u003d line.split(\u0027;\u0027)"},{"line_number":255,"context_line":"            if len(linesplit) \u003e 2:"},{"line_number":256,"context_line":"                nodePortWwn \u003d linesplit[2]"},{"line_number":257,"context_line":"                returnlist.append(nodePortWwn)"},{"line_number":258,"context_line":"            else:"},{"line_number":259,"context_line":"                LOG.error("}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YmM%3D","line":256,"in_reply_to":"AAAATn%2F9fdc%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a16b17d610723e074735027fe940acef32261041","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def get_formatted_wwn(self, wwn_str):"},{"line_number":266,"context_line":"        \"\"\"Utility API that formats WWN to insert \u0027:\u0027.\"\"\""},{"line_number":267,"context_line":"        col \u003d \u0027:\u0027"},{"line_number":268,"context_line":"        if (len(wwn_str) !\u003d 16):"},{"line_number":269,"context_line":"            return wwn_str"},{"line_number":270,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9ffU%3D","line":267,"updated":"2013-12-10 23:29:28.000000000","message":"unused","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def get_formatted_wwn(self, wwn_str):"},{"line_number":266,"context_line":"        \"\"\"Utility API that formats WWN to insert \u0027:\u0027.\"\"\""},{"line_number":267,"context_line":"        col \u003d \u0027:\u0027"},{"line_number":268,"context_line":"        if (len(wwn_str) !\u003d 16):"},{"line_number":269,"context_line":"            return wwn_str"},{"line_number":270,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YmI%3D","line":267,"in_reply_to":"AAAATn%2F9ffU%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # There can be more than one SAN in the network and we need to"},{"line_number":59,"context_line":"        # get credentials for each for SAN context lookup later."},{"line_number":60,"context_line":"        if (len(fabric_names) \u003e 0):"},{"line_number":61,"context_line":"            for fabric_name in fabric_names:"},{"line_number":62,"context_line":"                fc_fabric_opts.append(cfg.StrOpt(\u0027fc_fabric_address_\u0027"},{"line_number":63,"context_line":"                                                 + fabric_name,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X3o%3D","line":60,"updated":"2013-12-12 05:45:58.000000000","message":"We can omit the surrounding ()s","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # There can be more than one SAN in the network and we need to"},{"line_number":59,"context_line":"        # get credentials for each for SAN context lookup later."},{"line_number":60,"context_line":"        if (len(fabric_names) \u003e 0):"},{"line_number":61,"context_line":"            for fabric_name in fabric_names:"},{"line_number":62,"context_line":"                fc_fabric_opts.append(cfg.StrOpt(\u0027fc_fabric_address_\u0027"},{"line_number":63,"context_line":"                                                 + fabric_name,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4wg%3D","line":60,"in_reply_to":"AAAATn%2F9X3o%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        fabrics \u003d None"},{"line_number":113,"context_line":"        if not fabric_names:"},{"line_number":114,"context_line":"            raise exception.InvalidParameterValue(err\u003d_("},{"line_number":115,"context_line":"                \"Missing valid fc fabric configuration\"))"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        fabrics \u003d fabric_names.split(\u0027,\u0027)"},{"line_number":118,"context_line":"        LOG.debug(_(\"FC Fabric List: %s\"), fabrics)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X3g%3D","line":115,"updated":"2013-12-12 05:45:58.000000000","message":"We could make this exception a little more explicit such that the missing parameter is spelled out...probably would save the user from looking at the code to find the mistake?  Also...a nit, but in the text maybe we should spell out Fibre Channel vs. \"fc\" ?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        fabrics \u003d None"},{"line_number":113,"context_line":"        if not fabric_names:"},{"line_number":114,"context_line":"            raise exception.InvalidParameterValue(err\u003d_("},{"line_number":115,"context_line":"                \"Missing valid fc fabric configuration\"))"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        fabrics \u003d fabric_names.split(\u0027,\u0027)"},{"line_number":118,"context_line":"        LOG.debug(_(\"FC Fabric List: %s\"), fabrics)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4wQ%3D","line":115,"in_reply_to":"AAAATn%2F9X3g%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                    + fabric_name)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"                #Get name server data from fabric and find the targets"},{"line_number":141,"context_line":"                #logged in"},{"line_number":142,"context_line":"                nsinfo \u003d \u0027\u0027"},{"line_number":143,"context_line":"                try:"},{"line_number":144,"context_line":"                    LOG.debug(_(\"Getting name server data for \""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UMk%3D","line":141,"updated":"2013-12-12 19:11:18.000000000","message":"fix comment formatting.  space after #","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                    + fabric_name)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"                #Get name server data from fabric and find the targets"},{"line_number":141,"context_line":"                #logged in"},{"line_number":142,"context_line":"                nsinfo \u003d \u0027\u0027"},{"line_number":143,"context_line":"                try:"},{"line_number":144,"context_line":"                    LOG.debug(_(\"Getting name server data for \""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4wM%3D","line":141,"in_reply_to":"AAAATn%2F9UMk%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                try:"},{"line_number":144,"context_line":"                    LOG.debug(_(\"Getting name server data for \""},{"line_number":145,"context_line":"                                \"fabric %s\"), fabric_ip)"},{"line_number":146,"context_line":"                    self.client.connect("},{"line_number":147,"context_line":"                        fabric_ip, fabric_port, fabric_user, fabric_pwd)"},{"line_number":148,"context_line":"                    nsinfo \u003d self.get_nameserver_info()"},{"line_number":149,"context_line":"                except Exception:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9S%2FI%3D","line":146,"updated":"2013-12-12 22:46:11.000000000","message":"Where is client_connect defined?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                try:"},{"line_number":144,"context_line":"                    LOG.debug(_(\"Getting name server data for \""},{"line_number":145,"context_line":"                                \"fabric %s\"), fabric_ip)"},{"line_number":146,"context_line":"                    self.client.connect("},{"line_number":147,"context_line":"                        fabric_ip, fabric_port, fabric_user, fabric_pwd)"},{"line_number":148,"context_line":"                    nsinfo \u003d self.get_nameserver_info()"},{"line_number":149,"context_line":"                except Exception:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4wI%3D","line":146,"in_reply_to":"AAAATn%2F9S%2FI%3D","updated":"2014-01-16 04:55:14.000000000","message":"client is SSHClient instance defined in init","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        except Exception:"},{"line_number":201,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":202,"context_line":"                LOG.error(_(\"Failed collecting nsshow info for fabric\"))"},{"line_number":203,"context_line":"        if (cli_output):"},{"line_number":204,"context_line":"            nsinfo_list \u003d self._parse_ns_output(cli_output)"},{"line_number":205,"context_line":"        try:"},{"line_number":206,"context_line":"            cli_output \u003d self._get_switch_data(ZoneConstant.NS_CAM_SHOW)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UJI%3D","line":203,"updated":"2013-12-12 19:11:18.000000000","message":"() isn\u0027t needed","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        except Exception:"},{"line_number":201,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":202,"context_line":"                LOG.error(_(\"Failed collecting nsshow info for fabric\"))"},{"line_number":203,"context_line":"        if (cli_output):"},{"line_number":204,"context_line":"            nsinfo_list \u003d self._parse_ns_output(cli_output)"},{"line_number":205,"context_line":"        try:"},{"line_number":206,"context_line":"            cli_output \u003d self._get_switch_data(ZoneConstant.NS_CAM_SHOW)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4wE%3D","line":203,"in_reply_to":"AAAATn%2F9UJI%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        except Exception:"},{"line_number":208,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":209,"context_line":"                LOG.error(_(\"Failed collecting nscamshow\"))"},{"line_number":210,"context_line":"        if (cli_output):"},{"line_number":211,"context_line":"            nsinfo_list.extend(self._parse_ns_output(cli_output))"},{"line_number":212,"context_line":"        LOG.debug(_(\"Connector returning nsinfo-%s\"), nsinfo_list)"},{"line_number":213,"context_line":"        return nsinfo_list"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UJE%3D","line":210,"updated":"2013-12-12 19:11:18.000000000","message":"() isn\u0027t needed","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        except Exception:"},{"line_number":208,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":209,"context_line":"                LOG.error(_(\"Failed collecting nscamshow\"))"},{"line_number":210,"context_line":"        if (cli_output):"},{"line_number":211,"context_line":"            nsinfo_list.extend(self._parse_ns_output(cli_output))"},{"line_number":212,"context_line":"        LOG.debug(_(\"Connector returning nsinfo-%s\"), nsinfo_list)"},{"line_number":213,"context_line":"        return nsinfo_list"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4wA%3D","line":210,"in_reply_to":"AAAATn%2F9UJE%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":215,"context_line":"    def close_connection(self):"},{"line_number":216,"context_line":"        \"\"\"This will close the client connection.\"\"\""},{"line_number":217,"context_line":"        try:"},{"line_number":218,"context_line":"            self.client.close()"},{"line_number":219,"context_line":"        except Exception as e:"},{"line_number":220,"context_line":"            #just log and move"},{"line_number":221,"context_line":"            LOG.warn(_(\"Failed closing SSH connection %s\"), str(e))"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9S6s%3D","line":218,"updated":"2013-12-12 22:46:11.000000000","message":"Might be safest to set self.client \u003d None following this.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":215,"context_line":"    def close_connection(self):"},{"line_number":216,"context_line":"        \"\"\"This will close the client connection.\"\"\""},{"line_number":217,"context_line":"        try:"},{"line_number":218,"context_line":"            self.client.close()"},{"line_number":219,"context_line":"        except Exception as e:"},{"line_number":220,"context_line":"            #just log and move"},{"line_number":221,"context_line":"            LOG.warn(_(\"Failed closing SSH connection %s\"), str(e))"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4v4%3D","line":218,"in_reply_to":"AAAATn%2F9S6s%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        try:"},{"line_number":218,"context_line":"            self.client.close()"},{"line_number":219,"context_line":"        except Exception as e:"},{"line_number":220,"context_line":"            #just log and move"},{"line_number":221,"context_line":"            LOG.warn(_(\"Failed closing SSH connection %s\"), str(e))"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def _get_switch_data(self, cmd):"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UNc%3D","line":220,"updated":"2013-12-12 19:11:18.000000000","message":"better comment here and the correct format (space after #).  Or just remove it.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        try:"},{"line_number":218,"context_line":"            self.client.close()"},{"line_number":219,"context_line":"        except Exception as e:"},{"line_number":220,"context_line":"            #just log and move"},{"line_number":221,"context_line":"            LOG.warn(_(\"Failed closing SSH connection %s\"), str(e))"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def _get_switch_data(self, cmd):"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4v0%3D","line":220,"in_reply_to":"AAAATn%2F9UNc%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                LOG.error("},{"line_number":259,"context_line":"                    _(\"Malformed nameserver output is: %s\"), switch_data)"},{"line_number":260,"context_line":"                raise exception.InvalidParameterValue("},{"line_number":261,"context_line":"                    err\u003d_(\"Malformed nameserver info\"))"},{"line_number":262,"context_line":"        return nsinfo_list"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def get_formatted_wwn(self, wwn_str):"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UKo%3D","line":261,"updated":"2013-12-12 19:11:18.000000000","message":"Why not use the same string in both the error log and the exception?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                LOG.error("},{"line_number":259,"context_line":"                    _(\"Malformed nameserver output is: %s\"), switch_data)"},{"line_number":260,"context_line":"                raise exception.InvalidParameterValue("},{"line_number":261,"context_line":"                    err\u003d_(\"Malformed nameserver info\"))"},{"line_number":262,"context_line":"        return nsinfo_list"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def get_formatted_wwn(self, wwn_str):"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4vQ%3D","line":261,"in_reply_to":"AAAATn%2F9UKo%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        return nsinfo_list"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def get_formatted_wwn(self, wwn_str):"},{"line_number":265,"context_line":"        \"\"\"Utility API that formats WWN to insert \u0027:\u0027.\"\"\""},{"line_number":266,"context_line":"        if (len(wwn_str) !\u003d 16):"},{"line_number":267,"context_line":"            return wwn_str"},{"line_number":268,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9S6g%3D","line":265,"updated":"2013-12-12 22:46:11.000000000","message":"Should we wrap the .lower() up into this?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        return nsinfo_list"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def get_formatted_wwn(self, wwn_str):"},{"line_number":265,"context_line":"        \"\"\"Utility API that formats WWN to insert \u0027:\u0027.\"\"\""},{"line_number":266,"context_line":"        if (len(wwn_str) !\u003d 16):"},{"line_number":267,"context_line":"            return wwn_str"},{"line_number":268,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4u0%3D","line":265,"in_reply_to":"AAAATn%2F9S6g%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                    self.client.connect("},{"line_number":148,"context_line":"                        fabric_ip, fabric_port, fabric_user, fabric_pwd)"},{"line_number":149,"context_line":"                    nsinfo \u003d self.get_nameserver_info()"},{"line_number":150,"context_line":"                except Exception:"},{"line_number":151,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":152,"context_line":"                        LOG.error(_(\"Failed collecting name server info from \""},{"line_number":153,"context_line":"                                    \"fabric %s\") % fabric_ip)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2Fi4%3D","line":150,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                    self.client.connect("},{"line_number":148,"context_line":"                        fabric_ip, fabric_port, fabric_user, fabric_pwd)"},{"line_number":149,"context_line":"                    nsinfo \u003d self.get_nameserver_info()"},{"line_number":150,"context_line":"                except Exception:"},{"line_number":151,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":152,"context_line":"                        LOG.error(_(\"Failed collecting name server info from \""},{"line_number":153,"context_line":"                                    \"fabric %s\") % fabric_ip)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FUw8%3D","line":150,"in_reply_to":"AAAAUH%2F%2F%2Fi4%3D","updated":"2014-01-16 04:57:23.000000000","message":"Done, Also catching generic exception to handle various connection errors and throwing custom exception.","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        nsinfo_list \u003d []"},{"line_number":199,"context_line":"        try:"},{"line_number":200,"context_line":"            cli_output \u003d self._get_switch_data(ZoneConstant.NS_SHOW)"},{"line_number":201,"context_line":"        except Exception:"},{"line_number":202,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":203,"context_line":"                LOG.error(_(\"Failed collecting nsshow info for fabric\"))"},{"line_number":204,"context_line":"        if cli_output:"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2Fi0%3D","line":201,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        nsinfo_list \u003d []"},{"line_number":199,"context_line":"        try:"},{"line_number":200,"context_line":"            cli_output \u003d self._get_switch_data(ZoneConstant.NS_SHOW)"},{"line_number":201,"context_line":"        except Exception:"},{"line_number":202,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":203,"context_line":"                LOG.error(_(\"Failed collecting nsshow info for fabric\"))"},{"line_number":204,"context_line":"        if cli_output:"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FUw0%3D","line":201,"in_reply_to":"AAAAUH%2F%2F%2Fi0%3D","updated":"2014-01-16 04:57:23.000000000","message":"Done","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            nsinfo_list \u003d self._parse_ns_output(cli_output)"},{"line_number":206,"context_line":"        try:"},{"line_number":207,"context_line":"            cli_output \u003d self._get_switch_data(ZoneConstant.NS_CAM_SHOW)"},{"line_number":208,"context_line":"        except Exception:"},{"line_number":209,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":210,"context_line":"                LOG.error(_(\"Failed collecting nscamshow\"))"},{"line_number":211,"context_line":"        if cli_output:"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2Fiw%3D","line":208,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            nsinfo_list \u003d self._parse_ns_output(cli_output)"},{"line_number":206,"context_line":"        try:"},{"line_number":207,"context_line":"            cli_output \u003d self._get_switch_data(ZoneConstant.NS_CAM_SHOW)"},{"line_number":208,"context_line":"        except Exception:"},{"line_number":209,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":210,"context_line":"                LOG.error(_(\"Failed collecting nscamshow\"))"},{"line_number":211,"context_line":"        if cli_output:"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FUww%3D","line":208,"in_reply_to":"AAAAUH%2F%2F%2Fiw%3D","updated":"2014-01-16 04:57:23.000000000","message":"Done","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        try:"},{"line_number":219,"context_line":"            self.client.close()"},{"line_number":220,"context_line":"            self.client \u003d None"},{"line_number":221,"context_line":"        except Exception as e:"},{"line_number":222,"context_line":"            LOG.warn(_(\"Failed closing SSH connection %s\"), str(e))"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def _get_switch_data(self, cmd):"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2Fis%3D","line":221,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        try:"},{"line_number":219,"context_line":"            self.client.close()"},{"line_number":220,"context_line":"            self.client \u003d None"},{"line_number":221,"context_line":"        except Exception as e:"},{"line_number":222,"context_line":"            LOG.warn(_(\"Failed closing SSH connection %s\"), str(e))"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def _get_switch_data(self, cmd):"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FUwQ%3D","line":221,"in_reply_to":"AAAAUH%2F%2F%2Fis%3D","updated":"2014-01-16 04:57:23.000000000","message":"Removed error handling as its internally sock.close after checking if its active and close() is not throwing any exception.","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        try:"},{"line_number":227,"context_line":"            stdin, stdout, stderr \u003d self.client.exec_command(cmd)"},{"line_number":228,"context_line":"            switch_data \u003d stdout.readlines()"},{"line_number":229,"context_line":"        except Exception as e:"},{"line_number":230,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":231,"context_line":"                LOG.error(_(\"Error while getting ns data via ssh: %s\"), str(e))"},{"line_number":232,"context_line":"                LOG.error(_(\"switch error(stderr): %s\"), stderr)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2Fio%3D","line":229,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        try:"},{"line_number":227,"context_line":"            stdin, stdout, stderr \u003d self.client.exec_command(cmd)"},{"line_number":228,"context_line":"            switch_data \u003d stdout.readlines()"},{"line_number":229,"context_line":"        except Exception as e:"},{"line_number":230,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":231,"context_line":"                LOG.error(_(\"Error while getting ns data via ssh: %s\"), str(e))"},{"line_number":232,"context_line":"                LOG.error(_(\"switch error(stderr): %s\"), stderr)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FUwM%3D","line":229,"in_reply_to":"AAAAUH%2F%2F%2Fio%3D","updated":"2014-01-16 04:57:23.000000000","message":"Done","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"70e5d74ca68260cb84e342a7fe5aacb4d35a1929","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    (c) Copyright 2013 Brocade Communications Systems Inc."},{"line_number":4,"context_line":"#    All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FOxE%3D","line":1,"updated":"2014-01-16 05:46:08.000000000","message":"We are removing # vim: modelines from files now -- please remove them for this patch.\n\nhttps://bugs.launchpad.net/cinder/+bug/1229324","commit_id":"060373bb05199dc09605b139267329d6aa69b307"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"d620405b1b019ad282ee72f026e0525d774a08cf","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    (c) Copyright 2013 Brocade Communications Systems Inc."},{"line_number":4,"context_line":"#    All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FI5o%3D","line":1,"in_reply_to":"AAAAUH%2F%2FOxE%3D","updated":"2014-01-17 02:55:09.000000000","message":"Done for all files with patch 26","commit_id":"060373bb05199dc09605b139267329d6aa69b307"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"38c7f54e0dfcbf60286a2c813d7eead536d7e31e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            {"},{"line_number":97,"context_line":"                \u003cSan name\u003e: {"},{"line_number":98,"context_line":"                    \u0027initiator_port_wwn_list\u0027:"},{"line_number":99,"context_line":"                    (\u0027200000051E55A100\u0027, \u0027200000051E55A121\u0027..)"},{"line_number":100,"context_line":"                    \u0027target_port_wwn_list\u0027:"},{"line_number":101,"context_line":"                    (\u0027100000051E55A100\u0027, \u0027100000051E55A121\u0027..)"},{"line_number":102,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BdX0%3D","line":99,"updated":"2014-01-25 23:35:52.000000000","message":"I think that we actually return lower-case WWPNs now?","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"bf6a0d95bb9a08baf0b4babe8a3b778f527cb77b","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            {"},{"line_number":97,"context_line":"                \u003cSan name\u003e: {"},{"line_number":98,"context_line":"                    \u0027initiator_port_wwn_list\u0027:"},{"line_number":99,"context_line":"                    (\u0027200000051E55A100\u0027, \u0027200000051E55A121\u0027..)"},{"line_number":100,"context_line":"                    \u0027target_port_wwn_list\u0027:"},{"line_number":101,"context_line":"                    (\u0027100000051E55A100\u0027, \u0027100000051E55A121\u0027..)"},{"line_number":102,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BJI8%3D","line":99,"in_reply_to":"AAAAUH%2F%2BV3c%3D","updated":"2014-01-30 18:52:39.000000000","message":"Changed example to lower. We are returning in lower case anyway. One thing I had noticed earlier is that the volume driver was returning the initiator in lower case but the target volume wwn in upper case in connection info. Since I was handling the case while comparison, I didn\u0027t bother much about it.","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"bf6a0d95bb9a08baf0b4babe8a3b778f527cb77b","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            {"},{"line_number":97,"context_line":"                \u003cSan name\u003e: {"},{"line_number":98,"context_line":"                    \u0027initiator_port_wwn_list\u0027:"},{"line_number":99,"context_line":"                    (\u0027200000051E55A100\u0027, \u0027200000051E55A121\u0027..)"},{"line_number":100,"context_line":"                    \u0027target_port_wwn_list\u0027:"},{"line_number":101,"context_line":"                    (\u0027100000051E55A100\u0027, \u0027100000051E55A121\u0027..)"},{"line_number":102,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BJJg%3D","line":99,"in_reply_to":"AAAAUH%2F%2BdX0%3D","updated":"2014-01-30 18:52:39.000000000","message":"Corrected the example to change to lower case","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"67156ab58a6f8a2fc9b08ee07f569acd24d99046","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            {"},{"line_number":97,"context_line":"                \u003cSan name\u003e: {"},{"line_number":98,"context_line":"                    \u0027initiator_port_wwn_list\u0027:"},{"line_number":99,"context_line":"                    (\u0027200000051E55A100\u0027, \u0027200000051E55A121\u0027..)"},{"line_number":100,"context_line":"                    \u0027target_port_wwn_list\u0027:"},{"line_number":101,"context_line":"                    (\u0027100000051E55A100\u0027, \u0027100000051E55A121\u0027..)"},{"line_number":102,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BV3c%3D","line":99,"in_reply_to":"AAAAUH%2F%2BdX0%3D","updated":"2014-01-27 21:25:58.000000000","message":"Nova sends lower case wwpns and wwnns into the driver\u0027s initialize_connection","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"5e6757df9cc1afc38177b684f91f8d7bf0a3587f","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        stdin, stdout, stderr \u003d None, None, None"},{"line_number":228,"context_line":"        utils.check_ssh_injection([cmd])"},{"line_number":229,"context_line":"        try:"},{"line_number":230,"context_line":"            stdin, stdout, stderr \u003d self.client.exec_command(cmd)"},{"line_number":231,"context_line":"            switch_data \u003d stdout.readlines()"},{"line_number":232,"context_line":"        except paramiko.SSHException as e:"},{"line_number":233,"context_line":"            msg \u003d (_(\"SSH Command failed with error \u0027%(err)r\u0027 \""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BtIs%3D","line":230,"updated":"2014-01-23 00:23:20.000000000","message":"To be safer to older style swtiches, you should use the self.client.invoke_shell() mechanism for issuing commands.  exec_command doesn\u0027t work on our older brocade switch.","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"bf6a0d95bb9a08baf0b4babe8a3b778f527cb77b","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        stdin, stdout, stderr \u003d None, None, None"},{"line_number":228,"context_line":"        utils.check_ssh_injection([cmd])"},{"line_number":229,"context_line":"        try:"},{"line_number":230,"context_line":"            stdin, stdout, stderr \u003d self.client.exec_command(cmd)"},{"line_number":231,"context_line":"            switch_data \u003d stdout.readlines()"},{"line_number":232,"context_line":"        except paramiko.SSHException as e:"},{"line_number":233,"context_line":"            msg \u003d (_(\"SSH Command failed with error \u0027%(err)r\u0027 \""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BJH8%3D","line":230,"in_reply_to":"AAAAUH%2F%2BtIs%3D","updated":"2014-01-30 18:52:39.000000000","message":"I am leaving this as it is now since we are hitting issues while running interactive commands such as cfgsave, cfgactivate etc using invoke_shell. Hopefully, we will not have to support very old firmware versions.","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"dede20ec314fe4d178ff7904414f657677fc6154","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, **kwargs):"},{"line_number":41,"context_line":"        \"\"\"Initializing the client.\"\"\""},{"line_number":42,"context_line":"        super(BrcdFCSanLookupService, self).__init__(self, **kwargs)"},{"line_number":43,"context_line":"        self.configuration \u003d kwargs.get(\u0027configuration\u0027, None)"},{"line_number":44,"context_line":"        self.create_configuration()"},{"line_number":45,"context_line":"        self.client \u003d paramiko.SSHClient()"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUX%2F%2FMq8%3D","line":42,"updated":"2014-02-14 23:10:03.000000000","message":"This is broken.  \nIt should be\nsuper(BrcdFCSanLookupService, self).__init__(**kwargs)","commit_id":"9514602e3d08d24edf19ed916817b94e051adcfa"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"32d949d21139966786d381ff756a7e293df3fa69","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, **kwargs):"},{"line_number":41,"context_line":"        \"\"\"Initializing the client.\"\"\""},{"line_number":42,"context_line":"        super(BrcdFCSanLookupService, self).__init__(self, **kwargs)"},{"line_number":43,"context_line":"        self.configuration \u003d kwargs.get(\u0027configuration\u0027, None)"},{"line_number":44,"context_line":"        self.create_configuration()"},{"line_number":45,"context_line":"        self.client \u003d paramiko.SSHClient()"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUX%2F%2FMDg%3D","line":42,"in_reply_to":"AAAAUX%2F%2FMq8%3D","updated":"2014-02-15 01:46:42.000000000","message":"Done","commit_id":"9514602e3d08d24edf19ed916817b94e051adcfa"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"7ffe3c3dd3f42e584aae5826ebea38a90646476d","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                    LOG.debug(_(\"Filtered targets is: %s\"), visible_targets)"},{"line_number":173,"context_line":"                    # getting rid of the : before returning"},{"line_number":174,"context_line":"                    for idx, elem in enumerate(visible_targets):"},{"line_number":175,"context_line":"                        elem \u003d str(elem).replace(\u0027:\u0027, \u0027\u0027)"},{"line_number":176,"context_line":"                else:"},{"line_number":177,"context_line":"                    LOG.debug(_(\"No targets are in the nameserver for SAN %s\"),"},{"line_number":178,"context_line":"                              fabric_name)"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUX%2F%2FMhY%3D","line":175,"updated":"2014-02-14 23:49:16.000000000","message":"the elem value has the stripped : chars, but is never used anywhere.","commit_id":"9514602e3d08d24edf19ed916817b94e051adcfa"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"32d949d21139966786d381ff756a7e293df3fa69","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                    LOG.debug(_(\"Filtered targets is: %s\"), visible_targets)"},{"line_number":173,"context_line":"                    # getting rid of the : before returning"},{"line_number":174,"context_line":"                    for idx, elem in enumerate(visible_targets):"},{"line_number":175,"context_line":"                        elem \u003d str(elem).replace(\u0027:\u0027, \u0027\u0027)"},{"line_number":176,"context_line":"                else:"},{"line_number":177,"context_line":"                    LOG.debug(_(\"No targets are in the nameserver for SAN %s\"),"},{"line_number":178,"context_line":"                              fabric_name)"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUX%2F%2FMDc%3D","line":175,"in_reply_to":"AAAAUX%2F%2FMhY%3D","updated":"2014-02-15 01:46:42.000000000","message":"Updated the list with modified value","commit_id":"9514602e3d08d24edf19ed916817b94e051adcfa"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"7ffe3c3dd3f42e584aae5826ebea38a90646476d","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                if visible_initiators:"},{"line_number":181,"context_line":"                    # getting rid of the : before returning ~sk"},{"line_number":182,"context_line":"                    for idx, elem in enumerate(visible_initiators):"},{"line_number":183,"context_line":"                        elem \u003d str(elem).replace(\u0027:\u0027, \u0027\u0027)"},{"line_number":184,"context_line":"                else:"},{"line_number":185,"context_line":"                    LOG.debug(_(\"No initiators are in the nameserver \""},{"line_number":186,"context_line":"                                \"for SAN %s\"), fabric_name)"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUX%2F%2FMhQ%3D","line":183,"updated":"2014-02-14 23:49:16.000000000","message":"same as above.","commit_id":"9514602e3d08d24edf19ed916817b94e051adcfa"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"32d949d21139966786d381ff756a7e293df3fa69","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                if visible_initiators:"},{"line_number":181,"context_line":"                    # getting rid of the : before returning ~sk"},{"line_number":182,"context_line":"                    for idx, elem in enumerate(visible_initiators):"},{"line_number":183,"context_line":"                        elem \u003d str(elem).replace(\u0027:\u0027, \u0027\u0027)"},{"line_number":184,"context_line":"                else:"},{"line_number":185,"context_line":"                    LOG.debug(_(\"No initiators are in the nameserver \""},{"line_number":186,"context_line":"                                \"for SAN %s\"), fabric_name)"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUX%2F%2FMDY%3D","line":183,"in_reply_to":"AAAAUX%2F%2FMhQ%3D","updated":"2014-02-15 01:46:42.000000000","message":"Done","commit_id":"9514602e3d08d24edf19ed916817b94e051adcfa"}],"cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py":[{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"6fdaf4bdc83150e75ac9d78be4db33442fc82da6","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.client.load_system_host_keys()"},{"line_number":49,"context_line":"        self.client.set_missing_host_key_policy(paramiko.WarningPolicy())"},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            self.client.connect(ipaddress, 22, username, password)"},{"line_number":52,"context_line":"        except Exception:"},{"line_number":53,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":54,"context_line":"                LOG.error(_(\"Failed connecting to fabric %s\") % ipaddress)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2Fp8c%3D","line":51,"updated":"2013-09-01 09:06:01.000000000","message":"Should we always assume port 22 would be used?","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"6fdaf4bdc83150e75ac9d78be4db33442fc82da6","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            self.client.close()"},{"line_number":273,"context_line":"        except Exception as e:"},{"line_number":274,"context_line":"            #just log and move"},{"line_number":275,"context_line":"            LOG.info(_(\"Failed closing SSH connection %s\"), str(e))"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def _cfg_save(self):"},{"line_number":278,"context_line":"        self._execute_cmd(ZoneConstant.CFG_SAVE)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2Fp74%3D","line":275,"updated":"2013-09-01 09:06:01.000000000","message":"Should this be WARN level instead?","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"6fdaf4bdc83150e75ac9d78be4db33442fc82da6","unresolved":false,"context_lines":[{"line_number":298,"context_line":"        except Exception as e:"},{"line_number":299,"context_line":"            msg \u003d _(\"Error executing command via ssh: %s\") % e"},{"line_number":300,"context_line":"            LOG.error(msg)"},{"line_number":301,"context_line":"            raise paramiko.SSHException(msg)"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def _zone_delete(self, zonename):"},{"line_number":304,"context_line":"        cmd \u003d ZoneConstant.ZONE_DELETE"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2Fp78%3D","line":301,"updated":"2013-09-01 09:06:01.000000000","message":"Why are we turning all exceptions into a general SSH exception here vs saving and re-raising?  Or am I missing a subtlety here?  Also should use str(e) vs. just e?","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"6fdaf4bdc83150e75ac9d78be4db33442fc82da6","unresolved":false,"context_lines":[{"line_number":333,"context_line":"        except Exception as e:"},{"line_number":334,"context_line":"            msg \u003d _(\"Error executing command via ssh: %s\") % e"},{"line_number":335,"context_line":"            LOG.error(msg)"},{"line_number":336,"context_line":"            raise paramiko.SSHException(msg)"},{"line_number":337,"context_line":"        return isAbortable"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def executecmd(self, cmd):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2Fp7A%3D","line":336,"updated":"2013-09-01 09:06:01.000000000","message":"Ditto.","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"6fdaf4bdc83150e75ac9d78be4db33442fc82da6","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        except Exception as e:"},{"line_number":353,"context_line":"            msg \u003d _(\"Error executing command via ssh: %s\") % e"},{"line_number":354,"context_line":"            LOG.error(msg)"},{"line_number":355,"context_line":"            raise paramiko.SSHException(msg)"},{"line_number":356,"context_line":"        return (True, ZoneConstant.SUCCESS)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    def _get_switch_data(self, cmd):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2Fp68%3D","line":355,"updated":"2013-09-01 09:06:01.000000000","message":"Ditto.","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class BrcdFCZoneClientCLI(object):"},{"line_number":40,"context_line":"    global client"},{"line_number":41,"context_line":"    switch_ip \u003d \u00270.0.0.0\u0027"},{"line_number":42,"context_line":"    patrn \u003d re.compile(\u0027[;\\s]+\u0027)"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeWY%3D","line":40,"updated":"2013-09-04 12:57:02.000000000","message":"global declaration not required for client. init has first assignment and its used as instance attribute.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    patrn \u003d re.compile(\u0027[;\\s]+\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def __init__(self, ipaddress, username, password, port):"},{"line_number":45,"context_line":"        \"\"\"initializing the client\"\"\""},{"line_number":46,"context_line":"        self.switch_ip \u003d ipaddress"},{"line_number":47,"context_line":"        self.client \u003d paramiko.SSHClient()"},{"line_number":48,"context_line":"        self.client.load_system_host_keys()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeWU%3D","line":45,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring. Refer https://github.com/openstack-dev/hacking/blob/master/HACKING.rst.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        LOG.debug(_(\"SSH Client created for %s\"), ipaddress)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def get_active_zone_set(self):"},{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":"        Return the active zone configuration. suppose none of the configuration"},{"line_number":60,"context_line":"        are active then it will return empty dir"},{"line_number":61,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeWQ%3D","line":58,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring. Refer https://github.com/openstack-dev/hacking/blob/master/HACKING.rst.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                        zoneSetName \u003d lineSplit[1]"},{"line_number":87,"context_line":"                        zoneSet[ZoneConstant.ACTIVE_ZONE_CONFIG] \u003d zoneSetName"},{"line_number":88,"context_line":"                        continue"},{"line_number":89,"context_line":"                    if len(lineSplit[1]) \u003e 0:"},{"line_number":90,"context_line":"                        #Zone"},{"line_number":91,"context_line":"                        zoneName \u003d lineSplit[1]"},{"line_number":92,"context_line":"                        zone[zoneName] \u003d list()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeWA%3D","line":89,"updated":"2013-09-04 12:57:02.000000000","message":"Is len required. Can be done simple as if lineSplit[1]:","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                        #Zone"},{"line_number":91,"context_line":"                        zoneName \u003d lineSplit[1]"},{"line_number":92,"context_line":"                        zone[zoneName] \u003d list()"},{"line_number":93,"context_line":"                    if len(lineSplit[2]) \u003e 0:"},{"line_number":94,"context_line":"                        #ZoneMember"},{"line_number":95,"context_line":"                        zoneMember \u003d lineSplit[2]"},{"line_number":96,"context_line":"                    if len(zoneMember) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeV0%3D","line":93,"updated":"2013-09-04 12:57:02.000000000","message":"Same as above.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                    if len(lineSplit[2]) \u003e 0:"},{"line_number":94,"context_line":"                        #ZoneMember"},{"line_number":95,"context_line":"                        zoneMember \u003d lineSplit[2]"},{"line_number":96,"context_line":"                    if len(zoneMember) \u003e 0:"},{"line_number":97,"context_line":"                        #zonemember"},{"line_number":98,"context_line":"                        zoneMemberList \u003d zone.get(zoneName)"},{"line_number":99,"context_line":"                        zoneMemberList.append(zoneMember)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeVs%3D","line":96,"updated":"2013-09-04 12:57:02.000000000","message":"Same as above.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        except Exception:"},{"line_number":102,"context_line":"            \"\"\"Incase of parsing error here, it should be malformed cli output"},{"line_number":103,"context_line":"            \"\"\""},{"line_number":104,"context_line":"            msg \u003d \"Malformed zone configuration\""},{"line_number":105,"context_line":"            raise exception.FCZoneDriverException(reason\u003dmsg)"},{"line_number":106,"context_line":"            LOG.error(_(\"Failed getting active zone set from \""},{"line_number":107,"context_line":"                        \"fabric %s\"), self.switch_ip)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeVk%3D","line":104,"updated":"2013-09-04 12:57:02.000000000","message":"Fix internationalization. Refer https://github.com/openstack-dev/hacking/blob/master/HACKING.rst.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        return zoneSet"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def get_active_zoneset_name(self):"},{"line_number":111,"context_line":"        \"\"\"Return the Active zoneset Name\"\"\""},{"line_number":112,"context_line":"        zoneSetCfg \u003d self.get_active_zone_set()"},{"line_number":113,"context_line":"        if ZoneConstant.ACTIVE_ZONE_CONFIG in zoneSetCfg:"},{"line_number":114,"context_line":"            return zoneSetCfg[ZoneConstant.ACTIVE_ZONE_CONFIG]"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeVc%3D","line":111,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        return listOfActZones.keys()"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def add_zones(self, zones, isActivate):"},{"line_number":124,"context_line":"        \"\"\""},{"line_number":125,"context_line":"        This method will add the zone configuration passed by user."},{"line_number":126,"context_line":"            input params:"},{"line_number":127,"context_line":"            zones -"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeVU%3D","line":124,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            cmd \u003d ZoneConstant.ZONE_CREATE"},{"line_number":153,"context_line":"            zoneMembersWithSep \u003d \u0027;\u0027.join(str(member)"},{"line_number":154,"context_line":"                                          for member in zones[zone])"},{"line_number":155,"context_line":"            cmd +\u003d \"\\\"\" + zone + \"\\\", \\\"\" + zoneMembersWithSep + \"\\\"\""},{"line_number":156,"context_line":"            LOG.debug(_(\"Adding zone, cmd to run %s\"), cmd)"},{"line_number":157,"context_line":"            try:"},{"line_number":158,"context_line":"                status, msg \u003d self.executecmd(cmd)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeUk%3D","line":155,"updated":"2013-09-04 12:57:02.000000000","message":"use string substitution notation as \u0027\\%s\\%s\u0027 %(a,b) and not + with strings.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        return (True, ZoneConstant.SUCCESS)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def activate_zoneset(self, cfgname):"},{"line_number":196,"context_line":"        \"\"\"Method to Activate the zone config. Param cfgname - ZonesetName\"\"\""},{"line_number":197,"context_line":"        self._execute_cmd(ZoneConstant.ACTIVATE_ZONESET + cfgname)"},{"line_number":198,"context_line":"        return True"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeTg%3D","line":196,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        return True"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def deactivate_zoneset(self):"},{"line_number":201,"context_line":"        \"\"\"Method to deActivate the zone config\"\"\""},{"line_number":202,"context_line":"        self._execute_cmd(ZoneConstant.DEACTIVATE_ZONESET)"},{"line_number":203,"context_line":"        return True"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeTY%3D","line":201,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def delete_zones(self, zoneNames, isActivate):"},{"line_number":206,"context_line":"        \"\"\""},{"line_number":207,"context_line":"        Method to delete the active zone config zones"},{"line_number":208,"context_line":"        Arguments  zoneNames - zoneNames separated by semicolon"},{"line_number":209,"context_line":"        isActivate - True/False"},{"line_number":210,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeTM%3D","line":207,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        Arguments  zoneNames - zoneNames separated by semicolon"},{"line_number":209,"context_line":"        isActivate - True/False"},{"line_number":210,"context_line":"        \"\"\""},{"line_number":211,"context_line":"        activeZoneSetName \u003d \u0027\u0027"},{"line_number":212,"context_line":"        zoneList \u003d \u0027\u0027"},{"line_number":213,"context_line":"        try:"},{"line_number":214,"context_line":"            activeZoneSetName \u003d self.get_active_zoneset_name()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeTI%3D","line":211,"updated":"2013-09-04 12:57:02.000000000","message":"Can assign it to None. Empty string is like none in python.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        try:"},{"line_number":223,"context_line":"            if len(zones) \u003d\u003d len(zoneList):"},{"line_number":224,"context_line":"                self.deactivate_zoneset()"},{"line_number":225,"context_line":"                cmd \u003d ZoneConstant.CFG_DELETE + \"\\\"\" + activeZoneSetName + \"\\\"\""},{"line_number":226,"context_line":"            else:"},{"line_number":227,"context_line":"                cmd \u003d ZoneConstant.CFG_REMOVE + \"\\\"\" + activeZoneSetName"},{"line_number":228,"context_line":"                + \"\\\", \\\"\" + zoneNames + \"\\\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeS8%3D","line":225,"updated":"2013-09-04 12:57:02.000000000","message":"use string substitution.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        return (True, ZoneConstant.SUCCESS)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def get_nameserver_info(self):"},{"line_number":247,"context_line":"        \"\"\""},{"line_number":248,"context_line":"        This method will return the connected node port wwn list(local"},{"line_number":249,"context_line":"        and remote) for the given switch fabric"},{"line_number":250,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeS0%3D","line":247,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        This method will return the connected node port wwn list(local"},{"line_number":249,"context_line":"        and remote) for the given switch fabric"},{"line_number":250,"context_line":"        \"\"\""},{"line_number":251,"context_line":"        cliOutput \u003d \u0027\u0027"},{"line_number":252,"context_line":"        try:"},{"line_number":253,"context_line":"            cliOutput \u003d self._get_switch_data(ZoneConstant.NS_SHOW)"},{"line_number":254,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeSw%3D","line":251,"updated":"2013-09-04 12:57:02.000000000","message":"Assign it to None.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        return returnList"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def close_connection(self):"},{"line_number":270,"context_line":"        \"\"\"This will close the client connection\"\"\""},{"line_number":271,"context_line":"        try:"},{"line_number":272,"context_line":"            self.client.close()"},{"line_number":273,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeSo%3D","line":270,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def _cfg_save(self):"},{"line_number":278,"context_line":"        self._execute_cmd(ZoneConstant.CFG_SAVE)"},{"line_number":279,"context_line":"        return True"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def _cfg_add(self, cfgName, zoneWithSep, cmd):"},{"line_number":282,"context_line":"        cmd +\u003d \"\\\"\" + cfgName + \"\\\", \\\"\" + zoneWithSep + \"\\\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeSU%3D","line":279,"updated":"2013-09-04 12:57:02.000000000","message":"No need to return anything if not using it.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        return True"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def _cfg_add(self, cfgName, zoneWithSep, cmd):"},{"line_number":282,"context_line":"        cmd +\u003d \"\\\"\" + cfgName + \"\\\", \\\"\" + zoneWithSep + \"\\\"\""},{"line_number":283,"context_line":"        status, msg \u003d self.executecmd(cmd)"},{"line_number":284,"context_line":"        if not status:"},{"line_number":285,"context_line":"            return (False, cmd, msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeSQ%3D","line":282,"updated":"2013-09-04 12:57:02.000000000","message":"Use string substitution.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def _execute_cmd(self, cmd):"},{"line_number":289,"context_line":"        try:"},{"line_number":290,"context_line":"            LOG.debug((\"Executing command via ssh: %s\"), cmd)"},{"line_number":291,"context_line":"            stdin, stdout, stderr \u003d self.client.exec_command(cmd)"},{"line_number":292,"context_line":"            stdin.write(\"%s\\n\" % ZoneConstant.YES)"},{"line_number":293,"context_line":"            time.sleep(1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeK8%3D","line":290,"updated":"2013-09-04 12:57:02.000000000","message":"Fix internationalisation. Refer https://github.com/openstack-dev/hacking/blob/master/HACKING.rst.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    def _zone_delete(self, zonename):"},{"line_number":303,"context_line":"        cmd \u003d ZoneConstant.ZONE_DELETE"},{"line_number":304,"context_line":"        cmd +\u003d \"\\\"\" + zonename + \"\\\"\""},{"line_number":305,"context_line":"        status, msg \u003d self.executecmd(cmd)"},{"line_number":306,"context_line":"        if not status:"},{"line_number":307,"context_line":"            return (False, msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeK4%3D","line":304,"updated":"2013-09-04 12:57:02.000000000","message":"use string substituion.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                    _(\"Error while checking zoning txn status: %s\"), str(e))"},{"line_number":336,"context_line":"        return isAbortable"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    def executecmd(self, cmd):"},{"line_number":339,"context_line":"        try:"},{"line_number":340,"context_line":"            LOG.debug((\"Executing command via ssh: %s\"), cmd)"},{"line_number":341,"context_line":"            stdin, stdout, stderr \u003d self.client.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FcgQ%3D","line":338,"updated":"2013-09-04 18:08:42.000000000","message":"it seems both executecmd and _execute_cmd are used for\ndifferent type of switch cli execution. Can they merged and have\ngood documentation?","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    def executecmd(self, cmd):"},{"line_number":339,"context_line":"        try:"},{"line_number":340,"context_line":"            LOG.debug((\"Executing command via ssh: %s\"), cmd)"},{"line_number":341,"context_line":"            stdin, stdout, stderr \u003d self.client.exec_command(cmd)"},{"line_number":342,"context_line":"            output \u003d stdout.readlines()"},{"line_number":343,"context_line":"            stdin.close()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeKw%3D","line":340,"updated":"2013-09-04 12:57:02.000000000","message":"Fix internationalization.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":343,"context_line":"            stdin.close()"},{"line_number":344,"context_line":"            stdout.close()"},{"line_number":345,"context_line":"            stderr.close()"},{"line_number":346,"context_line":"            if len(output) \u003e 0:"},{"line_number":347,"context_line":"                status, msg \u003d self._cfg_trans_abort()"},{"line_number":348,"context_line":"                if not status:"},{"line_number":349,"context_line":"                    return (False, \"Transaction abort failed\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeKs%3D","line":346,"updated":"2013-09-04 12:57:02.000000000","message":"use if output:","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":344,"context_line":"            stdout.close()"},{"line_number":345,"context_line":"            stderr.close()"},{"line_number":346,"context_line":"            if len(output) \u003e 0:"},{"line_number":347,"context_line":"                status, msg \u003d self._cfg_trans_abort()"},{"line_number":348,"context_line":"                if not status:"},{"line_number":349,"context_line":"                    return (False, \"Transaction abort failed\")"},{"line_number":350,"context_line":"                return (False, output)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2Fcfk%3D","line":347,"updated":"2013-09-04 18:08:42.000000000","message":"If the zoning transaction is aborted, need to log the details, otherwise, it will be difficult to debug.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"c3915e9c1b0521da7b5b218f376c329042de0e7d","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            zoneMembersWithSep \u003d \u0027;\u0027.join(str(member)"},{"line_number":157,"context_line":"                                          for member in zones[zone])"},{"line_number":158,"context_line":"            cmd \u003d \u0027%s%s%s%s%s\u0027 % (\"\\\"\", zone, \"\\\", \\\"\","},{"line_number":159,"context_line":"                                  zoneMembersWithSep, \"\\\"\")"},{"line_number":160,"context_line":"            LOG.debug(_(\"Adding zone, cmd to run %s\"), cmd)"},{"line_number":161,"context_line":"            try:"},{"line_number":162,"context_line":"                status, msg \u003d self.executecmd(cmd)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FCeY%3D","line":159,"updated":"2013-09-13 03:31:31.000000000","message":"After some testing, should this be:\n\n            zoneMembersWithSep \u003d \u0027;\u0027.join(str(member)\n                                          for member in zones[zone])\n            cmd \u003d \u0027%s%s%s%s%s%s\u0027 % (ZoneConstant.ZONE_CREATE, \" \\\"\", zone, \"\\\", \\\"\",\n                                  zoneMembersWithSep, \"\\\"\") ?","commit_id":"b712288797b9deb5eb773c6e3c4667d346c2ac04"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"c3915e9c1b0521da7b5b218f376c329042de0e7d","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        self._execute_cmd(ZoneConstant.CFG_SAVE)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def _cfg_add(self, cfgName, zoneWithSep, cmd):"},{"line_number":289,"context_line":"        cmd \u003d \u0027%s%s%s%s%s\u0027 % (\"\\\"\", cfgName, \"\\\", \\\"\", zoneWithSep, \"\\\"\")"},{"line_number":290,"context_line":"        status, msg \u003d self.executecmd(cmd)"},{"line_number":291,"context_line":"        if not status:"},{"line_number":292,"context_line":"            return (False, cmd, msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FCeQ%3D","line":289,"updated":"2013-09-13 03:31:31.000000000","message":"Testing seemed to show this should maybe be:\n\ncmd \u003d \u0027%s%s%s%s%s%s\u0027 % (cmd, \"\\\"\", cfgName, \"\\\", \\\"\", zoneWithSep, \"\\\"\")","commit_id":"b712288797b9deb5eb773c6e3c4667d346c2ac04"},{"author":{"_account_id":8911,"name":"Sergey Vilgelm","email":"sergey@vilgelm.info","username":"sergey.vilgelm"},"change_message_id":"f2160beda8b36b46314d86c3824b417131499f3a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from cinder import exception"},{"line_number":27,"context_line":"from cinder.openstack.common import excutils"},{"line_number":28,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"import cinder.zonemanager.drivers.brocade.fc_zone_constants as ZoneConstant"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bwm0%3D","line":29,"updated":"2013-11-20 16:03:36.000000000","message":"Blank line is not needed.","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5b4addc018e6621ef394a27608e97110d65b70a3","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from cinder import exception"},{"line_number":27,"context_line":"from cinder.openstack.common import excutils"},{"line_number":28,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"import cinder.zonemanager.drivers.brocade.fc_zone_constants as ZoneConstant"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bug4%3D","line":29,"in_reply_to":"AAAATn%2F%2Bwm0%3D","updated":"2013-11-26 22:48:44.000000000","message":"Done","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8911,"name":"Sergey Vilgelm","email":"sergey@vilgelm.info","username":"sergey.vilgelm"},"change_message_id":"f2160beda8b36b46314d86c3824b417131499f3a","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            \"\"\""},{"line_number":106,"context_line":"            msg \u003d _(\"Malformed zone configuration\")"},{"line_number":107,"context_line":"            raise exception.FCZoneDriverException(reason\u003dmsg)"},{"line_number":108,"context_line":"            LOG.error(_(\"Failed getting active zone set from \""},{"line_number":109,"context_line":"                        \"fabric %s\"), self.switch_ip)"},{"line_number":110,"context_line":"        return zoneSet"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BwmY%3D","line":108,"updated":"2013-11-20 16:03:36.000000000","message":"When LOG.error() will be executed?","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5b4addc018e6621ef394a27608e97110d65b70a3","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            \"\"\""},{"line_number":106,"context_line":"            msg \u003d _(\"Malformed zone configuration\")"},{"line_number":107,"context_line":"            raise exception.FCZoneDriverException(reason\u003dmsg)"},{"line_number":108,"context_line":"            LOG.error(_(\"Failed getting active zone set from \""},{"line_number":109,"context_line":"                        \"fabric %s\"), self.switch_ip)"},{"line_number":110,"context_line":"        return zoneSet"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bug0%3D","line":108,"in_reply_to":"AAAATn%2F%2BwmY%3D","updated":"2013-11-26 22:48:44.000000000","message":"Done","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8911,"name":"Sergey Vilgelm","email":"sergey@vilgelm.info","username":"sergey.vilgelm"},"change_message_id":"f2160beda8b36b46314d86c3824b417131499f3a","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        try:"},{"line_number":379,"context_line":"            switchData \u003d stdout.readlines()"},{"line_number":380,"context_line":"            stdout.close()"},{"line_number":381,"context_line":"            stderr.close()"},{"line_number":382,"context_line":"        except Exception as e:"},{"line_number":383,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":384,"context_line":"                LOG.error(_(\"Error while getting ns data via ssh: %s\"), str(e))"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BwlA%3D","line":381,"updated":"2013-11-20 16:03:36.000000000","message":"stderr don\u0027t used in this and next sections you can close stderr with stdin.","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5b4addc018e6621ef394a27608e97110d65b70a3","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        try:"},{"line_number":379,"context_line":"            switchData \u003d stdout.readlines()"},{"line_number":380,"context_line":"            stdout.close()"},{"line_number":381,"context_line":"            stderr.close()"},{"line_number":382,"context_line":"        except Exception as e:"},{"line_number":383,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":384,"context_line":"                LOG.error(_(\"Error while getting ns data via ssh: %s\"), str(e))"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bugw%3D","line":381,"in_reply_to":"AAAATn%2F%2BwlA%3D","updated":"2013-11-26 22:48:44.000000000","message":"Done. Modified to add finally and close all in finally","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                        zoneMemberList.append(zoneMember)"},{"line_number":101,"context_line":"            zoneSet[ZoneConstant.CFG_ZONES] \u003d zone"},{"line_number":102,"context_line":"        except Exception:"},{"line_number":103,"context_line":"            \"\"\"Incase of parsing error here, it should be malformed cli output"},{"line_number":104,"context_line":"            \"\"\""},{"line_number":105,"context_line":"            msg \u003d _(\"Malformed zone configuration\")"},{"line_number":106,"context_line":"            LOG.error(_(\"Failed getting active zone set from \""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qQ0%3D","line":103,"updated":"2013-12-09 06:39:26.000000000","message":"Period at end of docstring","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                        zoneMemberList.append(zoneMember)"},{"line_number":101,"context_line":"            zoneSet[ZoneConstant.CFG_ZONES] \u003d zone"},{"line_number":102,"context_line":"        except Exception:"},{"line_number":103,"context_line":"            \"\"\"Incase of parsing error here, it should be malformed cli output"},{"line_number":104,"context_line":"            \"\"\""},{"line_number":105,"context_line":"            msg \u003d _(\"Malformed zone configuration\")"},{"line_number":106,"context_line":"            LOG.error(_(\"Failed getting active zone set from \""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lcU%3D","line":103,"in_reply_to":"AAAATn%2F9qQ0%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        return listOfActZones.keys()"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def add_zones(self, zones, isActivate):"},{"line_number":125,"context_line":"        \"\"\"Add cone configuration"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        This method will add the zone configuration passed by user."},{"line_number":128,"context_line":"            input params:"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qQs%3D","line":125,"updated":"2013-12-09 06:39:26.000000000","message":"Period at end of first line","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        return listOfActZones.keys()"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def add_zones(self, zones, isActivate):"},{"line_number":125,"context_line":"        \"\"\"Add cone configuration"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        This method will add the zone configuration passed by user."},{"line_number":128,"context_line":"            input params:"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lcI%3D","line":125,"in_reply_to":"AAAATn%2F9qQs%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        \"\"\"Execute cli with no status update."},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        Executes CLI commands such as addZone where status return is"},{"line_number":383,"context_line":"        not expected"},{"line_number":384,"context_line":"        \"\"\""},{"line_number":385,"context_line":"        stdin, stdout, stderr \u003d None, None, None"},{"line_number":386,"context_line":"        if not self.ssh_pool:"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qQg%3D","line":383,"updated":"2013-12-09 06:39:26.000000000","message":"Should end with a dot","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        \"\"\"Execute cli with no status update."},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        Executes CLI commands such as addZone where status return is"},{"line_number":383,"context_line":"        not expected"},{"line_number":384,"context_line":"        \"\"\""},{"line_number":385,"context_line":"        stdin, stdout, stderr \u003d None, None, None"},{"line_number":386,"context_line":"        if not self.ssh_pool:"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lcM%3D","line":383,"in_reply_to":"AAAATn%2F9qQg%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":19,"context_line":"#"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import paramiko"},{"line_number":23,"context_line":"import re"},{"line_number":24,"context_line":"import time"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fnU%3D","line":22,"updated":"2013-12-10 23:00:15.000000000","message":"unused import","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":19,"context_line":"#"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import paramiko"},{"line_number":23,"context_line":"import re"},{"line_number":24,"context_line":"import time"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YgQ%3D","line":22,"in_reply_to":"AAAATn%2F9fnU%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from cinder import exception"},{"line_number":27,"context_line":"from cinder.openstack.common import excutils"},{"line_number":28,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":29,"context_line":"from cinder.openstack.common import processutils"},{"line_number":30,"context_line":"from cinder import utils"},{"line_number":31,"context_line":"import cinder.zonemanager.drivers.brocade.fc_zone_constants as ZoneConstant"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fnY%3D","line":29,"updated":"2013-12-10 23:00:15.000000000","message":"unused import","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from cinder import exception"},{"line_number":27,"context_line":"from cinder.openstack.common import excutils"},{"line_number":28,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":29,"context_line":"from cinder.openstack.common import processutils"},{"line_number":30,"context_line":"from cinder import utils"},{"line_number":31,"context_line":"import cinder.zonemanager.drivers.brocade.fc_zone_constants as ZoneConstant"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YgI%3D","line":29,"in_reply_to":"AAAATn%2F9fnY%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        :returns: Map -- active zone set map"},{"line_number":62,"context_line":"        \"\"\""},{"line_number":63,"context_line":"        zoneSet \u003d {}"},{"line_number":64,"context_line":"        zone \u003d {}"},{"line_number":65,"context_line":"        zoneMember \u003d ZoneConstant.EMPTY"},{"line_number":66,"context_line":"        zoneSetName \u003d ZoneConstant.EMPTY"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fmY%3D","line":63,"updated":"2013-12-10 23:00:15.000000000","message":"should follow the pep8 style guidelines for method instance variables.  Please don\u0027t used StuldyCaps.\n\nzone_set\nzone_member\nzone_set_name\nzone_name\nswitch_data\n\nhttp://www.python.org/dev/peps/pep-0008/#naming-conventions","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        :returns: Map -- active zone set map"},{"line_number":62,"context_line":"        \"\"\""},{"line_number":63,"context_line":"        zoneSet \u003d {}"},{"line_number":64,"context_line":"        zone \u003d {}"},{"line_number":65,"context_line":"        zoneMember \u003d ZoneConstant.EMPTY"},{"line_number":66,"context_line":"        zoneSetName \u003d ZoneConstant.EMPTY"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YK0%3D","line":63,"in_reply_to":"AAAATn%2F9fmY%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            zoneSet[ZoneConstant.CFG_ZONES] \u003d zone"},{"line_number":102,"context_line":"        except Exception:"},{"line_number":103,"context_line":"            \"\"\"Incase of parsing error here, it should be malformed cli output."},{"line_number":104,"context_line":"            \"\"\""},{"line_number":105,"context_line":"            msg \u003d _(\"Malformed zone configuration\")"},{"line_number":106,"context_line":"            LOG.error(_(\"Failed getting active zone set from \""},{"line_number":107,"context_line":"                        \"fabric %s\"), self.switch_ip)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9flk%3D","line":104,"updated":"2013-12-10 23:00:15.000000000","message":"pep8 style guides say that \"\"\" ending on a multiline string should have a preceeding empty line.\n\nhttp://www.python.org/dev/peps/pep-0008/#comments","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            zoneSet[ZoneConstant.CFG_ZONES] \u003d zone"},{"line_number":102,"context_line":"        except Exception:"},{"line_number":103,"context_line":"            \"\"\"Incase of parsing error here, it should be malformed cli output."},{"line_number":104,"context_line":"            \"\"\""},{"line_number":105,"context_line":"            msg \u003d _(\"Malformed zone configuration\")"},{"line_number":106,"context_line":"            LOG.error(_(\"Failed getting active zone set from \""},{"line_number":107,"context_line":"                        \"fabric %s\"), self.switch_ip)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YLY%3D","line":104,"in_reply_to":"AAAATn%2F9flk%3D","updated":"2013-12-12 05:02:29.000000000","message":"Updated as a normal # comment","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def get_active_zoneset_name(self):"},{"line_number":112,"context_line":"        \"\"\"Return the Active zoneset Name.\"\"\""},{"line_number":113,"context_line":"        zoneSetCfg \u003d self.get_active_zone_set()"},{"line_number":114,"context_line":"        if ZoneConstant.ACTIVE_ZONE_CONFIG in zoneSetCfg:"},{"line_number":115,"context_line":"            return zoneSetCfg[ZoneConstant.ACTIVE_ZONE_CONFIG]"},{"line_number":116,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9flA%3D","line":113,"updated":"2013-12-10 23:00:15.000000000","message":"http://www.python.org/dev/peps/pep-0008/#naming-conventions","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def get_active_zoneset_name(self):"},{"line_number":112,"context_line":"        \"\"\"Return the Active zoneset Name.\"\"\""},{"line_number":113,"context_line":"        zoneSetCfg \u003d self.get_active_zone_set()"},{"line_number":114,"context_line":"        if ZoneConstant.ACTIVE_ZONE_CONFIG in zoneSetCfg:"},{"line_number":115,"context_line":"            return zoneSetCfg[ZoneConstant.ACTIVE_ZONE_CONFIG]"},{"line_number":116,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YLU%3D","line":113,"in_reply_to":"AAAATn%2F9flA%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def get_existing_zone_names(self):"},{"line_number":120,"context_line":"        zoneSetCfg \u003d self.get_active_zone_set()"},{"line_number":121,"context_line":"        listOfActZones \u003d zoneSetCfg[ZoneConstant.CFG_ZONES]"},{"line_number":122,"context_line":"        return listOfActZones.keys()"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def add_zones(self, zones, isActivate):"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fkw%3D","line":121,"updated":"2013-12-10 23:00:15.000000000","message":"http://www.python.org/dev/peps/pep-0008/#naming-conventions","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def get_existing_zone_names(self):"},{"line_number":120,"context_line":"        zoneSetCfg \u003d self.get_active_zone_set()"},{"line_number":121,"context_line":"        listOfActZones \u003d zoneSetCfg[ZoneConstant.CFG_ZONES]"},{"line_number":122,"context_line":"        return listOfActZones.keys()"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def add_zones(self, zones, isActivate):"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YLQ%3D","line":121,"in_reply_to":"AAAATn%2F9fkw%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            {   zonename1:[zonememeber1,zonemember2,...],"},{"line_number":131,"context_line":"                zonename2:[zonemember1, zonemember2,...]...}"},{"line_number":132,"context_line":"            isActivate - True/False"},{"line_number":133,"context_line":"        \"\"\""},{"line_number":134,"context_line":"        LOG.debug(_(\"Add Zones - Zones passed: %s\"), zones)"},{"line_number":135,"context_line":"        cfgName \u003d ZoneConstant.EMPTY"},{"line_number":136,"context_line":"        iteratorCount \u003d 0"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9flc%3D","line":133,"updated":"2013-12-10 23:00:15.000000000","message":"http://www.python.org/dev/peps/pep-0008/#comments","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            {   zonename1:[zonememeber1,zonemember2,...],"},{"line_number":131,"context_line":"                zonename2:[zonemember1, zonemember2,...]...}"},{"line_number":132,"context_line":"            isActivate - True/False"},{"line_number":133,"context_line":"        \"\"\""},{"line_number":134,"context_line":"        LOG.debug(_(\"Add Zones - Zones passed: %s\"), zones)"},{"line_number":135,"context_line":"        cfgName \u003d ZoneConstant.EMPTY"},{"line_number":136,"context_line":"        iteratorCount \u003d 0"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YLI%3D","line":133,"in_reply_to":"AAAATn%2F9flc%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            isActivate - True/False"},{"line_number":133,"context_line":"        \"\"\""},{"line_number":134,"context_line":"        LOG.debug(_(\"Add Zones - Zones passed: %s\"), zones)"},{"line_number":135,"context_line":"        cfgName \u003d ZoneConstant.EMPTY"},{"line_number":136,"context_line":"        iteratorCount \u003d 0"},{"line_number":137,"context_line":"        zoneWithSep \u003d ZoneConstant.EMPTY"},{"line_number":138,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fkg%3D","line":135,"updated":"2013-12-10 23:00:15.000000000","message":"http://www.python.org/dev/peps/pep-0008/#naming-conventions\n\ncfg_name","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            isActivate - True/False"},{"line_number":133,"context_line":"        \"\"\""},{"line_number":134,"context_line":"        LOG.debug(_(\"Add Zones - Zones passed: %s\"), zones)"},{"line_number":135,"context_line":"        cfgName \u003d ZoneConstant.EMPTY"},{"line_number":136,"context_line":"        iteratorCount \u003d 0"},{"line_number":137,"context_line":"        zoneWithSep \u003d ZoneConstant.EMPTY"},{"line_number":138,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YLE%3D","line":135,"in_reply_to":"AAAATn%2F9fkg%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        LOG.debug(_(\"Add Zones - Zones passed: %s\"), zones)"},{"line_number":135,"context_line":"        cfgName \u003d ZoneConstant.EMPTY"},{"line_number":136,"context_line":"        iteratorCount \u003d 0"},{"line_number":137,"context_line":"        zoneWithSep \u003d ZoneConstant.EMPTY"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            zoneList \u003d self.get_existing_zone_names()"},{"line_number":140,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fkQ%3D","line":137,"updated":"2013-12-10 23:00:15.000000000","message":"http://www.python.org/dev/peps/pep-0008/#naming-conventions\n\nzone_with_sep","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        LOG.debug(_(\"Add Zones - Zones passed: %s\"), zones)"},{"line_number":135,"context_line":"        cfgName \u003d ZoneConstant.EMPTY"},{"line_number":136,"context_line":"        iteratorCount \u003d 0"},{"line_number":137,"context_line":"        zoneWithSep \u003d ZoneConstant.EMPTY"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            zoneList \u003d self.get_existing_zone_names()"},{"line_number":140,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YLA%3D","line":137,"in_reply_to":"AAAATn%2F9fkQ%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        iteratorCount \u003d 0"},{"line_number":137,"context_line":"        zoneWithSep \u003d ZoneConstant.EMPTY"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            zoneList \u003d self.get_existing_zone_names()"},{"line_number":140,"context_line":"        except Exception:"},{"line_number":141,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":142,"context_line":"                LOG.error(_(\"Adding zone failed. Error in getting active \""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fkY%3D","line":139,"updated":"2013-12-10 23:00:15.000000000","message":"http://www.python.org/dev/peps/pep-0008/#naming-conventions\n\nzone_list","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        iteratorCount \u003d 0"},{"line_number":137,"context_line":"        zoneWithSep \u003d ZoneConstant.EMPTY"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            zoneList \u003d self.get_existing_zone_names()"},{"line_number":140,"context_line":"        except Exception:"},{"line_number":141,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":142,"context_line":"                LOG.error(_(\"Adding zone failed. Error in getting active \""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YK8%3D","line":139,"in_reply_to":"AAAATn%2F9fkY%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        params zoneNames: zoneNames separated by semicolon"},{"line_number":215,"context_line":"        params isActivate: True/False"},{"line_number":216,"context_line":"        \"\"\""},{"line_number":217,"context_line":"        activeZoneSetName \u003d None"},{"line_number":218,"context_line":"        zoneList \u003d []"},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            activeZoneSetName \u003d self.get_active_zoneset_name()"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fkc%3D","line":217,"updated":"2013-12-10 23:00:15.000000000","message":"http://www.python.org/dev/peps/pep-0008/#naming-conventions\n\nactive_zone_set_name","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        params zoneNames: zoneNames separated by semicolon"},{"line_number":215,"context_line":"        params isActivate: True/False"},{"line_number":216,"context_line":"        \"\"\""},{"line_number":217,"context_line":"        activeZoneSetName \u003d None"},{"line_number":218,"context_line":"        zoneList \u003d []"},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            activeZoneSetName \u003d self.get_active_zoneset_name()"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YK4%3D","line":217,"in_reply_to":"AAAATn%2F9fkc%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class BrcdFCZoneClientCLI(object):"},{"line_number":40,"context_line":"    switch_ip \u003d \u00270.0.0.0\u0027"},{"line_number":41,"context_line":"    switch_port \u003d \u002722\u0027"},{"line_number":42,"context_line":"    switch_user \u003d \u0027admin\u0027"},{"line_number":43,"context_line":"    switch_pwd \u003d \u0027none\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9THs%3D","line":40,"updated":"2013-12-12 22:46:11.000000000","message":"Should we default to None?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class BrcdFCZoneClientCLI(object):"},{"line_number":40,"context_line":"    switch_ip \u003d \u00270.0.0.0\u0027"},{"line_number":41,"context_line":"    switch_port \u003d \u002722\u0027"},{"line_number":42,"context_line":"    switch_user \u003d \u0027admin\u0027"},{"line_number":43,"context_line":"    switch_pwd \u003d \u0027none\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxSE%3D","line":40,"in_reply_to":"AAAATn%2F9THs%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        zone_set \u003d {}"},{"line_number":63,"context_line":"        zone \u003d {}"},{"line_number":64,"context_line":"        zone_member \u003d ZoneConstant.EMPTY"},{"line_number":65,"context_line":"        zone_set_name \u003d ZoneConstant.EMPTY"},{"line_number":66,"context_line":"        zone_name \u003d ZoneConstant.EMPTY"},{"line_number":67,"context_line":"        switch_data \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9THc%3D","line":64,"updated":"2013-12-12 22:46:11.000000000","message":"I\u0027m not sure that these constants add any clarity.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        zone_set \u003d {}"},{"line_number":63,"context_line":"        zone \u003d {}"},{"line_number":64,"context_line":"        zone_member \u003d ZoneConstant.EMPTY"},{"line_number":65,"context_line":"        zone_set_name \u003d ZoneConstant.EMPTY"},{"line_number":66,"context_line":"        zone_name \u003d ZoneConstant.EMPTY"},{"line_number":67,"context_line":"        switch_data \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxRQ%3D","line":64,"in_reply_to":"AAAATn%2F9THc%3D","updated":"2014-01-16 04:55:14.000000000","message":"Removed the constants","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        except Exception:"},{"line_number":72,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":73,"context_line":"                LOG.error(_(\"Failed getting active zone set \""},{"line_number":74,"context_line":"                            \"from fabric %s\"), self.switch_ip)"},{"line_number":75,"context_line":"        try:"},{"line_number":76,"context_line":"            for line in switch_data:"},{"line_number":77,"context_line":"                line_split \u003d re.split(\u0027\\\\t\u0027, line)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X3U%3D","line":74,"updated":"2013-12-12 05:45:58.000000000","message":"Just curious...can we provide any corrective advice/text here as well?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        except Exception:"},{"line_number":72,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":73,"context_line":"                LOG.error(_(\"Failed getting active zone set \""},{"line_number":74,"context_line":"                            \"from fabric %s\"), self.switch_ip)"},{"line_number":75,"context_line":"        try:"},{"line_number":76,"context_line":"            for line in switch_data:"},{"line_number":77,"context_line":"                line_split \u003d re.split(\u0027\\\\t\u0027, line)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FhSY%3D","line":74,"in_reply_to":"AAAATn%2F9X3U%3D","updated":"2014-01-16 04:55:14.000000000","message":"Not sure in this specific case as it depends on the type of error. But Geraint had a comment to make the exceptions more rich with better context information and also categorize the errors into   a permanent v/s temp failure. I think if I do that, I can include probable cause/recommended action also to it. Need to put some thought into it and hope I can take up a little later.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            msg \u003d _(\"Malformed zone configuration\")"},{"line_number":105,"context_line":"            LOG.error(_(\"Failed getting active zone set from \""},{"line_number":106,"context_line":"                        \"fabric %s\"), self.switch_ip)"},{"line_number":107,"context_line":"            raise exception.FCZoneDriverException(reason\u003dmsg)"},{"line_number":108,"context_line":"        return zone_set"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def get_active_zoneset_name(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TEw%3D","line":107,"updated":"2013-12-12 22:46:11.000000000","message":"We\u0027d lost the backtrace of the original reason - given that this is likely a text parsing error, it might be worth doing a LOG.exception() or something here.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            msg \u003d _(\"Malformed zone configuration\")"},{"line_number":105,"context_line":"            LOG.error(_(\"Failed getting active zone set from \""},{"line_number":106,"context_line":"                        \"fabric %s\"), self.switch_ip)"},{"line_number":107,"context_line":"            raise exception.FCZoneDriverException(reason\u003dmsg)"},{"line_number":108,"context_line":"        return zone_set"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def get_active_zoneset_name(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UFE%3D","line":107,"updated":"2013-12-12 19:11:18.000000000","message":"use the same message for the log and the exception.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            msg \u003d _(\"Malformed zone configuration\")"},{"line_number":105,"context_line":"            LOG.error(_(\"Failed getting active zone set from \""},{"line_number":106,"context_line":"                        \"fabric %s\"), self.switch_ip)"},{"line_number":107,"context_line":"            raise exception.FCZoneDriverException(reason\u003dmsg)"},{"line_number":108,"context_line":"        return zone_set"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def get_active_zoneset_name(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxPw%3D","line":107,"in_reply_to":"AAAATn%2F9TEw%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            msg \u003d _(\"Malformed zone configuration\")"},{"line_number":105,"context_line":"            LOG.error(_(\"Failed getting active zone set from \""},{"line_number":106,"context_line":"                        \"fabric %s\"), self.switch_ip)"},{"line_number":107,"context_line":"            raise exception.FCZoneDriverException(reason\u003dmsg)"},{"line_number":108,"context_line":"        return zone_set"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def get_active_zoneset_name(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxP0%3D","line":107,"in_reply_to":"AAAATn%2F9UFE%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                            \"zone set from fabric %s\"), self.switch_ip)"},{"line_number":143,"context_line":"        for zone in zones.keys():"},{"line_number":144,"context_line":"            # if zone exists, its an update. Delete \u0026 insert"},{"line_number":145,"context_line":"            #TODO(sk): This need to change to an update call"},{"line_number":146,"context_line":"            if (zone in zone_list):"},{"line_number":147,"context_line":"                try:"},{"line_number":148,"context_line":"                    self.delete_zones(zone, is_activate)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UI4%3D","line":145,"updated":"2013-12-12 19:11:18.000000000","message":"Space after #","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                            \"zone set from fabric %s\"), self.switch_ip)"},{"line_number":143,"context_line":"        for zone in zones.keys():"},{"line_number":144,"context_line":"            # if zone exists, its an update. Delete \u0026 insert"},{"line_number":145,"context_line":"            #TODO(sk): This need to change to an update call"},{"line_number":146,"context_line":"            if (zone in zone_list):"},{"line_number":147,"context_line":"                try:"},{"line_number":148,"context_line":"                    self.delete_zones(zone, is_activate)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxPs%3D","line":145,"in_reply_to":"AAAATn%2F9UI4%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            iterator_count +\u003d 1"},{"line_number":170,"context_line":"            zone_with_sep +\u003d zone"},{"line_number":171,"context_line":"        try:"},{"line_number":172,"context_line":"            cfg_name \u003d self.get_active_zoneset_name()"},{"line_number":173,"context_line":"            if(cfg_name \u003d\u003d ZoneConstant.EMPTY):"},{"line_number":174,"context_line":"                cfg_name \u003d ZoneConstant.OPENSTACK_CFG_NAME"},{"line_number":175,"context_line":"                status, cmd, output \u003d self._cfg_add("}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TDQ%3D","line":172,"updated":"2013-12-12 22:46:11.000000000","message":"This is quite an expensive call, and we did the same call when we did get_existing_zone_names() above and threw away the info, could we do a single call at the top  to get all the data in one go?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            iterator_count +\u003d 1"},{"line_number":170,"context_line":"            zone_with_sep +\u003d zone"},{"line_number":171,"context_line":"        try:"},{"line_number":172,"context_line":"            cfg_name \u003d self.get_active_zoneset_name()"},{"line_number":173,"context_line":"            if(cfg_name \u003d\u003d ZoneConstant.EMPTY):"},{"line_number":174,"context_line":"                cfg_name \u003d ZoneConstant.OPENSTACK_CFG_NAME"},{"line_number":175,"context_line":"                status, cmd, output \u003d self._cfg_add("}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxLM%3D","line":172,"in_reply_to":"AAAATn%2F9TDQ%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                cfg_name \u003d ZoneConstant.OPENSTACK_CFG_NAME"},{"line_number":175,"context_line":"                status, cmd, output \u003d self._cfg_add("},{"line_number":176,"context_line":"                    cfg_name, zone_with_sep, ZoneConstant.ZONESET_CREATE)"},{"line_number":177,"context_line":"                if not status:"},{"line_number":178,"context_line":"                    LOG.error(_(\"Zoneset create operation failed \""},{"line_number":179,"context_line":"                                \"with output %s\"), output)"},{"line_number":180,"context_line":"                    self._cfg_trans_abort()"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TCw%3D","line":177,"updated":"2013-12-12 22:46:11.000000000","message":"I think we need to be consistent about using exceptions vs returning True/False status for success.  I would recommend that we just throw rich exceptions on failures, and catch them where appropriate to back out any partially-completed work.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                cfg_name \u003d ZoneConstant.OPENSTACK_CFG_NAME"},{"line_number":175,"context_line":"                status, cmd, output \u003d self._cfg_add("},{"line_number":176,"context_line":"                    cfg_name, zone_with_sep, ZoneConstant.ZONESET_CREATE)"},{"line_number":177,"context_line":"                if not status:"},{"line_number":178,"context_line":"                    LOG.error(_(\"Zoneset create operation failed \""},{"line_number":179,"context_line":"                                \"with output %s\"), output)"},{"line_number":180,"context_line":"                    self._cfg_trans_abort()"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FhH0%3D","line":177,"in_reply_to":"AAAATn%2F9TCw%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                cmd \u003d \u0027%s%s%s%s\u0027 % (ZoneConstant.CFG_DELETE, \"\\\"\","},{"line_number":231,"context_line":"                                    active_zoneset_name, \"\\\"\")"},{"line_number":232,"context_line":"            else:"},{"line_number":233,"context_line":"                cmd \u003d \u0027%s%s%s%s%s%s\u0027 % (ZoneConstant.CFG_REMOVE, \"\\\"\","},{"line_number":234,"context_line":"                                        active_zoneset_name, \"\\\", \\\"\","},{"line_number":235,"context_line":"                                        zone_names, \"\\\"\")"},{"line_number":236,"context_line":"            status, msg \u003d self.executecmd(cmd)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TCQ%3D","line":233,"updated":"2013-12-12 22:46:11.000000000","message":"This is pretty hard to read, I\u0027d be more verbose in the string and just substitute non-constant items.\ncmd \u003d \u0027cfg_remove \"%(active_zoneset_name)\", \"%(zone_names)\"\u0027 % {\u0027active_zoneset_name\u0027: active_zoneset_name, \u0027zone_names\u0027: zone_names}","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                cmd \u003d \u0027%s%s%s%s\u0027 % (ZoneConstant.CFG_DELETE, \"\\\"\","},{"line_number":231,"context_line":"                                    active_zoneset_name, \"\\\"\")"},{"line_number":232,"context_line":"            else:"},{"line_number":233,"context_line":"                cmd \u003d \u0027%s%s%s%s%s%s\u0027 % (ZoneConstant.CFG_REMOVE, \"\\\"\","},{"line_number":234,"context_line":"                                        active_zoneset_name, \"\\\", \\\"\","},{"line_number":235,"context_line":"                                        zone_names, \"\\\"\")"},{"line_number":236,"context_line":"            status, msg \u003d self.executecmd(cmd)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FhF8%3D","line":233,"in_reply_to":"AAAATn%2F9TCQ%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":288,"context_line":"            return (False, cmd, msg)"},{"line_number":289,"context_line":"        return (True, cmd, ZoneConstant.SUCCESS)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    def _execute_cmd(self, cmd):"},{"line_number":292,"context_line":"        \"\"\"Execute cli with status update."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        Executes CLI commands such as cfgsave where status return is expected."}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UCU%3D","line":291,"updated":"2013-12-12 19:11:18.000000000","message":"There is a potential security hole here for command injection.\nWe had to account for this in ssh calls for our 3PAR drivers.\n\n_execute_cmd should take a cmd list, not a string.\nthe command list should then be passed through the ssh injection check\n\nutils.check_ssh_injection(cmd_list)\ncommand \u003d \u0027 \u0027.join(cmd_list)\n\ntake a look at \nline 359\ncinder/volume/drivers/san/hp/hp_3par_common.py","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":288,"context_line":"            return (False, cmd, msg)"},{"line_number":289,"context_line":"        return (True, cmd, ZoneConstant.SUCCESS)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    def _execute_cmd(self, cmd):"},{"line_number":292,"context_line":"        \"\"\"Execute cli with status update."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        Executes CLI commands such as cfgsave where status return is expected."}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxLI%3D","line":291,"in_reply_to":"AAAATn%2F9UCU%3D","updated":"2014-01-16 04:55:14.000000000","message":"Refactored code to pass list of commands and also introduced SSH Injection check. There is a possible case where the injection check fails when zone member list is separated by \u0027;\u0027. This needs to be fixed.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    def _zone_delete(self, zone_name):"},{"line_number":327,"context_line":"        cmd \u003d \u0027%s%s%s%s\u0027 % (ZoneConstant.ZONE_DELETE, \"\\\"\", zone_name, \"\\\"\")"},{"line_number":328,"context_line":"        status, msg \u003d self.executecmd(cmd)"},{"line_number":329,"context_line":"        if not status:"},{"line_number":330,"context_line":"            return (False, msg)"},{"line_number":331,"context_line":"        return (True, ZoneConstant.SUCCESS)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UBw%3D","line":328,"updated":"2013-12-12 19:11:18.000000000","message":"convert cmd to a list, not a string.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    def _zone_delete(self, zone_name):"},{"line_number":327,"context_line":"        cmd \u003d \u0027%s%s%s%s\u0027 % (ZoneConstant.ZONE_DELETE, \"\\\"\", zone_name, \"\\\"\")"},{"line_number":328,"context_line":"        status, msg \u003d self.executecmd(cmd)"},{"line_number":329,"context_line":"        if not status:"},{"line_number":330,"context_line":"            return (False, msg)"},{"line_number":331,"context_line":"        return (True, ZoneConstant.SUCCESS)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxLE%3D","line":328,"in_reply_to":"AAAATn%2F9UBw%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":361,"context_line":"                    break"},{"line_number":362,"context_line":"        except Exception as e:"},{"line_number":363,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":364,"context_line":"                #self.ssh_pool.remove(self.ssh_client)"},{"line_number":365,"context_line":"                LOG.error("},{"line_number":366,"context_line":"                    _(\"Error while checking zoning txn status: %s\"), str(e))"},{"line_number":367,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UAQ%3D","line":364,"updated":"2013-12-12 19:11:18.000000000","message":"remove","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":361,"context_line":"                    break"},{"line_number":362,"context_line":"        except Exception as e:"},{"line_number":363,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":364,"context_line":"                #self.ssh_pool.remove(self.ssh_client)"},{"line_number":365,"context_line":"                LOG.error("},{"line_number":366,"context_line":"                    _(\"Error while checking zoning txn status: %s\"), str(e))"},{"line_number":367,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxLA%3D","line":364,"in_reply_to":"AAAATn%2F9UAQ%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":365,"context_line":"                LOG.error("},{"line_number":366,"context_line":"                    _(\"Error while checking zoning txn status: %s\"), str(e))"},{"line_number":367,"context_line":"        finally:"},{"line_number":368,"context_line":"            if (stdin):"},{"line_number":369,"context_line":"                stdin.close()"},{"line_number":370,"context_line":"            if (stdout):"},{"line_number":371,"context_line":"                stdout.close()"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X24%3D","line":368,"updated":"2013-12-12 05:45:58.000000000","message":"Lose ()s in all of the of this section...","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":365,"context_line":"                LOG.error("},{"line_number":366,"context_line":"                    _(\"Error while checking zoning txn status: %s\"), str(e))"},{"line_number":367,"context_line":"        finally:"},{"line_number":368,"context_line":"            if (stdin):"},{"line_number":369,"context_line":"                stdin.close()"},{"line_number":370,"context_line":"            if (stdout):"},{"line_number":371,"context_line":"                stdout.close()"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxK8%3D","line":368,"in_reply_to":"AAAATn%2F9X24%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":375,"context_line":"                self.ssh_pool.put(self.ssh_client)"},{"line_number":376,"context_line":"        return is_abortable"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def executecmd(self, cmd):"},{"line_number":379,"context_line":"        \"\"\"Execute cli with no status update."},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        Executes CLI commands such as addZone where status return is"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TBo%3D","line":378,"updated":"2013-12-12 22:46:11.000000000","message":"Could you rename the executecmd and _executecmd commands so that it is less confusing to read - I understand the differences, but it\u0027s not obvious from the name.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":375,"context_line":"                self.ssh_pool.put(self.ssh_client)"},{"line_number":376,"context_line":"        return is_abortable"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def executecmd(self, cmd):"},{"line_number":379,"context_line":"        \"\"\"Execute cli with no status update."},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        Executes CLI commands such as addZone where status return is"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxK4%3D","line":378,"in_reply_to":"AAAATn%2F9TBo%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done. This method has been removed after refactoring","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        Executes CLI commands such as addZone where status return is"},{"line_number":382,"context_line":"        not expected."},{"line_number":383,"context_line":"        \"\"\""},{"line_number":384,"context_line":"        stdin, stdout, stderr \u003d None, None, None"},{"line_number":385,"context_line":"        if not self.ssh_pool:"},{"line_number":386,"context_line":"            self.ssh_pool \u003d utils.SSHPool(self.switch_ip,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9UAk%3D","line":383,"updated":"2013-12-12 19:11:18.000000000","message":"There is a potential security hole here for command injection. We had to account for this in ssh calls for our 3PAR drivers.\n_execute_cmd should take a cmd list, not a string. \n\nThe command list should then be passed through the ssh injection check\n\n\nutils.check_ssh_injection(cmd_list)\ncommand \u003d \u0027 \u0027.join(cmd_list)\n\ntake a look at line 359 cinder/volume/drivers/san/hp/hp_3par_common.py","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        Executes CLI commands such as addZone where status return is"},{"line_number":382,"context_line":"        not expected."},{"line_number":383,"context_line":"        \"\"\""},{"line_number":384,"context_line":"        stdin, stdout, stderr \u003d None, None, None"},{"line_number":385,"context_line":"        if not self.ssh_pool:"},{"line_number":386,"context_line":"            self.ssh_pool \u003d utils.SSHPool(self.switch_ip,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxK0%3D","line":383,"in_reply_to":"AAAATn%2F9UAk%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":394,"context_line":"            LOG.debug(_(\"Executing command via ssh: %s\"), cmd)"},{"line_number":395,"context_line":"            self.ssh_client \u003d self.ssh_pool.get()"},{"line_number":396,"context_line":"            stdin, stdout, stderr \u003d self.ssh_client.exec_command(cmd)"},{"line_number":397,"context_line":"            output \u003d stdout.readlines()"},{"line_number":398,"context_line":"            if output:"},{"line_number":399,"context_line":"                LOG.error(_(\"CLI execution returned: %s\"), output)"},{"line_number":400,"context_line":"                status, msg \u003d self._cfg_trans_abort()"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TBI%3D","line":397,"updated":"2013-12-12 22:46:11.000000000","message":"I have found that this can hang if the server connection goes away, I don\u0027t have a good workaround for this at the moment.  I tried to add some watchdog timer but since we are using greenthreads it doesn\u0027t necessarily fire in the cases I\u0027ve been testing.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":394,"context_line":"            LOG.debug(_(\"Executing command via ssh: %s\"), cmd)"},{"line_number":395,"context_line":"            self.ssh_client \u003d self.ssh_pool.get()"},{"line_number":396,"context_line":"            stdin, stdout, stderr \u003d self.ssh_client.exec_command(cmd)"},{"line_number":397,"context_line":"            output \u003d stdout.readlines()"},{"line_number":398,"context_line":"            if output:"},{"line_number":399,"context_line":"                LOG.error(_(\"CLI execution returned: %s\"), output)"},{"line_number":400,"context_line":"                status, msg \u003d self._cfg_trans_abort()"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxKs%3D","line":397,"in_reply_to":"AAAATn%2F9TBI%3D","updated":"2014-01-16 04:55:14.000000000","message":"Refactored the code to use ProcessUtil","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                LOG.error(_(\"CLI execution returned: %s\"), output)"},{"line_number":400,"context_line":"                status, msg \u003d self._cfg_trans_abort()"},{"line_number":401,"context_line":"                if not status:"},{"line_number":402,"context_line":"                    LOG.info(_(\"TXN abort failed:%s\"), msg)"},{"line_number":403,"context_line":"                    return (False, \"Transaction abort failed\")"},{"line_number":404,"context_line":"                return (False, output)"},{"line_number":405,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X2s%3D","line":402,"updated":"2013-12-12 05:45:58.000000000","message":"For consistency, use Transaction vs. \"TXN\"","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                LOG.error(_(\"CLI execution returned: %s\"), output)"},{"line_number":400,"context_line":"                status, msg \u003d self._cfg_trans_abort()"},{"line_number":401,"context_line":"                if not status:"},{"line_number":402,"context_line":"                    LOG.info(_(\"TXN abort failed:%s\"), msg)"},{"line_number":403,"context_line":"                    return (False, \"Transaction abort failed\")"},{"line_number":404,"context_line":"                return (False, output)"},{"line_number":405,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxKo%3D","line":402,"in_reply_to":"AAAATn%2F9X2s%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                return (False, output)"},{"line_number":405,"context_line":"        except Exception as e:"},{"line_number":406,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":407,"context_line":"                #self.ssh_pool.remove(self.ssh_client)"},{"line_number":408,"context_line":"                LOG.error(_(\"Error executing command via ssh: %s\"), str(e))"},{"line_number":409,"context_line":"        finally:"},{"line_number":410,"context_line":"            if (stdin):"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X2k%3D","line":407,"updated":"2013-12-12 05:45:58.000000000","message":"Remove commented out block","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                return (False, output)"},{"line_number":405,"context_line":"        except Exception as e:"},{"line_number":406,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":407,"context_line":"                #self.ssh_pool.remove(self.ssh_client)"},{"line_number":408,"context_line":"                LOG.error(_(\"Error executing command via ssh: %s\"), str(e))"},{"line_number":409,"context_line":"        finally:"},{"line_number":410,"context_line":"            if (stdin):"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxKk%3D","line":407,"in_reply_to":"AAAATn%2F9X2k%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                #self.ssh_pool.remove(self.ssh_client)"},{"line_number":408,"context_line":"                LOG.error(_(\"Error executing command via ssh: %s\"), str(e))"},{"line_number":409,"context_line":"        finally:"},{"line_number":410,"context_line":"            if (stdin):"},{"line_number":411,"context_line":"                stdin.close()"},{"line_number":412,"context_line":"            if (stdout):"},{"line_number":413,"context_line":"                stdout.close()"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X2Y%3D","line":410,"updated":"2013-12-12 05:45:58.000000000","message":"Lose ()s","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                #self.ssh_pool.remove(self.ssh_client)"},{"line_number":408,"context_line":"                LOG.error(_(\"Error executing command via ssh: %s\"), str(e))"},{"line_number":409,"context_line":"        finally:"},{"line_number":410,"context_line":"            if (stdin):"},{"line_number":411,"context_line":"                stdin.close()"},{"line_number":412,"context_line":"            if (stdout):"},{"line_number":413,"context_line":"                stdout.close()"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxKg%3D","line":410,"in_reply_to":"AAAATn%2F9X2Y%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":414,"context_line":"            if (stderr):"},{"line_number":415,"context_line":"                stderr.close()"},{"line_number":416,"context_line":"            if self.ssh_client:"},{"line_number":417,"context_line":"                self.ssh_pool.put(self.ssh_client)"},{"line_number":418,"context_line":"        return (True, ZoneConstant.SUCCESS)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    def _get_switch_data(self, cmd):"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TA0%3D","line":417,"updated":"2013-12-12 22:46:11.000000000","message":"Add self.ssh_client \u003d None for satety?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":414,"context_line":"            if (stderr):"},{"line_number":415,"context_line":"                stderr.close()"},{"line_number":416,"context_line":"            if self.ssh_client:"},{"line_number":417,"context_line":"                self.ssh_pool.put(self.ssh_client)"},{"line_number":418,"context_line":"        return (True, ZoneConstant.SUCCESS)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    def _get_switch_data(self, cmd):"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxKc%3D","line":417,"in_reply_to":"AAAATn%2F9TA0%3D","updated":"2014-01-16 04:55:14.000000000","message":"This piece of code has been removed.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":417,"context_line":"                self.ssh_pool.put(self.ssh_client)"},{"line_number":418,"context_line":"        return (True, ZoneConstant.SUCCESS)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    def _get_switch_data(self, cmd):"},{"line_number":421,"context_line":"        stdin, stdout, stderr \u003d None, None, None"},{"line_number":422,"context_line":"        if not self.ssh_pool:"},{"line_number":423,"context_line":"            self.ssh_pool \u003d utils.SSHPool(self.switch_ip,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9T%2Bo%3D","line":420,"updated":"2013-12-12 19:11:18.000000000","message":"can\u0027t you just reuse executecmd?\n\nYou seem to be duplicating a lot of ssh call code.   I would like you to refactor them into code that can be reused between each of the methods.\n\nYou have\n_execute_cmd\n_is_trans_abortable\nexecutecmd\n_get_switch_data\n\nAll of those methods are basically the same thing, creating an ssh connection and executing some remote code and then processing the results.   Each are slightly different, but not enough to need to duplicate code.\n\nAlso, they need to do some security checks for the command being processed.  The command should be a list passed in and checked against\n\nutils.check_ssh_injection(cmd_list)\ncommand \u003d \u0027 \u0027.join(cmd_list)","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":417,"context_line":"                self.ssh_pool.put(self.ssh_client)"},{"line_number":418,"context_line":"        return (True, ZoneConstant.SUCCESS)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    def _get_switch_data(self, cmd):"},{"line_number":421,"context_line":"        stdin, stdout, stderr \u003d None, None, None"},{"line_number":422,"context_line":"        if not self.ssh_pool:"},{"line_number":423,"context_line":"            self.ssh_pool \u003d utils.SSHPool(self.switch_ip,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxKY%3D","line":420,"in_reply_to":"AAAATn%2F9T%2Bo%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":440,"context_line":"                LOG.error(_(\"Error while getting ns data via ssh: %s\"), str(e))"},{"line_number":441,"context_line":"                self.ssh_pool.remove(self.ssh_client)"},{"line_number":442,"context_line":"        finally:"},{"line_number":443,"context_line":"            if (stdout):"},{"line_number":444,"context_line":"                stdout.close()"},{"line_number":445,"context_line":"            if self.ssh_client:"},{"line_number":446,"context_line":"                self.ssh_pool.put(self.ssh_client)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X2Q%3D","line":443,"updated":"2013-12-12 05:45:58.000000000","message":"Ditto :-)","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":440,"context_line":"                LOG.error(_(\"Error while getting ns data via ssh: %s\"), str(e))"},{"line_number":441,"context_line":"                self.ssh_pool.remove(self.ssh_client)"},{"line_number":442,"context_line":"        finally:"},{"line_number":443,"context_line":"            if (stdout):"},{"line_number":444,"context_line":"                stdout.close()"},{"line_number":445,"context_line":"            if self.ssh_client:"},{"line_number":446,"context_line":"                self.ssh_pool.put(self.ssh_client)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxKU%3D","line":443,"in_reply_to":"AAAATn%2F9X2Q%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":466,"context_line":"                LOG.error("},{"line_number":467,"context_line":"                    _(\"Malformed nameserver output is: %s\"), switch_data)"},{"line_number":468,"context_line":"                raise exception.InvalidParameterValue("},{"line_number":469,"context_line":"                    err\u003d_(\"Malformed nameserver info\"))"},{"line_number":470,"context_line":"        return return_list"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X2I%3D","line":469,"updated":"2013-12-12 05:45:58.000000000","message":"Nit - extra space in here","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":466,"context_line":"                LOG.error("},{"line_number":467,"context_line":"                    _(\"Malformed nameserver output is: %s\"), switch_data)"},{"line_number":468,"context_line":"                raise exception.InvalidParameterValue("},{"line_number":469,"context_line":"                    err\u003d_(\"Malformed nameserver info\"))"},{"line_number":470,"context_line":"        return return_list"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FxKI%3D","line":469,"in_reply_to":"AAAATn%2F9X2I%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        try:"},{"line_number":70,"context_line":"            switch_data \u003d self._get_switch_info("},{"line_number":71,"context_line":"                [ZoneConstant.GET_ACTIVE_ZONE_CFG])"},{"line_number":72,"context_line":"        except Exception:"},{"line_number":73,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":74,"context_line":"                LOG.error(_(\"Failed getting active zone set \""},{"line_number":75,"context_line":"                            \"from fabric %s\"), self.switch_ip)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2Fik%3D","line":72,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        try:"},{"line_number":70,"context_line":"            switch_data \u003d self._get_switch_info("},{"line_number":71,"context_line":"                [ZoneConstant.GET_ACTIVE_ZONE_CFG])"},{"line_number":72,"context_line":"        except Exception:"},{"line_number":73,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":74,"context_line":"                LOG.error(_(\"Failed getting active zone set \""},{"line_number":75,"context_line":"                            \"from fabric %s\"), self.switch_ip)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FaCc%3D","line":72,"in_reply_to":"AAAAUH%2F%2F%2Fik%3D","updated":"2014-01-16 04:57:23.000000000","message":"Done. Also, changed the underlying method to throw custom exception BrocadeZoningCliException. So, leaving this part just to re-raise it.","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                        zone_member_list \u003d zone.get(zone_name)"},{"line_number":96,"context_line":"                        zone_member_list.append(zone_member)"},{"line_number":97,"context_line":"            zone_set[ZoneConstant.CFG_ZONES] \u003d zone"},{"line_number":98,"context_line":"        except Exception as ex:"},{"line_number":99,"context_line":"            # Incase of parsing error here, it should be malformed cli output."},{"line_number":100,"context_line":"            msg \u003d _(\"Malformed zone configuration: (switch\u003d%(switch)s \""},{"line_number":101,"context_line":"                    \"zone_config\u003d%(zone_config)s).\""}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2Fig%3D","line":98,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                        zone_member_list \u003d zone.get(zone_name)"},{"line_number":96,"context_line":"                        zone_member_list.append(zone_member)"},{"line_number":97,"context_line":"            zone_set[ZoneConstant.CFG_ZONES] \u003d zone"},{"line_number":98,"context_line":"        except Exception as ex:"},{"line_number":99,"context_line":"            # Incase of parsing error here, it should be malformed cli output."},{"line_number":100,"context_line":"            msg \u003d _(\"Malformed zone configuration: (switch\u003d%(switch)s \""},{"line_number":101,"context_line":"                    \"zone_config\u003d%(zone_config)s).\""}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FaCQ%3D","line":98,"in_reply_to":"AAAAUH%2F%2F%2Fig%3D","updated":"2014-01-16 04:57:23.000000000","message":"Its just catching a generic one for any parsing issues but raising a specific custom exception.","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            active_zone_set \u003d self.get_active_zone_set()"},{"line_number":140,"context_line":"            zone_list \u003d active_zone_set[ZoneConstant.CFG_ZONES]"},{"line_number":141,"context_line":"        except Exception:"},{"line_number":142,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":143,"context_line":"                LOG.error(_(\"Adding zone failed. Error in getting active \""},{"line_number":144,"context_line":"                            \"zone set from fabric %s\"), self.switch_ip)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2Fic%3D","line":141,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            active_zone_set \u003d self.get_active_zone_set()"},{"line_number":140,"context_line":"            zone_list \u003d active_zone_set[ZoneConstant.CFG_ZONES]"},{"line_number":141,"context_line":"        except Exception:"},{"line_number":142,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":143,"context_line":"                LOG.error(_(\"Adding zone failed. Error in getting active \""},{"line_number":144,"context_line":"                            \"zone set from fabric %s\"), self.switch_ip)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FaBY%3D","line":141,"in_reply_to":"AAAAUH%2F%2F%2Fic%3D","updated":"2014-01-16 04:57:23.000000000","message":"The underlying methods are throwing specific exceptions and no additional context to add here. So, removing the try block.","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            if (zone in zone_list):"},{"line_number":149,"context_line":"                try:"},{"line_number":150,"context_line":"                    self.delete_zones(zone, activate)"},{"line_number":151,"context_line":"                except Exception:"},{"line_number":152,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":153,"context_line":"                        LOG.error(_(\"Deleting zone failed %s\"), zone)"},{"line_number":154,"context_line":"                LOG.debug(_(\"Deleted Zone before insert : %s\"), zone)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2FiY%3D","line":151,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            if (zone in zone_list):"},{"line_number":149,"context_line":"                try:"},{"line_number":150,"context_line":"                    self.delete_zones(zone, activate)"},{"line_number":151,"context_line":"                except Exception:"},{"line_number":152,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":153,"context_line":"                        LOG.error(_(\"Deleting zone failed %s\"), zone)"},{"line_number":154,"context_line":"                LOG.debug(_(\"Deleted Zone before insert : %s\"), zone)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FZ9w%3D","line":151,"in_reply_to":"AAAAUH%2F%2F%2FiY%3D","updated":"2014-01-16 04:57:23.000000000","message":"Removed this specific one as the underlying code is raising a specific exception and no additional context to add here.","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                LOG.debug(_(\"Zone Create:Status-%s\"), status)"},{"line_number":165,"context_line":"                if not status:"},{"line_number":166,"context_line":"                    return (False, msg)"},{"line_number":167,"context_line":"            except Exception:"},{"line_number":168,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":169,"context_line":"                    LOG.error(_(\"Adding zone failed, cmd %s\"), cmd)"},{"line_number":170,"context_line":"            if(iterator_count \u003e 0):"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2FiU%3D","line":167,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                LOG.debug(_(\"Zone Create:Status-%s\"), status)"},{"line_number":165,"context_line":"                if not status:"},{"line_number":166,"context_line":"                    return (False, msg)"},{"line_number":167,"context_line":"            except Exception:"},{"line_number":168,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":169,"context_line":"                    LOG.error(_(\"Adding zone failed, cmd %s\"), cmd)"},{"line_number":170,"context_line":"            if(iterator_count \u003e 0):"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FZ9s%3D","line":167,"in_reply_to":"AAAAUH%2F%2F%2FiU%3D","updated":"2014-01-16 04:57:23.000000000","message":"Done","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            self._cfg_save()"},{"line_number":194,"context_line":"            if activate:"},{"line_number":195,"context_line":"                self.activate_zoneset(cfg_name)"},{"line_number":196,"context_line":"        except Exception:"},{"line_number":197,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":198,"context_line":"                LOG.error(_(\"Adding zone failed, cmd %s\"), cmd)"},{"line_number":199,"context_line":"                self._cfg_trans_abort()"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2FiQ%3D","line":196,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            self._cfg_save()"},{"line_number":194,"context_line":"            if activate:"},{"line_number":195,"context_line":"                self.activate_zoneset(cfg_name)"},{"line_number":196,"context_line":"        except Exception:"},{"line_number":197,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":198,"context_line":"                LOG.error(_(\"Adding zone failed, cmd %s\"), cmd)"},{"line_number":199,"context_line":"                self._cfg_trans_abort()"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FZ9c%3D","line":196,"in_reply_to":"AAAAUH%2F%2F%2FiQ%3D","updated":"2014-01-16 04:57:23.000000000","message":"Done. Catching generic one as there could be a couple of different possible exceptions thrown from called methods.","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            active_zoneset_name \u003d active_zone_set["},{"line_number":225,"context_line":"                ZoneConstant.ACTIVE_ZONE_CONFIG]"},{"line_number":226,"context_line":"            zone_list \u003d active_zone_set[ZoneConstant.CFG_ZONES]"},{"line_number":227,"context_line":"        except Exception:"},{"line_number":228,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":229,"context_line":"                LOG.error(_(\"Failed getting active zones from \""},{"line_number":230,"context_line":"                            \"fabric %s\"), self.switch_ip)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2FiM%3D","line":227,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            active_zoneset_name \u003d active_zone_set["},{"line_number":225,"context_line":"                ZoneConstant.ACTIVE_ZONE_CONFIG]"},{"line_number":226,"context_line":"            zone_list \u003d active_zone_set[ZoneConstant.CFG_ZONES]"},{"line_number":227,"context_line":"        except Exception:"},{"line_number":228,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":229,"context_line":"                LOG.error(_(\"Failed getting active zones from \""},{"line_number":230,"context_line":"                            \"fabric %s\"), self.switch_ip)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FZ84%3D","line":227,"in_reply_to":"AAAAUH%2F%2F%2FiM%3D","updated":"2014-01-16 04:57:23.000000000","message":"Since no additional context is being added here, removed this try. The underlying call is raising specific exception.","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":252,"context_line":"            if activate:"},{"line_number":253,"context_line":"                self.activate_zoneset(active_zoneset_name)"},{"line_number":254,"context_line":"                self._cfg_save()"},{"line_number":255,"context_line":"        except Exception:"},{"line_number":256,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":257,"context_line":"                LOG.error(_(\"Deleting zones failed, cmd %s\"), cmd)"},{"line_number":258,"context_line":"                self._cfg_trans_abort()"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2FiE%3D","line":255,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":252,"context_line":"            if activate:"},{"line_number":253,"context_line":"                self.activate_zoneset(active_zoneset_name)"},{"line_number":254,"context_line":"                self._cfg_save()"},{"line_number":255,"context_line":"        except Exception:"},{"line_number":256,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":257,"context_line":"                LOG.error(_(\"Deleting zones failed, cmd %s\"), cmd)"},{"line_number":258,"context_line":"                self._cfg_trans_abort()"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FWrA%3D","line":255,"in_reply_to":"AAAAUH%2F%2F%2FiE%3D","updated":"2014-01-16 04:57:23.000000000","message":"Raising specific custom exception now. Catching generic one as there could be a couple of different possible exceptions thrown from called methods. Hope thats fine.","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        return_list \u003d []"},{"line_number":269,"context_line":"        try:"},{"line_number":270,"context_line":"            cli_output \u003d self._get_switch_info([ZoneConstant.NS_SHOW])"},{"line_number":271,"context_line":"        except Exception:"},{"line_number":272,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":273,"context_line":"                LOG.error(_(\"Failed collecting nsshow \""},{"line_number":274,"context_line":"                            \"info for fabric %s\"), self.switch_ip)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2FiA%3D","line":271,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        return_list \u003d []"},{"line_number":269,"context_line":"        try:"},{"line_number":270,"context_line":"            cli_output \u003d self._get_switch_info([ZoneConstant.NS_SHOW])"},{"line_number":271,"context_line":"        except Exception:"},{"line_number":272,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":273,"context_line":"                LOG.error(_(\"Failed collecting nsshow \""},{"line_number":274,"context_line":"                            \"info for fabric %s\"), self.switch_ip)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FWqw%3D","line":271,"in_reply_to":"AAAAUH%2F%2F%2FiA%3D","updated":"2014-01-16 04:57:23.000000000","message":"Done","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            return_list \u003d self._parse_ns_output(cli_output)"},{"line_number":277,"context_line":"        try:"},{"line_number":278,"context_line":"            cli_output \u003d self._get_switch_info([ZoneConstant.NS_CAM_SHOW])"},{"line_number":279,"context_line":"        except Exception:"},{"line_number":280,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":281,"context_line":"                LOG.error(_(\"Failed collecting nscamshow \""},{"line_number":282,"context_line":"                            \"info for fabric %s\"), self.switch_ip)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2Fh8%3D","line":279,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            return_list \u003d self._parse_ns_output(cli_output)"},{"line_number":277,"context_line":"        try:"},{"line_number":278,"context_line":"            cli_output \u003d self._get_switch_info([ZoneConstant.NS_CAM_SHOW])"},{"line_number":279,"context_line":"        except Exception:"},{"line_number":280,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":281,"context_line":"                LOG.error(_(\"Failed collecting nscamshow \""},{"line_number":282,"context_line":"                            \"info for fabric %s\"), self.switch_ip)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FWqs%3D","line":279,"in_reply_to":"AAAAUH%2F%2F%2Fh8%3D","updated":"2014-01-16 04:57:23.000000000","message":"Done","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":349,"context_line":"                    LOG.info(_(\"Transaction abort failed:%s\"), msg)"},{"line_number":350,"context_line":"                    return (False, \"Transaction abort failed\")"},{"line_number":351,"context_line":"                return (False, stdout)"},{"line_number":352,"context_line":"        except Exception as e:"},{"line_number":353,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":354,"context_line":"                LOG.error(_(\"Error executing command via ssh: %s\"), str(e))"},{"line_number":355,"context_line":"        return (True, ZoneConstant.SUCCESS)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2Fh4%3D","line":352,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":349,"context_line":"                    LOG.info(_(\"Transaction abort failed:%s\"), msg)"},{"line_number":350,"context_line":"                    return (False, \"Transaction abort failed\")"},{"line_number":351,"context_line":"                return (False, stdout)"},{"line_number":352,"context_line":"        except Exception as e:"},{"line_number":353,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":354,"context_line":"                LOG.error(_(\"Error executing command via ssh: %s\"), str(e))"},{"line_number":355,"context_line":"        return (True, ZoneConstant.SUCCESS)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FWps%3D","line":352,"in_reply_to":"AAAAUH%2F%2F%2Fh4%3D","updated":"2014-01-16 04:57:23.000000000","message":"I don\u0027t think we need to re-raise here. Changed code to handle the specific case to throw a custom exception.","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        try:"},{"line_number":360,"context_line":"            stdout, stderr \u003d self._run_ssh(cmd_list, True, 1)"},{"line_number":361,"context_line":"            LOG.debug(_(\"CLI output from ssh - output:%s\"), stdout)"},{"line_number":362,"context_line":"        except Exception as e:"},{"line_number":363,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":364,"context_line":"                LOG.error(_(\"Error while getting ns data via ssh: %s\"), str(e))"},{"line_number":365,"context_line":"                LOG.error(_(\"Error from CLI:%s\"), stderr)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2Fh0%3D","line":362,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        try:"},{"line_number":360,"context_line":"            stdout, stderr \u003d self._run_ssh(cmd_list, True, 1)"},{"line_number":361,"context_line":"            LOG.debug(_(\"CLI output from ssh - output:%s\"), stdout)"},{"line_number":362,"context_line":"        except Exception as e:"},{"line_number":363,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":364,"context_line":"                LOG.error(_(\"Error while getting ns data via ssh: %s\"), str(e))"},{"line_number":365,"context_line":"                LOG.error(_(\"Error from CLI:%s\"), stderr)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FWpY%3D","line":362,"in_reply_to":"AAAAUH%2F%2F%2Fh0%3D","updated":"2014-01-16 04:57:23.000000000","message":"Done","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                            ssh,"},{"line_number":413,"context_line":"                            command,"},{"line_number":414,"context_line":"                            check_exit_code\u003dcheck_exit_code)"},{"line_number":415,"context_line":"                    except Exception as e:"},{"line_number":416,"context_line":"                        LOG.error(e)"},{"line_number":417,"context_line":"                        last_exception \u003d e"},{"line_number":418,"context_line":"                        greenthread.sleep(random.randint(20, 500) / 100.0)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2Fhw%3D","line":415,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                            ssh,"},{"line_number":413,"context_line":"                            command,"},{"line_number":414,"context_line":"                            check_exit_code\u003dcheck_exit_code)"},{"line_number":415,"context_line":"                    except Exception as e:"},{"line_number":416,"context_line":"                        LOG.error(e)"},{"line_number":417,"context_line":"                        last_exception \u003d e"},{"line_number":418,"context_line":"                        greenthread.sleep(random.randint(20, 500) / 100.0)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FWlo%3D","line":415,"in_reply_to":"AAAAUH%2F%2F%2Fhw%3D","updated":"2014-01-16 04:57:23.000000000","message":"This is the same as in san.py and I guess there are 2-3 different errors possible from processutils and hence a generic exception is caught.","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":476,"context_line":"                                return True"},{"line_number":477,"context_line":"                        else:"},{"line_number":478,"context_line":"                            return True"},{"line_number":479,"context_line":"                    except Exception as e:"},{"line_number":480,"context_line":"                        LOG.error(e)"},{"line_number":481,"context_line":"                        last_exception \u003d e"},{"line_number":482,"context_line":"                        greenthread.sleep(random.randint(20, 500) / 100.0)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2Fhs%3D","line":479,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":476,"context_line":"                                return True"},{"line_number":477,"context_line":"                        else:"},{"line_number":478,"context_line":"                            return True"},{"line_number":479,"context_line":"                    except Exception as e:"},{"line_number":480,"context_line":"                        LOG.error(e)"},{"line_number":481,"context_line":"                        last_exception \u003d e"},{"line_number":482,"context_line":"                        greenthread.sleep(random.randint(20, 500) / 100.0)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FU5M%3D","line":479,"in_reply_to":"AAAAUH%2F%2F%2Fhs%3D","updated":"2014-01-16 04:57:23.000000000","message":"There could be ProcessExecutionError or some error from ssh call coming here and hence handling generically but throwing specific wrapped exception at the end.","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"9011cac0a84742f487231686428898148e0c597c","unresolved":false,"context_lines":[{"line_number":494,"context_line":"                        stdout\u003d\"\","},{"line_number":495,"context_line":"                        stderr\u003d\"Error running SSH command\","},{"line_number":496,"context_line":"                        cmd\u003dcommand)"},{"line_number":497,"context_line":"        except Exception as e:"},{"line_number":498,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":499,"context_line":"                LOG.error(_(\"Error executing command via ssh: %s\"), str(e))"},{"line_number":500,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2F%2Fho%3D","line":497,"updated":"2014-01-04 14:18:44.000000000","message":"please raise specific exception","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"37c48ba23f59841aab85d104aa55849992340252","unresolved":false,"context_lines":[{"line_number":494,"context_line":"                        stdout\u003d\"\","},{"line_number":495,"context_line":"                        stderr\u003d\"Error running SSH command\","},{"line_number":496,"context_line":"                        cmd\u003dcommand)"},{"line_number":497,"context_line":"        except Exception as e:"},{"line_number":498,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":499,"context_line":"                LOG.error(_(\"Error executing command via ssh: %s\"), str(e))"},{"line_number":500,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FU44%3D","line":497,"in_reply_to":"AAAAUH%2F%2F%2Fho%3D","updated":"2014-01-16 04:57:23.000000000","message":"Same as above. since there could be different errors possible, catching generic exception.","commit_id":"6e30393529307eeea2aa8b77416f4b2e6aec769d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e49a56306b5fa82e2d12a47b9fd529504e9330ed","unresolved":false,"context_lines":[{"line_number":158,"context_line":"            cmd \u003d \u0027%s%s%s%s%s%s\u0027 % ("},{"line_number":159,"context_line":"                ZoneConstant.ZONE_CREATE, \"\\\"\","},{"line_number":160,"context_line":"                zone, \"\\\", \\\"\","},{"line_number":161,"context_line":"                zone_members_with_sep, \"\\\"\")"},{"line_number":162,"context_line":"            LOG.debug(_(\"Adding zone, cmd to run %s\"), cmd)"},{"line_number":163,"context_line":"            try:"},{"line_number":164,"context_line":"                status, msg \u003d self.apply_zone_change(cmd.split())"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Fkog%3D","line":161,"updated":"2014-01-10 22:06:01.000000000","message":"With long strings being built like this, it\u0027s very hard to read.\n\nPlease use the \n\"%(foo1)s%(foo2)s\" % {\u0027foo1\u0027: var1: \u0027foo2\u0027: var2} \nnotation for this.","commit_id":"9e37fbf50e9d0b6e5505d5ac3c9ce1f2e07b9f7a"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"7e111c0165d31b4457896a8ca12c83cf2326b1dc","unresolved":false,"context_lines":[{"line_number":158,"context_line":"            cmd \u003d \u0027%s%s%s%s%s%s\u0027 % ("},{"line_number":159,"context_line":"                ZoneConstant.ZONE_CREATE, \"\\\"\","},{"line_number":160,"context_line":"                zone, \"\\\", \\\"\","},{"line_number":161,"context_line":"                zone_members_with_sep, \"\\\"\")"},{"line_number":162,"context_line":"            LOG.debug(_(\"Adding zone, cmd to run %s\"), cmd)"},{"line_number":163,"context_line":"            try:"},{"line_number":164,"context_line":"                status, msg \u003d self.apply_zone_change(cmd.split())"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Fct8%3D","line":161,"in_reply_to":"AAAAUH%2F%2Fkog%3D","updated":"2014-01-16 04:58:13.000000000","message":"Done","commit_id":"9e37fbf50e9d0b6e5505d5ac3c9ce1f2e07b9f7a"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e49a56306b5fa82e2d12a47b9fd529504e9330ed","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def _cfg_add(self, cfg_name, zone_with_sep, cmd):"},{"line_number":293,"context_line":"        cmd \u003d \u0027%s%s%s%s%s%s\u0027 % ("},{"line_number":294,"context_line":"            cmd, \"\\\"\", cfg_name, \"\\\", \\\"\", zone_with_sep, \"\\\"\")"},{"line_number":295,"context_line":"        status, msg \u003d self.apply_zone_change(cmd.split())"},{"line_number":296,"context_line":"        if not status:"},{"line_number":297,"context_line":"            return (False, cmd, msg)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2FkoI%3D","line":294,"updated":"2014-01-10 22:06:01.000000000","message":"Please use the long hand syntax for this long contructed strings as in my comment above.","commit_id":"9e37fbf50e9d0b6e5505d5ac3c9ce1f2e07b9f7a"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"7e111c0165d31b4457896a8ca12c83cf2326b1dc","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def _cfg_add(self, cfg_name, zone_with_sep, cmd):"},{"line_number":293,"context_line":"        cmd \u003d \u0027%s%s%s%s%s%s\u0027 % ("},{"line_number":294,"context_line":"            cmd, \"\\\"\", cfg_name, \"\\\", \\\"\", zone_with_sep, \"\\\"\")"},{"line_number":295,"context_line":"        status, msg \u003d self.apply_zone_change(cmd.split())"},{"line_number":296,"context_line":"        if not status:"},{"line_number":297,"context_line":"            return (False, cmd, msg)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Fct4%3D","line":294,"in_reply_to":"AAAAUH%2F%2FkoI%3D","updated":"2014-01-16 04:58:13.000000000","message":"Done","commit_id":"9e37fbf50e9d0b6e5505d5ac3c9ce1f2e07b9f7a"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e49a56306b5fa82e2d12a47b9fd529504e9330ed","unresolved":false,"context_lines":[{"line_number":298,"context_line":"        return (True, cmd, ZoneConstant.SUCCESS)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def _zone_delete(self, zone_name):"},{"line_number":301,"context_line":"        cmd \u003d \u0027%s%s%s%s\u0027 % (ZoneConstant.ZONE_DELETE, \"\\\"\", zone_name, \"\\\"\")"},{"line_number":302,"context_line":"        status, msg \u003d self.apply_zone_change(cmd.split())"},{"line_number":303,"context_line":"        if not status:"},{"line_number":304,"context_line":"            return (False, msg)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Fkn8%3D","line":301,"updated":"2014-01-10 22:06:01.000000000","message":"Please use the long hand syntax for this long contructed strings as in my comment above.","commit_id":"9e37fbf50e9d0b6e5505d5ac3c9ce1f2e07b9f7a"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"7e111c0165d31b4457896a8ca12c83cf2326b1dc","unresolved":false,"context_lines":[{"line_number":298,"context_line":"        return (True, cmd, ZoneConstant.SUCCESS)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def _zone_delete(self, zone_name):"},{"line_number":301,"context_line":"        cmd \u003d \u0027%s%s%s%s\u0027 % (ZoneConstant.ZONE_DELETE, \"\\\"\", zone_name, \"\\\"\")"},{"line_number":302,"context_line":"        status, msg \u003d self.apply_zone_change(cmd.split())"},{"line_number":303,"context_line":"        if not status:"},{"line_number":304,"context_line":"            return (False, msg)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Fct0%3D","line":301,"in_reply_to":"AAAAUH%2F%2Fkn8%3D","updated":"2014-01-16 04:58:13.000000000","message":"Done","commit_id":"9e37fbf50e9d0b6e5505d5ac3c9ce1f2e07b9f7a"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e49a56306b5fa82e2d12a47b9fd529504e9330ed","unresolved":false,"context_lines":[{"line_number":434,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":435,"context_line":"                LOG.error(_(\"Error running SSH command: %s\") % command)"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"    def _ssh_execute(self, cmd_list, check_exit_code\u003dTrue, attempts\u003d1):"},{"line_number":438,"context_line":"        \"\"\"Execute cli with status update."},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        Executes CLI commands such as cfgsave where status return is expected."}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2FknI%3D","line":437,"updated":"2014-01-10 22:06:01.000000000","message":"Why do we need 2 methods for executing ssh code?  This seems ripe for refactoring.","commit_id":"9e37fbf50e9d0b6e5505d5ac3c9ce1f2e07b9f7a"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"7e111c0165d31b4457896a8ca12c83cf2326b1dc","unresolved":false,"context_lines":[{"line_number":434,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":435,"context_line":"                LOG.error(_(\"Error running SSH command: %s\") % command)"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"    def _ssh_execute(self, cmd_list, check_exit_code\u003dTrue, attempts\u003d1):"},{"line_number":438,"context_line":"        \"\"\"Execute cli with status update."},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        Executes CLI commands such as cfgsave where status return is expected."}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2FUvw%3D","line":437,"in_reply_to":"AAAAUH%2F%2FknI%3D","updated":"2014-01-16 04:58:13.000000000","message":"The second method is written to handle user input scenario while CLI run.","commit_id":"9e37fbf50e9d0b6e5505d5ac3c9ce1f2e07b9f7a"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"38c7f54e0dfcbf60286a2c813d7eead536d7e31e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        Return active zoneset from fabric. When none of the configurations"},{"line_number":58,"context_line":"        are active then it will return empty map."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        :returns: Map -- active zone set map"},{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        zone_set \u003d {}"},{"line_number":63,"context_line":"        zone \u003d {}"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BdWY%3D","line":60,"updated":"2014-01-25 23:35:52.000000000","message":"It would be helpful if the returned structure were described more fully, just for clarity.","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"bf6a0d95bb9a08baf0b4babe8a3b778f527cb77b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        Return active zoneset from fabric. When none of the configurations"},{"line_number":58,"context_line":"        are active then it will return empty map."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        :returns: Map -- active zone set map"},{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        zone_set \u003d {}"},{"line_number":63,"context_line":"        zone \u003d {}"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BIvw%3D","line":60,"in_reply_to":"AAAAUH%2F%2BdWY%3D","updated":"2014-01-30 18:52:39.000000000","message":"Done","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"38c7f54e0dfcbf60286a2c813d7eead536d7e31e","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        return zone_set"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def add_zones(self, zones, activate):"},{"line_number":110,"context_line":"        \"\"\"Add cone configuration."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        This method will add the zone configuration passed by user."},{"line_number":113,"context_line":"            input params:"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BdV8%3D","line":110,"updated":"2014-01-25 23:35:52.000000000","message":"cone -\u003e zone","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"bf6a0d95bb9a08baf0b4babe8a3b778f527cb77b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        return zone_set"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def add_zones(self, zones, activate):"},{"line_number":110,"context_line":"        \"\"\"Add cone configuration."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        This method will add the zone configuration passed by user."},{"line_number":113,"context_line":"            input params:"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BIvs%3D","line":110,"in_reply_to":"AAAAUH%2F%2BdV8%3D","updated":"2014-01-30 18:52:39.000000000","message":"Done","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"38c7f54e0dfcbf60286a2c813d7eead536d7e31e","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        This method will add the zone configuration passed by user."},{"line_number":113,"context_line":"            input params:"},{"line_number":114,"context_line":"            zones -"},{"line_number":115,"context_line":"            {   zonename1:[zonememeber1,zonemember2,...],"},{"line_number":116,"context_line":"                zonename2:[zonemember1, zonemember2,...]...}"},{"line_number":117,"context_line":"            activate - True/False"},{"line_number":118,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BdWA%3D","line":115,"updated":"2014-01-25 23:35:52.000000000","message":"Could you be explicit here as to the format of a zonemember - does it need to be lower-case WWPN with no colons?","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"bf6a0d95bb9a08baf0b4babe8a3b778f527cb77b","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        This method will add the zone configuration passed by user."},{"line_number":113,"context_line":"            input params:"},{"line_number":114,"context_line":"            zones -"},{"line_number":115,"context_line":"            {   zonename1:[zonememeber1,zonemember2,...],"},{"line_number":116,"context_line":"                zonename2:[zonemember1, zonemember2,...]...}"},{"line_number":117,"context_line":"            activate - True/False"},{"line_number":118,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BIuY%3D","line":115,"in_reply_to":"AAAAUH%2F%2BdWA%3D","updated":"2014-01-30 18:52:39.000000000","message":"Done","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"38c7f54e0dfcbf60286a2c813d7eead536d7e31e","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            self.apply_zone_change(cmd.split())"},{"line_number":214,"context_line":"            for zone in zones:"},{"line_number":215,"context_line":"                self._zone_delete(zone)"},{"line_number":216,"context_line":"                self._cfg_save()"},{"line_number":217,"context_line":"            if activate:"},{"line_number":218,"context_line":"                self.activate_zoneset(active_zoneset_name)"},{"line_number":219,"context_line":"                self._cfg_save()"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BdV4%3D","line":216,"updated":"2014-01-25 23:35:52.000000000","message":"Should we do a cfg_save after each zone deletion, or save them up for the end? I see on switches with lots of zones, a cfgsave can take a while.","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"bf6a0d95bb9a08baf0b4babe8a3b778f527cb77b","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            self.apply_zone_change(cmd.split())"},{"line_number":214,"context_line":"            for zone in zones:"},{"line_number":215,"context_line":"                self._zone_delete(zone)"},{"line_number":216,"context_line":"                self._cfg_save()"},{"line_number":217,"context_line":"            if activate:"},{"line_number":218,"context_line":"                self.activate_zoneset(active_zoneset_name)"},{"line_number":219,"context_line":"                self._cfg_save()"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2BIto%3D","line":216,"in_reply_to":"AAAAUH%2F%2BdV4%3D","updated":"2014-01-30 18:52:39.000000000","message":"Makes sense. Moved out of for loop.","commit_id":"8b77f69caea4a7f05b70a42732d5d0d6f0a6d90b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"baa784513a49b2e63ef899fc4c80a2df23098eb0","unresolved":false,"context_lines":[{"line_number":322,"context_line":"            if (stdout):"},{"line_number":323,"context_line":"                for line in stdout:"},{"line_number":324,"context_line":"                    if \u0027Fabric OS:  v\u0027 in line:"},{"line_number":325,"context_line":"                        LOG.debug(\"Firmware version string:%s\" % line)"},{"line_number":326,"context_line":"                        ver \u003d line.split(\u0027Fabric OS:  v\u0027)[1].split(\u0027.\u0027)"},{"line_number":327,"context_line":"                        if (ver):"},{"line_number":328,"context_line":"                            firmware \u003d int(ver[0] + ver[1])"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUX%2F%2F%2FMk%3D","line":325,"updated":"2014-02-07 22:40:24.000000000","message":"Need to wrap log output with _()","commit_id":"2e2dfa9c83f98022bac93dd81e332efff49c245b"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"6403b9dff02f1f1b93f1bfd86005114ac788f0cd","unresolved":false,"context_lines":[{"line_number":322,"context_line":"            if (stdout):"},{"line_number":323,"context_line":"                for line in stdout:"},{"line_number":324,"context_line":"                    if \u0027Fabric OS:  v\u0027 in line:"},{"line_number":325,"context_line":"                        LOG.debug(\"Firmware version string:%s\" % line)"},{"line_number":326,"context_line":"                        ver \u003d line.split(\u0027Fabric OS:  v\u0027)[1].split(\u0027.\u0027)"},{"line_number":327,"context_line":"                        if (ver):"},{"line_number":328,"context_line":"                            firmware \u003d int(ver[0] + ver[1])"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUX%2F%2Fl0g%3D","line":325,"in_reply_to":"AAAAUX%2F%2F%2FMk%3D","updated":"2014-02-12 07:52:52.000000000","message":"Done","commit_id":"2e2dfa9c83f98022bac93dd81e332efff49c245b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"baa784513a49b2e63ef899fc4c80a2df23098eb0","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                            firmware \u003d int(ver[0] + ver[1])"},{"line_number":329,"context_line":"                return firmware \u003e 63"},{"line_number":330,"context_line":"            else:"},{"line_number":331,"context_line":"                LOG.error(\"No CLI output for firmware version check\")"},{"line_number":332,"context_line":"                return False"},{"line_number":333,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":334,"context_line":"            msg \u003d _(\"Error while getting data via ssh: (command\u003d%(cmd)s \""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUX%2F%2F%2FMo%3D","line":331,"updated":"2014-02-07 22:40:24.000000000","message":"Need to wrap log output with _()","commit_id":"2e2dfa9c83f98022bac93dd81e332efff49c245b"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"6403b9dff02f1f1b93f1bfd86005114ac788f0cd","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                            firmware \u003d int(ver[0] + ver[1])"},{"line_number":329,"context_line":"                return firmware \u003e 63"},{"line_number":330,"context_line":"            else:"},{"line_number":331,"context_line":"                LOG.error(\"No CLI output for firmware version check\")"},{"line_number":332,"context_line":"                return False"},{"line_number":333,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":334,"context_line":"            msg \u003d _(\"Error while getting data via ssh: (command\u003d%(cmd)s \""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUX%2F%2Fl0M%3D","line":331,"in_reply_to":"AAAAUX%2F%2F%2FMo%3D","updated":"2014-02-12 07:52:52.000000000","message":"Done","commit_id":"2e2dfa9c83f98022bac93dd81e332efff49c245b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"db21a6687bee36c6c0770f9b411beddf02db29df","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        stdout, stderr, sw_data \u003d None, None, None"},{"line_number":341,"context_line":"        try:"},{"line_number":342,"context_line":"            stdout, stderr \u003d self._run_ssh(cmd_list, True, 1)"},{"line_number":343,"context_line":"            LOG.debug(_(\"CLI output from ssh - output:%s\"), stdout)"},{"line_number":344,"context_line":"            if (stdout):"},{"line_number":345,"context_line":"                sw_data \u003d stdout.splitlines()"},{"line_number":346,"context_line":"            return sw_data"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUX%2F%2F%2FOM%3D","line":343,"updated":"2014-02-07 22:31:20.000000000","message":"This is outputting excessive amounts of logging depending on the call.  Our switch has over 90 entries and every time this gets called it outputs 700 lines of debugging information.","commit_id":"2e2dfa9c83f98022bac93dd81e332efff49c245b"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"6403b9dff02f1f1b93f1bfd86005114ac788f0cd","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        stdout, stderr, sw_data \u003d None, None, None"},{"line_number":341,"context_line":"        try:"},{"line_number":342,"context_line":"            stdout, stderr \u003d self._run_ssh(cmd_list, True, 1)"},{"line_number":343,"context_line":"            LOG.debug(_(\"CLI output from ssh - output:%s\"), stdout)"},{"line_number":344,"context_line":"            if (stdout):"},{"line_number":345,"context_line":"                sw_data \u003d stdout.splitlines()"},{"line_number":346,"context_line":"            return sw_data"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUX%2F%2Fly0%3D","line":343,"in_reply_to":"AAAAUX%2F%2F%2FOM%3D","updated":"2014-02-12 07:52:52.000000000","message":"Done","commit_id":"2e2dfa9c83f98022bac93dd81e332efff49c245b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"2ae9f2d6a96e4136d99003e4dddaef14426946a8","unresolved":false,"context_lines":[{"line_number":384,"context_line":"                                         max_size\u003d5)"},{"line_number":385,"context_line":"        last_exception \u003d None"},{"line_number":386,"context_line":"        try:"},{"line_number":387,"context_line":"            total_attempts \u003d attempts"},{"line_number":388,"context_line":"            with self.sshpool.item() as ssh:"},{"line_number":389,"context_line":"                while attempts \u003e 0:"},{"line_number":390,"context_line":"                    attempts -\u003d 1"}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAUX%2F%2Be%2Bs%3D","line":387,"updated":"2014-02-20 23:02:58.000000000","message":"total_attempts isn\u0027t used.","commit_id":"ac43759193dddb9cc159b3111504c28d23b12da4"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"ed06bebe8b7d81535749e3c59e7ab65eaa9c0517","unresolved":false,"context_lines":[{"line_number":384,"context_line":"                                         max_size\u003d5)"},{"line_number":385,"context_line":"        last_exception \u003d None"},{"line_number":386,"context_line":"        try:"},{"line_number":387,"context_line":"            total_attempts \u003d attempts"},{"line_number":388,"context_line":"            with self.sshpool.item() as ssh:"},{"line_number":389,"context_line":"                while attempts \u003e 0:"},{"line_number":390,"context_line":"                    attempts -\u003d 1"}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAUX%2F%2BehM%3D","line":387,"in_reply_to":"AAAAUX%2F%2Be%2Bs%3D","updated":"2014-02-20 23:59:49.000000000","message":"Was added to log - but not required. Removing it.","commit_id":"ac43759193dddb9cc159b3111504c28d23b12da4"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"2ae9f2d6a96e4136d99003e4dddaef14426946a8","unresolved":false,"context_lines":[{"line_number":433,"context_line":"        LOG.debug(_(\"Executing command via ssh: %s\") % command)"},{"line_number":434,"context_line":"        last_exception \u003d None"},{"line_number":435,"context_line":"        try:"},{"line_number":436,"context_line":"            total_attempts \u003d attempts"},{"line_number":437,"context_line":"            with self.sshpool.item() as ssh:"},{"line_number":438,"context_line":"                while attempts \u003e 0:"},{"line_number":439,"context_line":"                    attempts -\u003d 1"}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAUX%2F%2Be%2Bg%3D","line":436,"updated":"2014-02-20 23:02:58.000000000","message":"total_attempts isn\u0027t used.","commit_id":"ac43759193dddb9cc159b3111504c28d23b12da4"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"ed06bebe8b7d81535749e3c59e7ab65eaa9c0517","unresolved":false,"context_lines":[{"line_number":433,"context_line":"        LOG.debug(_(\"Executing command via ssh: %s\") % command)"},{"line_number":434,"context_line":"        last_exception \u003d None"},{"line_number":435,"context_line":"        try:"},{"line_number":436,"context_line":"            total_attempts \u003d attempts"},{"line_number":437,"context_line":"            with self.sshpool.item() as ssh:"},{"line_number":438,"context_line":"                while attempts \u003e 0:"},{"line_number":439,"context_line":"                    attempts -\u003d 1"}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAUX%2F%2BehE%3D","line":436,"in_reply_to":"AAAAUX%2F%2Be%2Bg%3D","updated":"2014-02-20 23:59:49.000000000","message":"Removed","commit_id":"ac43759193dddb9cc159b3111504c28d23b12da4"}],"cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py":[{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"5f371721cc8eebe1e522e97df9455a607f48d68a","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                                                     .zoning_policy,"},{"line_number":111,"context_line":"                                                     help\u003d\u0027overridden \u0027"},{"line_number":112,"context_line":"                                                     \u0027zoning policy\u0027))"},{"line_number":113,"context_line":"                    fc_fabric_opts.append(cfg.StrOpt(\u0027zone_activate_\u0027"},{"line_number":114,"context_line":"                                                     + fabric_name,"},{"line_number":115,"context_line":"                                                     default\u003dself.configuration"},{"line_number":116,"context_line":"                                                     .zone_activate,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2FgAk%3D","line":113,"updated":"2013-09-04 02:21:14.000000000","message":"I believe this is also a boolean, right?  If so, should also use BoolOpt.","commit_id":"6ee9db001918832d35187527ffafda0af540e0d1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"5f371721cc8eebe1e522e97df9455a607f48d68a","unresolved":false,"context_lines":[{"line_number":424,"context_line":"        cfgmap \u003d {}"},{"line_number":425,"context_line":"        conn \u003d None"},{"line_number":426,"context_line":"        try:"},{"line_number":427,"context_line":"            LOG.info(_(\"Southbound Connetcor: %s\"),"},{"line_number":428,"context_line":"                     self.configuration.brcd_sb_connector)"},{"line_number":429,"context_line":"            conn \u003d importutils.import_object("},{"line_number":430,"context_line":"                self.configuration.brcd_sb_connector,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2FgAc%3D","line":427,"updated":"2013-09-04 02:21:14.000000000","message":"Oops - \"connector\"  :-)","commit_id":"6ee9db001918832d35187527ffafda0af540e0d1"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":53,"context_line":"               \u0027.brcd_fc_zone_client_cli.BrcdFCZoneClientCLI\u0027,"},{"line_number":54,"context_line":"               help\u003d\u0027Southbound connector for zoning operation\u0027),"},{"line_number":55,"context_line":"]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"CONF \u003d cfg.CONF"},{"line_number":58,"context_line":"CONF.register_opts(brcd_opts)"},{"line_number":59,"context_line":"CONF.import_opt(\u0027zone_activate\u0027, \u0027cinder.zonemanager.drivers.fc_zone_driver\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeKU%3D","line":56,"updated":"2013-09-04 12:57:02.000000000","message":"Two lines between top level code. Refer https://github.com/openstack-dev/hacking/blob/master/HACKING.rst.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            There can be more than one SAN in the network and we need to"},{"line_number":86,"context_line":"            get credentials for each SAN."},{"line_number":87,"context_line":"            \"\"\""},{"line_number":88,"context_line":"            if (len(fabric_names) \u003e 0):"},{"line_number":89,"context_line":"                for fabric_name in fabric_names:"},{"line_number":90,"context_line":"                    fc_fabric_opts.append(cfg.StrOpt(\u0027fc_fabric_address_\u0027"},{"line_number":91,"context_line":"                                                     + fabric_name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeJM%3D","line":88,"updated":"2013-09-04 12:57:02.000000000","message":"Use if fabric_names:","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                self.configuration.append_config_values(fc_fabric_opts)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def get_formatted_wwn(self, wwn_str):"},{"line_number":134,"context_line":"        \"\"\""},{"line_number":135,"context_line":"        Utility API that formats WWN to insert \u0027:\u0027"},{"line_number":136,"context_line":"        \"\"\""},{"line_number":137,"context_line":"        col \u003d \u0027:\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeI8%3D","line":134,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def add_connection(self, fabric, initiator_target_map):"},{"line_number":147,"context_line":"        \"\"\""},{"line_number":148,"context_line":"        Concrete implementation of add_connection"},{"line_number":149,"context_line":"        Based on zoning policy and state of each I-T pair, list of zone"},{"line_number":150,"context_line":"        members are created and pushed to the fabric to add zones. The"},{"line_number":151,"context_line":"        new zones created or zones updated are activated based on isActivate"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeI4%3D","line":148,"updated":"2013-09-04 12:57:02.000000000","message":"Fix multiline comment. Refer https://github.com/openstack-dev/hacking/blob/master/HACKING.rst.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":218,"context_line":"                if (len(zone_map) \u003e 0):"},{"line_number":219,"context_line":"                    conn \u003d None"},{"line_number":220,"context_line":"                    try:"},{"line_number":221,"context_line":"                        conn \u003d importutils.import_object("},{"line_number":222,"context_line":"                            self.configuration.brcd_sb_connector,"},{"line_number":223,"context_line":"                            ipaddress\u003dfabric_ip,"},{"line_number":224,"context_line":"                            username\u003dfabric_user,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2Fcck%3D","line":221,"updated":"2013-09-04 18:08:42.000000000","message":"should this brcd_sb_connector class  import be done in __init__()?\nconcerns me a bit since it is in a loop.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                    except Exception as e:"},{"line_number":230,"context_line":"                        LOG.error(str(e))"},{"line_number":231,"context_line":"                        msg \u003d \"Failed to add zoning configuration\""},{"line_number":232,"context_line":"                        raise exception.FCZoneDriverException(msg)"},{"line_number":233,"context_line":"                    finally:"},{"line_number":234,"context_line":"                        if (conn):"},{"line_number":235,"context_line":"                            conn.close_connection()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeIs%3D","line":232,"updated":"2013-09-04 12:57:02.000000000","message":"Fix internationalization.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def delete_connection(self, fabric, initiator_target_map):"},{"line_number":240,"context_line":"        \"\"\""},{"line_number":241,"context_line":"        Concrete implementation of delete_connection"},{"line_number":242,"context_line":"        Based on zoning policy and state of each I-T pair, list of zones"},{"line_number":243,"context_line":"        are created for deletion. The zones are either updated deleted based"},{"line_number":244,"context_line":"        on the policy and attach/detach state of each I-T pair."}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeIo%3D","line":241,"updated":"2013-09-04 12:57:02.000000000","message":"fix multiline docsting.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                LOG.debug(_(\"Final Zone list to delete: %s\"), zones_to_delete)"},{"line_number":325,"context_line":"                conn \u003d None"},{"line_number":326,"context_line":"                try:"},{"line_number":327,"context_line":"                    conn \u003d importutils.import_object("},{"line_number":328,"context_line":"                        self.configuration.brcd_sb_connector,"},{"line_number":329,"context_line":"                        ipaddress\u003dfabric_ip,"},{"line_number":330,"context_line":"                        username\u003dfabric_user,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2Fcbk%3D","line":327,"updated":"2013-09-04 18:08:42.000000000","message":"can this brcd_sb_connector class import be done in __init__()?","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":331,"context_line":"                        password\u003dfabric_pwd,"},{"line_number":332,"context_line":"                        port\u003dfabric_port)"},{"line_number":333,"context_line":"                    # Update zone membership"},{"line_number":334,"context_line":"                    if (len(zone_map) \u003e 0):"},{"line_number":335,"context_line":"                        conn.add_zones("},{"line_number":336,"context_line":"                            zone_map, self.configuration.zone_activate)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeIg%3D","line":334,"updated":"2013-09-04 12:57:02.000000000","message":"consider using if zone_map:","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":336,"context_line":"                            zone_map, self.configuration.zone_activate)"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"                    # Delete zones ~sk"},{"line_number":339,"context_line":"                    if (len(zones_to_delete) \u003e 0):"},{"line_number":340,"context_line":"                        zone_name_string \u003d \u0027\u0027"},{"line_number":341,"context_line":"                        num_zones \u003d len(zones_to_delete)"},{"line_number":342,"context_line":"                        for i in range(0, num_zones):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeIY%3D","line":339,"updated":"2013-09-04 12:57:02.000000000","message":"same as above.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":342,"context_line":"                        for i in range(0, num_zones):"},{"line_number":343,"context_line":"                            if (i \u003d\u003d 0):"},{"line_number":344,"context_line":"                                zone_name_string \u003d ("},{"line_number":345,"context_line":"                                    zone_name_string + zones_to_delete[i])"},{"line_number":346,"context_line":"                            else:"},{"line_number":347,"context_line":"                                zone_name_string \u003d ("},{"line_number":348,"context_line":"                                    zone_name_string"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeIE%3D","line":345,"updated":"2013-09-04 12:57:02.000000000","message":"string substitution is better as strings are immutable.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":352,"context_line":"                            zone_name_string, self.configuration.zone_activate)"},{"line_number":353,"context_line":"                except Exception as e:"},{"line_number":354,"context_line":"                    LOG.error(str(e))"},{"line_number":355,"context_line":"                    msg \u003d \"Failed to update or delete zoning configuration\""},{"line_number":356,"context_line":"                    raise exception.FCZoneDriverException(msg)"},{"line_number":357,"context_line":"                finally:"},{"line_number":358,"context_line":"                    if (conn):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeH4%3D","line":355,"updated":"2013-09-04 12:57:02.000000000","message":"Fix internationalization.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":359,"context_line":"                        conn.close_connection()"},{"line_number":360,"context_line":"        return do_delete_connection()"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    def get_san_context(self, target_wwn_list):"},{"line_number":363,"context_line":"        \"\"\""},{"line_number":364,"context_line":"        Look up each SAN configured and return a map of SAN (fabric IP) to"},{"line_number":365,"context_line":"        list of target WWNs visible to the fabric."}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FcZU%3D","line":362,"updated":"2013-09-04 18:08:42.000000000","message":"get_san_context will be called from fc_zone_manager and it is not serialized by the same lock used by add_connection/delete_connection. Could end up with stale fabric_map if there are concurrent initialize_connection/terminate_connection.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    def get_san_context(self, target_wwn_list):"},{"line_number":363,"context_line":"        \"\"\""},{"line_number":364,"context_line":"        Look up each SAN configured and return a map of SAN (fabric IP) to"},{"line_number":365,"context_line":"        list of target WWNs visible to the fabric."},{"line_number":366,"context_line":"        \"\"\""},{"line_number":367,"context_line":"        #TODO(sk): need to replace this call to use lookup service later"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeH0%3D","line":364,"updated":"2013-09-04 12:57:02.000000000","message":"fix docstring.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":387,"context_line":"                \"\"\""},{"line_number":388,"context_line":"                conn \u003d None"},{"line_number":389,"context_line":"                try:"},{"line_number":390,"context_line":"                    conn \u003d importutils.import_object("},{"line_number":391,"context_line":"                        self.configuration.brcd_sb_connector,"},{"line_number":392,"context_line":"                        ipaddress\u003dfabric_ip,"},{"line_number":393,"context_line":"                        username\u003dfabric_user,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FcbY%3D","line":390,"updated":"2013-09-04 18:08:42.000000000","message":"same as above","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def get_active_zone_set(self, fabric_ip,"},{"line_number":422,"context_line":"                            fabric_user, fabric_pwd, fabric_port):"},{"line_number":423,"context_line":"        \"\"\"Gets active zone config from fabric"},{"line_number":424,"context_line":"        \"\"\""},{"line_number":425,"context_line":"        cfgmap \u003d {}"},{"line_number":426,"context_line":"        conn \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeHo%3D","line":423,"updated":"2013-09-04 12:57:02.000000000","message":"Fix single line docstring. Place a period at the end.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":427,"context_line":"        try:"},{"line_number":428,"context_line":"            LOG.info(_(\"Southbound connector: %s\"),"},{"line_number":429,"context_line":"                     self.configuration.brcd_sb_connector)"},{"line_number":430,"context_line":"            conn \u003d importutils.import_object("},{"line_number":431,"context_line":"                self.configuration.brcd_sb_connector,"},{"line_number":432,"context_line":"                ipaddress\u003dfabric_ip, username\u003dfabric_user,"},{"line_number":433,"context_line":"                password\u003dfabric_pwd, port\u003dfabric_port)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FcbU%3D","line":430,"updated":"2013-09-04 18:08:42.000000000","message":"same as above","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":434,"context_line":"            cfgmap \u003d conn.get_active_zone_set()"},{"line_number":435,"context_line":"        except Exception as e:"},{"line_number":436,"context_line":"            LOG.error(str(e))"},{"line_number":437,"context_line":"            msg \u003d \"Failed to access active zoning configuration\""},{"line_number":438,"context_line":"            raise exception.FCZoneDriverException(msg)"},{"line_number":439,"context_line":"        finally:"},{"line_number":440,"context_line":"            if (conn):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeHk%3D","line":437,"updated":"2013-09-04 12:57:02.000000000","message":"Fix internationalization.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"c3915e9c1b0521da7b5b218f376c329042de0e7d","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                                                     help\u003d\u0027Fabric user ID\u0027))"},{"line_number":99,"context_line":"                    fc_fabric_opts.append(cfg.StrOpt(\u0027fc_fabric_password_\u0027"},{"line_number":100,"context_line":"                                                     + fabric_name,"},{"line_number":101,"context_line":"                                                     default\u003d\u0027\u0027,"},{"line_number":102,"context_line":"                                                     help\u003d\u0027Password for user\u0027))"},{"line_number":103,"context_line":"                    fc_fabric_opts.append(cfg.IntOpt(\u0027fc_fabric_port_\u0027"},{"line_number":104,"context_line":"                                                     + fabric_name,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FCeM%3D","line":101,"updated":"2013-09-13 03:31:31.000000000","message":"We should also pass secret\u003dTrue here.","commit_id":"b712288797b9deb5eb773c6e3c4667d346c2ac04"},{"author":{"_account_id":8911,"name":"Sergey Vilgelm","email":"sergey@vilgelm.info","username":"sergey.vilgelm"},"change_message_id":"f2160beda8b36b46314d86c3824b417131499f3a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":44,"context_line":"from cinder import utils"},{"line_number":45,"context_line":"from cinder.volume.configuration import Configuration"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"from cinder.zonemanager.drivers.fc_zone_driver import FCZoneDriver"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BwkU%3D","line":46,"updated":"2013-11-20 16:03:36.000000000","message":"Blank line is not needed.","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5b4addc018e6621ef394a27608e97110d65b70a3","unresolved":false,"context_lines":[{"line_number":43,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":44,"context_line":"from cinder import utils"},{"line_number":45,"context_line":"from cinder.volume.configuration import Configuration"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"from cinder.zonemanager.drivers.fc_zone_driver import FCZoneDriver"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bugo%3D","line":46,"in_reply_to":"AAAATn%2F%2BwkU%3D","updated":"2013-11-26 22:48:44.000000000","message":"Done","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class BrcdFCZoneDriver(FCZoneDriver):"},{"line_number":66,"context_line":"    \"\"\"Brocade FC zone driver implementation"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    OpenStack Fibre Channel zone driver to manage FC zoning in"},{"line_number":69,"context_line":"    Brocade SAN fabrics."}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qQM%3D","line":66,"updated":"2013-12-09 06:39:26.000000000","message":"dot at end","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class BrcdFCZoneDriver(FCZoneDriver):"},{"line_number":66,"context_line":"    \"\"\"Brocade FC zone driver implementation"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    OpenStack Fibre Channel zone driver to manage FC zoning in"},{"line_number":69,"context_line":"    Brocade SAN fabrics."}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lbw%3D","line":66,"in_reply_to":"AAAATn%2F9qQM%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                self.configuration.append_config_values(fc_fabric_opts)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def get_formatted_wwn(self, wwn_str):"},{"line_number":135,"context_line":"        \"\"\"Utility API that formats WWN to insert \u0027:\u0027."},{"line_number":136,"context_line":"        \"\"\""},{"line_number":137,"context_line":"        wwn_str \u003d wwn_str.encode(\u0027ascii\u0027)"},{"line_number":138,"context_line":"        col \u003d \u0027:\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qP4%3D","line":135,"updated":"2013-12-09 06:39:26.000000000","message":"(optional) can be a single-line docstring","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                self.configuration.append_config_values(fc_fabric_opts)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def get_formatted_wwn(self, wwn_str):"},{"line_number":135,"context_line":"        \"\"\"Utility API that formats WWN to insert \u0027:\u0027."},{"line_number":136,"context_line":"        \"\"\""},{"line_number":137,"context_line":"        wwn_str \u003d wwn_str.encode(\u0027ascii\u0027)"},{"line_number":138,"context_line":"        col \u003d \u0027:\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lbY%3D","line":135,"in_reply_to":"AAAATn%2F9qP4%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":449,"context_line":"            LOG.error(str(e))"},{"line_number":450,"context_line":"            msg \u003d _(\"Failed to access active zoning configuration\")"},{"line_number":451,"context_line":"            raise exception.FCZoneDriverException(msg)"},{"line_number":452,"context_line":"        #finally:"},{"line_number":453,"context_line":"        #    if (conn):"},{"line_number":454,"context_line":"        #        conn.close_connection()"},{"line_number":455,"context_line":"        LOG.debug(_(\"Active zone set from fabric: %s\"), cfgmap)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qPo%3D","line":452,"updated":"2013-12-09 06:39:26.000000000","message":"remove commented out code","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":449,"context_line":"            LOG.error(str(e))"},{"line_number":450,"context_line":"            msg \u003d _(\"Failed to access active zoning configuration\")"},{"line_number":451,"context_line":"            raise exception.FCZoneDriverException(msg)"},{"line_number":452,"context_line":"        #finally:"},{"line_number":453,"context_line":"        #    if (conn):"},{"line_number":454,"context_line":"        #        conn.close_connection()"},{"line_number":455,"context_line":"        LOG.debug(_(\"Active zone set from fabric: %s\"), cfgmap)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9la8%3D","line":452,"in_reply_to":"AAAATn%2F9qPo%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a16b17d610723e074735027fe940acef32261041","unresolved":false,"context_lines":[{"line_number":32,"context_line":"\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"import sys"},{"line_number":36,"context_line":"import traceback"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from oslo.config import cfg"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fiA%3D","line":35,"updated":"2013-12-10 23:29:28.000000000","message":"unused import","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":32,"context_line":"\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"import sys"},{"line_number":36,"context_line":"import traceback"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from oslo.config import cfg"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YKE%3D","line":35,"in_reply_to":"AAAATn%2F9fiA%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a16b17d610723e074735027fe940acef32261041","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"import sys"},{"line_number":36,"context_line":"import traceback"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from oslo.config import cfg"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fiI%3D","line":36,"updated":"2013-12-10 23:29:28.000000000","message":"unused import","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"import sys"},{"line_number":36,"context_line":"import traceback"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from oslo.config import cfg"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YKA%3D","line":36,"in_reply_to":"AAAATn%2F9fiI%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a16b17d610723e074735027fe940acef32261041","unresolved":false,"context_lines":[{"line_number":41,"context_line":"from cinder.openstack.common import importutils"},{"line_number":42,"context_line":"from cinder.openstack.common import lockutils"},{"line_number":43,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":44,"context_line":"from cinder import utils"},{"line_number":45,"context_line":"from cinder.volume.configuration import Configuration"},{"line_number":46,"context_line":"from cinder.zonemanager.drivers.fc_zone_driver import FCZoneDriver"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fiQ%3D","line":44,"updated":"2013-12-10 23:29:28.000000000","message":"unused import","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":41,"context_line":"from cinder.openstack.common import importutils"},{"line_number":42,"context_line":"from cinder.openstack.common import lockutils"},{"line_number":43,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":44,"context_line":"from cinder import utils"},{"line_number":45,"context_line":"from cinder.volume.configuration import Configuration"},{"line_number":46,"context_line":"from cinder.zonemanager.drivers.fc_zone_driver import FCZoneDriver"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YJ8%3D","line":44,"in_reply_to":"AAAATn%2F9fiQ%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a16b17d610723e074735027fe940acef32261041","unresolved":false,"context_lines":[{"line_number":42,"context_line":"from cinder.openstack.common import lockutils"},{"line_number":43,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":44,"context_line":"from cinder import utils"},{"line_number":45,"context_line":"from cinder.volume.configuration import Configuration"},{"line_number":46,"context_line":"from cinder.zonemanager.drivers.fc_zone_driver import FCZoneDriver"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fh4%3D","line":45,"updated":"2013-12-10 23:29:28.000000000","message":"unused import","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":42,"context_line":"from cinder.openstack.common import lockutils"},{"line_number":43,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":44,"context_line":"from cinder import utils"},{"line_number":45,"context_line":"from cinder.volume.configuration import Configuration"},{"line_number":46,"context_line":"from cinder.zonemanager.drivers.fc_zone_driver import FCZoneDriver"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YJ4%3D","line":45,"in_reply_to":"AAAATn%2F9fh4%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a16b17d610723e074735027fe940acef32261041","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    def get_formatted_wwn(self, wwn_str):"},{"line_number":133,"context_line":"        \"\"\"Utility API that formats WWN to insert \u0027:\u0027.\"\"\""},{"line_number":134,"context_line":"        wwn_str \u003d wwn_str.encode(\u0027ascii\u0027)"},{"line_number":135,"context_line":"        col \u003d \u0027:\u0027"},{"line_number":136,"context_line":"        if (len(wwn_str) !\u003d 16):"},{"line_number":137,"context_line":"            return wwn_str"},{"line_number":138,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fic%3D","line":135,"updated":"2013-12-10 23:29:28.000000000","message":"unused variable","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    def get_formatted_wwn(self, wwn_str):"},{"line_number":133,"context_line":"        \"\"\"Utility API that formats WWN to insert \u0027:\u0027.\"\"\""},{"line_number":134,"context_line":"        wwn_str \u003d wwn_str.encode(\u0027ascii\u0027)"},{"line_number":135,"context_line":"        col \u003d \u0027:\u0027"},{"line_number":136,"context_line":"        if (len(wwn_str) !\u003d 16):"},{"line_number":137,"context_line":"            return wwn_str"},{"line_number":138,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YJw%3D","line":135,"in_reply_to":"AAAATn%2F9fic%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a16b17d610723e074735027fe940acef32261041","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            Based on zoning policy, get zone member list and push changes to"},{"line_number":277,"context_line":"            fabric. This operation could result in an update for zone config"},{"line_number":278,"context_line":"            with new member list or deleting zones from active cfg"},{"line_number":279,"context_line":"            \"\"\""},{"line_number":280,"context_line":"            LOG.debug(_(\"zone config from Fabric: %s\"), cfgmap_from_fabric)"},{"line_number":281,"context_line":"            for initiator_key in initiator_target_map.keys():"},{"line_number":282,"context_line":"                initiator \u003d initiator_key.lower()"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9ffo%3D","line":279,"updated":"2013-12-10 23:29:28.000000000","message":"This should be a comment block, not a string\n\nhttp://www.python.org/dev/peps/pep-0008/#block-comments","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            Based on zoning policy, get zone member list and push changes to"},{"line_number":277,"context_line":"            fabric. This operation could result in an update for zone config"},{"line_number":278,"context_line":"            with new member list or deleting zones from active cfg"},{"line_number":279,"context_line":"            \"\"\""},{"line_number":280,"context_line":"            LOG.debug(_(\"zone config from Fabric: %s\"), cfgmap_from_fabric)"},{"line_number":281,"context_line":"            for initiator_key in initiator_target_map.keys():"},{"line_number":282,"context_line":"                initiator \u003d initiator_key.lower()"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YIQ%3D","line":279,"in_reply_to":"AAAATn%2F9ffo%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a16b17d610723e074735027fe940acef32261041","unresolved":false,"context_lines":[{"line_number":317,"context_line":"                        filtered list and if it is non-empty, add initiator to"},{"line_number":318,"context_line":"                        it and update zone if filtered list is empty, we remove"},{"line_number":319,"context_line":"                        that zone"},{"line_number":320,"context_line":"                        \"\"\""},{"line_number":321,"context_line":"                        LOG.debug(_(\"Zone delete - I mode: \""},{"line_number":322,"context_line":"                                    \"filtered targets:%s\"), filtered_members)"},{"line_number":323,"context_line":"                        if filtered_members:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9ffk%3D","line":320,"updated":"2013-12-10 23:29:28.000000000","message":"block comment, not a string.\n\nhttp://www.python.org/dev/peps/pep-0008/#block-comments","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":317,"context_line":"                        filtered list and if it is non-empty, add initiator to"},{"line_number":318,"context_line":"                        it and update zone if filtered list is empty, we remove"},{"line_number":319,"context_line":"                        that zone"},{"line_number":320,"context_line":"                        \"\"\""},{"line_number":321,"context_line":"                        LOG.debug(_(\"Zone delete - I mode: \""},{"line_number":322,"context_line":"                                    \"filtered targets:%s\"), filtered_members)"},{"line_number":323,"context_line":"                        if filtered_members:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YIM%3D","line":320,"in_reply_to":"AAAATn%2F9ffk%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":43,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"brcd_opts \u003d ["},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027brcd_sb_connector\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027cinder.zonemanager.drivers.brocade\u0027"},{"line_number":48,"context_line":"               \u0027.brcd_fc_zone_client_cli.BrcdFCZoneClientCLI\u0027,"},{"line_number":49,"context_line":"               help\u003d\u0027Southbound connector for zoning operation\u0027),"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X1w%3D","line":46,"updated":"2013-12-12 05:45:58.000000000","message":"Nit: Should we just spell out \"brocade\" for clarity?  Does the abbreviation really save us much?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"brcd_opts \u003d ["},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027brcd_sb_connector\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027cinder.zonemanager.drivers.brocade\u0027"},{"line_number":48,"context_line":"               \u0027.brcd_fc_zone_client_cli.BrcdFCZoneClientCLI\u0027,"},{"line_number":49,"context_line":"               help\u003d\u0027Southbound connector for zoning operation\u0027),"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FaGk%3D","line":46,"in_reply_to":"AAAATn%2F9X1w%3D","updated":"2014-01-16 04:55:14.000000000","message":"I am planning to leave this as is for now as it needs changes in class names, configuration file entries and all the references. If it is really important, I can change it after addressing the rest of the comments.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":45,"context_line":"brcd_opts \u003d ["},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027brcd_sb_connector\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027cinder.zonemanager.drivers.brocade\u0027"},{"line_number":48,"context_line":"               \u0027.brcd_fc_zone_client_cli.BrcdFCZoneClientCLI\u0027,"},{"line_number":49,"context_line":"               help\u003d\u0027Southbound connector for zoning operation\u0027),"},{"line_number":50,"context_line":"]"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X1o%3D","line":48,"updated":"2013-12-12 05:45:58.000000000","message":"Same here...I think Brocade reads better and it\u0027s 7 characters vs. 4 -- doesn\u0027t really seem worth abbreviating?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"brcd_opts \u003d ["},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027brcd_sb_connector\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027cinder.zonemanager.drivers.brocade\u0027"},{"line_number":48,"context_line":"               \u0027.brcd_fc_zone_client_cli.BrcdFCZoneClientCLI\u0027,"},{"line_number":49,"context_line":"               help\u003d\u0027Southbound connector for zoning operation\u0027),"},{"line_number":50,"context_line":"]"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FaGg%3D","line":48,"in_reply_to":"AAAATn%2F9X1o%3D","updated":"2014-01-16 04:55:14.000000000","message":"Same above. I am planning to leave this as is for now as it needs changes in class names, configuration file entries and all the references. If it is really important, I can change it after addressing the rest of the comments.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                                                     .zone_name_prefix,"},{"line_number":118,"context_line":"                                                     help\u003d\u0027overridden zone \u0027"},{"line_number":119,"context_line":"                                                     \u0027name prefix\u0027))"},{"line_number":120,"context_line":"                    fc_fabric_opts.append(cfg.StrOpt(\u0027principal_switch_wwn_\u0027"},{"line_number":121,"context_line":"                                                     + fabric_name,"},{"line_number":122,"context_line":"                                                     default\u003dfabric_name,"},{"line_number":123,"context_line":"                                                     help\u003d\u0027Principal switch \u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TOs%3D","line":120,"updated":"2013-12-12 22:46:11.000000000","message":"How about a config option to govern the connection timeout?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                                                     .zone_name_prefix,"},{"line_number":118,"context_line":"                                                     help\u003d\u0027overridden zone \u0027"},{"line_number":119,"context_line":"                                                     \u0027name prefix\u0027))"},{"line_number":120,"context_line":"                    fc_fabric_opts.append(cfg.StrOpt(\u0027principal_switch_wwn_\u0027"},{"line_number":121,"context_line":"                                                     + fabric_name,"},{"line_number":122,"context_line":"                                                     default\u003dfabric_name,"},{"line_number":123,"context_line":"                                                     help\u003d\u0027Principal switch \u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FaF4%3D","line":120,"in_reply_to":"AAAATn%2F9TOs%3D","updated":"2014-01-16 04:55:14.000000000","message":"Didn\u0027t introduce this as I am setting None (default) timeout for the SSHPool (the connections are actually not maintained for long term in the current design).","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            zoning_policy \u003d self.configuration.zoning_policy"},{"line_number":162,"context_line":"            zoning_policy_fab \u003d self.configuration.safe_get("},{"line_number":163,"context_line":"                \u0027zoning_policy_\u0027 + fabric)"},{"line_number":164,"context_line":"            if (zoning_policy_fab):"},{"line_number":165,"context_line":"                zoning_policy \u003d zoning_policy_fab"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"            LOG.info(_(\"Zoning policy for Fabric %s\"), zoning_policy)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X1g%3D","line":164,"updated":"2013-12-12 05:45:58.000000000","message":"Lose ()s","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            zoning_policy \u003d self.configuration.zoning_policy"},{"line_number":162,"context_line":"            zoning_policy_fab \u003d self.configuration.safe_get("},{"line_number":163,"context_line":"                \u0027zoning_policy_\u0027 + fabric)"},{"line_number":164,"context_line":"            if (zoning_policy_fab):"},{"line_number":165,"context_line":"                zoning_policy \u003d zoning_policy_fab"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"            LOG.info(_(\"Zoning policy for Fabric %s\"), zoning_policy)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2F174%3D","line":164,"in_reply_to":"AAAATn%2F9X1g%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"            cfgmap_from_fabric \u003d self.get_active_zone_set("},{"line_number":170,"context_line":"                fabric_ip, fabric_user, fabric_pwd, fabric_port)"},{"line_number":171,"context_line":"            zone_names \u003d []"},{"line_number":172,"context_line":"            if (cfgmap_from_fabric.get(\u0027zones\u0027)):"},{"line_number":173,"context_line":"                zone_names \u003d cfgmap_from_fabric[\u0027zones\u0027].keys()"},{"line_number":174,"context_line":"            # based on zoning policy, create zone member list and"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X1U%3D","line":171,"updated":"2013-12-12 05:45:58.000000000","message":"Ditto","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"            cfgmap_from_fabric \u003d self.get_active_zone_set("},{"line_number":170,"context_line":"                fabric_ip, fabric_user, fabric_pwd, fabric_port)"},{"line_number":171,"context_line":"            zone_names \u003d []"},{"line_number":172,"context_line":"            if (cfgmap_from_fabric.get(\u0027zones\u0027)):"},{"line_number":173,"context_line":"                zone_names \u003d cfgmap_from_fabric[\u0027zones\u0027].keys()"},{"line_number":174,"context_line":"            # based on zoning policy, create zone member list and"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2F170%3D","line":171,"in_reply_to":"AAAATn%2F9X1U%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                zone_map \u003d {}"},{"line_number":178,"context_line":"                initiator \u003d initiator_key.lower()"},{"line_number":179,"context_line":"                t_list \u003d initiator_target_map[initiator_key]"},{"line_number":180,"context_line":"                if (zoning_policy \u003d\u003d \u0027initiator-target\u0027):"},{"line_number":181,"context_line":"                    for t in t_list:"},{"line_number":182,"context_line":"                        target \u003d t.lower()"},{"line_number":183,"context_line":"                        zone_members \u003d [self.get_formatted_wwn(initiator),"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X1Q%3D","line":180,"updated":"2013-12-12 05:45:58.000000000","message":"Ditto","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                zone_map \u003d {}"},{"line_number":178,"context_line":"                initiator \u003d initiator_key.lower()"},{"line_number":179,"context_line":"                t_list \u003d initiator_target_map[initiator_key]"},{"line_number":180,"context_line":"                if (zoning_policy \u003d\u003d \u0027initiator-target\u0027):"},{"line_number":181,"context_line":"                    for t in t_list:"},{"line_number":182,"context_line":"                        target \u003d t.lower()"},{"line_number":183,"context_line":"                        zone_members \u003d [self.get_formatted_wwn(initiator),"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2F17k%3D","line":180,"in_reply_to":"AAAATn%2F9X1Q%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                            # This is I-T zoning, skip if zone already exists."},{"line_number":193,"context_line":"                            LOG.info(_(\"Zone exists in I-T mode. \""},{"line_number":194,"context_line":"                                       \"Skipping zone creation %s\"), zone_name)"},{"line_number":195,"context_line":"                elif (zoning_policy \u003d\u003d \u0027initiator\u0027):"},{"line_number":196,"context_line":"                    zone_members \u003d [self.get_formatted_wwn(initiator)]"},{"line_number":197,"context_line":"                    for t in t_list:"},{"line_number":198,"context_line":"                        target \u003d t.lower()"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X1M%3D","line":195,"updated":"2013-12-12 05:45:58.000000000","message":"Ditto","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                            # This is I-T zoning, skip if zone already exists."},{"line_number":193,"context_line":"                            LOG.info(_(\"Zone exists in I-T mode. \""},{"line_number":194,"context_line":"                                       \"Skipping zone creation %s\"), zone_name)"},{"line_number":195,"context_line":"                elif (zoning_policy \u003d\u003d \u0027initiator\u0027):"},{"line_number":196,"context_line":"                    zone_members \u003d [self.get_formatted_wwn(initiator)]"},{"line_number":197,"context_line":"                    for t in t_list:"},{"line_number":198,"context_line":"                        target \u003d t.lower()"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2F17c%3D","line":195,"in_reply_to":"AAAATn%2F9X1M%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":200,"context_line":""},{"line_number":201,"context_line":"                    zone_name \u003d self.configuration.zone_name_prefix + initiator"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"                    if ((len(zone_names) \u003e 0) and (zone_name in zone_names)):"},{"line_number":204,"context_line":"                        zone_members \u003d zone_members + filter("},{"line_number":205,"context_line":"                            lambda x: x not in zone_members,"},{"line_number":206,"context_line":"                            cfgmap_from_fabric[\u0027zones\u0027][zone_name])"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X1I%3D","line":203,"updated":"2013-12-12 05:45:58.000000000","message":"Ditto","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":200,"context_line":""},{"line_number":201,"context_line":"                    zone_name \u003d self.configuration.zone_name_prefix + initiator"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"                    if ((len(zone_names) \u003e 0) and (zone_name in zone_names)):"},{"line_number":204,"context_line":"                        zone_members \u003d zone_members + filter("},{"line_number":205,"context_line":"                            lambda x: x not in zone_members,"},{"line_number":206,"context_line":"                            cfgmap_from_fabric[\u0027zones\u0027][zone_name])"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2F17Y%3D","line":203,"in_reply_to":"AAAATn%2F9X1I%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"                    zone_map[zone_name] \u003d zone_members"},{"line_number":209,"context_line":"                else:"},{"line_number":210,"context_line":"                    LOG.info(_(\"Zoning Policy: %s, not \""},{"line_number":211,"context_line":"                               \"recognized\"), zoning_policy)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"                LOG.info(_(\"Zone map to add: %s\"), zone_map)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TOA%3D","line":210,"updated":"2013-12-12 22:46:11.000000000","message":"Should this be an exception?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"                    zone_map[zone_name] \u003d zone_members"},{"line_number":209,"context_line":"                else:"},{"line_number":210,"context_line":"                    LOG.info(_(\"Zoning Policy: %s, not \""},{"line_number":211,"context_line":"                               \"recognized\"), zoning_policy)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"                LOG.info(_(\"Zone map to add: %s\"), zone_map)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2F16M%3D","line":210,"in_reply_to":"AAAATn%2F9TOA%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"                LOG.info(_(\"Zone map to add: %s\"), zone_map)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"                if (len(zone_map) \u003e 0):"},{"line_number":216,"context_line":"                    conn \u003d None"},{"line_number":217,"context_line":"                    try:"},{"line_number":218,"context_line":"                        conn \u003d importutils.import_object("}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X1A%3D","line":215,"updated":"2013-12-12 05:45:58.000000000","message":"Ditto  (...ok, I will assume you get the idea...)  :-)","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"                LOG.info(_(\"Zone map to add: %s\"), zone_map)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"                if (len(zone_map) \u003e 0):"},{"line_number":216,"context_line":"                    conn \u003d None"},{"line_number":217,"context_line":"                    try:"},{"line_number":218,"context_line":"                        conn \u003d importutils.import_object("}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2F17Q%3D","line":215,"in_reply_to":"AAAATn%2F9X1A%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                    except Exception as e:"},{"line_number":227,"context_line":"                        LOG.error(str(e))"},{"line_number":228,"context_line":"                        msg \u003d _(\"Failed to add zoning configuration\")"},{"line_number":229,"context_line":"                        raise exception.FCZoneDriverException(msg)"},{"line_number":230,"context_line":"                LOG.debug(_(\"Zones added successfully: %s\"), zone_map)"},{"line_number":231,"context_line":"        return do_add_connection()"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TNg%3D","line":229,"updated":"2013-12-12 22:46:11.000000000","message":"It would be useful if we could differentiate between permanent failiures (e.g. bad credentials) and temporary failiures (e.g. timeouts), since that could be used to decide on whether operations should be retried.\n\nAs it stands right now, if the Cinder portion of the attachment fails, Nova will retry it three times, irrespective of the nature of the failure.  There\u0027s more to stopping the retry than just raising an exception here, but raising good exceptions is a nice start.\n\nAlso, if we get an exception, do we clean up the zones we created on the fabrics on which we might have been successful?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                    except Exception as e:"},{"line_number":227,"context_line":"                        LOG.error(str(e))"},{"line_number":228,"context_line":"                        msg \u003d _(\"Failed to add zoning configuration\")"},{"line_number":229,"context_line":"                        raise exception.FCZoneDriverException(msg)"},{"line_number":230,"context_line":"                LOG.debug(_(\"Zones added successfully: %s\"), zone_map)"},{"line_number":231,"context_line":"        return do_add_connection()"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2F14o%3D","line":229,"in_reply_to":"AAAATn%2F9TNg%3D","updated":"2014-01-16 04:55:14.000000000","message":"How do you propose to differentiate the errors? Different types of exceptions or embedding error code etc? Is there a standard way of doing it in other places? \n\nAnd for clean up, we are not attempting rollback at this point. We thought of leaving this part for the first release as there may be many use cases to address from clean up perspective.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":344,"context_line":"                        zone_name_string \u003d \u0027\u0027"},{"line_number":345,"context_line":"                        num_zones \u003d len(zones_to_delete)"},{"line_number":346,"context_line":"                        for i in range(0, num_zones):"},{"line_number":347,"context_line":"                            if (i \u003d\u003d 0):"},{"line_number":348,"context_line":"                                zone_name_string \u003d ("},{"line_number":349,"context_line":"                                    \u0027%s%s\u0027 % ("},{"line_number":350,"context_line":"                                        zone_name_string, zones_to_delete[i]))"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X08%3D","line":347,"updated":"2013-12-12 05:45:58.000000000","message":"Lose the ()s","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":344,"context_line":"                        zone_name_string \u003d \u0027\u0027"},{"line_number":345,"context_line":"                        num_zones \u003d len(zones_to_delete)"},{"line_number":346,"context_line":"                        for i in range(0, num_zones):"},{"line_number":347,"context_line":"                            if (i \u003d\u003d 0):"},{"line_number":348,"context_line":"                                zone_name_string \u003d ("},{"line_number":349,"context_line":"                                    \u0027%s%s\u0027 % ("},{"line_number":350,"context_line":"                                        zone_name_string, zones_to_delete[i]))"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2F14k%3D","line":347,"in_reply_to":"AAAATn%2F9X08%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        Look up each SAN configured and return a map of SAN (fabric IP) to"},{"line_number":367,"context_line":"        list of target WWNs visible to the fabric."},{"line_number":368,"context_line":"        \"\"\""},{"line_number":369,"context_line":"        #TODO(sk): consider refactoring to use lookup service."},{"line_number":370,"context_line":"        formatted_target_list \u003d []"},{"line_number":371,"context_line":"        fabric_map \u003d {}"},{"line_number":372,"context_line":"        fabrics \u003d self.configuration.fc_fabric_names.split(\u0027,\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9T9c%3D","line":369,"updated":"2013-12-12 19:11:18.000000000","message":"space after #.  Also, for TODO blocks you need to use your git account name in the ()   for example, TODO(walter-boring)","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        Look up each SAN configured and return a map of SAN (fabric IP) to"},{"line_number":367,"context_line":"        list of target WWNs visible to the fabric."},{"line_number":368,"context_line":"        \"\"\""},{"line_number":369,"context_line":"        #TODO(sk): consider refactoring to use lookup service."},{"line_number":370,"context_line":"        formatted_target_list \u003d []"},{"line_number":371,"context_line":"        fabric_map \u003d {}"},{"line_number":372,"context_line":"        fabrics \u003d self.configuration.fc_fabric_names.split(\u0027,\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2F14c%3D","line":369,"in_reply_to":"AAAATn%2F9T9c%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":372,"context_line":"        fabrics \u003d self.configuration.fc_fabric_names.split(\u0027,\u0027)"},{"line_number":373,"context_line":"        LOG.debug(_(\"Fabric List: %s\"), fabrics)"},{"line_number":374,"context_line":"        LOG.debug(_(\"Target wwn List: %s\"), target_wwn_list)"},{"line_number":375,"context_line":"        if (len(fabrics) \u003e 0):"},{"line_number":376,"context_line":"            for t in target_wwn_list:"},{"line_number":377,"context_line":"                formatted_target_list.append(self.get_formatted_wwn(t.lower()))"},{"line_number":378,"context_line":"            LOG.debug(_(\"Formatted Target wwn List:\""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X0o%3D","line":375,"updated":"2013-12-12 05:45:58.000000000","message":"()s","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":372,"context_line":"        fabrics \u003d self.configuration.fc_fabric_names.split(\u0027,\u0027)"},{"line_number":373,"context_line":"        LOG.debug(_(\"Fabric List: %s\"), fabrics)"},{"line_number":374,"context_line":"        LOG.debug(_(\"Target wwn List: %s\"), target_wwn_list)"},{"line_number":375,"context_line":"        if (len(fabrics) \u003e 0):"},{"line_number":376,"context_line":"            for t in target_wwn_list:"},{"line_number":377,"context_line":"                formatted_target_list.append(self.get_formatted_wwn(t.lower()))"},{"line_number":378,"context_line":"            LOG.debug(_(\"Formatted Target wwn List:\""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2F14Y%3D","line":375,"in_reply_to":"AAAATn%2F9X0o%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                except Exception as e:"},{"line_number":402,"context_line":"                    LOG.error(str(e))"},{"line_number":403,"context_line":"                    msg \u003d \"Failed to get name server info\""},{"line_number":404,"context_line":"                    raise exception.FCZoneDriverException(msg)"},{"line_number":405,"context_line":"                visible_targets \u003d filter("},{"line_number":406,"context_line":"                    lambda x: x in formatted_target_list,"},{"line_number":407,"context_line":"                    nsinfo)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9T88%3D","line":404,"updated":"2013-12-12 19:11:18.000000000","message":"use the same message for the log and exception if possible.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                except Exception as e:"},{"line_number":402,"context_line":"                    LOG.error(str(e))"},{"line_number":403,"context_line":"                    msg \u003d \"Failed to get name server info\""},{"line_number":404,"context_line":"                    raise exception.FCZoneDriverException(msg)"},{"line_number":405,"context_line":"                visible_targets \u003d filter("},{"line_number":406,"context_line":"                    lambda x: x in formatted_target_list,"},{"line_number":407,"context_line":"                    nsinfo)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FhFM%3D","line":404,"in_reply_to":"AAAATn%2F9T88%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                    lambda x: x in formatted_target_list,"},{"line_number":407,"context_line":"                    nsinfo)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"                if (visible_targets):"},{"line_number":410,"context_line":"                    LOG.info(_(\"Filtered targets for SAN is: %s\"),"},{"line_number":411,"context_line":"                             {fabric_name: visible_targets})"},{"line_number":412,"context_line":"                    # getting rid of the \u0027:\u0027 before returning"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X0g%3D","line":409,"updated":"2013-12-12 05:45:58.000000000","message":"()s","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                    lambda x: x in formatted_target_list,"},{"line_number":407,"context_line":"                    nsinfo)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"                if (visible_targets):"},{"line_number":410,"context_line":"                    LOG.info(_(\"Filtered targets for SAN is: %s\"),"},{"line_number":411,"context_line":"                             {fabric_name: visible_targets})"},{"line_number":412,"context_line":"                    # getting rid of the \u0027:\u0027 before returning"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2F14E%3D","line":409,"in_reply_to":"AAAATn%2F9X0g%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                if (visible_targets):"},{"line_number":410,"context_line":"                    LOG.info(_(\"Filtered targets for SAN is: %s\"),"},{"line_number":411,"context_line":"                             {fabric_name: visible_targets})"},{"line_number":412,"context_line":"                    # getting rid of the \u0027:\u0027 before returning"},{"line_number":413,"context_line":"                    for idx, elem in enumerate(visible_targets):"},{"line_number":414,"context_line":"                        visible_targets[idx] \u003d str("},{"line_number":415,"context_line":"                            visible_targets[idx]).replace(\u0027:\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TJA%3D","line":412,"updated":"2013-12-12 22:46:11.000000000","message":"Should we lower() it for safety/clarity also?  Elsewhere also, haven\u0027t checked.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                if (visible_targets):"},{"line_number":410,"context_line":"                    LOG.info(_(\"Filtered targets for SAN is: %s\"),"},{"line_number":411,"context_line":"                             {fabric_name: visible_targets})"},{"line_number":412,"context_line":"                    # getting rid of the \u0027:\u0027 before returning"},{"line_number":413,"context_line":"                    for idx, elem in enumerate(visible_targets):"},{"line_number":414,"context_line":"                        visible_targets[idx] \u003d str("},{"line_number":415,"context_line":"                            visible_targets[idx]).replace(\u0027:\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FaEY%3D","line":412,"in_reply_to":"AAAATn%2F9TJA%3D","updated":"2014-01-16 04:55:14.000000000","message":"visible_targets should already be in lower case since lowering is already done before calling formatting for the passed wwn list and name server CLI always return wwn in lower case.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":436,"context_line":"        except Exception as e:"},{"line_number":437,"context_line":"            LOG.error(str(e))"},{"line_number":438,"context_line":"            msg \u003d _(\"Failed to access active zoning configuration\")"},{"line_number":439,"context_line":"            raise exception.FCZoneDriverException(msg)"},{"line_number":440,"context_line":"        LOG.debug(_(\"Active zone set from fabric: %s\"), cfgmap)"},{"line_number":441,"context_line":"        return cfgmap"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9T8o%3D","line":439,"updated":"2013-12-12 19:11:18.000000000","message":"use the same message for the log and exception if possible.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":436,"context_line":"        except Exception as e:"},{"line_number":437,"context_line":"            LOG.error(str(e))"},{"line_number":438,"context_line":"            msg \u003d _(\"Failed to access active zoning configuration\")"},{"line_number":439,"context_line":"            raise exception.FCZoneDriverException(msg)"},{"line_number":440,"context_line":"        LOG.debug(_(\"Active zone set from fabric: %s\"), cfgmap)"},{"line_number":441,"context_line":"        return cfgmap"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FhFA%3D","line":439,"in_reply_to":"AAAATn%2F9T8o%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"70e5d74ca68260cb84e342a7fe5aacb4d35a1929","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    (c) Copyright 2013 Brocade Communications Systems Inc."},{"line_number":4,"context_line":"#    All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FOw8%3D","line":1,"updated":"2014-01-16 05:46:08.000000000","message":"Remove vim: modeline.","commit_id":"060373bb05199dc09605b139267329d6aa69b307"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"d620405b1b019ad282ee72f026e0525d774a08cf","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    (c) Copyright 2013 Brocade Communications Systems Inc."},{"line_number":4,"context_line":"#    All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FI5k%3D","line":1,"in_reply_to":"AAAAUH%2F%2FOw8%3D","updated":"2014-01-17 02:55:09.000000000","message":"Done for all files with patch 26. Also, updated copyright for all files.","commit_id":"060373bb05199dc09605b139267329d6aa69b307"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"8199f9178261dc59035c9ee90977301fa5f7b909","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        :param initiator_target_map: Mapping of initiator to list of targets"},{"line_number":172,"context_line":"        \"\"\""},{"line_number":173,"context_line":"        @lockutils.synchronized(fabric, \u0027fcfabric-\u0027, True)"},{"line_number":174,"context_line":"        def do_add_connection():"},{"line_number":175,"context_line":"            LOG.debug(_(\"Add connection for Fabric:%s\"), fabric)"},{"line_number":176,"context_line":"            LOG.info(_(\"BrcdFCZoneDriver - Add connection \""},{"line_number":177,"context_line":"                       \"for I-T map: %s\"), initiator_target_map)"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUX%2F%2FOaE%3D","line":174,"updated":"2014-02-14 18:21:15.000000000","message":"I don\u0027t see the purpose of having an inner function here, when the outer add_connection only calls the inner function.  \nAdd the locking to the main entry point here (add_connection).\n\nThere is no need for do_add_connection.","commit_id":"9514602e3d08d24edf19ed916817b94e051adcfa"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"32d949d21139966786d381ff756a7e293df3fa69","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        :param initiator_target_map: Mapping of initiator to list of targets"},{"line_number":172,"context_line":"        \"\"\""},{"line_number":173,"context_line":"        @lockutils.synchronized(fabric, \u0027fcfabric-\u0027, True)"},{"line_number":174,"context_line":"        def do_add_connection():"},{"line_number":175,"context_line":"            LOG.debug(_(\"Add connection for Fabric:%s\"), fabric)"},{"line_number":176,"context_line":"            LOG.info(_(\"BrcdFCZoneDriver - Add connection \""},{"line_number":177,"context_line":"                       \"for I-T map: %s\"), initiator_target_map)"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUX%2F%2FMDM%3D","line":174,"in_reply_to":"AAAAUX%2F%2FOaE%3D","updated":"2014-02-15 01:46:42.000000000","message":"Done","commit_id":"9514602e3d08d24edf19ed916817b94e051adcfa"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"8199f9178261dc59035c9ee90977301fa5f7b909","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        :param initiator_target_map: Mapping of initiator to list of targets"},{"line_number":289,"context_line":"        \"\"\""},{"line_number":290,"context_line":"        @lockutils.synchronized(fabric, \u0027fcfabric-\u0027, True)"},{"line_number":291,"context_line":"        def do_delete_connection():"},{"line_number":292,"context_line":"            LOG.debug(_(\"Delete connection for fabric:%s\"), fabric)"},{"line_number":293,"context_line":"            LOG.info(_(\"BrcdFCZoneDriver - Delete connection for I-T map: %s\"),"},{"line_number":294,"context_line":"                     initiator_target_map)"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUX%2F%2FOZs%3D","line":291,"updated":"2014-02-14 18:21:15.000000000","message":"Same as above.  no reason for do_delete_connection","commit_id":"9514602e3d08d24edf19ed916817b94e051adcfa"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"32d949d21139966786d381ff756a7e293df3fa69","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        :param initiator_target_map: Mapping of initiator to list of targets"},{"line_number":289,"context_line":"        \"\"\""},{"line_number":290,"context_line":"        @lockutils.synchronized(fabric, \u0027fcfabric-\u0027, True)"},{"line_number":291,"context_line":"        def do_delete_connection():"},{"line_number":292,"context_line":"            LOG.debug(_(\"Delete connection for fabric:%s\"), fabric)"},{"line_number":293,"context_line":"            LOG.info(_(\"BrcdFCZoneDriver - Delete connection for I-T map: %s\"),"},{"line_number":294,"context_line":"                     initiator_target_map)"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUX%2F%2FMDI%3D","line":291,"in_reply_to":"AAAAUX%2F%2FOZs%3D","updated":"2014-02-15 01:46:42.000000000","message":"Done","commit_id":"9514602e3d08d24edf19ed916817b94e051adcfa"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"85a5b1e03244c71dff835743887841a93b850902","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            base_san_opts \u003d []"},{"line_number":80,"context_line":"            if not fabric_names:"},{"line_number":81,"context_line":"                base_san_opts.append("},{"line_number":82,"context_line":"                    cfg.StrOpt(\u0027fc_fabric_names\u0027, default\u003dNone,"},{"line_number":83,"context_line":"                               help\u003d\u0027Comma separated list of fibre channel \u0027"},{"line_number":84,"context_line":"                               \u0027fabric names. This list of names is used to\u0027"},{"line_number":85,"context_line":"                               \u0027 retrieve other SAN credentials for connecting\u0027"}],"source_content_type":"text/x-python","patch_set":36,"id":"AAAAUX%2F%2BzKE%3D","line":82,"updated":"2014-02-19 00:01:51.000000000","message":"Why are we redeclaring these here?   These options are already declared in fc_zone_driver.py and fc_common.py.\n\nWe should avoid duplicate code.","commit_id":"effb5016633250c79357eadc8cd2443c9f39074e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"85a5b1e03244c71dff835743887841a93b850902","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                               ))"},{"line_number":88,"context_line":"            if not activate:"},{"line_number":89,"context_line":"                base_san_opts.append("},{"line_number":90,"context_line":"                    cfg.BoolOpt(\u0027zone_activate\u0027,"},{"line_number":91,"context_line":"                                default\u003dTrue,"},{"line_number":92,"context_line":"                                help\u003d\u0027Indicates whether zone should \u0027"},{"line_number":93,"context_line":"                                \u0027be activated or not\u0027))"}],"source_content_type":"text/x-python","patch_set":36,"id":"AAAAUX%2F%2BzJ8%3D","line":90,"updated":"2014-02-19 00:01:51.000000000","message":"same.","commit_id":"effb5016633250c79357eadc8cd2443c9f39074e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"85a5b1e03244c71dff835743887841a93b850902","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                                \u0027be activated or not\u0027))"},{"line_number":94,"context_line":"            if not prefix:"},{"line_number":95,"context_line":"                base_san_opts.append("},{"line_number":96,"context_line":"                    cfg.StrOpt(\u0027zone_name_prefix\u0027,"},{"line_number":97,"context_line":"                               default\u003d\"openstack\","},{"line_number":98,"context_line":"                               help\u003d\"A prefix to be used when naming zone\"))"},{"line_number":99,"context_line":"            if len(base_san_opts) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":36,"id":"AAAAUX%2F%2BzJs%3D","line":96,"updated":"2014-02-19 00:01:51.000000000","message":"same","commit_id":"effb5016633250c79357eadc8cd2443c9f39074e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"85a5b1e03244c71dff835743887841a93b850902","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            # There can be more than one SAN in the network and we need to"},{"line_number":105,"context_line":"            # get credentials for each SAN."},{"line_number":106,"context_line":"            if fabric_names:"},{"line_number":107,"context_line":"                for fabric_name in fabric_names:"},{"line_number":108,"context_line":"                    fc_fabric_opts.append(cfg.StrOpt(\u0027fc_fabric_address_\u0027"},{"line_number":109,"context_line":"                                                     + fabric_name,"},{"line_number":110,"context_line":"                                                     default\u003d\u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"AAAAUX%2F%2BzIc%3D","line":107,"updated":"2014-02-19 00:01:51.000000000","message":"I think there is a better way of doing this.  We should be using groups for this.  For example, we could have cinder.conf entries like this:\n\nfc_enabled_fabrics\u003dBRCD_FAB_1,BRCD_FAB_2\n\n[BRCD_FAB_1]\nfc_fabric_address \u003d 10.10.0.1\nfc_fabric_user \u003d user\nfc_fabric_password \u003d password\n...\n[BRCD_FAB_2]\nfc_fabric_address \u003d 10.10.0.2\nfc_fabric_user \u003d user1\nfc_fabric_password \u003d password2\n...","commit_id":"effb5016633250c79357eadc8cd2443c9f39074e"}],"cinder/zonemanager/drivers/brocade/fc_zone_constants.py":[{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"6fdaf4bdc83150e75ac9d78be4db33442fc82da6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"SUCCESS \u003d \u0027Success\u0027"},{"line_number":34,"context_line":"TRANS_ABORTABLE \u003d \u0027It is abortable\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"#CLI Commands"},{"line_number":37,"context_line":"GET_ACTIVE_ZONE_CFG \u003d \u0027cfgactvshow\u0027"},{"line_number":38,"context_line":"ZONE_CREATE \u003d \u0027zonecreate\u0027 + SPACE"},{"line_number":39,"context_line":"ZONESET_CREATE \u003d \u0027cfgcreate\u0027 + SPACE"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2Fp6k%3D","line":36,"updated":"2013-09-01 09:06:01.000000000","message":"Nit: Change comment style to same as above?","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":"Common constants used by Brocade FC Zone Driver"},{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":"EMPTY \u003d \u0027\u0027"},{"line_number":26,"context_line":"SPACE \u003d \u0027 \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qPc%3D","line":23,"updated":"2013-12-09 06:39:26.000000000","message":"SHould end with period","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":"Common constants used by Brocade FC Zone Driver"},{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":"EMPTY \u003d \u0027\u0027"},{"line_number":26,"context_line":"SPACE \u003d \u0027 \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9law%3D","line":23,"in_reply_to":"AAAATn%2F9qPc%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"TRANS_ABORTABLE \u003d \u0027It is abortable\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"\"\"\""},{"line_number":37,"context_line":"CLI Commands for FC zoning operations"},{"line_number":38,"context_line":"\"\"\""},{"line_number":39,"context_line":"GET_ACTIVE_ZONE_CFG \u003d \u0027cfgactvshow\u0027"},{"line_number":40,"context_line":"ZONE_CREATE \u003d \u0027zonecreate\u0027 + SPACE"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qPg%3D","line":37,"updated":"2013-12-09 06:39:26.000000000","message":"Docstring should end with period","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":34,"context_line":"TRANS_ABORTABLE \u003d \u0027It is abortable\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"\"\"\""},{"line_number":37,"context_line":"CLI Commands for FC zoning operations"},{"line_number":38,"context_line":"\"\"\""},{"line_number":39,"context_line":"GET_ACTIVE_ZONE_CFG \u003d \u0027cfgactvshow\u0027"},{"line_number":40,"context_line":"ZONE_CREATE \u003d \u0027zonecreate\u0027 + SPACE"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9las%3D","line":37,"in_reply_to":"AAAATn%2F9qPg%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":"EMPTY \u003d \u0027\u0027"},{"line_number":26,"context_line":"SPACE \u003d \u0027 \u0027"},{"line_number":27,"context_line":"COMMA \u003d \u0027,\u0027"},{"line_number":28,"context_line":"YES \u003d \u0027y\u0027"},{"line_number":29,"context_line":"ACTIVE_ZONE_CONFIG \u003d \u0027active_zone_config\u0027"},{"line_number":30,"context_line":"CFG_ZONESET \u003d \u0027cfg:\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TV4%3D","line":27,"updated":"2013-12-12 22:46:11.000000000","message":"Are these constants really adding much clarity to the code?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":"EMPTY \u003d \u0027\u0027"},{"line_number":26,"context_line":"SPACE \u003d \u0027 \u0027"},{"line_number":27,"context_line":"COMMA \u003d \u0027,\u0027"},{"line_number":28,"context_line":"YES \u003d \u0027y\u0027"},{"line_number":29,"context_line":"ACTIVE_ZONE_CONFIG \u003d \u0027active_zone_config\u0027"},{"line_number":30,"context_line":"CFG_ZONESET \u003d \u0027cfg:\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FaDw%3D","line":27,"in_reply_to":"AAAATn%2F9TV4%3D","updated":"2014-01-16 04:55:14.000000000","message":"Removed them","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":39,"context_line":"GET_ACTIVE_ZONE_CFG \u003d \u0027cfgactvshow\u0027"},{"line_number":40,"context_line":"ZONE_CREATE \u003d \u0027zonecreate\u0027 + SPACE"},{"line_number":41,"context_line":"ZONESET_CREATE \u003d \u0027cfgcreate\u0027 + SPACE"},{"line_number":42,"context_line":"CFG_SAVE \u003d \u0027cfgsave\u0027"},{"line_number":43,"context_line":"CFG_ADD \u003d \u0027cfgadd\u0027 + SPACE"},{"line_number":44,"context_line":"ACTIVATE_ZONESET \u003d \u0027cfgenable\u0027 + SPACE"},{"line_number":45,"context_line":"DEACTIVATE_ZONESET \u003d \u0027cfgdisable\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TVc%3D","line":42,"updated":"2013-12-12 22:46:11.000000000","message":"Same here - it might be easier to just embed the commands in the code, all this does is add a level of indirection when trying to find out which commands are actually being executed.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"GET_ACTIVE_ZONE_CFG \u003d \u0027cfgactvshow\u0027"},{"line_number":40,"context_line":"ZONE_CREATE \u003d \u0027zonecreate\u0027 + SPACE"},{"line_number":41,"context_line":"ZONESET_CREATE \u003d \u0027cfgcreate\u0027 + SPACE"},{"line_number":42,"context_line":"CFG_SAVE \u003d \u0027cfgsave\u0027"},{"line_number":43,"context_line":"CFG_ADD \u003d \u0027cfgadd\u0027 + SPACE"},{"line_number":44,"context_line":"ACTIVATE_ZONESET \u003d \u0027cfgenable\u0027 + SPACE"},{"line_number":45,"context_line":"DEACTIVATE_ZONESET \u003d \u0027cfgdisable\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FaDU%3D","line":42,"in_reply_to":"AAAATn%2F9TVc%3D","updated":"2014-01-16 04:55:14.000000000","message":"I felt it is cleaner to keep the commands in one place for easy reference. But if it improves readability by embedding in the code, I can look into it. I have started changing in some places.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e49a56306b5fa82e2d12a47b9fd529504e9330ed","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":"Common constants used by Brocade FC Zone Driver."},{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":"EMPTY \u003d \u0027\u0027"},{"line_number":26,"context_line":"SPACE \u003d \u0027 \u0027"},{"line_number":27,"context_line":"COMMA \u003d \u0027,\u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Fkm8%3D","line":24,"updated":"2014-01-10 22:06:01.000000000","message":"Why do we need constants for space comma characters?  This is overkill and needless.","commit_id":"9e37fbf50e9d0b6e5505d5ac3c9ce1f2e07b9f7a"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"7e111c0165d31b4457896a8ca12c83cf2326b1dc","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":"Common constants used by Brocade FC Zone Driver."},{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":"EMPTY \u003d \u0027\u0027"},{"line_number":26,"context_line":"SPACE \u003d \u0027 \u0027"},{"line_number":27,"context_line":"COMMA \u003d \u0027,\u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2FUwE%3D","line":24,"in_reply_to":"AAAAUH%2F%2Fkm8%3D","updated":"2014-01-16 04:58:13.000000000","message":"Done","commit_id":"9e37fbf50e9d0b6e5505d5ac3c9ce1f2e07b9f7a"}],"cinder/zonemanager/drivers/fc_common.py":[{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class FCCommon(object):"},{"line_number":33,"context_line":"    \"\"\"Common interface for FC operations\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __init__(self, **kwargs):"},{"line_number":36,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qPY%3D","line":33,"updated":"2013-12-09 06:39:26.000000000","message":"end with period","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class FCCommon(object):"},{"line_number":33,"context_line":"    \"\"\"Common interface for FC operations\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __init__(self, **kwargs):"},{"line_number":36,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lag%3D","line":33,"in_reply_to":"AAAATn%2F9qPY%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from oslo.config import cfg"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"san_context_opts \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027fc_fabric_names\u0027, default\u003d\u0027\u0027, help\u003d\u0027FC Fabric names\u0027),"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fzE%3D","line":25,"updated":"2013-12-10 23:00:15.000000000","message":"Need much better help description here.  What is this?","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from oslo.config import cfg"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"san_context_opts \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027fc_fabric_names\u0027, default\u003d\u0027\u0027, help\u003d\u0027FC Fabric names\u0027),"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X0E%3D","line":25,"updated":"2013-12-12 05:45:58.000000000","message":"Fibre Channel vs. \"FC\" in public text?  Also, is empty string a \u0027valid\u0027 default here?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from oslo.config import cfg"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"san_context_opts \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027fc_fabric_names\u0027, default\u003d\u0027\u0027, help\u003d\u0027FC Fabric names\u0027),"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4uQ%3D","line":25,"in_reply_to":"AAAATn%2F9T8Y%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from oslo.config import cfg"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"san_context_opts \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027fc_fabric_names\u0027, default\u003d\u0027\u0027, help\u003d\u0027FC Fabric names\u0027),"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TVA%3D","line":25,"in_reply_to":"AAAATn%2F9T8Y%3D","updated":"2013-12-12 22:46:11.000000000","message":"Yeah - this is important because these names define the expected configuration options that will be used later on.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from oslo.config import cfg"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"san_context_opts \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027fc_fabric_names\u0027, default\u003d\u0027\u0027, help\u003d\u0027FC Fabric names\u0027),"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4uM%3D","line":25,"in_reply_to":"AAAATn%2F9TVA%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from oslo.config import cfg"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"san_context_opts \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027fc_fabric_names\u0027, default\u003d\u0027\u0027, help\u003d\u0027FC Fabric names\u0027),"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9T8Y%3D","line":25,"in_reply_to":"AAAATn%2F9X0E%3D","updated":"2013-12-12 19:11:18.000000000","message":"Also need a better help description.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from oslo.config import cfg"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"san_context_opts \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027fc_fabric_names\u0027, default\u003d\u0027\u0027, help\u003d\u0027FC Fabric names\u0027),"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2F4uU%3D","line":25,"in_reply_to":"AAAATn%2F9X0E%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"}],"cinder/zonemanager/drivers/fc_zone_driver.py":[{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"5f371721cc8eebe1e522e97df9455a607f48d68a","unresolved":false,"context_lines":[{"line_number":39,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"fc_zone_opts \u003d ["},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027zone_activate\u0027,"},{"line_number":43,"context_line":"               default\u003d\"true\","},{"line_number":44,"context_line":"               help\u003d\"Indicates whether zone should be activated or not\"),"},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027zone_name_prefix\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2FgBk%3D","line":42,"updated":"2013-09-04 02:21:14.000000000","message":"Should use BoolOpt here and then default can be True.  This will allow parsing of true/True/false/False/1/0, etc.","commit_id":"6ee9db001918832d35187527ffafda0af540e0d1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"c7dc717c184685f795eb9f0b7a88e1e426d44d56","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def delete_connection(self, fabric, initiator_target_map):"},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        Abstract method to remove connection controll"},{"line_number":74,"context_line":"        All implementing drivers should provide concrete implementation"},{"line_number":75,"context_line":"        for this API"},{"line_number":76,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2Ff%2Fk%3D","line":73,"updated":"2013-09-04 02:24:14.000000000","message":"Oops - \"control\"","commit_id":"6ee9db001918832d35187527ffafda0af540e0d1"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class FCZoneDriver(object):"},{"line_number":58,"context_line":"    \"\"\"Interface to manage Connection control during attach/detach\"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def __init__(self, **kwargs):"},{"line_number":61,"context_line":"        LOG.debug(_(\"Initializing FCZoneDriver\"))"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeGU%3D","line":58,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstrings through out this file.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":8911,"name":"Sergey Vilgelm","email":"sergey@vilgelm.info","username":"sergey.vilgelm"},"change_message_id":"f2160beda8b36b46314d86c3824b417131499f3a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from oslo.config import cfg"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"from cinder.zonemanager.drivers.fc_common import FCCommon"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bwik%3D","line":38,"updated":"2013-11-20 16:03:36.000000000","message":"Blank line is not needed.","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5b4addc018e6621ef394a27608e97110d65b70a3","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from oslo.config import cfg"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"from cinder.zonemanager.drivers.fc_common import FCCommon"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bugg%3D","line":38,"in_reply_to":"AAAATn%2F%2Bwik%3D","updated":"2013-11-26 22:48:44.000000000","message":"Done","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def add_connection(self, fabric, initiator_target_map):"},{"line_number":62,"context_line":"        \"\"\"Add connection control."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        Abstract method to add connection controll"},{"line_number":65,"context_line":"        All implementing drivers should provide concrete implementation"},{"line_number":66,"context_line":"        for this API"},{"line_number":67,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qPU%3D","line":64,"updated":"2013-12-09 06:39:26.000000000","message":"s/controll/control/\n\nEnd with dot too","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def add_connection(self, fabric, initiator_target_map):"},{"line_number":62,"context_line":"        \"\"\"Add connection control."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        Abstract method to add connection controll"},{"line_number":65,"context_line":"        All implementing drivers should provide concrete implementation"},{"line_number":66,"context_line":"        for this API"},{"line_number":67,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9laY%3D","line":64,"in_reply_to":"AAAATn%2F9qPU%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def delete_connection(self, fabric, initiator_target_map):"},{"line_number":71,"context_line":"        \"\"\"Delete connection control."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        Abstract method to remove connection controll"},{"line_number":74,"context_line":"        All implementing drivers should provide concrete implementation"},{"line_number":75,"context_line":"        for this API"},{"line_number":76,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qPQ%3D","line":73,"updated":"2013-12-09 06:39:26.000000000","message":"s/controll/control/\nEnd with dot too","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def delete_connection(self, fabric, initiator_target_map):"},{"line_number":71,"context_line":"        \"\"\"Delete connection control."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        Abstract method to remove connection controll"},{"line_number":74,"context_line":"        All implementing drivers should provide concrete implementation"},{"line_number":75,"context_line":"        for this API"},{"line_number":76,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9laU%3D","line":73,"in_reply_to":"AAAATn%2F9qPQ%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    def get_san_context(self, target_wwn_list):"},{"line_number":80,"context_line":"        \"\"\"Get SAN context for end devices."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        Abstract method to get SAN contexts for given list of end devices"},{"line_number":83,"context_line":"        All implementing drivers should provide concrete implementation"},{"line_number":84,"context_line":"        for this API"},{"line_number":85,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qPE%3D","line":82,"updated":"2013-12-09 06:39:26.000000000","message":"End with period","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    def get_san_context(self, target_wwn_list):"},{"line_number":80,"context_line":"        \"\"\"Get SAN context for end devices."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        Abstract method to get SAN contexts for given list of end devices"},{"line_number":83,"context_line":"        All implementing drivers should provide concrete implementation"},{"line_number":84,"context_line":"        for this API"},{"line_number":85,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lJA%3D","line":82,"in_reply_to":"AAAATn%2F9qPE%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    \"\"\"Interface to manage Connection control during attach/detach.\"\"\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def __init__(self, **kwargs):"},{"line_number":59,"context_line":"        LOG.debug(_(\"Initializing FCZoneDriver\"))"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def add_connection(self, fabric, initiator_target_map):"},{"line_number":62,"context_line":"        \"\"\"Add connection control."}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fpw%3D","line":59,"updated":"2013-12-10 23:00:15.000000000","message":"should call the parent\u0027s __init__ here, even if the parent does nothing just yet.","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    \"\"\"Interface to manage Connection control during attach/detach.\"\"\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def __init__(self, **kwargs):"},{"line_number":59,"context_line":"        LOG.debug(_(\"Initializing FCZoneDriver\"))"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def add_connection(self, fabric, initiator_target_map):"},{"line_number":62,"context_line":"        \"\"\"Add connection control."}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YHk%3D","line":59,"in_reply_to":"AAAATn%2F9fpw%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        LOG.debug(_(\"Initializing FCZoneDriver\"))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def add_connection(self, fabric, initiator_target_map):"},{"line_number":63,"context_line":"        \"\"\"Add connection control."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        Abstract method to add connection control."},{"line_number":66,"context_line":"        All implementing drivers should provide concrete implementation"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TUs%3D","line":63,"updated":"2013-12-12 22:46:11.000000000","message":"Could you provide an example of what structure you\u0027d expect initiator_target_map to have?  Ditto for the other calls.\n\nIn particular, be explicit about which WWPN formats you support - I think that you make some assumptions about upper/lower case in your code?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        LOG.debug(_(\"Initializing FCZoneDriver\"))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def add_connection(self, fabric, initiator_target_map):"},{"line_number":63,"context_line":"        \"\"\"Add connection control."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        Abstract method to add connection control."},{"line_number":66,"context_line":"        All implementing drivers should provide concrete implementation"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAT3%2F%2FunM%3D","line":63,"in_reply_to":"AAAATn%2F9TUs%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"}],"cinder/zonemanager/fc_san_lookup_service.py":[{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"5f371721cc8eebe1e522e97df9455a607f48d68a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":39,"context_line":"lookup_service_opts \u003d ["},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027fc_san_lookup_service\u0027,"},{"line_number":41,"context_line":"               default\u003dNone, help\u003d\u0027FC San Lookup Service\u0027),"},{"line_number":42,"context_line":"]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2FgAs%3D","line":41,"updated":"2013-09-04 02:21:14.000000000","message":"Should we default to the Brocade look-up service?  Looks like we defaulted to the Brocade ZoneManager, just wondering if there\u0027s a reason this is different?","commit_id":"6ee9db001918832d35187527ffafda0af540e0d1"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from cinder.volume.configuration import Configuration"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":39,"context_line":"lookup_service_opts \u003d ["},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027fc_san_lookup_service\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027cinder.zonemanager.drivers.brocade\u0027"},{"line_number":42,"context_line":"               \u0027.brcd_fc_san_lookup_service.BrcdFCSanLookupService\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeGI%3D","line":39,"updated":"2013-09-04 12:57:02.000000000","message":"two lines between top level code. Refer https://github.com/openstack-dev/hacking/blob/master/HACKING.rst.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"class FCSanLookupService(object):"},{"line_number":51,"context_line":"    \"\"\""},{"line_number":52,"context_line":"    Base Lookup Service for name server lookup to find the initiator to"},{"line_number":53,"context_line":"    target port mapping for available SAN contexts"},{"line_number":54,"context_line":"    \"\"\""},{"line_number":55,"context_line":"    lookup_service \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeGA%3D","line":52,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            lookup_service \u003d self.configuration.fc_san_lookup_service"},{"line_number":88,"context_line":"            LOG.debug(_(\"Lookup service to invoke: \""},{"line_number":89,"context_line":"                        \"%s\"), lookup_service)"},{"line_number":90,"context_line":"            self.lookup_service \u003d importutils.import_object("},{"line_number":91,"context_line":"                lookup_service, configuration\u003dself.configuration)"},{"line_number":92,"context_line":"        else:"},{"line_number":93,"context_line":"            LOG.error(_(\"Lookup Service not configured !\"))"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FcX0%3D","line":90,"updated":"2013-09-04 18:08:42.000000000","message":"should lookup_service load during __init__()?","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":8911,"name":"Sergey Vilgelm","email":"sergey@vilgelm.info","username":"sergey.vilgelm"},"change_message_id":"f2160beda8b36b46314d86c3824b417131499f3a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        if self.configuration:"},{"line_number":63,"context_line":"            self.configuration.append_config_values(lookup_service_opts)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _log_original_error(self, exc_info):"},{"line_number":66,"context_line":"        type_, value, tb \u003d exc_info"},{"line_number":67,"context_line":"        LOG.error(_(\u0027Error: %s\u0027) %"},{"line_number":68,"context_line":"                  traceback.format_exception(type_, value, tb))"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bwgc%3D","line":65,"updated":"2013-11-20 16:03:36.000000000","message":"Where are you using this function? I didn\u0027t find.","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5b4addc018e6621ef394a27608e97110d65b70a3","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        if self.configuration:"},{"line_number":63,"context_line":"            self.configuration.append_config_values(lookup_service_opts)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _log_original_error(self, exc_info):"},{"line_number":66,"context_line":"        type_, value, tb \u003d exc_info"},{"line_number":67,"context_line":"        LOG.error(_(\u0027Error: %s\u0027) %"},{"line_number":68,"context_line":"                  traceback.format_exception(type_, value, tb))"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bugc%3D","line":65,"in_reply_to":"AAAATn%2F%2Bwgc%3D","updated":"2013-11-26 22:48:44.000000000","message":"Removed unused function","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":19,"context_line":"#"},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":"Base Lookup Service for name server lookup to find the initiator to target port"},{"line_number":22,"context_line":"mapping for available SAN contexts"},{"line_number":23,"context_line":"Vendor specific lookup classes are expected to implement the interfaces"},{"line_number":24,"context_line":"defined in this class."},{"line_number":25,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qPA%3D","line":22,"updated":"2013-12-09 06:39:26.000000000","message":"End with dot","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":19,"context_line":"#"},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":"Base Lookup Service for name server lookup to find the initiator to target port"},{"line_number":22,"context_line":"mapping for available SAN contexts"},{"line_number":23,"context_line":"Vendor specific lookup classes are expected to implement the interfaces"},{"line_number":24,"context_line":"defined in this class."},{"line_number":25,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lZ4%3D","line":22,"in_reply_to":"AAAATn%2F9qPA%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class FCSanLookupService(object):"},{"line_number":52,"context_line":"    \"\"\"Base Lookup Service"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    Base Lookup Service for name server lookup to find the initiator to"},{"line_number":55,"context_line":"    target port mapping for available SAN contexts"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qO8%3D","line":52,"updated":"2013-12-09 06:39:26.000000000","message":"End with dot","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class FCSanLookupService(object):"},{"line_number":52,"context_line":"    \"\"\"Base Lookup Service"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    Base Lookup Service for name server lookup to find the initiator to"},{"line_number":55,"context_line":"    target port mapping for available SAN contexts"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lZ0%3D","line":52,"in_reply_to":"AAAATn%2F9qO8%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    \"\"\"Base Lookup Service"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    Base Lookup Service for name server lookup to find the initiator to"},{"line_number":55,"context_line":"    target port mapping for available SAN contexts"},{"line_number":56,"context_line":"    \"\"\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    lookup_service \u003d None"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qO0%3D","line":55,"updated":"2013-12-09 06:39:26.000000000","message":"End with dot","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    \"\"\"Base Lookup Service"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    Base Lookup Service for name server lookup to find the initiator to"},{"line_number":55,"context_line":"    target port mapping for available SAN contexts"},{"line_number":56,"context_line":"    \"\"\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    lookup_service \u003d None"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lZw%3D","line":55,"in_reply_to":"AAAATn%2F9qO0%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"d837a32358eb66fbf53988c664dd46a1805efa6a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.configuration.append_config_values(lookup_service_opts)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def get_device_mapping_from_network(self, initiator_list, target_list):"},{"line_number":66,"context_line":"        \"\"\"Get device mapping from FC network"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        Gets a filtered list of initiator ports and target ports for each SAN"},{"line_number":69,"context_line":"        available."}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9qOw%3D","line":66,"updated":"2013-12-09 06:39:26.000000000","message":"End with dot","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"b16fe360eb94b16e6e8b02b2870f403b4d34c1cd","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.configuration.append_config_values(lookup_service_opts)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def get_device_mapping_from_network(self, initiator_list, target_list):"},{"line_number":66,"context_line":"        \"\"\"Get device mapping from FC network"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        Gets a filtered list of initiator ports and target ports for each SAN"},{"line_number":69,"context_line":"        available."}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9lZo%3D","line":66,"in_reply_to":"AAAATn%2F9qOw%3D","updated":"2013-12-10 01:16:06.000000000","message":"Done","commit_id":"e6aa1a9213437a59933548196d0cb68334d5e72d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":25,"context_line":"\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"import traceback"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from oslo.config import cfg"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fqM%3D","line":28,"updated":"2013-12-10 23:00:15.000000000","message":"unused import","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":25,"context_line":"\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"import traceback"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from oslo.config import cfg"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YHc%3D","line":28,"in_reply_to":"AAAATn%2F9fqM%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from oslo.config import cfg"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from cinder import exception"},{"line_number":33,"context_line":"from cinder.openstack.common import excutils"},{"line_number":34,"context_line":"from cinder.openstack.common import importutils"},{"line_number":35,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":36,"context_line":"from cinder.volume.configuration import Configuration"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fqE%3D","line":33,"updated":"2013-12-10 23:00:15.000000000","message":"unused import","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from oslo.config import cfg"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from cinder import exception"},{"line_number":33,"context_line":"from cinder.openstack.common import excutils"},{"line_number":34,"context_line":"from cinder.openstack.common import importutils"},{"line_number":35,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":36,"context_line":"from cinder.volume.configuration import Configuration"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YHY%3D","line":33,"in_reply_to":"AAAATn%2F9fqE%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from cinder.openstack.common import excutils"},{"line_number":34,"context_line":"from cinder.openstack.common import importutils"},{"line_number":35,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":36,"context_line":"from cinder.volume.configuration import Configuration"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fqA%3D","line":36,"updated":"2013-12-10 23:00:15.000000000","message":"unused import","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from cinder.openstack.common import excutils"},{"line_number":34,"context_line":"from cinder.openstack.common import importutils"},{"line_number":35,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":36,"context_line":"from cinder.volume.configuration import Configuration"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YHU%3D","line":36,"in_reply_to":"AAAATn%2F9fqA%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        # Initialize vendor specific implementation of  FCZoneDriver"},{"line_number":81,"context_line":"        if (self.configuration.fc_san_lookup_service):"},{"line_number":82,"context_line":"            lookup_service \u003d self.configuration.fc_san_lookup_service"},{"line_number":83,"context_line":"            LOG.debug(_(\"Lookup service to invoke: \""},{"line_number":84,"context_line":"                        \"%s\"), lookup_service)"},{"line_number":85,"context_line":"            self.lookup_service \u003d importutils.import_object("},{"line_number":86,"context_line":"                lookup_service, configuration\u003dself.configuration)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9X0A%3D","line":83,"updated":"2013-12-12 05:45:58.000000000","message":"Don\u0027t translate debug.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        # Initialize vendor specific implementation of  FCZoneDriver"},{"line_number":81,"context_line":"        if (self.configuration.fc_san_lookup_service):"},{"line_number":82,"context_line":"            lookup_service \u003d self.configuration.fc_san_lookup_service"},{"line_number":83,"context_line":"            LOG.debug(_(\"Lookup service to invoke: \""},{"line_number":84,"context_line":"                        \"%s\"), lookup_service)"},{"line_number":85,"context_line":"            self.lookup_service \u003d importutils.import_object("},{"line_number":86,"context_line":"                lookup_service, configuration\u003dself.configuration)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Fco0%3D","line":83,"in_reply_to":"AAAATn%2F9X0A%3D","updated":"2014-01-16 04:55:14.000000000","message":"Skipping this comments as this is commonly done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        # Initialize vendor specific implementation of  FCZoneDriver"},{"line_number":81,"context_line":"        if (self.configuration.fc_san_lookup_service):"},{"line_number":82,"context_line":"            lookup_service \u003d self.configuration.fc_san_lookup_service"},{"line_number":83,"context_line":"            LOG.debug(_(\"Lookup service to invoke: \""},{"line_number":84,"context_line":"                        \"%s\"), lookup_service)"},{"line_number":85,"context_line":"            self.lookup_service \u003d importutils.import_object("},{"line_number":86,"context_line":"                lookup_service, configuration\u003dself.configuration)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9T8E%3D","line":83,"in_reply_to":"AAAATn%2F9X0A%3D","updated":"2013-12-12 19:11:18.000000000","message":"This is fine to do.  It\u0027s done elsewhere in Cinder.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                lookup_service, configuration\u003dself.configuration)"},{"line_number":87,"context_line":"        else:"},{"line_number":88,"context_line":"            LOG.error(_(\"Lookup Service not configured !\"))"},{"line_number":89,"context_line":"            raise Exception(\u0027No Lookup Service defined\u0027)"},{"line_number":90,"context_line":"        try:"},{"line_number":91,"context_line":"            device_map \u003d self.lookup_service.get_device_mapping_from_network("},{"line_number":92,"context_line":"                initiator_list, target_list)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9T70%3D","line":89,"updated":"2013-12-12 19:11:18.000000000","message":"Use the same message here for both the log and exception.\n\nAlso, it\u0027s worth creating a custom CinderException here.   We shouldn\u0027t ever be raising a generic Exception.  All exceptions raised need to be a child of CinderException.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                lookup_service, configuration\u003dself.configuration)"},{"line_number":87,"context_line":"        else:"},{"line_number":88,"context_line":"            LOG.error(_(\"Lookup Service not configured !\"))"},{"line_number":89,"context_line":"            raise Exception(\u0027No Lookup Service defined\u0027)"},{"line_number":90,"context_line":"        try:"},{"line_number":91,"context_line":"            device_map \u003d self.lookup_service.get_device_mapping_from_network("},{"line_number":92,"context_line":"                initiator_list, target_list)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Fp00%3D","line":89,"in_reply_to":"AAAATn%2F9T70%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"70e5d74ca68260cb84e342a7fe5aacb4d35a1929","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    (c) Copyright 2013 Brocade Communications Systems Inc."},{"line_number":4,"context_line":"#    All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FOw4%3D","line":1,"updated":"2014-01-16 05:46:08.000000000","message":"Remove vim modeline.","commit_id":"060373bb05199dc09605b139267329d6aa69b307"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"d620405b1b019ad282ee72f026e0525d774a08cf","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    (c) Copyright 2013 Brocade Communications Systems Inc."},{"line_number":4,"context_line":"#    All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FI5c%3D","line":1,"in_reply_to":"AAAAUH%2F%2FOw4%3D","updated":"2014-01-17 02:55:09.000000000","message":"Done for all files with patch 26","commit_id":"060373bb05199dc09605b139267329d6aa69b307"}],"cinder/zonemanager/fc_zone_manager.py":[{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"6fdaf4bdc83150e75ac9d78be4db33442fc82da6","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            LOG.info(_(\"Failed adding connection, {%s}\"), e)"},{"line_number":136,"context_line":"            raise exception.ZoneManagerException(reason\u003dstr(e))"},{"line_number":137,"context_line":"        LOG.info(_(\"Added access control successfully\"))"},{"line_number":138,"context_line":"        pass"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def delete_connection(self, initiator_target_map):"},{"line_number":141,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2Fp60%3D","line":138,"updated":"2013-09-01 09:06:01.000000000","message":"Delete this.","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"6fdaf4bdc83150e75ac9d78be4db33442fc82da6","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            LOG.info(_(\"Failed Removing connection, {%s}\"), e)"},{"line_number":178,"context_line":"            raise exception.ZoneManagerException(reason\u003dstr(e))"},{"line_number":179,"context_line":"        LOG.debug(_(\"Updated/deleted access control successfully\"))"},{"line_number":180,"context_line":"        pass"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def get_san_context(self, target_wwn_list):"},{"line_number":183,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2Fp6w%3D","line":180,"updated":"2013-09-01 09:06:01.000000000","message":"Delete this.","commit_id":"dd5bc5925870f93d50b5cbb5302ac034b7403ed0"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    def __init__(self, zone_driver\u003dNone, service_name\u003dNone, **kwargs):"},{"line_number":70,"context_line":"        driver_type \u003d kwargs[\u0027driver_volume_type\u0027]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        \"\"\"Load the driver from the one specified in args, or from flags.\"\"\""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self.configuration \u003d kwargs.get(\u0027configuration\u0027, None)"},{"line_number":75,"context_line":"        if self.configuration:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeFs%3D","line":72,"updated":"2013-09-04 12:57:02.000000000","message":"Fix method docstring within this file.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        fabric_map \u003d self.driver.get_san_context(target_wwn_list)"},{"line_number":185,"context_line":"        return fabric_map"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def get_valid_initiator_target_map(self, initiator_target_map,"},{"line_number":188,"context_line":"                                       add_control):"},{"line_number":189,"context_line":"        \"\"\""},{"line_number":190,"context_line":"        Looks up the reference count for each initiator-target pair from the"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FcUo%3D","line":187,"updated":"2013-09-04 18:08:42.000000000","message":"Is this function always return  the same initiator_target_map passed in? It seems the get_zoning_state_ref_count() will always return 0.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        return fabric_map"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def get_valid_initiator_target_map(self, initiator_target_map,"},{"line_number":188,"context_line":"                                       add_control):"},{"line_number":189,"context_line":"        \"\"\""},{"line_number":190,"context_line":"        Looks up the reference count for each initiator-target pair from the"},{"line_number":191,"context_line":"        map and returns a filtered list based on the operation type"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FcXE%3D","line":188,"updated":"2013-09-04 18:08:42.000000000","message":"better to use bool for add_control instead of string","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"5ff147bd651ddb9e17c042b13fc86c44b4ea3e25","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        for initiator in initiator_target_map.keys():"},{"line_number":197,"context_line":"            t_list \u003d initiator_target_map[initiator]"},{"line_number":198,"context_line":"            for target in t_list:"},{"line_number":199,"context_line":"                count \u003d self.get_zoning_state_ref_count(initiator, target)"},{"line_number":200,"context_line":"                if (add_control \u003d\u003d \u0027true\u0027):"},{"line_number":201,"context_line":"                    if (count \u003e 0):"},{"line_number":202,"context_line":"                        t_list.remove(target)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FcVk%3D","line":199,"updated":"2013-09-04 18:08:42.000000000","message":"count will always be 0 here.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"78b3b2173347aa632da69bc462f7c32f52d2bd97","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                    if (count \u003e 1):"},{"line_number":206,"context_line":"                        t_list.remove(target)"},{"line_number":207,"context_line":"                    # update count \u003d count - 1"},{"line_number":208,"context_line":"            if (len(t_list) \u003e 0):"},{"line_number":209,"context_line":"                filtered_i_t_map[initiator] \u003d t_list"},{"line_number":210,"context_line":"            else:"},{"line_number":211,"context_line":"                LOG.info(_(\"No targets to add or remove connection for \""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FeFk%3D","line":208,"updated":"2013-09-04 12:57:02.000000000","message":"if t_list: should be enough.","commit_id":"1cb3dcb9d11d570df2d0dc8e012ceb85ae57ddd9"},{"author":{"_account_id":8911,"name":"Sergey Vilgelm","email":"sergey@vilgelm.info","username":"sergey.vilgelm"},"change_message_id":"f2160beda8b36b46314d86c3824b417131499f3a","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        # check the state for I-T pair"},{"line_number":96,"context_line":"        return count"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _log_original_error(self, exc_info):"},{"line_number":99,"context_line":"        type_, value, tb \u003d exc_info"},{"line_number":100,"context_line":"        LOG.error(_(\u0027Error: %s\u0027) %"},{"line_number":101,"context_line":"                  traceback.format_exception(type_, value, tb))"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bwfk%3D","line":98,"updated":"2013-11-20 16:03:36.000000000","message":"ditto","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5b4addc018e6621ef394a27608e97110d65b70a3","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        # check the state for I-T pair"},{"line_number":96,"context_line":"        return count"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _log_original_error(self, exc_info):"},{"line_number":99,"context_line":"        type_, value, tb \u003d exc_info"},{"line_number":100,"context_line":"        LOG.error(_(\u0027Error: %s\u0027) %"},{"line_number":101,"context_line":"                  traceback.format_exception(type_, value, tb))"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BugY%3D","line":98,"in_reply_to":"AAAATn%2F%2Bwfk%3D","updated":"2013-11-26 22:48:44.000000000","message":"Removed","commit_id":"595bcade7947625b855c8426d4dada4c122c5951"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":34,"context_line":"\"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"import sys"},{"line_number":38,"context_line":"import traceback"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"from oslo.config import cfg"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fqc%3D","line":37,"updated":"2013-12-10 23:00:15.000000000","message":"unused import","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":34,"context_line":"\"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"import sys"},{"line_number":38,"context_line":"import traceback"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"from oslo.config import cfg"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YHA%3D","line":37,"in_reply_to":"AAAATn%2F9fqc%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"import sys"},{"line_number":38,"context_line":"import traceback"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"from oslo.config import cfg"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fqo%3D","line":38,"updated":"2013-12-10 23:00:15.000000000","message":"unused import","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"import sys"},{"line_number":38,"context_line":"import traceback"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"from oslo.config import cfg"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YG8%3D","line":38,"in_reply_to":"AAAATn%2F9fqo%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":42,"context_line":"from cinder import exception"},{"line_number":43,"context_line":"from cinder.openstack.common import importutils"},{"line_number":44,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":45,"context_line":"from cinder.volume.configuration import Configuration"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fqg%3D","line":45,"updated":"2013-12-10 23:00:15.000000000","message":"unused import","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":42,"context_line":"from cinder import exception"},{"line_number":43,"context_line":"from cinder.openstack.common import importutils"},{"line_number":44,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":45,"context_line":"from cinder.volume.configuration import Configuration"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YG4%3D","line":45,"in_reply_to":"AAAATn%2F9fqg%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    driver_type \u003d \u0027None\u0027"},{"line_number":67,"context_line":"    fabric_names \u003d []"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __init__(self, zone_driver\u003dNone, service_name\u003dNone, **kwargs):"},{"line_number":70,"context_line":"        driver_type \u003d kwargs[\u0027driver_volume_type\u0027]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        \"\"\"Load the driver from the one specified in args, or from flags.\"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fog%3D","line":69,"updated":"2013-12-10 23:00:15.000000000","message":"service_name isn\u0027t used here.","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    fabric_names \u003d []"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __init__(self, zone_driver\u003dNone, service_name\u003dNone, **kwargs):"},{"line_number":70,"context_line":"        driver_type \u003d kwargs[\u0027driver_volume_type\u0027]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        \"\"\"Load the driver from the one specified in args, or from flags.\"\"\""},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9foY%3D","line":70,"updated":"2013-12-10 23:00:15.000000000","message":"driver_type isn\u0027t used in this method.","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    fabric_names \u003d []"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __init__(self, zone_driver\u003dNone, service_name\u003dNone, **kwargs):"},{"line_number":70,"context_line":"        driver_type \u003d kwargs[\u0027driver_volume_type\u0027]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        \"\"\"Load the driver from the one specified in args, or from flags.\"\"\""},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YG0%3D","line":70,"in_reply_to":"AAAATn%2F9foY%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        driver_type \u003d kwargs[\u0027driver_volume_type\u0027]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        \"\"\"Load the driver from the one specified in args, or from flags.\"\"\""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self.configuration \u003d kwargs.get(\u0027configuration\u0027, None)"},{"line_number":75,"context_line":"        if self.configuration:"},{"line_number":76,"context_line":"            self.configuration.append_config_values(zone_manager_opts)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9fow%3D","line":73,"updated":"2013-12-10 23:00:15.000000000","message":"This string doc seems misplaced.","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        driver_type \u003d kwargs[\u0027driver_volume_type\u0027]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        \"\"\"Load the driver from the one specified in args, or from flags.\"\"\""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self.configuration \u003d kwargs.get(\u0027configuration\u0027, None)"},{"line_number":75,"context_line":"        if self.configuration:"},{"line_number":76,"context_line":"            self.configuration.append_config_values(zone_manager_opts)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YGw%3D","line":73,"in_reply_to":"AAAATn%2F9fow%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            zone_driver,"},{"line_number":84,"context_line":"            configuration\u003dself.configuration)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def get_zoning_state_ref_count(self, initiator_wwn, target_wwn):"},{"line_number":87,"context_line":"        \"\"\"Zone management state check."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        Performs state check for given I-T pair to return the current count of"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9foA%3D","line":86,"updated":"2013-12-10 23:00:15.000000000","message":"If this method isn\u0027t doing anything other than return 0 every time, why do we need it?","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            zone_driver,"},{"line_number":84,"context_line":"            configuration\u003dself.configuration)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def get_zoning_state_ref_count(self, initiator_wwn, target_wwn):"},{"line_number":87,"context_line":"        \"\"\"Zone management state check."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        Performs state check for given I-T pair to return the current count of"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YGk%3D","line":86,"in_reply_to":"AAAATn%2F9foA%3D","updated":"2013-12-12 05:02:29.000000000","message":"Place holder to add the state management logic and returns 0 to make sure the add/delete zone flow works fine for now.","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a81b9b2d8f5417935028786beda361c01aa94528","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        to list of target WWNs visible to the fabric."},{"line_number":183,"context_line":"        \"\"\""},{"line_number":184,"context_line":"        fabric_map \u003d self.driver.get_san_context(target_wwn_list)"},{"line_number":185,"context_line":"        LOG.debug(_(\"Got SAN context !!!\"))"},{"line_number":186,"context_line":"        return fabric_map"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def get_valid_initiator_target_map(self, initiator_target_map,"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9frw%3D","line":185,"updated":"2013-12-10 23:00:15.000000000","message":"remove","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"5522f66af468dd521007c3ee76fc98d8116de8ac","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        to list of target WWNs visible to the fabric."},{"line_number":183,"context_line":"        \"\"\""},{"line_number":184,"context_line":"        fabric_map \u003d self.driver.get_san_context(target_wwn_list)"},{"line_number":185,"context_line":"        LOG.debug(_(\"Got SAN context !!!\"))"},{"line_number":186,"context_line":"        return fabric_map"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def get_valid_initiator_target_map(self, initiator_target_map,"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9YGg%3D","line":185,"in_reply_to":"AAAATn%2F9frw%3D","updated":"2013-12-12 05:02:29.000000000","message":"Done","commit_id":"fa41862b9bf7bf5d029149caa2ca54ae71b740cf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        if self.configuration:"},{"line_number":69,"context_line":"            self.configuration.append_config_values(zone_manager_opts)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        zone_driver \u003d self.configuration.zone_driver"},{"line_number":72,"context_line":"        LOG.debug(_(\"Zone Driver from config: {%s}\"), zone_driver)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # Initialize vendor specific implementation of  FCZoneDriver"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9T7A%3D","line":71,"updated":"2013-12-12 19:11:18.000000000","message":"If we are getting the zone_driver from the configuration, then why does it exist as a parameter to the __init__ ?\n\nAlso, service_name doesn\u0027t seem to be used at all here.  Why is it it a param to __init__ ?","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        if self.configuration:"},{"line_number":69,"context_line":"            self.configuration.append_config_values(zone_manager_opts)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        zone_driver \u003d self.configuration.zone_driver"},{"line_number":72,"context_line":"        LOG.debug(_(\"Zone Driver from config: {%s}\"), zone_driver)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # Initialize vendor specific implementation of  FCZoneDriver"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FaHw%3D","line":71,"in_reply_to":"AAAATn%2F9T7A%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        or more target WWN:"},{"line_number":96,"context_line":"        eg:"},{"line_number":97,"context_line":"        {"},{"line_number":98,"context_line":"            \u002710008c7cff523b01\u0027: [\u002720240002ac000a50\u0027, \u002720240002ac000a40\u0027]"},{"line_number":99,"context_line":"        }"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TPo%3D","line":98,"updated":"2013-12-12 22:46:11.000000000","message":"When the Cinder driver worked out the mapping it wanted prior to calling us, it is likely that it already worked out which WWPNs were on which fabric, and might indeed have a good idea of what these zones should be called.\n\nCould this function support that capability, or perhaps it is a future item to provide an alternative API that is more explicit, mapping fabric names to a dictionary of name-\u003e[wwpn] pairs?  Not saying for this drop, but would be keen to know your thoughts.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        or more target WWN:"},{"line_number":96,"context_line":"        eg:"},{"line_number":97,"context_line":"        {"},{"line_number":98,"context_line":"            \u002710008c7cff523b01\u0027: [\u002720240002ac000a50\u0027, \u002720240002ac000a40\u0027]"},{"line_number":99,"context_line":"        }"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FaHM%3D","line":98,"in_reply_to":"AAAATn%2F9TPo%3D","updated":"2014-01-16 04:55:14.000000000","message":"Will look into it in future after the first drop.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"                # get SAN context for the target list"},{"line_number":107,"context_line":"                fabric_map \u003d self.get_san_context(target_list)"},{"line_number":108,"context_line":"                LOG.info(_(\"Fabric Map after context lookup:%s\"), fabric_map)"},{"line_number":109,"context_line":"                # iterate over each SAN and apply connection control"},{"line_number":110,"context_line":"                for fabric in fabric_map.keys():"},{"line_number":111,"context_line":"                    t_list \u003d fabric_map[fabric]"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TQg%3D","line":108,"updated":"2013-12-12 22:46:11.000000000","message":"If this contains a full list of all zones on the fabric, it could be very large.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"                # get SAN context for the target list"},{"line_number":107,"context_line":"                fabric_map \u003d self.get_san_context(target_list)"},{"line_number":108,"context_line":"                LOG.info(_(\"Fabric Map after context lookup:%s\"), fabric_map)"},{"line_number":109,"context_line":"                # iterate over each SAN and apply connection control"},{"line_number":110,"context_line":"                for fabric in fabric_map.keys():"},{"line_number":111,"context_line":"                    t_list \u003d fabric_map[fabric]"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Fp0I%3D","line":108,"in_reply_to":"AAAATn%2F9TQg%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                    i_t_map \u003d {initiator: t_list}"},{"line_number":114,"context_line":"                    valid_i_t_map \u003d self.get_valid_initiator_target_map("},{"line_number":115,"context_line":"                        i_t_map, True)"},{"line_number":116,"context_line":"                    LOG.debug(_(\"Final filtered map for fabric: %s\"),"},{"line_number":117,"context_line":"                              {fabric: valid_i_t_map})"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"                    # Call driver to add connection control"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TSc%3D","line":116,"updated":"2013-12-12 22:46:11.000000000","message":"It feels as if we should be a little more explicit with LOG.info messages so that even if not in debug mode, you can see what zones are being created.  As it stands, without debug logging, you don\u0027t get much of value.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                    i_t_map \u003d {initiator: t_list}"},{"line_number":114,"context_line":"                    valid_i_t_map \u003d self.get_valid_initiator_target_map("},{"line_number":115,"context_line":"                        i_t_map, True)"},{"line_number":116,"context_line":"                    LOG.debug(_(\"Final filtered map for fabric: %s\"),"},{"line_number":117,"context_line":"                              {fabric: valid_i_t_map})"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"                    # Call driver to add connection control"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Fp0E%3D","line":116,"in_reply_to":"AAAATn%2F9TSc%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                       \"over all target list\"))"},{"line_number":124,"context_line":"        except Exception as e:"},{"line_number":125,"context_line":"            LOG.info(_(\"Failed adding connection, {%s}\"), e)"},{"line_number":126,"context_line":"            raise exception.ZoneManagerException(reason\u003dstr(e))"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def delete_connection(self, initiator_target_map):"},{"line_number":129,"context_line":"        \"\"\"Delete connection."}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9T6k%3D","line":126,"updated":"2013-12-12 19:11:18.000000000","message":"use the same message here between the log and the exception reason","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                       \"over all target list\"))"},{"line_number":124,"context_line":"        except Exception as e:"},{"line_number":125,"context_line":"            LOG.info(_(\"Failed adding connection, {%s}\"), e)"},{"line_number":126,"context_line":"            raise exception.ZoneManagerException(reason\u003dstr(e))"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def delete_connection(self, initiator_target_map):"},{"line_number":129,"context_line":"        \"\"\"Delete connection."}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FpzQ%3D","line":126,"in_reply_to":"AAAATn%2F9T6k%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7420,"name":"Geraint North","email":"geraint@geraintnorth.com","username":"geraintnorth"},"change_message_id":"0be2f5a56df799980f67b584983561357c6e75ba","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                            \"context: %s\"), fabric_map)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"                # iterate over each SAN and apply connection control"},{"line_number":151,"context_line":"                for fabric in fabric_map.keys():"},{"line_number":152,"context_line":"                    t_list \u003d fabric_map[fabric]"},{"line_number":153,"context_line":"                    # get valid I-T map to add connection control"},{"line_number":154,"context_line":"                    i_t_map \u003d {initiator: t_list}"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9TPU%3D","line":151,"updated":"2013-12-12 22:46:11.000000000","message":"Probably future (I can help with this), but it would be nice to zone the switches in parallel.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                            \"context: %s\"), fabric_map)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"                # iterate over each SAN and apply connection control"},{"line_number":151,"context_line":"                for fabric in fabric_map.keys():"},{"line_number":152,"context_line":"                    t_list \u003d fabric_map[fabric]"},{"line_number":153,"context_line":"                    # get valid I-T map to add connection control"},{"line_number":154,"context_line":"                    i_t_map \u003d {initiator: t_list}"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FaG4%3D","line":151,"in_reply_to":"AAAATn%2F9TPU%3D","updated":"2014-01-16 04:55:14.000000000","message":"Yes, parallel threads for each fabrics is an optimization we can target for future.","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"16743263fc07ce7f6faed8598ba8e192c059f7e0","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                        \" target list\"))"},{"line_number":166,"context_line":"        except Exception as e:"},{"line_number":167,"context_line":"            LOG.info(_(\"Failed Removing connection: %s\"), str(e))"},{"line_number":168,"context_line":"            raise exception.ZoneManagerException(reason\u003dstr(e))"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def get_san_context(self, target_wwn_list):"},{"line_number":171,"context_line":"        \"\"\"SAN lookup for end devices."}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9T6c%3D","line":168,"updated":"2013-12-12 19:11:18.000000000","message":"same message","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                        \" target list\"))"},{"line_number":166,"context_line":"        except Exception as e:"},{"line_number":167,"context_line":"            LOG.info(_(\"Failed Removing connection: %s\"), str(e))"},{"line_number":168,"context_line":"            raise exception.ZoneManagerException(reason\u003dstr(e))"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def get_san_context(self, target_wwn_list):"},{"line_number":171,"context_line":"        \"\"\"SAN lookup for end devices."}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FpzE%3D","line":168,"in_reply_to":"AAAATn%2F9T6c%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            for target in t_list:"},{"line_number":192,"context_line":"                count \u003d self.get_zoning_state_ref_count(initiator, target)"},{"line_number":193,"context_line":"                if add_control:"},{"line_number":194,"context_line":"                    if (count \u003e 0):"},{"line_number":195,"context_line":"                        t_list.remove(target)"},{"line_number":196,"context_line":"                    # update count \u003d count + 1"},{"line_number":197,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9Xz8%3D","line":194,"updated":"2013-12-12 05:45:58.000000000","message":"()s","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            for target in t_list:"},{"line_number":192,"context_line":"                count \u003d self.get_zoning_state_ref_count(initiator, target)"},{"line_number":193,"context_line":"                if add_control:"},{"line_number":194,"context_line":"                    if (count \u003e 0):"},{"line_number":195,"context_line":"                        t_list.remove(target)"},{"line_number":196,"context_line":"                    # update count \u003d count + 1"},{"line_number":197,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FpzA%3D","line":194,"in_reply_to":"AAAATn%2F9Xz8%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"65beff07653a782fdf1ac6884f7644e95708a576","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                        t_list.remove(target)"},{"line_number":196,"context_line":"                    # update count \u003d count + 1"},{"line_number":197,"context_line":"                else:"},{"line_number":198,"context_line":"                    if (count \u003e 1):"},{"line_number":199,"context_line":"                        t_list.remove(target)"},{"line_number":200,"context_line":"                    # update count \u003d count - 1"},{"line_number":201,"context_line":"            if t_list:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9Xz4%3D","line":198,"updated":"2013-12-12 05:45:58.000000000","message":"()s","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"9563ba05ee6cd467723586422e384875574b077d","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                        t_list.remove(target)"},{"line_number":196,"context_line":"                    # update count \u003d count + 1"},{"line_number":197,"context_line":"                else:"},{"line_number":198,"context_line":"                    if (count \u003e 1):"},{"line_number":199,"context_line":"                        t_list.remove(target)"},{"line_number":200,"context_line":"                    # update count \u003d count - 1"},{"line_number":201,"context_line":"            if t_list:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Fpy8%3D","line":198,"in_reply_to":"AAAATn%2F9Xz4%3D","updated":"2014-01-16 04:55:14.000000000","message":"Done","commit_id":"e6e812af2132114292cce82f580b5cde61724da1"},{"author":{"_account_id":9429,"name":"Jia Ming Zhang","email":"jmzhang@cn.ibm.com","username":"Lynxzh"},"change_message_id":"b7f61da7d9b350f74599f1ded4a5e8028d00cfa4","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                LOG.debug(_(\"Target List :%s\"), {initiator: target_list})"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"                # get SAN context for the target list"},{"line_number":106,"context_line":"                fabric_map \u003d self.get_san_context(target_list)"},{"line_number":107,"context_line":"                LOG.debug(_(\"Fabric Map after context lookup:%s\"), fabric_map)"},{"line_number":108,"context_line":"                # iterate over each SAN and apply connection control"},{"line_number":109,"context_line":"                for fabric in fabric_map.keys():"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAUX%2F%2BbmA%3D","line":106,"updated":"2014-02-22 08:48:42.000000000","message":"I suggest a direct call of: self.driver.get_san_context(target_list) which can remove a redundancy call of method.","commit_id":"ed48e1ba0fdfbcfa760a906017fb11c9e051b6c2"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"f8cf1f4e99bc81de10ec9c16f9e17929661711af","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                LOG.debug(_(\"Target List :%s\"), {initiator: target_list})"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"                # get SAN context for the target list"},{"line_number":106,"context_line":"                fabric_map \u003d self.get_san_context(target_list)"},{"line_number":107,"context_line":"                LOG.debug(_(\"Fabric Map after context lookup:%s\"), fabric_map)"},{"line_number":108,"context_line":"                # iterate over each SAN and apply connection control"},{"line_number":109,"context_line":"                for fabric in fabric_map.keys():"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAU3%2F%2F%2FWI%3D","line":106,"in_reply_to":"AAAAUX%2F%2BbmA%3D","updated":"2014-02-22 23:39:19.000000000","message":"Done","commit_id":"ed48e1ba0fdfbcfa760a906017fb11c9e051b6c2"},{"author":{"_account_id":9429,"name":"Jia Ming Zhang","email":"jmzhang@cn.ibm.com","username":"Lynxzh"},"change_message_id":"b7f61da7d9b350f74599f1ded4a5e8028d00cfa4","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                         {initiator: target_list})"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"                # get SAN context for the target list"},{"line_number":150,"context_line":"                fabric_map \u003d self.get_san_context(target_list)"},{"line_number":151,"context_line":"                LOG.debug(_(\"Delete connection Fabric Map from SAN \""},{"line_number":152,"context_line":"                            \"context: %s\"), fabric_map)"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAUX%2F%2Bbl4%3D","line":150,"updated":"2014-02-22 08:48:42.000000000","message":"I suggest a direct call of: self.driver.get_san_context(target_list) which can remove a redundancy call of method.","commit_id":"ed48e1ba0fdfbcfa760a906017fb11c9e051b6c2"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"f8cf1f4e99bc81de10ec9c16f9e17929661711af","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                         {initiator: target_list})"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"                # get SAN context for the target list"},{"line_number":150,"context_line":"                fabric_map \u003d self.get_san_context(target_list)"},{"line_number":151,"context_line":"                LOG.debug(_(\"Delete connection Fabric Map from SAN \""},{"line_number":152,"context_line":"                            \"context: %s\"), fabric_map)"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAU3%2F%2F%2FWE%3D","line":150,"in_reply_to":"AAAAUX%2F%2Bbl4%3D","updated":"2014-02-22 23:39:19.000000000","message":"Done","commit_id":"ed48e1ba0fdfbcfa760a906017fb11c9e051b6c2"},{"author":{"_account_id":9429,"name":"Jia Ming Zhang","email":"jmzhang@cn.ibm.com","username":"Lynxzh"},"change_message_id":"b7f61da7d9b350f74599f1ded4a5e8028d00cfa4","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            LOG.error(msg)"},{"line_number":176,"context_line":"            raise exception.ZoneManagerException(reason\u003dmsg)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def get_san_context(self, target_wwn_list):"},{"line_number":179,"context_line":"        \"\"\"SAN lookup for end devices."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        Look up each SAN configured and return a map of SAN (fabric IP)"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAUX%2F%2Bblw%3D","line":178,"updated":"2014-02-22 08:48:42.000000000","message":"this can be cleaned if the above 2 invocation place are bypassing.","commit_id":"ed48e1ba0fdfbcfa760a906017fb11c9e051b6c2"},{"author":{"_account_id":8439,"name":"Santhoshkumar Kolathur","email":"skolathu@brocade.com","username":"skolathu"},"change_message_id":"f8cf1f4e99bc81de10ec9c16f9e17929661711af","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            LOG.error(msg)"},{"line_number":176,"context_line":"            raise exception.ZoneManagerException(reason\u003dmsg)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def get_san_context(self, target_wwn_list):"},{"line_number":179,"context_line":"        \"\"\"SAN lookup for end devices."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        Look up each SAN configured and return a map of SAN (fabric IP)"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAU3%2F%2F%2FWA%3D","line":178,"in_reply_to":"AAAAUX%2F%2Bblw%3D","updated":"2014-02-22 23:39:19.000000000","message":"Done","commit_id":"ed48e1ba0fdfbcfa760a906017fb11c9e051b6c2"}]}
