github.com/vmware/govmomi@v0.51.0/object/types.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  	"github.com/vmware/govmomi/vim25"
     9  	"github.com/vmware/govmomi/vim25/types"
    10  )
    11  
    12  type Reference interface {
    13  	Reference() types.ManagedObjectReference
    14  }
    15  
    16  func NewReference(c *vim25.Client, e types.ManagedObjectReference) Reference {
    17  	switch e.Type {
    18  	case "Folder":
    19  		return NewFolder(c, e)
    20  	case "StoragePod":
    21  		return &StoragePod{
    22  			NewFolder(c, e),
    23  		}
    24  	case "Datacenter":
    25  		return NewDatacenter(c, e)
    26  	case "VirtualMachine":
    27  		return NewVirtualMachine(c, e)
    28  	case "VirtualApp":
    29  		return &VirtualApp{
    30  			NewResourcePool(c, e),
    31  		}
    32  	case "ComputeResource":
    33  		return NewComputeResource(c, e)
    34  	case "ClusterComputeResource":
    35  		return NewClusterComputeResource(c, e)
    36  	case "HostSystem":
    37  		return NewHostSystem(c, e)
    38  	case "Network":
    39  		return NewNetwork(c, e)
    40  	case "OpaqueNetwork":
    41  		return NewOpaqueNetwork(c, e)
    42  	case "ResourcePool":
    43  		return NewResourcePool(c, e)
    44  	case "DistributedVirtualSwitch":
    45  		return NewDistributedVirtualSwitch(c, e)
    46  	case "VmwareDistributedVirtualSwitch":
    47  		return &VmwareDistributedVirtualSwitch{*NewDistributedVirtualSwitch(c, e)}
    48  	case "DistributedVirtualPortgroup":
    49  		return NewDistributedVirtualPortgroup(c, e)
    50  	case "Datastore":
    51  		return NewDatastore(c, e)
    52  	default:
    53  		panic("Unknown managed entity: " + e.Type)
    54  	}
    55  }