)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"740e768bed8c0044ad75c07bd12920c6c0d822a9","unresolved":false,"context_lines":[{"line_number":11,"context_line":"remaining space on a pool when thin-provisioned Cinder Volumes are in"},{"line_number":12,"context_line":"use on an NFS backend."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Doc-impact"},{"line_number":15,"context_line":"Co-Authored-By: Clinton Knight \u003ccknight@netapp.com\u003e"},{"line_number":16,"context_line":"Co-Authored-By: Mike Rooney \u003crooneym@netapp.com\u003e"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da20952f_355dd5ec","line":14,"updated":"2015-09-02 00:44:49.000000000","message":"This should be DocImpact to have any affect.","commit_id":"cf0b3d1f20afe278afc93478b81968602b823673"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"b20db204fd324157d760372028e66f370a70830e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"remaining space on a pool when thin-provisioned Cinder Volumes are in"},{"line_number":12,"context_line":"use on an NFS backend."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Doc-impact"},{"line_number":15,"context_line":"Co-Authored-By: Clinton Knight \u003ccknight@netapp.com\u003e"},{"line_number":16,"context_line":"Co-Authored-By: Mike Rooney \u003crooneym@netapp.com\u003e"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da20952f_55808846","line":14,"in_reply_to":"da20952f_355dd5ec","updated":"2015-09-02 00:53:54.000000000","message":"Thanks, I\u0027ll fix.","commit_id":"cf0b3d1f20afe278afc93478b81968602b823673"}],"cinder/tests/unit/test_nfs.py":[{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"84dc551728290e96083b0f71b2172fd88d5f778c","unresolved":false,"context_lines":[{"line_number":937,"context_line":"        oversub_ratio \u003d self._driver._get_over_subscription_ratio()"},{"line_number":938,"context_line":""},{"line_number":939,"context_line":"        if nfs_oversub_ratio \u003d\u003d 1.0:"},{"line_number":940,"context_line":"            self.assertEqual(oversub_ratio, 1.0)"},{"line_number":941,"context_line":"            self.assertFalse(nfs.LOG.info.called)"},{"line_number":942,"context_line":"        else:"},{"line_number":943,"context_line":"            self.assertEqual(oversub_ratio, nfs_oversub_ratio)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_160f5489","line":940,"updated":"2015-08-24 13:35:41.000000000","message":"self.assertEqual(1.0, oversub_ratio)","commit_id":"9d467b5b3654004473aa3982244933f410bce2ac"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"84dc551728290e96083b0f71b2172fd88d5f778c","unresolved":false,"context_lines":[{"line_number":940,"context_line":"            self.assertEqual(oversub_ratio, 1.0)"},{"line_number":941,"context_line":"            self.assertFalse(nfs.LOG.info.called)"},{"line_number":942,"context_line":"        else:"},{"line_number":943,"context_line":"            self.assertEqual(oversub_ratio, nfs_oversub_ratio)"},{"line_number":944,"context_line":"            self.assertTrue(nfs.LOG.info.called)"},{"line_number":945,"context_line":""},{"line_number":946,"context_line":"    @ddt.data({\u0027nfs_used_ratio\u0027: 0.95},"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_36605835","line":943,"updated":"2015-08-24 13:35:41.000000000","message":"self.assertEqual(nfs_oversub_ratio, oversub_ratio)","commit_id":"9d467b5b3654004473aa3982244933f410bce2ac"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"84dc551728290e96083b0f71b2172fd88d5f778c","unresolved":false,"context_lines":[{"line_number":956,"context_line":"                                     / 100.0)"},{"line_number":957,"context_line":""},{"line_number":958,"context_line":"        if nfs_used_ratio \u003d\u003d 0.95:"},{"line_number":959,"context_line":"            self.assertEqual(used_ratio, non_legacy_used_ratio)"},{"line_number":960,"context_line":"            self.assertFalse(nfs.LOG.info.called)"},{"line_number":961,"context_line":"        else:"},{"line_number":962,"context_line":"            self.assertEqual(used_ratio, nfs_used_ratio)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_96e04498","line":959,"updated":"2015-08-24 13:35:41.000000000","message":"Ditto","commit_id":"9d467b5b3654004473aa3982244933f410bce2ac"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"84dc551728290e96083b0f71b2172fd88d5f778c","unresolved":false,"context_lines":[{"line_number":959,"context_line":"            self.assertEqual(used_ratio, non_legacy_used_ratio)"},{"line_number":960,"context_line":"            self.assertFalse(nfs.LOG.info.called)"},{"line_number":961,"context_line":"        else:"},{"line_number":962,"context_line":"            self.assertEqual(used_ratio, nfs_used_ratio)"},{"line_number":963,"context_line":"            self.assertTrue(nfs.LOG.info.called)"},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"    @ddt.data({\u0027nfs_used_ratio\u0027: 0.95, \u0027nfs_reserved_percentage\u0027: 0.05},"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_56f14c69","line":962,"updated":"2015-08-24 13:35:41.000000000","message":"Ditto","commit_id":"9d467b5b3654004473aa3982244933f410bce2ac"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"740e768bed8c0044ad75c07bd12920c6c0d822a9","unresolved":false,"context_lines":[{"line_number":627,"context_line":"        self.assertEqual(1, remotefs.LOG.error.call_count)"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"    def test_find_share_should_throw_error_if_there_is_no_mounted_share(self):"},{"line_number":630,"context_line":"        \"\"\"_find_share should throw error if there is no mounted shares.\"\"\""},{"line_number":631,"context_line":"        drv \u003d self._driver"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"        drv._mounted_shares \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_35b955ed","line":630,"updated":"2015-09-02 00:44:49.000000000","message":"not really related to this patch, plus you change the method name and not the comment","commit_id":"cf0b3d1f20afe278afc93478b81968602b823673"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"b20db204fd324157d760372028e66f370a70830e","unresolved":false,"context_lines":[{"line_number":627,"context_line":"        self.assertEqual(1, remotefs.LOG.error.call_count)"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"    def test_find_share_should_throw_error_if_there_is_no_mounted_share(self):"},{"line_number":630,"context_line":"        \"\"\"_find_share should throw error if there is no mounted shares.\"\"\""},{"line_number":631,"context_line":"        drv \u003d self._driver"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"        drv._mounted_shares \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_d5ba580a","line":630,"in_reply_to":"da20952f_35b955ed","updated":"2015-09-02 00:53:54.000000000","message":"Good point.  Let me know if you want me to run this through our CI and approval process for this screw-up.","commit_id":"cf0b3d1f20afe278afc93478b81968602b823673"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"740e768bed8c0044ad75c07bd12920c6c0d822a9","unresolved":false,"context_lines":[{"line_number":664,"context_line":"        mox.VerifyAll()"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    def test_find_share_should_throw_error_if_there_is_not_enough_space(self):"},{"line_number":667,"context_line":"        \"\"\"_find_share should throw error if there is no share to host vol.\"\"\""},{"line_number":668,"context_line":"        mox \u003d self.mox"},{"line_number":669,"context_line":"        drv \u003d self._driver"},{"line_number":670,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_959b8172","line":667,"updated":"2015-09-02 00:44:49.000000000","message":"same as above","commit_id":"cf0b3d1f20afe278afc93478b81968602b823673"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"b20db204fd324157d760372028e66f370a70830e","unresolved":false,"context_lines":[{"line_number":664,"context_line":"        mox.VerifyAll()"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    def test_find_share_should_throw_error_if_there_is_not_enough_space(self):"},{"line_number":667,"context_line":"        \"\"\"_find_share should throw error if there is no share to host vol.\"\"\""},{"line_number":668,"context_line":"        mox \u003d self.mox"},{"line_number":669,"context_line":"        drv \u003d self._driver"},{"line_number":670,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_953b809c","line":667,"in_reply_to":"da20952f_959b8172","updated":"2015-09-02 00:53:54.000000000","message":"ditto","commit_id":"cf0b3d1f20afe278afc93478b81968602b823673"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/test_nfs_7mode.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9c249f97fab6cd6ad20b88a3bff5f1e6fb1b55","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                     \u0027thin_provisioning_support\u0027: not thick,"},{"line_number":84,"context_line":"                     \u0027free_capacity_gb\u0027: 12.0,"},{"line_number":85,"context_line":"                     \u0027total_capacity_gb\u0027: 4468.0,"},{"line_number":86,"context_line":"                     \u0027reserved_percentage\u0027: 7}]"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        self.assertEqual(expected, result)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_20575e59","line":86,"updated":"2015-08-29 03:02:11.000000000","message":"pprovisioned_capacity_gb and max_over_subscription_ratio are missing.","commit_id":"e739b9e051df480c6e2869751108f95df4c6b383"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"18c222f7409cc1b8fd9c7f73f0cac5f0ee74514c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                     \u0027thin_provisioning_support\u0027: not thick,"},{"line_number":84,"context_line":"                     \u0027free_capacity_gb\u0027: 12.0,"},{"line_number":85,"context_line":"                     \u0027total_capacity_gb\u0027: 4468.0,"},{"line_number":86,"context_line":"                     \u0027reserved_percentage\u0027: 7}]"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        self.assertEqual(expected, result)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_d667474b","line":86,"in_reply_to":"da20952f_20575e59","updated":"2015-08-29 16:06:43.000000000","message":"Done","commit_id":"e739b9e051df480c6e2869751108f95df4c6b383"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/test_nfs_cmode.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9c249f97fab6cd6ad20b88a3bff5f1e6fb1b55","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            \u0027reserved_percentage\u0027: fake.RESERVED_PERCENTAGE,"},{"line_number":127,"context_line":"            \u0027total_capacity_gb\u0027: total_capacity_gb,"},{"line_number":128,"context_line":"            \u0027free_capacity_gb\u0027: free_capacity_gb,"},{"line_number":129,"context_line":"        }"},{"line_number":130,"context_line":"        self.mock_object(self.driver,"},{"line_number":131,"context_line":"                         \u0027_get_share_capacity_info\u0027,"},{"line_number":132,"context_line":"                         mock.Mock(return_value\u003dcapacity))"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_20de7edd","line":129,"updated":"2015-08-29 03:02:11.000000000","message":"provisioned_capacity_gb should be in this test.","commit_id":"e739b9e051df480c6e2869751108f95df4c6b383"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"18c222f7409cc1b8fd9c7f73f0cac5f0ee74514c","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            \u0027reserved_percentage\u0027: fake.RESERVED_PERCENTAGE,"},{"line_number":127,"context_line":"            \u0027total_capacity_gb\u0027: total_capacity_gb,"},{"line_number":128,"context_line":"            \u0027free_capacity_gb\u0027: free_capacity_gb,"},{"line_number":129,"context_line":"        }"},{"line_number":130,"context_line":"        self.mock_object(self.driver,"},{"line_number":131,"context_line":"                         \u0027_get_share_capacity_info\u0027,"},{"line_number":132,"context_line":"                         mock.Mock(return_value\u003dcapacity))"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_56549751","line":129,"in_reply_to":"da20952f_20de7edd","updated":"2015-08-29 16:06:43.000000000","message":"Done","commit_id":"e739b9e051df480c6e2869751108f95df4c6b383"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9c249f97fab6cd6ad20b88a3bff5f1e6fb1b55","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                     \u0027reserved_percentage\u0027: 7,"},{"line_number":150,"context_line":"                     \u0027netapp_raid_type\u0027: \u0027raiddp\u0027,"},{"line_number":151,"context_line":"                     \u0027netapp_disk_type\u0027: \u0027SSD\u0027,"},{"line_number":152,"context_line":"                     \u0027netapp_nodedup\u0027: \u0027true\u0027}]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        self.assertEqual(expected, result)"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_a0f04e68","line":152,"updated":"2015-08-29 03:02:11.000000000","message":"provisioned_capacity_gb and max_over_subscription_ratio are missing.","commit_id":"e739b9e051df480c6e2869751108f95df4c6b383"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"18c222f7409cc1b8fd9c7f73f0cac5f0ee74514c","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                     \u0027reserved_percentage\u0027: 7,"},{"line_number":150,"context_line":"                     \u0027netapp_raid_type\u0027: \u0027raiddp\u0027,"},{"line_number":151,"context_line":"                     \u0027netapp_disk_type\u0027: \u0027SSD\u0027,"},{"line_number":152,"context_line":"                     \u0027netapp_nodedup\u0027: \u0027true\u0027}]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        self.assertEqual(expected, result)"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_164a9fac","line":152,"in_reply_to":"da20952f_a0f04e68","updated":"2015-08-29 16:06:43.000000000","message":"Done","commit_id":"e739b9e051df480c6e2869751108f95df4c6b383"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"740e768bed8c0044ad75c07bd12920c6c0d822a9","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                     \u0027netapp_unmirrored\u0027: \u0027true\u0027,"},{"line_number":142,"context_line":"                     \u0027QoS_support\u0027: True,"},{"line_number":143,"context_line":"                     \u0027thick_provisioning_support\u0027: thick,"},{"line_number":144,"context_line":"                     \u0027netapp_thick_provisioned\u0027: netapp_thick,"},{"line_number":145,"context_line":"                     \u0027netapp_nocompression\u0027: \u0027true\u0027,"},{"line_number":146,"context_line":"                     \u0027thin_provisioning_support\u0027: not thick,"},{"line_number":147,"context_line":"                     \u0027free_capacity_gb\u0027: 12.0,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_751fcdb7","line":144,"updated":"2015-09-02 00:44:49.000000000","message":"why have both thick_provisioning_support and netapp_thick_provisoned? same with thin?","commit_id":"cf0b3d1f20afe278afc93478b81968602b823673"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"b20db204fd324157d760372028e66f370a70830e","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                     \u0027netapp_unmirrored\u0027: \u0027true\u0027,"},{"line_number":142,"context_line":"                     \u0027QoS_support\u0027: True,"},{"line_number":143,"context_line":"                     \u0027thick_provisioning_support\u0027: thick,"},{"line_number":144,"context_line":"                     \u0027netapp_thick_provisioned\u0027: netapp_thick,"},{"line_number":145,"context_line":"                     \u0027netapp_nocompression\u0027: \u0027true\u0027,"},{"line_number":146,"context_line":"                     \u0027thin_provisioning_support\u0027: not thick,"},{"line_number":147,"context_line":"                     \u0027free_capacity_gb\u0027: 12.0,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_b5b8042c","line":144,"in_reply_to":"da20952f_751fcdb7","updated":"2015-09-02 00:53:54.000000000","message":"netapp_thick_provisioned and netapp_thin_provisioned pertain to what we call the \"flexvol\", which is a container for cinder volumes.  It may be thick or thin provisioned.  Besides that, the nfs exported files that serve as backing for cinder volumes may themselves be \"sparse\" or not.  The latter is a separate form of \"thin-provisioning\" shared with, e.g., the generic NFS driver.\n\nSo we need two things here.\n\nthin_provisioning_support as reported up to the scheduler so that max_over_subscription_ratio kicks in gets set if either (1) netapp_thin_provisioned is true (i.e., the container for cinder volumes is itself thin provisioned) or (2) the files backing the cinder volumes are themselves are themselves sparse.\n\nTMI I am sure, but both are \"thin\" provisioning.","commit_id":"cf0b3d1f20afe278afc93478b81968602b823673"}],"cinder/volume/drivers/nfs.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"8262c57a6bd8f0412bfd32b06884843f2e3119aa","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                       \u0027number, the destination will no longer be valid. \u0027"},{"line_number":59,"context_line":"                       \u0027Note that this option is deprecated in favor of \u0027"},{"line_number":60,"context_line":"                       \u0027\"max_oversubscription_ratio\" and will be removed \u0027"},{"line_number":61,"context_line":"                       \u0027in the Mitaka release.\u0027)),"},{"line_number":62,"context_line":"    cfg.StrOpt(\u0027nfs_mount_point_base\u0027,"},{"line_number":63,"context_line":"               default\u003d\u0027$state_path/mnt\u0027,"},{"line_number":64,"context_line":"               help\u003d(\u0027Base dir containing mount points for nfs shares.\u0027)),"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_fd727110","line":61,"updated":"2015-08-29 01:57:59.000000000","message":"These really should be marked deprecated using the versionutils from oslo.","commit_id":"e739b9e051df480c6e2869751108f95df4c6b383"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"18c222f7409cc1b8fd9c7f73f0cac5f0ee74514c","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                       \u0027number, the destination will no longer be valid. \u0027"},{"line_number":59,"context_line":"                       \u0027Note that this option is deprecated in favor of \u0027"},{"line_number":60,"context_line":"                       \u0027\"max_oversubscription_ratio\" and will be removed \u0027"},{"line_number":61,"context_line":"                       \u0027in the Mitaka release.\u0027)),"},{"line_number":62,"context_line":"    cfg.StrOpt(\u0027nfs_mount_point_base\u0027,"},{"line_number":63,"context_line":"               default\u003d\u0027$state_path/mnt\u0027,"},{"line_number":64,"context_line":"               help\u003d(\u0027Base dir containing mount points for nfs shares.\u0027)),"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_36dec3dd","line":61,"in_reply_to":"da20952f_fd727110","updated":"2015-08-29 16:06:43.000000000","message":"Thanks!  I\u0027ll fix.","commit_id":"e739b9e051df480c6e2869751108f95df4c6b383"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"d9e7f1a4f12a78d3d5cf02df6dbc08110c42ed4e","unresolved":false,"context_lines":[{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        if not self.configuration.nfs_oversub_ratio \u003e 0:"},{"line_number":423,"context_line":"            msg \u003d _(\"NFS config \u0027nfs_oversub_ratio\u0027 invalid.  Must be \u003e 0: \""},{"line_number":424,"context_line":"                    \"%s\") % self.configuration.nfs_oversub_ratio"},{"line_number":425,"context_line":"            LOG.error(msg)"},{"line_number":426,"context_line":"            raise exception.InvalidConfigurationValue(msg)"},{"line_number":427,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_863df0de","line":424,"updated":"2015-08-31 14:52:02.000000000","message":"\".\" at EOL","commit_id":"e52f819efa3bc5a9c910458c3e623da363cde6e5"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"86519f9887f463b09fa603c4ac86ff84b8b37848","unresolved":false,"context_lines":[{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        if not self.configuration.nfs_oversub_ratio \u003e 0:"},{"line_number":423,"context_line":"            msg \u003d _(\"NFS config \u0027nfs_oversub_ratio\u0027 invalid.  Must be \u003e 0: \""},{"line_number":424,"context_line":"                    \"%s\") % self.configuration.nfs_oversub_ratio"},{"line_number":425,"context_line":"            LOG.error(msg)"},{"line_number":426,"context_line":"            raise exception.InvalidConfigurationValue(msg)"},{"line_number":427,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_9ad304d5","line":424,"in_reply_to":"da20952f_863df0de","updated":"2015-08-31 15:02:16.000000000","message":"Done","commit_id":"e52f819efa3bc5a9c910458c3e623da363cde6e5"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"d9e7f1a4f12a78d3d5cf02df6dbc08110c42ed4e","unresolved":false,"context_lines":[{"line_number":444,"context_line":"        if not ((self.configuration.nfs_used_ratio \u003e 0) and"},{"line_number":445,"context_line":"                (self.configuration.nfs_used_ratio \u003c\u003d 1)):"},{"line_number":446,"context_line":"            msg \u003d _(\"NFS config \u0027nfs_used_ratio\u0027 invalid.  Must be \u003e 0 \""},{"line_number":447,"context_line":"                    \"and \u003c\u003d 1.0: %s\") % self.configuration.nfs_used_ratio"},{"line_number":448,"context_line":"            LOG.error(msg)"},{"line_number":449,"context_line":"            raise exception.InvalidConfigurationValue(msg)"},{"line_number":450,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_062a4090","line":447,"updated":"2015-08-31 14:52:02.000000000","message":"\".\" at EOL","commit_id":"e52f819efa3bc5a9c910458c3e623da363cde6e5"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"86519f9887f463b09fa603c4ac86ff84b8b37848","unresolved":false,"context_lines":[{"line_number":444,"context_line":"        if not ((self.configuration.nfs_used_ratio \u003e 0) and"},{"line_number":445,"context_line":"                (self.configuration.nfs_used_ratio \u003c\u003d 1)):"},{"line_number":446,"context_line":"            msg \u003d _(\"NFS config \u0027nfs_used_ratio\u0027 invalid.  Must be \u003e 0 \""},{"line_number":447,"context_line":"                    \"and \u003c\u003d 1.0: %s\") % self.configuration.nfs_used_ratio"},{"line_number":448,"context_line":"            LOG.error(msg)"},{"line_number":449,"context_line":"            raise exception.InvalidConfigurationValue(msg)"},{"line_number":450,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_7ad070c9","line":447,"in_reply_to":"da20952f_062a4090","updated":"2015-08-31 15:02:16.000000000","message":"Done","commit_id":"e52f819efa3bc5a9c910458c3e623da363cde6e5"}]}
