talm

Форк
0
/
imported_version.go 
139 строк · 3.5 Кб
1
// Code generated by go run tools/import_commands.go --talos-version v1.7.1 version
2
// DO NOT EDIT.
3

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/.
7

8
package commands
9

10
import (
11
	"context"
12
	"fmt"
13
	"strings"
14

15
	"github.com/spf13/cobra"
16
	"google.golang.org/grpc"
17
	"google.golang.org/grpc/peer"
18
	"google.golang.org/protobuf/encoding/protojson"
19

20
	"github.com/siderolabs/talos/pkg/cli"
21
	"github.com/siderolabs/talos/pkg/machinery/client"
22
	"github.com/siderolabs/talos/pkg/machinery/version"
23
)
24

25
// versionCmdFlags represents the `talosctl version` command's flags.
26
var versionCmdFlags struct {
27
	clientOnly   bool
28
	shortVersion bool
29
	json         bool
30
	insecure     bool
31
	configFiles  []string
32
}
33

34
// versionCmd represents the `talosctl version` command.
35
var versionCmd = &cobra.Command{
36
	Use:   "version",
37
	Short: "Prints the version",
38
	Long:  ``,
39
	Args:  cobra.NoArgs,
40
	RunE: func(cmd *cobra.Command, args []string) error {
41
		if !versionCmdFlags.json {
42
			fmt.Println("Client:")
43
			if versionCmdFlags.shortVersion {
44
				version.PrintShortVersion()
45
			} else {
46
				version.PrintLongVersion()
47
			}
48

49
			// Exit early if we're only looking for client version
50
			if versionCmdFlags.clientOnly {
51
				return nil
52
			}
53

54
			fmt.Println("Server:")
55
		}
56

57
		if versionCmdFlags.insecure {
58
			return WithClientMaintenance(nil, cmdVersion)
59
		}
60

61
		return WithClient(cmdVersion)
62
	},
63
}
64

65
func cmdVersion(ctx context.Context, c *client.Client) error {
66
	var remotePeer peer.Peer
67

68
	resp, err := c.Version(ctx, grpc.Peer(&remotePeer))
69
	if err != nil {
70
		if resp == nil {
71
			return fmt.Errorf("error getting version: %s", err)
72
		}
73

74
		cli.Warning("%s", err)
75
	}
76

77
	defaultNode := client.AddrFromPeer(&remotePeer)
78

79
	for _, msg := range resp.Messages {
80
		node := defaultNode
81

82
		if msg.Metadata != nil {
83
			node = msg.Metadata.Hostname
84
		}
85

86
		if !versionCmdFlags.json {
87
			fmt.Printf("\t%s:        %s\n", "NODE", node)
88

89
			version.PrintLongVersionFromExisting(msg.Version)
90

91
			var enabledFeatures []string
92
			if msg.Features.GetRbac() {
93
				enabledFeatures = append(enabledFeatures, "RBAC")
94
			}
95

96
			fmt.Printf("\tEnabled:     %s\n", strings.Join(enabledFeatures, ", "))
97

98
			continue
99
		}
100

101
		b, err := protojson.Marshal(msg)
102
		if err != nil {
103
			return err
104
		}
105

106
		fmt.Printf("%s\n", b)
107
	}
108

109
	return nil
110
}
111

112
func init() {
113
	versionCmd.Flags().StringSliceVarP(&versionCmdFlags.configFiles,
114
		"file", "f", nil, "specify config files or patches in a YAML file (can specify multiple)",
115
	)
116
	versionCmd.PreRunE = func(cmd *cobra.
117
		Command, args []string) error {
118
		nodesFromArgs := len(GlobalArgs.Nodes) > 0
119
		endpointsFromArgs := len(GlobalArgs.
120
			Endpoints) > 0
121
		for _, configFile := range versionCmdFlags.configFiles {
122
			if err := processModelineAndUpdateGlobals(configFile, nodesFromArgs, endpointsFromArgs,
123
				false); err != nil {
124
				return err
125
			}
126
		}
127
		return nil
128
	}
129

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")
133

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"))
137

138
	addCommand(versionCmd)
139
}
140

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.