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 }