@@ -82,10 +82,10 @@ func (s *ResourceCoreInstanceTestSuite) TestAccResourceCoreInstance_basic() {
8282 hostname_label = "hostname1"
8383 image = "${var.InstanceImageOCID[var.region]}"
8484 shape = "VM.Standard2.1"
85- defined_tags = "${map(
85+ defined_tags = "${map(
8686 "${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value"
8787 )}"
88- freeform_tags = { "Department" = "Accounting"}
88+ freeform_tags = { "Department" = "Accounting"}
8989 metadata {
9090 ssh_authorized_keys = "${var.ssh_public_key}"
9191 user_data = "ZWNobyBoZWxsbw=="
@@ -471,18 +471,93 @@ func (s *ResourceCoreInstanceTestSuite) TestAccResourceCoreInstance_basic() {
471471 },
472472 ),
473473 },
474+ },
475+ })
476+ }
477+
478+ func (s * ResourceCoreInstanceTestSuite ) TestAccResourceCoreInstance_customdiff () {
479+
480+ var instanceId string
481+
482+ resource .Test (s .T (), resource.TestCase {
483+ Providers : s .Providers ,
484+ Steps : []resource.TestStep {
485+ // create a new instance with metadata interpolations so that no state exists
486+ {
487+ Config : s .Config + `
488+ locals {
489+ nat_offset = "4"
490+ }
491+
492+ resource "oci_core_instance" "t" {
493+ availability_domain = "${data.oci_identity_availability_domains.ADs.availability_domains.0.name}"
494+ compartment_id = "${var.compartment_id}"
495+ image = "${var.InstanceImageOCID[var.region]}"
496+ shape = "VM.Standard2.1"
497+ display_name = "-tf-instance"
498+ metadata {
499+ should_observe_dependency = "${jsonencode(cidrhost(oci_core_subnet.t.cidr_block, local.nat_offset))}"
500+ this_should_also = "${oci_core_subnet.t.time_created}"
501+ ssh_authorized_keys = "${var.ssh_public_key}"
502+ user_data = "ZWNobyBoZWxsbw=="
503+ availability_domain = "${data.oci_identity_availability_domains.ADs.availability_domains.0.name}"
504+ subnet_id = "${oci_core_subnet.t.id}"
505+ }
506+ extended_metadata {
507+ keyA = "valA"
508+ keyB = "{\"keyB1\": \"valB1\", \"keyB2\": {\"keyB2\": \"valB2\"}}"
509+ }
510+ create_vnic_details {
511+ subnet_id = "${oci_core_subnet.t.id}"
512+ display_name = "-tf-vnic-2"
513+ assign_public_ip = false
514+ private_ip = "10.0.1.20"
515+ skip_source_dest_check = true
516+ defined_tags = "${map(
517+ "${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "updatedValue"
518+ )}"
519+ freeform_tags = { "Department" = "Finance" }
520+ }
521+ }
522+ data "oci_core_vnic_attachments" "t" {
523+ compartment_id = "${var.compartment_id}"
524+ instance_id = "${oci_core_instance.t.id}"
525+ }
526+ data "oci_core_vnic" "t" {
527+ vnic_id = "${lookup(data.oci_core_vnic_attachments.t.vnic_attachments[0],"vnic_id")}"
528+ }` ,
529+ Check : resource .ComposeAggregateTestCheckFunc (
530+ resource .TestCheckResourceAttr (s .ResourceName , "display_name" , "-tf-instance" ),
531+ resource .TestCheckResourceAttr (s .ResourceName , "private_ip" , "10.0.1.20" ),
532+ resource .TestCheckResourceAttr (s .ResourceName , "metadata.%" , "6" ),
533+ resource .TestCheckResourceAttrSet (s .ResourceName , "metadata.ssh_authorized_keys" ),
534+ resource .TestCheckResourceAttr (s .ResourceName , "metadata.user_data" , "ZWNobyBoZWxsbw==" ),
535+ func (ts * terraform.State ) (err error ) {
536+ instanceId , err = fromInstanceState (ts , s .ResourceName , "id" )
537+ return err
538+ },
539+ ),
540+ },
474541 // verify force new by changing ssh_authorized_keys and user_data in metadata
475542 {
476543 Config : s .Config + `
544+ locals {
545+ nat_offset = "4"
546+ }
547+
477548 resource "oci_core_instance" "t" {
478549 availability_domain = "${data.oci_identity_availability_domains.ADs.availability_domains.0.name}"
479550 compartment_id = "${var.compartment_id}"
480551 image = "${var.InstanceImageOCID[var.region]}"
481- shape = "VM.Standard1.8 "
552+ shape = "VM.Standard2.1 "
482553 display_name = "-tf-instance"
483554 metadata {
555+ should_observe_dependency = "${jsonencode(cidrhost(oci_core_subnet.t.cidr_block, local.nat_offset + 1))}"
556+ this_should_also = "${oci_core_subnet.t.time_created}"
484557 ssh_authorized_keys = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOuBJgh6lTmQvQJ4BA3RCJdSmxRtmiXAQEEIP68/G4gF3XuZdKEYTFeputacmRq9yO5ZnNXgO9akdUgePpf8+CfFtveQxmN5xo3HVCDKxu/70lbMgeu7+wJzrMOlzj+a4zNq2j0Ww2VWMsisJ6eV3bJTnO/9VLGCOC8M9noaOlcKcLgIYy4aDM724MxFX2lgn7o6rVADHRxkvLEXPVqYT4syvYw+8OVSnNgE4MJLxaw8/2K0qp19YlQyiriIXfQpci3ThxwLjymYRPj+kjU1xIxv6qbFQzHR7ds0pSWp1U06cIoKPfCazU9hGWW8yIe/vzfTbWrt2DK6pLwBn/G0x3 sample"
485558 user_data = "ZWNobyB3b3JsZA=="
559+ availability_domain = "${data.oci_identity_availability_domains.ADs.availability_domains.0.name}"
560+ subnet_id = "${oci_core_subnet.t.id}"
486561 }
487562 extended_metadata {
488563 keyA = "valA"
@@ -510,7 +585,7 @@ func (s *ResourceCoreInstanceTestSuite) TestAccResourceCoreInstance_basic() {
510585 Check : resource .ComposeAggregateTestCheckFunc (
511586 resource .TestCheckResourceAttr (s .ResourceName , "display_name" , "-tf-instance" ),
512587 resource .TestCheckResourceAttr (s .ResourceName , "private_ip" , "10.0.1.20" ),
513- resource .TestCheckResourceAttr (s .ResourceName , "metadata.%" , "2 " ),
588+ resource .TestCheckResourceAttr (s .ResourceName , "metadata.%" , "6 " ),
514589 resource .TestCheckResourceAttr (s .ResourceName , "metadata.ssh_authorized_keys" , "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOuBJgh6lTmQvQJ4BA3RCJdSmxRtmiXAQEEIP68/G4gF3XuZdKEYTFeputacmRq9yO5ZnNXgO9akdUgePpf8+CfFtveQxmN5xo3HVCDKxu/70lbMgeu7+wJzrMOlzj+a4zNq2j0Ww2VWMsisJ6eV3bJTnO/9VLGCOC8M9noaOlcKcLgIYy4aDM724MxFX2lgn7o6rVADHRxkvLEXPVqYT4syvYw+8OVSnNgE4MJLxaw8/2K0qp19YlQyiriIXfQpci3ThxwLjymYRPj+kjU1xIxv6qbFQzHR7ds0pSWp1U06cIoKPfCazU9hGWW8yIe/vzfTbWrt2DK6pLwBn/G0x3 sample" ),
515590 resource .TestCheckResourceAttr (s .ResourceName , "metadata.user_data" , "ZWNobyB3b3JsZA==" ),
516591 func (ts * terraform.State ) (err error ) {
0 commit comments