github.com/vmware/govmomi@v0.51.0/test/functional/issue_242_test.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 functional 6 7 import ( 8 "context" 9 "fmt" 10 "testing" 11 "time" 12 13 "github.com/vmware/govmomi/object" 14 "github.com/vmware/govmomi/property" 15 "github.com/vmware/govmomi/vim25/mo" 16 "github.com/vmware/govmomi/vim25/types" 17 ) 18 19 func TestIssue242(t *testing.T) { 20 ctx, cancel := context.WithCancel(context.Background()) 21 defer cancel() 22 23 h := NewHelper(t) 24 defer h.Teardown() 25 26 h.RequireVirtualCenter() 27 28 df, err := h.Datacenter().Folders(ctx) 29 if err != nil { 30 t.Fatal(err) 31 } 32 33 cr := h.ComputeResource() 34 35 // Get local datastores for compute resource 36 dss, err := h.LocalDatastores(ctx, cr) 37 if err != nil { 38 t.Fatal(err) 39 } 40 if len(dss) == 0 { 41 t.Fatalf("No local datastores") 42 } 43 44 // Get root resource pool for compute resource 45 rp, err := cr.ResourcePool(ctx) 46 if err != nil { 47 t.Fatal(err) 48 } 49 50 spec := types.VirtualMachineConfigSpec{ 51 Name: fmt.Sprintf("govmomi-test-%s", time.Now().Format(time.RFC3339)), 52 Files: &types.VirtualMachineFileInfo{VmPathName: fmt.Sprintf("[%s]", dss[0].Name())}, 53 NumCPUs: 1, 54 MemoryMB: 32, 55 } 56 57 // Create new VM 58 task, err := df.VmFolder.CreateVM(context.Background(), spec, rp, nil) 59 if err != nil { 60 t.Fatal(err) 61 } 62 63 info, err := task.WaitForResult(context.Background(), nil) 64 if err != nil { 65 t.Fatal(err) 66 } 67 68 vm := object.NewVirtualMachine(h.c, info.Result.(types.ManagedObjectReference)) 69 defer func() { 70 task, err := vm.Destroy(context.Background()) 71 if err != nil { 72 panic(err) 73 } 74 err = task.Wait(context.Background()) 75 if err != nil { 76 panic(err) 77 } 78 }() 79 80 // Mark VM as template 81 err = vm.MarkAsTemplate(context.Background()) 82 if err != nil { 83 t.Fatal(err) 84 } 85 86 // Get "environmentBrowser" property for VM template 87 var mvm mo.VirtualMachine 88 err = property.DefaultCollector(h.c).RetrieveOne(ctx, vm.Reference(), []string{"environmentBrowser"}, &mvm) 89 if err != nil { 90 t.Fatal(err) 91 } 92 }