@@ -127,15 +127,15 @@ data "coder_parameter" "instance_shape" {
127
127
mutable = false
128
128
option {
129
129
name = " VM.Standard.A1.Flex (1 OCPU, 6 GB RAM)"
130
- value = " VM.Standard.A1.Flex"
130
+ value = " VM.Standard.A1.Flex-1-6 "
131
131
}
132
132
option {
133
133
name = " VM.Standard.A1.Flex (2 OCPU, 12 GB RAM)"
134
- value = " VM.Standard.A1.Flex"
134
+ value = " VM.Standard.A1.Flex-2-12 "
135
135
}
136
136
option {
137
137
name = " VM.Standard.A1.Flex (4 OCPU, 24 GB RAM)"
138
- value = " VM.Standard.A1.Flex"
138
+ value = " VM.Standard.A1.Flex-4-24 "
139
139
}
140
140
option {
141
141
name = " VM.Standard.E2.1.Micro (1 OCPU, 1 GB RAM)"
@@ -159,15 +159,15 @@ data "coder_parameter" "instance_shape" {
159
159
}
160
160
option {
161
161
name = " VM.Standard.E3.Flex (1 OCPU, 8 GB RAM)"
162
- value = " VM.Standard.E3.Flex"
162
+ value = " VM.Standard.E3.Flex-1-8 "
163
163
}
164
164
option {
165
165
name = " VM.Standard.E3.Flex (2 OCPU, 16 GB RAM)"
166
- value = " VM.Standard.E3.Flex"
166
+ value = " VM.Standard.E3.Flex-2-16 "
167
167
}
168
168
option {
169
169
name = " VM.Standard.E3.Flex (4 OCPU, 32 GB RAM)"
170
- value = " VM.Standard.E3.Flex"
170
+ value = " VM.Standard.E3.Flex-4-32 "
171
171
}
172
172
}
173
173
@@ -228,6 +228,15 @@ data "oci_core_images" "ubuntu" {
228
228
locals {
229
229
hostname = lower (data. coder_workspace . me . name )
230
230
linux_user = " coder"
231
+
232
+ # Parse shape configuration for flexible shapes
233
+ shape_parts = split (" -" , data. coder_parameter . instance_shape . value )
234
+ base_shape = length (local. shape_parts ) > 2 ? join (" -" , slice (local. shape_parts , 0 , 3 )) : data. coder_parameter . instance_shape . value
235
+ ocpus = length (local. shape_parts ) > 3 ? tonumber (local. shape_parts [3 ]) : 1
236
+ memory_gb = length (local. shape_parts ) > 4 ? tonumber (local. shape_parts [4 ]) : 6
237
+
238
+ # Determine if shape is flexible (needs shape_config)
239
+ is_flexible = can (regex (" .*Flex.*" , local. base_shape ))
231
240
}
232
241
233
242
# Coder Agent
@@ -430,11 +439,14 @@ resource "oci_core_instance" "dev" {
430
439
availability_domain = data. oci_identity_availability_domains . ads . availability_domains [0 ]. name
431
440
compartment_id = var. compartment_ocid
432
441
display_name = " coder-${ lower (data. coder_workspace_owner . me . name )} -${ lower (data. coder_workspace . me . name )} "
433
- shape = data . coder_parameter . instance_shape . value
442
+ shape = local . base_shape
434
443
435
- shape_config {
436
- ocpus = 1
437
- memory_in_gbs = 6
444
+ dynamic "shape_config" {
445
+ for_each = local. is_flexible ? [1 ] : []
446
+ content {
447
+ ocpus = local. ocpus
448
+ memory_in_gbs = local. memory_gb
449
+ }
438
450
}
439
451
440
452
create_vnic_details {
0 commit comments