)]}'
{"cinder/volume/targets/fibre_channel.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"6f4975bc3160f572f010654c4d4ed3f5911e3fa0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.protocol \u003d \u0027FC\u0027"},{"line_number":38,"context_line":"        self.volumes_dir \u003d self.configuration.safe_get(\u0027volumes_dir\u0027)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @abc.abstractmethod"},{"line_number":41,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":42,"context_line":"        \"\"\" Enables connection to provided connector."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_a485855a","line":40,"updated":"2015-06-10 19:44:32.000000000","message":"Is there a way to add the fczm_utils.AddFCZone here and have it get used by the driver?\n\nRight now, I have to make sure during review time, that FC drivers add the fczm_utils.AddFCZone decorator to their drivers to make use of the Zone Manager.","commit_id":"3f0a9b76a8801e415d454f5d69f6841b41f6e284"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"bb73992064a9ec1e9fa7a3038d1c6ea408b7c333","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.protocol \u003d \u0027FC\u0027"},{"line_number":38,"context_line":"        self.volumes_dir \u003d self.configuration.safe_get(\u0027volumes_dir\u0027)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @abc.abstractmethod"},{"line_number":41,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":42,"context_line":"        \"\"\" Enables connection to provided connector."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_5a1fc85a","line":40,"in_reply_to":"3afb71cf_44b251e6","updated":"2015-06-10 20:47:23.000000000","message":"Not that I\u0027m aware of, I messed with it a little then punted as it\u0027s iteration 1, and while i\u0027m sure there\u0027s a clever trick we could employ I don\u0027t want to spend a bunch of time trying it yet.","commit_id":"3f0a9b76a8801e415d454f5d69f6841b41f6e284"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"41cf08b23b0cec9b6c04475d758ccd47057ad9bd","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.protocol \u003d \u0027FC\u0027"},{"line_number":38,"context_line":"        self.volumes_dir \u003d self.configuration.safe_get(\u0027volumes_dir\u0027)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @abc.abstractmethod"},{"line_number":41,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":42,"context_line":"        \"\"\" Enables connection to provided connector."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_44b251e6","line":40,"in_reply_to":"3afb71cf_a485855a","updated":"2015-06-10 19:50:11.000000000","message":"That will be nice, but not sure if that will work as this method will be overridden by derived classes.","commit_id":"3f0a9b76a8801e415d454f5d69f6841b41f6e284"},{"author":{"_account_id":8757,"name":"Angela Smith","email":"angela.smith@broadcom.com","username":"asmith_brcd"},"change_message_id":"ef6a4089e5a6d493636acda1683c0125b127a955","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \"\"\" Enables connection to provided connector."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        This is the crux of an FC connection, we need to enable"},{"line_number":45,"context_line":"        the FC connection (use the zonemanager util deocorator:"},{"line_number":46,"context_line":"        AddFCZone) and return the connection info needed to the"},{"line_number":47,"context_line":"        caller."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_2b8de8d5","line":45,"updated":"2015-06-10 18:58:53.000000000","message":"spelling: decorator","commit_id":"3f0a9b76a8801e415d454f5d69f6841b41f6e284"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"f078c118a7592d31f1c1cc33603f08761b124206","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \"\"\" Enables connection to provided connector."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        This is the crux of an FC connection, we need to enable"},{"line_number":45,"context_line":"        the FC connection (use the zonemanager util deocorator:"},{"line_number":46,"context_line":"        AddFCZone) and return the connection info needed to the"},{"line_number":47,"context_line":"        caller."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_60d3f660","line":45,"in_reply_to":"3afb71cf_2b8de8d5","updated":"2015-06-10 20:49:26.000000000","message":"Done","commit_id":"3f0a9b76a8801e415d454f5d69f6841b41f6e284"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"6f4975bc3160f572f010654c4d4ed3f5911e3fa0","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":"        pass"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @abc.abstractmethod"},{"line_number":62,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":63,"context_line":"        \"\"\"Provides a mechanism to determine if zone can be removed."},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_c48ac163","line":61,"updated":"2015-06-10 19:44:32.000000000","message":"same with @fczm_utils.RemoveZone here.\n\nNot sure it\u0027s possible, but it would be nice to declare that decorator here, and any FC driver using this target would get it for free.","commit_id":"3f0a9b76a8801e415d454f5d69f6841b41f6e284"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"bb73992064a9ec1e9fa7a3038d1c6ea408b7c333","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":"        pass"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @abc.abstractmethod"},{"line_number":62,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":63,"context_line":"        \"\"\"Provides a mechanism to determine if zone can be removed."},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_da4a9854","line":61,"in_reply_to":"3afb71cf_c48ac163","updated":"2015-06-10 20:47:23.000000000","message":"same note as above :)\n\nOne thing we could look at in the \"future\" is fleshing out more of this call and have it use helper methods that have to be implemented in the inherited classes.\n\nI did look at that this morning but it involved a good deal of code rewrite which I didn\u0027t want to do","commit_id":"3f0a9b76a8801e415d454f5d69f6841b41f6e284"},{"author":{"_account_id":8757,"name":"Angela Smith","email":"angela.smith@broadcom.com","username":"asmith_brcd"},"change_message_id":"ef6a4089e5a6d493636acda1683c0125b127a955","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        Upon termination we check to with the device to see if it"},{"line_number":66,"context_line":"        has any open connections to this host, if it does NOT, then"},{"line_number":67,"context_line":"        we can go ahead and remove our zone by using the RemoeFCZone"},{"line_number":68,"context_line":"        decorator."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        return_example {"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_0b010c38","line":67,"updated":"2015-06-10 18:58:53.000000000","message":"spelling: Remove","commit_id":"3f0a9b76a8801e415d454f5d69f6841b41f6e284"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"f078c118a7592d31f1c1cc33603f08761b124206","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        Upon termination we check to with the device to see if it"},{"line_number":66,"context_line":"        has any open connections to this host, if it does NOT, then"},{"line_number":67,"context_line":"        we can go ahead and remove our zone by using the RemoeFCZone"},{"line_number":68,"context_line":"        decorator."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        return_example {"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_40d6ba4f","line":67,"in_reply_to":"3afb71cf_0b010c38","updated":"2015-06-10 20:49:26.000000000","message":"Done","commit_id":"3f0a9b76a8801e415d454f5d69f6841b41f6e284"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"0524a55ceb147f1ac5eb8e98ce47e717eef5e5d6","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.volumes_dir \u003d self.configuration.safe_get(\u0027volumes_dir\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @abc.abstractmethod"},{"line_number":42,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":43,"context_line":"        \"\"\"Enables connection to provided connector."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        This is the crux of an FC connection, we need to enable"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_fa77669d","line":42,"updated":"2015-06-11 18:01:08.000000000","message":"So if I understand the targets correctly, cinder volume drivers are supposed to use a target class to do the actual \u0027work\u0027 as defined by the target object itself.\n\nSo, can\u0027t we make the purpose of the FC Target object to call the fczm_utils.addFCZone ?\n\nFor example, the 3PAR FC driver\u0027s initialize_connection\u0027s job would be to export the volume on the 3PAR, collect the target information, and then \nreturn self.target_driver.initialize_connection(....)\n\nWe could then remove the decorators from the FC drivers and simply require that all FC based drivers make that call.\n\nreturn self.target_driver.initialize_connect(...)\n\nThe FC target object would do the work of calling the FCZM to add the zone.   Basically moving the contents of the fczm_utils.addFCZone until the FCTarget\u0027s initialize_connection.\n\nThe same could be true for terminate_connection ?","commit_id":"6c4f3d74bc665ee709e6afa04c29aaa567881b15"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"81b2a1f3556c30f72dc1fbe150ebb449adaa5461","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.volumes_dir \u003d self.configuration.safe_get(\u0027volumes_dir\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @abc.abstractmethod"},{"line_number":42,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":43,"context_line":"        \"\"\"Enables connection to provided connector."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        This is the crux of an FC connection, we need to enable"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_d056c9cd","line":42,"in_reply_to":"3afb71cf_7a9ff650","updated":"2015-06-11 18:50:53.000000000","message":"At a minimum i\u0027ve been asking in reviews that FC drivers add the fczm_utils decorators.  If they don\u0027t then there is no chance of that driver being used in a non open zoned, pre zoned environment, which isn\u0027t very \u0027cloudy\u0027 to begin with.","commit_id":"6c4f3d74bc665ee709e6afa04c29aaa567881b15"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"ceb2ddf82727080f7d87e7f783208da929400140","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.volumes_dir \u003d self.configuration.safe_get(\u0027volumes_dir\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @abc.abstractmethod"},{"line_number":42,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":43,"context_line":"        \"\"\"Enables connection to provided connector."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        This is the crux of an FC connection, we need to enable"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_7a9ff650","line":42,"in_reply_to":"3afb71cf_fa77669d","updated":"2015-06-11 18:09:49.000000000","message":"It\u0027s an abstract base class, so that doesn\u0027t work.  The whole idea is that this says \"Hey, I\u0027m here but I refuse to do anything.. I\u0027m not an impl and I\u0027m purely abstract.  You MUST implement me in your sub-class at which point everything here is ignored.\"\n\nI\u0027d like to figure out something here, but frankly don\u0027t know that it\u0027s really that important.  Especially considering it\u0027s like two methods that surely people would be able to deal with in reviews.  Also leads me to wonder if the decorator is such a good idea, if those had been static calls into the util module like everywhere else you could easily enforce it by building a method in the *this* class that calls it and then enforcing it at the mgr level to make sure it gets handled properly.\n\nAnyway, I haven\u0027t sorted through the details of what may or may not be better or worse (and what I just suggested might be way worse than what\u0027s already in place), but the bottom line is that I don\u0027t believe this should be an issue for this patch.\n\nAlso, I don\u0027t believe zone management should be a requirement anyway, I *thought* the zm code dealt with that if you just wanted a wide open Zone... but I better look again and make sure that decorator doesn\u0027t break that.","commit_id":"6c4f3d74bc665ee709e6afa04c29aaa567881b15"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"643941b9b568b88f253b202730143aa1d8409508","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        pass"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    # TODO(jdg): Consider going back and changing what\u0027s abc in the base class"},{"line_number":79,"context_line":"    # rather than have these N/A passes"},{"line_number":80,"context_line":"    def create_export(self, context, volume, volume_path):"},{"line_number":81,"context_line":"        pass"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_46881271","line":79,"updated":"2015-06-10 21:38:15.000000000","message":"If these are iscsi only shouldn\u0027t they be in the iscsi driver?  Seems like a lot of NOPs.","commit_id":"6c4f3d74bc665ee709e6afa04c29aaa567881b15"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"b8c3dfb66898be977eb5582d5a31e651d6010ece","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        pass"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    # TODO(jdg): Consider going back and changing what\u0027s abc in the base class"},{"line_number":79,"context_line":"    # rather than have these N/A passes"},{"line_number":80,"context_line":"    def create_export(self, context, volume, volume_path):"},{"line_number":81,"context_line":"        pass"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_76e17129","line":79,"in_reply_to":"3afb71cf_46881271","updated":"2015-06-11 04:07:59.000000000","message":"Agreed :)\n\nThe problem is that since abc tags were added to all of these methods in the base driver, they\u0027re \"required\" to be implemented.\n\nAt some point it would be better to modify the base driver and what it considers required abstract methods.  There\u0027s a bit of work there though to split some things out based on first glance though.","commit_id":"6c4f3d74bc665ee709e6afa04c29aaa567881b15"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"433afab920a7530b91551680045290a23fe4ca71","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        pass"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    # TODO(jdg): Consider going back and changing what\u0027s abc in the base class"},{"line_number":79,"context_line":"    # rather than have these N/A passes"},{"line_number":80,"context_line":"    def create_export(self, context, volume, volume_path):"},{"line_number":81,"context_line":"        pass"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_3ee61945","line":79,"in_reply_to":"3afb71cf_76e17129","updated":"2015-06-11 15:36:54.000000000","message":"This looks good  enough to work with and seems to define the only two functions that I have in the FC bit of my driver so it should be peachy.","commit_id":"6c4f3d74bc665ee709e6afa04c29aaa567881b15"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"81b2a1f3556c30f72dc1fbe150ebb449adaa5461","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        pass"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    # TODO(jdg): Consider going back and changing what\u0027s abc in the base class"},{"line_number":79,"context_line":"    # rather than have these N/A passes"},{"line_number":80,"context_line":"    def create_export(self, context, volume, volume_path):"},{"line_number":81,"context_line":"        pass"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_b0b7cdf4","line":79,"in_reply_to":"3afb71cf_76e17129","updated":"2015-06-11 18:50:53.000000000","message":"from what I can tell, only the following is defined in the base Target object\n\nensure_export\ncreate_export\nremove_export\ninitialize_connection\nterminate_connection \n\nSo can\u0027t we remove:\n\nvalidate_connector\nshow_target\n_get_target_and_lun\n_get_target_chap_auth \ncreate_iscsi_target\nremove_iscsi_target\n_get_iscsi_target\n_get_target","commit_id":"6c4f3d74bc665ee709e6afa04c29aaa567881b15"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"fdf4b8fb99659adeb5e38d4c38e92744fce9c67b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        pass"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    # TODO(jdg): Consider going back and changing what\u0027s abc in the base class"},{"line_number":79,"context_line":"    # rather than have these N/A passes"},{"line_number":80,"context_line":"    def create_export(self, context, volume, volume_path):"},{"line_number":81,"context_line":"        pass"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_5fe30534","line":79,"in_reply_to":"3afb71cf_b0b7cdf4","updated":"2015-06-11 20:24:06.000000000","message":"Oh... OOPS!!  Yeah, most of these I don\u0027t need here; my bad; workign on the iscsi at the same time I confused my patches ;)","commit_id":"6c4f3d74bc665ee709e6afa04c29aaa567881b15"}]}
