github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/nsxt_segment_profile_template_test.go (about)

     1  //go:build network || nsxt || functional || openapi || ALL
     2  
     3  /*
     4   * Copyright 2023 VMware, Inc.  All rights reserved.  Licensed under the Apache v2 License.
     5   */
     6  
     7  package govcd
     8  
     9  import (
    10  	"fmt"
    11  
    12  	"github.com/vmware/go-vcloud-director/v2/types/v56"
    13  	. "gopkg.in/check.v1"
    14  )
    15  
    16  func (vcd *TestVCD) Test_NsxtSegmentProfileTemplate(check *C) {
    17  	skipNoNsxtConfiguration(vcd, check)
    18  	vcd.skipIfNotSysAdmin(check)
    19  
    20  	nsxtManager, err := vcd.client.GetNsxtManagerByName(vcd.config.VCD.Nsxt.Manager)
    21  	check.Assert(err, IsNil)
    22  	check.Assert(nsxtManager, NotNil)
    23  
    24  	nsxtManagerUrn, err := nsxtManager.Urn()
    25  	check.Assert(err, IsNil)
    26  
    27  	// Filter by NSX-T Manager
    28  	queryParams := copyOrNewUrlValues(nil)
    29  	queryParams = queryParameterFilterAnd(fmt.Sprintf("nsxTManagerRef.id==%s", nsxtManagerUrn), queryParams)
    30  
    31  	// Lookup prerequisite profiles for Segment Profile template creation
    32  	ipDiscoveryProfile, err := vcd.client.GetIpDiscoveryProfileByName(vcd.config.VCD.Nsxt.IpDiscoveryProfile, queryParams)
    33  	check.Assert(err, IsNil)
    34  	macDiscoveryProfile, err := vcd.client.GetMacDiscoveryProfileByName(vcd.config.VCD.Nsxt.MacDiscoveryProfile, queryParams)
    35  	check.Assert(err, IsNil)
    36  	spoofGuardProfile, err := vcd.client.GetSpoofGuardProfileByName(vcd.config.VCD.Nsxt.SpoofGuardProfile, queryParams)
    37  	check.Assert(err, IsNil)
    38  	qosProfile, err := vcd.client.GetQoSProfileByName(vcd.config.VCD.Nsxt.QosProfile, queryParams)
    39  	check.Assert(err, IsNil)
    40  	segmentSecurityProfile, err := vcd.client.GetSegmentSecurityProfileByName(vcd.config.VCD.Nsxt.SegmentSecurityProfile, queryParams)
    41  	check.Assert(err, IsNil)
    42  
    43  	config := &types.NsxtSegmentProfileTemplate{
    44  		Name:                   check.TestName(),
    45  		Description:            check.TestName() + "-description",
    46  		IPDiscoveryProfile:     &types.Reference{ID: ipDiscoveryProfile.ID},
    47  		MacDiscoveryProfile:    &types.Reference{ID: macDiscoveryProfile.ID},
    48  		QosProfile:             &types.Reference{ID: qosProfile.ID},
    49  		SegmentSecurityProfile: &types.Reference{ID: segmentSecurityProfile.ID},
    50  		SpoofGuardProfile:      &types.Reference{ID: spoofGuardProfile.ID},
    51  		SourceNsxTManagerRef:   &types.OpenApiReference{ID: nsxtManager.NsxtManager.ID},
    52  	}
    53  
    54  	createdSegmentProfileTemplate, err := vcd.client.CreateSegmentProfileTemplate(config)
    55  	check.Assert(err, IsNil)
    56  	check.Assert(createdSegmentProfileTemplate, NotNil)
    57  
    58  	// Add to cleanup list
    59  	openApiEndpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointNsxtSegmentProfileTemplates + createdSegmentProfileTemplate.NsxtSegmentProfileTemplate.ID
    60  	AddToCleanupListOpenApi(config.Name, check.TestName(), openApiEndpoint)
    61  
    62  	// Retrieve segment profile template
    63  	retrievedSpt, err := vcd.client.GetSegmentProfileTemplateById(createdSegmentProfileTemplate.NsxtSegmentProfileTemplate.ID)
    64  	check.Assert(err, IsNil)
    65  	check.Assert(retrievedSpt.NsxtSegmentProfileTemplate, DeepEquals, createdSegmentProfileTemplate.NsxtSegmentProfileTemplate)
    66  
    67  	// Get all and look for the required one
    68  	allSpts, err := vcd.client.GetAllSegmentProfileTemplates(nil)
    69  	check.Assert(err, IsNil)
    70  	check.Assert(allSpts, NotNil)
    71  	found := false
    72  	for _, spt := range allSpts {
    73  		if spt.NsxtSegmentProfileTemplate.ID == createdSegmentProfileTemplate.NsxtSegmentProfileTemplate.ID {
    74  			found = true
    75  			break
    76  		}
    77  	}
    78  
    79  	check.Assert(found, Equals, true)
    80  
    81  	// Test update
    82  	createdSegmentProfileTemplate.NsxtSegmentProfileTemplate.Description = check.TestName() + "updated"
    83  	updatedSegmentProfileTemplate, err := createdSegmentProfileTemplate.Update(createdSegmentProfileTemplate.NsxtSegmentProfileTemplate)
    84  	check.Assert(err, IsNil)
    85  	check.Assert(updatedSegmentProfileTemplate.NsxtSegmentProfileTemplate.Description, Equals, createdSegmentProfileTemplate.NsxtSegmentProfileTemplate.Description)
    86  	check.Assert(updatedSegmentProfileTemplate.NsxtSegmentProfileTemplate.ID, Equals, createdSegmentProfileTemplate.NsxtSegmentProfileTemplate.ID)
    87  
    88  	// Delete
    89  	err = createdSegmentProfileTemplate.Delete()
    90  	check.Assert(err, IsNil)
    91  
    92  	// Check that it returns sentinel error 'ErrorEntityNotFound' when an entity is not found
    93  	notFoundSpt, err := vcd.client.GetSegmentProfileTemplateById(createdSegmentProfileTemplate.NsxtSegmentProfileTemplate.ID)
    94  	check.Assert(ContainsNotFound(err), Equals, true)
    95  	check.Assert(notFoundSpt, IsNil)
    96  }