)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"bb614076cdac54289f4befe0b745ebdf8acfc164","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-03-12 12:28:52 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Posix backup driver. Supports simple nas too."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I99383aa23b6dda217c8df6b33561111a8823b452"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a80dd14_acc80723","line":8,"updated":"2015-03-12 21:13:54.000000000","message":"Partially Implements: blueprint nfs-backup","commit_id":"591bc591412cf458b949493a506f00d01269fe39"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"e752441b47ad81cfdff6e450dc89bded01c5feb4","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-03-12 12:28:52 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Posix backup driver. Supports simple nas too."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I99383aa23b6dda217c8df6b33561111a8823b452"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a80dd14_801a276d","line":8,"in_reply_to":"9a80dd14_acc80723","updated":"2015-03-12 21:18:20.000000000","message":"Done","commit_id":"591bc591412cf458b949493a506f00d01269fe39"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"31e5b8f258cd2d9567973642405468e34db3c395","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Bharat Kumar Kobagana \u003cbharat.kobagana@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-06-16 08:30:58 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Posix backup driver. Supports simple nas too."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Partially Implements: blueprint nfs-backup"},{"line_number":10,"context_line":"Change-Id: I99383aa23b6dda217c8df6b33561111a8823b452"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"fa32b979_fd98751d","line":7,"updated":"2015-06-16 07:17:07.000000000","message":"The first paragraph should consist of one concise sentence to summarize this patch.\nThe second paragraph contains the detailed information about this patch.","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"880e65051788118da0abea8f082f6d6fc148398c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Bharat Kumar Kobagana \u003cbharat.kobagana@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-06-16 08:30:58 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Posix backup driver. Supports simple nas too."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Partially Implements: blueprint nfs-backup"},{"line_number":10,"context_line":"Change-Id: I99383aa23b6dda217c8df6b33561111a8823b452"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"ba3cc151_177ff415","line":7,"in_reply_to":"fa32b979_fd98751d","updated":"2015-07-06 09:54:10.000000000","message":"Done","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"57418b7feded7374aeda86b25aa4f187fe22c91e","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-06-16 08:30:58 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Posix backup driver. Supports simple nas too."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Partially Implements: blueprint nfs-backup"},{"line_number":10,"context_line":"Change-Id: I99383aa23b6dda217c8df6b33561111a8823b452"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"fa32b979_23f23770","line":8,"updated":"2015-06-16 09:20:05.000000000","message":"I think it worth more detailed commit message such as why chunkdriver is replaced with posix.","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"880e65051788118da0abea8f082f6d6fc148398c","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-06-16 08:30:58 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Posix backup driver. Supports simple nas too."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Partially Implements: blueprint nfs-backup"},{"line_number":10,"context_line":"Change-Id: I99383aa23b6dda217c8df6b33561111a8823b452"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"ba3cc151_f7713045","line":8,"in_reply_to":"fa32b979_23f23770","updated":"2015-07-06 09:54:10.000000000","message":"Done","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"57418b7feded7374aeda86b25aa4f187fe22c91e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Posix backup driver. Supports simple nas too."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Partially Implements: blueprint nfs-backup"},{"line_number":10,"context_line":"Change-Id: I99383aa23b6dda217c8df6b33561111a8823b452"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"fa32b979_63c03f2b","line":9,"updated":"2015-06-16 09:20:05.000000000","message":"When I clicked the link, here is opened but nothing shown\n\n    https://blueprints.launchpad.net/openstack/?searchtext\u003dnfs-backup","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4967dcbd926a15455e038d673e94364592c9c2e2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Posix backup driver. Supports simple nas too."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Partially Implements: blueprint nfs-backup"},{"line_number":10,"context_line":"Change-Id: I99383aa23b6dda217c8df6b33561111a8823b452"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"fa32b979_f9002668","line":9,"in_reply_to":"fa32b979_63c03f2b","updated":"2015-06-17 21:39:20.000000000","message":"That\u0027s because another patch said \"implements: blueprint nfs-backup\" and it was merged and the blueprint status is \"complete\".  The link somehow got screwed up after the patch gets merged.  This is the case with every patch that completes a blueprint.","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"9a755128ba5684983d883914e1520ad2525486be","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Posix backup driver. Supports simple nas too."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Partially Implements: blueprint nfs-backup"},{"line_number":10,"context_line":"Change-Id: I99383aa23b6dda217c8df6b33561111a8823b452"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"fa32b979_7e8f5f23","line":9,"in_reply_to":"fa32b979_f9002668","updated":"2015-06-23 09:22:26.000000000","message":"Thank for the explanation!","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"}],"cinder/backup/drivers/nfs.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"a95381d2dadcb16c5d7ed1d9a0ad2b6b0fbc8baa","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\"\"\"Implementation of a backup service that uses NFS storage as the backend.\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cinder.brick.remotefs import remotefs as remotefs_brick"},{"line_number":22,"context_line":"from cinder import exception"},{"line_number":23,"context_line":"from cinder.i18n import _"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_4da3249e","line":20,"updated":"2015-03-12 12:05:19.000000000","message":"from cinder.backup.drivers import posix","commit_id":"5f330c924e92e3e31e2bf1faec26ef6efba0c035"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"a95381d2dadcb16c5d7ed1d9a0ad2b6b0fbc8baa","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        self.backup_share \u003d CONF.backup_share"},{"line_number":55,"context_line":"        self.mount_options \u003d CONF.backup_mount_options or {}"},{"line_number":56,"context_line":"        backup_path \u003d self._init_backup_repo_path()"},{"line_number":57,"context_line":"        super(PosixBackupDriver, self).__init__(context,"},{"line_number":58,"context_line":"                                                backup_path\u003dbackup_path)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_8dc43c41","line":57,"updated":"2015-03-12 12:05:19.000000000","message":"super(NFSBackupDriver, self.__init__(context,","commit_id":"5f330c924e92e3e31e2bf1faec26ef6efba0c035"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"75d528e937d136c5da5bb2bd183c7a0cfbcb83a7","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        backup_path \u003d self._init_backup_repo_path()"},{"line_number":58,"context_line":"        super(NFSBackupDriver, self).__init__(context,"},{"line_number":59,"context_line":"                                              backup_path\u003dbackup_path)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @staticmethod"},{"line_number":62,"context_line":"    def _check_configuration():"},{"line_number":63,"context_line":"        \"\"\"Raises error if any required configuration flag is missing.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"9af37de9_bb02053d","line":60,"updated":"2015-05-11 11:48:03.000000000","message":"Do we need to support backup_path config var (in base class currently) for derived classes also ?\n\nIf we don\u0027t then we can\u0027t support the scenario where NFS is already mounted and/or deployer wants to mount it before starting to use nfs backup driver ?","commit_id":"5bf836ee51bccbd2f1a6145dd940b3da94bde92c"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"3f248158a1ca8949c5fc9c8c5c8ee23b3de705ff","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        backup_path \u003d self._init_backup_repo_path()"},{"line_number":58,"context_line":"        super(NFSBackupDriver, self).__init__(context,"},{"line_number":59,"context_line":"                                              backup_path\u003dbackup_path)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @staticmethod"},{"line_number":62,"context_line":"    def _check_configuration():"},{"line_number":63,"context_line":"        \"\"\"Raises error if any required configuration flag is missing.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"9af37de9_abaaad6e","line":60,"in_reply_to":"9af37de9_bb02053d","updated":"2015-05-11 15:45:32.000000000","message":"If you want to use a premounted nfs, you can use the Posix Driver directly. It works with all Posix file systems. (ext, Lustre, etc). The NFS driver mostly eliminates the need to do the mount/config yourself.\n\nAs you can see from this refactor, basically all the file handling code is now gone, and it simply sets up the mount and hands control over to the PosixDriver.","commit_id":"5bf836ee51bccbd2f1a6145dd940b3da94bde92c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"7954571bca9233b323825314a827ec443808b4d0","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        backup_path \u003d self._init_backup_repo_path()"},{"line_number":58,"context_line":"        super(NFSBackupDriver, self).__init__(context,"},{"line_number":59,"context_line":"                                              backup_path\u003dbackup_path)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @staticmethod"},{"line_number":62,"context_line":"    def _check_configuration():"},{"line_number":63,"context_line":"        \"\"\"Raises error if any required configuration flag is missing.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"9af37de9_4b26a169","line":60,"in_reply_to":"9af37de9_bb02053d","updated":"2015-05-11 15:39:33.000000000","message":"Maybe I\u0027m missing the point, but \n\n1) for PosixBackupDriver, the configuration backup path will be used.\n\n2) NFSBackupDriver, GlusterFSBackupDriver :-) , etc. will get backup path by invoking brick mount routines, and these are tolerant when the share to be mounted is found to already be mounted.","commit_id":"5bf836ee51bccbd2f1a6145dd940b3da94bde92c"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"fe8019db19bf92e6952297751071482a1dacce64","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\"\"\"Implementation of a backup service that uses NFS storage as the backend.\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cinder.backup.drivers import posix"},{"line_number":23,"context_line":"from cinder.brick.remotefs import remotefs as remotefs_brick"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a0c5dc1_3fb60ddd","line":20,"updated":"2015-05-12 11:55:15.000000000","message":"In this file \u0027nfs.py\u0027 we are not printing any LOG messages. So we can remove this.","commit_id":"435941d05973c3d7e4cdf742fe2df23cd6dddc1c"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"fe8019db19bf92e6952297751071482a1dacce64","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinder.i18n import _"},{"line_number":26,"context_line":"from cinder import utils"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"nfsbackup_service_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"9a0c5dc1_ffe635e7","line":28,"updated":"2015-05-12 11:55:15.000000000","message":"^^ Same as above.","commit_id":"435941d05973c3d7e4cdf742fe2df23cd6dddc1c"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"b1c51289bad63e7b54c4ab1c7a8ad719e8ac1def","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        self.backup_share \u003d CONF.backup_share"},{"line_number":91,"context_line":"        self.mount_options \u003d CONF.backup_mount_options or {}"},{"line_number":92,"context_line":"        self.backup_path \u003d self._init_backup_repo_path()"},{"line_number":93,"context_line":"        LOG.debug(\"Using NFS backup repository: %s\", self.backup_path)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @staticmethod"},{"line_number":96,"context_line":"    def _check_configuration():"}],"source_content_type":"text/x-python","patch_set":11,"id":"3afb71cf_30e68815","side":"PARENT","line":93,"updated":"2015-06-10 11:19:19.000000000","message":"Would be useful if that log line was still emitted, it\u0027s the most elementary of info needed for debugging","commit_id":"8a46703aaf81bb27fd3f58974c3800788b9260f2"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"835e4347e27c51fb879ba2880ca2c83a20f22faa","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        self.backup_share \u003d CONF.backup_share"},{"line_number":91,"context_line":"        self.mount_options \u003d CONF.backup_mount_options or {}"},{"line_number":92,"context_line":"        self.backup_path \u003d self._init_backup_repo_path()"},{"line_number":93,"context_line":"        LOG.debug(\"Using NFS backup repository: %s\", self.backup_path)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @staticmethod"},{"line_number":96,"context_line":"    def _check_configuration():"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af86dd1_045f6b42","side":"PARENT","line":93,"in_reply_to":"3afb71cf_30e68815","updated":"2015-06-12 20:22:17.000000000","message":"Done","commit_id":"8a46703aaf81bb27fd3f58974c3800788b9260f2"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"77f76482a73d61eb3e104eb65255b852f00a2880","unresolved":false,"context_lines":[{"line_number":34,"context_line":"               help\u003d\u0027Base dir containing mount point for NFS share.\u0027),"},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027backup_share\u0027,"},{"line_number":36,"context_line":"               default\u003dNone,"},{"line_number":37,"context_line":"               help\u003d\u0027NFS share in fqdn:path, ipv4addr:path, \u0027"},{"line_number":38,"context_line":"                    \u0027or \"[ipv6addr]:path\" format.\u0027),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027backup_mount_options\u0027,"},{"line_number":40,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a41bdd9_1ef1ee94","line":37,"updated":"2015-07-16 12:08:16.000000000","message":"s/fqdn/hostname/","commit_id":"79ae017dbe15ffc0c38f5f0a5ea7f857ae6fe6f6"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8e1304ee0b87e319dc7d9a0b9d139d0f085009c6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"               help\u003d\u0027Base dir containing mount point for NFS share.\u0027),"},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027backup_share\u0027,"},{"line_number":36,"context_line":"               default\u003dNone,"},{"line_number":37,"context_line":"               help\u003d\u0027NFS share in fqdn:path, ipv4addr:path, \u0027"},{"line_number":38,"context_line":"                    \u0027or \"[ipv6addr]:path\" format.\u0027),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027backup_mount_options\u0027,"},{"line_number":40,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a41bdd9_5e0f7636","line":37,"in_reply_to":"9a41bdd9_1ef1ee94","updated":"2015-07-16 12:11:06.000000000","message":"Agreed","commit_id":"79ae017dbe15ffc0c38f5f0a5ea7f857ae6fe6f6"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"2556bfe49591979b8e57ac5de9f7d04047b7ab36","unresolved":false,"context_lines":[{"line_number":34,"context_line":"               help\u003d\u0027Base dir containing mount point for NFS share.\u0027),"},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027backup_share\u0027,"},{"line_number":36,"context_line":"               default\u003dNone,"},{"line_number":37,"context_line":"               help\u003d\u0027NFS share in fqdn:path, ipv4addr:path, \u0027"},{"line_number":38,"context_line":"                    \u0027or \"[ipv6addr]:path\" format.\u0027),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027backup_mount_options\u0027,"},{"line_number":40,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a41bdd9_e19d8fbc","line":37,"in_reply_to":"9a41bdd9_5e0f7636","updated":"2015-07-16 12:13:36.000000000","message":"Done","commit_id":"79ae017dbe15ffc0c38f5f0a5ea7f857ae6fe6f6"}],"cinder/backup/drivers/posix.py":[{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"fa6c5323467b7132bce1fd868dedecbd4d7bd7e6","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.backup_path \u003d backup_path"},{"line_number":80,"context_line":"        if not backup_path:"},{"line_number":81,"context_line":"            self.backup_path \u003d CONF.backup_path"},{"line_number":82,"context_line":"        if not backup_path:"},{"line_number":83,"context_line":"            raise exception.ConfigNotFound(_("},{"line_number":84,"context_line":"                \u0027Required flag %s is not set\u0027) % \u0027backup_path\u0027)"},{"line_number":85,"context_line":"        LOG.debug(\"Using backup repository: %s\", self.backup_path)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ad8896b_fda093a7","line":82,"updated":"2015-05-11 18:36:22.000000000","message":"When we are directly using posix_driver, backup_path is None.\n\nIn that case, this condition is always failing and raising ConfigNotFound exception:\n\nTo avoid this, here that condition should be:\n\"if not self.backup_path:\"","commit_id":"5bf836ee51bccbd2f1a6145dd940b3da94bde92c"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"478cd799d3f127654104f1db6efb272ef01b7b15","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.backup_path \u003d backup_path"},{"line_number":80,"context_line":"        if not backup_path:"},{"line_number":81,"context_line":"            self.backup_path \u003d CONF.backup_path"},{"line_number":82,"context_line":"        if not backup_path:"},{"line_number":83,"context_line":"            raise exception.ConfigNotFound(_("},{"line_number":84,"context_line":"                \u0027Required flag %s is not set\u0027) % \u0027backup_path\u0027)"},{"line_number":85,"context_line":"        LOG.debug(\"Using backup repository: %s\", self.backup_path)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ad8896b_dde157d2","line":82,"in_reply_to":"7ad8896b_fda093a7","updated":"2015-05-11 18:42:48.000000000","message":"oh. your right. I\u0027ll fix this. Thanks.","commit_id":"5bf836ee51bccbd2f1a6145dd940b3da94bde92c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"978d3c47f9e62eb584ee713b96f020812e7de191","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    cfg.IntOpt(\u0027backup_sha_block_size_bytes\u0027,"},{"line_number":47,"context_line":"               default\u003dSHA_SIZE,"},{"line_number":48,"context_line":"               help\u003d\u0027The size in bytes that changes are tracked \u0027"},{"line_number":49,"context_line":"                    \u0027for incremental backups. backup_swift_object_size \u0027"},{"line_number":50,"context_line":"                    \u0027has to be multiple of backup_swift_block_size.\u0027),"},{"line_number":51,"context_line":"    cfg.BoolOpt(\u0027backup_enable_progress_timer\u0027,"},{"line_number":52,"context_line":"                default\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a0c5dc1_ad953741","line":49,"updated":"2015-05-12 12:26:06.000000000","message":"backup_file_size must be a multiple of backup_sha_block_size_bytes","commit_id":"20f4bee479dcd30a24954e7150daa5b4980b39b2"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"548c62e5fffd63956bc3dd365a0a475303326c0f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    cfg.IntOpt(\u0027backup_sha_block_size_bytes\u0027,"},{"line_number":47,"context_line":"               default\u003dSHA_SIZE,"},{"line_number":48,"context_line":"               help\u003d\u0027The size in bytes that changes are tracked \u0027"},{"line_number":49,"context_line":"                    \u0027for incremental backups. backup_swift_object_size \u0027"},{"line_number":50,"context_line":"                    \u0027has to be multiple of backup_swift_block_size.\u0027),"},{"line_number":51,"context_line":"    cfg.BoolOpt(\u0027backup_enable_progress_timer\u0027,"},{"line_number":52,"context_line":"                default\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a0c5dc1_68c4cd3f","line":49,"in_reply_to":"9a0c5dc1_ad953741","updated":"2015-05-12 12:44:11.000000000","message":"Done","commit_id":"20f4bee479dcd30a24954e7150daa5b4980b39b2"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"e0e7afd3a5fb322f9754e4c3bade994f7aa91fec","unresolved":false,"context_lines":[{"line_number":36,"context_line":"BACKUP_FILE_SIZE \u003d 61035 * 32768"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"posixbackup_service_opts \u003d ["},{"line_number":39,"context_line":"    cfg.IntOpt(\u0027backup_file_size\u0027,"},{"line_number":40,"context_line":"               default\u003dBACKUP_FILE_SIZE,"},{"line_number":41,"context_line":"               help\u003d\u0027The maximum size in bytes of the files used to hold \u0027"},{"line_number":42,"context_line":"                    \u0027backups. If the volume being backed up exceeds this \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"5afe65bd_1ce1e9d0","line":39,"updated":"2015-06-03 01:08:49.000000000","message":"It would be good if we could push these up in cinder.backup.driver and import the options. These are all duplicates of cinder.backup.drivers.nfs. This is also what we do with options in cinder.volume.drivers with volume drivers that share similar options. I would recommend to Tom on the NFS driver to also import the options from there.","commit_id":"dcadbf3a95acc981f5d96c9480cf745947c4f88f"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"835e4347e27c51fb879ba2880ca2c83a20f22faa","unresolved":false,"context_lines":[{"line_number":36,"context_line":"BACKUP_FILE_SIZE \u003d 61035 * 32768"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"posixbackup_service_opts \u003d ["},{"line_number":39,"context_line":"    cfg.IntOpt(\u0027backup_file_size\u0027,"},{"line_number":40,"context_line":"               default\u003dBACKUP_FILE_SIZE,"},{"line_number":41,"context_line":"               help\u003d\u0027The maximum size in bytes of the files used to hold \u0027"},{"line_number":42,"context_line":"                    \u0027backups. If the volume being backed up exceeds this \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af86dd1_df10fa50","line":39,"in_reply_to":"3afb71cf_10938cfb","updated":"2015-06-12 20:22:17.000000000","message":"@Mike Perez, Which way would you like to go with this one. Still want it moved to cinder.backup.driver or left in posix since its the root of all of the file system based drivers? I\u0027d be happy to move it if you still think it belongs there.","commit_id":"dcadbf3a95acc981f5d96c9480cf745947c4f88f"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"b1c51289bad63e7b54c4ab1c7a8ad719e8ac1def","unresolved":false,"context_lines":[{"line_number":36,"context_line":"BACKUP_FILE_SIZE \u003d 61035 * 32768"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"posixbackup_service_opts \u003d ["},{"line_number":39,"context_line":"    cfg.IntOpt(\u0027backup_file_size\u0027,"},{"line_number":40,"context_line":"               default\u003dBACKUP_FILE_SIZE,"},{"line_number":41,"context_line":"               help\u003d\u0027The maximum size in bytes of the files used to hold \u0027"},{"line_number":42,"context_line":"                    \u0027backups. If the volume being backed up exceeds this \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"3afb71cf_10938cfb","line":39,"in_reply_to":"3afb71cf_50d3a804","updated":"2015-06-10 11:19:19.000000000","message":"These options are indeed different between object and file based backup (e.g. container .v. path, file size .v. object size), so this is probably the right place for them","commit_id":"dcadbf3a95acc981f5d96c9480cf745947c4f88f"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"0da35f647e708a4b13b3a835a63a29c4c92a0d8e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"BACKUP_FILE_SIZE \u003d 61035 * 32768"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"posixbackup_service_opts \u003d ["},{"line_number":39,"context_line":"    cfg.IntOpt(\u0027backup_file_size\u0027,"},{"line_number":40,"context_line":"               default\u003dBACKUP_FILE_SIZE,"},{"line_number":41,"context_line":"               help\u003d\u0027The maximum size in bytes of the files used to hold \u0027"},{"line_number":42,"context_line":"                    \u0027backups. If the volume being backed up exceeds this \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"3afb71cf_50d3a804","line":39,"in_reply_to":"5afe65bd_1ce1e9d0","updated":"2015-06-08 15:21:11.000000000","message":"@ Mike,\n\nThis patch https://review.openstack.org/#/c/163647/11/cinder/backup/drivers/nfs.py, removes the duplicated configuration parameters from nfs backup driver.\n\nAnd these config options are specific to file system based drivers (nfs and glusterfs). So I think this (cinder.backup.drivers.posix) it the correct place, then \"cinder.backup.driver\".\n\nPlease share your thoughts...","commit_id":"dcadbf3a95acc981f5d96c9480cf745947c4f88f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1320450fee0c46a5915a85f7d82ea6752f31b20c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"               default\u003dSHA_SIZE,"},{"line_number":48,"context_line":"               help\u003d\u0027The size in bytes that changes are tracked \u0027"},{"line_number":49,"context_line":"                    \u0027for incremental backups. backup_swift_object_size \u0027"},{"line_number":50,"context_line":"                    \u0027has to be multiple of backup_swift_block_size.\u0027),"},{"line_number":51,"context_line":"    cfg.BoolOpt(\u0027backup_enable_progress_timer\u0027,"},{"line_number":52,"context_line":"                default\u003dTrue,"},{"line_number":53,"context_line":"                help\u003d\u0027Enable or Disable the timer to send the periodic \u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa32b979_111796a4","line":50,"updated":"2015-06-13 02:14:33.000000000","message":"Looks like we\u0027ve inadvertently reverted commit\n\n75d2eba05182acffad20d863a25c040bf601e38c\n\nwhich cleaned up this leftover reference to swift object size in the file based backup drivers.","commit_id":"79ced995a1d0a754a5840aa46a216621563204aa"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"ffa35d67d514f359d5ee5586ee14861c5e54d481","unresolved":false,"context_lines":[{"line_number":47,"context_line":"               default\u003dSHA_SIZE,"},{"line_number":48,"context_line":"               help\u003d\u0027The size in bytes that changes are tracked \u0027"},{"line_number":49,"context_line":"                    \u0027for incremental backups. backup_swift_object_size \u0027"},{"line_number":50,"context_line":"                    \u0027has to be multiple of backup_swift_block_size.\u0027),"},{"line_number":51,"context_line":"    cfg.BoolOpt(\u0027backup_enable_progress_timer\u0027,"},{"line_number":52,"context_line":"                default\u003dTrue,"},{"line_number":53,"context_line":"                help\u003d\u0027Enable or Disable the timer to send the periodic \u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa32b979_1dffa402","line":50,"in_reply_to":"fa32b979_111796a4","updated":"2015-06-13 13:44:14.000000000","message":"Done","commit_id":"79ced995a1d0a754a5840aa46a216621563204aa"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"c6d23a55c55bcf75f11a9384248b6498f2da26fc","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        path \u003d os.path.join(self.backup_path, container)"},{"line_number":97,"context_line":"        if not os.path.exists(path):"},{"line_number":98,"context_line":"            os.makedirs(path)"},{"line_number":99,"context_line":"            os.chmod(path, 0o770)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def get_container_entries(self, container, prefix):"},{"line_number":102,"context_line":"        path \u003d os.path.join(self.backup_path, container)"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa32b979_66d5ed41","line":99,"updated":"2015-06-15 02:38:28.000000000","message":"Can you put 0o770 into a more meaningful variable?","commit_id":"3e5f3a9f8c6985219f2569bfd58d13ed8a13367b"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"c6d23a55c55bcf75f11a9384248b6498f2da26fc","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    def get_object_writer(self, container, object_name, extra_metadata\u003dNone):"},{"line_number":106,"context_line":"        path \u003d os.path.join(self.backup_path, container, object_name)"},{"line_number":107,"context_line":"        file \u003d open(path, \u0027w\u0027)"},{"line_number":108,"context_line":"        os.chmod(path, 0o660)"},{"line_number":109,"context_line":"        return file"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def get_object_reader(self, container, object_name, extra_metadata\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa32b979_c6c4f993","line":108,"updated":"2015-06-15 02:38:28.000000000","message":"Can you put 0o660 into a more meaningful variable?","commit_id":"3e5f3a9f8c6985219f2569bfd58d13ed8a13367b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4967dcbd926a15455e038d673e94364592c9c2e2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"BACKUP_FILE_SIZE \u003d 61035 * 32768"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"posixbackup_service_opts \u003d ["},{"line_number":40,"context_line":"    cfg.IntOpt(\u0027backup_file_size\u0027,"},{"line_number":41,"context_line":"               default\u003dBACKUP_FILE_SIZE,"},{"line_number":42,"context_line":"               help\u003d\u0027The maximum size in bytes of the files used to hold \u0027"},{"line_number":43,"context_line":"                    \u0027backups. If the volume being backed up exceeds this \u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_b95dbe48","line":40,"updated":"2015-06-17 21:39:20.000000000","message":"All of the swift options have backup_swift_ as the prefix. We should follow the same convention and name these backup_posix_xxx.","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"880e65051788118da0abea8f082f6d6fc148398c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"BACKUP_FILE_SIZE \u003d 61035 * 32768"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"posixbackup_service_opts \u003d ["},{"line_number":40,"context_line":"    cfg.IntOpt(\u0027backup_file_size\u0027,"},{"line_number":41,"context_line":"               default\u003dBACKUP_FILE_SIZE,"},{"line_number":42,"context_line":"               help\u003d\u0027The maximum size in bytes of the files used to hold \u0027"},{"line_number":43,"context_line":"                    \u0027backups. If the volume being backed up exceeds this \u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_9ef8784b","line":40,"in_reply_to":"fa32b979_b95dbe48","updated":"2015-07-06 09:54:10.000000000","message":"Done","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4967dcbd926a15455e038d673e94364592c9c2e2","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            self.backup_path \u003d CONF.backup_path"},{"line_number":85,"context_line":"        if not self.backup_path:"},{"line_number":86,"context_line":"            raise exception.ConfigNotFound(_("},{"line_number":87,"context_line":"                \u0027Required flag %s is not set\u0027) % \u0027backup_path\u0027)"},{"line_number":88,"context_line":"        LOG.debug(\"Using backup repository: %s\", self.backup_path)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def update_container_name(self, backup, container):"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_996f9a2a","line":87,"updated":"2015-06-17 21:39:20.000000000","message":"raise exception.ConfigNotFound(path\u003d\u0027backup_path\u0027)\n\nclass ConfigNotFound(NotFound):\n    message \u003d _(\"Could not find config at %(path)s\")","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"880e65051788118da0abea8f082f6d6fc148398c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            self.backup_path \u003d CONF.backup_path"},{"line_number":85,"context_line":"        if not self.backup_path:"},{"line_number":86,"context_line":"            raise exception.ConfigNotFound(_("},{"line_number":87,"context_line":"                \u0027Required flag %s is not set\u0027) % \u0027backup_path\u0027)"},{"line_number":88,"context_line":"        LOG.debug(\"Using backup repository: %s\", self.backup_path)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def update_container_name(self, backup, container):"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_3ed28c35","line":87,"in_reply_to":"fa32b979_996f9a2a","updated":"2015-07-06 09:54:10.000000000","message":"Done","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4967dcbd926a15455e038d673e94364592c9c2e2","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        path \u003d os.path.join(self.backup_path, container)"},{"line_number":98,"context_line":"        if not os.path.exists(path):"},{"line_number":99,"context_line":"            os.makedirs(path)"},{"line_number":100,"context_line":"            permissions \u003d \\"},{"line_number":101,"context_line":"                stat.S_IRUSR | \\"},{"line_number":102,"context_line":"                stat.S_IWUSR | \\"},{"line_number":103,"context_line":"                stat.S_IXUSR | \\"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_d9576258","line":100,"updated":"2015-06-17 21:39:20.000000000","message":"Please use () instead of \\","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"880e65051788118da0abea8f082f6d6fc148398c","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        path \u003d os.path.join(self.backup_path, container)"},{"line_number":98,"context_line":"        if not os.path.exists(path):"},{"line_number":99,"context_line":"            os.makedirs(path)"},{"line_number":100,"context_line":"            permissions \u003d \\"},{"line_number":101,"context_line":"                stat.S_IRUSR | \\"},{"line_number":102,"context_line":"                stat.S_IWUSR | \\"},{"line_number":103,"context_line":"                stat.S_IXUSR | \\"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_9ec4f85f","line":100,"in_reply_to":"fa32b979_d9576258","updated":"2015-07-06 09:54:10.000000000","message":"Done","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"57418b7feded7374aeda86b25aa4f187fe22c91e","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def get_object_writer(self, container, object_name, extra_metadata\u003dNone):"},{"line_number":114,"context_line":"        path \u003d os.path.join(self.backup_path, container, object_name)"},{"line_number":115,"context_line":"        file \u003d open(path, \u0027w\u0027)"},{"line_number":116,"context_line":"        permissions \u003d \\"},{"line_number":117,"context_line":"            stat.S_IRUSR | \\"},{"line_number":118,"context_line":"            stat.S_IWUSR | \\"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_3ea0109f","line":115,"updated":"2015-06-16 09:20:05.000000000","message":"Shadows built-in name \u0027file\u0027.","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"880e65051788118da0abea8f082f6d6fc148398c","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def get_object_writer(self, container, object_name, extra_metadata\u003dNone):"},{"line_number":114,"context_line":"        path \u003d os.path.join(self.backup_path, container, object_name)"},{"line_number":115,"context_line":"        file \u003d open(path, \u0027w\u0027)"},{"line_number":116,"context_line":"        permissions \u003d \\"},{"line_number":117,"context_line":"            stat.S_IRUSR | \\"},{"line_number":118,"context_line":"            stat.S_IWUSR | \\"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_1eaf8895","line":115,"in_reply_to":"fa32b979_3ea0109f","updated":"2015-07-06 09:54:10.000000000","message":"Done","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4967dcbd926a15455e038d673e94364592c9c2e2","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    def get_object_writer(self, container, object_name, extra_metadata\u003dNone):"},{"line_number":114,"context_line":"        path \u003d os.path.join(self.backup_path, container, object_name)"},{"line_number":115,"context_line":"        file \u003d open(path, \u0027w\u0027)"},{"line_number":116,"context_line":"        permissions \u003d \\"},{"line_number":117,"context_line":"            stat.S_IRUSR | \\"},{"line_number":118,"context_line":"            stat.S_IWUSR | \\"},{"line_number":119,"context_line":"            stat.S_IRGRP | \\"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_39ce8e2e","line":116,"updated":"2015-06-17 21:39:20.000000000","message":"()","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"880e65051788118da0abea8f082f6d6fc148398c","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    def get_object_writer(self, container, object_name, extra_metadata\u003dNone):"},{"line_number":114,"context_line":"        path \u003d os.path.join(self.backup_path, container, object_name)"},{"line_number":115,"context_line":"        file \u003d open(path, \u0027w\u0027)"},{"line_number":116,"context_line":"        permissions \u003d \\"},{"line_number":117,"context_line":"            stat.S_IRUSR | \\"},{"line_number":118,"context_line":"            stat.S_IWUSR | \\"},{"line_number":119,"context_line":"            stat.S_IRGRP | \\"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_be945c44","line":116,"in_reply_to":"fa32b979_39ce8e2e","updated":"2015-07-06 09:54:10.000000000","message":"Done","commit_id":"a59374ea55886fd6fdd46ecb692389f250c3bd34"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"3e6c1ca9cf1d2dad17d3a851be84d4ac62ab7ff2","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from cinder.backup import chunkeddriver"},{"line_number":28,"context_line":"from cinder import exception"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ba3cc151_08b4bd32","line":29,"updated":"2015-07-08 09:46:33.000000000","message":"i think one blank line is enough","commit_id":"fcb54d88cc3e9b967ebad9b7e2cdc7cb6b02acf9"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"3e6c1ca9cf1d2dad17d3a851be84d4ac62ab7ff2","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"SHA_SIZE \u003d 32768"},{"line_number":35,"context_line":"# Multiple of SHA_SIZE, close to a characteristic OS max file system size."}],"source_content_type":"text/x-python","patch_set":17,"id":"ba3cc151_2898a1bf","line":32,"updated":"2015-07-08 09:46:33.000000000","message":"i think one blank line is enough","commit_id":"fcb54d88cc3e9b967ebad9b7e2cdc7cb6b02acf9"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"2d49dc543fb6397808dfeee7787781b1c7f88e62","unresolved":false,"context_lines":[{"line_number":34,"context_line":"BACKUP_FILE_SIZE \u003d 61035 * 32768"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"posixbackup_service_opts \u003d ["},{"line_number":37,"context_line":"    cfg.IntOpt(\u0027backup_posix_file_size\u0027,"},{"line_number":38,"context_line":"               default\u003dBACKUP_FILE_SIZE,"},{"line_number":39,"context_line":"               help\u003d\u0027The maximum size in bytes of the files used to hold \u0027"},{"line_number":40,"context_line":"                    \u0027backups. If the volume being backed up exceeds this \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_acc6e197","line":37,"updated":"2015-07-15 10:24:44.000000000","message":"You can\u0027t just rename options, that breaks back-compatibility","commit_id":"3b6c4207d9808095d92b394a444707ea2cc1ba93"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"5babc98f80c322f51e653146a70d15ef8f0774d2","unresolved":false,"context_lines":[{"line_number":34,"context_line":"BACKUP_FILE_SIZE \u003d 61035 * 32768"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"posixbackup_service_opts \u003d ["},{"line_number":37,"context_line":"    cfg.IntOpt(\u0027backup_posix_file_size\u0027,"},{"line_number":38,"context_line":"               default\u003dBACKUP_FILE_SIZE,"},{"line_number":39,"context_line":"               deprecated_name\u003d\u0027backup_file_size\u0027,"},{"line_number":40,"context_line":"               help\u003d\u0027The maximum size in bytes of the files used to hold \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_46502832","line":37,"updated":"2015-07-16 02:37:33.000000000","message":"s/backup_posix/backup_/","commit_id":"42df4f376e26cc92cc9af628fe515b77a6c99f12"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"30e98b174161ee62f545b3d9ad541464713a3a63","unresolved":false,"context_lines":[{"line_number":34,"context_line":"BACKUP_FILE_SIZE \u003d 61035 * 32768"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"posixbackup_service_opts \u003d ["},{"line_number":37,"context_line":"    cfg.IntOpt(\u0027backup_posix_file_size\u0027,"},{"line_number":38,"context_line":"               default\u003dBACKUP_FILE_SIZE,"},{"line_number":39,"context_line":"               deprecated_name\u003d\u0027backup_file_size\u0027,"},{"line_number":40,"context_line":"               help\u003d\u0027The maximum size in bytes of the files used to hold \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_6f708b0b","line":37,"in_reply_to":"9a41bdd9_46502832","updated":"2015-07-16 11:32:00.000000000","message":"Done","commit_id":"42df4f376e26cc92cc9af628fe515b77a6c99f12"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"5babc98f80c322f51e653146a70d15ef8f0774d2","unresolved":false,"context_lines":[{"line_number":36,"context_line":"posixbackup_service_opts \u003d ["},{"line_number":37,"context_line":"    cfg.IntOpt(\u0027backup_posix_file_size\u0027,"},{"line_number":38,"context_line":"               default\u003dBACKUP_FILE_SIZE,"},{"line_number":39,"context_line":"               deprecated_name\u003d\u0027backup_file_size\u0027,"},{"line_number":40,"context_line":"               help\u003d\u0027The maximum size in bytes of the files used to hold \u0027"},{"line_number":41,"context_line":"                    \u0027backups. If the volume being backed up exceeds this \u0027"},{"line_number":42,"context_line":"                    \u0027size, then it will be backed up into multiple files.\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_c65c384d","line":39,"updated":"2015-07-16 02:37:33.000000000","message":"drop the deprecated_name","commit_id":"42df4f376e26cc92cc9af628fe515b77a6c99f12"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"30e98b174161ee62f545b3d9ad541464713a3a63","unresolved":false,"context_lines":[{"line_number":36,"context_line":"posixbackup_service_opts \u003d ["},{"line_number":37,"context_line":"    cfg.IntOpt(\u0027backup_posix_file_size\u0027,"},{"line_number":38,"context_line":"               default\u003dBACKUP_FILE_SIZE,"},{"line_number":39,"context_line":"               deprecated_name\u003d\u0027backup_file_size\u0027,"},{"line_number":40,"context_line":"               help\u003d\u0027The maximum size in bytes of the files used to hold \u0027"},{"line_number":41,"context_line":"                    \u0027backups. If the volume being backed up exceeds this \u0027"},{"line_number":42,"context_line":"                    \u0027size, then it will be backed up into multiple files.\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_2f760306","line":39,"in_reply_to":"9a41bdd9_c65c384d","updated":"2015-07-16 11:32:00.000000000","message":"Done","commit_id":"42df4f376e26cc92cc9af628fe515b77a6c99f12"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"5babc98f80c322f51e653146a70d15ef8f0774d2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    \u0027backup_posix_sha_block_size_bytes.\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027backup_posix_sha_block_size_bytes\u0027,"},{"line_number":46,"context_line":"               default\u003dSHA_SIZE,"},{"line_number":47,"context_line":"               deprecated_name\u003d\u0027backup_sha_block_size_bytes\u0027,"},{"line_number":48,"context_line":"               help\u003d\u0027The size in bytes that changes are tracked \u0027"},{"line_number":49,"context_line":"                    \u0027for incremental backups. backup_posix_file_size has \u0027"},{"line_number":50,"context_line":"                    \u0027to be multiple of backup_posix_sha_block_size_bytes.\u0027),"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_c623d8bb","line":47,"updated":"2015-07-16 02:37:33.000000000","message":"keep backup_sha_block_size_bytes as the option name","commit_id":"42df4f376e26cc92cc9af628fe515b77a6c99f12"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"30e98b174161ee62f545b3d9ad541464713a3a63","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    \u0027backup_posix_sha_block_size_bytes.\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027backup_posix_sha_block_size_bytes\u0027,"},{"line_number":46,"context_line":"               default\u003dSHA_SIZE,"},{"line_number":47,"context_line":"               deprecated_name\u003d\u0027backup_sha_block_size_bytes\u0027,"},{"line_number":48,"context_line":"               help\u003d\u0027The size in bytes that changes are tracked \u0027"},{"line_number":49,"context_line":"                    \u0027for incremental backups. backup_posix_file_size has \u0027"},{"line_number":50,"context_line":"                    \u0027to be multiple of backup_posix_sha_block_size_bytes.\u0027),"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_4f71070b","line":47,"in_reply_to":"9a41bdd9_c623d8bb","updated":"2015-07-16 11:32:00.000000000","message":"Done","commit_id":"42df4f376e26cc92cc9af628fe515b77a6c99f12"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"5babc98f80c322f51e653146a70d15ef8f0774d2","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    \u0027to be multiple of backup_posix_sha_block_size_bytes.\u0027),"},{"line_number":51,"context_line":"    cfg.BoolOpt(\u0027backup_posix_enable_progress_timer\u0027,"},{"line_number":52,"context_line":"                default\u003dTrue,"},{"line_number":53,"context_line":"                deprecated_name\u003d\u0027backup_enable_progress_timer\u0027,"},{"line_number":54,"context_line":"                help\u003d\u0027Enable or Disable the timer to send the periodic \u0027"},{"line_number":55,"context_line":"                     \u0027progress notifications to Ceilometer when backing \u0027"},{"line_number":56,"context_line":"                     \u0027up the volume to the backend storage. The \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_8629509d","line":53,"updated":"2015-07-16 02:37:33.000000000","message":"keep backup_enable_progress_timer for the option name","commit_id":"42df4f376e26cc92cc9af628fe515b77a6c99f12"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"30e98b174161ee62f545b3d9ad541464713a3a63","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    \u0027to be multiple of backup_posix_sha_block_size_bytes.\u0027),"},{"line_number":51,"context_line":"    cfg.BoolOpt(\u0027backup_posix_enable_progress_timer\u0027,"},{"line_number":52,"context_line":"                default\u003dTrue,"},{"line_number":53,"context_line":"                deprecated_name\u003d\u0027backup_enable_progress_timer\u0027,"},{"line_number":54,"context_line":"                help\u003d\u0027Enable or Disable the timer to send the periodic \u0027"},{"line_number":55,"context_line":"                     \u0027progress notifications to Ceilometer when backing \u0027"},{"line_number":56,"context_line":"                     \u0027up the volume to the backend storage. The \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_af58d38a","line":53,"in_reply_to":"9a41bdd9_8629509d","updated":"2015-07-16 11:32:00.000000000","message":"Done","commit_id":"42df4f376e26cc92cc9af628fe515b77a6c99f12"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"5babc98f80c322f51e653146a70d15ef8f0774d2","unresolved":false,"context_lines":[{"line_number":59,"context_line":"               default\u003d\u0027$state_path/backup\u0027,"},{"line_number":60,"context_line":"               help\u003d\u0027Path specifying where to store backups.\u0027),"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027backup_posix_container\u0027,"},{"line_number":62,"context_line":"               deprecated_name\u003d\u0027backup_container\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027Custom container to use for backups.\u0027),"},{"line_number":64,"context_line":"]"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_461ee870","line":62,"updated":"2015-07-16 02:37:33.000000000","message":"keep backup_container","commit_id":"42df4f376e26cc92cc9af628fe515b77a6c99f12"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"30e98b174161ee62f545b3d9ad541464713a3a63","unresolved":false,"context_lines":[{"line_number":59,"context_line":"               default\u003d\u0027$state_path/backup\u0027,"},{"line_number":60,"context_line":"               help\u003d\u0027Path specifying where to store backups.\u0027),"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027backup_posix_container\u0027,"},{"line_number":62,"context_line":"               deprecated_name\u003d\u0027backup_container\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027Custom container to use for backups.\u0027),"},{"line_number":64,"context_line":"]"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_cf5bd784","line":62,"in_reply_to":"9a41bdd9_461ee870","updated":"2015-07-16 11:32:00.000000000","message":"Done","commit_id":"42df4f376e26cc92cc9af628fe515b77a6c99f12"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"a4412bdd64562f6e3d46a65a4949c852723420f8","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    cfg.StrOpt(\u0027backup_posix_path\u0027,"},{"line_number":56,"context_line":"               default\u003d\u0027$state_path/backup\u0027,"},{"line_number":57,"context_line":"               help\u003d\u0027Path specifying where to store backups.\u0027),"},{"line_number":58,"context_line":"    cfg.StrOpt(\u0027backup_container\u0027,"},{"line_number":59,"context_line":"               help\u003d\u0027Custom container to use for backups.\u0027),"},{"line_number":60,"context_line":"]"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9a41bdd9_0ac0cd4e","line":58,"updated":"2015-07-16 11:41:28.000000000","message":"What is this used for exactly?  I\u0027m not sure if it\u0027s needed... if it is, it needs a better description.","commit_id":"79ae017dbe15ffc0c38f5f0a5ea7f857ae6fe6f6"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"5d9561b25568a297c37e65509fbd82bec80906d8","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    cfg.StrOpt(\u0027backup_posix_path\u0027,"},{"line_number":56,"context_line":"               default\u003d\u0027$state_path/backup\u0027,"},{"line_number":57,"context_line":"               help\u003d\u0027Path specifying where to store backups.\u0027),"},{"line_number":58,"context_line":"    cfg.StrOpt(\u0027backup_container\u0027,"},{"line_number":59,"context_line":"               help\u003d\u0027Custom container to use for backups.\u0027),"},{"line_number":60,"context_line":"]"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9a41bdd9_8a6b7d1d","line":58,"in_reply_to":"9a41bdd9_0ac0cd4e","updated":"2015-07-16 12:00:59.000000000","message":"It\u0027s for compatibility with Swift.  The common business logic across these drivers puts backup objects into a \"container.\"  In Swift this has a clear meaning.  For file system backup repositories, the container is implemented as a directory in the posix file path that the contains backup files for a particular backup operation.\n\nI do take the point that it\u0027s not really clear what allowing the container name to be changed via config gains for file-system based backup repository drivers, but at this point we likely need to leave it for backwards compatibility.\n\nMaybe the help message should say \u0027Custom directory to use for backups.\u0027 ?","commit_id":"79ae017dbe15ffc0c38f5f0a5ea7f857ae6fe6f6"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"2556bfe49591979b8e57ac5de9f7d04047b7ab36","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    cfg.StrOpt(\u0027backup_posix_path\u0027,"},{"line_number":56,"context_line":"               default\u003d\u0027$state_path/backup\u0027,"},{"line_number":57,"context_line":"               help\u003d\u0027Path specifying where to store backups.\u0027),"},{"line_number":58,"context_line":"    cfg.StrOpt(\u0027backup_container\u0027,"},{"line_number":59,"context_line":"               help\u003d\u0027Custom container to use for backups.\u0027),"},{"line_number":60,"context_line":"]"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9a41bdd9_5efbf678","line":58,"in_reply_to":"9a41bdd9_8a6b7d1d","updated":"2015-07-16 12:13:36.000000000","message":"Done","commit_id":"79ae017dbe15ffc0c38f5f0a5ea7f857ae6fe6f6"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8e1304ee0b87e319dc7d9a0b9d139d0f085009c6","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    cfg.StrOpt(\u0027backup_posix_path\u0027,"},{"line_number":56,"context_line":"               default\u003d\u0027$state_path/backup\u0027,"},{"line_number":57,"context_line":"               help\u003d\u0027Path specifying where to store backups.\u0027),"},{"line_number":58,"context_line":"    cfg.StrOpt(\u0027backup_container\u0027,"},{"line_number":59,"context_line":"               help\u003d\u0027Custom container to use for backups.\u0027),"},{"line_number":60,"context_line":"]"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9a41bdd9_9e397ef4","line":58,"in_reply_to":"9a41bdd9_8a6b7d1d","updated":"2015-07-16 12:11:06.000000000","message":"Yeah, that\u0027s fine if the help message indicates that it refers to a directory.  Right now it\u0027s not clear at all what the option means.","commit_id":"79ae017dbe15ffc0c38f5f0a5ea7f857ae6fe6f6"}]}
