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 }