blob: 40edafdc6bce2049b3d2e2528f65912d94d66d46 [file] [log] [blame]
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
// protoc v3.12.2
// source: google/cloud/gkebackup/v1/restore.proto
package gkebackuppb
import (
reflect "reflect"
sync "sync"
timestamp "github.com/golang/protobuf/ptypes/timestamp"
_ "google.golang.org/genproto/googleapis/api/annotations"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// Possible values for state of the Restore.
type Restore_State int32
const (
// The Restore resource is in the process of being created.
Restore_STATE_UNSPECIFIED Restore_State = 0
// The Restore resource has been created and the associated RestoreJob
// Kubernetes resource has been injected into target cluster.
Restore_CREATING Restore_State = 1
// The gkebackup agent in the cluster has begun executing the restore
// operation.
Restore_IN_PROGRESS Restore_State = 2
// The restore operation has completed successfully. Restored workloads may
// not yet be operational.
Restore_SUCCEEDED Restore_State = 3
// The restore operation has failed.
Restore_FAILED Restore_State = 4
// This Restore resource is in the process of being deleted.
Restore_DELETING Restore_State = 5
)
// Enum value maps for Restore_State.
var (
Restore_State_name = map[int32]string{
0: "STATE_UNSPECIFIED",
1: "CREATING",
2: "IN_PROGRESS",
3: "SUCCEEDED",
4: "FAILED",
5: "DELETING",
}
Restore_State_value = map[string]int32{
"STATE_UNSPECIFIED": 0,
"CREATING": 1,
"IN_PROGRESS": 2,
"SUCCEEDED": 3,
"FAILED": 4,
"DELETING": 5,
}
)
func (x Restore_State) Enum() *Restore_State {
p := new(Restore_State)
*p = x
return p
}
func (x Restore_State) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Restore_State) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_gkebackup_v1_restore_proto_enumTypes[0].Descriptor()
}
func (Restore_State) Type() protoreflect.EnumType {
return &file_google_cloud_gkebackup_v1_restore_proto_enumTypes[0]
}
func (x Restore_State) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use Restore_State.Descriptor instead.
func (Restore_State) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_gkebackup_v1_restore_proto_rawDescGZIP(), []int{0, 0}
}
// Defines how volume data should be restored
type RestoreConfig_VolumeDataRestorePolicy int32
const (
// Unspecified (illegal).
RestoreConfig_VOLUME_DATA_RESTORE_POLICY_UNSPECIFIED RestoreConfig_VolumeDataRestorePolicy = 0
// For each PVC to be restored, will create a new underlying volume (and PV)
// from the corresponding VolumeBackup contained within the Backup.
RestoreConfig_RESTORE_VOLUME_DATA_FROM_BACKUP RestoreConfig_VolumeDataRestorePolicy = 1
// For each PVC to be restored, attempt to reuse the original PV contained
// in the Backup (with its original underlying volume). Note that option
// is likely only usable when restoring a workload to its original cluster.
RestoreConfig_REUSE_VOLUME_HANDLE_FROM_BACKUP RestoreConfig_VolumeDataRestorePolicy = 2
// For each PVC to be restored, PVCs will be created without any particular
// action to restore data. In this case, the normal Kubernetes provisioning
// logic would kick in, and this would likely result in either dynamically
// provisioning blank PVs or binding to statically provisioned PVs.
RestoreConfig_NO_VOLUME_DATA_RESTORATION RestoreConfig_VolumeDataRestorePolicy = 3
)
// Enum value maps for RestoreConfig_VolumeDataRestorePolicy.
var (
RestoreConfig_VolumeDataRestorePolicy_name = map[int32]string{
0: "VOLUME_DATA_RESTORE_POLICY_UNSPECIFIED",
1: "RESTORE_VOLUME_DATA_FROM_BACKUP",
2: "REUSE_VOLUME_HANDLE_FROM_BACKUP",
3: "NO_VOLUME_DATA_RESTORATION",
}
RestoreConfig_VolumeDataRestorePolicy_value = map[string]int32{
"VOLUME_DATA_RESTORE_POLICY_UNSPECIFIED": 0,
"RESTORE_VOLUME_DATA_FROM_BACKUP": 1,
"REUSE_VOLUME_HANDLE_FROM_BACKUP": 2,
"NO_VOLUME_DATA_RESTORATION": 3,
}
)
func (x RestoreConfig_VolumeDataRestorePolicy) Enum() *RestoreConfig_VolumeDataRestorePolicy {
p := new(RestoreConfig_VolumeDataRestorePolicy)
*p = x
return p
}
func (x RestoreConfig_VolumeDataRestorePolicy) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (RestoreConfig_VolumeDataRestorePolicy) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_gkebackup_v1_restore_proto_enumTypes[1].Descriptor()
}
func (RestoreConfig_VolumeDataRestorePolicy) Type() protoreflect.EnumType {
return &file_google_cloud_gkebackup_v1_restore_proto_enumTypes[1]
}
func (x RestoreConfig_VolumeDataRestorePolicy) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use RestoreConfig_VolumeDataRestorePolicy.Descriptor instead.
func (RestoreConfig_VolumeDataRestorePolicy) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_gkebackup_v1_restore_proto_rawDescGZIP(), []int{1, 0}
}
// Defines the behavior for handling the situation where cluster-scoped
// resources being restored already exist in the target cluster.
type RestoreConfig_ClusterResourceConflictPolicy int32
const (
// Unspecified. Only allowed if no cluster-scoped resources will be
// restored.
RestoreConfig_CLUSTER_RESOURCE_CONFLICT_POLICY_UNSPECIFIED RestoreConfig_ClusterResourceConflictPolicy = 0
// Do not attempt to restore the conflicting resource.
RestoreConfig_USE_EXISTING_VERSION RestoreConfig_ClusterResourceConflictPolicy = 1
// Delete the existing version before re-creating it from the Backup.
// Note that this is a dangerous option which could cause unintentional
// data loss if used inappropriately - for example, deleting a CRD will
// cause Kubernetes to delete all CRs of that type.
RestoreConfig_USE_BACKUP_VERSION RestoreConfig_ClusterResourceConflictPolicy = 2
)
// Enum value maps for RestoreConfig_ClusterResourceConflictPolicy.
var (
RestoreConfig_ClusterResourceConflictPolicy_name = map[int32]string{
0: "CLUSTER_RESOURCE_CONFLICT_POLICY_UNSPECIFIED",
1: "USE_EXISTING_VERSION",
2: "USE_BACKUP_VERSION",
}
RestoreConfig_ClusterResourceConflictPolicy_value = map[string]int32{
"CLUSTER_RESOURCE_CONFLICT_POLICY_UNSPECIFIED": 0,
"USE_EXISTING_VERSION": 1,
"USE_BACKUP_VERSION": 2,
}
)
func (x RestoreConfig_ClusterResourceConflictPolicy) Enum() *RestoreConfig_ClusterResourceConflictPolicy {
p := new(RestoreConfig_ClusterResourceConflictPolicy)
*p = x
return p
}
func (x RestoreConfig_ClusterResourceConflictPolicy) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (RestoreConfig_ClusterResourceConflictPolicy) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_gkebackup_v1_restore_proto_enumTypes[2].Descriptor()
}
func (RestoreConfig_ClusterResourceConflictPolicy) Type() protoreflect.EnumType {
return &file_google_cloud_gkebackup_v1_restore_proto_enumTypes[2]
}
func (x RestoreConfig_ClusterResourceConflictPolicy) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use RestoreConfig_ClusterResourceConflictPolicy.Descriptor instead.
func (RestoreConfig_ClusterResourceConflictPolicy) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_gkebackup_v1_restore_proto_rawDescGZIP(), []int{1, 1}
}
// Defines the behavior for handling the situation where sets of namespaced
// resources being restored already exist in the target cluster.
type RestoreConfig_NamespacedResourceRestoreMode int32
const (
// Unspecified (invalid).
RestoreConfig_NAMESPACED_RESOURCE_RESTORE_MODE_UNSPECIFIED RestoreConfig_NamespacedResourceRestoreMode = 0
// When conflicting top-level resources (either Namespaces or
// ProtectedApplications, depending upon the scope) are encountered, this
// will first trigger a delete of the conflicting resource AND ALL OF ITS
// REFERENCED RESOURCES (e.g., all resources in the Namespace or all
// resources referenced by the ProtectedApplication) before restoring the
// resources from the Backup. This mode should only be used when you are
// intending to revert some portion of a cluster to an earlier state.
RestoreConfig_DELETE_AND_RESTORE RestoreConfig_NamespacedResourceRestoreMode = 1
// If conflicting top-level resources (either Namespaces or
// ProtectedApplications, depending upon the scope) are encountered at the
// beginning of a restore process, the Restore will fail. If a conflict
// occurs during the restore process itself (e.g., because an out of band
// process creates conflicting resources), a conflict will be reported.
RestoreConfig_FAIL_ON_CONFLICT RestoreConfig_NamespacedResourceRestoreMode = 2
)
// Enum value maps for RestoreConfig_NamespacedResourceRestoreMode.
var (
RestoreConfig_NamespacedResourceRestoreMode_name = map[int32]string{
0: "NAMESPACED_RESOURCE_RESTORE_MODE_UNSPECIFIED",
1: "DELETE_AND_RESTORE",
2: "FAIL_ON_CONFLICT",
}
RestoreConfig_NamespacedResourceRestoreMode_value = map[string]int32{
"NAMESPACED_RESOURCE_RESTORE_MODE_UNSPECIFIED": 0,
"DELETE_AND_RESTORE": 1,
"FAIL_ON_CONFLICT": 2,
}
)
func (x RestoreConfig_NamespacedResourceRestoreMode) Enum() *RestoreConfig_NamespacedResourceRestoreMode {
p := new(RestoreConfig_NamespacedResourceRestoreMode)
*p = x
return p
}
func (x RestoreConfig_NamespacedResourceRestoreMode) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (RestoreConfig_NamespacedResourceRestoreMode) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_gkebackup_v1_restore_proto_enumTypes[3].Descriptor()
}
func (RestoreConfig_NamespacedResourceRestoreMode) Type() protoreflect.EnumType {
return &file_google_cloud_gkebackup_v1_restore_proto_enumTypes[3]
}
func (x RestoreConfig_NamespacedResourceRestoreMode) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use RestoreConfig_NamespacedResourceRestoreMode.Descriptor instead.
func (RestoreConfig_NamespacedResourceRestoreMode) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_gkebackup_v1_restore_proto_rawDescGZIP(), []int{1, 2}
}
// Represents both a request to Restore some portion of a Backup into
// a target GKE cluster and a record of the restore operation itself.
// Next id: 18
type Restore struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Output only. The full name of the Restore resource.
// Format: projects/*/locations/*/restorePlans/*/restores/*
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Output only. Server generated global unique identifier of
// [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) format.
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"`
// Output only. The timestamp when this Restore resource was created.
CreateTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
// Output only. The timestamp when this Restore resource was last
// updated.
UpdateTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
// User specified descriptive string for this Restore.
Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
// Required. Immutable. A reference to the [Backup][google.cloud.gkebackup.v1.Backup] used as the source from which this Restore
// will restore. Note that this Backup must be a sub-resource of the
// RestorePlan's [backup_plan][google.cloud.gkebackup.v1.RestorePlan.backup_plan].
// Format: projects/*/locations/*/backupPlans/*/backups/*.
Backup string `protobuf:"bytes,6,opt,name=backup,proto3" json:"backup,omitempty"`
// Output only. The target cluster into which this Restore will restore data.
// Valid formats:
//
// - projects/*/locations/*/clusters/*
// - projects/*/zones/*/clusters/*
//
// Inherited from parent RestorePlan's [cluster][google.cloud.gkebackup.v1.RestorePlan.cluster] value.
Cluster string `protobuf:"bytes,7,opt,name=cluster,proto3" json:"cluster,omitempty"`
// Output only. Configuration of the Restore. Inherited from parent RestorePlan's
// [restore_config][google.cloud.gkebackup.v1.RestorePlan.restore_config].
RestoreConfig *RestoreConfig `protobuf:"bytes,8,opt,name=restore_config,json=restoreConfig,proto3" json:"restore_config,omitempty"`
// A set of custom labels supplied by user.
Labels map[string]string `protobuf:"bytes,9,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// Output only. The current state of the Restore.
State Restore_State `protobuf:"varint,10,opt,name=state,proto3,enum=google.cloud.gkebackup.v1.Restore_State" json:"state,omitempty"`
// Output only. Human-readable description of why the Restore is in its current state.
StateReason string `protobuf:"bytes,11,opt,name=state_reason,json=stateReason,proto3" json:"state_reason,omitempty"`
// Output only. Timestamp of when the restore operation completed.
CompleteTime *timestamp.Timestamp `protobuf:"bytes,12,opt,name=complete_time,json=completeTime,proto3" json:"complete_time,omitempty"`
// Output only. Number of resources restored during the restore execution.
ResourcesRestoredCount int32 `protobuf:"varint,13,opt,name=resources_restored_count,json=resourcesRestoredCount,proto3" json:"resources_restored_count,omitempty"`
// Output only. Number of resources excluded during the restore execution.
ResourcesExcludedCount int32 `protobuf:"varint,14,opt,name=resources_excluded_count,json=resourcesExcludedCount,proto3" json:"resources_excluded_count,omitempty"`
// Output only. Number of resources that failed to be restored during the restore
// execution.
ResourcesFailedCount int32 `protobuf:"varint,15,opt,name=resources_failed_count,json=resourcesFailedCount,proto3" json:"resources_failed_count,omitempty"`
// Output only. Number of volumes restored during the restore execution.
VolumesRestoredCount int32 `protobuf:"varint,16,opt,name=volumes_restored_count,json=volumesRestoredCount,proto3" json:"volumes_restored_count,omitempty"`
// Output only. `etag` is used for optimistic concurrency control as a way to help
// prevent simultaneous updates of a restore from overwriting each other.
// It is strongly suggested that systems make use of the `etag` in the
// read-modify-write cycle to perform restore updates in order to avoid
// race conditions: An `etag` is returned in the response to `GetRestore`,
// and systems are expected to put that etag in the request to
// `UpdateRestore` or `DeleteRestore` to ensure that their change will be
// applied to the same version of the resource.
Etag string `protobuf:"bytes,17,opt,name=etag,proto3" json:"etag,omitempty"`
}
func (x *Restore) Reset() {
*x = Restore{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_gkebackup_v1_restore_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Restore) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Restore) ProtoMessage() {}
func (x *Restore) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_gkebackup_v1_restore_proto_msgTypes[0]
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 Restore.ProtoReflect.Descriptor instead.
func (*Restore) Descriptor() ([]byte, []int) {
return file_google_cloud_gkebackup_v1_restore_proto_rawDescGZIP(), []int{0}
}
func (x *Restore) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Restore) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
func (x *Restore) GetCreateTime() *timestamp.Timestamp {
if x != nil {
return x.CreateTime
}
return nil
}
func (x *Restore) GetUpdateTime() *timestamp.Timestamp {
if x != nil {
return x.UpdateTime
}
return nil
}
func (x *Restore) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *Restore) GetBackup() string {
if x != nil {
return x.Backup
}
return ""
}
func (x *Restore) GetCluster() string {
if x != nil {
return x.Cluster
}
return ""
}
func (x *Restore) GetRestoreConfig() *RestoreConfig {
if x != nil {
return x.RestoreConfig
}
return nil
}
func (x *Restore) GetLabels() map[string]string {
if x != nil {
return x.Labels
}
return nil
}
func (x *Restore) GetState() Restore_State {
if x != nil {
return x.State
}
return Restore_STATE_UNSPECIFIED
}
func (x *Restore) GetStateReason() string {
if x != nil {
return x.StateReason
}
return ""
}
func (x *Restore) GetCompleteTime() *timestamp.Timestamp {
if x != nil {
return x.CompleteTime
}
return nil
}
func (x *Restore) GetResourcesRestoredCount() int32 {
if x != nil {
return x.ResourcesRestoredCount
}
return 0
}
func (x *Restore) GetResourcesExcludedCount() int32 {
if x != nil {
return x.ResourcesExcludedCount
}
return 0
}
func (x *Restore) GetResourcesFailedCount() int32 {
if x != nil {
return x.ResourcesFailedCount
}
return 0
}
func (x *Restore) GetVolumesRestoredCount() int32 {
if x != nil {
return x.VolumesRestoredCount
}
return 0
}
func (x *Restore) GetEtag() string {
if x != nil {
return x.Etag
}
return ""
}
// Configuration of a restore.
// Next id: 9
type RestoreConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Specifies the mechanism to be used to restore volume data.
// Default: VOLUME_DATA_RESTORE_POLICY_UNSPECIFIED (will be treated as
// NO_VOLUME_DATA_RESTORATION).
VolumeDataRestorePolicy RestoreConfig_VolumeDataRestorePolicy `protobuf:"varint,1,opt,name=volume_data_restore_policy,json=volumeDataRestorePolicy,proto3,enum=google.cloud.gkebackup.v1.RestoreConfig_VolumeDataRestorePolicy" json:"volume_data_restore_policy,omitempty"`
// Defines the behavior for handling the situation where cluster-scoped
// resources being restored already exist in the target cluster. This MUST be
// set to a value other than CLUSTER_RESOURCE_CONFLICT_POLICY_UNSPECIFIED if
// [cluster_resource_restore_scope][google.cloud.gkebackup.v1.RestoreConfig.cluster_resource_restore_scope] is not empty.
ClusterResourceConflictPolicy RestoreConfig_ClusterResourceConflictPolicy `protobuf:"varint,2,opt,name=cluster_resource_conflict_policy,json=clusterResourceConflictPolicy,proto3,enum=google.cloud.gkebackup.v1.RestoreConfig_ClusterResourceConflictPolicy" json:"cluster_resource_conflict_policy,omitempty"`
// Defines the behavior for handling the situation where sets of namespaced
// resources being restored already exist in the target cluster. This MUST be
// set to a value other than NAMESPACED_RESOURCE_RESTORE_MODE_UNSPECIFIED.
NamespacedResourceRestoreMode RestoreConfig_NamespacedResourceRestoreMode `protobuf:"varint,3,opt,name=namespaced_resource_restore_mode,json=namespacedResourceRestoreMode,proto3,enum=google.cloud.gkebackup.v1.RestoreConfig_NamespacedResourceRestoreMode" json:"namespaced_resource_restore_mode,omitempty"`
// Identifies the cluster-scoped resources to restore from the Backup.
// Not specifying it means NO cluster resource will be restored.
ClusterResourceRestoreScope *RestoreConfig_ClusterResourceRestoreScope `protobuf:"bytes,4,opt,name=cluster_resource_restore_scope,json=clusterResourceRestoreScope,proto3" json:"cluster_resource_restore_scope,omitempty"`
// Specifies the namespaced resources to restore from the Backup.
// Only one of the entries may be specified. If not specified, NO namespaced
// resources will be restored.
//
// Types that are assignable to NamespacedResourceRestoreScope:
//
// *RestoreConfig_AllNamespaces
// *RestoreConfig_SelectedNamespaces
// *RestoreConfig_SelectedApplications
NamespacedResourceRestoreScope isRestoreConfig_NamespacedResourceRestoreScope `protobuf_oneof:"namespaced_resource_restore_scope"`
// A list of transformation rules to be applied against Kubernetes resources
// as they are selected for restoration from a Backup. Rules are executed in
// order defined - this order matters, as changes made by a rule may impact
// the filtering logic of subsequent rules. An empty list means no
// substitution will occur.
SubstitutionRules []*RestoreConfig_SubstitutionRule `protobuf:"bytes,8,rep,name=substitution_rules,json=substitutionRules,proto3" json:"substitution_rules,omitempty"`
}
func (x *RestoreConfig) Reset() {
*x = RestoreConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_gkebackup_v1_restore_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RestoreConfig) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RestoreConfig) ProtoMessage() {}
func (x *RestoreConfig) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_gkebackup_v1_restore_proto_msgTypes[1]
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 RestoreConfig.ProtoReflect.Descriptor instead.
func (*RestoreConfig) Descriptor() ([]byte, []int) {
return file_google_cloud_gkebackup_v1_restore_proto_rawDescGZIP(), []int{1}
}
func (x *RestoreConfig) GetVolumeDataRestorePolicy() RestoreConfig_VolumeDataRestorePolicy {
if x != nil {
return x.VolumeDataRestorePolicy
}
return RestoreConfig_VOLUME_DATA_RESTORE_POLICY_UNSPECIFIED
}
func (x *RestoreConfig) GetClusterResourceConflictPolicy() RestoreConfig_ClusterResourceConflictPolicy {
if x != nil {
return x.ClusterResourceConflictPolicy
}
return RestoreConfig_CLUSTER_RESOURCE_CONFLICT_POLICY_UNSPECIFIED
}
func (x *RestoreConfig) GetNamespacedResourceRestoreMode() RestoreConfig_NamespacedResourceRestoreMode {
if x != nil {
return x.NamespacedResourceRestoreMode
}
return RestoreConfig_NAMESPACED_RESOURCE_RESTORE_MODE_UNSPECIFIED
}
func (x *RestoreConfig) GetClusterResourceRestoreScope() *RestoreConfig_ClusterResourceRestoreScope {
if x != nil {
return x.ClusterResourceRestoreScope
}
return nil
}
func (m *RestoreConfig) GetNamespacedResourceRestoreScope() isRestoreConfig_NamespacedResourceRestoreScope {
if m != nil {
return m.NamespacedResourceRestoreScope
}
return nil
}
func (x *RestoreConfig) GetAllNamespaces() bool {
if x, ok := x.GetNamespacedResourceRestoreScope().(*RestoreConfig_AllNamespaces); ok {
return x.AllNamespaces
}
return false
}
func (x *RestoreConfig) GetSelectedNamespaces() *Namespaces {
if x, ok := x.GetNamespacedResourceRestoreScope().(*RestoreConfig_SelectedNamespaces); ok {
return x.SelectedNamespaces
}
return nil
}
func (x *RestoreConfig) GetSelectedApplications() *NamespacedNames {
if x, ok := x.GetNamespacedResourceRestoreScope().(*RestoreConfig_SelectedApplications); ok {
return x.SelectedApplications
}
return nil
}
func (x *RestoreConfig) GetSubstitutionRules() []*RestoreConfig_SubstitutionRule {
if x != nil {
return x.SubstitutionRules
}
return nil
}
type isRestoreConfig_NamespacedResourceRestoreScope interface {
isRestoreConfig_NamespacedResourceRestoreScope()
}
type RestoreConfig_AllNamespaces struct {
// Restore all namespaced resources in the Backup if set to "True".
// Specifying this field to "False" is an error.
AllNamespaces bool `protobuf:"varint,5,opt,name=all_namespaces,json=allNamespaces,proto3,oneof"`
}
type RestoreConfig_SelectedNamespaces struct {
// A list of selected Namespaces to restore from the Backup. The listed
// Namespaces and all resources contained in them will be restored.
SelectedNamespaces *Namespaces `protobuf:"bytes,6,opt,name=selected_namespaces,json=selectedNamespaces,proto3,oneof"`
}
type RestoreConfig_SelectedApplications struct {
// A list of selected ProtectedApplications to restore. The listed
// ProtectedApplications and all the resources to which they refer will be
// restored.
SelectedApplications *NamespacedNames `protobuf:"bytes,7,opt,name=selected_applications,json=selectedApplications,proto3,oneof"`
}
func (*RestoreConfig_AllNamespaces) isRestoreConfig_NamespacedResourceRestoreScope() {}
func (*RestoreConfig_SelectedNamespaces) isRestoreConfig_NamespacedResourceRestoreScope() {}
func (*RestoreConfig_SelectedApplications) isRestoreConfig_NamespacedResourceRestoreScope() {}
// This is a direct map to the Kubernetes GroupKind type
// [GroupKind](https://godoc.org/k8s.io/apimachinery/pkg/runtime/schema#GroupKind)
// and is used for identifying specific "types" of resources to restore.
type RestoreConfig_GroupKind struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// API group string of a Kubernetes resource, e.g.
// "apiextensions.k8s.io", "storage.k8s.io", etc.
// Note: use empty string for core API group
ResourceGroup string `protobuf:"bytes,1,opt,name=resource_group,json=resourceGroup,proto3" json:"resource_group,omitempty"`
// Kind of a Kubernetes resource, e.g.
// "CustomResourceDefinition", "StorageClass", etc.
ResourceKind string `protobuf:"bytes,2,opt,name=resource_kind,json=resourceKind,proto3" json:"resource_kind,omitempty"`
}
func (x *RestoreConfig_GroupKind) Reset() {
*x = RestoreConfig_GroupKind{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_gkebackup_v1_restore_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RestoreConfig_GroupKind) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RestoreConfig_GroupKind) ProtoMessage() {}
func (x *RestoreConfig_GroupKind) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_gkebackup_v1_restore_proto_msgTypes[3]
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 RestoreConfig_GroupKind.ProtoReflect.Descriptor instead.
func (*RestoreConfig_GroupKind) Descriptor() ([]byte, []int) {
return file_google_cloud_gkebackup_v1_restore_proto_rawDescGZIP(), []int{1, 0}
}
func (x *RestoreConfig_GroupKind) GetResourceGroup() string {
if x != nil {
return x.ResourceGroup
}
return ""
}
func (x *RestoreConfig_GroupKind) GetResourceKind() string {
if x != nil {
return x.ResourceKind
}
return ""
}
// Identifies the cluster-scoped resources to restore from the Backup.
type RestoreConfig_ClusterResourceRestoreScope struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A list of "types" of cluster-scoped resources to be restored from the
// Backup. An empty list means that NO cluster-scoped resources will be
// restored. Note that Namespaces and PersistentVolume restoration is
// handled separately and is not governed by this field.
SelectedGroupKinds []*RestoreConfig_GroupKind `protobuf:"bytes,1,rep,name=selected_group_kinds,json=selectedGroupKinds,proto3" json:"selected_group_kinds,omitempty"`
}
func (x *RestoreConfig_ClusterResourceRestoreScope) Reset() {
*x = RestoreConfig_ClusterResourceRestoreScope{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_gkebackup_v1_restore_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RestoreConfig_ClusterResourceRestoreScope) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RestoreConfig_ClusterResourceRestoreScope) ProtoMessage() {}
func (x *RestoreConfig_ClusterResourceRestoreScope) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_gkebackup_v1_restore_proto_msgTypes[4]
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 RestoreConfig_ClusterResourceRestoreScope.ProtoReflect.Descriptor instead.
func (*RestoreConfig_ClusterResourceRestoreScope) Descriptor() ([]byte, []int) {
return file_google_cloud_gkebackup_v1_restore_proto_rawDescGZIP(), []int{1, 1}
}
func (x *RestoreConfig_ClusterResourceRestoreScope) GetSelectedGroupKinds() []*RestoreConfig_GroupKind {
if x != nil {
return x.SelectedGroupKinds
}
return nil
}
// A transformation rule to be applied against Kubernetes resources as they
// are selected for restoration from a Backup. A rule contains both filtering
// logic (which resources are subject to substitution) and substitution logic.
type RestoreConfig_SubstitutionRule struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// (Filtering parameter) Any resource subject to substitution must be
// contained within one of the listed Kubernetes Namespace in the Backup.
// If this field is not provided, no namespace filtering will be performed
// (all resources in all Namespaces, including all cluster-scoped resources,
// will be candidates for substitution).
// To mix cluster-scoped and namespaced resources in the same rule, use an
// empty string ("") as one of the target namespaces.
TargetNamespaces []string `protobuf:"bytes,1,rep,name=target_namespaces,json=targetNamespaces,proto3" json:"target_namespaces,omitempty"`
// (Filtering parameter) Any resource subject to substitution must belong to
// one of the listed "types".
// If this field is not provided, no type filtering will be performed (all
// resources of all types matching previous filtering parameters will be
// candidates for substitution).
TargetGroupKinds []*RestoreConfig_GroupKind `protobuf:"bytes,2,rep,name=target_group_kinds,json=targetGroupKinds,proto3" json:"target_group_kinds,omitempty"`
// Required. This is a [JSONPath]
// (https://kubernetes.io/docs/reference/kubectl/jsonpath/)
// expression that matches specific fields of candidate
// resources and it operates as both a filtering parameter (resources that
// are not matched with this expression will not be candidates for
// substitution) as well as a field identifier (identifies exactly which
// fields out of the candidate resources will be modified).
TargetJsonPath string `protobuf:"bytes,3,opt,name=target_json_path,json=targetJsonPath,proto3" json:"target_json_path,omitempty"`
// (Filtering parameter) This is a [regular expression]
// (https://en.wikipedia.org/wiki/Regular_expression)
// that is compared against the fields matched by the target_json_path
// expression (and must also have passed the previous filters).
// Substitution will not be performed against fields whose
// value does not match this expression. If this field is NOT specified,
// then ALL fields matched by the target_json_path expression will undergo
// substitution. Note that an empty (e.g., "", rather than unspecified)
// value for for this field will only match empty fields.
OriginalValuePattern string `protobuf:"bytes,4,opt,name=original_value_pattern,json=originalValuePattern,proto3" json:"original_value_pattern,omitempty"`
// This is the new value to set for any fields that pass the filtering and
// selection criteria. To remove a value from a Kubernetes resource, either
// leave this field unspecified, or set it to the empty string ("").
NewValue string `protobuf:"bytes,5,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"`
}
func (x *RestoreConfig_SubstitutionRule) Reset() {
*x = RestoreConfig_SubstitutionRule{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_gkebackup_v1_restore_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RestoreConfig_SubstitutionRule) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RestoreConfig_SubstitutionRule) ProtoMessage() {}
func (x *RestoreConfig_SubstitutionRule) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_gkebackup_v1_restore_proto_msgTypes[5]
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 RestoreConfig_SubstitutionRule.ProtoReflect.Descriptor instead.
func (*RestoreConfig_SubstitutionRule) Descriptor() ([]byte, []int) {
return file_google_cloud_gkebackup_v1_restore_proto_rawDescGZIP(), []int{1, 2}
}
func (x *RestoreConfig_SubstitutionRule) GetTargetNamespaces() []string {
if x != nil {
return x.TargetNamespaces
}
return nil
}
func (x *RestoreConfig_SubstitutionRule) GetTargetGroupKinds() []*RestoreConfig_GroupKind {
if x != nil {
return x.TargetGroupKinds
}
return nil
}
func (x *RestoreConfig_SubstitutionRule) GetTargetJsonPath() string {
if x != nil {
return x.TargetJsonPath
}
return ""
}
func (x *RestoreConfig_SubstitutionRule) GetOriginalValuePattern() string {
if x != nil {
return x.OriginalValuePattern
}
return ""
}
func (x *RestoreConfig_SubstitutionRule) GetNewValue() string {
if x != nil {
return x.NewValue
}
return ""
}
var File_google_cloud_gkebackup_v1_restore_proto protoreflect.FileDescriptor
var file_google_cloud_gkebackup_v1_restore_proto_rawDesc = []byte{
0x0a, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x67,
0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x74,
0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x75,
0x70, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69,
0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70,
0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x1a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x67,
0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d,
0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe7, 0x09, 0x0a, 0x07, 0x52, 0x65,
0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15,
0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03,
0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f,
0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65,
0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74,
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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75,
0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73,
0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x06, 0x62,
0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x05,
0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x67, 0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x75,
0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x06, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12,
0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
0x42, 0x28, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x63,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x62, 0x61,
0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x74,
0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x06, 0x6c, 0x61, 0x62,
0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b,
0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x61,
0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c,
0x73, 0x12, 0x43, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x67, 0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73,
0x74, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f,
0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
0x03, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x44,
0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
0x0c, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65,
0x54, 0x69, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x18, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
0x73, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x16, 0x72, 0x65, 0x73,
0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x43, 0x6f,
0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x18, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
0x5f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
0x0e, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x16, 0x72, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x75,
0x6e, 0x74, 0x12, 0x39, 0x0a, 0x16, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x5f,
0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01,
0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a,
0x16, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65,
0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0,
0x41, 0x03, 0x52, 0x14, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x6f,
0x72, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67,
0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x65, 0x74, 0x61,
0x67, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x66, 0x0a, 0x05,
0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55,
0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08,
0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e,
0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x53,
0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41,
0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49,
0x4e, 0x47, 0x10, 0x05, 0x3a, 0x7d, 0xea, 0x41, 0x7a, 0x0a, 0x20, 0x67, 0x6b, 0x65, 0x62, 0x61,
0x63, 0x6b, 0x75, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x56, 0x70, 0x72, 0x6f,
0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f,
0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x6c, 0x61, 0x6e,
0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x7d,
0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x74, 0x6f,
0x72, 0x65, 0x7d, 0x22, 0xf1, 0x0e, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x7d, 0x0a, 0x1a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f,
0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b,
0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65,
0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x17, 0x76, 0x6f, 0x6c,
0x75, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x12, 0x8f, 0x01, 0x0a, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69,
0x63, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67,
0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74,
0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63,
0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x1d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x8f, 0x01, 0x0a, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73,
0x70, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72,
0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x67, 0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4e, 0x61, 0x6d, 0x65,
0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65,
0x73, 0x74, 0x6f, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x1d, 0x6e, 0x61, 0x6d, 0x65, 0x73,
0x70, 0x61, 0x63, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73,
0x74, 0x6f, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x1e, 0x63, 0x6c, 0x75,
0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65,
0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x67, 0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f,
0x72, 0x65, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x1b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53,
0x63, 0x6f, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d,
0x61, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x58, 0x0a,
0x13, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
0x61, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x62, 0x61, 0x63,
0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
0x73, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4e, 0x61, 0x6d,
0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x61, 0x0a, 0x15, 0x73, 0x65, 0x6c, 0x65, 0x63,
0x74, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e,
0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x4e, 0x61, 0x6d,
0x65, 0x73, 0x48, 0x00, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x70,
0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x68, 0x0a, 0x12, 0x73, 0x75,
0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73,
0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e,
0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
0x2e, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c,
0x65, 0x52, 0x11, 0x73, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52,
0x75, 0x6c, 0x65, 0x73, 0x1a, 0x57, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x69, 0x6e,
0x64, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x72,
0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75,
0x72, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x1a, 0x83, 0x01,
0x0a, 0x1b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x64, 0x0a,
0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
0x6b, 0x69, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x62, 0x61,
0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x69, 0x6e, 0x64, 0x52,
0x12, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x69,
0x6e, 0x64, 0x73, 0x1a, 0xa3, 0x02, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75,
0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67,
0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x09, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73,
0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x12, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f,
0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x67, 0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x47, 0x72, 0x6f, 0x75,
0x70, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x47, 0x72, 0x6f,
0x75, 0x70, 0x4b, 0x69, 0x6e, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65,
0x74, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4a, 0x73,
0x6f, 0x6e, 0x50, 0x61, 0x74, 0x68, 0x12, 0x34, 0x0a, 0x16, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e,
0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c,
0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1b, 0x0a, 0x09,
0x6e, 0x65, 0x77, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
0x08, 0x6e, 0x65, 0x77, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xaf, 0x01, 0x0a, 0x17, 0x56, 0x6f,
0x6c, 0x75, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2a, 0x0a, 0x26, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f,
0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x50, 0x4f, 0x4c,
0x49, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
0x00, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x56, 0x4f, 0x4c,
0x55, 0x4d, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x42, 0x41,
0x43, 0x4b, 0x55, 0x50, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x55, 0x53, 0x45, 0x5f,
0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x46, 0x52,
0x4f, 0x4d, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x4e,
0x4f, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x45,
0x53, 0x54, 0x4f, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x22, 0x83, 0x01, 0x0a, 0x1d,
0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43,
0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x30, 0x0a,
0x2c, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43,
0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x4c, 0x49, 0x43, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43,
0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
0x18, 0x0a, 0x14, 0x55, 0x53, 0x45, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x5f,
0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x53, 0x45,
0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10,
0x02, 0x22, 0x7f, 0x0a, 0x1d, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x52,
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4d, 0x6f,
0x64, 0x65, 0x12, 0x30, 0x0a, 0x2c, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x44,
0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x4f, 0x52,
0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x41,
0x4e, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10,
0x46, 0x41, 0x49, 0x4c, 0x5f, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x4c, 0x49, 0x43, 0x54,
0x10, 0x02, 0x42, 0x23, 0x0a, 0x21, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64,
0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72,
0x65, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x42, 0xca, 0x01, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65,
0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x52, 0x65, 0x73, 0x74, 0x6f,
0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x42, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x67, 0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70,
0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6b, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0xaa, 0x02, 0x19,
0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x47, 0x6b, 0x65,
0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x19, 0x47, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x47, 0x6b, 0x65, 0x42, 0x61, 0x63, 0x6b,
0x75, 0x70, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1c, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a,
0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x47, 0x6b, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70,
0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_google_cloud_gkebackup_v1_restore_proto_rawDescOnce sync.Once
file_google_cloud_gkebackup_v1_restore_proto_rawDescData = file_google_cloud_gkebackup_v1_restore_proto_rawDesc
)
func file_google_cloud_gkebackup_v1_restore_proto_rawDescGZIP() []byte {
file_google_cloud_gkebackup_v1_restore_proto_rawDescOnce.Do(func() {
file_google_cloud_gkebackup_v1_restore_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_gkebackup_v1_restore_proto_rawDescData)
})
return file_google_cloud_gkebackup_v1_restore_proto_rawDescData
}
var file_google_cloud_gkebackup_v1_restore_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
var file_google_cloud_gkebackup_v1_restore_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
var file_google_cloud_gkebackup_v1_restore_proto_goTypes = []interface{}{
(Restore_State)(0), // 0: google.cloud.gkebackup.v1.Restore.State
(RestoreConfig_VolumeDataRestorePolicy)(0), // 1: google.cloud.gkebackup.v1.RestoreConfig.VolumeDataRestorePolicy
(RestoreConfig_ClusterResourceConflictPolicy)(0), // 2: google.cloud.gkebackup.v1.RestoreConfig.ClusterResourceConflictPolicy
(RestoreConfig_NamespacedResourceRestoreMode)(0), // 3: google.cloud.gkebackup.v1.RestoreConfig.NamespacedResourceRestoreMode
(*Restore)(nil), // 4: google.cloud.gkebackup.v1.Restore
(*RestoreConfig)(nil), // 5: google.cloud.gkebackup.v1.RestoreConfig
nil, // 6: google.cloud.gkebackup.v1.Restore.LabelsEntry
(*RestoreConfig_GroupKind)(nil), // 7: google.cloud.gkebackup.v1.RestoreConfig.GroupKind
(*RestoreConfig_ClusterResourceRestoreScope)(nil), // 8: google.cloud.gkebackup.v1.RestoreConfig.ClusterResourceRestoreScope
(*RestoreConfig_SubstitutionRule)(nil), // 9: google.cloud.gkebackup.v1.RestoreConfig.SubstitutionRule
(*timestamp.Timestamp)(nil), // 10: google.protobuf.Timestamp
(*Namespaces)(nil), // 11: google.cloud.gkebackup.v1.Namespaces
(*NamespacedNames)(nil), // 12: google.cloud.gkebackup.v1.NamespacedNames
}
var file_google_cloud_gkebackup_v1_restore_proto_depIdxs = []int32{
10, // 0: google.cloud.gkebackup.v1.Restore.create_time:type_name -> google.protobuf.Timestamp
10, // 1: google.cloud.gkebackup.v1.Restore.update_time:type_name -> google.protobuf.Timestamp
5, // 2: google.cloud.gkebackup.v1.Restore.restore_config:type_name -> google.cloud.gkebackup.v1.RestoreConfig
6, // 3: google.cloud.gkebackup.v1.Restore.labels:type_name -> google.cloud.gkebackup.v1.Restore.LabelsEntry
0, // 4: google.cloud.gkebackup.v1.Restore.state:type_name -> google.cloud.gkebackup.v1.Restore.State
10, // 5: google.cloud.gkebackup.v1.Restore.complete_time:type_name -> google.protobuf.Timestamp
1, // 6: google.cloud.gkebackup.v1.RestoreConfig.volume_data_restore_policy:type_name -> google.cloud.gkebackup.v1.RestoreConfig.VolumeDataRestorePolicy
2, // 7: google.cloud.gkebackup.v1.RestoreConfig.cluster_resource_conflict_policy:type_name -> google.cloud.gkebackup.v1.RestoreConfig.ClusterResourceConflictPolicy
3, // 8: google.cloud.gkebackup.v1.RestoreConfig.namespaced_resource_restore_mode:type_name -> google.cloud.gkebackup.v1.RestoreConfig.NamespacedResourceRestoreMode
8, // 9: google.cloud.gkebackup.v1.RestoreConfig.cluster_resource_restore_scope:type_name -> google.cloud.gkebackup.v1.RestoreConfig.ClusterResourceRestoreScope
11, // 10: google.cloud.gkebackup.v1.RestoreConfig.selected_namespaces:type_name -> google.cloud.gkebackup.v1.Namespaces
12, // 11: google.cloud.gkebackup.v1.RestoreConfig.selected_applications:type_name -> google.cloud.gkebackup.v1.NamespacedNames
9, // 12: google.cloud.gkebackup.v1.RestoreConfig.substitution_rules:type_name -> google.cloud.gkebackup.v1.RestoreConfig.SubstitutionRule
7, // 13: google.cloud.gkebackup.v1.RestoreConfig.ClusterResourceRestoreScope.selected_group_kinds:type_name -> google.cloud.gkebackup.v1.RestoreConfig.GroupKind
7, // 14: google.cloud.gkebackup.v1.RestoreConfig.SubstitutionRule.target_group_kinds:type_name -> google.cloud.gkebackup.v1.RestoreConfig.GroupKind
15, // [15:15] is the sub-list for method output_type
15, // [15:15] is the sub-list for method input_type
15, // [15:15] is the sub-list for extension type_name
15, // [15:15] is the sub-list for extension extendee
0, // [0:15] is the sub-list for field type_name
}
func init() { file_google_cloud_gkebackup_v1_restore_proto_init() }
func file_google_cloud_gkebackup_v1_restore_proto_init() {
if File_google_cloud_gkebackup_v1_restore_proto != nil {
return
}
file_google_cloud_gkebackup_v1_common_proto_init()
if !protoimpl.UnsafeEnabled {
file_google_cloud_gkebackup_v1_restore_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Restore); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_gkebackup_v1_restore_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RestoreConfig); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_gkebackup_v1_restore_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RestoreConfig_GroupKind); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_gkebackup_v1_restore_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RestoreConfig_ClusterResourceRestoreScope); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_gkebackup_v1_restore_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RestoreConfig_SubstitutionRule); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_google_cloud_gkebackup_v1_restore_proto_msgTypes[1].OneofWrappers = []interface{}{
(*RestoreConfig_AllNamespaces)(nil),
(*RestoreConfig_SelectedNamespaces)(nil),
(*RestoreConfig_SelectedApplications)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_google_cloud_gkebackup_v1_restore_proto_rawDesc,
NumEnums: 4,
NumMessages: 6,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_google_cloud_gkebackup_v1_restore_proto_goTypes,
DependencyIndexes: file_google_cloud_gkebackup_v1_restore_proto_depIdxs,
EnumInfos: file_google_cloud_gkebackup_v1_restore_proto_enumTypes,
MessageInfos: file_google_cloud_gkebackup_v1_restore_proto_msgTypes,
}.Build()
File_google_cloud_gkebackup_v1_restore_proto = out.File
file_google_cloud_gkebackup_v1_restore_proto_rawDesc = nil
file_google_cloud_gkebackup_v1_restore_proto_goTypes = nil
file_google_cloud_gkebackup_v1_restore_proto_depIdxs = nil
}