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 }