Adding vSphere Volume support for vSphere Cloud Provider
This commit is contained in:
42
vendor/github.com/vmware/govmomi/find/finder.go
generated
vendored
42
vendor/github.com/vmware/govmomi/find/finder.go
generated
vendored
@@ -762,28 +762,42 @@ func (f *Finder) VirtualApp(ctx context.Context, path string) (*object.VirtualAp
|
||||
return apps[0], nil
|
||||
}
|
||||
|
||||
func (f *Finder) Folder(ctx context.Context, path string) (*object.Folder, error) {
|
||||
mo, err := f.ManagedObjectList(ctx, path)
|
||||
func (f *Finder) FolderList(ctx context.Context, path string) ([]*object.Folder, error) {
|
||||
es, err := f.ManagedObjectList(ctx, path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if len(mo) == 0 {
|
||||
var folders []*object.Folder
|
||||
|
||||
for _, e := range es {
|
||||
switch o := e.Object.(type) {
|
||||
case mo.Folder:
|
||||
folder := object.NewFolder(f.client, o.Reference())
|
||||
folder.InventoryPath = e.Path
|
||||
folders = append(folders, folder)
|
||||
case *object.Folder:
|
||||
// RootFolder
|
||||
folders = append(folders, o)
|
||||
}
|
||||
}
|
||||
|
||||
if len(folders) == 0 {
|
||||
return nil, &NotFoundError{"folder", path}
|
||||
}
|
||||
|
||||
if len(mo) > 1 {
|
||||
return folders, nil
|
||||
}
|
||||
|
||||
func (f *Finder) Folder(ctx context.Context, path string) (*object.Folder, error) {
|
||||
folders, err := f.FolderList(ctx, path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if len(folders) > 1 {
|
||||
return nil, &MultipleFoundError{"folder", path}
|
||||
}
|
||||
|
||||
ref := mo[0].Object.Reference()
|
||||
if ref.Type != "Folder" {
|
||||
return nil, &NotFoundError{"folder", path}
|
||||
}
|
||||
|
||||
folder := object.NewFolder(f.client, ref)
|
||||
|
||||
folder.InventoryPath = mo[0].Path
|
||||
|
||||
return folder, nil
|
||||
return folders[0], nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user