github.com/vmware/govmomi@v0.51.0/object/virtual_app.go (about)

     1  // © Broadcom. All Rights Reserved.
     2  // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
     3  // SPDX-License-Identifier: Apache-2.0
     4  
     5  package object
     6  
     7  import (
     8  	"context"
     9  
    10  	"github.com/vmware/govmomi/vim25"
    11  	"github.com/vmware/govmomi/vim25/methods"
    12  	"github.com/vmware/govmomi/vim25/types"
    13  )
    14  
    15  type VirtualApp struct {
    16  	*ResourcePool
    17  }
    18  
    19  func NewVirtualApp(c *vim25.Client, ref types.ManagedObjectReference) *VirtualApp {
    20  	return &VirtualApp{
    21  		ResourcePool: NewResourcePool(c, ref),
    22  	}
    23  }
    24  
    25  func (p VirtualApp) CreateChildVM(ctx context.Context, config types.VirtualMachineConfigSpec, host *HostSystem) (*Task, error) {
    26  	req := types.CreateChildVM_Task{
    27  		This:   p.Reference(),
    28  		Config: config,
    29  	}
    30  
    31  	if host != nil {
    32  		ref := host.Reference()
    33  		req.Host = &ref
    34  	}
    35  
    36  	res, err := methods.CreateChildVM_Task(ctx, p.c, &req)
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  
    41  	return NewTask(p.c, res.Returnval), nil
    42  }
    43  
    44  func (p VirtualApp) UpdateConfig(ctx context.Context, spec types.VAppConfigSpec) error {
    45  	req := types.UpdateVAppConfig{
    46  		This: p.Reference(),
    47  		Spec: spec,
    48  	}
    49  
    50  	_, err := methods.UpdateVAppConfig(ctx, p.c, &req)
    51  	return err
    52  }
    53  
    54  func (p VirtualApp) PowerOn(ctx context.Context) (*Task, error) {
    55  	req := types.PowerOnVApp_Task{
    56  		This: p.Reference(),
    57  	}
    58  
    59  	res, err := methods.PowerOnVApp_Task(ctx, p.c, &req)
    60  	if err != nil {
    61  		return nil, err
    62  	}
    63  
    64  	return NewTask(p.c, res.Returnval), nil
    65  }
    66  
    67  func (p VirtualApp) PowerOff(ctx context.Context, force bool) (*Task, error) {
    68  	req := types.PowerOffVApp_Task{
    69  		This:  p.Reference(),
    70  		Force: force,
    71  	}
    72  
    73  	res, err := methods.PowerOffVApp_Task(ctx, p.c, &req)
    74  	if err != nil {
    75  		return nil, err
    76  	}
    77  
    78  	return NewTask(p.c, res.Returnval), nil
    79  
    80  }
    81  
    82  func (p VirtualApp) Suspend(ctx context.Context) (*Task, error) {
    83  	req := types.SuspendVApp_Task{
    84  		This: p.Reference(),
    85  	}
    86  
    87  	res, err := methods.SuspendVApp_Task(ctx, p.c, &req)
    88  	if err != nil {
    89  		return nil, err
    90  	}
    91  
    92  	return NewTask(p.c, res.Returnval), nil
    93  }
    94  
    95  func (p VirtualApp) Clone(ctx context.Context, name string, target types.ManagedObjectReference, spec types.VAppCloneSpec) (*Task, error) {
    96  	req := types.CloneVApp_Task{
    97  		This:   p.Reference(),
    98  		Name:   name,
    99  		Target: target,
   100  		Spec:   spec,
   101  	}
   102  
   103  	res, err := methods.CloneVApp_Task(ctx, p.c, &req)
   104  	if err != nil {
   105  		return nil, err
   106  	}
   107  
   108  	return NewTask(p.c, res.Returnval), nil
   109  }