Skip to content

Commit 6c96f6c

Browse files
committed
Fix to update metadata_configuration first
1 parent 4060508 commit 6c96f6c

File tree

1 file changed

+29
-4
lines changed

1 file changed

+29
-4
lines changed

internal/service/fsx/lustre_file_system.go

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -660,9 +660,35 @@ func resourceLustreFileSystemUpdate(ctx context.Context, d *schema.ResourceData,
660660
var diags diag.Diagnostics
661661
conn := meta.(*conns.AWSClient).FSxClient(ctx)
662662

663+
updated := false
664+
// First, update the metadata configuration if it has changed.
665+
// Sometimes it is necessary to increase IOPS before increasing storage_capacity.
666+
if d.HasChange("metadata_configuration") {
667+
input := &fsx.UpdateFileSystemInput{
668+
ClientRequestToken: aws.String(id.UniqueId()),
669+
FileSystemId: aws.String(d.Id()),
670+
LustreConfiguration: &awstypes.UpdateFileSystemLustreConfiguration{
671+
MetadataConfiguration: expandLustreMetadataUpdateConfiguration(d.Get("metadata_configuration").([]any)),
672+
},
673+
}
674+
675+
startTime := time.Now()
676+
_, err := conn.UpdateFileSystem(ctx, input)
677+
678+
if err != nil {
679+
return sdkdiag.AppendErrorf(diags, "updating FSX for Lustre File System (%s) metadata_configuration: %s", d.Id(), err)
680+
}
681+
682+
if _, err := waitFileSystemUpdated(ctx, conn, d.Id(), startTime, d.Timeout(schema.TimeoutUpdate)); err != nil {
683+
return sdkdiag.AppendErrorf(diags, "waiting for FSx for Lustre File System (%s) metadata_configuration update: %s", d.Id(), err)
684+
}
685+
updated = true
686+
}
687+
663688
if d.HasChangesExcept(
664689
"final_backup_tags",
665690
"skip_final_backup",
691+
"metadata_configuration",
666692
names.AttrTags,
667693
names.AttrTagsAll,
668694
) {
@@ -696,10 +722,6 @@ func resourceLustreFileSystemUpdate(ctx context.Context, d *schema.ResourceData,
696722
input.LustreConfiguration.LogConfiguration = expandLustreLogCreateConfiguration(d.Get("log_configuration").([]any))
697723
}
698724

699-
if d.HasChange("metadata_configuration") {
700-
input.LustreConfiguration.MetadataConfiguration = expandLustreMetadataUpdateConfiguration(d.Get("metadata_configuration").([]any))
701-
}
702-
703725
if d.HasChange("per_unit_storage_throughput") {
704726
input.LustreConfiguration.PerUnitStorageThroughput = aws.Int32(int32(d.Get("per_unit_storage_throughput").(int)))
705727
}
@@ -730,7 +752,10 @@ func resourceLustreFileSystemUpdate(ctx context.Context, d *schema.ResourceData,
730752
if _, err := waitFileSystemUpdated(ctx, conn, d.Id(), startTime, d.Timeout(schema.TimeoutUpdate)); err != nil {
731753
return sdkdiag.AppendErrorf(diags, "waiting for FSx for Lustre File System (%s) update: %s", d.Id(), err)
732754
}
755+
updated = true
756+
}
733757

758+
if updated {
734759
if _, err := waitFileSystemAdministrativeActionCompleted(ctx, conn, d.Id(), awstypes.AdministrativeActionTypeFileSystemUpdate, d.Timeout(schema.TimeoutUpdate)); err != nil {
735760
return sdkdiag.AppendErrorf(diags, "waiting for FSx for Lustre File System (%s) administrative action (%s) complete: %s", d.Id(), awstypes.AdministrativeActionTypeFileSystemUpdate, err)
736761
}

0 commit comments

Comments
 (0)