From e664362cecb476a41360143a05c0cfad718b2e0f Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Tue, 30 Mar 2021 23:27:10 +0300 Subject: [PATCH] feat: add API and command to save etcd snapshot (backup) This adds a simple API and `talosctl etcd snapshot` command to stream snapshot of etcd from one of the control plane nodes to the local file. Signed-off-by: Andrey Smirnov --- api/machine/machine.proto | 9 + cmd/talosctl/cmd/talos/etcd.go | 73 +- internal/app/apid/main.go | 1 + .../server/v1alpha1/v1alpha1_server.go | 33 + internal/integration/cli/etcd.go | 21 + pkg/machinery/api/machine/machine.pb.go | 1066 +++++++++-------- pkg/machinery/api/machine/machine_grpc.pb.go | 82 +- pkg/machinery/client/client.go | 10 + website/content/docs/v0.10/Reference/api.md | 14 + website/content/docs/v0.10/Reference/cli.md | 28 + 10 files changed, 827 insertions(+), 510 deletions(-) diff --git a/api/machine/machine.proto b/api/machine/machine.proto index ba30f4eff2..5a6f117b8d 100644 --- a/api/machine/machine.proto +++ b/api/machine/machine.proto @@ -30,6 +30,13 @@ service MachineService { returns (EtcdLeaveClusterResponse); rpc EtcdForfeitLeadership(EtcdForfeitLeadershipRequest) returns (EtcdForfeitLeadershipResponse); + + // EtcdSnapshot method creates etcd data snapshot (backup) from the local etcd instance + // and streams it back to the client. + // + // This method is available only on control plane nodes (which run etcd). + rpc EtcdSnapshot(EtcdSnapshotRequest) returns (stream common.Data); + rpc GenerateConfiguration(GenerateConfigurationRequest) returns (GenerateConfigurationResponse); rpc Hostname(google.protobuf.Empty) returns (HostnameResponse); @@ -762,6 +769,8 @@ message EtcdMemberList { } message EtcdMemberListResponse { repeated EtcdMemberList messages = 1; } +message EtcdSnapshotRequest {} + // rpc generateConfiguration message RouteConfig { diff --git a/cmd/talosctl/cmd/talos/etcd.go b/cmd/talosctl/cmd/talos/etcd.go index 27aa398364..c068ffe9ac 100644 --- a/cmd/talosctl/cmd/talos/etcd.go +++ b/cmd/talosctl/cmd/talos/etcd.go @@ -6,13 +6,17 @@ package talos import ( "context" + "crypto/sha256" "fmt" + "io" "os" "strings" + "sync" "text/tabwriter" "github.com/spf13/cobra" + "github.com/talos-systems/talos/cmd/talosctl/pkg/talos/helpers" "github.com/talos-systems/talos/pkg/cli" "github.com/talos-systems/talos/pkg/machinery/api/machine" "github.com/talos-systems/talos/pkg/machinery/client" @@ -117,7 +121,74 @@ var etcdMemberListCmd = &cobra.Command{ }, } +var etcdSnapshotCmd = &cobra.Command{ + Use: "snapshot ", + Short: "Stream snapshot of the etcd node to the path.", + Long: ``, + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + return WithClient(func(ctx context.Context, c *client.Client) error { + if err := helpers.FailIfMultiNodes(ctx, "etcd snapshot"); err != nil { + return err + } + + dbPath := args[0] + partPath := dbPath + ".part" + + defer os.RemoveAll(partPath) //nolint:errcheck + + dest, err := os.OpenFile(partPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o600) + if err != nil { + return fmt.Errorf("error creating temporary file: %w", err) + } + + defer dest.Close() //nolint:errcheck + + r, errCh, err := c.EtcdSnapshot(ctx, &machine.EtcdSnapshotRequest{}) + if err != nil { + return fmt.Errorf("error reading file: %w", err) + } + + defer r.Close() //nolint:errcheck + + var wg sync.WaitGroup + + wg.Add(1) + go func() { + defer wg.Done() + for err := range errCh { + fmt.Fprintln(os.Stderr, err.Error()) + } + }() + + defer wg.Wait() + + size, err := io.Copy(dest, r) + if err != nil { + return fmt.Errorf("error reading: %w", err) + } + + if err = dest.Sync(); err != nil { + return fmt.Errorf("failed to fsync: %w", err) + } + + // this check is from https://github.com/etcd-io/etcd/blob/client/v3.5.0-alpha.0/client/v3/snapshot/v3_snapshot.go#L46 + if (size % 512) != sha256.Size { + return fmt.Errorf("sha256 checksum not found (size %d)", size) + } + + if err = os.Rename(partPath, dbPath); err != nil { + return fmt.Errorf("error renaming to final location: %w", err) + } + + fmt.Printf("etcd snapshot saved to %q (%d bytes)\n", dbPath, size) + + return nil + }) + }, +} + func init() { - etcdCmd.AddCommand(etcdLeaveCmd, etcdForfeitLeadershipCmd, etcdMemberListCmd, etcdMemberRemoveCmd) + etcdCmd.AddCommand(etcdLeaveCmd, etcdForfeitLeadershipCmd, etcdMemberListCmd, etcdMemberRemoveCmd, etcdSnapshotCmd) addCommand(etcdCmd) } diff --git a/internal/app/apid/main.go b/internal/app/apid/main.go index 0771abddcb..0a39995b6e 100644 --- a/internal/app/apid/main.go +++ b/internal/app/apid/main.go @@ -83,6 +83,7 @@ func Main() { "/machine.MachineService/Copy", "/machine.MachineService/DiskUsage", "/machine.MachineService/Dmesg", + "/machine.MachineService/EtcdSnapshot", "/machine.MachineService/Events", "/machine.MachineService/Kubeconfig", "/machine.MachineService/List", diff --git a/internal/app/machined/internal/server/v1alpha1/v1alpha1_server.go b/internal/app/machined/internal/server/v1alpha1/v1alpha1_server.go index 8f3e7f11da..836146e6ef 100644 --- a/internal/app/machined/internal/server/v1alpha1/v1alpha1_server.go +++ b/internal/app/machined/internal/server/v1alpha1/v1alpha1_server.go @@ -1785,6 +1785,39 @@ func (s *Server) EtcdForfeitLeadership(ctx context.Context, in *machine.EtcdForf return reply, nil } +// EtcdSnapshot implements the machine.MachineServer interface. +func (s *Server) EtcdSnapshot(in *machine.EtcdSnapshotRequest, srv machine.MachineService_EtcdSnapshotServer) error { + client, err := etcd.NewLocalClient() + if err != nil { + return fmt.Errorf("failed to create etcd client: %w", err) + } + + //nolint:errcheck + defer client.Close() + + rd, err := client.Snapshot(srv.Context()) + if err != nil { + return fmt.Errorf("failed reading etcd snapshot: %w", err) + } + + ctx, cancel := context.WithCancel(srv.Context()) + defer cancel() + + chunker := stream.NewChunker(ctx, rd) + chunkCh := chunker.Read() + + for data := range chunkCh { + err := srv.SendMsg(&common.Data{Bytes: data}) + if err != nil { + cancel() + + return err + } + } + + return nil +} + // RemoveBootkubeInitializedKey implements machine.MachineService. // // Temporary API only used when converting from self-hosted to Talos-managed control plane. diff --git a/internal/integration/cli/etcd.go b/internal/integration/cli/etcd.go index 675c978699..ce7f879cba 100644 --- a/internal/integration/cli/etcd.go +++ b/internal/integration/cli/etcd.go @@ -7,6 +7,11 @@ package cli import ( + "io/ioutil" + "os" + "path/filepath" + "regexp" + "github.com/talos-systems/talos/internal/integration/base" "github.com/talos-systems/talos/pkg/machinery/config/types/v1alpha1/machine" ) @@ -39,6 +44,22 @@ func (suite *EtcdSuite) TestForfeitLeadership() { ) } +// TestSnapshot tests etcd snapshot (backup). +func (suite *EtcdSuite) TestSnapshot() { + tempDir, err := ioutil.TempDir("", "talos") + suite.Require().NoError(err) + + defer func() { + suite.Assert().NoError(os.RemoveAll(tempDir)) + }() + + dbPath := filepath.Join(tempDir, "snapshot.db") + + suite.RunCLI([]string{"etcd", "snapshot", dbPath, "--nodes", suite.RandomDiscoveredNode(machine.TypeControlPlane)}, + base.StdoutShouldMatch(regexp.MustCompile(`etcd snapshot saved to .+\d+ bytes.+`)), + ) +} + func init() { allSuites = append(allSuites, new(EtcdSuite)) } diff --git a/pkg/machinery/api/machine/machine.pb.go b/pkg/machinery/api/machine/machine.pb.go index 509ecdc9e6..136617ea28 100644 --- a/pkg/machinery/api/machine/machine.pb.go +++ b/pkg/machinery/api/machine/machine.pb.go @@ -379,7 +379,7 @@ func (x MachineConfig_MachineType) Number() protoreflect.EnumNumber { // Deprecated: Use MachineConfig_MachineType.Descriptor instead. func (MachineConfig_MachineType) EnumDescriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{116, 0} + return file_machine_machine_proto_rawDescGZIP(), []int{117, 0} } // rpc applyConfiguration @@ -7538,6 +7538,44 @@ func (x *EtcdMemberListResponse) GetMessages() []*EtcdMemberList { return nil } +type EtcdSnapshotRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *EtcdSnapshotRequest) Reset() { + *x = EtcdSnapshotRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_machine_machine_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EtcdSnapshotRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EtcdSnapshotRequest) ProtoMessage() {} + +func (x *EtcdSnapshotRequest) ProtoReflect() protoreflect.Message { + mi := &file_machine_machine_proto_msgTypes[111] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EtcdSnapshotRequest.ProtoReflect.Descriptor instead. +func (*EtcdSnapshotRequest) Descriptor() ([]byte, []int) { + return file_machine_machine_proto_rawDescGZIP(), []int{111} +} + type RouteConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -7551,7 +7589,7 @@ type RouteConfig struct { func (x *RouteConfig) Reset() { *x = RouteConfig{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[111] + mi := &file_machine_machine_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7564,7 +7602,7 @@ func (x *RouteConfig) String() string { func (*RouteConfig) ProtoMessage() {} func (x *RouteConfig) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[111] + mi := &file_machine_machine_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7577,7 +7615,7 @@ func (x *RouteConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use RouteConfig.ProtoReflect.Descriptor instead. func (*RouteConfig) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{111} + return file_machine_machine_proto_rawDescGZIP(), []int{112} } func (x *RouteConfig) GetNetwork() string { @@ -7612,7 +7650,7 @@ type DHCPOptionsConfig struct { func (x *DHCPOptionsConfig) Reset() { *x = DHCPOptionsConfig{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[112] + mi := &file_machine_machine_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7625,7 +7663,7 @@ func (x *DHCPOptionsConfig) String() string { func (*DHCPOptionsConfig) ProtoMessage() {} func (x *DHCPOptionsConfig) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[112] + mi := &file_machine_machine_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7638,7 +7676,7 @@ func (x *DHCPOptionsConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use DHCPOptionsConfig.ProtoReflect.Descriptor instead. func (*DHCPOptionsConfig) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{112} + return file_machine_machine_proto_rawDescGZIP(), []int{113} } func (x *DHCPOptionsConfig) GetRouteMetric() uint32 { @@ -7665,7 +7703,7 @@ type NetworkDeviceConfig struct { func (x *NetworkDeviceConfig) Reset() { *x = NetworkDeviceConfig{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[113] + mi := &file_machine_machine_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7678,7 +7716,7 @@ func (x *NetworkDeviceConfig) String() string { func (*NetworkDeviceConfig) ProtoMessage() {} func (x *NetworkDeviceConfig) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[113] + mi := &file_machine_machine_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7691,7 +7729,7 @@ func (x *NetworkDeviceConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use NetworkDeviceConfig.ProtoReflect.Descriptor instead. func (*NetworkDeviceConfig) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{113} + return file_machine_machine_proto_rawDescGZIP(), []int{114} } func (x *NetworkDeviceConfig) GetInterface() string { @@ -7755,7 +7793,7 @@ type NetworkConfig struct { func (x *NetworkConfig) Reset() { *x = NetworkConfig{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[114] + mi := &file_machine_machine_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7768,7 +7806,7 @@ func (x *NetworkConfig) String() string { func (*NetworkConfig) ProtoMessage() {} func (x *NetworkConfig) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[114] + mi := &file_machine_machine_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7781,7 +7819,7 @@ func (x *NetworkConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use NetworkConfig.ProtoReflect.Descriptor instead. func (*NetworkConfig) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{114} + return file_machine_machine_proto_rawDescGZIP(), []int{115} } func (x *NetworkConfig) GetHostname() string { @@ -7810,7 +7848,7 @@ type InstallConfig struct { func (x *InstallConfig) Reset() { *x = InstallConfig{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[115] + mi := &file_machine_machine_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7823,7 +7861,7 @@ func (x *InstallConfig) String() string { func (*InstallConfig) ProtoMessage() {} func (x *InstallConfig) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[115] + mi := &file_machine_machine_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7836,7 +7874,7 @@ func (x *InstallConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use InstallConfig.ProtoReflect.Descriptor instead. func (*InstallConfig) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{115} + return file_machine_machine_proto_rawDescGZIP(), []int{116} } func (x *InstallConfig) GetInstallDisk() string { @@ -7867,7 +7905,7 @@ type MachineConfig struct { func (x *MachineConfig) Reset() { *x = MachineConfig{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[116] + mi := &file_machine_machine_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7880,7 +7918,7 @@ func (x *MachineConfig) String() string { func (*MachineConfig) ProtoMessage() {} func (x *MachineConfig) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[116] + mi := &file_machine_machine_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7893,7 +7931,7 @@ func (x *MachineConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineConfig.ProtoReflect.Descriptor instead. func (*MachineConfig) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{116} + return file_machine_machine_proto_rawDescGZIP(), []int{117} } func (x *MachineConfig) GetType() MachineConfig_MachineType { @@ -7935,7 +7973,7 @@ type ControlPlaneConfig struct { func (x *ControlPlaneConfig) Reset() { *x = ControlPlaneConfig{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[117] + mi := &file_machine_machine_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7948,7 +7986,7 @@ func (x *ControlPlaneConfig) String() string { func (*ControlPlaneConfig) ProtoMessage() {} func (x *ControlPlaneConfig) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[117] + mi := &file_machine_machine_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7961,7 +7999,7 @@ func (x *ControlPlaneConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlPlaneConfig.ProtoReflect.Descriptor instead. func (*ControlPlaneConfig) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{117} + return file_machine_machine_proto_rawDescGZIP(), []int{118} } func (x *ControlPlaneConfig) GetEndpoint() string { @@ -7983,7 +8021,7 @@ type CNIConfig struct { func (x *CNIConfig) Reset() { *x = CNIConfig{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[118] + mi := &file_machine_machine_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7996,7 +8034,7 @@ func (x *CNIConfig) String() string { func (*CNIConfig) ProtoMessage() {} func (x *CNIConfig) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[118] + mi := &file_machine_machine_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8009,7 +8047,7 @@ func (x *CNIConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use CNIConfig.ProtoReflect.Descriptor instead. func (*CNIConfig) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{118} + return file_machine_machine_proto_rawDescGZIP(), []int{119} } func (x *CNIConfig) GetName() string { @@ -8038,7 +8076,7 @@ type ClusterNetworkConfig struct { func (x *ClusterNetworkConfig) Reset() { *x = ClusterNetworkConfig{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[119] + mi := &file_machine_machine_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8051,7 +8089,7 @@ func (x *ClusterNetworkConfig) String() string { func (*ClusterNetworkConfig) ProtoMessage() {} func (x *ClusterNetworkConfig) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[119] + mi := &file_machine_machine_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8064,7 +8102,7 @@ func (x *ClusterNetworkConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterNetworkConfig.ProtoReflect.Descriptor instead. func (*ClusterNetworkConfig) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{119} + return file_machine_machine_proto_rawDescGZIP(), []int{120} } func (x *ClusterNetworkConfig) GetDnsDomain() string { @@ -8095,7 +8133,7 @@ type ClusterConfig struct { func (x *ClusterConfig) Reset() { *x = ClusterConfig{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[120] + mi := &file_machine_machine_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8108,7 +8146,7 @@ func (x *ClusterConfig) String() string { func (*ClusterConfig) ProtoMessage() {} func (x *ClusterConfig) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[120] + mi := &file_machine_machine_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8121,7 +8159,7 @@ func (x *ClusterConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterConfig.ProtoReflect.Descriptor instead. func (*ClusterConfig) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{120} + return file_machine_machine_proto_rawDescGZIP(), []int{121} } func (x *ClusterConfig) GetName() string { @@ -8168,7 +8206,7 @@ type GenerateConfigurationRequest struct { func (x *GenerateConfigurationRequest) Reset() { *x = GenerateConfigurationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[121] + mi := &file_machine_machine_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8181,7 +8219,7 @@ func (x *GenerateConfigurationRequest) String() string { func (*GenerateConfigurationRequest) ProtoMessage() {} func (x *GenerateConfigurationRequest) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[121] + mi := &file_machine_machine_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8194,7 +8232,7 @@ func (x *GenerateConfigurationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateConfigurationRequest.ProtoReflect.Descriptor instead. func (*GenerateConfigurationRequest) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{121} + return file_machine_machine_proto_rawDescGZIP(), []int{122} } func (x *GenerateConfigurationRequest) GetConfigVersion() string { @@ -8239,7 +8277,7 @@ type GenerateConfiguration struct { func (x *GenerateConfiguration) Reset() { *x = GenerateConfiguration{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[122] + mi := &file_machine_machine_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8252,7 +8290,7 @@ func (x *GenerateConfiguration) String() string { func (*GenerateConfiguration) ProtoMessage() {} func (x *GenerateConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[122] + mi := &file_machine_machine_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8265,7 +8303,7 @@ func (x *GenerateConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateConfiguration.ProtoReflect.Descriptor instead. func (*GenerateConfiguration) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{122} + return file_machine_machine_proto_rawDescGZIP(), []int{123} } func (x *GenerateConfiguration) GetMetadata() *common.Metadata { @@ -8300,7 +8338,7 @@ type GenerateConfigurationResponse struct { func (x *GenerateConfigurationResponse) Reset() { *x = GenerateConfigurationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[123] + mi := &file_machine_machine_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8313,7 +8351,7 @@ func (x *GenerateConfigurationResponse) String() string { func (*GenerateConfigurationResponse) ProtoMessage() {} func (x *GenerateConfigurationResponse) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[123] + mi := &file_machine_machine_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8326,7 +8364,7 @@ func (x *GenerateConfigurationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateConfigurationResponse.ProtoReflect.Descriptor instead. func (*GenerateConfigurationResponse) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{123} + return file_machine_machine_proto_rawDescGZIP(), []int{124} } func (x *GenerateConfigurationResponse) GetMessages() []*GenerateConfiguration { @@ -8348,7 +8386,7 @@ type RemoveBootkubeInitializedKey struct { func (x *RemoveBootkubeInitializedKey) Reset() { *x = RemoveBootkubeInitializedKey{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[124] + mi := &file_machine_machine_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8361,7 +8399,7 @@ func (x *RemoveBootkubeInitializedKey) String() string { func (*RemoveBootkubeInitializedKey) ProtoMessage() {} func (x *RemoveBootkubeInitializedKey) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[124] + mi := &file_machine_machine_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8374,7 +8412,7 @@ func (x *RemoveBootkubeInitializedKey) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveBootkubeInitializedKey.ProtoReflect.Descriptor instead. func (*RemoveBootkubeInitializedKey) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{124} + return file_machine_machine_proto_rawDescGZIP(), []int{125} } func (x *RemoveBootkubeInitializedKey) GetMetadata() *common.Metadata { @@ -8395,7 +8433,7 @@ type RemoveBootkubeInitializedKeyResponse struct { func (x *RemoveBootkubeInitializedKeyResponse) Reset() { *x = RemoveBootkubeInitializedKeyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_machine_machine_proto_msgTypes[125] + mi := &file_machine_machine_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8408,7 +8446,7 @@ func (x *RemoveBootkubeInitializedKeyResponse) String() string { func (*RemoveBootkubeInitializedKeyResponse) ProtoMessage() {} func (x *RemoveBootkubeInitializedKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_machine_machine_proto_msgTypes[125] + mi := &file_machine_machine_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8421,7 +8459,7 @@ func (x *RemoveBootkubeInitializedKeyResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use RemoveBootkubeInitializedKeyResponse.ProtoReflect.Descriptor instead. func (*RemoveBootkubeInitializedKeyResponse) Descriptor() ([]byte, []int) { - return file_machine_machine_proto_rawDescGZIP(), []int{125} + return file_machine_machine_proto_rawDescGZIP(), []int{126} } func (x *RemoveBootkubeInitializedKeyResponse) GetMessages() []*RemoveBootkubeInitializedKey { @@ -9304,307 +9342,312 @@ var file_machine_machine_proto_rawDesc = []byte{ 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x73, 0x22, 0x59, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x22, 0x36, 0x0a, - 0x11, 0x44, 0x48, 0x43, 0x50, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x22, 0xf2, 0x01, 0x0a, 0x13, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1c, 0x0a, - 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, - 0x69, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x64, 0x72, 0x12, - 0x10, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6d, 0x74, - 0x75, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x68, 0x63, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x04, 0x64, 0x68, 0x63, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x12, 0x3d, 0x0a, - 0x0c, 0x64, 0x68, 0x63, 0x70, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x44, 0x48, - 0x43, 0x50, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x0b, 0x64, 0x68, 0x63, 0x70, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x06, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x22, 0x69, 0x0a, 0x0d, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x68, - 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, - 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x66, 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x66, 0x61, 0x63, 0x65, 0x73, 0x22, 0x57, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, - 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0xcb, - 0x02, 0x0a, 0x0d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, - 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, - 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2d, 0x0a, 0x12, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x65, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x55, 0x0a, 0x0b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, - 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, - 0x4e, 0x49, 0x54, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, - 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, - 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x03, 0x22, 0x30, 0x0a, 0x12, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x33, - 0x0a, 0x09, 0x43, 0x4e, 0x49, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, - 0x72, 0x6c, 0x73, 0x22, 0x68, 0x0a, 0x14, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x64, - 0x6e, 0x73, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x64, 0x6e, 0x73, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x6e, - 0x69, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x4e, 0x49, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x09, 0x63, 0x6e, 0x69, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xec, 0x01, - 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x3d, 0x0a, - 0x1b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, - 0x67, 0x5f, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x18, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x69, 0x6e, 0x67, 0x4f, 0x6e, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x73, 0x22, 0x84, 0x02, 0x0a, - 0x1c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, - 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x0e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x0d, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x0d, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x22, 0x7b, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x20, - 0x0a, 0x0b, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x22, 0x5b, 0x0a, 0x1d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x47, 0x65, + 0x65, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x45, 0x74, 0x63, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x59, 0x0a, 0x0b, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x22, 0x36, 0x0a, 0x11, 0x44, 0x48, 0x43, 0x50, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x22, 0xf2, 0x01, 0x0a, + 0x13, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x63, 0x69, 0x64, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x68, 0x63, 0x70, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x68, 0x63, 0x70, 0x12, 0x16, 0x0a, 0x06, + 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x67, + 0x6e, 0x6f, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x64, 0x68, 0x63, 0x70, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x44, 0x48, 0x43, 0x50, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x64, 0x68, 0x63, 0x70, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x73, 0x22, 0x69, 0x0a, 0x0d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3c, + 0x0a, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x22, 0x57, 0x0a, 0x0d, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, + 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x44, 0x69, 0x73, 0x6b, + 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0xcb, 0x02, 0x0a, 0x0d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, + 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x3d, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, + 0x0a, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2d, 0x0a, + 0x12, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x75, 0x62, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x65, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x55, 0x0a, 0x0b, + 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, + 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x4c, 0x41, + 0x4e, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4a, 0x4f, 0x49, + 0x4e, 0x10, 0x03, 0x22, 0x30, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, + 0x61, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x33, 0x0a, 0x09, 0x43, 0x4e, 0x49, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x6c, 0x73, 0x22, 0x68, 0x0a, 0x14, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x6e, 0x73, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x6e, 0x73, 0x44, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x6e, 0x69, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, + 0x43, 0x4e, 0x49, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x63, 0x6e, 0x69, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x22, 0xec, 0x01, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0d, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x12, 0x46, 0x0a, 0x0f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x3d, 0x0a, 0x1b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x4f, 0x6e, 0x4d, 0x61, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x22, 0x84, 0x02, 0x0a, 0x1c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x0e, 0x6d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x6d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x0d, 0x6f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6f, 0x76, + 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x7b, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x4c, 0x0a, - 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x74, 0x6b, 0x75, 0x62, 0x65, 0x49, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x2c, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x69, 0x0a, 0x24, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x74, 0x6b, 0x75, 0x62, 0x65, 0x49, 0x6e, 0x69, - 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x74, 0x6b, 0x75, 0x62, 0x65, 0x49, 0x6e, - 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x08, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x32, 0xe7, 0x14, 0x0a, 0x0e, 0x4d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5d, 0x0a, 0x12, 0x41, 0x70, 0x70, - 0x6c, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x22, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, - 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x42, 0x6f, 0x6f, 0x74, - 0x73, 0x74, 0x72, 0x61, 0x70, 0x12, 0x19, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, - 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1a, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x42, 0x6f, 0x6f, 0x74, 0x73, - 0x74, 0x72, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x2e, 0x6d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x43, 0x6f, 0x70, 0x79, 0x12, 0x14, 0x2e, 0x6d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x0c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x30, - 0x01, 0x12, 0x3b, 0x0a, 0x07, 0x43, 0x50, 0x55, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x43, - 0x50, 0x55, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, - 0x0a, 0x09, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x44, 0x69, - 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x2e, 0x0a, 0x05, 0x44, 0x6d, 0x65, 0x73, 0x67, 0x12, 0x15, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x2e, 0x44, 0x6d, 0x65, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x0c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x30, 0x01, 0x12, - 0x32, 0x0a, 0x06, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x6d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x0e, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x30, 0x01, 0x12, 0x51, 0x0a, 0x0e, 0x45, 0x74, 0x63, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, - 0x45, 0x74, 0x63, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, - 0x45, 0x74, 0x63, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x10, 0x45, 0x74, 0x63, 0x64, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x57, 0x0a, 0x10, 0x45, 0x74, 0x63, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x74, - 0x63, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, - 0x45, 0x74, 0x63, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x15, 0x45, 0x74, 0x63, 0x64, - 0x46, 0x6f, 0x72, 0x66, 0x65, 0x69, 0x74, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x12, 0x25, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x74, 0x63, 0x64, - 0x46, 0x6f, 0x72, 0x66, 0x65, 0x69, 0x74, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x46, 0x6f, 0x72, 0x66, 0x65, 0x69, 0x74, 0x4c, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x66, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x6d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x26, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x74, 0x61, 0x6c, 0x6f, + 0x73, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x5b, 0x0a, 0x1d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x48, 0x6f, 0x73, 0x74, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x6d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x4b, 0x75, 0x62, 0x65, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x30, 0x01, 0x12, 0x31, 0x0a, - 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x6d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x30, 0x01, - 0x12, 0x40, 0x0a, 0x09, 0x44, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x19, 0x2e, - 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x30, 0x01, 0x12, 0x3b, 0x0a, 0x07, 0x4c, 0x6f, 0x61, 0x64, 0x41, 0x76, 0x67, 0x12, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, - 0x4c, 0x6f, 0x61, 0x64, 0x41, 0x76, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x2c, 0x0a, 0x04, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x14, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x30, 0x01, 0x12, 0x39, 0x0a, - 0x06, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x17, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x4d, 0x6f, 0x75, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x22, 0x4c, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, + 0x6f, 0x74, 0x6b, 0x75, 0x62, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, + 0x64, 0x4b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x22, 0x69, 0x0a, 0x24, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x74, + 0x6b, 0x75, 0x62, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4b, + 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, + 0x74, 0x6b, 0x75, 0x62, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, + 0x4b, 0x65, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x32, 0xa5, 0x15, + 0x0a, 0x0e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x5d, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x42, 0x0a, 0x09, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x12, 0x19, 0x2e, 0x6d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x2e, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x73, 0x12, 0x1a, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x43, 0x6f, + 0x70, 0x79, 0x12, 0x14, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x70, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x30, 0x01, 0x12, 0x3b, 0x0a, 0x07, 0x43, 0x50, 0x55, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x6d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x50, 0x55, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x09, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x6d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x12, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x1a, 0x23, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x6d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, - 0x14, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x44, 0x6d, 0x65, 0x73, 0x67, 0x12, + 0x15, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x44, 0x6d, 0x65, 0x73, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x30, 0x01, 0x12, 0x32, 0x0a, 0x06, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x16, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, 0x51, 0x0a, 0x0e, 0x45, 0x74, + 0x63, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x6d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, + 0x10, 0x45, 0x74, 0x63, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x74, 0x63, 0x64, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x74, + 0x63, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x10, 0x45, 0x74, 0x63, 0x64, 0x4c, 0x65, + 0x61, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x66, 0x0a, 0x15, 0x45, 0x74, 0x63, 0x64, 0x46, 0x6f, 0x72, 0x66, 0x65, 0x69, 0x74, 0x4c, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x25, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x46, 0x6f, 0x72, 0x66, 0x65, 0x69, 0x74, 0x4c, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x26, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x46, 0x6f, + 0x72, 0x66, 0x65, 0x69, 0x74, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x45, 0x74, 0x63, 0x64, 0x53, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1c, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x30, 0x01, 0x12, 0x39, 0x0a, 0x06, 0x52, 0x65, 0x62, 0x6f, 0x6f, 0x74, 0x12, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x2e, 0x52, 0x65, 0x62, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3c, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x17, 0x2e, 0x6d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, - 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, - 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x18, 0x2e, 0x6d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, - 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x36, 0x0a, 0x05, 0x52, 0x65, 0x73, 0x65, 0x74, 0x12, 0x15, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x12, 0x17, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, - 0x6f, 0x6f, 0x74, 0x6b, 0x75, 0x62, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2d, 0x2e, - 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, - 0x6f, 0x74, 0x6b, 0x75, 0x62, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, - 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x0b, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x51, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x12, 0x1e, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x1c, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x70, - 0x12, 0x1b, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, - 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, - 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x53, - 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x74, 0x61, 0x30, 0x01, 0x12, 0x66, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, + 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, + 0x08, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x1a, 0x19, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x48, 0x6f, 0x73, 0x74, + 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x0a, + 0x4b, 0x75, 0x62, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x0c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x30, 0x01, 0x12, 0x31, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x2e, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x11, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x30, 0x01, 0x12, 0x40, 0x0a, 0x09, 0x44, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x19, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x44, 0x69, 0x73, + 0x6b, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x61, 0x67, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x30, 0x01, 0x12, 0x3b, 0x0a, 0x07, 0x4c, 0x6f, 0x61, 0x64, 0x41, + 0x76, 0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x41, 0x76, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x14, 0x2e, 0x6d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x30, 0x01, 0x12, 0x39, 0x0a, 0x06, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4d, + 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, + 0x06, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x19, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, - 0x77, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x12, 0x15, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, - 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, - 0x12, 0x17, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, + 0x17, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x12, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x42, 0x59, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x42, 0x0a, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x41, 0x70, 0x69, 0x50, - 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x61, - 0x6c, 0x6f, 0x73, 0x2d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x74, 0x61, 0x6c, 0x6f, - 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x72, 0x79, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x23, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x09, 0x50, + 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x1a, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, + 0x52, 0x65, 0x61, 0x64, 0x12, 0x14, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, + 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x30, 0x01, 0x12, 0x39, 0x0a, 0x06, 0x52, 0x65, + 0x62, 0x6f, 0x6f, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x6d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x62, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x17, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, + 0x18, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, + 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x52, 0x65, 0x73, 0x65, 0x74, 0x12, 0x15, 0x2e, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, + 0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, + 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x18, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x1c, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x74, 0x6b, 0x75, 0x62, 0x65, 0x49, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x2d, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x74, 0x6b, 0x75, 0x62, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1e, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1c, 0x2e, 0x6d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x1b, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3d, 0x0a, 0x08, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x53, + 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x36, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x15, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x53, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x53, 0x74, 0x61, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, + 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x55, 0x70, + 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x17, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, + 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, + 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x6d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x59, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0a, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x41, 0x70, 0x69, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, + 0x2f, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x72, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -9621,7 +9664,7 @@ func file_machine_machine_proto_rawDescGZIP() []byte { var ( file_machine_machine_proto_enumTypes = make([]protoimpl.EnumInfo, 7) - file_machine_machine_proto_msgTypes = make([]protoimpl.MessageInfo, 126) + file_machine_machine_proto_msgTypes = make([]protoimpl.MessageInfo, 127) file_machine_machine_proto_goTypes = []interface{}{ (SequenceEvent_Action)(0), // 0: machine.SequenceEvent.Action (PhaseEvent_Action)(0), // 1: machine.PhaseEvent.Action @@ -9741,224 +9784,227 @@ var ( (*EtcdMemberListRequest)(nil), // 115: machine.EtcdMemberListRequest (*EtcdMemberList)(nil), // 116: machine.EtcdMemberList (*EtcdMemberListResponse)(nil), // 117: machine.EtcdMemberListResponse - (*RouteConfig)(nil), // 118: machine.RouteConfig - (*DHCPOptionsConfig)(nil), // 119: machine.DHCPOptionsConfig - (*NetworkDeviceConfig)(nil), // 120: machine.NetworkDeviceConfig - (*NetworkConfig)(nil), // 121: machine.NetworkConfig - (*InstallConfig)(nil), // 122: machine.InstallConfig - (*MachineConfig)(nil), // 123: machine.MachineConfig - (*ControlPlaneConfig)(nil), // 124: machine.ControlPlaneConfig - (*CNIConfig)(nil), // 125: machine.CNIConfig - (*ClusterNetworkConfig)(nil), // 126: machine.ClusterNetworkConfig - (*ClusterConfig)(nil), // 127: machine.ClusterConfig - (*GenerateConfigurationRequest)(nil), // 128: machine.GenerateConfigurationRequest - (*GenerateConfiguration)(nil), // 129: machine.GenerateConfiguration - (*GenerateConfigurationResponse)(nil), // 130: machine.GenerateConfigurationResponse - (*RemoveBootkubeInitializedKey)(nil), // 131: machine.RemoveBootkubeInitializedKey - (*RemoveBootkubeInitializedKeyResponse)(nil), // 132: machine.RemoveBootkubeInitializedKeyResponse - (*common.Metadata)(nil), // 133: common.Metadata - (*common.Error)(nil), // 134: common.Error - (*anypb.Any)(nil), // 135: google.protobuf.Any - (*timestamppb.Timestamp)(nil), // 136: google.protobuf.Timestamp - (common.ContainerDriver)(0), // 137: common.ContainerDriver - (*emptypb.Empty)(nil), // 138: google.protobuf.Empty - (*common.Data)(nil), // 139: common.Data + (*EtcdSnapshotRequest)(nil), // 118: machine.EtcdSnapshotRequest + (*RouteConfig)(nil), // 119: machine.RouteConfig + (*DHCPOptionsConfig)(nil), // 120: machine.DHCPOptionsConfig + (*NetworkDeviceConfig)(nil), // 121: machine.NetworkDeviceConfig + (*NetworkConfig)(nil), // 122: machine.NetworkConfig + (*InstallConfig)(nil), // 123: machine.InstallConfig + (*MachineConfig)(nil), // 124: machine.MachineConfig + (*ControlPlaneConfig)(nil), // 125: machine.ControlPlaneConfig + (*CNIConfig)(nil), // 126: machine.CNIConfig + (*ClusterNetworkConfig)(nil), // 127: machine.ClusterNetworkConfig + (*ClusterConfig)(nil), // 128: machine.ClusterConfig + (*GenerateConfigurationRequest)(nil), // 129: machine.GenerateConfigurationRequest + (*GenerateConfiguration)(nil), // 130: machine.GenerateConfiguration + (*GenerateConfigurationResponse)(nil), // 131: machine.GenerateConfigurationResponse + (*RemoveBootkubeInitializedKey)(nil), // 132: machine.RemoveBootkubeInitializedKey + (*RemoveBootkubeInitializedKeyResponse)(nil), // 133: machine.RemoveBootkubeInitializedKeyResponse + (*common.Metadata)(nil), // 134: common.Metadata + (*common.Error)(nil), // 135: common.Error + (*anypb.Any)(nil), // 136: google.protobuf.Any + (*timestamppb.Timestamp)(nil), // 137: google.protobuf.Timestamp + (common.ContainerDriver)(0), // 138: common.ContainerDriver + (*emptypb.Empty)(nil), // 139: google.protobuf.Empty + (*common.Data)(nil), // 140: common.Data } ) var file_machine_machine_proto_depIdxs = []int32{ - 133, // 0: machine.ApplyConfiguration.metadata:type_name -> common.Metadata + 134, // 0: machine.ApplyConfiguration.metadata:type_name -> common.Metadata 8, // 1: machine.ApplyConfigurationResponse.messages:type_name -> machine.ApplyConfiguration - 133, // 2: machine.Reboot.metadata:type_name -> common.Metadata + 134, // 2: machine.Reboot.metadata:type_name -> common.Metadata 10, // 3: machine.RebootResponse.messages:type_name -> machine.Reboot - 133, // 4: machine.Bootstrap.metadata:type_name -> common.Metadata + 134, // 4: machine.Bootstrap.metadata:type_name -> common.Metadata 13, // 5: machine.BootstrapResponse.messages:type_name -> machine.Bootstrap 0, // 6: machine.SequenceEvent.action:type_name -> machine.SequenceEvent.Action - 134, // 7: machine.SequenceEvent.error:type_name -> common.Error + 135, // 7: machine.SequenceEvent.error:type_name -> common.Error 1, // 8: machine.PhaseEvent.action:type_name -> machine.PhaseEvent.Action 2, // 9: machine.TaskEvent.action:type_name -> machine.TaskEvent.Action 3, // 10: machine.ServiceStateEvent.action:type_name -> machine.ServiceStateEvent.Action 39, // 11: machine.ServiceStateEvent.health:type_name -> machine.ServiceHealth - 133, // 12: machine.Event.metadata:type_name -> common.Metadata - 135, // 13: machine.Event.data:type_name -> google.protobuf.Any + 134, // 12: machine.Event.metadata:type_name -> common.Metadata + 136, // 13: machine.Event.data:type_name -> google.protobuf.Any 22, // 14: machine.ResetRequest.system_partitions_to_wipe:type_name -> machine.ResetPartitionSpec - 133, // 15: machine.Reset.metadata:type_name -> common.Metadata + 134, // 15: machine.Reset.metadata:type_name -> common.Metadata 24, // 16: machine.ResetResponse.messages:type_name -> machine.Reset 4, // 17: machine.RecoverRequest.source:type_name -> machine.RecoverRequest.Source - 133, // 18: machine.Recover.metadata:type_name -> common.Metadata + 134, // 18: machine.Recover.metadata:type_name -> common.Metadata 27, // 19: machine.RecoverResponse.messages:type_name -> machine.Recover - 133, // 20: machine.Shutdown.metadata:type_name -> common.Metadata + 134, // 20: machine.Shutdown.metadata:type_name -> common.Metadata 29, // 21: machine.ShutdownResponse.messages:type_name -> machine.Shutdown - 133, // 22: machine.Upgrade.metadata:type_name -> common.Metadata + 134, // 22: machine.Upgrade.metadata:type_name -> common.Metadata 32, // 23: machine.UpgradeResponse.messages:type_name -> machine.Upgrade - 133, // 24: machine.ServiceList.metadata:type_name -> common.Metadata + 134, // 24: machine.ServiceList.metadata:type_name -> common.Metadata 36, // 25: machine.ServiceList.services:type_name -> machine.ServiceInfo 34, // 26: machine.ServiceListResponse.messages:type_name -> machine.ServiceList 37, // 27: machine.ServiceInfo.events:type_name -> machine.ServiceEvents 39, // 28: machine.ServiceInfo.health:type_name -> machine.ServiceHealth 38, // 29: machine.ServiceEvents.events:type_name -> machine.ServiceEvent - 136, // 30: machine.ServiceEvent.ts:type_name -> google.protobuf.Timestamp - 136, // 31: machine.ServiceHealth.last_change:type_name -> google.protobuf.Timestamp - 133, // 32: machine.ServiceStart.metadata:type_name -> common.Metadata + 137, // 30: machine.ServiceEvent.ts:type_name -> google.protobuf.Timestamp + 137, // 31: machine.ServiceHealth.last_change:type_name -> google.protobuf.Timestamp + 134, // 32: machine.ServiceStart.metadata:type_name -> common.Metadata 41, // 33: machine.ServiceStartResponse.messages:type_name -> machine.ServiceStart - 133, // 34: machine.ServiceStop.metadata:type_name -> common.Metadata + 134, // 34: machine.ServiceStop.metadata:type_name -> common.Metadata 44, // 35: machine.ServiceStopResponse.messages:type_name -> machine.ServiceStop - 133, // 36: machine.ServiceRestart.metadata:type_name -> common.Metadata + 134, // 36: machine.ServiceRestart.metadata:type_name -> common.Metadata 47, // 37: machine.ServiceRestartResponse.messages:type_name -> machine.ServiceRestart 5, // 38: machine.ListRequest.types:type_name -> machine.ListRequest.Type - 133, // 39: machine.FileInfo.metadata:type_name -> common.Metadata - 133, // 40: machine.DiskUsageInfo.metadata:type_name -> common.Metadata - 133, // 41: machine.Mounts.metadata:type_name -> common.Metadata + 134, // 39: machine.FileInfo.metadata:type_name -> common.Metadata + 134, // 40: machine.DiskUsageInfo.metadata:type_name -> common.Metadata + 134, // 41: machine.Mounts.metadata:type_name -> common.Metadata 60, // 42: machine.Mounts.stats:type_name -> machine.MountStat 58, // 43: machine.MountsResponse.messages:type_name -> machine.Mounts - 133, // 44: machine.Version.metadata:type_name -> common.Metadata + 134, // 44: machine.Version.metadata:type_name -> common.Metadata 63, // 45: machine.Version.version:type_name -> machine.VersionInfo 64, // 46: machine.Version.platform:type_name -> machine.PlatformInfo 61, // 47: machine.VersionResponse.messages:type_name -> machine.Version - 137, // 48: machine.LogsRequest.driver:type_name -> common.ContainerDriver - 133, // 49: machine.Rollback.metadata:type_name -> common.Metadata + 138, // 48: machine.LogsRequest.driver:type_name -> common.ContainerDriver + 134, // 49: machine.Rollback.metadata:type_name -> common.Metadata 68, // 50: machine.RollbackResponse.messages:type_name -> machine.Rollback - 137, // 51: machine.ContainersRequest.driver:type_name -> common.ContainerDriver - 133, // 52: machine.Container.metadata:type_name -> common.Metadata + 138, // 51: machine.ContainersRequest.driver:type_name -> common.ContainerDriver + 134, // 52: machine.Container.metadata:type_name -> common.Metadata 71, // 53: machine.Container.containers:type_name -> machine.ContainerInfo 72, // 54: machine.ContainersResponse.messages:type_name -> machine.Container 77, // 55: machine.ProcessesResponse.messages:type_name -> machine.Process - 133, // 56: machine.Process.metadata:type_name -> common.Metadata + 134, // 56: machine.Process.metadata:type_name -> common.Metadata 78, // 57: machine.Process.processes:type_name -> machine.ProcessInfo - 137, // 58: machine.RestartRequest.driver:type_name -> common.ContainerDriver - 133, // 59: machine.Restart.metadata:type_name -> common.Metadata + 138, // 58: machine.RestartRequest.driver:type_name -> common.ContainerDriver + 134, // 59: machine.Restart.metadata:type_name -> common.Metadata 80, // 60: machine.RestartResponse.messages:type_name -> machine.Restart - 137, // 61: machine.StatsRequest.driver:type_name -> common.ContainerDriver - 133, // 62: machine.Stats.metadata:type_name -> common.Metadata + 138, // 61: machine.StatsRequest.driver:type_name -> common.ContainerDriver + 134, // 62: machine.Stats.metadata:type_name -> common.Metadata 85, // 63: machine.Stats.stats:type_name -> machine.Stat 83, // 64: machine.StatsResponse.messages:type_name -> machine.Stats - 133, // 65: machine.Memory.metadata:type_name -> common.Metadata + 134, // 65: machine.Memory.metadata:type_name -> common.Metadata 88, // 66: machine.Memory.meminfo:type_name -> machine.MemInfo 86, // 67: machine.MemoryResponse.messages:type_name -> machine.Memory 90, // 68: machine.HostnameResponse.messages:type_name -> machine.Hostname - 133, // 69: machine.Hostname.metadata:type_name -> common.Metadata + 134, // 69: machine.Hostname.metadata:type_name -> common.Metadata 92, // 70: machine.LoadAvgResponse.messages:type_name -> machine.LoadAvg - 133, // 71: machine.LoadAvg.metadata:type_name -> common.Metadata + 134, // 71: machine.LoadAvg.metadata:type_name -> common.Metadata 94, // 72: machine.SystemStatResponse.messages:type_name -> machine.SystemStat - 133, // 73: machine.SystemStat.metadata:type_name -> common.Metadata + 134, // 73: machine.SystemStat.metadata:type_name -> common.Metadata 95, // 74: machine.SystemStat.cpu_total:type_name -> machine.CPUStat 95, // 75: machine.SystemStat.cpu:type_name -> machine.CPUStat 96, // 76: machine.SystemStat.soft_irq:type_name -> machine.SoftIRQStat 98, // 77: machine.CPUInfoResponse.messages:type_name -> machine.CPUsInfo - 133, // 78: machine.CPUsInfo.metadata:type_name -> common.Metadata + 134, // 78: machine.CPUsInfo.metadata:type_name -> common.Metadata 99, // 79: machine.CPUsInfo.cpu_info:type_name -> machine.CPUInfo 101, // 80: machine.NetworkDeviceStatsResponse.messages:type_name -> machine.NetworkDeviceStats - 133, // 81: machine.NetworkDeviceStats.metadata:type_name -> common.Metadata + 134, // 81: machine.NetworkDeviceStats.metadata:type_name -> common.Metadata 102, // 82: machine.NetworkDeviceStats.total:type_name -> machine.NetDev 102, // 83: machine.NetworkDeviceStats.devices:type_name -> machine.NetDev 104, // 84: machine.DiskStatsResponse.messages:type_name -> machine.DiskStats - 133, // 85: machine.DiskStats.metadata:type_name -> common.Metadata + 134, // 85: machine.DiskStats.metadata:type_name -> common.Metadata 105, // 86: machine.DiskStats.total:type_name -> machine.DiskStat 105, // 87: machine.DiskStats.devices:type_name -> machine.DiskStat - 133, // 88: machine.EtcdLeaveCluster.metadata:type_name -> common.Metadata + 134, // 88: machine.EtcdLeaveCluster.metadata:type_name -> common.Metadata 107, // 89: machine.EtcdLeaveClusterResponse.messages:type_name -> machine.EtcdLeaveCluster - 133, // 90: machine.EtcdRemoveMember.metadata:type_name -> common.Metadata + 134, // 90: machine.EtcdRemoveMember.metadata:type_name -> common.Metadata 110, // 91: machine.EtcdRemoveMemberResponse.messages:type_name -> machine.EtcdRemoveMember - 133, // 92: machine.EtcdForfeitLeadership.metadata:type_name -> common.Metadata + 134, // 92: machine.EtcdForfeitLeadership.metadata:type_name -> common.Metadata 113, // 93: machine.EtcdForfeitLeadershipResponse.messages:type_name -> machine.EtcdForfeitLeadership - 133, // 94: machine.EtcdMemberList.metadata:type_name -> common.Metadata + 134, // 94: machine.EtcdMemberList.metadata:type_name -> common.Metadata 116, // 95: machine.EtcdMemberListResponse.messages:type_name -> machine.EtcdMemberList - 119, // 96: machine.NetworkDeviceConfig.dhcp_options:type_name -> machine.DHCPOptionsConfig - 118, // 97: machine.NetworkDeviceConfig.routes:type_name -> machine.RouteConfig - 120, // 98: machine.NetworkConfig.interfaces:type_name -> machine.NetworkDeviceConfig + 120, // 96: machine.NetworkDeviceConfig.dhcp_options:type_name -> machine.DHCPOptionsConfig + 119, // 97: machine.NetworkDeviceConfig.routes:type_name -> machine.RouteConfig + 121, // 98: machine.NetworkConfig.interfaces:type_name -> machine.NetworkDeviceConfig 6, // 99: machine.MachineConfig.type:type_name -> machine.MachineConfig.MachineType - 122, // 100: machine.MachineConfig.install_config:type_name -> machine.InstallConfig - 121, // 101: machine.MachineConfig.network_config:type_name -> machine.NetworkConfig - 125, // 102: machine.ClusterNetworkConfig.cni_config:type_name -> machine.CNIConfig - 124, // 103: machine.ClusterConfig.control_plane:type_name -> machine.ControlPlaneConfig - 126, // 104: machine.ClusterConfig.cluster_network:type_name -> machine.ClusterNetworkConfig - 127, // 105: machine.GenerateConfigurationRequest.cluster_config:type_name -> machine.ClusterConfig - 123, // 106: machine.GenerateConfigurationRequest.machine_config:type_name -> machine.MachineConfig - 136, // 107: machine.GenerateConfigurationRequest.override_time:type_name -> google.protobuf.Timestamp - 133, // 108: machine.GenerateConfiguration.metadata:type_name -> common.Metadata - 129, // 109: machine.GenerateConfigurationResponse.messages:type_name -> machine.GenerateConfiguration - 133, // 110: machine.RemoveBootkubeInitializedKey.metadata:type_name -> common.Metadata - 131, // 111: machine.RemoveBootkubeInitializedKeyResponse.messages:type_name -> machine.RemoveBootkubeInitializedKey + 123, // 100: machine.MachineConfig.install_config:type_name -> machine.InstallConfig + 122, // 101: machine.MachineConfig.network_config:type_name -> machine.NetworkConfig + 126, // 102: machine.ClusterNetworkConfig.cni_config:type_name -> machine.CNIConfig + 125, // 103: machine.ClusterConfig.control_plane:type_name -> machine.ControlPlaneConfig + 127, // 104: machine.ClusterConfig.cluster_network:type_name -> machine.ClusterNetworkConfig + 128, // 105: machine.GenerateConfigurationRequest.cluster_config:type_name -> machine.ClusterConfig + 124, // 106: machine.GenerateConfigurationRequest.machine_config:type_name -> machine.MachineConfig + 137, // 107: machine.GenerateConfigurationRequest.override_time:type_name -> google.protobuf.Timestamp + 134, // 108: machine.GenerateConfiguration.metadata:type_name -> common.Metadata + 130, // 109: machine.GenerateConfigurationResponse.messages:type_name -> machine.GenerateConfiguration + 134, // 110: machine.RemoveBootkubeInitializedKey.metadata:type_name -> common.Metadata + 132, // 111: machine.RemoveBootkubeInitializedKeyResponse.messages:type_name -> machine.RemoveBootkubeInitializedKey 7, // 112: machine.MachineService.ApplyConfiguration:input_type -> machine.ApplyConfigurationRequest 12, // 113: machine.MachineService.Bootstrap:input_type -> machine.BootstrapRequest 70, // 114: machine.MachineService.Containers:input_type -> machine.ContainersRequest 53, // 115: machine.MachineService.Copy:input_type -> machine.CopyRequest - 138, // 116: machine.MachineService.CPUInfo:input_type -> google.protobuf.Empty - 138, // 117: machine.MachineService.DiskStats:input_type -> google.protobuf.Empty + 139, // 116: machine.MachineService.CPUInfo:input_type -> google.protobuf.Empty + 139, // 117: machine.MachineService.DiskStats:input_type -> google.protobuf.Empty 74, // 118: machine.MachineService.Dmesg:input_type -> machine.DmesgRequest 20, // 119: machine.MachineService.Events:input_type -> machine.EventsRequest 115, // 120: machine.MachineService.EtcdMemberList:input_type -> machine.EtcdMemberListRequest 109, // 121: machine.MachineService.EtcdRemoveMember:input_type -> machine.EtcdRemoveMemberRequest 106, // 122: machine.MachineService.EtcdLeaveCluster:input_type -> machine.EtcdLeaveClusterRequest 112, // 123: machine.MachineService.EtcdForfeitLeadership:input_type -> machine.EtcdForfeitLeadershipRequest - 128, // 124: machine.MachineService.GenerateConfiguration:input_type -> machine.GenerateConfigurationRequest - 138, // 125: machine.MachineService.Hostname:input_type -> google.protobuf.Empty - 138, // 126: machine.MachineService.Kubeconfig:input_type -> google.protobuf.Empty - 54, // 127: machine.MachineService.List:input_type -> machine.ListRequest - 55, // 128: machine.MachineService.DiskUsage:input_type -> machine.DiskUsageRequest - 138, // 129: machine.MachineService.LoadAvg:input_type -> google.protobuf.Empty - 65, // 130: machine.MachineService.Logs:input_type -> machine.LogsRequest - 138, // 131: machine.MachineService.Memory:input_type -> google.protobuf.Empty - 138, // 132: machine.MachineService.Mounts:input_type -> google.protobuf.Empty - 138, // 133: machine.MachineService.NetworkDeviceStats:input_type -> google.protobuf.Empty - 138, // 134: machine.MachineService.Processes:input_type -> google.protobuf.Empty - 66, // 135: machine.MachineService.Read:input_type -> machine.ReadRequest - 138, // 136: machine.MachineService.Reboot:input_type -> google.protobuf.Empty - 79, // 137: machine.MachineService.Restart:input_type -> machine.RestartRequest - 67, // 138: machine.MachineService.Rollback:input_type -> machine.RollbackRequest - 23, // 139: machine.MachineService.Reset:input_type -> machine.ResetRequest - 26, // 140: machine.MachineService.Recover:input_type -> machine.RecoverRequest - 138, // 141: machine.MachineService.RemoveBootkubeInitializedKey:input_type -> google.protobuf.Empty - 138, // 142: machine.MachineService.ServiceList:input_type -> google.protobuf.Empty - 46, // 143: machine.MachineService.ServiceRestart:input_type -> machine.ServiceRestartRequest - 40, // 144: machine.MachineService.ServiceStart:input_type -> machine.ServiceStartRequest - 43, // 145: machine.MachineService.ServiceStop:input_type -> machine.ServiceStopRequest - 138, // 146: machine.MachineService.Shutdown:input_type -> google.protobuf.Empty - 82, // 147: machine.MachineService.Stats:input_type -> machine.StatsRequest - 138, // 148: machine.MachineService.SystemStat:input_type -> google.protobuf.Empty - 31, // 149: machine.MachineService.Upgrade:input_type -> machine.UpgradeRequest - 138, // 150: machine.MachineService.Version:input_type -> google.protobuf.Empty - 9, // 151: machine.MachineService.ApplyConfiguration:output_type -> machine.ApplyConfigurationResponse - 14, // 152: machine.MachineService.Bootstrap:output_type -> machine.BootstrapResponse - 73, // 153: machine.MachineService.Containers:output_type -> machine.ContainersResponse - 139, // 154: machine.MachineService.Copy:output_type -> common.Data - 97, // 155: machine.MachineService.CPUInfo:output_type -> machine.CPUInfoResponse - 103, // 156: machine.MachineService.DiskStats:output_type -> machine.DiskStatsResponse - 139, // 157: machine.MachineService.Dmesg:output_type -> common.Data - 21, // 158: machine.MachineService.Events:output_type -> machine.Event - 117, // 159: machine.MachineService.EtcdMemberList:output_type -> machine.EtcdMemberListResponse - 111, // 160: machine.MachineService.EtcdRemoveMember:output_type -> machine.EtcdRemoveMemberResponse - 108, // 161: machine.MachineService.EtcdLeaveCluster:output_type -> machine.EtcdLeaveClusterResponse - 114, // 162: machine.MachineService.EtcdForfeitLeadership:output_type -> machine.EtcdForfeitLeadershipResponse - 130, // 163: machine.MachineService.GenerateConfiguration:output_type -> machine.GenerateConfigurationResponse - 89, // 164: machine.MachineService.Hostname:output_type -> machine.HostnameResponse - 139, // 165: machine.MachineService.Kubeconfig:output_type -> common.Data - 56, // 166: machine.MachineService.List:output_type -> machine.FileInfo - 57, // 167: machine.MachineService.DiskUsage:output_type -> machine.DiskUsageInfo - 91, // 168: machine.MachineService.LoadAvg:output_type -> machine.LoadAvgResponse - 139, // 169: machine.MachineService.Logs:output_type -> common.Data - 87, // 170: machine.MachineService.Memory:output_type -> machine.MemoryResponse - 59, // 171: machine.MachineService.Mounts:output_type -> machine.MountsResponse - 100, // 172: machine.MachineService.NetworkDeviceStats:output_type -> machine.NetworkDeviceStatsResponse - 76, // 173: machine.MachineService.Processes:output_type -> machine.ProcessesResponse - 139, // 174: machine.MachineService.Read:output_type -> common.Data - 11, // 175: machine.MachineService.Reboot:output_type -> machine.RebootResponse - 81, // 176: machine.MachineService.Restart:output_type -> machine.RestartResponse - 69, // 177: machine.MachineService.Rollback:output_type -> machine.RollbackResponse - 25, // 178: machine.MachineService.Reset:output_type -> machine.ResetResponse - 28, // 179: machine.MachineService.Recover:output_type -> machine.RecoverResponse - 132, // 180: machine.MachineService.RemoveBootkubeInitializedKey:output_type -> machine.RemoveBootkubeInitializedKeyResponse - 35, // 181: machine.MachineService.ServiceList:output_type -> machine.ServiceListResponse - 48, // 182: machine.MachineService.ServiceRestart:output_type -> machine.ServiceRestartResponse - 42, // 183: machine.MachineService.ServiceStart:output_type -> machine.ServiceStartResponse - 45, // 184: machine.MachineService.ServiceStop:output_type -> machine.ServiceStopResponse - 30, // 185: machine.MachineService.Shutdown:output_type -> machine.ShutdownResponse - 84, // 186: machine.MachineService.Stats:output_type -> machine.StatsResponse - 93, // 187: machine.MachineService.SystemStat:output_type -> machine.SystemStatResponse - 33, // 188: machine.MachineService.Upgrade:output_type -> machine.UpgradeResponse - 62, // 189: machine.MachineService.Version:output_type -> machine.VersionResponse - 151, // [151:190] is the sub-list for method output_type - 112, // [112:151] is the sub-list for method input_type + 118, // 124: machine.MachineService.EtcdSnapshot:input_type -> machine.EtcdSnapshotRequest + 129, // 125: machine.MachineService.GenerateConfiguration:input_type -> machine.GenerateConfigurationRequest + 139, // 126: machine.MachineService.Hostname:input_type -> google.protobuf.Empty + 139, // 127: machine.MachineService.Kubeconfig:input_type -> google.protobuf.Empty + 54, // 128: machine.MachineService.List:input_type -> machine.ListRequest + 55, // 129: machine.MachineService.DiskUsage:input_type -> machine.DiskUsageRequest + 139, // 130: machine.MachineService.LoadAvg:input_type -> google.protobuf.Empty + 65, // 131: machine.MachineService.Logs:input_type -> machine.LogsRequest + 139, // 132: machine.MachineService.Memory:input_type -> google.protobuf.Empty + 139, // 133: machine.MachineService.Mounts:input_type -> google.protobuf.Empty + 139, // 134: machine.MachineService.NetworkDeviceStats:input_type -> google.protobuf.Empty + 139, // 135: machine.MachineService.Processes:input_type -> google.protobuf.Empty + 66, // 136: machine.MachineService.Read:input_type -> machine.ReadRequest + 139, // 137: machine.MachineService.Reboot:input_type -> google.protobuf.Empty + 79, // 138: machine.MachineService.Restart:input_type -> machine.RestartRequest + 67, // 139: machine.MachineService.Rollback:input_type -> machine.RollbackRequest + 23, // 140: machine.MachineService.Reset:input_type -> machine.ResetRequest + 26, // 141: machine.MachineService.Recover:input_type -> machine.RecoverRequest + 139, // 142: machine.MachineService.RemoveBootkubeInitializedKey:input_type -> google.protobuf.Empty + 139, // 143: machine.MachineService.ServiceList:input_type -> google.protobuf.Empty + 46, // 144: machine.MachineService.ServiceRestart:input_type -> machine.ServiceRestartRequest + 40, // 145: machine.MachineService.ServiceStart:input_type -> machine.ServiceStartRequest + 43, // 146: machine.MachineService.ServiceStop:input_type -> machine.ServiceStopRequest + 139, // 147: machine.MachineService.Shutdown:input_type -> google.protobuf.Empty + 82, // 148: machine.MachineService.Stats:input_type -> machine.StatsRequest + 139, // 149: machine.MachineService.SystemStat:input_type -> google.protobuf.Empty + 31, // 150: machine.MachineService.Upgrade:input_type -> machine.UpgradeRequest + 139, // 151: machine.MachineService.Version:input_type -> google.protobuf.Empty + 9, // 152: machine.MachineService.ApplyConfiguration:output_type -> machine.ApplyConfigurationResponse + 14, // 153: machine.MachineService.Bootstrap:output_type -> machine.BootstrapResponse + 73, // 154: machine.MachineService.Containers:output_type -> machine.ContainersResponse + 140, // 155: machine.MachineService.Copy:output_type -> common.Data + 97, // 156: machine.MachineService.CPUInfo:output_type -> machine.CPUInfoResponse + 103, // 157: machine.MachineService.DiskStats:output_type -> machine.DiskStatsResponse + 140, // 158: machine.MachineService.Dmesg:output_type -> common.Data + 21, // 159: machine.MachineService.Events:output_type -> machine.Event + 117, // 160: machine.MachineService.EtcdMemberList:output_type -> machine.EtcdMemberListResponse + 111, // 161: machine.MachineService.EtcdRemoveMember:output_type -> machine.EtcdRemoveMemberResponse + 108, // 162: machine.MachineService.EtcdLeaveCluster:output_type -> machine.EtcdLeaveClusterResponse + 114, // 163: machine.MachineService.EtcdForfeitLeadership:output_type -> machine.EtcdForfeitLeadershipResponse + 140, // 164: machine.MachineService.EtcdSnapshot:output_type -> common.Data + 131, // 165: machine.MachineService.GenerateConfiguration:output_type -> machine.GenerateConfigurationResponse + 89, // 166: machine.MachineService.Hostname:output_type -> machine.HostnameResponse + 140, // 167: machine.MachineService.Kubeconfig:output_type -> common.Data + 56, // 168: machine.MachineService.List:output_type -> machine.FileInfo + 57, // 169: machine.MachineService.DiskUsage:output_type -> machine.DiskUsageInfo + 91, // 170: machine.MachineService.LoadAvg:output_type -> machine.LoadAvgResponse + 140, // 171: machine.MachineService.Logs:output_type -> common.Data + 87, // 172: machine.MachineService.Memory:output_type -> machine.MemoryResponse + 59, // 173: machine.MachineService.Mounts:output_type -> machine.MountsResponse + 100, // 174: machine.MachineService.NetworkDeviceStats:output_type -> machine.NetworkDeviceStatsResponse + 76, // 175: machine.MachineService.Processes:output_type -> machine.ProcessesResponse + 140, // 176: machine.MachineService.Read:output_type -> common.Data + 11, // 177: machine.MachineService.Reboot:output_type -> machine.RebootResponse + 81, // 178: machine.MachineService.Restart:output_type -> machine.RestartResponse + 69, // 179: machine.MachineService.Rollback:output_type -> machine.RollbackResponse + 25, // 180: machine.MachineService.Reset:output_type -> machine.ResetResponse + 28, // 181: machine.MachineService.Recover:output_type -> machine.RecoverResponse + 133, // 182: machine.MachineService.RemoveBootkubeInitializedKey:output_type -> machine.RemoveBootkubeInitializedKeyResponse + 35, // 183: machine.MachineService.ServiceList:output_type -> machine.ServiceListResponse + 48, // 184: machine.MachineService.ServiceRestart:output_type -> machine.ServiceRestartResponse + 42, // 185: machine.MachineService.ServiceStart:output_type -> machine.ServiceStartResponse + 45, // 186: machine.MachineService.ServiceStop:output_type -> machine.ServiceStopResponse + 30, // 187: machine.MachineService.Shutdown:output_type -> machine.ShutdownResponse + 84, // 188: machine.MachineService.Stats:output_type -> machine.StatsResponse + 93, // 189: machine.MachineService.SystemStat:output_type -> machine.SystemStatResponse + 33, // 190: machine.MachineService.Upgrade:output_type -> machine.UpgradeResponse + 62, // 191: machine.MachineService.Version:output_type -> machine.VersionResponse + 152, // [152:192] is the sub-list for method output_type + 112, // [112:152] is the sub-list for method input_type 112, // [112:112] is the sub-list for extension type_name 112, // [112:112] is the sub-list for extension extendee 0, // [0:112] is the sub-list for field type_name @@ -11303,7 +11349,7 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteConfig); i { + switch v := v.(*EtcdSnapshotRequest); i { case 0: return &v.state case 1: @@ -11315,7 +11361,7 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DHCPOptionsConfig); i { + switch v := v.(*RouteConfig); i { case 0: return &v.state case 1: @@ -11327,7 +11373,7 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NetworkDeviceConfig); i { + switch v := v.(*DHCPOptionsConfig); i { case 0: return &v.state case 1: @@ -11339,7 +11385,7 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NetworkConfig); i { + switch v := v.(*NetworkDeviceConfig); i { case 0: return &v.state case 1: @@ -11351,7 +11397,7 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InstallConfig); i { + switch v := v.(*NetworkConfig); i { case 0: return &v.state case 1: @@ -11363,7 +11409,7 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MachineConfig); i { + switch v := v.(*InstallConfig); i { case 0: return &v.state case 1: @@ -11375,7 +11421,7 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControlPlaneConfig); i { + switch v := v.(*MachineConfig); i { case 0: return &v.state case 1: @@ -11387,7 +11433,7 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CNIConfig); i { + switch v := v.(*ControlPlaneConfig); i { case 0: return &v.state case 1: @@ -11399,7 +11445,7 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterNetworkConfig); i { + switch v := v.(*CNIConfig); i { case 0: return &v.state case 1: @@ -11411,7 +11457,7 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterConfig); i { + switch v := v.(*ClusterNetworkConfig); i { case 0: return &v.state case 1: @@ -11423,7 +11469,7 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateConfigurationRequest); i { + switch v := v.(*ClusterConfig); i { case 0: return &v.state case 1: @@ -11435,7 +11481,7 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateConfiguration); i { + switch v := v.(*GenerateConfigurationRequest); i { case 0: return &v.state case 1: @@ -11447,7 +11493,7 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateConfigurationResponse); i { + switch v := v.(*GenerateConfiguration); i { case 0: return &v.state case 1: @@ -11459,7 +11505,7 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveBootkubeInitializedKey); i { + switch v := v.(*GenerateConfigurationResponse); i { case 0: return &v.state case 1: @@ -11471,6 +11517,18 @@ func file_machine_machine_proto_init() { } } file_machine_machine_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveBootkubeInitializedKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_machine_machine_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveBootkubeInitializedKeyResponse); i { case 0: return &v.state @@ -11489,7 +11547,7 @@ func file_machine_machine_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_machine_machine_proto_rawDesc, NumEnums: 7, - NumMessages: 126, + NumMessages: 127, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/machinery/api/machine/machine_grpc.pb.go b/pkg/machinery/api/machine/machine_grpc.pb.go index ef81018721..3e8c680f6c 100644 --- a/pkg/machinery/api/machine/machine_grpc.pb.go +++ b/pkg/machinery/api/machine/machine_grpc.pb.go @@ -34,6 +34,11 @@ type MachineServiceClient interface { EtcdRemoveMember(ctx context.Context, in *EtcdRemoveMemberRequest, opts ...grpc.CallOption) (*EtcdRemoveMemberResponse, error) EtcdLeaveCluster(ctx context.Context, in *EtcdLeaveClusterRequest, opts ...grpc.CallOption) (*EtcdLeaveClusterResponse, error) EtcdForfeitLeadership(ctx context.Context, in *EtcdForfeitLeadershipRequest, opts ...grpc.CallOption) (*EtcdForfeitLeadershipResponse, error) + // EtcdSnapshot method creates etcd data snapshot (backup) from the local etcd instance + // and streams it back to the client. + // + // This method is available only on control plane nodes (which run etcd). + EtcdSnapshot(ctx context.Context, in *EtcdSnapshotRequest, opts ...grpc.CallOption) (MachineService_EtcdSnapshotClient, error) GenerateConfiguration(ctx context.Context, in *GenerateConfigurationRequest, opts ...grpc.CallOption) (*GenerateConfigurationResponse, error) Hostname(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*HostnameResponse, error) Kubeconfig(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (MachineService_KubeconfigClient, error) @@ -248,6 +253,38 @@ func (c *machineServiceClient) EtcdForfeitLeadership(ctx context.Context, in *Et return out, nil } +func (c *machineServiceClient) EtcdSnapshot(ctx context.Context, in *EtcdSnapshotRequest, opts ...grpc.CallOption) (MachineService_EtcdSnapshotClient, error) { + stream, err := c.cc.NewStream(ctx, &MachineService_ServiceDesc.Streams[3], "/machine.MachineService/EtcdSnapshot", opts...) + if err != nil { + return nil, err + } + x := &machineServiceEtcdSnapshotClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type MachineService_EtcdSnapshotClient interface { + Recv() (*common.Data, error) + grpc.ClientStream +} + +type machineServiceEtcdSnapshotClient struct { + grpc.ClientStream +} + +func (x *machineServiceEtcdSnapshotClient) Recv() (*common.Data, error) { + m := new(common.Data) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func (c *machineServiceClient) GenerateConfiguration(ctx context.Context, in *GenerateConfigurationRequest, opts ...grpc.CallOption) (*GenerateConfigurationResponse, error) { out := new(GenerateConfigurationResponse) err := c.cc.Invoke(ctx, "/machine.MachineService/GenerateConfiguration", in, out, opts...) @@ -267,7 +304,7 @@ func (c *machineServiceClient) Hostname(ctx context.Context, in *emptypb.Empty, } func (c *machineServiceClient) Kubeconfig(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (MachineService_KubeconfigClient, error) { - stream, err := c.cc.NewStream(ctx, &MachineService_ServiceDesc.Streams[3], "/machine.MachineService/Kubeconfig", opts...) + stream, err := c.cc.NewStream(ctx, &MachineService_ServiceDesc.Streams[4], "/machine.MachineService/Kubeconfig", opts...) if err != nil { return nil, err } @@ -299,7 +336,7 @@ func (x *machineServiceKubeconfigClient) Recv() (*common.Data, error) { } func (c *machineServiceClient) List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (MachineService_ListClient, error) { - stream, err := c.cc.NewStream(ctx, &MachineService_ServiceDesc.Streams[4], "/machine.MachineService/List", opts...) + stream, err := c.cc.NewStream(ctx, &MachineService_ServiceDesc.Streams[5], "/machine.MachineService/List", opts...) if err != nil { return nil, err } @@ -331,7 +368,7 @@ func (x *machineServiceListClient) Recv() (*FileInfo, error) { } func (c *machineServiceClient) DiskUsage(ctx context.Context, in *DiskUsageRequest, opts ...grpc.CallOption) (MachineService_DiskUsageClient, error) { - stream, err := c.cc.NewStream(ctx, &MachineService_ServiceDesc.Streams[5], "/machine.MachineService/DiskUsage", opts...) + stream, err := c.cc.NewStream(ctx, &MachineService_ServiceDesc.Streams[6], "/machine.MachineService/DiskUsage", opts...) if err != nil { return nil, err } @@ -372,7 +409,7 @@ func (c *machineServiceClient) LoadAvg(ctx context.Context, in *emptypb.Empty, o } func (c *machineServiceClient) Logs(ctx context.Context, in *LogsRequest, opts ...grpc.CallOption) (MachineService_LogsClient, error) { - stream, err := c.cc.NewStream(ctx, &MachineService_ServiceDesc.Streams[6], "/machine.MachineService/Logs", opts...) + stream, err := c.cc.NewStream(ctx, &MachineService_ServiceDesc.Streams[7], "/machine.MachineService/Logs", opts...) if err != nil { return nil, err } @@ -440,7 +477,7 @@ func (c *machineServiceClient) Processes(ctx context.Context, in *emptypb.Empty, } func (c *machineServiceClient) Read(ctx context.Context, in *ReadRequest, opts ...grpc.CallOption) (MachineService_ReadClient, error) { - stream, err := c.cc.NewStream(ctx, &MachineService_ServiceDesc.Streams[7], "/machine.MachineService/Read", opts...) + stream, err := c.cc.NewStream(ctx, &MachineService_ServiceDesc.Streams[8], "/machine.MachineService/Read", opts...) if err != nil { return nil, err } @@ -622,6 +659,11 @@ type MachineServiceServer interface { EtcdRemoveMember(context.Context, *EtcdRemoveMemberRequest) (*EtcdRemoveMemberResponse, error) EtcdLeaveCluster(context.Context, *EtcdLeaveClusterRequest) (*EtcdLeaveClusterResponse, error) EtcdForfeitLeadership(context.Context, *EtcdForfeitLeadershipRequest) (*EtcdForfeitLeadershipResponse, error) + // EtcdSnapshot method creates etcd data snapshot (backup) from the local etcd instance + // and streams it back to the client. + // + // This method is available only on control plane nodes (which run etcd). + EtcdSnapshot(*EtcdSnapshotRequest, MachineService_EtcdSnapshotServer) error GenerateConfiguration(context.Context, *GenerateConfigurationRequest) (*GenerateConfigurationResponse, error) Hostname(context.Context, *emptypb.Empty) (*HostnameResponse, error) Kubeconfig(*emptypb.Empty, MachineService_KubeconfigServer) error @@ -704,6 +746,10 @@ func (UnimplementedMachineServiceServer) EtcdForfeitLeadership(context.Context, return nil, status.Errorf(codes.Unimplemented, "method EtcdForfeitLeadership not implemented") } +func (UnimplementedMachineServiceServer) EtcdSnapshot(*EtcdSnapshotRequest, MachineService_EtcdSnapshotServer) error { + return status.Errorf(codes.Unimplemented, "method EtcdSnapshot not implemented") +} + func (UnimplementedMachineServiceServer) GenerateConfiguration(context.Context, *GenerateConfigurationRequest) (*GenerateConfigurationResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GenerateConfiguration not implemented") } @@ -1049,6 +1095,27 @@ func _MachineService_EtcdForfeitLeadership_Handler(srv interface{}, ctx context. return interceptor(ctx, in, info, handler) } +func _MachineService_EtcdSnapshot_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(EtcdSnapshotRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(MachineServiceServer).EtcdSnapshot(m, &machineServiceEtcdSnapshotServer{stream}) +} + +type MachineService_EtcdSnapshotServer interface { + Send(*common.Data) error + grpc.ServerStream +} + +type machineServiceEtcdSnapshotServer struct { + grpc.ServerStream +} + +func (x *machineServiceEtcdSnapshotServer) Send(m *common.Data) error { + return x.ServerStream.SendMsg(m) +} + func _MachineService_GenerateConfiguration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GenerateConfigurationRequest) if err := dec(in); err != nil { @@ -1698,6 +1765,11 @@ var MachineService_ServiceDesc = grpc.ServiceDesc{ Handler: _MachineService_Events_Handler, ServerStreams: true, }, + { + StreamName: "EtcdSnapshot", + Handler: _MachineService_EtcdSnapshot_Handler, + ServerStreams: true, + }, { StreamName: "Kubeconfig", Handler: _MachineService_Kubeconfig_Handler, diff --git a/pkg/machinery/client/client.go b/pkg/machinery/client/client.go index 06db52d599..96844e8d9a 100644 --- a/pkg/machinery/client/client.go +++ b/pkg/machinery/client/client.go @@ -895,6 +895,16 @@ func (c *Client) EtcdMemberList(ctx context.Context, req *machineapi.EtcdMemberL return resp, err } +// EtcdSnapshot receives a snapshot of the etcd from the node. +func (c *Client) EtcdSnapshot(ctx context.Context, req *machineapi.EtcdSnapshotRequest, callOptions ...grpc.CallOption) (io.ReadCloser, <-chan error, error) { + stream, err := c.MachineClient.EtcdSnapshot(ctx, req, callOptions...) + if err != nil { + return nil, nil, err + } + + return ReadStream(stream) +} + // MachineStream is a common interface for streams returned by streaming APIs. type MachineStream interface { Recv() (*common.Data, error) diff --git a/website/content/docs/v0.10/Reference/api.md b/website/content/docs/v0.10/Reference/api.md index 979400a5a5..ba6eb751df 100644 --- a/website/content/docs/v0.10/Reference/api.md +++ b/website/content/docs/v0.10/Reference/api.md @@ -76,6 +76,7 @@ description: Talos gRPC API reference. - [EtcdRemoveMember](#machine.EtcdRemoveMember) - [EtcdRemoveMemberRequest](#machine.EtcdRemoveMemberRequest) - [EtcdRemoveMemberResponse](#machine.EtcdRemoveMemberResponse) + - [EtcdSnapshotRequest](#machine.EtcdSnapshotRequest) - [Event](#machine.Event) - [EventsRequest](#machine.EventsRequest) - [FileInfo](#machine.FileInfo) @@ -1233,6 +1234,16 @@ dmesg + + +### EtcdSnapshotRequest + + + + + + + ### Event @@ -2853,6 +2864,9 @@ The machine service definition. | EtcdRemoveMember | [EtcdRemoveMemberRequest](#machine.EtcdRemoveMemberRequest) | [EtcdRemoveMemberResponse](#machine.EtcdRemoveMemberResponse) | | | EtcdLeaveCluster | [EtcdLeaveClusterRequest](#machine.EtcdLeaveClusterRequest) | [EtcdLeaveClusterResponse](#machine.EtcdLeaveClusterResponse) | | | EtcdForfeitLeadership | [EtcdForfeitLeadershipRequest](#machine.EtcdForfeitLeadershipRequest) | [EtcdForfeitLeadershipResponse](#machine.EtcdForfeitLeadershipResponse) | | +| EtcdSnapshot | [EtcdSnapshotRequest](#machine.EtcdSnapshotRequest) | [.common.Data](#common.Data) stream | EtcdSnapshot method creates etcd data snapshot (backup) from the local etcd instance and streams it back to the client. + +This method is available only on control plane nodes (which run etcd). | | GenerateConfiguration | [GenerateConfigurationRequest](#machine.GenerateConfigurationRequest) | [GenerateConfigurationResponse](#machine.GenerateConfigurationResponse) | | | Hostname | [.google.protobuf.Empty](#google.protobuf.Empty) | [HostnameResponse](#machine.HostnameResponse) | | | Kubeconfig | [.google.protobuf.Empty](#google.protobuf.Empty) | [.common.Data](#common.Data) stream | | diff --git a/website/content/docs/v0.10/Reference/cli.md b/website/content/docs/v0.10/Reference/cli.md index 272a487c74..6d98344079 100644 --- a/website/content/docs/v0.10/Reference/cli.md +++ b/website/content/docs/v0.10/Reference/cli.md @@ -882,6 +882,33 @@ talosctl etcd remove-member [flags] * [talosctl etcd](#talosctl-etcd) - Manage etcd +## talosctl etcd snapshot + +Stream snapshot of the etcd node to the path. + +``` +talosctl etcd snapshot [flags] +``` + +### Options + +``` + -h, --help help for snapshot +``` + +### Options inherited from parent commands + +``` + --context string Context to be used in command + -e, --endpoints strings override default endpoints in Talos configuration + -n, --nodes strings target the specified nodes + --talosconfig string The path to the Talos configuration file (default "/home/user/.talos/config") +``` + +### SEE ALSO + +* [talosctl etcd](#talosctl-etcd) - Manage etcd + ## talosctl etcd Manage etcd @@ -908,6 +935,7 @@ Manage etcd * [talosctl etcd leave](#talosctl-etcd-leave) - Tell nodes to leave etcd cluster * [talosctl etcd members](#talosctl-etcd-members) - Get the list of etcd cluster members * [talosctl etcd remove-member](#talosctl-etcd-remove-member) - Remove the node from etcd cluster +* [talosctl etcd snapshot](#talosctl-etcd-snapshot) - Stream snapshot of the etcd node to the path. ## talosctl events