diff --git a/community/modules/compute/schedmd-slurm-gcp-v6-partition/README.md b/community/modules/compute/schedmd-slurm-gcp-v6-partition/README.md
index 54148697bf..00aa1198e8 100644
--- a/community/modules/compute/schedmd-slurm-gcp-v6-partition/README.md
+++ b/community/modules/compute/schedmd-slurm-gcp-v6-partition/README.md
@@ -85,7 +85,7 @@ No resources.
| [exclusive](#input\_exclusive) | Exclusive job access to nodes. When set to true nodes execute single job and are deleted
after job exits. If set to false, multiple jobs can be scheduled on one node. | `bool` | `true` | no |
| [is\_default](#input\_is\_default) | Sets this partition as the default partition by updating the partition\_conf.
If "Default" is already set in partition\_conf, this variable will have no effect. | `bool` | `false` | no |
| [network\_storage](#input\_network\_storage) | DEPRECATED |
list(object({
server_ip = string,
remote_mount = string,
local_mount = string,
fs_type = string,
mount_options = string,
client_install_runner = map(string)
mount_runner = map(string)
}))
| `[]` | no |
-| [nodeset](#input\_nodeset) | A list of nodesets.
For type definition see community/modules/scheduler/schedmd-slurm-gcp-v6-controller/variables.tf::nodeset | `list(any)` | `[]` | no |
+| [nodeset](#input\_nodeset) | A list of nodesets.
For type definition see community/modules/scheduler/schedmd-slurm-gcp-v6-controller/variables.tf::nodeset | list(object({
node_count_static = optional(number, 0)
node_count_dynamic_max = optional(number, 1)
node_conf = optional(map(string), {})
nodeset_name = string
additional_disks = optional(list(object({
disk_name = optional(string)
device_name = optional(string)
disk_size_gb = optional(number)
disk_type = optional(string)
disk_labels = optional(map(string), {})
auto_delete = optional(bool, true)
boot = optional(bool, false)
})), [])
bandwidth_tier = optional(string, "platform_default")
can_ip_forward = optional(bool, false)
disable_smt = optional(bool, false)
disk_auto_delete = optional(bool, true)
disk_labels = optional(map(string), {})
disk_size_gb = optional(number)
disk_type = optional(string)
enable_confidential_vm = optional(bool, false)
enable_placement = optional(bool, false)
enable_oslogin = optional(bool, true)
enable_shielded_vm = optional(bool, false)
enable_maintenance_reservation = optional(bool, false)
enable_opportunistic_maintenance = optional(bool, false)
gpu = optional(object({
count = number
type = string
}))
dws_flex = object({
enabled = bool
max_run_duration = number
use_job_duration = bool
})
labels = optional(map(string), {})
machine_type = optional(string)
maintenance_interval = optional(string)
instance_properties_json = string
metadata = optional(map(string), {})
min_cpu_platform = optional(string)
network_tier = optional(string, "STANDARD")
network_storage = optional(list(object({
server_ip = string
remote_mount = string
local_mount = string
fs_type = string
mount_options = string
client_install_runner = optional(map(string))
mount_runner = optional(map(string))
})), [])
on_host_maintenance = optional(string)
preemptible = optional(bool, false)
region = optional(string)
service_account = optional(object({
email = optional(string)
scopes = optional(list(string), ["https://www.googleapis.com/auth/cloud-platform"])
}))
shielded_instance_config = optional(object({
enable_integrity_monitoring = optional(bool, true)
enable_secure_boot = optional(bool, true)
enable_vtpm = optional(bool, true)
}))
source_image_family = optional(string)
source_image_project = optional(string)
source_image = optional(string)
subnetwork_self_link = string
additional_networks = optional(list(object({
network = string
subnetwork = string
subnetwork_project = string
network_ip = string
nic_type = string
stack_type = string
queue_count = number
access_config = list(object({
nat_ip = string
network_tier = string
}))
ipv6_access_config = list(object({
network_tier = string
}))
alias_ip_range = list(object({
ip_cidr_range = string
subnetwork_range_name = string
}))
})))
access_config = optional(list(object({
nat_ip = string
network_tier = string
})))
spot = optional(bool, false)
tags = optional(list(string), [])
termination_action = optional(string)
reservation_name = optional(string)
future_reservation = string
startup_script = optional(list(object({
filename = string
content = string })), [])
zone_target_shape = string
zone_policy_allow = set(string)
zone_policy_deny = set(string)
}))
| `[]` | no |
| [nodeset\_dyn](#input\_nodeset\_dyn) | Defines dynamic nodesets, as a list. | list(object({
nodeset_name = string
nodeset_feature = string
}))
| `[]` | no |
| [nodeset\_tpu](#input\_nodeset\_tpu) | Define TPU nodesets, as a list. | list(object({
node_count_static = optional(number, 0)
node_count_dynamic_max = optional(number, 5)
nodeset_name = string
enable_public_ip = optional(bool, false)
node_type = string
accelerator_config = optional(object({
topology = string
version = string
}), {
topology = ""
version = ""
})
tf_version = string
preemptible = optional(bool, false)
preserve_tpu = optional(bool, false)
zone = string
data_disks = optional(list(string), [])
docker_image = optional(string, "")
network_storage = optional(list(object({
server_ip = string
remote_mount = string
local_mount = string
fs_type = string
mount_options = string
})), [])
subnetwork = string
service_account = optional(object({
email = optional(string)
scopes = optional(list(string), ["https://www.googleapis.com/auth/cloud-platform"])
}))
project_id = string
reserved = optional(string, false)
}))
| `[]` | no |
| [partition\_conf](#input\_partition\_conf) | Slurm partition configuration as a map.
See https://slurm.schedmd.com/slurm.conf.html#SECTION_PARTITION-CONFIGURATION | `map(string)` | `{}` | no |
diff --git a/community/modules/compute/schedmd-slurm-gcp-v6-partition/variables.tf b/community/modules/compute/schedmd-slurm-gcp-v6-partition/variables.tf
index e14e44b02a..5798e68878 100644
--- a/community/modules/compute/schedmd-slurm-gcp-v6-partition/variables.tf
+++ b/community/modules/compute/schedmd-slurm-gcp-v6-partition/variables.tf
@@ -54,8 +54,112 @@ variable "nodeset" {
A list of nodesets.
For type definition see community/modules/scheduler/schedmd-slurm-gcp-v6-controller/variables.tf::nodeset
EOD
- type = list(any)
- default = []
+ type = list(object({
+ node_count_static = optional(number, 0)
+ node_count_dynamic_max = optional(number, 1)
+ node_conf = optional(map(string), {})
+ nodeset_name = string
+ additional_disks = optional(list(object({
+ disk_name = optional(string)
+ device_name = optional(string)
+ disk_size_gb = optional(number)
+ disk_type = optional(string)
+ disk_labels = optional(map(string), {})
+ auto_delete = optional(bool, true)
+ boot = optional(bool, false)
+ })), [])
+ bandwidth_tier = optional(string, "platform_default")
+ can_ip_forward = optional(bool, false)
+ disable_smt = optional(bool, false)
+ disk_auto_delete = optional(bool, true)
+ disk_labels = optional(map(string), {})
+ disk_size_gb = optional(number)
+ disk_type = optional(string)
+ enable_confidential_vm = optional(bool, false)
+ enable_placement = optional(bool, false)
+ enable_oslogin = optional(bool, true)
+ enable_shielded_vm = optional(bool, false)
+ enable_maintenance_reservation = optional(bool, false)
+ enable_opportunistic_maintenance = optional(bool, false)
+ gpu = optional(object({
+ count = number
+ type = string
+ }))
+ dws_flex = object({
+ enabled = bool
+ max_run_duration = number
+ use_job_duration = bool
+ })
+ labels = optional(map(string), {})
+ machine_type = optional(string)
+ maintenance_interval = optional(string)
+ instance_properties_json = string
+ metadata = optional(map(string), {})
+ min_cpu_platform = optional(string)
+ network_tier = optional(string, "STANDARD")
+ network_storage = optional(list(object({
+ server_ip = string
+ remote_mount = string
+ local_mount = string
+ fs_type = string
+ mount_options = string
+ client_install_runner = optional(map(string))
+ mount_runner = optional(map(string))
+ })), [])
+ on_host_maintenance = optional(string)
+ preemptible = optional(bool, false)
+ region = optional(string)
+ service_account = optional(object({
+ email = optional(string)
+ scopes = optional(list(string), ["https://www.googleapis.com/auth/cloud-platform"])
+ }))
+ shielded_instance_config = optional(object({
+ enable_integrity_monitoring = optional(bool, true)
+ enable_secure_boot = optional(bool, true)
+ enable_vtpm = optional(bool, true)
+ }))
+ source_image_family = optional(string)
+ source_image_project = optional(string)
+ source_image = optional(string)
+ subnetwork_self_link = string
+ additional_networks = optional(list(object({
+ network = string
+ subnetwork = string
+ subnetwork_project = string
+ network_ip = string
+ nic_type = string
+ stack_type = string
+ queue_count = number
+ access_config = list(object({
+ nat_ip = string
+ network_tier = string
+ }))
+ ipv6_access_config = list(object({
+ network_tier = string
+ }))
+ alias_ip_range = list(object({
+ ip_cidr_range = string
+ subnetwork_range_name = string
+ }))
+ })))
+ access_config = optional(list(object({
+ nat_ip = string
+ network_tier = string
+ })))
+ spot = optional(bool, false)
+ tags = optional(list(string), [])
+ termination_action = optional(string)
+ reservation_name = optional(string)
+ future_reservation = string
+ startup_script = optional(list(object({
+ filename = string
+ content = string })), [])
+
+ zone_target_shape = string
+ zone_policy_allow = set(string)
+ zone_policy_deny = set(string)
+ }))
+ default = []
validation {
condition = length(distinct(var.nodeset[*].nodeset_name)) == length(var.nodeset)
diff --git a/tools/validate_configs/test_configs/node-groups.yaml b/tools/validate_configs/test_configs/node-groups.yaml
index 962d1e3130..ef512993c7 100644
--- a/tools/validate_configs/test_configs/node-groups.yaml
+++ b/tools/validate_configs/test_configs/node-groups.yaml
@@ -107,51 +107,6 @@ deployment_groups:
settings:
partition_name: multns
- ## Explicitly set node partition with one nodeset
- - id: single_nodeset_explicit_partition
- source: community/modules/compute/schedmd-slurm-gcp-v6-partition
- settings:
- partition_name: explns
- is_default: true
- nodeset:
- - nodeset_name: expl
- node_count_static: 0
- node_count_dynamic_max: 4
- enable_placement: false
- node_conf: {}
- additional_disks: []
- additional_networks: []
- bandwidth_tier: null
- can_ip_forward: false
- enable_smt: true
- disk_auto_delete: true
- disk_labels: {}
- disk_size_gb: 50
- disk_type: pd-standard
- enable_confidential_vm: false
- enable_oslogin: true
- enable_shielded_vm: false
- enable_spot_vm: false
- gpu: null
- instance_template: null
- labels: $(vars.labels)
- machine_type: n2-standard-16
- maintenance_interval: ""
- metadata: {}
- min_cpu_platform: null
- on_host_maintenance: TERMINATE
- preemptible: false
- reservation_name: null # will be replaced by default value empty string
- service_account_email: null
- shielded_instance_config: null
- subnetwork_self_link: $(network.subnetwork_self_link)
- spot_instance_config: null
- source_image_family: null
- source_image_project: null
- source_image: null
- tags: []
- access_config: []
-
- id: slurm_login
source: community/modules/scheduler/schedmd-slurm-gcp-v6-login
use: [network]
@@ -165,7 +120,6 @@ deployment_groups:
- network
- single_nodeset_partition
- multiple_nodesets
- - single_nodeset_explicit_partition
- homefs
- slurm_login
settings: