github.com/vmware/govmomi@v0.51.0/object/host_datastore_system.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 HostDatastoreSystem struct {
    16  	Common
    17  }
    18  
    19  func NewHostDatastoreSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostDatastoreSystem {
    20  	return &HostDatastoreSystem{
    21  		Common: NewCommon(c, ref),
    22  	}
    23  }
    24  
    25  func (s HostDatastoreSystem) CreateLocalDatastore(ctx context.Context, name string, path string) (*Datastore, error) {
    26  	req := types.CreateLocalDatastore{
    27  		This: s.Reference(),
    28  		Name: name,
    29  		Path: path,
    30  	}
    31  
    32  	res, err := methods.CreateLocalDatastore(ctx, s.Client(), &req)
    33  	if err != nil {
    34  		return nil, err
    35  	}
    36  
    37  	return NewDatastore(s.Client(), res.Returnval), nil
    38  }
    39  
    40  func (s HostDatastoreSystem) CreateNasDatastore(ctx context.Context, spec types.HostNasVolumeSpec) (*Datastore, error) {
    41  	req := types.CreateNasDatastore{
    42  		This: s.Reference(),
    43  		Spec: spec,
    44  	}
    45  
    46  	res, err := methods.CreateNasDatastore(ctx, s.Client(), &req)
    47  	if err != nil {
    48  		return nil, err
    49  	}
    50  
    51  	return NewDatastore(s.Client(), res.Returnval), nil
    52  }
    53  
    54  func (s HostDatastoreSystem) CreateVmfsDatastore(ctx context.Context, spec types.VmfsDatastoreCreateSpec) (*Datastore, error) {
    55  	req := types.CreateVmfsDatastore{
    56  		This: s.Reference(),
    57  		Spec: spec,
    58  	}
    59  
    60  	res, err := methods.CreateVmfsDatastore(ctx, s.Client(), &req)
    61  	if err != nil {
    62  		return nil, err
    63  	}
    64  
    65  	return NewDatastore(s.Client(), res.Returnval), nil
    66  }
    67  
    68  func (s HostDatastoreSystem) Remove(ctx context.Context, ds *Datastore) error {
    69  	req := types.RemoveDatastore{
    70  		This:      s.Reference(),
    71  		Datastore: ds.Reference(),
    72  	}
    73  
    74  	_, err := methods.RemoveDatastore(ctx, s.Client(), &req)
    75  	if err != nil {
    76  		return err
    77  	}
    78  
    79  	return nil
    80  }
    81  
    82  func (s HostDatastoreSystem) QueryAvailableDisksForVmfs(ctx context.Context) ([]types.HostScsiDisk, error) {
    83  	req := types.QueryAvailableDisksForVmfs{
    84  		This: s.Reference(),
    85  	}
    86  
    87  	res, err := methods.QueryAvailableDisksForVmfs(ctx, s.Client(), &req)
    88  	if err != nil {
    89  		return nil, err
    90  	}
    91  
    92  	return res.Returnval, nil
    93  }
    94  
    95  func (s HostDatastoreSystem) QueryVmfsDatastoreCreateOptions(ctx context.Context, devicePath string) ([]types.VmfsDatastoreOption, error) {
    96  	req := types.QueryVmfsDatastoreCreateOptions{
    97  		This:       s.Reference(),
    98  		DevicePath: devicePath,
    99  	}
   100  
   101  	res, err := methods.QueryVmfsDatastoreCreateOptions(ctx, s.Client(), &req)
   102  	if err != nil {
   103  		return nil, err
   104  	}
   105  
   106  	return res.Returnval, nil
   107  }
   108  
   109  func (s HostDatastoreSystem) ResignatureUnresolvedVmfsVolumes(ctx context.Context, devicePaths []string) (*Task, error) {
   110  	req := &types.ResignatureUnresolvedVmfsVolume_Task{
   111  		This: s.Reference(),
   112  		ResolutionSpec: types.HostUnresolvedVmfsResignatureSpec{
   113  			ExtentDevicePath: devicePaths,
   114  		},
   115  	}
   116  
   117  	res, err := methods.ResignatureUnresolvedVmfsVolume_Task(ctx, s.Client(), req)
   118  	if err != nil {
   119  		return nil, err
   120  	}
   121  
   122  	return NewTask(s.c, res.Returnval), nil
   123  }