1
// Code generated by go run tools/import_commands.go --talos-version v1.7.1 version
4
// This Source Code Form is subject to the terms of the Mozilla Public
5
// License, v. 2.0. If a copy of the MPL was not distributed with this
6
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
15
"github.com/spf13/cobra"
16
"google.golang.org/grpc"
17
"google.golang.org/grpc/peer"
18
"google.golang.org/protobuf/encoding/protojson"
20
"github.com/siderolabs/talos/pkg/cli"
21
"github.com/siderolabs/talos/pkg/machinery/client"
22
"github.com/siderolabs/talos/pkg/machinery/version"
25
// versionCmdFlags represents the `talosctl version` command's flags.
26
var versionCmdFlags struct {
34
// versionCmd represents the `talosctl version` command.
35
var versionCmd = &cobra.Command{
37
Short: "Prints the version",
40
RunE: func(cmd *cobra.Command, args []string) error {
41
if !versionCmdFlags.json {
42
fmt.Println("Client:")
43
if versionCmdFlags.shortVersion {
44
version.PrintShortVersion()
46
version.PrintLongVersion()
49
// Exit early if we're only looking for client version
50
if versionCmdFlags.clientOnly {
54
fmt.Println("Server:")
57
if versionCmdFlags.insecure {
58
return WithClientMaintenance(nil, cmdVersion)
61
return WithClient(cmdVersion)
65
func cmdVersion(ctx context.Context, c *client.Client) error {
66
var remotePeer peer.Peer
68
resp, err := c.Version(ctx, grpc.Peer(&remotePeer))
71
return fmt.Errorf("error getting version: %s", err)
74
cli.Warning("%s", err)
77
defaultNode := client.AddrFromPeer(&remotePeer)
79
for _, msg := range resp.Messages {
82
if msg.Metadata != nil {
83
node = msg.Metadata.Hostname
86
if !versionCmdFlags.json {
87
fmt.Printf("\t%s: %s\n", "NODE", node)
89
version.PrintLongVersionFromExisting(msg.Version)
91
var enabledFeatures []string
92
if msg.Features.GetRbac() {
93
enabledFeatures = append(enabledFeatures, "RBAC")
96
fmt.Printf("\tEnabled: %s\n", strings.Join(enabledFeatures, ", "))
101
b, err := protojson.Marshal(msg)
106
fmt.Printf("%s\n", b)
113
versionCmd.Flags().StringSliceVarP(&versionCmdFlags.configFiles,
114
"file", "f", nil, "specify config files or patches in a YAML file (can specify multiple)",
116
versionCmd.PreRunE = func(cmd *cobra.
117
Command, args []string) error {
118
nodesFromArgs := len(GlobalArgs.Nodes) > 0
119
endpointsFromArgs := len(GlobalArgs.
121
for _, configFile := range versionCmdFlags.configFiles {
122
if err := processModelineAndUpdateGlobals(configFile, nodesFromArgs, endpointsFromArgs,
130
versionCmd.Flags().BoolVar(&versionCmdFlags.shortVersion, "short", false, "Print the short version")
131
versionCmd.Flags().BoolVar(&versionCmdFlags.clientOnly, "client", false, "Print client version only")
132
versionCmd.Flags().BoolVarP(&versionCmdFlags.insecure, "insecure", "i", false, "use Talos maintenance mode API")
134
// TODO remove when https://github.com/siderolabs/talos/issues/907 is implemented
135
versionCmd.Flags().BoolVar(&versionCmdFlags.json, "json", false, "")
136
cli.Should(versionCmd.Flags().MarkHidden("json"))
138
addCommand(versionCmd)