
This change introduces the remote command. The remote command will be used to control the power of remote nodes and eventually include the "bootstrap remotedirect" functionality. This change is merely an outline of the command. No functionality is included in this change. Closes #117 Change-Id: I3291405f36d6a7acc5c8c1f07bd90ad9c2986cd3 Signed-off-by: Drew Walters <andrew.walters@att.com>
65 lines
2.2 KiB
Go
65 lines
2.2 KiB
Go
package cmd
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
// Import to initialize client auth plugins.
|
|
_ "k8s.io/client-go/plugin/pkg/client/auth"
|
|
|
|
"opendev.org/airship/airshipctl/cmd/bootstrap"
|
|
"opendev.org/airship/airshipctl/cmd/cluster"
|
|
"opendev.org/airship/airshipctl/cmd/completion"
|
|
"opendev.org/airship/airshipctl/cmd/config"
|
|
"opendev.org/airship/airshipctl/cmd/document"
|
|
"opendev.org/airship/airshipctl/cmd/remote"
|
|
"opendev.org/airship/airshipctl/cmd/secret"
|
|
"opendev.org/airship/airshipctl/pkg/environment"
|
|
"opendev.org/airship/airshipctl/pkg/log"
|
|
)
|
|
|
|
// NewAirshipCTLCommand creates a root `airshipctl` command with the default commands attached
|
|
func NewAirshipCTLCommand(out io.Writer) (*cobra.Command, *environment.AirshipCTLSettings, error) {
|
|
rootCmd, settings, err := NewRootCmd(out)
|
|
return AddDefaultAirshipCTLCommands(rootCmd, settings), settings, err
|
|
}
|
|
|
|
// NewRootCmd creates the root `airshipctl` command. All other commands are
|
|
// subcommands branching from this one
|
|
func NewRootCmd(out io.Writer) (*cobra.Command, *environment.AirshipCTLSettings, error) {
|
|
settings := &environment.AirshipCTLSettings{}
|
|
rootCmd := &cobra.Command{
|
|
Use: "airshipctl",
|
|
Short: "airshipctl is a unified entrypoint to various airship components",
|
|
SilenceErrors: true,
|
|
SilenceUsage: true,
|
|
PersistentPreRun: func(cmd *cobra.Command, args []string) {
|
|
log.Init(settings.Debug, cmd.OutOrStderr())
|
|
|
|
// Load or Initialize airship Config
|
|
settings.InitConfig()
|
|
},
|
|
}
|
|
rootCmd.SetOut(out)
|
|
rootCmd.AddCommand(NewVersionCommand())
|
|
|
|
settings.InitFlags(rootCmd)
|
|
|
|
return rootCmd, settings, nil
|
|
}
|
|
|
|
// AddDefaultAirshipCTLCommands is a convenience function for adding all of the
|
|
// default commands to airshipctl
|
|
func AddDefaultAirshipCTLCommands(cmd *cobra.Command, settings *environment.AirshipCTLSettings) *cobra.Command {
|
|
cmd.AddCommand(bootstrap.NewBootstrapCommand(settings))
|
|
cmd.AddCommand(cluster.NewClusterCommand(settings))
|
|
cmd.AddCommand(completion.NewCompletionCommand())
|
|
cmd.AddCommand(document.NewDocumentCommand(settings))
|
|
cmd.AddCommand(config.NewConfigCommand(settings))
|
|
cmd.AddCommand(remote.NewRemoteCommand(settings))
|
|
cmd.AddCommand(secret.NewSecretCommand())
|
|
|
|
return cmd
|
|
}
|