diff --git a/googleapis/cloud/gkehub/v1beta1/membership.pb.go b/googleapis/cloud/gkehub/v1beta1/membership.pb.go index 7deb45d6d..6ea8527ba 100644 --- a/googleapis/cloud/gkehub/v1beta1/membership.pb.go +++ b/googleapis/cloud/gkehub/v1beta1/membership.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.25.0-devel // protoc v3.13.0 // source: google/cloud/gkehub/v1beta1/membership.proto @@ -49,25 +49,22 @@ const ( // of the legacy proto package is being used. const _ = proto.ProtoPackageIsVersion4 -// Specifies the infrastructure type that the API server represented by -// membership is running on. We use this field to determine pricing among -// other behavior. Each GKE distribution (on-GCP, on-Prem, on-X,...) -// will set a default while Attached Clusters -// customers will specify the type. If left unset, UNSPECIFIED is the -// default. +// Specifies the infrastructure type of a Membership. Infrastructure type is +// used by Hub to control infrastructure-specific behavior, including pricing. +// +// Each GKE distribution (on-GCP, on-Prem, on-X,...) will set this field +// automatically, but Attached Clusters customers should specify a type +// during registration. type Membership_InfrastructureType int32 const ( - // Default value for backward compatibility. Some Hub functionality may - // require users to set this value if left unspecified. + // No type was specified. Some Hub functionality may require a type be + // specified, and will not support Memberships with this value. Membership_INFRASTRUCTURE_TYPE_UNSPECIFIED Membership_InfrastructureType = 0 - // OnPrem specifies Memberships running on infrastructure that is owned or - // operated by customers on private infrastructure. GKE Distributions like - // GKE-OnPrem and GKE-OnBareMetal will set this value at Membership creation - // time by default. + // Private infrastructure that is owned or operated by customer. This + // includes GKE distributions such as GKE-OnPrem and GKE-OnBareMetal. Membership_ON_PREM Membership_InfrastructureType = 1 - // This value indicates the membership is running on public cloud - // infrastructure. + // Public cloud infrastructure. Membership_MULTI_CLOUD Membership_InfrastructureType = 2 ) @@ -112,22 +109,21 @@ func (Membership_InfrastructureType) EnumDescriptor() ([]byte, []int) { return file_google_cloud_gkehub_v1beta1_membership_proto_rawDescGZIP(), []int{0, 0} } -// Possible states of a Membership resources. +// Code describes the state of a Membership resource. type MembershipState_Code int32 const ( - // Not set. + // The code is not set. MembershipState_CODE_UNSPECIFIED MembershipState_Code = 0 - // CREATING indicates the cluster is being registered. + // The cluster is being registered. MembershipState_CREATING MembershipState_Code = 1 - // READY indicates the cluster is registered. + // The cluster is registered. MembershipState_READY MembershipState_Code = 2 - // DELETING indicates that the cluster is being unregistered. + // The cluster is being unregistered. MembershipState_DELETING MembershipState_Code = 3 - // UPDATING indicates the Membership is being updated. + // The Membership is being updated. MembershipState_UPDATING MembershipState_Code = 4 - // SERVICE_UPDATING indicates the Membership is being updated by - // the Hub Service. + // The Membership is being updated by the Hub Service. MembershipState_SERVICE_UPDATING MembershipState_Code = 5 ) @@ -184,21 +180,22 @@ type Membership struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Output only. The unique name of this domain resource in the format: - // `projects/[project_id]/locations/global/memberships/[membership_id]`. - // `membership_id` can only be set at creation time using the `membership_id` - // field in the creation request. `membership_id` must be a valid RFC 1123 - // compliant DNS label. In particular, it must be: + // Output only. The full, unique name of this Membership resource in the format + // `projects/*/locations/*/memberships/{membership_id}`, set during creation. + // + // `membership_id` must be a valid RFC 1123 compliant DNS label: + // // 1. At most 63 characters in length // 2. It must consist of lower case alphanumeric characters or `-` // 3. It must start and end with an alphanumeric character - // I.e. `membership_id` must match the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?` - // with at most 63 characters. + // + // Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, + // with a maximum length of 63 characters. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. GCP labels for this membership. Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Required. Description of this membership, limited to 63 characters. - // It must match the regex: `[a-zA-Z0-9][a-zA-Z0-9_\-\.\ ]*` + // Must match the regex: `[a-zA-Z0-9][a-zA-Z0-9_\-\.\ ]*` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // Type of resource represented by this Membership // @@ -208,20 +205,23 @@ type Membership struct { // Output only. State of the Membership resource. State *MembershipState `protobuf:"bytes,5,opt,name=state,proto3" json:"state,omitempty"` // Optional. How to identify workloads from this Membership. - // See the documentation on workload identity for more details: + // See the documentation on Workload Identity for more details: // https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity Authority *Authority `protobuf:"bytes,9,opt,name=authority,proto3" json:"authority,omitempty"` - // Output only. Timestamp for when the Membership was created. + // Output only. When the Membership was created. CreateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` - // Output only. Timestamp for when the Membership was last updated. + // Output only. When the Membership was last updated. UpdateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` - // Output only. Timestamp for when the Membership was deleted. + // Output only. When the Membership was deleted. DeleteTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=delete_time,json=deleteTime,proto3" json:"delete_time,omitempty"` // Optional. An externally-generated and managed ID for this Membership. This ID may - // still be modified after creation but it is not recommended to do so. + // be modified after creation, but this is not recommended. For GKE clusters, + // external_id is managed by the Hub API and updates will be ignored. + // // The ID must match the regex: `[a-zA-Z0-9][a-zA-Z0-9_\-\.]*` + // // If this Membership represents a Kubernetes cluster, this value should be - // set to the UUID of the kube-system namespace object. + // set to the UID of the `kube-system` namespace object. ExternalId string `protobuf:"bytes,10,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` // Output only. For clusters using Connect, the timestamp of the most recent connection // established with Google Cloud. This time is updated every several minutes, @@ -232,8 +232,7 @@ type Membership struct { // Membership resources. If a Membership resource is deleted and another // resource with the same name is created, it gets a different unique_id. UniqueId string `protobuf:"bytes,12,opt,name=unique_id,json=uniqueId,proto3" json:"unique_id,omitempty"` - // Optional. Specifies the infrastructure type that the API server represented by - // membership is running on. + // Optional. The infrastructure type this Membership is running on. InfrastructureType Membership_InfrastructureType `protobuf:"varint,13,opt,name=infrastructure_type,json=infrastructureType,proto3,enum=google.cloud.gkehub.v1beta1.Membership_InfrastructureType" json:"infrastructure_type,omitempty"` } @@ -378,26 +377,25 @@ type Membership_Endpoint struct { func (*Membership_Endpoint) isMembership_Type() {} -// MembershipEndpoint contains the information to reach a member. +// MembershipEndpoint contains information needed to contact a Kubernetes API, +// endpoint and any additional Kubernetes metadata. type MembershipEndpoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Optional. If this Membership is a Kubernetes API server hosted on GKE, this field - // will be populated and contain GKE-specific information. + // Optional. GKE-specific information. Only present if this Membership is a GKE cluster. GkeCluster *GkeCluster `protobuf:"bytes,4,opt,name=gke_cluster,json=gkeCluster,proto3" json:"gke_cluster,omitempty"` - // Output only. For Memberships that point to Kubernetes Endpoints, this field provides - // useful metadata. + // Output only. Useful Kubernetes-specific metadata. KubernetesMetadata *KubernetesMetadata `protobuf:"bytes,5,opt,name=kubernetes_metadata,json=kubernetesMetadata,proto3" json:"kubernetes_metadata,omitempty"` - // Optional. A correctly registered cluster should have the Kubernetes resources - // applied to the clusters and settle at steady states. These resources are - // needed in order to: - // * Ensure that the cluster is exclusively registered to one and only one Hub - // Membership. - // * Propagate Workload Pool Information available in the Membership Authority - // field. - // * Ensure proper initial configuration of default Hub Features. + // Optional. The in-cluster Kubernetes Resources that should be applied for a correctly + // registered cluster, in the steady state. These resources: + // + // * Ensure that the cluster is exclusively registered to one and only one + // Hub Membership. + // * Propagate Workload Pool Information available in the Membership + // Authority field. + // * Ensure proper initial configuration of default Hub Features. KubernetesResource *KubernetesResource `protobuf:"bytes,6,opt,name=kubernetes_resource,json=kubernetesResource,proto3" json:"kubernetes_resource,omitempty"` } @@ -454,49 +452,40 @@ func (x *MembershipEndpoint) GetKubernetesResource() *KubernetesResource { return nil } -// KubernetesResource contains the YAML manifests and configs for Kubernetes -// resources of the Membership in the cluster. -// Upon CreateMembership: -// - The caller should provide membership_cr_manifest if a Membership CR -// exists in the cluster. -// - The caller should provide connect_version if they wish to also install -// the Connect agent. -// - The caller should then apply resources from the successful -// GetMembership request. -// Upon UpdateMembership: -// - The caller should provide membership_cr_manifest if a Membership CR -// exists in the cluster. -// - The caller should re-apply the resources from the returned Membership. +// KubernetesResource contains the YAML manifests and configuration for +// Membership Kubernetes resources in the cluster. After CreateMembership or +// UpdateMembership, these resources should be re-applied in the cluster. type KubernetesResource struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Input only. The YAML representation of the Membership CR if already exists in the - // cluster. Leave empty if no Membership CR exists. - // The CR manifest will be used to validate that the cluster has not been - // registered with another Membership. For GKE clusters, the input from the - // caller will be ignored as Hub API server will directly fetch the - // Membership CR from the cluster. + // Input only. The YAML representation of the Membership CR. This field is ignored for GKE + // clusters where Hub can read the CR directly. + // + // Callers should provide the CR that is currently present in the cluster + // during CreateMembership or UpdateMembership, or leave this field empty if + // none exists. The CR manifest is used to validate the cluster has not been + // registered with another Membership. MembershipCrManifest string `protobuf:"bytes,1,opt,name=membership_cr_manifest,json=membershipCrManifest,proto3" json:"membership_cr_manifest,omitempty"` - // Output only. The additional Kubernetes resources that need to be applied to the cluster - // after the membership creation and every update. - // This field is only populated in the Membership returned after the - // long-running operation of Create/UpdateMembership finished, but not in - // standalone Get/ListMembership requests. - // To get the resource manifest after the initial registration, the caller - // could make an UpdateMembership call with an empty field mask. + // Output only. Additional Kubernetes resources that need to be applied to the cluster + // after Membership creation, and after every update. + // + // This field is only populated in the Membership returned from a successful + // long-running operation from CreateMembership or UpdateMembership. It is not + // populated during normal GetMembership or ListMemberships requests. To get + // the resource manifest after the initial registration, the caller should + // make a UpdateMembership call with an empty field mask. MembershipResources []*ResourceManifest `protobuf:"bytes,2,rep,name=membership_resources,json=membershipResources,proto3" json:"membership_resources,omitempty"` - // Output only. The Kubernetes resources for installing GKE Connect agent. - // This field is only populated in the Membership returned after the - // long-running operation of Create/UpdateMembership finished, but not in - // standalone Get/ListMembership requests. - // To get the resource manifest after the initial registration, the caller - // could make an UpdateMembership call with an empty field mask. + // Output only. The Kubernetes resources for installing the GKE Connect agent + // + // This field is only populated in the Membership returned from a successful + // long-running operation from CreateMembership or UpdateMembership. It is not + // populated during normal GetMembership or ListMemberships requests. To get + // the resource manifest after the initial registration, the caller should + // make a UpdateMembership call with an empty field mask. ConnectResources []*ResourceManifest `protobuf:"bytes,3,rep,name=connect_resources,json=connectResources,proto3" json:"connect_resources,omitempty"` - // Optional. The options to generate Kubernetes resources other than the default - // value supplied by the Hub API. - // Empty or unset fields will use the default value. + // Optional. Options for Kubernetes resource generation. ResourceOptions *ResourceOptions `protobuf:"bytes,4,opt,name=resource_options,json=resourceOptions,proto3" json:"resource_options,omitempty"` } @@ -560,22 +549,19 @@ func (x *KubernetesResource) GetResourceOptions() *ResourceOptions { return nil } -// ResourceOptions represents the supported options for generating the -// Kubernetes resources. +// ResourceOptions represent options for Kubernetes resource generation. type ResourceOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Optional. The connect version to generate for connect_resources. If unset, default - // to the latest GKE Connect version. - // If set to a specific Connect version, the Connect resources of the - // version will be generated. If the version does not exist or is already - // out of support window, an INVALID_ARGUMENT error will be returned. + // Optional. The Connect agent version to use for connect_resources. Defaults to the + // latest GKE Connect version. The version must be a currently supported + // version, obsolete versions will be rejected. ConnectVersion string `protobuf:"bytes,1,opt,name=connect_version,json=connectVersion,proto3" json:"connect_version,omitempty"` - // Optional. Use apiextensions/v1beta1 instead of apiextensions/v1 for - // CustomResourceDefinition resource. - // This option should be set for clusters with Kubernetes apiserver version + // Optional. Use `apiextensions/v1beta1` instead of `apiextensions/v1` for + // CustomResourceDefinition resources. + // This option should be set for clusters with Kubernetes apiserver versions // <1.16. V1Beta1Crd bool `protobuf:"varint,2,opt,name=v1beta1_crd,json=v1beta1Crd,proto3" json:"v1beta1_crd,omitempty"` } @@ -626,7 +612,7 @@ func (x *ResourceOptions) GetV1Beta1Crd() bool { return false } -// ResourceManifest represents a Kubernetes resource to be applied to +// ResourceManifest represents a single Kubernetes resource to be applied to // the cluster. type ResourceManifest struct { state protoimpl.MessageState @@ -635,10 +621,11 @@ type ResourceManifest struct { // YAML manifest of the resource. Manifest string `protobuf:"bytes,1,opt,name=manifest,proto3" json:"manifest,omitempty"` - // Specifies whether the resource provided in the manifest is cluster_scoped. - // If set to false, the assumption is that it is namespace scoped. - // This field is used for default REST mapper when applying the resource - // to a cluster. + // Whether the resource provided in the manifest is `cluster_scoped`. + // If unset, the manifest is assumed to be namespace scoped. + // + // This field is used for REST mapping when applying the resource in a + // cluster. ClusterScoped bool `protobuf:"varint,2,opt,name=cluster_scoped,json=clusterScoped,proto3" json:"cluster_scoped,omitempty"` } @@ -688,17 +675,17 @@ func (x *ResourceManifest) GetClusterScoped() bool { return false } -// GkeCluster represents a k8s cluster on GKE. +// GkeCluster contains information specific to GKE clusters. type GkeCluster struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Immutable. Self-link of the GCP resource for the GKE cluster. - // For example: - // //container.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster - // Using "zones" instead of "locations" is also valid. - // It can be at the most 1000 characters in length. + // Immutable. Self-link of the GCP resource for the GKE cluster. For example: + // + // //container.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster + // + // Zonal clusters are also supported. ResourceLink string `protobuf:"bytes,1,opt,name=resource_link,json=resourceLink,proto3" json:"resource_link,omitempty"` } @@ -742,8 +729,7 @@ func (x *GkeCluster) GetResourceLink() string { } // KubernetesMetadata provides informational metadata for Memberships -// that are created from Kubernetes Endpoints (currently, these are equivalent -// to Kubernetes clusters). +// representing Kubernetes clusters. type KubernetesMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -752,9 +738,9 @@ type KubernetesMetadata struct { // Output only. Kubernetes API server version string as reported by '/version'. KubernetesApiServerVersion string `protobuf:"bytes,1,opt,name=kubernetes_api_server_version,json=kubernetesApiServerVersion,proto3" json:"kubernetes_api_server_version,omitempty"` // Output only. Node providerID as reported by the first node in the list of nodes on - // the Kubernetes endpoint. It should be noted that some Kubernetes platforms - // (like GKE-on-GCP) support zero-node clusters. For these platforms, the - // node_count will be zero and the node_provider_id will be empty. + // the Kubernetes endpoint. On Kubernetes platforms that support zero-node + // clusters (like GKE-on-GCP), the node_count will be zero and the + // node_provider_id will be empty. NodeProviderId string `protobuf:"bytes,2,opt,name=node_provider_id,json=nodeProviderId,proto3" json:"node_provider_id,omitempty"` // Output only. Node count as reported by Kubernetes nodes resources. NodeCount int32 `protobuf:"varint,3,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"` @@ -844,9 +830,6 @@ func (x *KubernetesMetadata) GetUpdateTime() *timestamppb.Timestamp { } // Authority encodes how Google will recognize identities from this Membership. -// A workload with a token from this oidc_issuer can call the IAM credentials -// API for the provided identity_namespace and identity_provider; the workload -// will receive a Google OAuth token that it can use for further API calls. // See the workload identity documentation for more details: // https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity type Authority struct { @@ -854,23 +837,26 @@ type Authority struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Optional. A JWT issuer URI. - // If set, then Google will attempt OIDC discovery on this URI, and allow - // valid OIDC tokens from this issuer to authenticate within the below - // identity namespace. + // Optional. A JSON Web Token (JWT) issuer URI. `issuer` must start with `https://` and + // be a valid URL with length <2000 characters. + // + // If set, then Google will allow valid OIDC tokens from this issuer to + // authenticate within the workload_identity_pool. OIDC discovery will be + // performed on this URI to validate tokens from the issuer. // - // This can be updated from a non-empty to empty value and vice-versa. - // But cannot be changed from one non-empty value to another. - // Setting to empty will disable Workload Identity. issuer should be a valid - // URL of length < 2000 that can be parsed, and must start with https://. + // Clearing `issuer` disables Workload Identity. `issuer` cannot be directly + // modified; it must be cleared (and Workload Identity disabled) before using + // a new issuer (and re-enabling Workload Identity). Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"` - // Output only. The name of the workload identity pool in which the above issuer will be - // recognized. There is a single Workload Identity Pool per Hub that is shared - // between all Memberships that belong to this Hub. For a Hub hosted in - // {PROJECT_ID}, the workload pool format is {PROJECT_ID}.hub.id.goog, + // Output only. The name of the workload identity pool in which `issuer` will be + // recognized. + // + // There is a single Workload Identity Pool per Hub that is shared + // between all Memberships that belong to that Hub. For a Hub hosted in + // {PROJECT_ID}, the workload pool format is `{PROJECT_ID}.hub.id.goog`, // although this is subject to change in newer versions of this API. WorkloadIdentityPool string `protobuf:"bytes,2,opt,name=workload_identity_pool,json=workloadIdentityPool,proto3" json:"workload_identity_pool,omitempty"` - // Output only. An identity provider that reflects this issuer in the workload identity + // Output only. An identity provider that reflects the `issuer` in the workload identity // pool. IdentityProvider string `protobuf:"bytes,3,opt,name=identity_provider,json=identityProvider,proto3" json:"identity_provider,omitempty"` } @@ -934,15 +920,13 @@ type MembershipState struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Output only. Code indicating the state of the Membership resource. + // Output only. The current state of the Membership resource. Code MembershipState_Code `protobuf:"varint,1,opt,name=code,proto3,enum=google.cloud.gkehub.v1beta1.MembershipState_Code" json:"code,omitempty"` - // Human readable description of the issue. - // This field is deprecated, and is never set by the Hub Service. + // This field is never set by the Hub Service. // // Deprecated: Do not use. Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - // The last update time of this state by the controllers - // This field is deprecated, and is never set by the Hub Service. + // This field is never set by the Hub Service. // // Deprecated: Do not use. UpdateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` @@ -1009,8 +993,8 @@ type ListMembershipsRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The parent in whose context the memberships are listed. The parent value - // is in the format: `projects/[project_id]/locations/global`. + // Required. The parent (project and location) where the Memberships will be listed. + // Specified in the format `projects/*/locations/*`. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Optional. When requesting a 'page' of resources, `page_size` specifies number of // resources to return. If unspecified or set to 0, all resources will @@ -1020,29 +1004,29 @@ type ListMembershipsRequest struct { // specifies the position in the list from where to continue listing the // resources. PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // Optional. Lists the Memberships that match the filter expression. A filter expression - // filters the resources listed in the response. The expression must be of - // the form ` ` where operators: `<`, `>`, `<=`, - // `>=`, - // `!=`, `=`, `:` are supported (colon `:` represents a HAS operator which is - // roughly synonymous with equality). can refer to a proto or JSON - // field, or a synthetic field. Field names can be camelCase or snake_case. + // Optional. Lists Memberships that match the filter expression, following the syntax + // outlined in https://google.aip.dev/160. // // Examples: - // - Filter by name: - // name = "projects/foo-proj/locations/global/membership/bar // - // - Filter by labels: - // - Resources that have a key called `foo` - // labels.foo:* - // - Resources that have a key called `foo` whose value is `bar` - // labels.foo = bar + // - Name is `bar` in project `foo-proj` and location `global`: + // + // name = "projects/foo-proj/locations/global/membership/bar" + // + // - Memberships that have a label called `foo`: + // + // labels.foo:* // - // - Filter by state: - // - Members in CREATING state. - // state = CREATING + // - Memberships that have a label called `foo` whose value is `bar`: + // + // labels.foo = bar + // + // - Memberships in the CREATING state: + // + // state = CREATING Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` - // Optional. Field to use to sort the list. + // Optional. One or more fields to compare and use to sort the output. + // See https://google.aip.dev/132#ordering. OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` } @@ -1119,7 +1103,7 @@ type ListMembershipsResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The list of Memberships contained within the parent. + // The list of matching Memberships. Resources []*Membership `protobuf:"bytes,1,rep,name=resources,proto3" json:"resources,omitempty"` // A token to request the next page of resources from the // `ListMemberships` method. The value of an empty string means that @@ -1188,8 +1172,8 @@ type GetMembershipRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The Membership resource name in the format: - // `projects/[project_id]/locations/global/memberships/[membership_id]` + // Required. The Membership resource name in the format + // `projects/*/locations/*/memberships/*`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } @@ -1238,18 +1222,20 @@ type CreateMembershipRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The parent in whose context the membership is created. The parent value is - // in the format: `projects/[project_id]/locations/global`. + // Required. The parent (project and location) where the Memberships will be created. + // Specified in the format `projects/*/locations/*`. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Required. Client chosen ID for the membership. The ID must be a valid RFC 1123 - // compliant DNS label. In particular, the ID must be: + // Required. Client chosen ID for the membership. `membership_id` must be a valid RFC + // 1123 compliant DNS label: + // // 1. At most 63 characters in length // 2. It must consist of lower case alphanumeric characters or `-` // 3. It must start and end with an alphanumeric character - // I.e. ID must match the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?` with at most - // 63 characters. + // + // Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, + // with a maximum length of 63 characters. MembershipId string `protobuf:"bytes,2,opt,name=membership_id,json=membershipId,proto3" json:"membership_id,omitempty"` - // Required. The resource to add. + // Required. The membership to create. Resource *Membership `protobuf:"bytes,3,opt,name=resource,proto3" json:"resource,omitempty"` } @@ -1312,8 +1298,8 @@ type DeleteMembershipRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The membership resource name in the format: - // `projects/[project_id]/locations/global/memberships/[membership_id]` + // Required. The Membership resource name in the format + // `projects/*/locations/*/memberships/*`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } @@ -1432,25 +1418,23 @@ func (x *UpdateMembershipRequest) GetResource() *Membership { // Request message for `GkeHubMembershipService.GenerateConnectManifest` // method. -// Bes ure to follow the practice in go/gkeconnect_agent_manifest before -// making changes to the proto. +// . type GenerateConnectManifestRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The membership resource the connect agent is associated with. - // `projects/[project_id]/locations/global/memberships/[membership_id]`. + // Required. The Membership resource name the Agent will associate with, in the format + // `projects/*/locations/*/memberships/*`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. The connect agent to generate manifest for. ConnectAgent *ConnectAgent `protobuf:"bytes,2,opt,name=connect_agent,json=connectAgent,proto3" json:"connect_agent,omitempty"` - // Optional. The version to use for connect agent. - // If empty, the current default version will be used. + // Optional. The Connect agent version to use. Defaults to the most current version. Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` // Optional. If true, generate the resources for upgrade only. Some resources - // (e.g. secrets) generated for installation will be excluded. + // generated only for installation (e.g. secrets) will be excluded. IsUpgrade bool `protobuf:"varint,4,opt,name=is_upgrade,json=isUpgrade,proto3" json:"is_upgrade,omitempty"` - // Optional. The registry to fetch connect agent image; default to + // Optional. The registry to fetch the connect agent image from. Defaults to // gcr.io/gkeconnect. Registry string `protobuf:"bytes,5,opt,name=registry,proto3" json:"registry,omitempty"` // Optional. The image pull secret content for the registry, if not public. @@ -1531,8 +1515,8 @@ func (x *GenerateConnectManifestRequest) GetImagePullSecretContent() []byte { return nil } -// Response message for `GkeHubService.GenerateConnectManifest` -// method. +// GenerateConnectManifestResponse contains manifest information for +// installing/upgrading a Connect agent. type GenerateConnectManifestResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1582,8 +1566,8 @@ func (x *GenerateConnectManifestResponse) GetManifest() []*ConnectAgentResource return nil } -// ConnectAgentResource represents a Kubernetes resource manifest for connect -// agent deployment. +// ConnectAgentResource represents a Kubernetes resource manifest for Connect +// Agent deployment. type ConnectAgentResource struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1641,7 +1625,7 @@ func (x *ConnectAgentResource) GetManifest() string { return "" } -// TypeMeta is the type information needed for content unmarshalling of the +// TypeMeta is the type information needed for content unmarshalling of // Kubernetes resources in the manifest. type TypeMeta struct { state protoimpl.MessageState @@ -1706,14 +1690,21 @@ type ConnectAgent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Optional. Deprecated. Do not set. + // Do not set. + // + // Deprecated: Do not use. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Optional. URI of the proxy to reach gkeconnect.googleapis.com. - // The format must be in the form http(s)://{proxy_address}, - // depends on HTTP/HTTPS protocol supported by the proxy. This will direct - // connect agent's outbound traffic through a HTTP(S) proxy. + // Optional. URI of a proxy if connectivity from the agent to gkeconnect.googleapis.com + // requires the use of a proxy. Format must be in the form + // `http(s)://{proxy_address}`, depending on the HTTP/HTTPS protocol + // supported by the proxy. This will direct the connect agent's outbound + // traffic through a HTTP(S) proxy. Proxy []byte `protobuf:"bytes,2,opt,name=proxy,proto3" json:"proxy,omitempty"` - // Optional. Namespace for GKE Connect agent resources. If empty, uses 'gke-connect'. + // Optional. Namespace for GKE Connect agent resources. Defaults to `gke-connect`. + // + // The Connect Agent is authorized automatically when run in the default + // namespace. Otherwise, explicit authorization must be granted with an + // additional IAM binding. Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` } @@ -1749,6 +1740,7 @@ func (*ConnectAgent) Descriptor() ([]byte, []int) { return file_google_cloud_gkehub_v1beta1_membership_proto_rawDescGZIP(), []int{19} } +// Deprecated: Do not use. func (x *ConnectAgent) GetName() string { if x != nil { return x.Name @@ -1777,16 +1769,14 @@ type ValidateExclusivityRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The desired parent collection of the membership to be created in the - // format: - // `projects/[project_id]/locations/global`. + // Required. The parent (project and location) where the Memberships will be created. + // Specified in the format `projects/*/locations/*`. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Optional. The YAML of the membership CR in the cluster. Empty if the membership // CR does not exist. CrManifest string `protobuf:"bytes,2,opt,name=cr_manifest,json=crManifest,proto3" json:"cr_manifest,omitempty"` - // Required. The membership name under the "name" that could be created if the - // validation succeed. The method only does validation in anticipation - // of a CreateMembership call. + // Required. The intended membership name under the `parent`. This method only does + // validation in anticipation of a CreateMembership call with the same name. IntendedMembership string `protobuf:"bytes,3,opt,name=intended_membership,json=intendedMembership,proto3" json:"intended_membership,omitempty"` } @@ -1849,11 +1839,12 @@ type ValidateExclusivityResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The status.Code contains the validation result. As such, - // * OK means that exclusivity may be obtained if the manifest produced by - // GenerateExclusivityManifest can successfully be applied. - // * ALREADY_EXISTS means that the Membership CRD is already owned by another - // Hub. See status.message for more information when this occurs. + // The validation result. + // + // * `OK` means that exclusivity is validated, assuming the manifest produced + // by GenerateExclusivityManifest is successfully applied. + // * `ALREADY_EXISTS` means that the Membership CRD is already owned by + // another Hub. See `status.message` for more information. Status *status.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` } @@ -1902,8 +1893,8 @@ type GenerateExclusivityManifestRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The membership the cluster corresponds to in the format: - // `projects/[project_id]/locations/global/memberships/[membership_id]`. + // Required. The Membership resource name in the format + // `projects/*/locations/*/memberships/*`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. The YAML manifest of the membership CRD retrieved by // `kubectl get customresourcedefinitions membership`. @@ -2422,189 +2413,195 @@ var file_google_cloud_gkehub_v1beta1_membership_proto_rawDesc = []byte{ 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x65, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x19, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x21, 0x0a, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x95, 0x01, - 0x0a, 0x1a, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x72, 0x5f, - 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x63, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, - 0x34, 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x68, 0x69, 0x70, 0x22, 0x49, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0x8b, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, - 0x6c, 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x72, 0x64, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x63, 0x72, 0x64, - 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x72, 0x5f, 0x6d, - 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x0a, 0x63, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x22, 0x69, - 0x0a, 0x23, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x72, 0x64, 0x5f, 0x6d, 0x61, 0x6e, - 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x64, - 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x5f, 0x6d, - 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, - 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x22, 0xc7, 0x02, 0x0a, 0x11, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, - 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, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, + 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x21, 0x0a, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x95, 0x01, 0x0a, + 0x1a, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x72, 0x5f, 0x6d, + 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0a, 0x63, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x34, + 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x68, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x22, 0x49, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0x8b, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x6c, + 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x26, 0x0a, 0x0c, 0x63, 0x72, 0x64, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x63, 0x72, 0x64, 0x4d, + 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x72, 0x5f, 0x6d, 0x61, + 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x0a, 0x63, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x22, 0x69, 0x0a, + 0x23, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x72, 0x64, 0x5f, 0x6d, 0x61, 0x6e, 0x69, + 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x64, 0x4d, + 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x5f, 0x6d, 0x61, + 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, + 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x22, 0xc7, 0x02, 0x0a, 0x11, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, + 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 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, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, - 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x76, 0x65, - 0x72, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x76, - 0x65, 0x72, 0x62, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x2e, 0x0a, - 0x10, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x63, 0x61, - 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x24, 0x0a, - 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x32, 0xe6, 0x0e, 0x0a, 0x17, 0x47, 0x6b, 0x65, 0x48, 0x75, 0x62, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0xc3, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, - 0x69, 0x70, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, - 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0xda, 0x41, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xb0, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 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, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x06, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x76, 0x65, 0x72, + 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x76, 0x65, + 0x72, 0x62, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x2e, 0x0a, 0x10, + 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x63, 0x61, 0x6e, + 0x63, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0b, + 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x32, 0xe6, 0x0e, 0x0a, 0x17, 0x47, 0x6b, 0x65, 0x48, 0x75, 0x62, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xc3, + 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, + 0x70, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x68, 0x69, 0x70, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2f, 0x2a, - 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xf2, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x12, 0xb0, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2f, 0x2a, 0x7d, + 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xf2, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x34, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, + 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, + 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x88, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x22, 0x34, 0x2f, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, + 0x3a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0xda, 0x41, 0x1d, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x2c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x69, 0x64, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xd9, 0x01, 0x0a, + 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, + 0x70, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x2a, 0x34, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, + 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0xca, 0x41, 0x2a, 0x0a, 0x15, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xee, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, - 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x88, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x22, 0x34, 0x2f, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, - 0x73, 0x3a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0xda, 0x41, 0x1d, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x69, 0x64, 0xca, 0x41, 0x1f, 0x0a, 0x0a, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xd9, 0x01, - 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, - 0x69, 0x70, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x6f, 0x6e, 0x22, 0x84, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x32, 0x34, 0x2f, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2f, 0x2a, + 0x7d, 0x3a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0xda, 0x41, 0x19, 0x6e, 0x61, + 0x6d, 0x65, 0x2c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xea, 0x01, 0x0a, 0x17, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x6e, + 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x2a, - 0x34, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0xca, 0x41, 0x2a, 0x0a, - 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xee, 0x01, 0x0a, 0x10, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x34, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, - 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, - 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x32, 0x34, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2f, - 0x2a, 0x7d, 0x3a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0xda, 0x41, 0x19, 0x6e, - 0x61, 0x6d, 0x65, 0x2c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xea, 0x01, 0x0a, 0x17, 0x47, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x12, 0x4c, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x61, - 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0xda, 0x01, 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x37, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, + 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, + 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x12, 0x48, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x3a, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x12, 0xfa, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x6e, 0x69, 0x66, + 0x65, 0x73, 0x74, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x12, 0x4c, 0x2f, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, - 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0xda, 0x01, 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, - 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, - 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x45, - 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x12, 0x48, 0x2f, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, - 0x3a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x12, 0xfa, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x6e, 0x69, - 0x66, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x6c, - 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x12, - 0x50, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x78, - 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, - 0x74, 0x1a, 0x49, 0xca, 0x41, 0x15, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, - 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x66, 0x0a, 0x1f, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x12, 0x50, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, + 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, + 0x6c, 0x75, 0x73, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, + 0x1a, 0x49, 0xca, 0x41, 0x15, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xc3, 0x01, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x50, 0x01, 0x5a, 0x41, 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, 0x68, 0x75, 0x62, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x67, 0x6b, - 0x65, 0x68, 0x75, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x68, 0x75, 0x62, 0xaa, 0x02, 0x1b, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x47, 0x6b, 0x65, 0x48, 0x75, 0x62, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, + 0x61, 0x31, 0xca, 0x02, 0x1b, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x5c, 0x47, 0x6b, 0x65, 0x48, 0x75, 0x62, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0xea, 0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x3a, 0x3a, 0x47, 0x6b, 0x65, 0x48, 0x75, 0x62, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3052,27 +3049,28 @@ const _ = grpc.SupportPackageIsVersion6 type GkeHubMembershipServiceClient interface { // Lists Memberships in a given project and location. ListMemberships(ctx context.Context, in *ListMembershipsRequest, opts ...grpc.CallOption) (*ListMembershipsResponse, error) - // Gets details of a single Membership. + // Gets the details of a Membership. GetMembership(ctx context.Context, in *GetMembershipRequest, opts ...grpc.CallOption) (*Membership, error) // Adds a new Membership. CreateMembership(ctx context.Context, in *CreateMembershipRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) - // Removes a single Membership. + // Removes a Membership. DeleteMembership(ctx context.Context, in *DeleteMembershipRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) // Updates an existing Membership. UpdateMembership(ctx context.Context, in *UpdateMembershipRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) - // Generate the manifest for deployment of GKE connect agent. + // Generates the manifest for deployment of the GKE connect agent. GenerateConnectManifest(ctx context.Context, in *GenerateConnectManifestRequest, opts ...grpc.CallOption) (*GenerateConnectManifestResponse, error) // ValidateExclusivity validates the state of exclusivity in the cluster. // The validation does not depend on an existing Hub membership resource. ValidateExclusivity(ctx context.Context, in *ValidateExclusivityRequest, opts ...grpc.CallOption) (*ValidateExclusivityResponse, error) // GenerateExclusivityManifest generates the manifests to update the // exclusivity artifacts in the cluster if needed. - // Exclusivity artifacts include the membership customer resource definition - // (CRD) and the singleton membership custom resource (CR). - // Combined with ValidateExclusivity, exclusivity - // artifacts guarantee that a Kubernetes cluster is only registered to - // a single GKE Hub. - // The membership CRD is versioned, and may require conversion when the GKE + // + // Exclusivity artifacts include the Membership custom resource definition + // (CRD) and the singleton Membership custom resource (CR). Combined with + // ValidateExclusivity, exclusivity artifacts guarantee that a Kubernetes + // cluster is only registered to a single GKE Hub. + // + // The Membership CRD is versioned, and may require conversion when the GKE // Hub API server begins serving a newer version of the CRD and // corresponding CR. The response will be the converted CRD and CR if there // are any differences between the versions. @@ -3163,27 +3161,28 @@ func (c *gkeHubMembershipServiceClient) GenerateExclusivityManifest(ctx context. type GkeHubMembershipServiceServer interface { // Lists Memberships in a given project and location. ListMemberships(context.Context, *ListMembershipsRequest) (*ListMembershipsResponse, error) - // Gets details of a single Membership. + // Gets the details of a Membership. GetMembership(context.Context, *GetMembershipRequest) (*Membership, error) // Adds a new Membership. CreateMembership(context.Context, *CreateMembershipRequest) (*longrunning.Operation, error) - // Removes a single Membership. + // Removes a Membership. DeleteMembership(context.Context, *DeleteMembershipRequest) (*longrunning.Operation, error) // Updates an existing Membership. UpdateMembership(context.Context, *UpdateMembershipRequest) (*longrunning.Operation, error) - // Generate the manifest for deployment of GKE connect agent. + // Generates the manifest for deployment of the GKE connect agent. GenerateConnectManifest(context.Context, *GenerateConnectManifestRequest) (*GenerateConnectManifestResponse, error) // ValidateExclusivity validates the state of exclusivity in the cluster. // The validation does not depend on an existing Hub membership resource. ValidateExclusivity(context.Context, *ValidateExclusivityRequest) (*ValidateExclusivityResponse, error) // GenerateExclusivityManifest generates the manifests to update the // exclusivity artifacts in the cluster if needed. - // Exclusivity artifacts include the membership customer resource definition - // (CRD) and the singleton membership custom resource (CR). - // Combined with ValidateExclusivity, exclusivity - // artifacts guarantee that a Kubernetes cluster is only registered to - // a single GKE Hub. - // The membership CRD is versioned, and may require conversion when the GKE + // + // Exclusivity artifacts include the Membership custom resource definition + // (CRD) and the singleton Membership custom resource (CR). Combined with + // ValidateExclusivity, exclusivity artifacts guarantee that a Kubernetes + // cluster is only registered to a single GKE Hub. + // + // The Membership CRD is versioned, and may require conversion when the GKE // Hub API server begins serving a newer version of the CRD and // corresponding CR. The response will be the converted CRD and CR if there // are any differences between the versions. diff --git a/regen.txt b/regen.txt index c79e53713..900fd3e4b 100644 --- a/regen.txt +++ b/regen.txt @@ -1 +1 @@ -38cb5ce59453ce509773afcdfc72764441a4b531 \ No newline at end of file +b71a6e53e944167cb4bcec042210d8cf2a9e40ca \ No newline at end of file