func (c *Client) Retrieve(ctx context.Context, objs []types.ManagedObjectReference, p []string, dst interface{}) error {
	return c.PropertyCollector().Retrieve(ctx, objs, p, dst)
}
Retrieve dispatches to the Retrieve function on the default property collector.
package govmomi
import (
	"context"
	"net/url"
	"github.com/vmware/govmomi/property"
	"github.com/vmware/govmomi/session"
	"github.com/vmware/govmomi/vim25"
	"github.com/vmware/govmomi/vim25/soap"
	"github.com/vmware/govmomi/vim25/types"
)
type Client struct {
	*vim25.Client
	SessionManager *session.Manager
}
func NewClient(ctx context.Context, u *url.URL, insecure bool) (*Client, error) {
	soapClient := soap.NewClient(u, insecure)
	vimClient, err := vim25.NewClient(ctx, soapClient)
	if err != nil {
		return nil, err
	}
	c := &Client{
		Client:         vimClient,
		SessionManager: session.NewManager(vimClient),
	}
	if u.User != nil {
		err = c.Login(ctx, u.User)
		if err != nil {
			return nil, err
		}
	}
	return c, nil
}
func (c *Client) Login(ctx context.Context, u *url.Userinfo) error {
	return c.SessionManager.Login(ctx, u)
}
func (c *Client) Logout(ctx context.Context) error {
	defer c.Client.CloseIdleConnections()
	return c.SessionManager.Logout(ctx)
}
func (c *Client) PropertyCollector() *property.Collector {
	return property.DefaultCollector(c.Client)
}
func (c *Client) RetrieveOne(ctx context.Context, obj types.ManagedObjectReference, p []string, dst interface{}) error {
	return c.PropertyCollector().RetrieveOne(ctx, obj, p, dst)
}