github.com/vmware/govmomi@v0.51.0/object/namespace_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 DatastoreNamespaceManager struct {
    16  	Common
    17  }
    18  
    19  func NewDatastoreNamespaceManager(c *vim25.Client) *DatastoreNamespaceManager {
    20  	n := DatastoreNamespaceManager{
    21  		Common: NewCommon(c, *c.ServiceContent.DatastoreNamespaceManager),
    22  	}
    23  
    24  	return &n
    25  }
    26  
    27  // CreateDirectory creates a top-level directory on the given vsan datastore, using
    28  // the given user display name hint and opaque storage policy.
    29  func (nm DatastoreNamespaceManager) CreateDirectory(ctx context.Context, ds *Datastore, displayName string, policy string) (string, error) {
    30  
    31  	req := &types.CreateDirectory{
    32  		This:        nm.Reference(),
    33  		Datastore:   ds.Reference(),
    34  		DisplayName: displayName,
    35  		Policy:      policy,
    36  	}
    37  
    38  	resp, err := methods.CreateDirectory(ctx, nm.c, req)
    39  	if err != nil {
    40  		return "", err
    41  	}
    42  
    43  	return resp.Returnval, nil
    44  }
    45  
    46  // DeleteDirectory deletes the given top-level directory from a vsan datastore.
    47  func (nm DatastoreNamespaceManager) DeleteDirectory(ctx context.Context, dc *Datacenter, datastorePath string) error {
    48  
    49  	req := &types.DeleteDirectory{
    50  		This:          nm.Reference(),
    51  		DatastorePath: datastorePath,
    52  	}
    53  
    54  	if dc != nil {
    55  		ref := dc.Reference()
    56  		req.Datacenter = &ref
    57  	}
    58  
    59  	if _, err := methods.DeleteDirectory(ctx, nm.c, req); err != nil {
    60  		return err
    61  	}
    62  
    63  	return nil
    64  }
    65  
    66  func (nm DatastoreNamespaceManager) ConvertNamespacePathToUuidPath(ctx context.Context, dc *Datacenter, datastoreURL string) (string, error) {
    67  	req := &types.ConvertNamespacePathToUuidPath{
    68  		This:         nm.Reference(),
    69  		NamespaceUrl: datastoreURL,
    70  	}
    71  
    72  	if dc != nil {
    73  		ref := dc.Reference()
    74  		req.Datacenter = &ref
    75  	}
    76  
    77  	res, err := methods.ConvertNamespacePathToUuidPath(ctx, nm.c, req)
    78  	if err != nil {
    79  		return "", err
    80  	}
    81  
    82  	return res.Returnval, nil
    83  }