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  }