Skip to content

Commit 885d842

Browse files
Terraform Team Automationvsin12
authored andcommitted
Added - Support for Custom hostname Terraform Instance Pools - Custom hostname support
1 parent a97550c commit 885d842

File tree

9 files changed

+101
-12
lines changed

9 files changed

+101
-12
lines changed

examples/compute/instance_pool/instance_pool.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,8 @@ resource "oci_core_instance_pool" "test_instance_pool" {
270270
size = 2
271271
state = "RUNNING"
272272
display_name = "TestInstancePool"
273+
instance_display_name_formatter = "host-$${launchCount}"
274+
instance_hostname_formatter = "host-$${launchCount}"
273275

274276
placement_configurations {
275277
availability_domain = data.oci_identity_availability_domain.ad.name

internal/integrationtest/core_cluster_network_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,8 @@ func TestCoreClusterNetworkResource_basic(t *testing.T) {
171171
resource.TestCheckResourceAttr(resourceName, "instance_pools.0.display_name", "hpc-cluster-network-pool"),
172172
resource.TestCheckResourceAttr(resourceName, "instance_pools.0.freeform_tags.%", "1"),
173173
resource.TestCheckResourceAttrSet(resourceName, "instance_pools.0.id"),
174+
resource.TestCheckResourceAttr(resourceName, "instance_pools.0.instance_display_name_formatter", ""),
175+
resource.TestCheckResourceAttr(resourceName, "instance_pools.0.instance_hostname_formatter", ""),
174176
resource.TestCheckResourceAttrSet(resourceName, "instance_pools.0.instance_configuration_id"),
175177
resource.TestCheckResourceAttr(resourceName, "instance_pools.0.placement_configurations.#", "1"),
176178
resource.TestCheckResourceAttr(resourceName, "instance_pools.0.size", "1"),
@@ -219,6 +221,8 @@ func TestCoreClusterNetworkResource_basic(t *testing.T) {
219221
resource.TestCheckResourceAttr(resourceName, "instance_pools.0.freeform_tags.%", "1"),
220222
resource.TestCheckResourceAttrSet(resourceName, "instance_pools.0.id"),
221223
resource.TestCheckResourceAttrSet(resourceName, "instance_pools.0.instance_configuration_id"),
224+
resource.TestCheckResourceAttr(resourceName, "instance_pools.0.instance_display_name_formatter", ""),
225+
resource.TestCheckResourceAttr(resourceName, "instance_pools.0.instance_hostname_formatter", ""),
222226
resource.TestCheckResourceAttr(resourceName, "instance_pools.0.placement_configurations.#", "1"),
223227
resource.TestCheckResourceAttr(resourceName, "instance_pools.0.size", "1"),
224228
resource.TestCheckResourceAttrSet(resourceName, "instance_pools.0.state"),
@@ -309,6 +313,8 @@ func TestCoreClusterNetworkResource_basic(t *testing.T) {
309313
resource.TestCheckResourceAttr(datasourceName, "cluster_networks.0.instance_pools.0.display_name", "hpc-cluster-network-pool2"),
310314
resource.TestCheckResourceAttr(datasourceName, "cluster_networks.0.instance_pools.0.freeform_tags.%", "1"),
311315
resource.TestCheckResourceAttrSet(datasourceName, "cluster_networks.0.instance_pools.0.id"),
316+
resource.TestCheckResourceAttr(datasourceName, "cluster_networks.0.instance_pools.0.instance_display_name_formatter", ""),
317+
resource.TestCheckResourceAttr(datasourceName, "cluster_networks.0.instance_pools.0.instance_hostname_formatter", ""),
312318
resource.TestCheckResourceAttrSet(datasourceName, "cluster_networks.0.instance_pools.0.instance_configuration_id"),
313319
resource.TestCheckResourceAttr(datasourceName, "cluster_networks.0.instance_pools.0.placement_configurations.#", "0"),
314320
resource.TestCheckResourceAttr(datasourceName, "cluster_networks.0.instance_pools.0.size", "2"),

internal/integrationtest/core_instance_pool_test.go

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,17 @@ var (
4646
}
4747

4848
CoreInstancePoolRepresentation = map[string]interface{}{
49-
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
50-
"instance_configuration_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_instance_configuration.test_instance_configuration.id}`},
51-
"placement_configurations": acctest.RepresentationGroup{RepType: acctest.Required, Group: CoreInstancePoolPlacementConfigurationsRepresentation},
52-
"size": acctest.Representation{RepType: acctest.Required, Create: `2`, Update: `3`},
53-
"state": acctest.Representation{RepType: acctest.Optional, Create: `Running`},
54-
"defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`, Update: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "updatedValue")}`},
55-
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `backend-servers-pool`, Update: `displayName2`},
56-
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}},
57-
"load_balancers": acctest.RepresentationGroup{RepType: acctest.Optional, Group: CoreInstancePoolLoadBalancersRepresentation},
49+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
50+
"instance_configuration_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_instance_configuration.test_instance_configuration.id}`},
51+
"placement_configurations": acctest.RepresentationGroup{RepType: acctest.Required, Group: CoreInstancePoolPlacementConfigurationsRepresentation},
52+
"size": acctest.Representation{RepType: acctest.Required, Create: `2`, Update: `3`},
53+
"state": acctest.Representation{RepType: acctest.Optional, Create: `Running`},
54+
"defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`, Update: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "updatedValue")}`},
55+
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `backend-servers-pool`, Update: `displayName2`},
56+
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}},
57+
"load_balancers": acctest.RepresentationGroup{RepType: acctest.Optional, Group: CoreInstancePoolLoadBalancersRepresentation},
58+
"instance_display_name_formatter": acctest.Representation{RepType: acctest.Optional, Create: `host-$${launchCount}`, Update: `host2-$${launchCount}`},
59+
"instance_hostname_formatter": acctest.Representation{RepType: acctest.Optional, Create: `host-$${launchCount}`, Update: `host2-$${launchCount}`},
5860
}
5961

6062
CoreInstancePoolRepresentationWithLifecycleSizeIgnoreChanges = map[string]interface{}{
@@ -148,8 +150,8 @@ var (
148150
CoreInstancePoolResourceDependencies = utils.OciImageIdsVariable +
149151
acctest.GenerateResourceFromRepresentationMap("oci_core_instance_configuration", "test_instance_configuration", acctest.Optional, acctest.Create, acctest.GetUpdatedRepresentationCopy("instance_details.launch_details.launch_options", instanceLaunchOptionsRepresentationForInstanceConfiguration, CoreInstancePoolConfigurationPoolRepresentation)) +
150152
acctest.GenerateResourceFromRepresentationMap("oci_core_instance", "test_instance", acctest.Required, acctest.Create, CoreInstanceRepresentation) +
151-
acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, CoreSubnetRepresentation) +
152-
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, CoreVcnRepresentation) +
153+
acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Optional, acctest.Create, CoreSubnetRepresentation) +
154+
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Optional, acctest.Create, CoreVcnRepresentation) +
153155
AvailabilityDomainConfig +
154156
DefinedTagsDependencies +
155157
acctest.GenerateResourceFromRepresentationMap("oci_load_balancer_backend_set", "test_backend_set", acctest.Required, acctest.Create, backendSetRepresentation) +
@@ -216,6 +218,8 @@ func TestCoreInstancePoolResource_basic(t *testing.T) {
216218
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
217219
resource.TestCheckResourceAttrSet(resourceName, "id"),
218220
resource.TestCheckResourceAttrSet(resourceName, "instance_configuration_id"),
221+
resource.TestCheckResourceAttr(resourceName, "instance_display_name_formatter", "host-${launchCount}"),
222+
resource.TestCheckResourceAttr(resourceName, "instance_hostname_formatter", "host-${launchCount}"),
219223
resource.TestCheckResourceAttr(resourceName, "load_balancers.#", "1"),
220224
resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.backend_set_name"),
221225
resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.id"),
@@ -260,6 +264,8 @@ func TestCoreInstancePoolResource_basic(t *testing.T) {
260264
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
261265
resource.TestCheckResourceAttrSet(resourceName, "id"),
262266
resource.TestCheckResourceAttrSet(resourceName, "instance_configuration_id"),
267+
resource.TestCheckResourceAttr(resourceName, "instance_display_name_formatter", "host-${launchCount}"),
268+
resource.TestCheckResourceAttr(resourceName, "instance_hostname_formatter", "host-${launchCount}"),
263269
resource.TestCheckResourceAttr(resourceName, "load_balancers.#", "1"),
264270
resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.backend_set_name"),
265271
resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.id"),
@@ -296,6 +302,8 @@ func TestCoreInstancePoolResource_basic(t *testing.T) {
296302
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
297303
resource.TestCheckResourceAttrSet(resourceName, "id"),
298304
resource.TestCheckResourceAttrSet(resourceName, "instance_configuration_id"),
305+
resource.TestCheckResourceAttr(resourceName, "instance_display_name_formatter", "host2-${launchCount}"),
306+
resource.TestCheckResourceAttr(resourceName, "instance_hostname_formatter", "host2-${launchCount}"),
299307
resource.TestCheckResourceAttr(resourceName, "load_balancers.#", "1"),
300308
resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.backend_set_name"),
301309
resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.id"),
@@ -487,6 +495,8 @@ func TestCoreInstancePoolResource_basic(t *testing.T) {
487495
resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"),
488496
resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"),
489497
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
498+
resource.TestCheckResourceAttr(singularDatasourceName, "instance_display_name_formatter", "host2-${launchCount}"),
499+
resource.TestCheckResourceAttr(singularDatasourceName, "instance_hostname_formatter", "host2-${launchCount}"),
490500
resource.TestCheckResourceAttr(singularDatasourceName, "load_balancers.#", "1"),
491501
resource.TestCheckResourceAttrSet(singularDatasourceName, "load_balancers.0.id"),
492502
resource.TestCheckResourceAttrSet(singularDatasourceName, "load_balancers.0.instance_pool_id"),

internal/service/core/core_cluster_network_resource.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,19 @@ func CoreClusterNetworkResource() *schema.Resource {
6767
Computed: true,
6868
Elem: schema.TypeString,
6969
},
70-
7170
// Computed
7271
"id": {
7372
Type: schema.TypeString,
7473
Computed: true,
7574
},
75+
"instance_display_name_formatter": {
76+
Type: schema.TypeString,
77+
Computed: true,
78+
},
79+
"instance_hostname_formatter": {
80+
Type: schema.TypeString,
81+
Computed: true,
82+
},
7683
"compartment_id": {
7784
Type: schema.TypeString,
7885
Computed: true,
@@ -704,6 +711,14 @@ func InstancePoolToMap(obj oci_core.InstancePool) map[string]interface{} {
704711
result["instance_configuration_id"] = string(*obj.InstanceConfigurationId)
705712
}
706713

714+
if obj.InstanceDisplayNameFormatter != nil {
715+
result["instance_display_name_formatter"] = string(*obj.InstanceDisplayNameFormatter)
716+
}
717+
718+
if obj.InstanceHostnameFormatter != nil {
719+
result["instance_hostname_formatter"] = string(*obj.InstanceHostnameFormatter)
720+
}
721+
707722
loadBalancers := []interface{}{}
708723
for _, item := range obj.LoadBalancers {
709724
loadBalancers = append(loadBalancers, InstancePoolLoadBalancerAttachmentToMap(item))

internal/service/core/core_instance_pool_data_source.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,14 @@ func (s *CoreInstancePoolDataSourceCrud) SetData() error {
8484
s.D.Set("instance_configuration_id", *s.Res.InstanceConfigurationId)
8585
}
8686

87+
if s.Res.InstanceDisplayNameFormatter != nil {
88+
s.D.Set("instance_display_name_formatter", *s.Res.InstanceDisplayNameFormatter)
89+
}
90+
91+
if s.Res.InstanceHostnameFormatter != nil {
92+
s.D.Set("instance_hostname_formatter", *s.Res.InstanceHostnameFormatter)
93+
}
94+
8795
loadBalancers := []interface{}{}
8896
for _, item := range s.Res.LoadBalancers {
8997
if item.LifecycleState != oci_core.InstancePoolLoadBalancerAttachmentLifecycleStateDetached {

internal/service/core/core_instance_pool_resource.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,16 @@ func CoreInstancePoolResource() *schema.Resource {
127127
Computed: true,
128128
Elem: schema.TypeString,
129129
},
130+
"instance_display_name_formatter": {
131+
Type: schema.TypeString,
132+
Optional: true,
133+
Computed: true,
134+
},
135+
"instance_hostname_formatter": {
136+
Type: schema.TypeString,
137+
Optional: true,
138+
Computed: true,
139+
},
130140
"load_balancers": {
131141
Type: schema.TypeList,
132142
Optional: true,
@@ -312,6 +322,16 @@ func (s *CoreInstancePoolResourceCrud) Create() error {
312322
request.InstanceConfigurationId = &tmp
313323
}
314324

325+
if instanceDisplayNameFormatter, ok := s.D.GetOkExists("instance_display_name_formatter"); ok {
326+
tmp := instanceDisplayNameFormatter.(string)
327+
request.InstanceDisplayNameFormatter = &tmp
328+
}
329+
330+
if instanceHostnameFormatter, ok := s.D.GetOkExists("instance_hostname_formatter"); ok {
331+
tmp := instanceHostnameFormatter.(string)
332+
request.InstanceHostnameFormatter = &tmp
333+
}
334+
315335
if loadBalancers, ok := s.D.GetOkExists("load_balancers"); ok {
316336
interfaces := loadBalancers.([]interface{})
317337
tmp := make([]oci_core.AttachLoadBalancerDetails, len(interfaces))
@@ -450,6 +470,16 @@ func (s *CoreInstancePoolResourceCrud) Update() error {
450470
request.InstanceConfigurationId = &tmp
451471
}
452472

473+
if instanceDisplayNameFormatter, ok := s.D.GetOkExists("instance_display_name_formatter"); ok {
474+
tmp := instanceDisplayNameFormatter.(string)
475+
request.InstanceDisplayNameFormatter = &tmp
476+
}
477+
478+
if instanceHostnameFormatter, ok := s.D.GetOkExists("instance_hostname_formatter"); ok {
479+
tmp := instanceHostnameFormatter.(string)
480+
request.InstanceHostnameFormatter = &tmp
481+
}
482+
453483
tmp := s.D.Id()
454484
request.InstancePoolId = &tmp
455485

@@ -540,6 +570,14 @@ func (s *CoreInstancePoolResourceCrud) SetData() error {
540570
s.D.Set("instance_configuration_id", *s.Res.InstanceConfigurationId)
541571
}
542572

573+
if s.Res.InstanceDisplayNameFormatter != nil {
574+
s.D.Set("instance_display_name_formatter", *s.Res.InstanceDisplayNameFormatter)
575+
}
576+
577+
if s.Res.InstanceHostnameFormatter != nil {
578+
s.D.Set("instance_hostname_formatter", *s.Res.InstanceHostnameFormatter)
579+
}
580+
543581
loadBalancers := []interface{}{}
544582
for _, item := range s.Res.LoadBalancers {
545583
if item.LifecycleState != oci_core.InstancePoolLoadBalancerAttachmentLifecycleStateDetached {

website/docs/d/core_instance_pool.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ The following attributes are exported:
3838
* `freeform_tags` - Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}`
3939
* `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the instance pool.
4040
* `instance_configuration_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the instance configuration associated with the instance pool.
41+
* `instance_display_name_formatter` - A user-friendly formatter for the instance pool's instances. Instance displaynames follow the format. The formatter does not retroactively change instance's displaynames, only instance displaynames in the future follow the format
42+
* `instance_hostname_formatter` - A user-friendly formatter for the instance pool's instances. Instance hostnames follow the format. The formatter does not retroactively change instance's hostnames, only instance hostnames in the future follow the format
4143
* `load_balancers` - The load balancers attached to the instance pool.
4244
* `backend_set_name` - The name of the backend set on the load balancer.
4345
* `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the load balancer attachment.

website/docs/d/core_instance_pools.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ The following attributes are exported:
5050
* `freeform_tags` - Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}`
5151
* `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the instance pool.
5252
* `instance_configuration_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the instance configuration associated with the instance pool.
53+
* `instance_display_name_formatter` - A user-friendly formatter for the instance pool's instances. Instance displaynames follow the format. The formatter does not retroactively change instance's displaynames, only instance displaynames in the future follow the format
54+
* `instance_hostname_formatter` - A user-friendly formatter for the instance pool's instances. Instance hostnames follow the format. The formatter does not retroactively change instance's hostnames, only instance hostnames in the future follow the format
5355
* `load_balancers` - The load balancers attached to the instance pool.
5456
* `backend_set_name` - The name of the backend set on the load balancer.
5557
* `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the load balancer attachment.

0 commit comments

Comments
 (0)