github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/nsxt_segment_profile_template.go (about) 1 /* 2 * Copyright 2023 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. 3 */ 4 5 package govcd 6 7 import ( 8 "fmt" 9 "net/url" 10 11 "github.com/vmware/go-vcloud-director/v2/types/v56" 12 ) 13 14 const labelNsxtSegmentProfileTemplate = "NSX-T Segment Profile Template" 15 16 // NsxtSegmentProfileTemplate contains a structure for configuring Segment Profile Templates 17 type NsxtSegmentProfileTemplate struct { 18 NsxtSegmentProfileTemplate *types.NsxtSegmentProfileTemplate 19 VCDClient *VCDClient 20 } 21 22 // wrap is a hidden helper that facilitates the usage of a generic CRUD function 23 // 24 //lint:ignore U1000 this method is used in generic functions, but annoys staticcheck 25 func (n NsxtSegmentProfileTemplate) wrap(inner *types.NsxtSegmentProfileTemplate) *NsxtSegmentProfileTemplate { 26 n.NsxtSegmentProfileTemplate = inner 27 return &n 28 } 29 30 // CreateSegmentProfileTemplate creates a Segment Profile Template that can later be assigned to 31 // global VCD configuration, Org VDC or Org VDC Network 32 func (vcdClient *VCDClient) CreateSegmentProfileTemplate(segmentProfileConfig *types.NsxtSegmentProfileTemplate) (*NsxtSegmentProfileTemplate, error) { 33 c := crudConfig{ 34 endpoint: types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointNsxtSegmentProfileTemplates, 35 entityLabel: labelNsxtSegmentProfileTemplate, 36 } 37 outerType := NsxtSegmentProfileTemplate{VCDClient: vcdClient} 38 return createOuterEntity(&vcdClient.Client, outerType, c, segmentProfileConfig) 39 } 40 41 // GetAllSegmentProfileTemplates retrieves all Segment Profile Templates 42 func (vcdClient *VCDClient) GetAllSegmentProfileTemplates(queryFilter url.Values) ([]*NsxtSegmentProfileTemplate, error) { 43 c := crudConfig{ 44 endpoint: types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointNsxtSegmentProfileTemplates, 45 entityLabel: labelNsxtSegmentProfileTemplate, 46 queryParameters: queryFilter, 47 } 48 49 outerType := NsxtSegmentProfileTemplate{VCDClient: vcdClient} 50 return getAllOuterEntities[NsxtSegmentProfileTemplate, types.NsxtSegmentProfileTemplate](&vcdClient.Client, outerType, c) 51 } 52 53 // GetSegmentProfileTemplateById retrieves Segment Profile Template by ID 54 func (vcdClient *VCDClient) GetSegmentProfileTemplateById(id string) (*NsxtSegmentProfileTemplate, error) { 55 c := crudConfig{ 56 endpoint: types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointNsxtSegmentProfileTemplates, 57 endpointParams: []string{id}, 58 entityLabel: labelNsxtSegmentProfileTemplate, 59 } 60 61 outerType := NsxtSegmentProfileTemplate{VCDClient: vcdClient} 62 return getOuterEntity[NsxtSegmentProfileTemplate, types.NsxtSegmentProfileTemplate](&vcdClient.Client, outerType, c) 63 } 64 65 // GetSegmentProfileTemplateByName retrieves Segment Profile Template by ID 66 func (vcdClient *VCDClient) GetSegmentProfileTemplateByName(name string) (*NsxtSegmentProfileTemplate, error) { 67 filterByName := copyOrNewUrlValues(nil) 68 filterByName = queryParameterFilterAnd(fmt.Sprintf("name==%s", name), filterByName) 69 70 allSegmentProfileTemplates, err := vcdClient.GetAllSegmentProfileTemplates(filterByName) 71 if err != nil { 72 return nil, err 73 } 74 75 singleSegmentProfileTemplate, err := oneOrError("name", name, allSegmentProfileTemplates) 76 if err != nil { 77 return nil, err 78 } 79 80 return singleSegmentProfileTemplate, nil 81 } 82 83 // Update Segment Profile Template 84 func (spt *NsxtSegmentProfileTemplate) Update(nsxtSegmentProfileTemplateConfig *types.NsxtSegmentProfileTemplate) (*NsxtSegmentProfileTemplate, error) { 85 c := crudConfig{ 86 endpoint: types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointNsxtSegmentProfileTemplates, 87 endpointParams: []string{nsxtSegmentProfileTemplateConfig.ID}, 88 entityLabel: labelNsxtSegmentProfileTemplate, 89 } 90 outerType := NsxtSegmentProfileTemplate{VCDClient: spt.VCDClient} 91 return updateOuterEntity(&spt.VCDClient.Client, outerType, c, nsxtSegmentProfileTemplateConfig) 92 } 93 94 // Delete allows deleting NSX-T Segment Profile Template 95 func (spt *NsxtSegmentProfileTemplate) Delete() error { 96 c := crudConfig{ 97 endpoint: types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointNsxtSegmentProfileTemplates, 98 endpointParams: []string{spt.NsxtSegmentProfileTemplate.ID}, 99 entityLabel: labelNsxtSegmentProfileTemplate, 100 } 101 return deleteEntityById(&spt.VCDClient.Client, c) 102 }