From 6192d0dbd60d335cbb1e30d97a2c67a25f07b5aa Mon Sep 17 00:00:00 2001 From: akinross Date: Fri, 10 Apr 2026 11:12:04 +0200 Subject: [PATCH 1/2] [bugfix] allow description to be set to empty string in the mso_schema_template_l3out resource --- mso/resource_mso_schema_template_l3out.go | 57 ++++++++++++----------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/mso/resource_mso_schema_template_l3out.go b/mso/resource_mso_schema_template_l3out.go index d831f025..cec1b11b 100644 --- a/mso/resource_mso_schema_template_l3out.go +++ b/mso/resource_mso_schema_template_l3out.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/ciscoecosystem/mso-go-client/client" + "github.com/ciscoecosystem/mso-go-client/container" "github.com/ciscoecosystem/mso-go-client/models" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/helper/validation" @@ -68,7 +69,8 @@ func resourceMSOTemplateL3out() *schema.Resource { "description": &schema.Schema{ Type: schema.TypeString, Optional: true, - Computed: true, + // Commented computed to allow description to be set to empty string + // Computed: true, }, }), } @@ -256,41 +258,44 @@ func resourceMSOTemplateL3outUpdate(d *schema.ResourceData, m interface{}) error schemaID := d.Get("schema_id").(string) l3outName := d.Get("l3out_name").(string) - displayName := d.Get("display_name").(string) templateName := d.Get("template_name").(string) - vrfName := d.Get("vrf_name").(string) - var vrf_schema_id, vrf_template_name string + updatePath := fmt.Sprintf("/templates/%s/intersiteL3outs/%s", templateName, l3outName) + payloadCont := container.New() + payloadCont.Array() - if tempVar, ok := d.GetOk("vrf_schema_id"); ok { - vrf_schema_id = tempVar.(string) - } else { - vrf_schema_id = schemaID - } - if tempVar, ok := d.GetOk("vrf_template_name"); ok { - vrf_template_name = tempVar.(string) - } else { - vrf_template_name = templateName + if d.HasChange("description") { + err := addPatchPayloadToContainer(payloadCont, "replace", fmt.Sprintf("%s/description", updatePath), d.Get("description").(string)) + if err != nil { + return err + } } - var description string - if tempVar, ok := d.GetOk("description"); ok { - description = tempVar.(string) + if d.HasChange("vrf_schema_id") || d.HasChange("vrf_template_name") || d.HasChange("vrf_name") { + vrfSchemaId := d.Get("vrf_schema_id").(string) + if vrfSchemaId == "" { + vrfSchemaId = schemaID + } + vrfTemplateName := d.Get("vrf_template_name").(string) + if vrfTemplateName == "" { + vrfTemplateName = templateName + } + vrfRef := map[string]interface{}{ + "schemaId": vrfSchemaId, + "templateName": vrfTemplateName, + "vrfName": d.Get("vrf_name").(string), + } + err := addPatchPayloadToContainer(payloadCont, "replace", fmt.Sprintf("%s/vrfRef", updatePath), vrfRef) + if err != nil { + return err + } } - vrfRefMap := make(map[string]interface{}) - vrfRefMap["schemaId"] = vrf_schema_id - vrfRefMap["templateName"] = vrf_template_name - vrfRefMap["vrfName"] = vrfName - - path := fmt.Sprintf("/templates/%s/intersiteL3outs/%s", templateName, l3outName) - l3outStruct := models.NewTemplateL3out("replace", path, l3outName, displayName, description, vrfRefMap) - - _, err := msoClient.PatchbyID(fmt.Sprintf("api/v1/schemas/%s", schemaID), l3outStruct) - + err := doPatchRequest(msoClient, fmt.Sprintf("api/v1/schemas/%s", schemaID), payloadCont) if err != nil { return err } + return resourceMSOTemplateL3outRead(d, m) } From 65317e4a496499361620bade099bbace2bd43362 Mon Sep 17 00:00:00 2001 From: akinross Date: Fri, 10 Apr 2026 11:12:30 +0200 Subject: [PATCH 2/2] [ignore] add tests for mso_schema_template_l3out resource and datasource --- ...tasource_mso_schema_template_l3out_test.go | 55 ++++ ...resource_mso_schema_template_l3out_test.go | 296 ++++++++++-------- mso/test_constants.go | 1 + 3 files changed, 221 insertions(+), 131 deletions(-) create mode 100644 mso/datasource_mso_schema_template_l3out_test.go diff --git a/mso/datasource_mso_schema_template_l3out_test.go b/mso/datasource_mso_schema_template_l3out_test.go new file mode 100644 index 00000000..f733706c --- /dev/null +++ b/mso/datasource_mso_schema_template_l3out_test.go @@ -0,0 +1,55 @@ +package mso + +import ( + "fmt" + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" +) + +func TestAccMSOSchemaTemplateL3outDatasource(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckMSOSchemaTemplateL3outDestroy, + Steps: []resource.TestStep{ + { + PreConfig: func() { fmt.Println("Test: Read L3out datasource not found error") }, + Config: testAccMSOSchemaTemplateL3outDatasourceNotFound(), + ExpectError: regexp.MustCompile("Unable to find the L3out"), + }, + { + PreConfig: func() { fmt.Println("Test: Read L3out datasource") }, + Config: testAccMSOSchemaTemplateL3outDatasource(), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttrSet("data.mso_schema_template_l3out.l3out", "schema_id"), + resource.TestCheckResourceAttr("data.mso_schema_template_l3out.l3out", "template_name", msoSchemaTemplateName), + resource.TestCheckResourceAttr("data.mso_schema_template_l3out.l3out", "l3out_name", msoSchemaTemplateL3outName), + resource.TestCheckResourceAttr("data.mso_schema_template_l3out.l3out", "display_name", msoSchemaTemplateL3outName), + resource.TestCheckResourceAttr("data.mso_schema_template_l3out.l3out", "vrf_name", msoSchemaTemplateVrfName), + resource.TestCheckResourceAttrSet("data.mso_schema_template_l3out.l3out", "vrf_schema_id"), + resource.TestCheckResourceAttr("data.mso_schema_template_l3out.l3out", "vrf_template_name", msoSchemaTemplateName), + ), + }, + }, + }) +} + +func testAccMSOSchemaTemplateL3outDatasource() string { + return fmt.Sprintf(`%s + data "mso_schema_template_l3out" "l3out" { + schema_id = mso_schema.%[2]s.id + template_name = "%[3]s" + l3out_name = mso_schema_template_l3out.%[4]s.l3out_name + }`, testAccMSOSchemaTemplateL3outConfigCreate(), msoSchemaName, msoSchemaTemplateName, msoSchemaTemplateL3outName) +} + +func testAccMSOSchemaTemplateL3outDatasourceNotFound() string { + return fmt.Sprintf(`%s + data "mso_schema_template_l3out" "l3out" { + schema_id = mso_schema.%[2]s.id + template_name = "%[3]s" + l3out_name = "non_existing_l3out_name" + }`, testAccMSOSchemaTemplateL3outConfigCreate(), msoSchemaName, msoSchemaTemplateName) +} diff --git a/mso/resource_mso_schema_template_l3out_test.go b/mso/resource_mso_schema_template_l3out_test.go index 7c7eb43a..2d5d4e5f 100644 --- a/mso/resource_mso_schema_template_l3out_test.go +++ b/mso/resource_mso_schema_template_l3out_test.go @@ -2,7 +2,6 @@ package mso import ( "fmt" - "regexp" "testing" "github.com/ciscoecosystem/mso-go-client/client" @@ -11,159 +10,208 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/terraform" ) -func TestAccMSOSchemaTemplateL3out_Basic(t *testing.T) { - var ss TemplateL3out +// msoSchemaTemplateL3outSchemaId is set during the first test step's Check to capture the dynamic schema ID for use in the manual deletion PreConfig step. +var msoSchemaTemplateL3outSchemaId string + +func TestAccMSOSchemaTemplateL3outResource(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders, CheckDestroy: testAccCheckMSOSchemaTemplateL3outDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckMSOTemplateL3outConfig_basic("WoS_Cloud_VRF2"), - Check: resource.ComposeTestCheckFunc( - testAccCheckMSOSchemaTemplateL3outExists("mso_schema_template_l3out.template_l3out", &ss), - testAccCheckMSOSchemaTemplateL3outAttributes("WoS_Cloud_VRF2", &ss), + PreConfig: func() { fmt.Println("Test: Create L3out with name and display_name") }, + Config: testAccMSOSchemaTemplateL3outConfigCreate(), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttrSet("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "schema_id"), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "template_name", msoSchemaTemplateName), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "l3out_name", msoSchemaTemplateL3outName), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "display_name", msoSchemaTemplateL3outName), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "vrf_name", msoSchemaTemplateVrfName), + resource.TestCheckResourceAttrSet("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "vrf_schema_id"), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "vrf_template_name", msoSchemaTemplateName), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "description", ""), + // Capture the dynamic schema ID from state for use in the manual deletion PreConfig step + func(s *terraform.State) error { + rs, ok := s.RootModule().Resources["mso_schema_template_l3out."+msoSchemaTemplateL3outName] + if !ok { + return fmt.Errorf("L3out resource not found in state") + } + msoSchemaTemplateL3outSchemaId = rs.Primary.Attributes["schema_id"] + return nil + }, + ), + }, + { + PreConfig: func() { fmt.Println("Test: Add L3out description") }, + Config: testAccMSOSchemaTemplateL3outConfigAddDescription(), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttrSet("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "schema_id"), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "l3out_name", msoSchemaTemplateL3outName), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "display_name", msoSchemaTemplateL3outName), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "description", "Terraform test L3out"), ), }, - }, - }) -} - -func TestAccMSOSchemaTemplateL3out_Update(t *testing.T) { - var ss TemplateL3out - - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, - CheckDestroy: testAccCheckMSOSchemaTemplateL3outDestroy, - Steps: []resource.TestStep{ { - Config: testAccCheckMSOTemplateL3outConfig_basic("WoS_Cloud_VRF2"), - Check: resource.ComposeTestCheckFunc( - testAccCheckMSOSchemaTemplateL3outExists("mso_schema_template_l3out.template_l3out", &ss), - testAccCheckMSOSchemaTemplateL3outAttributes("WoS_Cloud_VRF2", &ss), + PreConfig: func() { fmt.Println("Test: Update L3out description") }, + Config: testAccMSOSchemaTemplateL3outConfigUpdateDescription(), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttrSet("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "schema_id"), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "l3out_name", msoSchemaTemplateL3outName), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "description", "Terraform test L3out updated"), ), }, { - Config: testAccCheckMSOTemplateL3outConfig_basic("vrf589"), - Check: resource.ComposeTestCheckFunc( - testAccCheckMSOSchemaTemplateL3outExists("mso_schema_template_l3out.template_l3out", &ss), - testAccCheckMSOSchemaTemplateL3outAttributes("vrf589", &ss), + PreConfig: func() { fmt.Println("Test: Remove L3out description") }, + Config: testAccMSOSchemaTemplateL3outConfigRemoveDescription(), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttrSet("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "schema_id"), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "l3out_name", msoSchemaTemplateL3outName), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "description", ""), + ), + }, + { + PreConfig: func() { fmt.Println("Test: Update L3out VRF") }, + Config: testAccMSOSchemaTemplateL3outConfigUpdateVrf(), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttrSet("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "schema_id"), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "l3out_name", msoSchemaTemplateL3outName), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "vrf_name", msoSchemaTemplateVrfL3MulticastName), + resource.TestCheckResourceAttrSet("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "vrf_schema_id"), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "vrf_template_name", msoSchemaTemplateName), + ), + }, + { + PreConfig: func() { fmt.Println("Test: Import L3out") }, + ResourceName: "mso_schema_template_l3out." + msoSchemaTemplateL3outName, + ImportState: true, + ImportStateIdFunc: func(s *terraform.State) (string, error) { + rs, ok := s.RootModule().Resources["mso_schema_template_l3out."+msoSchemaTemplateL3outName] + if !ok { + return "", fmt.Errorf("L3out resource not found in state") + } + return fmt.Sprintf("%s/templates/%s/intersiteL3outs/%s", rs.Primary.Attributes["schema_id"], rs.Primary.Attributes["template_name"], rs.Primary.Attributes["l3out_name"]), nil + }, + ImportStateVerify: true, + }, + { + PreConfig: func() { + fmt.Println("Test: Recreate L3out after manual deletion from NDO") + msoClient := testAccProvider.Meta().(*client.Client) + l3outRemovePatchPayload := models.GetRemovePatchPayload(fmt.Sprintf("/templates/%s/intersiteL3outs/%s", msoSchemaTemplateName, msoSchemaTemplateL3outName)) + _, err := msoClient.PatchbyID(fmt.Sprintf("api/v1/schemas/%s", msoSchemaTemplateL3outSchemaId), l3outRemovePatchPayload) + if err != nil { + t.Fatalf("Failed to manually delete L3out: %v", err) + } + }, + Config: testAccMSOSchemaTemplateL3outConfigUpdateVrf(), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttrSet("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "schema_id"), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "l3out_name", msoSchemaTemplateL3outName), + resource.TestCheckResourceAttr("mso_schema_template_l3out."+msoSchemaTemplateL3outName, "display_name", msoSchemaTemplateL3outName), ), }, }, }) } -func testAccCheckMSOTemplateL3outConfig_basic(name string) string { - return fmt.Sprintf(` - resource "mso_schema_template_l3out" "template_l3out" { - schema_id = "5c6c16d7270000c710f8094d" - template_name = "Template1" - l3out_name = "l3out3" - display_name = "l3out3" - vrf_name = "%v" - } -`, name) +func testAccMSOSchemaTemplateL3outPrerequisiteConfig() string { + return fmt.Sprintf(`%s%s%s%s`, testSiteConfigAnsibleTest(), testTenantConfig(), testSchemaConfig(), testSchemaTemplateVrfConfig()) } -func testAccCheckMSOSchemaTemplateL3outExists(l3outName string, ss *TemplateL3out) resource.TestCheckFunc { - return func(s *terraform.State) error { - client := testAccProvider.Meta().(*client.Client) - rs1, err1 := s.RootModule().Resources[l3outName] +func testAccMSOSchemaTemplateL3outPrerequisiteWithL3MulticastVrfConfig() string { + return fmt.Sprintf(`%s%s`, testAccMSOSchemaTemplateL3outPrerequisiteConfig(), testSchemaTemplateVrfL3MulticastConfig()) +} - if !err1 { - return fmt.Errorf("L3out %s not found", l3outName) - } - if rs1.Primary.ID == "" { - return fmt.Errorf("No Schema id was set") - } +func testAccMSOSchemaTemplateL3outConfigCreate() string { + return fmt.Sprintf(`%[1]s + resource "mso_schema_template_l3out" "%[2]s" { + schema_id = mso_schema.%[3]s.id + template_name = "%[4]s" + l3out_name = "%[2]s" + display_name = "%[2]s" + vrf_name = mso_schema_template_vrf.%[5]s.name + }`, testAccMSOSchemaTemplateL3outPrerequisiteConfig(), msoSchemaTemplateL3outName, msoSchemaName, msoSchemaTemplateName, msoSchemaTemplateVrfName) +} - cont, err := client.GetViaURL("api/v1/schemas/5c6c16d7270000c710f8094d") - if err != nil { - return err - } - count, err := cont.ArrayCount("templates") - if err != nil { - return fmt.Errorf("No Template found") - } - tp := TemplateL3out{} - found := false - for i := 0; i < count; i++ { - tempCont, err := cont.ArrayElement(i, "templates") - if err != nil { - return err - } +func testAccMSOSchemaTemplateL3outConfigAddDescription() string { + return fmt.Sprintf(`%[1]s + resource "mso_schema_template_l3out" "%[2]s" { + schema_id = mso_schema.%[3]s.id + template_name = "%[4]s" + l3out_name = "%[2]s" + display_name = "%[2]s" + vrf_name = mso_schema_template_vrf.%[5]s.name + description = "Terraform test L3out" + }`, testAccMSOSchemaTemplateL3outPrerequisiteConfig(), msoSchemaTemplateL3outName, msoSchemaName, msoSchemaTemplateName, msoSchemaTemplateVrfName) +} - apiTemplateName := models.StripQuotes(tempCont.S("name").String()) - if apiTemplateName == "Template1" { - l3outCount, err := tempCont.ArrayCount("intersiteL3outs") - if err != nil { - return fmt.Errorf("Unable to get L3out list") - } - for j := 0; j < l3outCount; j++ { - l3outCont, err := tempCont.ArrayElement(j, "intersiteL3outs") - if err != nil { - return err - } - apiL3out := models.StripQuotes(l3outCont.S("name").String()) - if apiL3out == "l3out3" { - tp.display_name = models.StripQuotes(l3outCont.S("displayName").String()) - vrfRef := models.StripQuotes(l3outCont.S("vrfRef").String()) - re := regexp.MustCompile("/schemas/(.*)/templates/(.*)/vrfs/(.*)") - match := re.FindStringSubmatch(vrfRef) - tp.vrf_name = match[3] - found = true - break - } - } - } - } - if !found { - return fmt.Errorf("L3out not found from API") - } +func testAccMSOSchemaTemplateL3outConfigUpdateDescription() string { + return fmt.Sprintf(`%[1]s + resource "mso_schema_template_l3out" "%[2]s" { + schema_id = mso_schema.%[3]s.id + template_name = "%[4]s" + l3out_name = "%[2]s" + display_name = "%[2]s" + vrf_name = mso_schema_template_vrf.%[5]s.name + description = "Terraform test L3out updated" + }`, testAccMSOSchemaTemplateL3outPrerequisiteConfig(), msoSchemaTemplateL3outName, msoSchemaName, msoSchemaTemplateName, msoSchemaTemplateVrfName) +} - tp1 := &tp - *ss = *tp1 - return nil - } +func testAccMSOSchemaTemplateL3outConfigRemoveDescription() string { + return fmt.Sprintf(`%[1]s + resource "mso_schema_template_l3out" "%[2]s" { + schema_id = mso_schema.%[3]s.id + template_name = "%[4]s" + l3out_name = "%[2]s" + display_name = "%[2]s" + vrf_name = mso_schema_template_vrf.%[5]s.name + description = "" + }`, testAccMSOSchemaTemplateL3outPrerequisiteConfig(), msoSchemaTemplateL3outName, msoSchemaName, msoSchemaTemplateName, msoSchemaTemplateVrfName) +} + +func testAccMSOSchemaTemplateL3outConfigUpdateVrf() string { + return fmt.Sprintf(`%[1]s + resource "mso_schema_template_l3out" "%[2]s" { + schema_id = mso_schema.%[3]s.id + template_name = "%[4]s" + l3out_name = "%[2]s" + display_name = "%[2]s" + vrf_name = mso_schema_template_vrf.%[5]s.name + }`, testAccMSOSchemaTemplateL3outPrerequisiteWithL3MulticastVrfConfig(), msoSchemaTemplateL3outName, msoSchemaName, msoSchemaTemplateName, msoSchemaTemplateVrfL3MulticastName) } func testAccCheckMSOSchemaTemplateL3outDestroy(s *terraform.State) error { client := testAccProvider.Meta().(*client.Client) for _, rs := range s.RootModule().Resources { - if rs.Type == "mso_schema_template_l3out" { - cont, err := client.GetViaURL("api/v1/schemas/5c6c16d7270000c710f8094d") + schemaID := rs.Primary.Attributes["schema_id"] + cont, err := client.GetViaURL(fmt.Sprintf("api/v1/schemas/%s", schemaID)) if err != nil { return nil - } else { - count, err := cont.ArrayCount("templates") + } + count, err := cont.ArrayCount("templates") + if err != nil { + return fmt.Errorf("No Template found") + } + for i := 0; i < count; i++ { + tempCont, err := cont.ArrayElement(i, "templates") if err != nil { - return fmt.Errorf("No Template found") + return fmt.Errorf("No template exists") } - for i := 0; i < count; i++ { - tempCont, err := cont.ArrayElement(i, "templates") + l3outCount, err := tempCont.ArrayCount("intersiteL3outs") + if err != nil { + return fmt.Errorf("Unable to get L3out list") + } + for j := 0; j < l3outCount; j++ { + l3outCont, err := tempCont.ArrayElement(j, "intersiteL3outs") if err != nil { - return fmt.Errorf("No Template exists") + return err } - apiTemplateName := models.StripQuotes(tempCont.S("name").String()) - if apiTemplateName == "Template1" { - l3outCount, err := tempCont.ArrayCount("intersiteL3outs") - if err != nil { - return fmt.Errorf("Unable to get L3out list") - } - for j := 0; j < l3outCount; j++ { - l3outCont, err := tempCont.ArrayElement(j, "intersiteL3outs") - if err != nil { - return err - } - apiL3out := models.StripQuotes(l3outCont.S("name").String()) - if apiL3out == "l3out3" { - return fmt.Errorf("template L3Out still exists.") - } - } + name := models.StripQuotes(l3outCont.S("name").String()) + if rs.Primary.Attributes["l3out_name"] == name { + return fmt.Errorf("Schema Template L3out record still exists") } } } @@ -171,17 +219,3 @@ func testAccCheckMSOSchemaTemplateL3outDestroy(s *terraform.State) error { } return nil } -func testAccCheckMSOSchemaTemplateL3outAttributes(vrf_name string, ss *TemplateL3out) resource.TestCheckFunc { - return func(s *terraform.State) error { - if "l3out3" != ss.display_name { - return fmt.Errorf("Bad Template L3out display name %s", ss.display_name) - } - - return nil - } -} - -type TemplateL3out struct { - display_name string - vrf_name string -} diff --git a/mso/test_constants.go b/mso/test_constants.go index d6ac91e7..61dd494b 100644 --- a/mso/test_constants.go +++ b/mso/test_constants.go @@ -31,6 +31,7 @@ var msoSchemaTemplateFilterName = acctest.RandStringFromCharSet(10, acctest.Char var msoSchemaTemplateContractName = acctest.RandStringFromCharSet(10, acctest.CharSetAlpha) var msoSchemaTemplateBdL3MulticastName = acctest.RandStringFromCharSet(10, acctest.CharSetAlpha) var msoSchemaTemplateVrfL3MulticastName = acctest.RandStringFromCharSet(10, acctest.CharSetAlpha) +var msoSchemaTemplateL3outName = acctest.RandStringFromCharSet(10, acctest.CharSetAlpha) const msoSchemaTemplateAnpEpgSubnetIp = "10.0.0.1/24"