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 }