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` -