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 }