Skip to content

Commit dff8c71

Browse files
committed
feat: Update outputs for worker pools/ips/ids
Signed-off-by: Devon Crouse <devon.crouse@oracle.com>
1 parent e528577 commit dff8c71

File tree

3 files changed

+44
-14
lines changed

3 files changed

+44
-14
lines changed

module-workers.tf

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,21 @@ module "workers" {
8484
}
8585

8686
output "worker_pools" {
87-
description = "Enabled worker pools"
88-
value = var.output_detail && local.worker_count_expected > 0 ? one(module.workers[*].worker_pools) : null
87+
description = "Created worker pools (mode != 'instance')"
88+
value = var.output_detail && local.worker_count_expected > 0 ? try(one(module.workers[*].worker_pools), null) : null
89+
}
90+
91+
output "worker_instances" {
92+
description = "Created worker pools (mode == 'instance')"
93+
value = var.output_detail && local.worker_count_expected > 0 ? try(one(module.workers[*].worker_instances), null) : null
8994
}
9095

9196
output "worker_pool_ids" {
9297
description = "Enabled worker pool IDs"
93-
value = local.worker_count_expected > 0 ? one(module.workers[*].worker_pool_ids) : null
98+
value = local.worker_count_expected > 0 ? try(one(module.workers[*].worker_pool_ids), null) : null
9499
}
95100

96-
output "worker_instance_ids" {
97-
description = "Created worker instance IDs (mode == 'instance'). Excludes pool-managed instances."
98-
value = one(module.workers[*].worker_instance_ids)
101+
output "worker_pool_ips" {
102+
description = "Created worker instance private IPs by pool for available modes ('node-pool', 'instance')."
103+
value = local.worker_count_expected > 0 ? try(one(module.workers[*].worker_pool_ips), null) : null
99104
}

modules/workers/locals.tf

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -204,19 +204,39 @@ locals {
204204
}
205205
}
206206

207-
# Worker pool OCI resources enriched with desired/custom parameters
207+
# Maps of worker pool OCI resources by pool name enriched with desired/custom parameters for various modes
208208
worker_node_pools = { for k, v in oci_containerengine_node_pool.workers : k => merge(v, lookup(local.worker_pools_final, k, {})) }
209209
worker_virtual_node_pools = { for k, v in oci_containerengine_virtual_node_pool.workers : k => merge(v, lookup(local.worker_pools_final, k, {})) }
210210
worker_instance_pools = { for k, v in oci_core_instance_pool.workers : k => merge(v, lookup(local.worker_pools_final, k, {})) }
211211
worker_cluster_networks = { for k, v in oci_core_cluster_network.workers : k => merge(v, lookup(local.worker_pools_final, k, {})) }
212212
worker_instances = { for k, v in oci_core_instance.workers : k => merge(v, lookup(local.worker_pools_final, k, {})) }
213+
214+
# Combined map of outputs by pool name for all modes excluding 'instance' (output separately)
213215
worker_pools_output = merge(
214216
local.worker_node_pools,
215217
local.worker_virtual_node_pools,
216218
local.worker_instance_pools,
217219
local.worker_cluster_networks,
218-
local.worker_instances
219220
)
220-
worker_pool_ids = { for k, v in local.worker_pools_output : k => v.id }
221-
worker_instance_ids = { for k, v in local.enabled_instances : k => lookup(lookup(oci_core_instance.workers, k, {}), "id", "") }
221+
222+
# OCIDs of pool resources by pool name for modes: 'node-pool', 'virtual-node-pool', 'instance-pool', 'cluster-network'
223+
worker_pool_ids = { for k, v in local.worker_pools_output : k => v.id }
224+
225+
# Map of pool name to list of instance IP addresses for modes: 'instance'
226+
worker_instance_ips = {
227+
for x, y in {
228+
for k, v in local.worker_instances : replace(k, "/-[^-]*$/", "") => # remove index suffix
229+
{ lookup(v, "id", "") = lookup(v, "private_ip", null) }... # instances grouped by "pool"
230+
} : x => merge(y...)
231+
}
232+
233+
# Map of pool name to list of instance IP addresses for modes: 'node-pool'
234+
worker_nodepool_ips = {
235+
for k, v in local.worker_node_pools : k => {
236+
for n in lookup(v, "nodes", []) : lookup(n, "id", "") => lookup(n, "private_ip", null)
237+
}
238+
}
239+
240+
# Yields {<pool name> = {<instance id> = <instance ip>}} for modes: 'node-pool', 'instance'
241+
worker_pool_ips = merge(local.worker_instance_ips, local.worker_nodepool_ips)
222242
}

modules/workers/outputs.tf

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,23 @@
22
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl
33

44
output "worker_pools" {
5-
description = "Created worker pools"
5+
description = "Created worker pools (mode != 'instance')"
66
value = local.worker_pools_output
77
}
88

9+
output "worker_instances" {
10+
description = "Created worker pools (mode == 'instance')"
11+
value = local.worker_instances
12+
}
13+
914
output "worker_pool_ids" {
1015
description = "Created worker pool IDs"
1116
value = local.worker_pool_ids
1217
}
1318

14-
output "worker_instance_ids" {
15-
description = "Created worker instance IDs (mode == 'instance'). Excludes pool-managed instances."
16-
value = local.worker_instance_ids
19+
output "worker_pool_ips" {
20+
description = "Created worker instance private IPs by pool for available modes ('node-pool', 'instance')."
21+
value = local.worker_pool_ips
1722
}
1823

1924
output "worker_count_expected" {

0 commit comments

Comments
 (0)