mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-11-04 12:37:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package command
 | 
						|
 | 
						|
import (
 | 
						|
	"flag"
 | 
						|
	"fmt"
 | 
						|
	"strings"
 | 
						|
 | 
						|
	"github.com/mitchellh/cli"
 | 
						|
	"github.com/posener/complete"
 | 
						|
)
 | 
						|
 | 
						|
var (
 | 
						|
	_ cli.Command             = (*OperatorRaftAutopilotStateCommand)(nil)
 | 
						|
	_ cli.CommandAutocomplete = (*OperatorRaftAutopilotStateCommand)(nil)
 | 
						|
)
 | 
						|
 | 
						|
type OperatorRaftAutopilotStateCommand struct {
 | 
						|
	*BaseCommand
 | 
						|
}
 | 
						|
 | 
						|
func (c *OperatorRaftAutopilotStateCommand) Synopsis() string {
 | 
						|
	return "Displays the state of the raft cluster under integrated storage as seen by autopilot"
 | 
						|
}
 | 
						|
 | 
						|
func (c *OperatorRaftAutopilotStateCommand) Help() string {
 | 
						|
	helpText := `
 | 
						|
Usage: vault operator raft autopilot state
 | 
						|
 | 
						|
  Displays the state of the raft cluster under integrated storage as seen by autopilot.
 | 
						|
` + c.Flags().Help()
 | 
						|
 | 
						|
	return strings.TrimSpace(helpText)
 | 
						|
}
 | 
						|
 | 
						|
func (c *OperatorRaftAutopilotStateCommand) Flags() *FlagSets {
 | 
						|
	set := c.flagSet(FlagSetHTTP | FlagSetOutputFormat)
 | 
						|
 | 
						|
	// The output of the state endpoint contains nested values and is not fit for
 | 
						|
	// the default "table" display format. Override the default display format to
 | 
						|
	// "pretty", both in the flag and in the UI.
 | 
						|
	set.mainSet.VisitAll(func(fl *flag.Flag) {
 | 
						|
		if fl.Name == "format" {
 | 
						|
			fl.DefValue = "pretty"
 | 
						|
		}
 | 
						|
	})
 | 
						|
	ui, ok := c.UI.(*VaultUI)
 | 
						|
	if ok && ui.format == "table" {
 | 
						|
		ui.format = "pretty"
 | 
						|
	}
 | 
						|
	return set
 | 
						|
}
 | 
						|
 | 
						|
func (c *OperatorRaftAutopilotStateCommand) AutocompleteArgs() complete.Predictor {
 | 
						|
	return complete.PredictAnything
 | 
						|
}
 | 
						|
 | 
						|
func (c *OperatorRaftAutopilotStateCommand) AutocompleteFlags() complete.Flags {
 | 
						|
	return c.Flags().Completions()
 | 
						|
}
 | 
						|
 | 
						|
func (c *OperatorRaftAutopilotStateCommand) Run(args []string) int {
 | 
						|
	f := c.Flags()
 | 
						|
 | 
						|
	if err := f.Parse(args); err != nil {
 | 
						|
		c.UI.Error(err.Error())
 | 
						|
		return 1
 | 
						|
	}
 | 
						|
 | 
						|
	args = f.Args()
 | 
						|
	switch len(args) {
 | 
						|
	case 0:
 | 
						|
	default:
 | 
						|
		c.UI.Error(fmt.Sprintf("Incorrect arguments (expected 0, got %d)", len(args)))
 | 
						|
		return 1
 | 
						|
	}
 | 
						|
 | 
						|
	client, err := c.Client()
 | 
						|
	if err != nil {
 | 
						|
		c.UI.Error(err.Error())
 | 
						|
		return 2
 | 
						|
	}
 | 
						|
 | 
						|
	state, err := client.Sys().RaftAutopilotState()
 | 
						|
	if err != nil {
 | 
						|
		c.UI.Error(fmt.Sprintf("Error checking autopilot state: %s", err))
 | 
						|
		return 2
 | 
						|
	}
 | 
						|
 | 
						|
	if state == nil {
 | 
						|
		return 0
 | 
						|
	}
 | 
						|
 | 
						|
	return OutputData(c.UI, state)
 | 
						|
}
 |