@@ -1628,6 +1628,60 @@ func TestPublishASANVMe(t *testing.T) {
16281628 err = driver .Publish (ctx , volConfig , publishInfo )
16291629
16301630 assert .NoError (t , err , "expected no error when adding host NQN to subsystem, got one" )
1631+
1632+ // case: XFS filesystem should add nouuid mount option
1633+ volConfig .FileSystem = filesystem .Xfs
1634+ publishInfo .MountOptions = ""
1635+ mockAPI .EXPECT ().VolumeInfo (ctx , volConfig .InternalName ).Return (flexVol , nil ).Times (1 )
1636+ mockAPI .EXPECT ().NVMeSubsystemCreate (ctx , "an_fakeHostName_fakeUUID" , "an_fakeHostName_fakeUUID" ).Return (subsystem , nil ).Times (1 )
1637+ mockAPI .EXPECT ().NVMeAddHostToSubsystem (ctx , publishInfo .HostNQN , subsystem .UUID ).Return (nil ).Times (1 )
1638+ mockAPI .EXPECT ().NVMeEnsureNamespaceMapped (ctx , gomock .Any (), gomock .Any ()).Return (nil ).Times (1 )
1639+
1640+ err = driver .Publish (ctx , volConfig , publishInfo )
1641+
1642+ assert .NoError (t , err )
1643+ assert .Contains (t , publishInfo .MountOptions , "nouuid" , "XFS volumes should have nouuid mount option" )
1644+
1645+ // case: XFS filesystem with existing mount options should preserve them and add nouuid
1646+ volConfig .FileSystem = filesystem .Xfs
1647+ publishInfo .MountOptions = "rw,relatime"
1648+ mockAPI .EXPECT ().VolumeInfo (ctx , volConfig .InternalName ).Return (flexVol , nil ).Times (1 )
1649+ mockAPI .EXPECT ().NVMeSubsystemCreate (ctx , "an_fakeHostName_fakeUUID" , "an_fakeHostName_fakeUUID" ).Return (subsystem , nil ).Times (1 )
1650+ mockAPI .EXPECT ().NVMeAddHostToSubsystem (ctx , publishInfo .HostNQN , subsystem .UUID ).Return (nil ).Times (1 )
1651+ mockAPI .EXPECT ().NVMeEnsureNamespaceMapped (ctx , gomock .Any (), gomock .Any ()).Return (nil ).Times (1 )
1652+
1653+ err = driver .Publish (ctx , volConfig , publishInfo )
1654+
1655+ assert .NoError (t , err )
1656+ assert .Contains (t , publishInfo .MountOptions , "rw,relatime" , "Existing mount options should be preserved" )
1657+ assert .Contains (t , publishInfo .MountOptions , "nouuid" , "XFS volumes should have nouuid mount option added" )
1658+ assert .Equal (t , "rw,relatime,nouuid" , publishInfo .MountOptions , "Mount options should be properly formatted" )
1659+
1660+ // case: Non-XFS filesystem should not add nouuid mount option
1661+ volConfig .FileSystem = filesystem .Ext4
1662+ publishInfo .MountOptions = ""
1663+ mockAPI .EXPECT ().VolumeInfo (ctx , volConfig .InternalName ).Return (flexVol , nil ).Times (1 )
1664+ mockAPI .EXPECT ().NVMeSubsystemCreate (ctx , "an_fakeHostName_fakeUUID" , "an_fakeHostName_fakeUUID" ).Return (subsystem , nil ).Times (1 )
1665+ mockAPI .EXPECT ().NVMeAddHostToSubsystem (ctx , publishInfo .HostNQN , subsystem .UUID ).Return (nil ).Times (1 )
1666+ mockAPI .EXPECT ().NVMeEnsureNamespaceMapped (ctx , gomock .Any (), gomock .Any ()).Return (nil ).Times (1 )
1667+
1668+ err = driver .Publish (ctx , volConfig , publishInfo )
1669+
1670+ assert .NoError (t , err )
1671+ assert .NotContains (t , publishInfo .MountOptions , "nouuid" , "Non-XFS volumes should not have nouuid mount option" )
1672+
1673+ // case: XFS filesystem with nouuid already present should not duplicate it
1674+ volConfig .FileSystem = filesystem .Xfs
1675+ publishInfo .MountOptions = "rw,nouuid,relatime"
1676+ mockAPI .EXPECT ().VolumeInfo (ctx , volConfig .InternalName ).Return (flexVol , nil ).Times (1 )
1677+ mockAPI .EXPECT ().NVMeSubsystemCreate (ctx , "an_fakeHostName_fakeUUID" , "an_fakeHostName_fakeUUID" ).Return (subsystem , nil ).Times (1 )
1678+ mockAPI .EXPECT ().NVMeAddHostToSubsystem (ctx , publishInfo .HostNQN , subsystem .UUID ).Return (nil ).Times (1 )
1679+ mockAPI .EXPECT ().NVMeEnsureNamespaceMapped (ctx , gomock .Any (), gomock .Any ()).Return (nil ).Times (1 )
1680+
1681+ err = driver .Publish (ctx , volConfig , publishInfo )
1682+
1683+ assert .NoError (t , err )
1684+ assert .Equal (t , "rw,nouuid,relatime" , publishInfo .MountOptions , "Mount options should not duplicate nouuid" )
16311685}
16321686
16331687func TestUnpublishASANVMe (t * testing.T ) {
0 commit comments