@@ -53,6 +53,7 @@ func TestAccFSxLustreFileSystem_basic(t *testing.T) {
5353 resource .TestCheckResourceAttr (resourceName , "imported_file_chunk_size" , acctest .Ct0 ),
5454 resource .TestCheckResourceAttr (resourceName , "log_configuration.#" , acctest .Ct1 ),
5555 resource .TestCheckResourceAttr (resourceName , "log_configuration.0.level" , "DISABLED" ),
56+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.#" , acctest .Ct0 ),
5657 resource .TestCheckResourceAttrSet (resourceName , "mount_name" ),
5758 resource .TestCheckResourceAttr (resourceName , "network_interface_ids.#" , acctest .Ct2 ),
5859 acctest .CheckResourceAttrAccountID (resourceName , names .AttrOwnerID ),
@@ -768,6 +769,130 @@ func TestAccFSxLustreFileSystem_logConfig(t *testing.T) {
768769 })
769770}
770771
772+ func TestAccFSxLustreFileSystem_metadataConfig (t * testing.T ) {
773+ ctx := acctest .Context (t )
774+ var filesystem1 , filesystem2 fsx.FileSystem
775+ resourceName := "aws_fsx_lustre_file_system.test"
776+ rName := sdkacctest .RandomWithPrefix (acctest .ResourcePrefix )
777+
778+ resource .ParallelTest (t , resource.TestCase {
779+ PreCheck : func () { acctest .PreCheck (ctx , t ); acctest .PreCheckPartitionHasService (t , fsx .EndpointsID ) },
780+ ErrorCheck : acctest .ErrorCheck (t , names .FSxServiceID ),
781+ ProtoV5ProviderFactories : acctest .ProtoV5ProviderFactories ,
782+ CheckDestroy : testAccCheckLustreFileSystemDestroy (ctx ),
783+ Steps : []resource.TestStep {
784+ {
785+ Config : testAccLustreFileSystemConfig_metadata (rName , "AUTOMATIC" ),
786+ Check : resource .ComposeTestCheckFunc (
787+ testAccCheckLustreFileSystemExists (ctx , resourceName , & filesystem1 ),
788+ testAccCheckLustreFileSystemExists (ctx , resourceName , & filesystem1 ),
789+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.#" , acctest .Ct1 ),
790+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.0.mode" , "AUTOMATIC" ),
791+ resource .TestCheckResourceAttrSet (resourceName , "metadata_configuration.0.iops" ),
792+ ),
793+ },
794+ {
795+ ResourceName : resourceName ,
796+ ImportState : true ,
797+ ImportStateVerify : true ,
798+ ImportStateVerifyIgnore : []string {names .AttrSecurityGroupIDs },
799+ },
800+ {
801+ Config : testAccLustreFileSystemConfig_metadata_iops (rName , "USER_PROVISIONED" , 1500 ),
802+ Check : resource .ComposeTestCheckFunc (
803+ testAccCheckLustreFileSystemExists (ctx , resourceName , & filesystem2 ),
804+ testAccCheckLustreFileSystemNotRecreated (& filesystem1 , & filesystem2 ),
805+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.#" , acctest .Ct1 ),
806+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.0.mode" , "USER_PROVISIONED" ),
807+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.0.iops" , "1500" ),
808+ ),
809+ },
810+ },
811+ })
812+ }
813+
814+ func TestAccFSxLustreFileSystem_metadataConfig_increase (t * testing.T ) {
815+ ctx := acctest .Context (t )
816+ var filesystem1 , filesystem2 fsx.FileSystem
817+ resourceName := "aws_fsx_lustre_file_system.test"
818+ rName := sdkacctest .RandomWithPrefix (acctest .ResourcePrefix )
819+
820+ resource .ParallelTest (t , resource.TestCase {
821+ PreCheck : func () { acctest .PreCheck (ctx , t ); acctest .PreCheckPartitionHasService (t , fsx .EndpointsID ) },
822+ ErrorCheck : acctest .ErrorCheck (t , names .FSxServiceID ),
823+ ProtoV5ProviderFactories : acctest .ProtoV5ProviderFactories ,
824+ CheckDestroy : testAccCheckLustreFileSystemDestroy (ctx ),
825+ Steps : []resource.TestStep {
826+ {
827+ Config : testAccLustreFileSystemConfig_metadata_iops (rName , "USER_PROVISIONED" , 1500 ),
828+ Check : resource .ComposeTestCheckFunc (
829+ testAccCheckLustreFileSystemExists (ctx , resourceName , & filesystem1 ),
830+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.#" , acctest .Ct1 ),
831+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.0.mode" , "USER_PROVISIONED" ),
832+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.0.iops" , "1500" ),
833+ ),
834+ },
835+ {
836+ ResourceName : resourceName ,
837+ ImportState : true ,
838+ ImportStateVerify : true ,
839+ ImportStateVerifyIgnore : []string {names .AttrSecurityGroupIDs },
840+ },
841+ {
842+ Config : testAccLustreFileSystemConfig_metadata_iops (rName , "USER_PROVISIONED" , 3000 ),
843+ Check : resource .ComposeTestCheckFunc (
844+ testAccCheckLustreFileSystemExists (ctx , resourceName , & filesystem2 ),
845+ testAccCheckLustreFileSystemNotRecreated (& filesystem1 , & filesystem2 ),
846+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.#" , acctest .Ct1 ),
847+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.0.mode" , "USER_PROVISIONED" ),
848+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.0.iops" , "3000" ),
849+ ),
850+ },
851+ },
852+ })
853+ }
854+
855+ func TestAccFSxLustreFileSystem_metadataConfig_decrease (t * testing.T ) {
856+ ctx := acctest .Context (t )
857+ var filesystem1 , filesystem2 fsx.FileSystem
858+ resourceName := "aws_fsx_lustre_file_system.test"
859+ rName := sdkacctest .RandomWithPrefix (acctest .ResourcePrefix )
860+
861+ resource .ParallelTest (t , resource.TestCase {
862+ PreCheck : func () { acctest .PreCheck (ctx , t ); acctest .PreCheckPartitionHasService (t , fsx .EndpointsID ) },
863+ ErrorCheck : acctest .ErrorCheck (t , names .FSxServiceID ),
864+ ProtoV5ProviderFactories : acctest .ProtoV5ProviderFactories ,
865+ CheckDestroy : testAccCheckLustreFileSystemDestroy (ctx ),
866+ Steps : []resource.TestStep {
867+ {
868+ Config : testAccLustreFileSystemConfig_metadata_iops (rName , "USER_PROVISIONED" , 3000 ),
869+ Check : resource .ComposeTestCheckFunc (
870+ testAccCheckLustreFileSystemExists (ctx , resourceName , & filesystem1 ),
871+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.#" , acctest .Ct1 ),
872+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.0.mode" , "USER_PROVISIONED" ),
873+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.0.iops" , "3000" ),
874+ ),
875+ },
876+ {
877+ ResourceName : resourceName ,
878+ ImportState : true ,
879+ ImportStateVerify : true ,
880+ ImportStateVerifyIgnore : []string {names .AttrSecurityGroupIDs },
881+ },
882+ {
883+ Config : testAccLustreFileSystemConfig_metadata_iops (rName , "USER_PROVISIONED" , 1500 ),
884+ Check : resource .ComposeTestCheckFunc (
885+ testAccCheckLustreFileSystemExists (ctx , resourceName , & filesystem2 ),
886+ testAccCheckLustreFileSystemRecreated (& filesystem1 , & filesystem2 ),
887+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.#" , acctest .Ct1 ),
888+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.0.mode" , "USER_PROVISIONED" ),
889+ resource .TestCheckResourceAttr (resourceName , "metadata_configuration.0.iops" , "1500" ),
890+ ),
891+ },
892+ },
893+ })
894+ }
895+
771896func TestAccFSxLustreFileSystem_rootSquashConfig (t * testing.T ) {
772897 ctx := acctest .Context (t )
773898 var filesystem fsx.FileSystem
@@ -1608,6 +1733,45 @@ resource "aws_fsx_lustre_file_system" "test" {
16081733` , rName , status ))
16091734}
16101735
1736+ func testAccLustreFileSystemConfig_metadata (rName , mode string ) string {
1737+ return acctest .ConfigCompose (testAccLustreFileSystemConfig_base (rName ), fmt .Sprintf (`
1738+ resource "aws_fsx_lustre_file_system" "test" {
1739+ storage_capacity = 1200
1740+ subnet_ids = aws_subnet.test[*].id
1741+ deployment_type = "PERSISTENT_2"
1742+ per_unit_storage_throughput = 125
1743+
1744+ metadata_configuration {
1745+ mode = %[2]q
1746+ }
1747+
1748+ tags = {
1749+ Name = %[1]q
1750+ }
1751+ }
1752+ ` , rName , mode ))
1753+ }
1754+
1755+ func testAccLustreFileSystemConfig_metadata_iops (rName , mode string , iops int ) string {
1756+ return acctest .ConfigCompose (testAccLustreFileSystemConfig_base (rName ), fmt .Sprintf (`
1757+ resource "aws_fsx_lustre_file_system" "test" {
1758+ storage_capacity = 1200
1759+ subnet_ids = aws_subnet.test[*].id
1760+ deployment_type = "PERSISTENT_2"
1761+ per_unit_storage_throughput = 125
1762+
1763+ metadata_configuration {
1764+ mode = %[2]q
1765+ iops = %[3]d
1766+ }
1767+
1768+ tags = {
1769+ Name = %[1]q
1770+ }
1771+ }
1772+ ` , rName , mode , iops ))
1773+ }
1774+
16111775func testAccLustreFileSystemConfig_rootSquash (rName , uid string ) string {
16121776 return acctest .ConfigCompose (testAccLustreFileSystemConfig_base (rName ), fmt .Sprintf (`
16131777resource "aws_fsx_lustre_file_system" "test" {
0 commit comments