Skip to content

Commit

Permalink
Add dynamic resource capability
Browse files Browse the repository at this point in the history
  • Loading branch information
pbfinley1911 committed Aug 16, 2022
1 parent b4b062e commit 57fc1c6
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 22 deletions.
49 changes: 27 additions & 22 deletions main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -3,43 +3,39 @@ data "ibm_pi_catalog_images" "catalog_images" {
vtl = true
pi_cloud_instance_id = local.pid
}

data "ibm_pi_images" "cloud_instance_images" {
pi_cloud_instance_id = local.pid
}

data "ibm_pi_placement_groups" "cloud_instance_groups" {
pi_cloud_instance_id = local.pid
}

locals {
stock_image_name = "VTL-FalconStor-10_03-001"
catalog_image = [for x in data.ibm_pi_catalog_images.catalog_images.images : x if x.name == local.stock_image_name]
private_image = [for x in data.ibm_pi_images.cloud_instance_images.image_info : x if x.name == local.stock_image_name]
private_image_id = length(local.private_image) > 0 ? local.private_image[0].id : ""
placement_group = [for x in data.ibm_pi_placement_groups.cloud_instance_groups.placement_groups : x if x.name == var.placement_group]
placement_group_id = length(local.placement_group) > 0 ? local.placement_group[0].id : ""
}

data "ibm_pi_key" "key" {
count = length(var.ssh_key_name) > 0 ? 1 : 0
pi_cloud_instance_id = local.pid
pi_key_name = var.ssh_key_name
}

data "ibm_pi_network" "network_1" {
pi_cloud_instance_id = local.pid
pi_network_name = var.network_1
}

data "ibm_pi_network" "network_2" {
count = length(var.network_2) > 0 ? 1 : 0
pi_cloud_instance_id = local.pid
pi_network_name = var.network_2
}

data "ibm_pi_network" "network_3" {
count = length(var.network_3) > 0 ? 1 : 0
pi_cloud_instance_id = local.pid
pi_network_name = var.network_3
}
locals {
stock_image_name = "VTL-FalconStor-10_03-001"
catalog_image = [for x in data.ibm_pi_catalog_images.catalog_images.images : x if x.name == local.stock_image_name]
private_image = [for x in data.ibm_pi_images.cloud_instance_images.image_info : x if x.name == local.stock_image_name]
private_image_id = length(local.private_image) > 0 ? local.private_image[0].id : ""
placement_group = [for x in data.ibm_pi_placement_groups.cloud_instance_groups.placement_groups : x if x.name == var.placement_group]
placement_group_id = length(local.placement_group) > 0 ? local.placement_group[0].id : ""
}

resource "ibm_pi_image" "stock_image_copy" {
count = length(local.private_image_id) == 0 ? 1 : 0
Expand All @@ -51,23 +47,32 @@ resource "ibm_pi_image" "stock_image_copy" {

resource "ibm_pi_instance" "instance" {
pi_cloud_instance_id = local.pid
pi_placement_group_id = local.placement_group_id
pi_memory = var.memory
pi_processors = var.processors
pi_instance_name = var.instance_name
pi_proc_type = var.processor_type
pi_image_id = length(local.private_image_id) == 0 ? ibm_pi_image.stock_image_copy[0].image_id : local.private_image_id
pi_key_pair_name = data.ibm_pi_key.key.id
pi_sys_type = var.sys_type
pi_storage_type = var.storage_type
pi_key_pair_name = length(var.ssh_key_name) > 0 ? data.ibm_pi_key.key[0].id : null
pi_affinity_policy = length(var.pvm_instances) > 0 ? var.affinity_policy : null
pi_anti_affinity_instances = length(var.pvm_instances) > 0 ? split(",", var.pvm_instances) : null
pi_placement_group_id = local.placement_group_id
pi_license_repository_capacity = var.license_repository_capacity
pi_network {
network_id = data.ibm_pi_network.network_1.id
}
pi_network {
network_id = data.ibm_pi_network.network_2.id
dynamic "pi_network" {
for_each = var.network_2 == "" ? [] : [1]
content {
network_id = data.ibm_pi_network.network_2[0].id
}
}
pi_network {
network_id = data.ibm_pi_network.network_3.id
dynamic "pi_network" {
for_each = var.network_3 == "" ? [] : [1]
content {
network_id = data.ibm_pi_network.network_3[0].id
}
}
pi_license_repository_capacity = var.license_repository_capacity

}
10 changes: 10 additions & 0 deletions variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,13 @@ variable "placement_group" {
default = ""
description = "The server placement group name where the VTL instance is placed, as defined for the selected Power Systems Virtual Server CRN"
}
variable "affinity_policy" {
type = string
default = "anti-affinity"
description = "The policy used when determining placement of the VTL volume based on an existing PVM instance ID (or comma-separated list of IDs)"
}
variable "pvm_instances" {
type = string
default = ""
description = "The list of PVM instance IDs to base storage anti-affinity policy against, as defined for the selected Power Systems Virtual Server CRN"
}

0 comments on commit 57fc1c6

Please sign in to comment.