@@ -591,6 +591,35 @@ func TestAccComputeV2Instance_stopBeforeDestroy(t *testing.T) {
591591 })
592592}
593593
594+ func TestAccComputeV2Instance_metadataRemove (t * testing.T ) {
595+ var instance servers.Server
596+
597+ resource .Test (t , resource.TestCase {
598+ PreCheck : func () { testAccPreCheck (t ) },
599+ Providers : testAccProviders ,
600+ CheckDestroy : testAccCheckComputeV2InstanceDestroy ,
601+ Steps : []resource.TestStep {
602+ resource.TestStep {
603+ Config : testAccComputeV2Instance_metadataRemove_1 ,
604+ Check : resource .ComposeTestCheckFunc (
605+ testAccCheckComputeV2InstanceExists ("openstack_compute_instance_v2.instance_1" , & instance ),
606+ testAccCheckComputeV2InstanceMetadata (& instance , "foo" , "bar" ),
607+ testAccCheckComputeV2InstanceMetadata (& instance , "abc" , "def" ),
608+ ),
609+ },
610+ resource.TestStep {
611+ Config : testAccComputeV2Instance_metadataRemove_2 ,
612+ Check : resource .ComposeTestCheckFunc (
613+ testAccCheckComputeV2InstanceExists ("openstack_compute_instance_v2.instance_1" , & instance ),
614+ testAccCheckComputeV2InstanceMetadata (& instance , "foo" , "bar" ),
615+ testAccCheckComputeV2InstanceMetadata (& instance , "ghi" , "jkl" ),
616+ testAccCheckComputeV2InstanceNoMetadataKey (& instance , "abc" ),
617+ ),
618+ },
619+ },
620+ })
621+ }
622+
594623func testAccCheckComputeV2InstanceDestroy (s * terraform.State ) error {
595624 config := testAccProvider .Meta ().(* Config )
596625 computeClient , err := config .computeV2Client (OS_REGION_NAME )
@@ -687,6 +716,23 @@ func testAccCheckComputeV2InstanceMetadata(
687716 }
688717}
689718
719+ func testAccCheckComputeV2InstanceNoMetadataKey (
720+ instance * servers.Server , k string ) resource.TestCheckFunc {
721+ return func (s * terraform.State ) error {
722+ if instance .Metadata == nil {
723+ return nil
724+ }
725+
726+ for key , _ := range instance .Metadata {
727+ if k == key {
728+ return fmt .Errorf ("Metadata found: %s" , k )
729+ }
730+ }
731+
732+ return nil
733+ }
734+ }
735+
690736func testAccCheckComputeV2InstanceVolumeAttachment (
691737 instance * servers.Server , volume * volumes.Volume ) resource.TestCheckFunc {
692738 return func (s * terraform.State ) error {
@@ -1445,3 +1491,25 @@ resource "openstack_compute_instance_v2" "instance_1" {
14451491 stop_before_destroy = true
14461492}
14471493`
1494+
1495+ const testAccComputeV2Instance_metadataRemove_1 = `
1496+ resource "openstack_compute_instance_v2" "instance_1" {
1497+ name = "instance_1"
1498+ security_groups = ["default"]
1499+ metadata {
1500+ foo = "bar"
1501+ abc = "def"
1502+ }
1503+ }
1504+ `
1505+
1506+ const testAccComputeV2Instance_metadataRemove_2 = `
1507+ resource "openstack_compute_instance_v2" "instance_1" {
1508+ name = "instance_1"
1509+ security_groups = ["default"]
1510+ metadata {
1511+ foo = "bar"
1512+ ghi = "jkl"
1513+ }
1514+ }
1515+ `
0 commit comments