github.com/vmware/govmomi@v0.51.0/object/diagnostic_manager.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 object
     6  
     7  import (
     8  	"context"
     9  
    10  	"github.com/vmware/govmomi/vim25"
    11  	"github.com/vmware/govmomi/vim25/methods"
    12  	"github.com/vmware/govmomi/vim25/types"
    13  )
    14  
    15  type DiagnosticManager struct {
    16  	Common
    17  }
    18  
    19  func NewDiagnosticManager(c *vim25.Client) *DiagnosticManager {
    20  	m := DiagnosticManager{
    21  		Common: NewCommon(c, *c.ServiceContent.DiagnosticManager),
    22  	}
    23  
    24  	return &m
    25  }
    26  
    27  func (m DiagnosticManager) Log(ctx context.Context, host *HostSystem, key string) *DiagnosticLog {
    28  	return &DiagnosticLog{
    29  		m:    m,
    30  		Key:  key,
    31  		Host: host,
    32  	}
    33  }
    34  
    35  func (m DiagnosticManager) BrowseLog(ctx context.Context, host *HostSystem, key string, start, lines int32) (*types.DiagnosticManagerLogHeader, error) {
    36  	req := types.BrowseDiagnosticLog{
    37  		This:  m.Reference(),
    38  		Key:   key,
    39  		Start: start,
    40  		Lines: lines,
    41  	}
    42  
    43  	if host != nil {
    44  		ref := host.Reference()
    45  		req.Host = &ref
    46  	}
    47  
    48  	res, err := methods.BrowseDiagnosticLog(ctx, m.Client(), &req)
    49  	if err != nil {
    50  		return nil, err
    51  	}
    52  
    53  	return &res.Returnval, nil
    54  }
    55  
    56  func (m DiagnosticManager) GenerateLogBundles(ctx context.Context, includeDefault bool, host []*HostSystem) (*Task, error) {
    57  	req := types.GenerateLogBundles_Task{
    58  		This:           m.Reference(),
    59  		IncludeDefault: includeDefault,
    60  	}
    61  
    62  	for _, h := range host {
    63  		req.Host = append(req.Host, h.Reference())
    64  	}
    65  
    66  	res, err := methods.GenerateLogBundles_Task(ctx, m.c, &req)
    67  	if err != nil {
    68  		return nil, err
    69  	}
    70  
    71  	return NewTask(m.c, res.Returnval), nil
    72  }
    73  
    74  func (m DiagnosticManager) QueryDescriptions(ctx context.Context, host *HostSystem) ([]types.DiagnosticManagerLogDescriptor, error) {
    75  	req := types.QueryDescriptions{
    76  		This: m.Reference(),
    77  	}
    78  
    79  	if host != nil {
    80  		ref := host.Reference()
    81  		req.Host = &ref
    82  	}
    83  
    84  	res, err := methods.QueryDescriptions(ctx, m.Client(), &req)
    85  	if err != nil {
    86  		return nil, err
    87  	}
    88  
    89  	return res.Returnval, nil
    90  }