diff --git a/vsphere/datacenter_helper.go b/vsphere/datacenter_helper.go new file mode 100644 index 000000000..31c198ceb --- /dev/null +++ b/vsphere/datacenter_helper.go @@ -0,0 +1,30 @@ +package vsphere + +import ( + "fmt" + + "github.com/vmware/govmomi" + "github.com/vmware/govmomi/find" + "github.com/vmware/govmomi/object" + "golang.org/x/net/context" +) + +// getDatacenter gets the higher-level datacenter object for the datacenter +// name supplied by dc. +// +// The default datacenter is denoted by using an empty string. When working +// with ESXi directly, the default datacenter is always selected. +func getDatacenter(c *govmomi.Client, dc string) (*object.Datacenter, error) { + finder := find.NewFinder(c.Client, true) + t := c.ServiceContent.About.ApiType + switch t { + case "HostAgent": + return finder.DefaultDatacenter(context.TODO()) + case "VirtualCenter": + if dc != "" { + return finder.Datacenter(context.TODO(), dc) + } + return finder.DefaultDatacenter(context.TODO()) + } + return nil, fmt.Errorf("unsupported ApiType: %s", t) +} diff --git a/vsphere/resource_vsphere_folder.go b/vsphere/resource_vsphere_folder.go index 1a39eb901..d6a68d67c 100644 --- a/vsphere/resource_vsphere_folder.go +++ b/vsphere/resource_vsphere_folder.go @@ -223,15 +223,3 @@ func deleteFolder(client *govmomi.Client, f *folder) error { } return nil } - -// getDatacenter gets datacenter object -func getDatacenter(c *govmomi.Client, dc string) (*object.Datacenter, error) { - finder := find.NewFinder(c.Client, true) - if dc != "" { - d, err := finder.Datacenter(context.TODO(), dc) - return d, err - } else { - d, err := finder.DefaultDatacenter(context.TODO()) - return d, err - } -}