github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/vdccomputepolicy.go (about) 1 package govcd 2 3 /* 4 * Copyright 2022 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. 5 */ 6 7 import ( 8 "fmt" 9 "net/url" 10 11 "github.com/vmware/go-vcloud-director/v2/types/v56" 12 ) 13 14 // VdcComputePolicy defines a VDC Compute Policy, which can be a VM Sizing Policy, a VM Placement Policy or a vGPU Policy. 15 // Deprecated: Use VdcComputePolicyV2 instead 16 type VdcComputePolicy struct { 17 VdcComputePolicy *types.VdcComputePolicy 18 Href string 19 client *Client 20 } 21 22 // GetVdcComputePolicyById retrieves VDC compute policy by given ID 23 // Deprecated: Use VCDClient.GetVdcComputePolicyV2ById instead 24 func (client *Client) GetVdcComputePolicyById(id string) (*VdcComputePolicy, error) { 25 return getVdcComputePolicyById(client, id) 26 } 27 28 // GetVdcComputePolicyById retrieves VDC compute policy by given ID 29 // Deprecated: use VCDClient.GetVdcComputePolicyV2ById 30 func (org *AdminOrg) GetVdcComputePolicyById(id string) (*VdcComputePolicy, error) { 31 return getVdcComputePolicyById(org.client, id) 32 } 33 34 // GetVdcComputePolicyById retrieves VDC compute policy by given ID 35 // Deprecated: use VCDClient.GetVdcComputePolicyV2ById 36 func (org *Org) GetVdcComputePolicyById(id string) (*VdcComputePolicy, error) { 37 return getVdcComputePolicyById(org.client, id) 38 } 39 40 // getVdcComputePolicyById retrieves VDC compute policy by given ID 41 // Deprecated: Use getVdcComputePolicyV2ById instead 42 func getVdcComputePolicyById(client *Client, id string) (*VdcComputePolicy, error) { 43 endpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointVdcComputePolicies 44 minimumApiVersion, err := client.checkOpenApiEndpointCompatibility(endpoint) 45 if err != nil { 46 return nil, err 47 } 48 49 if id == "" { 50 return nil, fmt.Errorf("empty VDC id") 51 } 52 53 urlRef, err := client.OpenApiBuildEndpoint(endpoint, id) 54 55 if err != nil { 56 return nil, err 57 } 58 59 vdcComputePolicy := &VdcComputePolicy{ 60 VdcComputePolicy: &types.VdcComputePolicy{}, 61 Href: urlRef.String(), 62 client: client, 63 } 64 65 err = client.OpenApiGetItem(minimumApiVersion, urlRef, nil, vdcComputePolicy.VdcComputePolicy, nil) 66 if err != nil { 67 return nil, err 68 } 69 70 return vdcComputePolicy, nil 71 } 72 73 // GetAllVdcComputePolicies retrieves all VDC compute policies using OpenAPI endpoint. Query parameters can be supplied to perform additional 74 // filtering 75 // Deprecated: use VCDClient.GetAllVdcComputePoliciesV2 76 func (client *Client) GetAllVdcComputePolicies(queryParameters url.Values) ([]*VdcComputePolicy, error) { 77 return getAllVdcComputePolicies(client, queryParameters) 78 } 79 80 // GetAllVdcComputePolicies retrieves all VDC compute policies using OpenAPI endpoint. Query parameters can be supplied to perform additional 81 // filtering 82 // Deprecated: use VCDClient.GetAllVdcComputePoliciesV2 83 func (org *AdminOrg) GetAllVdcComputePolicies(queryParameters url.Values) ([]*VdcComputePolicy, error) { 84 return getAllVdcComputePolicies(org.client, queryParameters) 85 } 86 87 // GetAllVdcComputePolicies retrieves all VDC compute policies using OpenAPI endpoint. Query parameters can be supplied to perform additional 88 // filtering 89 // Deprecated: use VCDClient.GetAllVdcComputePoliciesV2 90 func (org *Org) GetAllVdcComputePolicies(queryParameters url.Values) ([]*VdcComputePolicy, error) { 91 return getAllVdcComputePolicies(org.client, queryParameters) 92 } 93 94 // getAllVdcComputePolicies retrieves all VDC compute policies using OpenAPI endpoint. Query parameters can be supplied to perform additional 95 // filtering 96 // Deprecated: use getAllVdcComputePoliciesV2 97 func getAllVdcComputePolicies(client *Client, queryParameters url.Values) ([]*VdcComputePolicy, error) { 98 endpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointVdcComputePolicies 99 minimumApiVersion, err := client.checkOpenApiEndpointCompatibility(endpoint) 100 if err != nil { 101 return nil, err 102 } 103 104 urlRef, err := client.OpenApiBuildEndpoint(endpoint) 105 if err != nil { 106 return nil, err 107 } 108 109 responses := []*types.VdcComputePolicy{{}} 110 111 err = client.OpenApiGetAllItems(minimumApiVersion, urlRef, queryParameters, &responses, nil) 112 if err != nil { 113 return nil, err 114 } 115 116 var wrappedVdcComputePolicies []*VdcComputePolicy 117 for _, response := range responses { 118 wrappedVdcComputePolicy := &VdcComputePolicy{ 119 client: client, 120 VdcComputePolicy: response, 121 } 122 wrappedVdcComputePolicies = append(wrappedVdcComputePolicies, wrappedVdcComputePolicy) 123 } 124 125 return wrappedVdcComputePolicies, nil 126 } 127 128 // CreateVdcComputePolicy creates a new VDC Compute Policy using OpenAPI endpoint 129 // Deprecated: use VCDClient.CreateVdcComputePolicyV2 130 func (org *AdminOrg) CreateVdcComputePolicy(newVdcComputePolicy *types.VdcComputePolicy) (*VdcComputePolicy, error) { 131 return org.client.CreateVdcComputePolicy(newVdcComputePolicy) 132 } 133 134 // CreateVdcComputePolicy creates a new VDC Compute Policy using OpenAPI endpoint 135 // Deprecated: use VCDClient.CreateVdcComputePolicyV2 136 func (client *Client) CreateVdcComputePolicy(newVdcComputePolicy *types.VdcComputePolicy) (*VdcComputePolicy, error) { 137 endpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointVdcComputePolicies 138 minimumApiVersion, err := client.checkOpenApiEndpointCompatibility(endpoint) 139 if err != nil { 140 return nil, err 141 } 142 143 urlRef, err := client.OpenApiBuildEndpoint(endpoint) 144 if err != nil { 145 return nil, err 146 } 147 148 returnVdcComputePolicy := &VdcComputePolicy{ 149 VdcComputePolicy: &types.VdcComputePolicy{}, 150 client: client, 151 } 152 153 err = client.OpenApiPostItem(minimumApiVersion, urlRef, nil, newVdcComputePolicy, returnVdcComputePolicy.VdcComputePolicy, nil) 154 if err != nil { 155 return nil, fmt.Errorf("error creating VDC compute policy: %s", err) 156 } 157 158 return returnVdcComputePolicy, nil 159 } 160 161 // Update existing VDC compute policy 162 // Deprecated: use VdcComputePolicyV2.Update 163 func (vdcComputePolicy *VdcComputePolicy) Update() (*VdcComputePolicy, error) { 164 endpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointVdcComputePolicies 165 minimumApiVersion, err := vdcComputePolicy.client.checkOpenApiEndpointCompatibility(endpoint) 166 if err != nil { 167 return nil, err 168 } 169 170 if vdcComputePolicy.VdcComputePolicy.ID == "" { 171 return nil, fmt.Errorf("cannot update VDC compute policy without ID") 172 } 173 174 urlRef, err := vdcComputePolicy.client.OpenApiBuildEndpoint(endpoint, vdcComputePolicy.VdcComputePolicy.ID) 175 if err != nil { 176 return nil, err 177 } 178 179 returnVdcComputePolicy := &VdcComputePolicy{ 180 VdcComputePolicy: &types.VdcComputePolicy{}, 181 client: vdcComputePolicy.client, 182 } 183 184 err = vdcComputePolicy.client.OpenApiPutItem(minimumApiVersion, urlRef, nil, vdcComputePolicy.VdcComputePolicy, returnVdcComputePolicy.VdcComputePolicy, nil) 185 if err != nil { 186 return nil, fmt.Errorf("error updating VDC compute policy: %s", err) 187 } 188 189 return returnVdcComputePolicy, nil 190 } 191 192 // Delete deletes VDC compute policy 193 // Deprecated: use VdcComputePolicyV2.Delete 194 func (vdcComputePolicy *VdcComputePolicy) Delete() error { 195 endpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointVdcComputePolicies 196 minimumApiVersion, err := vdcComputePolicy.client.checkOpenApiEndpointCompatibility(endpoint) 197 if err != nil { 198 return err 199 } 200 201 if vdcComputePolicy.VdcComputePolicy.ID == "" { 202 return fmt.Errorf("cannot delete VDC compute policy without id") 203 } 204 205 urlRef, err := vdcComputePolicy.client.OpenApiBuildEndpoint(endpoint, vdcComputePolicy.VdcComputePolicy.ID) 206 if err != nil { 207 return err 208 } 209 210 err = vdcComputePolicy.client.OpenApiDeleteItem(minimumApiVersion, urlRef, nil, nil) 211 212 if err != nil { 213 return fmt.Errorf("error deleting VDC compute policy: %s", err) 214 } 215 216 return nil 217 } 218 219 // GetAllAssignedVdcComputePolicies retrieves all VDC assigned compute policies using OpenAPI endpoint. Query parameters can be supplied to perform additional 220 // filtering 221 // Deprecated: use AdminVdc.GetAllAssignedVdcComputePoliciesV2 222 func (vdc *AdminVdc) GetAllAssignedVdcComputePolicies(queryParameters url.Values) ([]*VdcComputePolicy, error) { 223 endpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointVdcAssignedComputePolicies 224 minimumApiVersion, err := vdc.client.checkOpenApiEndpointCompatibility(endpoint) 225 if err != nil { 226 return nil, err 227 } 228 229 urlRef, err := vdc.client.OpenApiBuildEndpoint(fmt.Sprintf(endpoint, vdc.AdminVdc.ID)) 230 if err != nil { 231 return nil, err 232 } 233 234 responses := []*types.VdcComputePolicy{{}} 235 236 err = vdc.client.OpenApiGetAllItems(minimumApiVersion, urlRef, queryParameters, &responses, nil) 237 if err != nil { 238 return nil, err 239 } 240 241 var wrappedVdcComputePolicies []*VdcComputePolicy 242 for _, response := range responses { 243 wrappedVdcComputePolicy := &VdcComputePolicy{ 244 client: vdc.client, 245 VdcComputePolicy: response, 246 } 247 wrappedVdcComputePolicies = append(wrappedVdcComputePolicies, wrappedVdcComputePolicy) 248 } 249 250 return wrappedVdcComputePolicies, nil 251 }