github.com/vmware/govmomi@v0.51.0/cli/vcsa/shutdown/reboot.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 shutdown
     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/appliance/shutdown"
    14  )
    15  
    16  type reboot struct {
    17  	*flags.ClientFlag
    18  
    19  	reason string
    20  	delay  int // in minutes
    21  }
    22  
    23  func init() {
    24  	cli.Register("vcsa.shutdown.reboot", &reboot{})
    25  }
    26  
    27  func (cmd *reboot) Register(ctx context.Context, f *flag.FlagSet) {
    28  	cmd.ClientFlag, ctx = flags.NewClientFlag(ctx)
    29  	cmd.ClientFlag.Register(ctx, f)
    30  
    31  	var now int
    32  	f.IntVar(&cmd.delay,
    33  		"delay",
    34  		now,
    35  		"Minutes after which reboot should start.")
    36  }
    37  
    38  func (cmd *reboot) Process(ctx context.Context) error {
    39  	if err := cmd.ClientFlag.Process(ctx); err != nil {
    40  		return err
    41  	}
    42  	return nil
    43  }
    44  
    45  func (cmd *reboot) Usage() string {
    46  	return "REASON"
    47  }
    48  
    49  func (cmd *reboot) Description() string {
    50  	return `Reboot the appliance.
    51  
    52  Note: This command requires vCenter 7.0.2 or higher.
    53  
    54  Examples:
    55  govc vcsa.shutdown.reboot -delay 10 "rebooting for maintenance"`
    56  }
    57  
    58  func (cmd *reboot) Run(ctx context.Context, f *flag.FlagSet) error {
    59  	if f.NArg() != 1 {
    60  		return flag.ErrHelp
    61  	}
    62  
    63  	c, err := cmd.RestClient()
    64  	if err != nil {
    65  		return err
    66  	}
    67  
    68  	m := shutdown.NewManager(c)
    69  
    70  	if err = m.Reboot(ctx, f.Arg(0), cmd.delay); err != nil {
    71  		return err
    72  	}
    73  
    74  	return nil
    75  }