Skip to content

Commit

Permalink
Merge pull request #2926 from mr0re1/cp_2893
Browse files Browse the repository at this point in the history
Fix bug of suppliying different `instance_properties`
  • Loading branch information
mr0re1 authored Aug 14, 2024
2 parents d3496bc + 2127e3e commit 0271610
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ locals {
termination_action = try(var.spot_instance_config.termination_action, null)
reservation_name = local.reservation_name
maintenance_interval = var.maintenance_interval
instance_properties = var.instance_properties
instance_properties_json = jsonencode(var.instance_properties)

zone_target_shape = var.zone_target_shape
zone_policy_allow = local.zones
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ limitations under the License.
| <a name="input_metadata"></a> [metadata](#input\_metadata) | Metadata, provided as a map. | `map(string)` | `{}` | no |
| <a name="input_min_cpu_platform"></a> [min\_cpu\_platform](#input\_min\_cpu\_platform) | Specifies a minimum CPU platform. Applicable values are the friendly names of<br>CPU platforms, such as Intel Haswell or Intel Skylake. See the complete list:<br>https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform | `string` | `null` | no |
| <a name="input_network_storage"></a> [network\_storage](#input\_network\_storage) | An array of network attached storage mounts to be configured on all instances. | <pre>list(object({<br> server_ip = string,<br> remote_mount = string,<br> local_mount = string,<br> fs_type = string,<br> mount_options = string,<br> client_install_runner = optional(map(string))<br> mount_runner = optional(map(string))<br> }))</pre> | `[]` | no |
| <a name="input_nodeset"></a> [nodeset](#input\_nodeset) | Define nodesets, as a list. | <pre>list(object({<br> node_count_static = optional(number, 0)<br> node_count_dynamic_max = optional(number, 1)<br> node_conf = optional(map(string), {})<br> nodeset_name = string<br> additional_disks = optional(list(object({<br> disk_name = optional(string)<br> device_name = optional(string)<br> disk_size_gb = optional(number)<br> disk_type = optional(string)<br> disk_labels = optional(map(string), {})<br> auto_delete = optional(bool, true)<br> boot = optional(bool, false)<br> })), [])<br> bandwidth_tier = optional(string, "platform_default")<br> can_ip_forward = optional(bool, false)<br> disable_smt = optional(bool, false)<br> disk_auto_delete = optional(bool, true)<br> disk_labels = optional(map(string), {})<br> disk_size_gb = optional(number)<br> disk_type = optional(string)<br> enable_confidential_vm = optional(bool, false)<br> enable_placement = optional(bool, false)<br> enable_oslogin = optional(bool, true)<br> enable_shielded_vm = optional(bool, false)<br> gpu = optional(object({<br> count = number<br> type = string<br> }))<br> labels = optional(map(string), {})<br> machine_type = optional(string)<br> maintenance_interval = optional(string)<br> instance_properties = optional(any, null)<br> metadata = optional(map(string), {})<br> min_cpu_platform = optional(string)<br> network_tier = optional(string, "STANDARD")<br> network_storage = optional(list(object({<br> server_ip = string<br> remote_mount = string<br> local_mount = string<br> fs_type = string<br> mount_options = string<br> client_install_runner = optional(map(string))<br> mount_runner = optional(map(string))<br> })), [])<br> on_host_maintenance = optional(string)<br> preemptible = optional(bool, false)<br> region = optional(string)<br> service_account = optional(object({<br> email = optional(string)<br> scopes = optional(list(string), ["https://www.googleapis.com/auth/cloud-platform"])<br> }))<br> shielded_instance_config = optional(object({<br> enable_integrity_monitoring = optional(bool, true)<br> enable_secure_boot = optional(bool, true)<br> enable_vtpm = optional(bool, true)<br> }))<br> source_image_family = optional(string)<br> source_image_project = optional(string)<br> source_image = optional(string)<br> subnetwork_self_link = string<br> additional_networks = optional(list(object({<br> network = string<br> subnetwork = string<br> subnetwork_project = string<br> network_ip = string<br> nic_type = string<br> stack_type = string<br> queue_count = number<br> access_config = list(object({<br> nat_ip = string<br> network_tier = string<br> }))<br> ipv6_access_config = list(object({<br> network_tier = string<br> }))<br> alias_ip_range = list(object({<br> ip_cidr_range = string<br> subnetwork_range_name = string<br> }))<br> })))<br> access_config = optional(list(object({<br> nat_ip = string<br> network_tier = string<br> })))<br> spot = optional(bool, false)<br> tags = optional(list(string), [])<br> termination_action = optional(string)<br> reservation_name = optional(string)<br> startup_script = optional(list(object({<br> filename = string<br> content = string })), [])<br><br> zone_target_shape = string<br> zone_policy_allow = set(string)<br> zone_policy_deny = set(string)<br> }))</pre> | `[]` | no |
| <a name="input_nodeset"></a> [nodeset](#input\_nodeset) | Define nodesets, as a list. | <pre>list(object({<br> node_count_static = optional(number, 0)<br> node_count_dynamic_max = optional(number, 1)<br> node_conf = optional(map(string), {})<br> nodeset_name = string<br> additional_disks = optional(list(object({<br> disk_name = optional(string)<br> device_name = optional(string)<br> disk_size_gb = optional(number)<br> disk_type = optional(string)<br> disk_labels = optional(map(string), {})<br> auto_delete = optional(bool, true)<br> boot = optional(bool, false)<br> })), [])<br> bandwidth_tier = optional(string, "platform_default")<br> can_ip_forward = optional(bool, false)<br> disable_smt = optional(bool, false)<br> disk_auto_delete = optional(bool, true)<br> disk_labels = optional(map(string), {})<br> disk_size_gb = optional(number)<br> disk_type = optional(string)<br> enable_confidential_vm = optional(bool, false)<br> enable_placement = optional(bool, false)<br> enable_oslogin = optional(bool, true)<br> enable_shielded_vm = optional(bool, false)<br> gpu = optional(object({<br> count = number<br> type = string<br> }))<br> labels = optional(map(string), {})<br> machine_type = optional(string)<br> maintenance_interval = optional(string)<br> instance_properties_json = string<br> metadata = optional(map(string), {})<br> min_cpu_platform = optional(string)<br> network_tier = optional(string, "STANDARD")<br> network_storage = optional(list(object({<br> server_ip = string<br> remote_mount = string<br> local_mount = string<br> fs_type = string<br> mount_options = string<br> client_install_runner = optional(map(string))<br> mount_runner = optional(map(string))<br> })), [])<br> on_host_maintenance = optional(string)<br> preemptible = optional(bool, false)<br> region = optional(string)<br> service_account = optional(object({<br> email = optional(string)<br> scopes = optional(list(string), ["https://www.googleapis.com/auth/cloud-platform"])<br> }))<br> shielded_instance_config = optional(object({<br> enable_integrity_monitoring = optional(bool, true)<br> enable_secure_boot = optional(bool, true)<br> enable_vtpm = optional(bool, true)<br> }))<br> source_image_family = optional(string)<br> source_image_project = optional(string)<br> source_image = optional(string)<br> subnetwork_self_link = string<br> additional_networks = optional(list(object({<br> network = string<br> subnetwork = string<br> subnetwork_project = string<br> network_ip = string<br> nic_type = string<br> stack_type = string<br> queue_count = number<br> access_config = list(object({<br> nat_ip = string<br> network_tier = string<br> }))<br> ipv6_access_config = list(object({<br> network_tier = string<br> }))<br> alias_ip_range = list(object({<br> ip_cidr_range = string<br> subnetwork_range_name = string<br> }))<br> })))<br> access_config = optional(list(object({<br> nat_ip = string<br> network_tier = string<br> })))<br> spot = optional(bool, false)<br> tags = optional(list(string), [])<br> termination_action = optional(string)<br> reservation_name = optional(string)<br> startup_script = optional(list(object({<br> filename = string<br> content = string })), [])<br><br> zone_target_shape = string<br> zone_policy_allow = set(string)<br> zone_policy_deny = set(string)<br> }))</pre> | `[]` | no |
| <a name="input_nodeset_dyn"></a> [nodeset\_dyn](#input\_nodeset\_dyn) | Defines dynamic nodesets, as a list. | <pre>list(object({<br> nodeset_name = string<br> nodeset_feature = string<br> }))</pre> | `[]` | no |
| <a name="input_nodeset_tpu"></a> [nodeset\_tpu](#input\_nodeset\_tpu) | Define TPU nodesets, as a list. | <pre>list(object({<br> node_count_static = optional(number, 0)<br> node_count_dynamic_max = optional(number, 5)<br> nodeset_name = string<br> enable_public_ip = optional(bool, false)<br> node_type = string<br> accelerator_config = optional(object({<br> topology = string<br> version = string<br> }), {<br> topology = ""<br> version = ""<br> })<br> tf_version = string<br> preemptible = optional(bool, false)<br> preserve_tpu = optional(bool, false)<br> zone = string<br> data_disks = optional(list(string), [])<br> docker_image = optional(string, "")<br> network_storage = optional(list(object({<br> server_ip = string<br> remote_mount = string<br> local_mount = string<br> fs_type = string<br> mount_options = string<br> client_install_runner = optional(map(string))<br> mount_runner = optional(map(string))<br> })), [])<br> subnetwork = string<br> service_account = optional(object({<br> email = optional(string)<br> scopes = optional(list(string), ["https://www.googleapis.com/auth/cloud-platform"])<br> }))<br> project_id = string<br> reserved = optional(string, false)<br> }))</pre> | `[]` | no |
| <a name="input_on_host_maintenance"></a> [on\_host\_maintenance](#input\_on\_host\_maintenance) | Instance availability Policy. | `string` | `"MIGRATE"` | no |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,12 @@ locals {
epilog_scripts = [for k, v in google_storage_bucket_object.epilog_scripts : k]
cloud_parameters = var.cloud_parameters

partitions = { for p in var.partitions : p.partition_name => p }
nodeset = { for n in var.nodeset : n.nodeset_name => n }
partitions = { for p in var.partitions : p.partition_name => p }
nodeset = {
for n in var.nodeset : n.nodeset_name => merge(n, {
instance_properties = jsondecode(n.instance_properties_json)
})
}
nodeset_dyn = { for n in var.nodeset_dyn : n.nodeset_name => n }
nodeset_tpu = { for n in var.nodeset_tpu[*].nodeset : n.nodeset_name => n }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,20 +68,20 @@ module "slurm_nodeset_template" {

locals {
nodesets = [for name, ns in local.nodeset_map : {
nodeset_name = ns.nodeset_name
node_conf = ns.node_conf
instance_template = module.slurm_nodeset_template[ns.nodeset_name].self_link
node_count_dynamic_max = ns.node_count_dynamic_max
node_count_static = ns.node_count_static
subnetwork = ns.subnetwork_self_link
reservation_name = ns.reservation_name
maintenance_interval = ns.maintenance_interval
instance_properties = ns.instance_properties
enable_placement = ns.enable_placement
network_storage = ns.network_storage
zone_target_shape = ns.zone_target_shape
zone_policy_allow = ns.zone_policy_allow
zone_policy_deny = ns.zone_policy_deny
nodeset_name = ns.nodeset_name
node_conf = ns.node_conf
instance_template = module.slurm_nodeset_template[ns.nodeset_name].self_link
node_count_dynamic_max = ns.node_count_dynamic_max
node_count_static = ns.node_count_static
subnetwork = ns.subnetwork_self_link
reservation_name = ns.reservation_name
maintenance_interval = ns.maintenance_interval
instance_properties_json = ns.instance_properties_json
enable_placement = ns.enable_placement
network_storage = ns.network_storage
zone_target_shape = ns.zone_target_shape
zone_policy_allow = ns.zone_policy_allow
zone_policy_deny = ns.zone_policy_deny
}]
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,13 +211,13 @@ variable "nodeset" {
count = number
type = string
}))
labels = optional(map(string), {})
machine_type = optional(string)
maintenance_interval = optional(string)
instance_properties = optional(any, null)
metadata = optional(map(string), {})
min_cpu_platform = optional(string)
network_tier = optional(string, "STANDARD")
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
Expand Down

0 comments on commit 0271610

Please sign in to comment.