)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"233784059744e6cb95ecb1ab5b48dc5213ef77fa","unresolved":false,"context_lines":[{"line_number":12,"context_line":"to store their config in a HA storage."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements: blueprint ganesha-ha-rados"},{"line_number":15,"context_line":"DocImpact"},{"line_number":16,"context_line":"Change-Id: Ia51156055fa10d0661e662c9c998829864f1a204"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"df87a7cf_93d8707b","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":9},"updated":"2017-12-08 02:30:00.000000000","message":"Do you need to change another doc? if not, you should just remove the DocImpact tag. Because it will automatically generate a another bug about fix the doc after this patch merged if you add DocImpact in this patch commit message.\n\nsuch as: https://bugs.launchpad.net/manila/+bug/1707005","commit_id":"4a709b47619075502823d84d95e598e4ae00c0c0"}],"doc/source/admin/cephfs_driver.rst":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"34eb1e0e4b5f5a7f193d718ed023e7315e149091","unresolved":false,"context_lines":[{"line_number":289,"context_line":"With NFS-Ganesha (v2.5.4 or later), Ceph (v12.2.2 or later), the driver (Queens"},{"line_number":290,"context_line":"or later) can store NFS-Ganesha exports and export counter in Ceph RADOS"},{"line_number":291,"context_line":"objects. This is useful for highly available NFS-Ganesha deployments to store"},{"line_number":292,"context_line":"its configuration efficiently in an already available distributed storage sytem."},{"line_number":293,"context_line":"Set additional options in the NFS driver section to enable the driver to do"},{"line_number":294,"context_line":"this."},{"line_number":295,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_d72fe43c","line":292,"range":{"start_line":292,"start_character":74,"end_line":292,"end_character":79},"updated":"2017-12-07 07:33:56.000000000","message":"nit: s/sytem/system","commit_id":"44be540cd3d35ecc7f6a7772db14e7159c2a8140"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"d25d013b3eb24b734dd8972f5775f6c0f4f77b7f","unresolved":false,"context_lines":[{"line_number":289,"context_line":"With NFS-Ganesha (v2.5.4 or later), Ceph (v12.2.2 or later), the driver (Queens"},{"line_number":290,"context_line":"or later) can store NFS-Ganesha exports and export counter in Ceph RADOS"},{"line_number":291,"context_line":"objects. This is useful for highly available NFS-Ganesha deployments to store"},{"line_number":292,"context_line":"its configuration efficiently in an already available distributed storage sytem."},{"line_number":293,"context_line":"Set additional options in the NFS driver section to enable the driver to do"},{"line_number":294,"context_line":"this."},{"line_number":295,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_93ce4780","line":292,"range":{"start_line":292,"start_character":74,"end_line":292,"end_character":79},"in_reply_to":"df87a7cf_d72fe43c","updated":"2017-12-07 15:22:55.000000000","message":"Done","commit_id":"44be540cd3d35ecc7f6a7772db14e7159c2a8140"}],"doc/source/contributor/ganesha.rst":[{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"d0f2fd16528598d2fc7e789b58ac29e63488a168","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"To allow Ganesha to read from RADOS objects add the below code block in"},{"line_number":114,"context_line":"ganesha\u0027s configuration file, substituting values per your setup. Make sure"},{"line_number":115,"context_line":"to create the Ganesha export index object as an empty object before starting"},{"line_number":116,"context_line":"the Ganesha server."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":".. code-block:: console"}],"source_content_type":"text/x-rst","patch_set":12,"id":"df87a7cf_14d6f3c6","line":115,"updated":"2017-12-06 21:38:24.000000000","message":"Can we add a sample for this?","commit_id":"00d0c036f399cf453e3fd586c5d834b6961d29fe"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"d25d013b3eb24b734dd8972f5775f6c0f4f77b7f","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"To allow Ganesha to read from RADOS objects add the below code block in"},{"line_number":114,"context_line":"ganesha\u0027s configuration file, substituting values per your setup. Make sure"},{"line_number":115,"context_line":"to create the Ganesha export index object as an empty object before starting"},{"line_number":116,"context_line":"the Ganesha server."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":".. code-block:: console"}],"source_content_type":"text/x-rst","patch_set":12,"id":"df87a7cf_22ba7ec0","line":115,"in_reply_to":"df87a7cf_14d6f3c6","updated":"2017-12-07 15:22:55.000000000","message":"Done","commit_id":"00d0c036f399cf453e3fd586c5d834b6961d29fe"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"34eb1e0e4b5f5a7f193d718ed023e7315e149091","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"These are:"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"- `ganesha_service_name` \u003d name of the system service representing Ganesha,"},{"line_number":149,"context_line":"    defaults to ganesha.nfsd"},{"line_number":150,"context_line":"- `ganesha_db_path` \u003d location of on-disk database storing permanent Ganesha"},{"line_number":151,"context_line":"    state, e.g. a export ID counter to generate export IDs for shares"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"  (or)"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_40c0e82a","line":151,"range":{"start_line":148,"start_character":0,"end_line":151,"end_character":69},"updated":"2017-12-07 07:33:56.000000000","message":"nit: This format is a little wired, may will be remove a space in the second line.\nhttp://logs.openstack.org/47/510547/13/check/build-openstack-sphinx-docs/9070dab/html/contributor/ganesha.html","commit_id":"44be540cd3d35ecc7f6a7772db14e7159c2a8140"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"d25d013b3eb24b734dd8972f5775f6c0f4f77b7f","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"These are:"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"- `ganesha_service_name` \u003d name of the system service representing Ganesha,"},{"line_number":149,"context_line":"    defaults to ganesha.nfsd"},{"line_number":150,"context_line":"- `ganesha_db_path` \u003d location of on-disk database storing permanent Ganesha"},{"line_number":151,"context_line":"    state, e.g. a export ID counter to generate export IDs for shares"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"  (or)"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_4e3332f7","line":151,"range":{"start_line":148,"start_character":0,"end_line":151,"end_character":69},"in_reply_to":"df87a7cf_40c0e82a","updated":"2017-12-07 15:22:55.000000000","message":"Done","commit_id":"44be540cd3d35ecc7f6a7772db14e7159c2a8140"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"34eb1e0e4b5f5a7f193d718ed023e7315e149091","unresolved":false,"context_lines":[{"line_number":161,"context_line":"- `ganesha_export_template_dir` \u003d directory from where Ganesha loads"},{"line_number":162,"context_line":"    export customizations (cf. \"Customizing Ganesha exports\")."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":".. _using_ganesha_library:"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Using Ganesha Library in drivers"},{"line_number":167,"context_line":"--------------------------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_c0e958b7","line":164,"range":{"start_line":164,"start_character":0,"end_line":164,"end_character":25},"updated":"2017-12-07 07:33:56.000000000","message":"This isn\u0027t work?","commit_id":"44be540cd3d35ecc7f6a7772db14e7159c2a8140"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"d25d013b3eb24b734dd8972f5775f6c0f4f77b7f","unresolved":false,"context_lines":[{"line_number":161,"context_line":"- `ganesha_export_template_dir` \u003d directory from where Ganesha loads"},{"line_number":162,"context_line":"    export customizations (cf. \"Customizing Ganesha exports\")."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":".. _using_ganesha_library:"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Using Ganesha Library in drivers"},{"line_number":167,"context_line":"--------------------------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_0e2a0a7e","line":164,"range":{"start_line":164,"start_character":0,"end_line":164,"end_character":25},"in_reply_to":"df87a7cf_c0e958b7","updated":"2017-12-07 15:22:55.000000000","message":"It\u0027s used in line 48 and works. I checked here,\nhttp://logs.openstack.org/47/510547/13/check/build-openstack-sphinx-docs/9070dab/html/contributor/ganesha.html","commit_id":"44be540cd3d35ecc7f6a7772db14e7159c2a8140"}],"manila/share/driver.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"d942e4e9c1484f5812b1ffbbde12fb9803cb7ac3","unresolved":false,"context_lines":[{"line_number":181,"context_line":"               default\u003d\u0027/etc/manila/ganesha-export-templ.d\u0027,"},{"line_number":182,"context_line":"               help\u003d\u0027Path to directory containing Ganesha export \u0027"},{"line_number":183,"context_line":"                    \u0027block templates. (Ganesha module only.)\u0027),"},{"line_number":184,"context_line":"    cfg.BoolOpt(\u0027ganesha_rados_store_enable\u0027,"},{"line_number":185,"context_line":"                default\u003dFalse,"},{"line_number":186,"context_line":"                help\u003d\u0027Persist Ganesha exports and export counter \u0027"},{"line_number":187,"context_line":"                     \u0027in Ceph RADOS objects, highly available storage.\u0027),"},{"line_number":188,"context_line":"    cfg.StrOpt(\u0027ganesha_rados_store_pool_name\u0027,"},{"line_number":189,"context_line":"               help\u003d\u0027Name of the Ceph RADOS pool to store Ganesha exports \u0027"},{"line_number":190,"context_line":"                    \u0027and export counter.\u0027),"},{"line_number":191,"context_line":"    cfg.StrOpt(\u0027ganesha_rados_export_counter\u0027,"},{"line_number":192,"context_line":"               default\u003d\u0027ganesha-export-counter\u0027,"},{"line_number":193,"context_line":"               help\u003d\u0027Name of the Ceph RADOS object used as the Ganesha \u0027"},{"line_number":194,"context_line":"                    \u0027export counter.\u0027),"},{"line_number":195,"context_line":"    cfg.StrOpt(\u0027ganesha_rados_export_index\u0027,"},{"line_number":196,"context_line":"               default\u003d\u0027ganesha-export-index\u0027,"},{"line_number":197,"context_line":"               help\u003d\u0027Name of the Ceph RADOS object used to store a list \u0027"},{"line_number":198,"context_line":"                    \u0027of the export RADOS object URLS.\u0027),"},{"line_number":199,"context_line":"]"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f4e5783_b8a8e58b","line":198,"range":{"start_line":184,"start_character":0,"end_line":198,"end_character":56},"updated":"2017-10-13 14:58:32.000000000","message":"In principal these options could be used with non-cephfs drivers using ganesha if they have access to a ceph cluster but we won\u0027t be testing or particularly intending this with this commit.  Probably we can handle this in the admin ref for ganesha.\n\nIt\u0027s good that you are defaulting \u0027ganesha_rados_store_enable\u0027 to False; distros can set it true when they do appropriate deployments.","commit_id":"4194d907106f3c2e0b7633b9ab7ad9b61ad0377e"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"ce5b447e9ede33acabd96362e6ce6c9c7c3ad9cd","unresolved":false,"context_lines":[{"line_number":181,"context_line":"               default\u003d\u0027/etc/manila/ganesha-export-templ.d\u0027,"},{"line_number":182,"context_line":"               help\u003d\u0027Path to directory containing Ganesha export \u0027"},{"line_number":183,"context_line":"                    \u0027block templates. (Ganesha module only.)\u0027),"},{"line_number":184,"context_line":"    cfg.BoolOpt(\u0027ganesha_rados_store_enable\u0027,"},{"line_number":185,"context_line":"                default\u003dFalse,"},{"line_number":186,"context_line":"                help\u003d\u0027Persist Ganesha exports and export counter \u0027"},{"line_number":187,"context_line":"                     \u0027in Ceph RADOS objects, highly available storage.\u0027),"},{"line_number":188,"context_line":"    cfg.StrOpt(\u0027ganesha_rados_store_pool_name\u0027,"},{"line_number":189,"context_line":"               help\u003d\u0027Name of the Ceph RADOS pool to store Ganesha exports \u0027"},{"line_number":190,"context_line":"                    \u0027and export counter.\u0027),"},{"line_number":191,"context_line":"    cfg.StrOpt(\u0027ganesha_rados_export_counter\u0027,"},{"line_number":192,"context_line":"               default\u003d\u0027ganesha-export-counter\u0027,"},{"line_number":193,"context_line":"               help\u003d\u0027Name of the Ceph RADOS object used as the Ganesha \u0027"},{"line_number":194,"context_line":"                    \u0027export counter.\u0027),"},{"line_number":195,"context_line":"    cfg.StrOpt(\u0027ganesha_rados_export_index\u0027,"},{"line_number":196,"context_line":"               default\u003d\u0027ganesha-export-index\u0027,"},{"line_number":197,"context_line":"               help\u003d\u0027Name of the Ceph RADOS object used to store a list \u0027"},{"line_number":198,"context_line":"                    \u0027of the export RADOS object URLS.\u0027),"},{"line_number":199,"context_line":"]"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f4e5783_bb731616","line":198,"range":{"start_line":184,"start_character":0,"end_line":198,"end_character":56},"in_reply_to":"5f4e5783_b8a8e58b","updated":"2017-10-16 09:31:44.000000000","message":"To use the feature, the driver would need a CephFSVolumeClient instance that connects to Ceph RADOS. I suspect folks would prefer symlinking the ganesha export file and ganesha export counter to a local mount of a distributed FS, GlusterFS, GPFS, etc, that they already use as the Ganesha FSAL backend.","commit_id":"4194d907106f3c2e0b7633b9ab7ad9b61ad0377e"}],"manila/share/drivers/cephfs/driver.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"d942e4e9c1484f5812b1ffbbde12fb9803cb7ac3","unresolved":false,"context_lines":[{"line_number":450,"context_line":"        else:"},{"line_number":451,"context_line":"            execute \u003d ganesha_utils.RootExecutor(execute)"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        self.ganesha_host \u003d config_object.cephfs_ganesha_server_ip"},{"line_number":454,"context_line":"        if not self.ganesha_host:"},{"line_number":455,"context_line":"            self.ganesha_host \u003d socket.gethostname()"},{"line_number":456,"context_line":"            LOG.info(\"NFS-Ganesha server\u0027s location defaulted to driver\u0027s \""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f4e5783_be432d6c","line":453,"range":{"start_line":453,"start_character":8,"end_line":453,"end_character":66},"updated":"2017-10-13 14:58:32.000000000","message":"We\u0027re probably going to have to make this a VIP for HA purposes.","commit_id":"4194d907106f3c2e0b7633b9ab7ad9b61ad0377e"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"ce5b447e9ede33acabd96362e6ce6c9c7c3ad9cd","unresolved":false,"context_lines":[{"line_number":450,"context_line":"        else:"},{"line_number":451,"context_line":"            execute \u003d ganesha_utils.RootExecutor(execute)"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        self.ganesha_host \u003d config_object.cephfs_ganesha_server_ip"},{"line_number":454,"context_line":"        if not self.ganesha_host:"},{"line_number":455,"context_line":"            self.ganesha_host \u003d socket.gethostname()"},{"line_number":456,"context_line":"            LOG.info(\"NFS-Ganesha server\u0027s location defaulted to driver\u0027s \""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f4e5783_bbc2f632","line":453,"range":{"start_line":453,"start_character":8,"end_line":453,"end_character":66},"in_reply_to":"5f4e5783_be432d6c","updated":"2017-10-16 09:31:44.000000000","message":"Yeah.","commit_id":"4194d907106f3c2e0b7633b9ab7ad9b61ad0377e"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"d942e4e9c1484f5812b1ffbbde12fb9803cb7ac3","unresolved":false,"context_lines":[{"line_number":455,"context_line":"            self.ganesha_host \u003d socket.gethostname()"},{"line_number":456,"context_line":"            LOG.info(\"NFS-Ganesha server\u0027s location defaulted to driver\u0027s \""},{"line_number":457,"context_line":"                     \"hostname: %s\", self.ganesha_host)"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"        super(NFSProtocolHelper, self).__init__(execute, config_object,"},{"line_number":460,"context_line":"                                                **kwargs)"},{"line_number":461,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f4e5783_491a416f","line":458,"updated":"2017-10-13 14:58:32.000000000","message":"Setting of self.ceph_vol_client is now done in GaneshaNasHelper2.init_helper rather than here.  I think it is being set there only if ganesha_rados_store_enable is True.   If ganesha_rados_store_enable is False can we end up trying to use self.ceph_vol_client in this module without it having been set?","commit_id":"4194d907106f3c2e0b7633b9ab7ad9b61ad0377e"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"728d06eb866773d16ba52038e10c8f2ca73bb6a2","unresolved":false,"context_lines":[{"line_number":455,"context_line":"            self.ganesha_host \u003d socket.gethostname()"},{"line_number":456,"context_line":"            LOG.info(\"NFS-Ganesha server\u0027s location defaulted to driver\u0027s \""},{"line_number":457,"context_line":"                     \"hostname: %s\", self.ganesha_host)"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"        super(NFSProtocolHelper, self).__init__(execute, config_object,"},{"line_number":460,"context_line":"                                                **kwargs)"},{"line_number":461,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_6610caa9","line":458,"in_reply_to":"5f4e5783_491a416f","updated":"2017-10-31 10:09:52.000000000","message":"Done","commit_id":"4194d907106f3c2e0b7633b9ab7ad9b61ad0377e"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"ce5b447e9ede33acabd96362e6ce6c9c7c3ad9cd","unresolved":false,"context_lines":[{"line_number":455,"context_line":"            self.ganesha_host \u003d socket.gethostname()"},{"line_number":456,"context_line":"            LOG.info(\"NFS-Ganesha server\u0027s location defaulted to driver\u0027s \""},{"line_number":457,"context_line":"                     \"hostname: %s\", self.ganesha_host)"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"        super(NFSProtocolHelper, self).__init__(execute, config_object,"},{"line_number":460,"context_line":"                                                **kwargs)"},{"line_number":461,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f4e5783_3baf267e","line":458,"in_reply_to":"5f4e5783_491a416f","updated":"2017-10-16 09:31:44.000000000","message":"Yes, you\u0027re right, I introduced a regression. Will fix this.","commit_id":"4194d907106f3c2e0b7633b9ab7ad9b61ad0377e"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"7f07c24814599c6c3257ba6ea12741d63185d4f7","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        super(NFSProtocolHelper, self).__init__(execute, config_object,"},{"line_number":460,"context_line":"                                                **kwargs)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        if not hasattr(self, \u0027volume_client\u0027):"},{"line_number":463,"context_line":"            self.ceph_vol_client \u003d kwargs.pop(\u0027ceph_vol_client\u0027)"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def get_export_locations(self, share, cephfs_volume):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_8a0b8428","line":462,"updated":"2017-11-02 12:33:48.000000000","message":"s/volume_client/ceph_vol_client","commit_id":"7531d16b82d64890349c45ce864005fa3f1be3ce"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"64cd4f2aeec2c927ae1cbba5bb1fc2069b901fb9","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        super(NFSProtocolHelper, self).__init__(execute, config_object,"},{"line_number":460,"context_line":"                                                **kwargs)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        if not hasattr(self, \u0027volume_client\u0027):"},{"line_number":463,"context_line":"            self.ceph_vol_client \u003d kwargs.pop(\u0027ceph_vol_client\u0027)"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def get_export_locations(self, share, cephfs_volume):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_febe13ac","line":462,"in_reply_to":"3f4b6375_8a0b8428","updated":"2017-11-03 16:14:39.000000000","message":"+1","commit_id":"7531d16b82d64890349c45ce864005fa3f1be3ce"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"8b86d639f6df58b42d0ab4b82263a2d2051cb04f","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        super(NFSProtocolHelper, self).__init__(execute, config_object,"},{"line_number":460,"context_line":"                                                **kwargs)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        if not hasattr(self, \u0027volume_client\u0027):"},{"line_number":463,"context_line":"            self.ceph_vol_client \u003d kwargs.pop(\u0027ceph_vol_client\u0027)"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def get_export_locations(self, share, cephfs_volume):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f485f77_aa8eb524","line":462,"in_reply_to":"3f4b6375_febe13ac","updated":"2017-11-10 10:49:38.000000000","message":"Done","commit_id":"7531d16b82d64890349c45ce864005fa3f1be3ce"}],"manila/share/drivers/ganesha/__init__.py":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"34eb1e0e4b5f5a7f193d718ed023e7315e149091","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        if self.configuration.ganesha_rados_store_enable:"},{"line_number":183,"context_line":"            kwargs[\u0027ganesha_rados_store_enable\u0027] \u003d ("},{"line_number":184,"context_line":"                self.configuration.ganesha_rados_store_enable)"},{"line_number":185,"context_line":"            kwargs[\u0027ganesha_rados_store_pool_name\u0027] \u003d ("},{"line_number":186,"context_line":"                self.configuration.ganesha_rados_store_pool_name)"},{"line_number":187,"context_line":"            kwargs[\u0027ganesha_rados_export_index\u0027] \u003d ("},{"line_number":188,"context_line":"                self.configuration.ganesha_rados_export_index)"},{"line_number":189,"context_line":"            kwargs[\u0027ganesha_rados_export_counter\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_eb4ebd6d","line":186,"range":{"start_line":185,"start_character":12,"end_line":186,"end_character":65},"updated":"2017-12-07 07:33:56.000000000","message":"The ganesha_rados_store_pool_name doesn\u0027t have a default value, would you have to verify this parameter and tell the user have to config this option if they set ganesha_rados_store_enable to true.","commit_id":"44be540cd3d35ecc7f6a7772db14e7159c2a8140"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"be4fb448b38ceca40faed6db0a1a26529ff0db2c","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        if self.configuration.ganesha_rados_store_enable:"},{"line_number":183,"context_line":"            kwargs[\u0027ganesha_rados_store_enable\u0027] \u003d ("},{"line_number":184,"context_line":"                self.configuration.ganesha_rados_store_enable)"},{"line_number":185,"context_line":"            kwargs[\u0027ganesha_rados_store_pool_name\u0027] \u003d ("},{"line_number":186,"context_line":"                self.configuration.ganesha_rados_store_pool_name)"},{"line_number":187,"context_line":"            kwargs[\u0027ganesha_rados_export_index\u0027] \u003d ("},{"line_number":188,"context_line":"                self.configuration.ganesha_rados_export_index)"},{"line_number":189,"context_line":"            kwargs[\u0027ganesha_rados_export_counter\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_94d14426","line":186,"range":{"start_line":185,"start_character":12,"end_line":186,"end_character":65},"in_reply_to":"df87a7cf_5433bcf6","updated":"2017-12-07 18:08:42.000000000","message":"Agree","commit_id":"44be540cd3d35ecc7f6a7772db14e7159c2a8140"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"e1f3602a821d29f5f30158190fc1f9ebdc3f7077","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        if self.configuration.ganesha_rados_store_enable:"},{"line_number":183,"context_line":"            kwargs[\u0027ganesha_rados_store_enable\u0027] \u003d ("},{"line_number":184,"context_line":"                self.configuration.ganesha_rados_store_enable)"},{"line_number":185,"context_line":"            kwargs[\u0027ganesha_rados_store_pool_name\u0027] \u003d ("},{"line_number":186,"context_line":"                self.configuration.ganesha_rados_store_pool_name)"},{"line_number":187,"context_line":"            kwargs[\u0027ganesha_rados_export_index\u0027] \u003d ("},{"line_number":188,"context_line":"                self.configuration.ganesha_rados_export_index)"},{"line_number":189,"context_line":"            kwargs[\u0027ganesha_rados_export_counter\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_5433bcf6","line":186,"range":{"start_line":185,"start_character":12,"end_line":186,"end_character":65},"in_reply_to":"df87a7cf_a240cea6","updated":"2017-12-07 17:58:38.000000000","message":"Offhand I think logging to the admin is sufficient here.  It is the cloud admin who would change this setting from its default (if anyone does, I expect everyone will just leave it alone) -- not the regular cloud user, who is the target for user messages.","commit_id":"44be540cd3d35ecc7f6a7772db14e7159c2a8140"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"d25d013b3eb24b734dd8972f5775f6c0f4f77b7f","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        if self.configuration.ganesha_rados_store_enable:"},{"line_number":183,"context_line":"            kwargs[\u0027ganesha_rados_store_enable\u0027] \u003d ("},{"line_number":184,"context_line":"                self.configuration.ganesha_rados_store_enable)"},{"line_number":185,"context_line":"            kwargs[\u0027ganesha_rados_store_pool_name\u0027] \u003d ("},{"line_number":186,"context_line":"                self.configuration.ganesha_rados_store_pool_name)"},{"line_number":187,"context_line":"            kwargs[\u0027ganesha_rados_export_index\u0027] \u003d ("},{"line_number":188,"context_line":"                self.configuration.ganesha_rados_export_index)"},{"line_number":189,"context_line":"            kwargs[\u0027ganesha_rados_export_counter\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_a240cea6","line":186,"range":{"start_line":185,"start_character":12,"end_line":186,"end_character":65},"in_reply_to":"df87a7cf_eb4ebd6d","updated":"2017-12-07 15:22:55.000000000","message":"Done.\n\nI raise a meaningful exception that the admin can make sense of. Not sure if we need to use the user_messages infra. I can do that in Q-3 if necessary.","commit_id":"44be540cd3d35ecc7f6a7772db14e7159c2a8140"}],"manila/share/drivers/ganesha/manager.py":[{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"de3cc82cc1d3afd307d85e6311bbb56b2308b06b","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        # XXX overflowing the export id (16 bit unsigned integer)"},{"line_number":536,"context_line":"        # is not handled"},{"line_number":537,"context_line":"        if self.ganesha_rados_store_enable:"},{"line_number":538,"context_line":"            old_export_id \u003d int("},{"line_number":539,"context_line":"                self._get_rados_object(self.ganesha_rados_export_counter))"},{"line_number":540,"context_line":"            new_export_id \u003d old_export_id + 1"},{"line_number":541,"context_line":"            self._put_rados_object(self.ganesha_rados_export_counter,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f4e5783_850f432d","line":538,"updated":"2017-10-11 14:57:49.000000000","message":"would\u0027ve to make sure that the increment of the export id is atomic. Maybe put get and put under a lock?","commit_id":"4194d907106f3c2e0b7633b9ab7ad9b61ad0377e"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"d942e4e9c1484f5812b1ffbbde12fb9803cb7ac3","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        # XXX overflowing the export id (16 bit unsigned integer)"},{"line_number":536,"context_line":"        # is not handled"},{"line_number":537,"context_line":"        if self.ganesha_rados_store_enable:"},{"line_number":538,"context_line":"            old_export_id \u003d int("},{"line_number":539,"context_line":"                self._get_rados_object(self.ganesha_rados_export_counter))"},{"line_number":540,"context_line":"            new_export_id \u003d old_export_id + 1"},{"line_number":541,"context_line":"            self._put_rados_object(self.ganesha_rados_export_counter,"},{"line_number":542,"context_line":"                                   str(new_export_id))"},{"line_number":543,"context_line":"            return new_export_id"},{"line_number":544,"context_line":"        else:"},{"line_number":545,"context_line":"            if bump:"},{"line_number":546,"context_line":"                bumpcode \u003d \u0027update ganesha set value \u003d value + 1;\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f4e5783_febd25d8","line":543,"range":{"start_line":538,"start_character":0,"end_line":543,"end_character":32},"updated":"2017-10-13 14:58:32.000000000","message":"I wonder whether this could end up being a performance bottleneck if a big batch of export updates have to be processed in the same moment.","commit_id":"4194d907106f3c2e0b7633b9ab7ad9b61ad0377e"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"ce5b447e9ede33acabd96362e6ce6c9c7c3ad9cd","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        # XXX overflowing the export id (16 bit unsigned integer)"},{"line_number":536,"context_line":"        # is not handled"},{"line_number":537,"context_line":"        if self.ganesha_rados_store_enable:"},{"line_number":538,"context_line":"            old_export_id \u003d int("},{"line_number":539,"context_line":"                self._get_rados_object(self.ganesha_rados_export_counter))"},{"line_number":540,"context_line":"            new_export_id \u003d old_export_id + 1"},{"line_number":541,"context_line":"            self._put_rados_object(self.ganesha_rados_export_counter,"},{"line_number":542,"context_line":"                                   str(new_export_id))"},{"line_number":543,"context_line":"            return new_export_id"},{"line_number":544,"context_line":"        else:"},{"line_number":545,"context_line":"            if bump:"},{"line_number":546,"context_line":"                bumpcode \u003d \u0027update ganesha set value \u003d value + 1;\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f4e5783_d660e9d1","line":543,"range":{"start_line":538,"start_character":0,"end_line":543,"end_character":32},"in_reply_to":"5f4e5783_febd25d8","updated":"2017-10-16 09:31:44.000000000","message":"This is crude. But maybe it\u0027s OK for bulk export/config changes?","commit_id":"4194d907106f3c2e0b7633b9ab7ad9b61ad0377e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"34eb1e0e4b5f5a7f193d718ed023e7315e149091","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        self.execute(\u0027mkdir\u0027, \u0027-p\u0027, self.ganesha_export_dir)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        self.ganesha_rados_store_enable \u003d kwargs.get("},{"line_number":249,"context_line":"            \u0027ganesha_rados_store_enable\u0027, \u0027\u0027)"},{"line_number":250,"context_line":"        if self.ganesha_rados_store_enable:"},{"line_number":251,"context_line":"            setup_rados()"},{"line_number":252,"context_line":"            self.ganesha_rados_store_pool_name \u003d ("}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_8b961193","line":249,"range":{"start_line":249,"start_character":42,"end_line":249,"end_character":44},"updated":"2017-12-07 07:33:56.000000000","message":"False? or just remove it? It will be None if the ganesha_rados_store_enable isn\u0027t exist. Why it should be set to \u0027\u0027?","commit_id":"44be540cd3d35ecc7f6a7772db14e7159c2a8140"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"d25d013b3eb24b734dd8972f5775f6c0f4f77b7f","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        self.execute(\u0027mkdir\u0027, \u0027-p\u0027, self.ganesha_export_dir)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        self.ganesha_rados_store_enable \u003d kwargs.get("},{"line_number":249,"context_line":"            \u0027ganesha_rados_store_enable\u0027, \u0027\u0027)"},{"line_number":250,"context_line":"        if self.ganesha_rados_store_enable:"},{"line_number":251,"context_line":"            setup_rados()"},{"line_number":252,"context_line":"            self.ganesha_rados_store_pool_name \u003d ("}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_b3b34b0a","line":249,"range":{"start_line":249,"start_character":42,"end_line":249,"end_character":44},"in_reply_to":"df87a7cf_8b961193","updated":"2017-12-07 15:22:55.000000000","message":"Done","commit_id":"44be540cd3d35ecc7f6a7772db14e7159c2a8140"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"34eb1e0e4b5f5a7f193d718ed023e7315e149091","unresolved":false,"context_lines":[{"line_number":261,"context_line":"                self._get_rados_object(self.ganesha_rados_export_counter)"},{"line_number":262,"context_line":"            except rados.ObjectNotFound:"},{"line_number":263,"context_line":"                self._put_rados_object(self.ganesha_rados_export_counter,"},{"line_number":264,"context_line":"                                       str(1000))"},{"line_number":265,"context_line":"        else:"},{"line_number":266,"context_line":"            self.ganesha_db_path \u003d kwargs[\u0027ganesha_db_path\u0027]"},{"line_number":267,"context_line":"            self.execute(\u0027mkdir\u0027, \u0027-p\u0027, os.path.dirname(self.ganesha_db_path))"}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_6be86de1","line":264,"range":{"start_line":264,"start_character":39,"end_line":264,"end_character":43},"updated":"2017-12-07 07:33:56.000000000","message":"Py 2/3 incompatible approach. Should be \"six.text_type\".","commit_id":"44be540cd3d35ecc7f6a7772db14e7159c2a8140"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"d25d013b3eb24b734dd8972f5775f6c0f4f77b7f","unresolved":false,"context_lines":[{"line_number":261,"context_line":"                self._get_rados_object(self.ganesha_rados_export_counter)"},{"line_number":262,"context_line":"            except rados.ObjectNotFound:"},{"line_number":263,"context_line":"                self._put_rados_object(self.ganesha_rados_export_counter,"},{"line_number":264,"context_line":"                                       str(1000))"},{"line_number":265,"context_line":"        else:"},{"line_number":266,"context_line":"            self.ganesha_db_path \u003d kwargs[\u0027ganesha_db_path\u0027]"},{"line_number":267,"context_line":"            self.execute(\u0027mkdir\u0027, \u0027-p\u0027, os.path.dirname(self.ganesha_db_path))"}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_d3b84fe6","line":264,"range":{"start_line":264,"start_character":39,"end_line":264,"end_character":43},"in_reply_to":"df87a7cf_6be86de1","updated":"2017-12-07 15:22:55.000000000","message":"Done","commit_id":"44be540cd3d35ecc7f6a7772db14e7159c2a8140"}]}
