github.com/vmware/govmomi@v0.51.0/cli/host/autostart/add.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 autostart
     6  
     7  import (
     8  	"context"
     9  	"flag"
    10  	"fmt"
    11  	"strings"
    12  
    13  	"github.com/vmware/govmomi/cli"
    14  	"github.com/vmware/govmomi/cli/flags"
    15  	"github.com/vmware/govmomi/vim25/types"
    16  )
    17  
    18  type add struct {
    19  	*AutostartFlag
    20  	// from types.AutoStartPowerInfo
    21  	StartOrder       int32
    22  	StartDelay       int32
    23  	WaitForHeartbeat string
    24  	StartAction      string
    25  	StopDelay        int32
    26  	StopAction       string
    27  }
    28  
    29  func init() {
    30  	cli.Register("host.autostart.add", &add{})
    31  }
    32  
    33  var waitHeartbeatTypes = types.AutoStartWaitHeartbeatSetting("").Strings()
    34  
    35  func (cmd *add) Register(ctx context.Context, f *flag.FlagSet) {
    36  	cmd.AutostartFlag, ctx = newAutostartFlag(ctx)
    37  	cmd.AutostartFlag.Register(ctx, f)
    38  
    39  	cmd.StartOrder = -1
    40  	cmd.StartDelay = -1
    41  	cmd.StopDelay = -1
    42  	f.Var(flags.NewInt32(&cmd.StartOrder), "start-order", "Start Order")
    43  	f.Var(flags.NewInt32(&cmd.StartDelay), "start-delay", "Start Delay")
    44  	f.Var(flags.NewInt32(&cmd.StopDelay), "stop-delay", "Stop Delay")
    45  	f.StringVar(&cmd.StartAction, "start-action", "powerOn", "Start Action")
    46  	f.StringVar(&cmd.StopAction, "stop-action", "systemDefault", "Stop Action")
    47  	f.StringVar(&cmd.WaitForHeartbeat, "wait", string(types.AutoStartWaitHeartbeatSettingSystemDefault),
    48  		fmt.Sprintf("Wait for Hearbeat Setting (%s)", strings.Join(waitHeartbeatTypes, "|")))
    49  }
    50  
    51  func (cmd *add) Process(ctx context.Context) error {
    52  	if err := cmd.AutostartFlag.Process(ctx); err != nil {
    53  		return err
    54  	}
    55  	return nil
    56  }
    57  
    58  func (cmd *add) Usage() string {
    59  	return "VM..."
    60  }
    61  
    62  func (cmd *add) Run(ctx context.Context, f *flag.FlagSet) error {
    63  	powerInfo := types.AutoStartPowerInfo{
    64  		StartOrder:       cmd.StartOrder,
    65  		StartDelay:       cmd.StartDelay,
    66  		WaitForHeartbeat: types.AutoStartWaitHeartbeatSetting(cmd.WaitForHeartbeat),
    67  		StartAction:      cmd.StartAction,
    68  		StopDelay:        cmd.StopDelay,
    69  		StopAction:       cmd.StopAction,
    70  	}
    71  	return cmd.ReconfigureVMs(f.Args(), powerInfo)
    72  }