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  }