@@ -40,6 +40,24 @@ type BaseComputeResource interface {
4040 String () string
4141}
4242
43+ // ClusterFromID locates a ClusterComputeResource by its managed object reference ID.
44+ func ClusterFromID (client * govmomi.Client , id string ) (* object.ClusterComputeResource , error ) {
45+ finder := find .NewFinder (client .Client , false )
46+
47+ ref := types.ManagedObjectReference {
48+ Type : "ClusterComputeResource" ,
49+ Value : id ,
50+ }
51+
52+ ctx , cancel := context .WithTimeout (context .Background (), provider .DefaultAPITimeout )
53+ defer cancel ()
54+ obj , err := finder .ObjectReference (ctx , ref )
55+ if err != nil {
56+ return nil , err
57+ }
58+ return obj .(* object.ClusterComputeResource ), nil
59+ }
60+
4361// StandaloneFromID locates a ComputeResource by its managed object reference ID.
4462//
4563// Note this is for base level ComputeResource objects only, and should only be
@@ -123,7 +141,7 @@ func BaseFromReference(client *govmomi.Client, ref types.ManagedObjectReference)
123141 case "ComputeResource" :
124142 return StandaloneFromID (client , ref .Value )
125143 case "ClusterComputeResource" :
126- return StandaloneFromID (client , ref .Value )
144+ return ClusterFromID (client , ref .Value )
127145 }
128146 return nil , fmt .Errorf ("unknown object type %s" , ref .Type )
129147}
0 commit comments