)]}'
{"cinder/tests/test_nfs.py":[{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"3d4f1f1e1c5ca48d38299e98c4e6b13d56942699","unresolved":false,"context_lines":[{"line_number":346,"context_line":"    TEST_NFS_EXPORT2_OPTIONS \u003d \u0027-o intr\u0027"},{"line_number":347,"context_line":"    TEST_SIZE_IN_GB \u003d 1"},{"line_number":348,"context_line":"    TEST_MNT_POINT \u003d \u0027/mnt/nfs\u0027"},{"line_number":349,"context_line":"    TEST_MNT_INVALID_POINT_BASE \u003d \u0027/opt/stack/data/cinder//mnt\u0027"},{"line_number":350,"context_line":"    TEST_MNT_POINT_BASE \u003d \u0027/mnt/test\u0027"},{"line_number":351,"context_line":"    TEST_LOCAL_PATH \u003d \u0027/mnt/nfs/volume-123\u0027"},{"line_number":352,"context_line":"    TEST_FILE_NAME \u003d \u0027test.txt\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_17d500b9","line":349,"updated":"2015-03-17 10:34:29.000000000","message":"Suggestion: Is this really an invalid path ? // is valid and linux/unix and most mature OS\u0027es shells ignore the double / so i think the var should be named differently (maybe: TEST_MNT_POINT_BASE_v2 or TEST_MNT_POINT_BASE_EXTRA_SLASH ?)","commit_id":"58a04b8b7ead6bf863063c1084722343d8eb0f1c"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"481e20fd4c24d78d1b1d8f4c15ef72545ac2a958","unresolved":false,"context_lines":[{"line_number":346,"context_line":"    TEST_NFS_EXPORT2_OPTIONS \u003d \u0027-o intr\u0027"},{"line_number":347,"context_line":"    TEST_SIZE_IN_GB \u003d 1"},{"line_number":348,"context_line":"    TEST_MNT_POINT \u003d \u0027/mnt/nfs\u0027"},{"line_number":349,"context_line":"    TEST_MNT_INVALID_POINT_BASE \u003d \u0027/opt/stack/data/cinder//mnt\u0027"},{"line_number":350,"context_line":"    TEST_MNT_POINT_BASE \u003d \u0027/mnt/test\u0027"},{"line_number":351,"context_line":"    TEST_LOCAL_PATH \u003d \u0027/mnt/nfs/volume-123\u0027"},{"line_number":352,"context_line":"    TEST_FILE_NAME \u003d \u0027test.txt\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_3e13aa0e","line":349,"in_reply_to":"9a80dd14_17d500b9","updated":"2015-03-17 16:23:12.000000000","message":"This test doesn\u0027t test what the commit message describes, which focuses on an extra \u0027/\u0027 at the end of the option.  This is kind of odd.\n\nThis name also is confusing because the option name is \"\u003cx\u003e_mount_point_base\", and putting a word in the middle of that phrase loses the meaning.  I agree w/ Deepak about choosing a name other than \"INVALID\".","commit_id":"58a04b8b7ead6bf863063c1084722343d8eb0f1c"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"08a38e4e65af7a5fa7315325f85d0ac8a0668e22","unresolved":false,"context_lines":[{"line_number":346,"context_line":"    TEST_NFS_EXPORT2_OPTIONS \u003d \u0027-o intr\u0027"},{"line_number":347,"context_line":"    TEST_SIZE_IN_GB \u003d 1"},{"line_number":348,"context_line":"    TEST_MNT_POINT \u003d \u0027/mnt/nfs\u0027"},{"line_number":349,"context_line":"    TEST_MNT_INVALID_POINT_BASE \u003d \u0027/opt/stack/data/cinder//mnt\u0027"},{"line_number":350,"context_line":"    TEST_MNT_POINT_BASE \u003d \u0027/mnt/test\u0027"},{"line_number":351,"context_line":"    TEST_LOCAL_PATH \u003d \u0027/mnt/nfs/volume-123\u0027"},{"line_number":352,"context_line":"    TEST_FILE_NAME \u003d \u0027test.txt\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_e17257af","line":349,"in_reply_to":"9a80dd14_3e13aa0e","updated":"2015-03-17 16:26:07.000000000","message":"Ok, I was confused because I was thinking mount_point_base instead of state_path.  If the test is around state_path then why not mock out that var instead of nfs_mount_point_base?","commit_id":"58a04b8b7ead6bf863063c1084722343d8eb0f1c"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"f8bd320210e64ea484bef2abecee15b07fccf08c","unresolved":false,"context_lines":[{"line_number":346,"context_line":"    TEST_NFS_EXPORT2_OPTIONS \u003d \u0027-o intr\u0027"},{"line_number":347,"context_line":"    TEST_SIZE_IN_GB \u003d 1"},{"line_number":348,"context_line":"    TEST_MNT_POINT \u003d \u0027/mnt/nfs\u0027"},{"line_number":349,"context_line":"    TEST_MNT_INVALID_POINT_BASE \u003d \u0027/opt/stack/data/cinder//mnt\u0027"},{"line_number":350,"context_line":"    TEST_MNT_POINT_BASE \u003d \u0027/mnt/test\u0027"},{"line_number":351,"context_line":"    TEST_LOCAL_PATH \u003d \u0027/mnt/nfs/volume-123\u0027"},{"line_number":352,"context_line":"    TEST_FILE_NAME \u003d \u0027test.txt\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_729e3356","line":349,"in_reply_to":"9a80dd14_e17257af","updated":"2015-03-17 17:23:07.000000000","message":"Done","commit_id":"58a04b8b7ead6bf863063c1084722343d8eb0f1c"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"481e20fd4c24d78d1b1d8f4c15ef72545ac2a958","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        self.assertEqual(\u0027/mnt/test/2f4f60214cf43c595666dd815f0360a4\u0027,"},{"line_number":443,"context_line":"                         drv._get_mount_point_for_share(self.TEST_NFS_EXPORT1))"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def test_get_mount_point_for_share_given_extra_slash_in_state_path(self):"},{"line_number":446,"context_line":"        \"\"\"_get_mount_point_for_share should calculate correct value.\"\"\""},{"line_number":447,"context_line":"        # This test gets called with the extra slash"},{"line_number":448,"context_line":"        self.configuration.nfs_mount_point_base \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_1e342649","line":445,"updated":"2015-03-17 16:23:12.000000000","message":"This is not the state path, need to rename the method.","commit_id":"58a04b8b7ead6bf863063c1084722343d8eb0f1c"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"08a38e4e65af7a5fa7315325f85d0ac8a0668e22","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        self.assertEqual(\u0027/mnt/test/2f4f60214cf43c595666dd815f0360a4\u0027,"},{"line_number":443,"context_line":"                         drv._get_mount_point_for_share(self.TEST_NFS_EXPORT1))"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def test_get_mount_point_for_share_given_extra_slash_in_state_path(self):"},{"line_number":446,"context_line":"        \"\"\"_get_mount_point_for_share should calculate correct value.\"\"\""},{"line_number":447,"context_line":"        # This test gets called with the extra slash"},{"line_number":448,"context_line":"        self.configuration.nfs_mount_point_base \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_be015a08","line":445,"in_reply_to":"9a80dd14_1e342649","updated":"2015-03-17 16:26:07.000000000","message":"Scratch that, this will happen when state_path has an extra \u0027/\u0027, but in other cases too.  (\u003cx\u003e_mount_point_base has an extra \u0027/\u0027)","commit_id":"58a04b8b7ead6bf863063c1084722343d8eb0f1c"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"481e20fd4c24d78d1b1d8f4c15ef72545ac2a958","unresolved":false,"context_lines":[{"line_number":451,"context_line":"        # The driver gets called with the correct configuration and removes"},{"line_number":452,"context_line":"        # the extra slash"},{"line_number":453,"context_line":"        drv \u003d nfs.NfsDriver(configuration\u003dself.configuration)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        self.assertEqual("},{"line_number":456,"context_line":"            \u0027/opt/stack/data/cinder/mnt/2f4f60214cf43c595666dd815f0360a4\u0027,"},{"line_number":457,"context_line":"            drv._get_mount_point_for_share(self.TEST_NFS_EXPORT1))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_9efad641","line":454,"updated":"2015-03-17 16:23:12.000000000","message":"Should also add self.assertEqual(\u0027/opt/stack/data/cinder/mnt\u0027, drv.base) since that\u0027s the most direct effect of this change.","commit_id":"58a04b8b7ead6bf863063c1084722343d8eb0f1c"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"f8bd320210e64ea484bef2abecee15b07fccf08c","unresolved":false,"context_lines":[{"line_number":451,"context_line":"        # The driver gets called with the correct configuration and removes"},{"line_number":452,"context_line":"        # the extra slash"},{"line_number":453,"context_line":"        drv \u003d nfs.NfsDriver(configuration\u003dself.configuration)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        self.assertEqual("},{"line_number":456,"context_line":"            \u0027/opt/stack/data/cinder/mnt/2f4f60214cf43c595666dd815f0360a4\u0027,"},{"line_number":457,"context_line":"            drv._get_mount_point_for_share(self.TEST_NFS_EXPORT1))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_72c5533c","line":454,"in_reply_to":"9a80dd14_9efad641","updated":"2015-03-17 17:23:07.000000000","message":"Done","commit_id":"58a04b8b7ead6bf863063c1084722343d8eb0f1c"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"3d4f1f1e1c5ca48d38299e98c4e6b13d56942699","unresolved":false,"context_lines":[{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        self.assertEqual("},{"line_number":456,"context_line":"            \u0027/opt/stack/data/cinder/mnt/2f4f60214cf43c595666dd815f0360a4\u0027,"},{"line_number":457,"context_line":"            drv._get_mount_point_for_share(self.TEST_NFS_EXPORT1))"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"    def test_get_capacity_info(self):"},{"line_number":460,"context_line":"        \"\"\"_get_capacity_info should calculate correct value.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_3723e4bf","line":457,"updated":"2015-03-17 10:34:29.000000000","message":"Its a good idea to create class level var (TEST_EXPECTED_MNT_PATH ?) for \"/opt/stack/data/cinder/mnt/2f4f60214cf43c595666dd815f0360a4 \" and use the var in all places.","commit_id":"58a04b8b7ead6bf863063c1084722343d8eb0f1c"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"d0cc0eb605a0deba1f24fa83fae1bbe47e3e760d","unresolved":false,"context_lines":[{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        self.assertEqual("},{"line_number":456,"context_line":"            \u0027/opt/stack/data/cinder/mnt/2f4f60214cf43c595666dd815f0360a4\u0027,"},{"line_number":457,"context_line":"            drv._get_mount_point_for_share(self.TEST_NFS_EXPORT1))"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"    def test_get_capacity_info(self):"},{"line_number":460,"context_line":"        \"\"\"_get_capacity_info should calculate correct value.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_1516cea7","line":457,"in_reply_to":"9a80dd14_3723e4bf","updated":"2015-03-17 14:25:32.000000000","message":"\u0027/opt/stack/data/cinder/mnt/2f4f60214cf43c595666dd815f0360a4\u0027 is only being used once in this test file for now. I feel that it is ok not creating a class level variable for the same.","commit_id":"58a04b8b7ead6bf863063c1084722343d8eb0f1c"}],"cinder/volume/drivers/nfs.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5d9255d7b355b4c19a45bb485552729633bd599e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                       \u0027the volume destination.  If the ratio exceeds this \u0027"},{"line_number":55,"context_line":"                       \u0027number, the destination will no longer be valid.\u0027)),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027nfs_mount_point_base\u0027,"},{"line_number":57,"context_line":"               default\u003d\u0027$state_path/mnt\u0027,"},{"line_number":58,"context_line":"               help\u003d(\u0027Base dir containing mount points for nfs shares.\u0027)),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027nfs_mount_options\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_5fe88116","line":57,"updated":"2015-03-10 19:31:35.000000000","message":"Fair enough, let\u0027s see what Rushil thinks of this.","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d159ac7111cb8fe4b598e3845636623c90c0016e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                       \u0027the volume destination.  If the ratio exceeds this \u0027"},{"line_number":55,"context_line":"                       \u0027number, the destination will no longer be valid.\u0027)),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027nfs_mount_point_base\u0027,"},{"line_number":57,"context_line":"               default\u003d\u0027$state_path/mnt\u0027,"},{"line_number":58,"context_line":"               help\u003d(\u0027Base dir containing mount points for nfs shares.\u0027)),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027nfs_mount_options\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_c43d8f2e","line":57,"updated":"2015-03-10 17:35:47.000000000","message":"I believe this is the place for the fix. This will probably do:\ndefault\u003dos.path.join(\u0027$state_path\u0027, \u0027mnt\u0027)","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"329bf50b28122fa157d9d9ca47b70e80133692df","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                       \u0027the volume destination.  If the ratio exceeds this \u0027"},{"line_number":55,"context_line":"                       \u0027number, the destination will no longer be valid.\u0027)),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027nfs_mount_point_base\u0027,"},{"line_number":57,"context_line":"               default\u003d\u0027$state_path/mnt\u0027,"},{"line_number":58,"context_line":"               help\u003d(\u0027Base dir containing mount points for nfs shares.\u0027)),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027nfs_mount_options\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_0c53326d","line":57,"updated":"2015-03-11 08:38:23.000000000","message":"If normpath is not an option, then we still have path.join   :)","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"03ffe24c111d8310b6bde43ed61c7acc5338fba6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                       \u0027the volume destination.  If the ratio exceeds this \u0027"},{"line_number":55,"context_line":"                       \u0027number, the destination will no longer be valid.\u0027)),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027nfs_mount_point_base\u0027,"},{"line_number":57,"context_line":"               default\u003d\u0027$state_path/mnt\u0027,"},{"line_number":58,"context_line":"               help\u003d(\u0027Base dir containing mount points for nfs shares.\u0027)),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027nfs_mount_options\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_dccf1f56","line":57,"updated":"2015-03-10 19:19:06.000000000","message":"That would be an awesome addition to oslo_config types!! But that would take some time to be available :(","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd7867caff54e90baccfed3c66b3a3734cb79cdd","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                       \u0027the volume destination.  If the ratio exceeds this \u0027"},{"line_number":55,"context_line":"                       \u0027number, the destination will no longer be valid.\u0027)),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027nfs_mount_point_base\u0027,"},{"line_number":57,"context_line":"               default\u003d\u0027$state_path/mnt\u0027,"},{"line_number":58,"context_line":"               help\u003d(\u0027Base dir containing mount points for nfs shares.\u0027)),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027nfs_mount_options\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_91ec772b","line":57,"updated":"2015-03-11 19:47:34.000000000","message":"Then +1 to using that.","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"49ce8efaf7550bba27121b199ebf50a9f8318170","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                       \u0027the volume destination.  If the ratio exceeds this \u0027"},{"line_number":55,"context_line":"                       \u0027number, the destination will no longer be valid.\u0027)),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027nfs_mount_point_base\u0027,"},{"line_number":57,"context_line":"               default\u003d\u0027$state_path/mnt\u0027,"},{"line_number":58,"context_line":"               help\u003d(\u0027Base dir containing mount points for nfs shares.\u0027)),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027nfs_mount_options\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_5ff24670","line":57,"updated":"2015-03-10 17:58:13.000000000","message":"Then how do you make sure this doesn\u0027t happen in the future if this parameter is used somewhere else? \nI prefer fixing it an the origin.","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"53cf5fd987f1d6aa4dd6ba2000b70b34d3e3bb00","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                       \u0027the volume destination.  If the ratio exceeds this \u0027"},{"line_number":55,"context_line":"                       \u0027number, the destination will no longer be valid.\u0027)),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027nfs_mount_point_base\u0027,"},{"line_number":57,"context_line":"               default\u003d\u0027$state_path/mnt\u0027,"},{"line_number":58,"context_line":"               help\u003d(\u0027Base dir containing mount points for nfs shares.\u0027)),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027nfs_mount_options\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_7e08b5d9","line":57,"in_reply_to":"9a80dd14_0c53326d","updated":"2015-03-11 17:43:11.000000000","message":"See below, realpath() should work instead of normpath.","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"c56547ea22a93688bbf8cdb73f113164fac87de0","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                       \u0027the volume destination.  If the ratio exceeds this \u0027"},{"line_number":55,"context_line":"                       \u0027number, the destination will no longer be valid.\u0027)),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027nfs_mount_point_base\u0027,"},{"line_number":57,"context_line":"               default\u003d\u0027$state_path/mnt\u0027,"},{"line_number":58,"context_line":"               help\u003d(\u0027Base dir containing mount points for nfs shares.\u0027)),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027nfs_mount_options\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_e835fddb","line":57,"in_reply_to":"9a80dd14_5fe88116","updated":"2015-03-10 20:48:15.000000000","message":"I feel the fix is fine the way it is. It is because as Andrew mentioned below os.path.normpath() has the possibility of screwing up symlinks. https://docs.python.org/2/library/os.path.html.\nI am welcome to suggestions if folks think otherwise.","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"90ad1785eadc3c86463a50bccb83b394437cc36e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                       \u0027the volume destination.  If the ratio exceeds this \u0027"},{"line_number":55,"context_line":"                       \u0027number, the destination will no longer be valid.\u0027)),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027nfs_mount_point_base\u0027,"},{"line_number":57,"context_line":"               default\u003d\u0027$state_path/mnt\u0027,"},{"line_number":58,"context_line":"               help\u003d(\u0027Base dir containing mount points for nfs shares.\u0027)),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027nfs_mount_options\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_75080b29","line":57,"in_reply_to":"9a80dd14_5ff24670","updated":"2015-03-10 18:23:28.000000000","message":"Use oslo.config\u0027s type\u003d and make a path type, I suppose.","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"253ae486682be4112aef09869e6d8f0411a6f4eb","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                       \u0027the volume destination.  If the ratio exceeds this \u0027"},{"line_number":55,"context_line":"                       \u0027number, the destination will no longer be valid.\u0027)),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027nfs_mount_point_base\u0027,"},{"line_number":57,"context_line":"               default\u003d\u0027$state_path/mnt\u0027,"},{"line_number":58,"context_line":"               help\u003d(\u0027Base dir containing mount points for nfs shares.\u0027)),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027nfs_mount_options\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_1f30cee7","line":57,"in_reply_to":"9a80dd14_c43d8f2e","updated":"2015-03-10 17:44:31.000000000","message":"I don\u0027t think we want to put that code here, because then the generated sample config will be rather hard to understand as documentation.","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f436dcb89a421822ffab410d8fc0af8fa5987eaf","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                       \u0027the volume destination.  If the ratio exceeds this \u0027"},{"line_number":55,"context_line":"                       \u0027number, the destination will no longer be valid.\u0027)),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027nfs_mount_point_base\u0027,"},{"line_number":57,"context_line":"               default\u003d\u0027$state_path/mnt\u0027,"},{"line_number":58,"context_line":"               help\u003d(\u0027Base dir containing mount points for nfs shares.\u0027)),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027nfs_mount_options\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_5c17af54","line":57,"in_reply_to":"9a80dd14_dccf1f56","updated":"2015-03-10 19:27:29.000000000","message":"Yes, I think we should just go with the fix I proposed below for now.","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d159ac7111cb8fe4b598e3845636623c90c0016e","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.base \u003d getattr(self.configuration,"},{"line_number":92,"context_line":"                            \u0027nfs_mount_point_base\u0027,"},{"line_number":93,"context_line":"                            CONF.nfs_mount_point_base)"},{"line_number":94,"context_line":"        self.base \u003d self.base.replace(\u0027//\u0027, \u0027/\u0027)"},{"line_number":95,"context_line":"        opts \u003d getattr(self.configuration,"},{"line_number":96,"context_line":"                       \u0027nfs_mount_options\u0027,"},{"line_number":97,"context_line":"                       CONF.nfs_mount_options)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_e43a9333","line":94,"updated":"2015-03-10 17:35:47.000000000","message":"I believe we should fix this at the right place, which is the default of the configuration option, see comment above.","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1a1f149f994fd1c8ba1e46d021d919e2e6e431e6","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.base \u003d getattr(self.configuration,"},{"line_number":92,"context_line":"                            \u0027nfs_mount_point_base\u0027,"},{"line_number":93,"context_line":"                            CONF.nfs_mount_point_base)"},{"line_number":94,"context_line":"        self.base \u003d self.base.replace(\u0027//\u0027, \u0027/\u0027)"},{"line_number":95,"context_line":"        opts \u003d getattr(self.configuration,"},{"line_number":96,"context_line":"                       \u0027nfs_mount_options\u0027,"},{"line_number":97,"context_line":"                       CONF.nfs_mount_options)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_a9007436","line":94,"updated":"2015-03-10 17:18:18.000000000","message":"The right way to do this would be to call os.path.normpath().","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"53cf5fd987f1d6aa4dd6ba2000b70b34d3e3bb00","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.base \u003d getattr(self.configuration,"},{"line_number":92,"context_line":"                            \u0027nfs_mount_point_base\u0027,"},{"line_number":93,"context_line":"                            CONF.nfs_mount_point_base)"},{"line_number":94,"context_line":"        self.base \u003d self.base.replace(\u0027//\u0027, \u0027/\u0027)"},{"line_number":95,"context_line":"        opts \u003d getattr(self.configuration,"},{"line_number":96,"context_line":"                       \u0027nfs_mount_options\u0027,"},{"line_number":97,"context_line":"                       CONF.nfs_mount_options)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_9e09e92e","line":94,"in_reply_to":"9a80dd14_9f6cb90a","updated":"2015-03-11 17:43:11.000000000","message":"@Andrew: We could protect against this, but I think what I wanted was os.path.realpath(), anyway.","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"},{"author":{"_account_id":9366,"name":"Andrew Kerr","email":"andrew.kerr@netapp.com","username":"andrew-kerr"},"change_message_id":"10fd250be25c88ed83234156f6783378eb1e7153","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.base \u003d getattr(self.configuration,"},{"line_number":92,"context_line":"                            \u0027nfs_mount_point_base\u0027,"},{"line_number":93,"context_line":"                            CONF.nfs_mount_point_base)"},{"line_number":94,"context_line":"        self.base \u003d self.base.replace(\u0027//\u0027, \u0027/\u0027)"},{"line_number":95,"context_line":"        opts \u003d getattr(self.configuration,"},{"line_number":96,"context_line":"                       \u0027nfs_mount_options\u0027,"},{"line_number":97,"context_line":"                       CONF.nfs_mount_options)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_9f6cb90a","line":94,"in_reply_to":"9a80dd14_a9007436","updated":"2015-03-10 19:45:57.000000000","message":"os.path.normpath() has the possibility of screwing up symlinks.  https://docs.python.org/2/library/os.path.html\n\n This string manipulation may change the meaning of a path that contains symbolic links.","commit_id":"10cde346e64356cd0c8743dbe8a777f909e696f6"}]}
