github.com/vmware/govmomi@v0.51.0/object/file_manager.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 FileManager struct { 16 Common 17 } 18 19 func NewFileManager(c *vim25.Client) *FileManager { 20 f := FileManager{ 21 Common: NewCommon(c, *c.ServiceContent.FileManager), 22 } 23 24 return &f 25 } 26 27 func (f FileManager) CopyDatastoreFile(ctx context.Context, sourceName string, sourceDatacenter *Datacenter, destinationName string, destinationDatacenter *Datacenter, force bool) (*Task, error) { 28 req := types.CopyDatastoreFile_Task{ 29 This: f.Reference(), 30 SourceName: sourceName, 31 DestinationName: destinationName, 32 Force: types.NewBool(force), 33 } 34 35 if sourceDatacenter != nil { 36 ref := sourceDatacenter.Reference() 37 req.SourceDatacenter = &ref 38 } 39 40 if destinationDatacenter != nil { 41 ref := destinationDatacenter.Reference() 42 req.DestinationDatacenter = &ref 43 } 44 45 res, err := methods.CopyDatastoreFile_Task(ctx, f.c, &req) 46 if err != nil { 47 return nil, err 48 } 49 50 return NewTask(f.c, res.Returnval), nil 51 } 52 53 // DeleteDatastoreFile deletes the specified file or folder from the datastore. 54 func (f FileManager) DeleteDatastoreFile(ctx context.Context, name string, dc *Datacenter) (*Task, error) { 55 req := types.DeleteDatastoreFile_Task{ 56 This: f.Reference(), 57 Name: name, 58 } 59 60 if dc != nil { 61 ref := dc.Reference() 62 req.Datacenter = &ref 63 } 64 65 res, err := methods.DeleteDatastoreFile_Task(ctx, f.c, &req) 66 if err != nil { 67 return nil, err 68 } 69 70 return NewTask(f.c, res.Returnval), nil 71 } 72 73 // MakeDirectory creates a folder using the specified name. 74 func (f FileManager) MakeDirectory(ctx context.Context, name string, dc *Datacenter, createParentDirectories bool) error { 75 req := types.MakeDirectory{ 76 This: f.Reference(), 77 Name: name, 78 CreateParentDirectories: types.NewBool(createParentDirectories), 79 } 80 81 if dc != nil { 82 ref := dc.Reference() 83 req.Datacenter = &ref 84 } 85 86 _, err := methods.MakeDirectory(ctx, f.c, &req) 87 return err 88 } 89 90 func (f FileManager) MoveDatastoreFile(ctx context.Context, sourceName string, sourceDatacenter *Datacenter, destinationName string, destinationDatacenter *Datacenter, force bool) (*Task, error) { 91 req := types.MoveDatastoreFile_Task{ 92 This: f.Reference(), 93 SourceName: sourceName, 94 DestinationName: destinationName, 95 Force: types.NewBool(force), 96 } 97 98 if sourceDatacenter != nil { 99 ref := sourceDatacenter.Reference() 100 req.SourceDatacenter = &ref 101 } 102 103 if destinationDatacenter != nil { 104 ref := destinationDatacenter.Reference() 105 req.DestinationDatacenter = &ref 106 } 107 108 res, err := methods.MoveDatastoreFile_Task(ctx, f.c, &req) 109 if err != nil { 110 return nil, err 111 } 112 113 return NewTask(f.c, res.Returnval), nil 114 }