github.com/vmware/govmomi@v0.51.0/cli/namespace/cluster/logs.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 cluster 6 7 import ( 8 "context" 9 "flag" 10 11 "github.com/vmware/govmomi/cli" 12 "github.com/vmware/govmomi/cli/flags" 13 "github.com/vmware/govmomi/vapi/namespace" 14 ) 15 16 type logs struct { 17 *flags.ClusterFlag 18 } 19 20 func init() { 21 cli.Register("namespace.logs.download", &logs{}) 22 } 23 24 func (cmd *logs) Register(ctx context.Context, f *flag.FlagSet) { 25 cmd.ClusterFlag, ctx = flags.NewClusterFlag(ctx) 26 cmd.ClusterFlag.Register(ctx, f) 27 } 28 29 func (cmd *logs) Usage() string { 30 return "[NAME]" 31 } 32 33 func (cmd *logs) Description() string { 34 return `Download namespace cluster support bundle. 35 36 If NAME name is "-", bundle is written to stdout. 37 38 See also: govc logs.download 39 40 Examples: 41 govc namespace.logs.download -cluster k8s 42 govc namespace.logs.download -cluster k8s - | tar -xvf - 43 govc namespace.logs.download -cluster k8s logs.tar` 44 } 45 46 func (cmd *logs) Run(ctx context.Context, f *flag.FlagSet) error { 47 c, err := cmd.RestClient() 48 if err != nil { 49 return err 50 } 51 52 cluster, err := cmd.Cluster() 53 if err != nil { 54 return err 55 } 56 57 id := cluster.Reference().Value 58 59 name := f.Arg(0) 60 61 m := namespace.NewManager(c) 62 63 bundle, err := m.CreateSupportBundle(ctx, id) 64 if err != nil { 65 return err 66 } 67 68 req, err := m.SupportBundleRequest(ctx, bundle) 69 if err != nil { 70 return err 71 } 72 73 if id := c.SessionID(); id != "" { 74 req.Header.Set("vmware-api-session-id", id) 75 } 76 77 return c.DownloadAttachment(ctx, req, name) 78 }