diff --git a/.changelog/17530.txt b/.changelog/17530.txt new file mode 100644 index 00000000000..0bf8b162d14 --- /dev/null +++ b/.changelog/17530.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +hypercomputecluster: added `terminal_storage_class` and `per_unit_storage_throughput` fields to the `google_hypercomputecluster_cluster` resource +``` \ No newline at end of file diff --git a/google/services/hypercomputecluster/resource_hypercomputecluster_cluster.go b/google/services/hypercomputecluster/resource_hypercomputecluster_cluster.go index e9b216c843e..837f572d0ef 100644 --- a/google/services/hypercomputecluster/resource_hypercomputecluster_cluster.go +++ b/google/services/hypercomputecluster/resource_hypercomputecluster_cluster.go @@ -830,6 +830,14 @@ created.`, Required: true, Description: `Enables Auto-class feature.`, }, + "terminal_storage_class": { + Type: schema.TypeString, + Optional: true, + Description: `Terminal storage class of the autoclass bucket +Possible values: +NEARLINE +ARCHIVE`, + }, }, }, }, @@ -962,6 +970,15 @@ only contain letters and numbers.`, Optional: true, Description: `Description of the Managed Lustre instance. Maximum of 2048 characters.`, }, + "per_unit_storage_throughput": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + Description: `Throughput of the instance in MB/s/TiB. Valid values are 125, 250, +500, 1000. See [Performance tiers and maximum storage +capacities](https://cloud.google.com/managed-lustre/docs/create-instance#performance-tiers) +for more information.`, + }, }, }, }, @@ -2253,12 +2270,18 @@ func flattenHypercomputeclusterClusterStorageResourcesConfigNewBucketAutoclass(v transformed := make(map[string]interface{}) transformed["enabled"] = flattenHypercomputeclusterClusterStorageResourcesConfigNewBucketAutoclassEnabled(original["enabled"], d, config) + transformed["terminal_storage_class"] = + flattenHypercomputeclusterClusterStorageResourcesConfigNewBucketAutoclassTerminalStorageClass(original["terminalStorageClass"], d, config) return []interface{}{transformed} } func flattenHypercomputeclusterClusterStorageResourcesConfigNewBucketAutoclassEnabled(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} { return v } +func flattenHypercomputeclusterClusterStorageResourcesConfigNewBucketAutoclassTerminalStorageClass(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} { + return v +} + func flattenHypercomputeclusterClusterStorageResourcesConfigNewBucketBucket(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} { return v } @@ -2365,6 +2388,8 @@ func flattenHypercomputeclusterClusterStorageResourcesConfigNewLustre(v interfac flattenHypercomputeclusterClusterStorageResourcesConfigNewLustreFilesystem(original["filesystem"], d, config) transformed["lustre"] = flattenHypercomputeclusterClusterStorageResourcesConfigNewLustreLustre(original["lustre"], d, config) + transformed["per_unit_storage_throughput"] = + flattenHypercomputeclusterClusterStorageResourcesConfigNewLustrePerUnitStorageThroughput(original["perUnitStorageThroughput"], d, config) return []interface{}{transformed} } func flattenHypercomputeclusterClusterStorageResourcesConfigNewLustreCapacityGb(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} { @@ -2383,6 +2408,10 @@ func flattenHypercomputeclusterClusterStorageResourcesConfigNewLustreLustre(v in return v } +func flattenHypercomputeclusterClusterStorageResourcesConfigNewLustrePerUnitStorageThroughput(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} { + return v +} + func flattenHypercomputeclusterClusterStorageResourcesFilestore(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} { if v == nil { return nil @@ -3673,6 +3702,13 @@ func expandHypercomputeclusterClusterStorageResourcesConfigNewBucketAutoclass(v transformed["enabled"] = transformedEnabled } + transformedTerminalStorageClass, err := expandHypercomputeclusterClusterStorageResourcesConfigNewBucketAutoclassTerminalStorageClass(original["terminal_storage_class"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedTerminalStorageClass); val.IsValid() && !tpgresource.IsEmptyValue(val) { + transformed["terminalStorageClass"] = transformedTerminalStorageClass + } + return transformed, nil } @@ -3680,6 +3716,10 @@ func expandHypercomputeclusterClusterStorageResourcesConfigNewBucketAutoclassEna return v, nil } +func expandHypercomputeclusterClusterStorageResourcesConfigNewBucketAutoclassTerminalStorageClass(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + return v, nil +} + func expandHypercomputeclusterClusterStorageResourcesConfigNewBucketBucket(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { return v, nil } @@ -3860,6 +3900,13 @@ func expandHypercomputeclusterClusterStorageResourcesConfigNewLustre(v interface transformed["lustre"] = transformedLustre } + transformedPerUnitStorageThroughput, err := expandHypercomputeclusterClusterStorageResourcesConfigNewLustrePerUnitStorageThroughput(original["per_unit_storage_throughput"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedPerUnitStorageThroughput); val.IsValid() && !tpgresource.IsEmptyValue(val) { + transformed["perUnitStorageThroughput"] = transformedPerUnitStorageThroughput + } + return transformed, nil } @@ -3879,6 +3926,10 @@ func expandHypercomputeclusterClusterStorageResourcesConfigNewLustreLustre(v int return v, nil } +func expandHypercomputeclusterClusterStorageResourcesConfigNewLustrePerUnitStorageThroughput(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + return v, nil +} + func expandHypercomputeclusterClusterStorageResourcesFilestore(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { if v == nil { return nil, nil diff --git a/google/services/hypercomputecluster/resource_hypercomputecluster_cluster_generated_meta.yaml b/google/services/hypercomputecluster/resource_hypercomputecluster_cluster_generated_meta.yaml index 4e04bb583f9..183d58ad414 100644 --- a/google/services/hypercomputecluster/resource_hypercomputecluster_cluster_generated_meta.yaml +++ b/google/services/hypercomputecluster/resource_hypercomputecluster_cluster_generated_meta.yaml @@ -92,6 +92,8 @@ fields: field: storage_resources.config.existing_lustre.lustre - api_field: storageResources.value.config.newBucket.autoclass.enabled field: storage_resources.config.new_bucket.autoclass.enabled + - api_field: storageResources.value.config.newBucket.autoclass.terminalStorageClass + field: storage_resources.config.new_bucket.autoclass.terminal_storage_class - api_field: storageResources.value.config.newBucket.bucket field: storage_resources.config.new_bucket.bucket - api_field: storageResources.value.config.newBucket.hierarchicalNamespace.enabled @@ -118,6 +120,8 @@ fields: field: storage_resources.config.new_lustre.filesystem - api_field: storageResources.value.config.newLustre.lustre field: storage_resources.config.new_lustre.lustre + - api_field: storageResources.value.config.newLustre.perUnitStorageThroughput + field: storage_resources.config.new_lustre.per_unit_storage_throughput - api_field: storageResources.value.filestore.filestore field: storage_resources.filestore.filestore - api_field: storageResources.value.lustre.lustre diff --git a/google/services/hypercomputecluster/resource_hypercomputecluster_cluster_test.go b/google/services/hypercomputecluster/resource_hypercomputecluster_cluster_test.go index 134ae6bc0d2..77631ad153d 100644 --- a/google/services/hypercomputecluster/resource_hypercomputecluster_cluster_test.go +++ b/google/services/hypercomputecluster/resource_hypercomputecluster_cluster_test.go @@ -529,6 +529,7 @@ resource "google_hypercomputecluster_cluster" "cluster" { bucket = "bucket-new-2-%{random_suffix}" autoclass { enabled = true + terminal_storage_class = "NEARLINE" } hierarchical_namespace { enabled = false @@ -559,6 +560,7 @@ resource "google_hypercomputecluster_cluster" "cluster" { description = "Lustre instance created via Terraform" filesystem = "lustrefs" lustre = "projects/${local.project_id}/locations/us-central1-a/instances/lustre-%{random_suffix}" + per_unit_storage_throughput = "1000" } } } diff --git a/website/docs/r/hypercomputecluster_cluster.html.markdown b/website/docs/r/hypercomputecluster_cluster.html.markdown index 565b27d96ed..1322bf1844d 100644 --- a/website/docs/r/hypercomputecluster_cluster.html.markdown +++ b/website/docs/r/hypercomputecluster_cluster.html.markdown @@ -705,6 +705,13 @@ The following arguments are supported: (Required) Enables Auto-class feature. +* `terminal_storage_class` - + (Optional) + Terminal storage class of the autoclass bucket + Possible values: + NEARLINE + ARCHIVE + The `hierarchical_namespace` block supports: * `enabled` - @@ -780,6 +787,13 @@ The following arguments are supported: Name of the Managed Lustre instance to create, in the format `projects/{project}/locations/{location}/instances/{instance}` +* `per_unit_storage_throughput` - + (Optional) + Throughput of the instance in MB/s/TiB. Valid values are 125, 250, + 500, 1000. See [Performance tiers and maximum storage + capacities](https://cloud.google.com/managed-lustre/docs/create-instance#performance-tiers) + for more information. + The `filestore` block contains: * `filestore` -