github.com/vmware/govmomi@v0.51.0/vsan/client_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 vsan 6 7 import ( 8 "context" 9 "os" 10 "testing" 11 12 "github.com/dougm/pretty" 13 14 "github.com/vmware/govmomi" 15 "github.com/vmware/govmomi/find" 16 "github.com/vmware/govmomi/vim25/soap" 17 "github.com/vmware/govmomi/vsan/types" 18 ) 19 20 func TestClient(t *testing.T) { 21 url := os.Getenv("VC_URL") // example: export VC_URL='https://username:password@vc-ip/sdk' 22 datacenter := os.Getenv("DATACENTER") // example: export DATACENTER='name-of-datacenter' 23 if url == "" || datacenter == "" { 24 t.Skip("VC_URL or DATACENTER is not set") 25 } 26 27 u, err := soap.ParseURL(url) 28 if err != nil { 29 t.Fatal(err) 30 } 31 ctx := context.Background() 32 33 c, err := govmomi.NewClient(ctx, u, true) 34 if err != nil { 35 t.Fatal(err) 36 } 37 38 vsanHealthClient, err := NewClient(ctx, c.Client) 39 if err != nil { 40 t.Fatal(err) 41 } 42 43 finder := find.NewFinder(c.Client, false) 44 dc, err := finder.Datacenter(ctx, datacenter) 45 if err != nil { 46 t.Fatal(err) 47 } 48 finder.SetDatacenter(dc) 49 50 clusterComputeResource, err := finder.ClusterComputeResourceList(ctx, "*") 51 if err != nil { 52 t.Logf("Error occurred while getting clusterComputeResource %+v", err.Error()) 53 t.Fatal(err) 54 } 55 56 isFileServiceEnabled := false 57 var clusterConfigToPrint *types.VsanConfigInfoEx 58 for _, cluster := range clusterComputeResource { 59 clusterConfig, err := vsanHealthClient.VsanClusterGetConfig(ctx, cluster.Reference()) 60 if err != nil { 61 t.Logf("Error occurred: %+v", err.Error()) 62 t.Fatal(err) 63 } 64 if clusterConfig.FileServiceConfig.Enabled { 65 clusterConfigToPrint = clusterConfig 66 isFileServiceEnabled = true 67 } 68 } 69 if isFileServiceEnabled { 70 t.Logf("Printing one of the clusterConfig where file service is enabled:\n %+v", pretty.Sprint(clusterConfigToPrint)) 71 } 72 73 hosts, _ := finder.HostSystemList(ctx, "*") 74 if err != nil { 75 t.Logf("Error occurred while getting hostSystem %+v", err.Error()) 76 t.Fatal(err) 77 } 78 79 for _, host := range hosts { 80 vsanSystem, _ := host.ConfigManager().VsanInternalSystem(ctx) 81 if err != nil { 82 t.Logf("Error occurred: %+v", err.Error()) 83 t.Fatal(err) 84 } 85 hostConfig, err := vsanHealthClient.VsanHostGetConfig(ctx, vsanSystem.Reference()) 86 if err != nil { 87 t.Logf("Error occurred: %+v", err.Error()) 88 t.Fatal(err) 89 } 90 t.Logf("Printing hostConfig:\n %+s", pretty.Sprint(hostConfig)) 91 } 92 } 93 94 func TestVsanQueryObjectIdentities(t *testing.T) { 95 url := os.Getenv("VC_URL") // example: export VC_URL='https://username:password@vc-ip/sdk' 96 datacenter := os.Getenv("DATACENTER") // example: export DATACENTER='name-of-datacenter' 97 if url == "" || datacenter == "" { 98 t.Skip("VC_URL or DATACENTER is not set") 99 } 100 101 u, err := soap.ParseURL(url) 102 if err != nil { 103 t.Fatal(err) 104 } 105 ctx := context.Background() 106 107 c, err := govmomi.NewClient(ctx, u, true) 108 if err != nil { 109 t.Fatal(err) 110 } 111 112 vsanHealthClient, err := NewClient(ctx, c.Client) 113 if err != nil { 114 t.Fatal(err) 115 } 116 117 finder := find.NewFinder(c.Client, false) 118 dc, err := finder.Datacenter(ctx, datacenter) 119 if err != nil { 120 t.Fatal(err) 121 } 122 finder.SetDatacenter(dc) 123 124 clusterComputeResource, err := finder.ClusterComputeResourceList(ctx, "*") 125 126 if err != nil { 127 t.Logf("Error occurred while getting clusterComputeResource %+v", err.Error()) 128 t.Fatal(err) 129 } 130 131 for _, cluster := range clusterComputeResource { 132 clusterConfig, err := vsanHealthClient.VsanQueryObjectIdentities(ctx, cluster.Reference()) 133 if err != nil { 134 t.Logf("Error occurred: %+v", err.Error()) 135 t.Fatal(err) 136 } 137 t.Logf("Printing clusterConfig:\n %+s", pretty.Sprint(clusterConfig)) 138 } 139 140 }