@@ -31,197 +31,197 @@ import (
3131)
3232
3333func TestCreate (t * testing.T ) {
34- model := simulator .VPX ()
35- model .Host = 0 // ClusterHost only
36-
37- simr , err := vcsim .NewBuilder ().WithModel (model ).Build ()
38- if err != nil {
39- t .Fatalf ("unable to create simulator: %s" , err )
40- }
41- defer simr .Destroy ()
42-
4334 ctx := context .Background ()
44- vmContext := fake .NewVMContext (ctx , fake .NewControllerManagerContext ())
45- vmContext .VSphereVM .Spec .Server = simr .ServerURL ().Host
46-
47- authSession , err := session .GetOrCreate (
48- ctx ,
49- session .NewParams ().
50- WithServer (vmContext .VSphereVM .Spec .Server ).
51- WithUserInfo (simr .Username (), simr .Password ()).
52- WithDatacenter ("*" ))
53- if err != nil {
54- t .Fatal (err )
55- }
56- vmContext .Session = authSession
57-
58- vmRef := simulator .Map .Any ("VirtualMachine" )
59- vm , ok := vmRef .(* simulator.VirtualMachine )
60- if ! ok {
61- t .Fatal ("failed to get reference to an existing VM on the vcsim instance" )
62- }
63- vmContext .VSphereVM .Spec .Template = vm .Name
64-
65- disk := object .VirtualDeviceList (vm .Config .Hardware .Device ).SelectByType ((* types .VirtualDisk )(nil ))[0 ].(* types.VirtualDisk )
66- disk .CapacityInKB = int64 (vmContext .VSphereVM .Spec .DiskGiB ) * 1024 * 1024
67-
68- if err := createVM (ctx , vmContext , []byte ("" ), "" ); err != nil {
69- t .Fatal (err )
70- }
71-
72- taskRef := types.ManagedObjectReference {
73- Type : morefTypeTask ,
74- Value : vmContext .VSphereVM .Status .TaskRef ,
75- }
76- vimClient , err := vim25 .NewClient (ctx , vmContext .Session .RoundTripper )
77- if err != nil {
78- t .Fatal ("could not make vim25 client." )
79- }
80- task := object .NewTask (vimClient , taskRef )
81- err = task .Wait (ctx )
82- if err != nil {
83- t .Fatal ("error waiting for task:" , err )
84- }
85-
86- if model .Machine + 1 != model .Count ().Machine {
87- t .Error ("failed to clone vm" )
88- }
89- }
9035
91- func TestCreateWithMOID (t * testing.T ) {
92- model := simulator .VPX ()
93- model .Host = 0 // ClusterHost only
94-
95- simr , err := vcsim .NewBuilder ().WithModel (model ).Build ()
96- if err != nil {
97- t .Fatalf ("unable to create simulator: %v" , err )
98- }
99- defer simr .Destroy ()
100-
101- ctx := context .Background ()
102- vmContext := fake .NewVMContext (ctx , fake .NewControllerManagerContext ())
103- vmContext .VSphereVM .Spec .Server = simr .ServerURL ().Host
104-
105- authSession , err := session .GetOrCreate (
106- ctx ,
107- session .NewParams ().
108- WithServer (vmContext .VSphereVM .Spec .Server ).
109- WithUserInfo (simr .Username (), simr .Password ()).
110- WithDatacenter (simulator .Map .Any ("Datacenter" ).Reference ().String ()))
111- if err != nil {
112- t .Fatal (err )
113- }
114- vmContext .Session = authSession
115-
116- vmRef := simulator .Map .Any ("VirtualMachine" )
117- vm , ok := vmRef .(* simulator.VirtualMachine )
118- if ! ok {
119- t .Fatal ("failed to get reference to an existing VM on the vcsim instance" )
120- }
121- vmContext .VSphereVM .Spec .Template = vm .Name
122-
123- vmContext .VSphereVM .Spec .Datacenter = simulator .Map .Any ("Datacenter" ).Reference ().String ()
124- vmContext .VSphereVM .Spec .Datastore = simulator .Map .Any ("Datastore" ).Reference ().String ()
125- vmContext .VSphereVM .Spec .Folder = simulator .Map .Any ("Folder" ).Reference ().String ()
126- vmContext .VSphereVM .Spec .ResourcePool = simulator .Map .Any ("ResourcePool" ).Reference ().String ()
127-
128- t .Logf ("creating using MOID. Datacenter: %s, Datastore: %s, Folder: %s, ResourcePool: %s" ,
129- vmContext .VSphereVM .Spec .Datacenter ,
130- vmContext .VSphereVM .Spec .Datastore ,
131- vmContext .VSphereVM .Spec .Folder ,
132- vmContext .VSphereVM .Spec .ResourcePool )
133-
134- disk := object .VirtualDeviceList (vm .Config .Hardware .Device ).SelectByType ((* types .VirtualDisk )(nil ))[0 ].(* types.VirtualDisk )
135- disk .CapacityInKB = int64 (vmContext .VSphereVM .Spec .DiskGiB ) * 1024 * 1024
136-
137- if err := createVM (ctx , vmContext , []byte ("" ), "" ); err != nil {
138- t .Fatal (err )
139- }
140-
141- taskRef := types.ManagedObjectReference {
142- Type : morefTypeTask ,
143- Value : vmContext .VSphereVM .Status .TaskRef ,
144- }
145- vimClient , err := vim25 .NewClient (ctx , vmContext .Session .RoundTripper )
146- if err != nil {
147- t .Fatal ("could not make vim25 client" )
148- }
149- task := object .NewTask (vimClient , taskRef )
150- err = task .Wait (ctx )
151- if err != nil {
152- t .Fatal ("error waiting for task:" , err )
153- }
154-
155- if model .Machine + 1 != model .Count ().Machine {
156- t .Error ("failed to clone vm" )
157- }
158- }
159-
160- func TestCreateWithMixedMOIDAndCanonicalName (t * testing.T ) {
161- model := simulator .VPX ()
162- model .Host = 0 // ClusterHost only
163-
164- simr , err := vcsim .NewBuilder ().WithModel (model ).Build ()
165- if err != nil {
166- t .Fatalf ("unable to create simulator: %s" , err )
167- }
168- defer simr .Destroy ()
169-
170- ctx := context .Background ()
171- vmContext := fake .NewVMContext (ctx , fake .NewControllerManagerContext ())
172- vmContext .VSphereVM .Spec .Server = simr .ServerURL ().Host
173-
174- authSession , err := session .GetOrCreate (
175- ctx ,
176- session .NewParams ().
177- WithServer (vmContext .VSphereVM .Spec .Server ).
178- WithUserInfo (simr .Username (), simr .Password ()).
179- WithDatacenter (simulator .Map .Any ("Datacenter" ).Reference ().String ()))
180- if err != nil {
181- t .Fatal (err )
182- }
183- vmContext .Session = authSession
184-
185- vmRef := simulator .Map .Any ("VirtualMachine" )
186- vm , ok := vmRef .(* simulator.VirtualMachine )
187- if ! ok {
188- t .Fatal ("failed to get reference to an existing VM on the vcsim instance" )
189- }
190- vmContext .VSphereVM .Spec .Template = vm .Name
191-
192- vmContext .VSphereVM .Spec .Datacenter = simulator .Map .Any ("Datacenter" ).Reference ().String ()
193- vmContext .VSphereVM .Spec .Datastore = simulator .Map .Any ("Datastore" ).Entity ().Name
194- vmContext .VSphereVM .Spec .Folder = simulator .Map .Any ("Folder" ).Reference ().String ()
195- vmContext .VSphereVM .Spec .ResourcePool = simulator .Map .Any ("ResourcePool" ).Entity ().Name
196-
197- t .Logf ("creating using mixed entries. Datacenter: %s, Datastore: %s, Folder: %s, ResourcePool: %s" ,
198- vmContext .VSphereVM .Spec .Datacenter ,
199- vmContext .VSphereVM .Spec .Datastore ,
200- vmContext .VSphereVM .Spec .Folder ,
201- vmContext .VSphereVM .Spec .ResourcePool )
202-
203- disk := object .VirtualDeviceList (vm .Config .Hardware .Device ).SelectByType ((* types .VirtualDisk )(nil ))[0 ].(* types.VirtualDisk )
204- disk .CapacityInKB = int64 (vmContext .VSphereVM .Spec .DiskGiB ) * 1024 * 1024
205-
206- if err := createVM (ctx , vmContext , []byte ("" ), "" ); err != nil {
207- t .Fatal (err )
208- }
209-
210- taskRef := types.ManagedObjectReference {
211- Type : morefTypeTask ,
212- Value : vmContext .VSphereVM .Status .TaskRef ,
213- }
214- vimClient , err := vim25 .NewClient (ctx , vmContext .Session .RoundTripper )
215- if err != nil {
216- t .Fatal ("could not make vim25 client" )
217- }
218- task := object .NewTask (vimClient , taskRef )
219- err = task .Wait (ctx )
220- if err != nil {
221- t .Fatalf ("error waiting for task: %v" , err )
222- }
223-
224- if model .Machine + 1 != model .Count ().Machine {
225- t .Error ("failed to clone VM" )
226- }
36+ t .Run ("Should create using canonical names" , func (t * testing.T ) {
37+ model := simulator .VPX ()
38+ model .Host = 0 // ClusterHost only
39+
40+ simr , err := vcsim .NewBuilder ().WithModel (model ).Build ()
41+ if err != nil {
42+ t .Fatalf ("unable to create simulator: %s" , err )
43+ }
44+ defer simr .Destroy ()
45+
46+ vmContext := fake .NewVMContext (ctx , fake .NewControllerManagerContext ())
47+ vmContext .VSphereVM .Spec .Server = simr .ServerURL ().Host
48+
49+ authSession , err := session .GetOrCreate (
50+ ctx ,
51+ session .NewParams ().
52+ WithServer (vmContext .VSphereVM .Spec .Server ).
53+ WithUserInfo (simr .Username (), simr .Password ()).
54+ WithDatacenter ("*" ))
55+ if err != nil {
56+ t .Fatal (err )
57+ }
58+ vmContext .Session = authSession
59+
60+ vmRef := simulator .Map .Any ("VirtualMachine" )
61+ vm , ok := vmRef .(* simulator.VirtualMachine )
62+ if ! ok {
63+ t .Fatal ("failed to get reference to an existing VM on the vcsim instance" )
64+ }
65+ vmContext .VSphereVM .Spec .Template = vm .Name
66+
67+ disk := object .VirtualDeviceList (vm .Config .Hardware .Device ).SelectByType ((* types .VirtualDisk )(nil ))[0 ].(* types.VirtualDisk )
68+ disk .CapacityInKB = int64 (vmContext .VSphereVM .Spec .DiskGiB ) * 1024 * 1024
69+
70+ if err := createVM (ctx , vmContext , []byte ("" ), "" ); err != nil {
71+ t .Fatal (err )
72+ }
73+
74+ taskRef := types.ManagedObjectReference {
75+ Type : morefTypeTask ,
76+ Value : vmContext .VSphereVM .Status .TaskRef ,
77+ }
78+ vimClient , err := vim25 .NewClient (ctx , vmContext .Session .RoundTripper )
79+ if err != nil {
80+ t .Fatal ("could not make vim25 client." )
81+ }
82+ task := object .NewTask (vimClient , taskRef )
83+ err = task .Wait (ctx )
84+ if err != nil {
85+ t .Fatal ("error waiting for task:" , err )
86+ }
87+
88+ if model .Machine + 1 != model .Count ().Machine {
89+ t .Error ("failed to clone vm" )
90+ }
91+ })
92+
93+ t .Run ("Should create using MOID" , func (t * testing.T ) {
94+ model := simulator .VPX ()
95+ model .Host = 0 // ClusterHost only
96+
97+ simr , err := vcsim .NewBuilder ().WithModel (model ).Build ()
98+ if err != nil {
99+ t .Fatalf ("unable to create simulator: %s" , err )
100+ }
101+ defer simr .Destroy ()
102+ vmContext := fake .NewVMContext (ctx , fake .NewControllerManagerContext ())
103+ vmContext .VSphereVM .Spec .Server = simr .ServerURL ().Host
104+ vmContext .VSphereVM .SetName ("otherthing" )
105+
106+ authSession , err := session .GetOrCreate (
107+ ctx ,
108+ session .NewParams ().
109+ WithServer (vmContext .VSphereVM .Spec .Server ).
110+ WithUserInfo (simr .Username (), simr .Password ()).
111+ WithDatacenter (simulator .Map .Any ("Datacenter" ).Reference ().String ()))
112+ if err != nil {
113+ t .Fatal (err )
114+ }
115+ vmContext .Session = authSession
116+
117+ vmRef := simulator .Map .Any ("VirtualMachine" )
118+ vm , ok := vmRef .(* simulator.VirtualMachine )
119+ if ! ok {
120+ t .Fatal ("failed to get reference to an existing VM on the vcsim instance" )
121+ }
122+ vmContext .VSphereVM .Spec .Template = vm .Name
123+
124+ vmContext .VSphereVM .Spec .Datacenter = simulator .Map .Any ("Datacenter" ).Reference ().String ()
125+ vmContext .VSphereVM .Spec .Datastore = simulator .Map .Any ("Datastore" ).Reference ().String ()
126+ vmContext .VSphereVM .Spec .Folder = simulator .Map .Any ("Folder" ).Reference ().String ()
127+ vmContext .VSphereVM .Spec .ResourcePool = simulator .Map .Any ("ResourcePool" ).Reference ().String ()
128+
129+ t .Logf ("creating using MOID. Datacenter: %s, Datastore: %s, Folder: %s, ResourcePool: %s" ,
130+ vmContext .VSphereVM .Spec .Datacenter ,
131+ vmContext .VSphereVM .Spec .Datastore ,
132+ vmContext .VSphereVM .Spec .Folder ,
133+ vmContext .VSphereVM .Spec .ResourcePool )
134+
135+ disk := object .VirtualDeviceList (vm .Config .Hardware .Device ).SelectByType ((* types .VirtualDisk )(nil ))[0 ].(* types.VirtualDisk )
136+ disk .CapacityInKB = int64 (vmContext .VSphereVM .Spec .DiskGiB ) * 1024 * 1024
137+
138+ if err := createVM (ctx , vmContext , []byte ("" ), "" ); err != nil {
139+ t .Fatal (err )
140+ }
141+
142+ taskRef := types.ManagedObjectReference {
143+ Type : morefTypeTask ,
144+ Value : vmContext .VSphereVM .Status .TaskRef ,
145+ }
146+ vimClient , err := vim25 .NewClient (ctx , vmContext .Session .RoundTripper )
147+ if err != nil {
148+ t .Fatal ("could not make vim25 client" )
149+ }
150+ task := object .NewTask (vimClient , taskRef )
151+ err = task .Wait (ctx )
152+ if err != nil {
153+ t .Fatal ("error waiting for task:" , err )
154+ }
155+
156+ if model .Machine + 1 != model .Count ().Machine {
157+ t .Error ("failed to clone vm" )
158+ }
159+ })
160+
161+ t .Run ("should create using mixed moid and canonical names" , func (t * testing.T ) {
162+ model := simulator .VPX ()
163+ model .Host = 0 // ClusterHost only
164+
165+ simr , err := vcsim .NewBuilder ().WithModel (model ).Build ()
166+ if err != nil {
167+ t .Fatalf ("unable to create simulator: %s" , err )
168+ }
169+ defer simr .Destroy ()
170+ vmContext := fake .NewVMContext (ctx , fake .NewControllerManagerContext ())
171+ vmContext .VSphereVM .Spec .Server = simr .ServerURL ().Host
172+
173+ authSession , err := session .GetOrCreate (
174+ ctx ,
175+ session .NewParams ().
176+ WithServer (vmContext .VSphereVM .Spec .Server ).
177+ WithUserInfo (simr .Username (), simr .Password ()).
178+ WithDatacenter (simulator .Map .Any ("Datacenter" ).Reference ().String ()))
179+ if err != nil {
180+ t .Fatal (err )
181+ }
182+ vmContext .Session = authSession
183+
184+ vmRef := simulator .Map .Any ("VirtualMachine" )
185+ vm , ok := vmRef .(* simulator.VirtualMachine )
186+ if ! ok {
187+ t .Fatal ("failed to get reference to an existing VM on the vcsim instance" )
188+ }
189+ vmContext .VSphereVM .Spec .Template = vm .Name
190+
191+ vmContext .VSphereVM .Spec .Datacenter = simulator .Map .Any ("Datacenter" ).Reference ().String ()
192+ vmContext .VSphereVM .Spec .Datastore = simulator .Map .Any ("Datastore" ).Entity ().Name
193+ vmContext .VSphereVM .Spec .Folder = simulator .Map .Any ("Folder" ).Reference ().String ()
194+ vmContext .VSphereVM .Spec .ResourcePool = simulator .Map .Any ("ResourcePool" ).Entity ().Name
195+
196+ t .Logf ("creating using mixed entries. Datacenter: %s, Datastore: %s, Folder: %s, ResourcePool: %s" ,
197+ vmContext .VSphereVM .Spec .Datacenter ,
198+ vmContext .VSphereVM .Spec .Datastore ,
199+ vmContext .VSphereVM .Spec .Folder ,
200+ vmContext .VSphereVM .Spec .ResourcePool )
201+
202+ disk := object .VirtualDeviceList (vm .Config .Hardware .Device ).SelectByType ((* types .VirtualDisk )(nil ))[0 ].(* types.VirtualDisk )
203+ disk .CapacityInKB = int64 (vmContext .VSphereVM .Spec .DiskGiB ) * 1024 * 1024
204+
205+ if err := createVM (ctx , vmContext , []byte ("" ), "" ); err != nil {
206+ t .Fatal (err )
207+ }
208+
209+ taskRef := types.ManagedObjectReference {
210+ Type : morefTypeTask ,
211+ Value : vmContext .VSphereVM .Status .TaskRef ,
212+ }
213+ vimClient , err := vim25 .NewClient (ctx , vmContext .Session .RoundTripper )
214+ if err != nil {
215+ t .Fatal ("could not make vim25 client" )
216+ }
217+ task := object .NewTask (vimClient , taskRef )
218+ err = task .Wait (ctx )
219+ if err != nil {
220+ t .Fatalf ("error waiting for task: %v" , err )
221+ }
222+
223+ if model .Machine + 1 != model .Count ().Machine {
224+ t .Error ("failed to clone VM" )
225+ }
226+ })
227227}
0 commit comments