Blame vendor/github.com/vmware/govmomi/object/search_index.go

Packit 63bb0d
/*
Packit 63bb0d
Copyright (c) 2015 VMware, Inc. All Rights Reserved.
Packit 63bb0d
Packit 63bb0d
Licensed under the Apache License, Version 2.0 (the "License");
Packit 63bb0d
you may not use this file except in compliance with the License.
Packit 63bb0d
You may obtain a copy of the License at
Packit 63bb0d
Packit 63bb0d
    http://www.apache.org/licenses/LICENSE-2.0
Packit 63bb0d
Packit 63bb0d
Unless required by applicable law or agreed to in writing, software
Packit 63bb0d
distributed under the License is distributed on an "AS IS" BASIS,
Packit 63bb0d
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit 63bb0d
See the License for the specific language governing permissions and
Packit 63bb0d
limitations under the License.
Packit 63bb0d
*/
Packit 63bb0d
Packit 63bb0d
package object
Packit 63bb0d
Packit 63bb0d
import (
Packit 63bb0d
	"context"
Packit 63bb0d
Packit 63bb0d
	"github.com/vmware/govmomi/vim25"
Packit 63bb0d
	"github.com/vmware/govmomi/vim25/methods"
Packit 63bb0d
	"github.com/vmware/govmomi/vim25/types"
Packit 63bb0d
)
Packit 63bb0d
Packit 63bb0d
type SearchIndex struct {
Packit 63bb0d
	Common
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
func NewSearchIndex(c *vim25.Client) *SearchIndex {
Packit 63bb0d
	s := SearchIndex{
Packit 63bb0d
		Common: NewCommon(c, *c.ServiceContent.SearchIndex),
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	return &s
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// FindByDatastorePath finds a virtual machine by its location on a datastore.
Packit 63bb0d
func (s SearchIndex) FindByDatastorePath(ctx context.Context, dc *Datacenter, path string) (Reference, error) {
Packit 63bb0d
	req := types.FindByDatastorePath{
Packit 63bb0d
		This:       s.Reference(),
Packit 63bb0d
		Datacenter: dc.Reference(),
Packit 63bb0d
		Path:       path,
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	res, err := methods.FindByDatastorePath(ctx, s.c, &req)
Packit 63bb0d
	if err != nil {
Packit 63bb0d
		return nil, err
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	if res.Returnval == nil {
Packit 63bb0d
		return nil, nil
Packit 63bb0d
	}
Packit 63bb0d
	return NewReference(s.c, *res.Returnval), nil
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// FindByDnsName finds a virtual machine or host by DNS name.
Packit 63bb0d
func (s SearchIndex) FindByDnsName(ctx context.Context, dc *Datacenter, dnsName string, vmSearch bool) (Reference, error) {
Packit 63bb0d
	req := types.FindByDnsName{
Packit 63bb0d
		This:     s.Reference(),
Packit 63bb0d
		DnsName:  dnsName,
Packit 63bb0d
		VmSearch: vmSearch,
Packit 63bb0d
	}
Packit 63bb0d
	if dc != nil {
Packit 63bb0d
		ref := dc.Reference()
Packit 63bb0d
		req.Datacenter = &ref
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	res, err := methods.FindByDnsName(ctx, s.c, &req)
Packit 63bb0d
	if err != nil {
Packit 63bb0d
		return nil, err
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	if res.Returnval == nil {
Packit 63bb0d
		return nil, nil
Packit 63bb0d
	}
Packit 63bb0d
	return NewReference(s.c, *res.Returnval), nil
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// FindByInventoryPath finds a managed entity based on its location in the inventory.
Packit 63bb0d
func (s SearchIndex) FindByInventoryPath(ctx context.Context, path string) (Reference, error) {
Packit 63bb0d
	req := types.FindByInventoryPath{
Packit 63bb0d
		This:          s.Reference(),
Packit 63bb0d
		InventoryPath: path,
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	res, err := methods.FindByInventoryPath(ctx, s.c, &req)
Packit 63bb0d
	if err != nil {
Packit 63bb0d
		return nil, err
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	if res.Returnval == nil {
Packit 63bb0d
		return nil, nil
Packit 63bb0d
	}
Packit 63bb0d
	return NewReference(s.c, *res.Returnval), nil
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// FindByIp finds a virtual machine or host by IP address.
Packit 63bb0d
func (s SearchIndex) FindByIp(ctx context.Context, dc *Datacenter, ip string, vmSearch bool) (Reference, error) {
Packit 63bb0d
	req := types.FindByIp{
Packit 63bb0d
		This:     s.Reference(),
Packit 63bb0d
		Ip:       ip,
Packit 63bb0d
		VmSearch: vmSearch,
Packit 63bb0d
	}
Packit 63bb0d
	if dc != nil {
Packit 63bb0d
		ref := dc.Reference()
Packit 63bb0d
		req.Datacenter = &ref
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	res, err := methods.FindByIp(ctx, s.c, &req)
Packit 63bb0d
	if err != nil {
Packit 63bb0d
		return nil, err
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	if res.Returnval == nil {
Packit 63bb0d
		return nil, nil
Packit 63bb0d
	}
Packit 63bb0d
	return NewReference(s.c, *res.Returnval), nil
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// FindByUuid finds a virtual machine or host by UUID.
Packit 63bb0d
func (s SearchIndex) FindByUuid(ctx context.Context, dc *Datacenter, uuid string, vmSearch bool, instanceUuid *bool) (Reference, error) {
Packit 63bb0d
	req := types.FindByUuid{
Packit 63bb0d
		This:         s.Reference(),
Packit 63bb0d
		Uuid:         uuid,
Packit 63bb0d
		VmSearch:     vmSearch,
Packit 63bb0d
		InstanceUuid: instanceUuid,
Packit 63bb0d
	}
Packit 63bb0d
	if dc != nil {
Packit 63bb0d
		ref := dc.Reference()
Packit 63bb0d
		req.Datacenter = &ref
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	res, err := methods.FindByUuid(ctx, s.c, &req)
Packit 63bb0d
	if err != nil {
Packit 63bb0d
		return nil, err
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	if res.Returnval == nil {
Packit 63bb0d
		return nil, nil
Packit 63bb0d
	}
Packit 63bb0d
	return NewReference(s.c, *res.Returnval), nil
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// FindChild finds a particular child based on a managed entity name.
Packit 63bb0d
func (s SearchIndex) FindChild(ctx context.Context, entity Reference, name string) (Reference, error) {
Packit 63bb0d
	req := types.FindChild{
Packit 63bb0d
		This:   s.Reference(),
Packit 63bb0d
		Entity: entity.Reference(),
Packit 63bb0d
		Name:   name,
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	res, err := methods.FindChild(ctx, s.c, &req)
Packit 63bb0d
	if err != nil {
Packit 63bb0d
		return nil, err
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	if res.Returnval == nil {
Packit 63bb0d
		return nil, nil
Packit 63bb0d
	}
Packit 63bb0d
	return NewReference(s.c, *res.Returnval), nil
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// FindAllByDnsName finds all virtual machines or hosts by DNS name.
Packit 63bb0d
func (s SearchIndex) FindAllByDnsName(ctx context.Context, dc *Datacenter, dnsName string, vmSearch bool) ([]Reference, error) {
Packit 63bb0d
	req := types.FindAllByDnsName{
Packit 63bb0d
		This:     s.Reference(),
Packit 63bb0d
		DnsName:  dnsName,
Packit 63bb0d
		VmSearch: vmSearch,
Packit 63bb0d
	}
Packit 63bb0d
	if dc != nil {
Packit 63bb0d
		ref := dc.Reference()
Packit 63bb0d
		req.Datacenter = &ref
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	res, err := methods.FindAllByDnsName(ctx, s.c, &req)
Packit 63bb0d
	if err != nil {
Packit 63bb0d
		return nil, err
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	if len(res.Returnval) == 0 {
Packit 63bb0d
		return nil, nil
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	var references []Reference
Packit 63bb0d
	for _, returnval := range res.Returnval {
Packit 63bb0d
		references = append(references, NewReference(s.c, returnval))
Packit 63bb0d
	}
Packit 63bb0d
	return references, nil
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// FindAllByIp finds all virtual machines or hosts by IP address.
Packit 63bb0d
func (s SearchIndex) FindAllByIp(ctx context.Context, dc *Datacenter, ip string, vmSearch bool) ([]Reference, error) {
Packit 63bb0d
	req := types.FindAllByIp{
Packit 63bb0d
		This:     s.Reference(),
Packit 63bb0d
		Ip:       ip,
Packit 63bb0d
		VmSearch: vmSearch,
Packit 63bb0d
	}
Packit 63bb0d
	if dc != nil {
Packit 63bb0d
		ref := dc.Reference()
Packit 63bb0d
		req.Datacenter = &ref
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	res, err := methods.FindAllByIp(ctx, s.c, &req)
Packit 63bb0d
	if err != nil {
Packit 63bb0d
		return nil, err
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	if len(res.Returnval) == 0 {
Packit 63bb0d
		return nil, nil
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	var references []Reference
Packit 63bb0d
	for _, returnval := range res.Returnval {
Packit 63bb0d
		references = append(references, NewReference(s.c, returnval))
Packit 63bb0d
	}
Packit 63bb0d
	return references, nil
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// FindAllByUuid finds all virtual machines or hosts by UUID.
Packit 63bb0d
func (s SearchIndex) FindAllByUuid(ctx context.Context, dc *Datacenter, uuid string, vmSearch bool, instanceUuid *bool) ([]Reference, error) {
Packit 63bb0d
	req := types.FindAllByUuid{
Packit 63bb0d
		This:         s.Reference(),
Packit 63bb0d
		Uuid:         uuid,
Packit 63bb0d
		VmSearch:     vmSearch,
Packit 63bb0d
		InstanceUuid: instanceUuid,
Packit 63bb0d
	}
Packit 63bb0d
	if dc != nil {
Packit 63bb0d
		ref := dc.Reference()
Packit 63bb0d
		req.Datacenter = &ref
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	res, err := methods.FindAllByUuid(ctx, s.c, &req)
Packit 63bb0d
	if err != nil {
Packit 63bb0d
		return nil, err
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	if len(res.Returnval) == 0 {
Packit 63bb0d
		return nil, nil
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	var references []Reference
Packit 63bb0d
	for _, returnval := range res.Returnval {
Packit 63bb0d
		references = append(references, NewReference(s.c, returnval))
Packit 63bb0d
	}
Packit 63bb0d
	return references, nil
Packit 63bb0d
}