Skip to content

Commit

Permalink
Merge pull request #15687 from DrFaust92/fsx_lustre_copy_tags
Browse files Browse the repository at this point in the history
r/fsx_lustre_file_system - Add copy_tags_to_backups
  • Loading branch information
breathingdust authored Oct 21, 2020
2 parents ce7c4c6 + 5f0337c commit a7beedd
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 1 deletion.
11 changes: 11 additions & 0 deletions aws/resource_aws_fsx_lustre_file_system.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,12 @@ func resourceAwsFsxLustreFileSystem() *schema.Resource {
Computed: true,
ValidateFunc: validation.StringInSlice(fsx.AutoImportPolicyType_Values(), false),
},
"copy_tags_to_backups": {
Type: schema.TypeBool,
Optional: true,
ForceNew: true,
Default: false,
},
},
}
}
Expand Down Expand Up @@ -242,6 +248,10 @@ func resourceAwsFsxLustreFileSystemCreate(d *schema.ResourceData, meta interface
input.LustreConfiguration.AutoImportPolicy = aws.String(v.(string))
}

if v, ok := d.GetOk("copy_tags_to_backups"); ok {
input.LustreConfiguration.CopyTagsToBackups = aws.Bool(v.(bool))
}

result, err := conn.CreateFileSystem(input)
if err != nil {
return fmt.Errorf("Error creating FSx Lustre filesystem: %w", err)
Expand Down Expand Up @@ -388,6 +398,7 @@ func resourceAwsFsxLustreFileSystemRead(d *schema.ResourceData, meta interface{}
d.Set("weekly_maintenance_start_time", lustreConfig.WeeklyMaintenanceStartTime)
d.Set("automatic_backup_retention_days", lustreConfig.AutomaticBackupRetentionDays)
d.Set("daily_automatic_backup_start_time", lustreConfig.DailyAutomaticBackupStartTime)
d.Set("copy_tags_to_backups", filesystem.LustreConfiguration.CopyTagsToBackups)

return nil
}
Expand Down
39 changes: 39 additions & 0 deletions aws/resource_aws_fsx_lustre_file_system_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ func TestAccAWSFsxLustreFileSystem_basic(t *testing.T) {
resource.TestCheckResourceAttr(resourceName, "deployment_type", fsx.LustreDeploymentTypeScratch1),
resource.TestCheckResourceAttr(resourceName, "automatic_backup_retention_days", "0"),
resource.TestCheckResourceAttr(resourceName, "storage_type", fsx.StorageTypeSsd),
resource.TestCheckResourceAttr(resourceName, "copy_tags_to_backups", "false"),
),
},
{
Expand Down Expand Up @@ -619,6 +620,32 @@ func TestAccAWSFsxLustreFileSystem_StorageTypeHddDriveCacheNone(t *testing.T) {
})
}

func TestAccAWSFsxLustreFileSystem_copyTagsToBackups(t *testing.T) {
var filesystem fsx.FileSystem
resourceName := "aws_fsx_lustre_file_system.test"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckFsxLustreFileSystemDestroy,
Steps: []resource.TestStep{
{
Config: testAccAwsFsxLustreFileSystemCopyTagsToBackups(),
Check: resource.ComposeTestCheckFunc(
testAccCheckFsxLustreFileSystemExists(resourceName, &filesystem),
resource.TestCheckResourceAttr(resourceName, "copy_tags_to_backups", "true"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
ImportStateVerifyIgnore: []string{"security_group_ids"},
},
},
})
}

func TestAccAWSFsxLustreFileSystem_autoImportPolicy(t *testing.T) {
var filesystem fsx.FileSystem
resourceName := "aws_fsx_lustre_file_system.test"
Expand Down Expand Up @@ -1034,3 +1061,15 @@ resource "aws_fsx_lustre_file_system" "test" {
}
`, rName, exportPrefix, policy)
}

func testAccAwsFsxLustreFileSystemCopyTagsToBackups() string {
return testAccAwsFsxLustreFileSystemConfigBase() + `
resource "aws_fsx_lustre_file_system" "test" {
storage_capacity = 1200
deployment_type = "PERSISTENT_1"
subnet_ids = [aws_subnet.test1.id]
per_unit_storage_throughput = 50
copy_tags_to_backups = true
}
`
}
3 changes: 2 additions & 1 deletion website/docs/r/fsx_lustre_file_system.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,14 @@ The following arguments are supported:
* `tags` - (Optional) A map of tags to assign to the file system.
* `weekly_maintenance_start_time` - (Optional) The preferred start time (in `d:HH:MM` format) to perform weekly maintenance, in the UTC time zone.
* `deployment_type` - (Optional) - The filesystem deployment type. One of: `SCRATCH_1`, `SCRATCH_2`, `PERSISTENT_1`.
* `kms_key_id` - (Optional) ARN for the KMS Key to encrypt the file system at rest, applicable for `PERSISTENT_1`. Defaults to an AWS managed KMS Key.
* `kms_key_id` - (Optional) ARN for the KMS Key to encrypt the file system at rest, applicable for `PERSISTENT_1` deployment_type. Defaults to an AWS managed KMS Key.
* `per_unit_storage_throughput` - (Optional) - Describes the amount of read and write throughput for each 1 tebibyte of storage, in MB/s/TiB, required for the `PERSISTENT_1` deployment_type. Valid values for `SSD` storage_type are 50, 100, 200. Valid values for `HDD` storage_type are 12, 40.
* `automatic_backup_retention_days` - (Optional) The number of days to retain automatic backups. Setting this to 0 disables automatic backups. You can retain automatic backups for a maximum of 90 days. only valid for `PERSISTENT_1` deployment_type.
* `storage_type` - (Optional) - The filesystem storage type. Either `SSD` or `HDD`, defaults to `SSD`. `HDD` is only supported on `PERSISTENT_1` deployment types.
* `drive_cache_type` - (Optional) - The type of drive cache used by `PERSISTENT_1` filesystems that are provisioned with `HDD` storage_type. Required for `HDD` storage_type, set to either `READ` or `NONE`.
* `daily_automatic_backup_start_time` - (Optional) A recurring daily time, in the format HH:MM. HH is the zero-padded hour of the day (0-23), and MM is the zero-padded minute of the hour. For example, 05:00 specifies 5 AM daily. only valid for `PERSISTENT_1` deployment_type. Requires `automatic_backup_retention_days` to be set.
* `auto_import_policy` - (Optional) How Amazon FSx keeps your file and directory listings up to date as you add or modify objects in your linked S3 bucket. see [Auto Import Data Repo](https://docs.aws.amazon.com/fsx/latest/LustreGuide/autoimport-data-repo.html) for more details.
* `copy_tags_to_backups` - (Optional) A boolean flag indicating whether tags for the file system should be copied to backups. Applicable for `PERSISTENT_1` deployment_type. The default value is false.

## Attributes Reference

Expand Down

0 comments on commit a7beedd

Please sign in to comment.