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  }