diff --git a/config/tests/samples/create/harness.go b/config/tests/samples/create/harness.go index 7c1ce6bd3a..5d4857db50 100644 --- a/config/tests/samples/create/harness.go +++ b/config/tests/samples/create/harness.go @@ -636,6 +636,7 @@ func MaybeSkip(t *testing.T, name string, resources []*unstructured.Unstructured case schema.GroupKind{Group: "gkehub.cnrm.cloud.google.com", Kind: "GKEHubFeature"}: case schema.GroupKind{Group: "cloudfunctions.cnrm.cloud.google.com", Kind: "CloudFunctionsFunction"}: + case schema.GroupKind{Group: "cloudids.cnrm.cloud.google.com", Kind: "CloudIDSEndpoint"}: case schema.GroupKind{Group: "containerattached.cnrm.cloud.google.com", Kind: "ContainerAttachedCluster"}: diff --git a/mockgcp/Makefile b/mockgcp/Makefile index bdb92dfcee..1c62f85850 100644 --- a/mockgcp/Makefile +++ b/mockgcp/Makefile @@ -26,6 +26,7 @@ gen-proto: generate-protos-from-openapi --grpc-gateway_opt paths=source_relative \ --experimental_allow_proto3_optional \ ./apis/mockgcp/cloud/bigquery/v2/*.proto \ + ./apis/mockgcp/cloud/ids/v1/*.proto \ ./apis/mockgcp/cloud/servicenetworking/v1/*.proto \ ./apis/mockgcp/cloud/resourcemanager/v1/*.proto \ ./apis/mockgcp/storage/v1/*.proto \ @@ -87,4 +88,8 @@ generate-protos-from-openapi: mkdir -p apis/mockgcp/storage/v1/ cd tools/gapic; go run . --proto-version=2 ../../temp/storage-v1.json > ../../apis/mockgcp/storage/v1/service.proto - rm -r temp \ No newline at end of file + wget -O temp/ids-api-v1.json https://raw.githubusercontent.com/googleapis/google-api-go-client/b49e3b908a8ed562e068736f1c42e992538ba6e0/ids/v1/ids-api.json + mkdir -p apis/mockgcp/cloud/ids/v1/ + cd tools/gapic; go run . --proto-version=2 ../../temp/ids-api-v1.json > ../../apis/mockgcp/cloud/ids/v1/service.proto + + rm -r temp diff --git a/mockgcp/apis/mockgcp/cloud/ids/v1/service.proto b/mockgcp/apis/mockgcp/cloud/ids/v1/service.proto new file mode 100644 index 0000000000..d694e5fe07 --- /dev/null +++ b/mockgcp/apis/mockgcp/cloud/ids/v1/service.proto @@ -0,0 +1,202 @@ +// Copyright 2024 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. + +syntax = "proto2"; +package google.cloud.ids.v1; +import "google/api/annotations.proto"; +import "google/longrunning/operations.proto"; +import "google/protobuf/any.proto"; +import "google/protobuf/timestamp.proto"; +option go_package = "cloud.google.com/go/ids/apiv1/idspb;idspb"; +service ProjectsServer { +} +service ProjectsLocationsServer { + rpc GetProjectsLocation(GetProjectsLocationRequest) returns (Location){ + option (google.api.http) = { + get: "/v1/{name=projects/*/locations/*}" + }; +} +; + rpc ListProjectsLocations(ListProjectsLocationsRequest) returns (ListLocationsResponse){ + option (google.api.http) = { + get: "/v1/{name=projects/*}/locations" + }; +} +; +} +service ProjectsLocationsEndpointsServer { + rpc CreateProjectsLocationsEndpoint(CreateProjectsLocationsEndpointRequest) returns (.google.longrunning.Operation){ + option (google.api.http) = { + post: "/v1/{parent=projects/*/locations/*}/endpoints" + body: "projects_locations_endpoint" + }; +} +; + rpc DeleteProjectsLocationsEndpoint(DeleteProjectsLocationsEndpointRequest) returns (.google.longrunning.Operation){ + option (google.api.http) = { + delete: "/v1/{name=projects/*/locations/*/endpoints/*}" + }; +} +; + rpc GetProjectsLocationsEndpoint(GetProjectsLocationsEndpointRequest) returns (Endpoint){ + option (google.api.http) = { + get: "/v1/{name=projects/*/locations/*/endpoints/*}" + }; +} +; + rpc ListProjectsLocationsEndpoints(ListProjectsLocationsEndpointsRequest) returns (ListEndpointsResponse){ + option (google.api.http) = { + get: "/v1/{parent=projects/*/locations/*}/endpoints" + }; +} +; + rpc PatchProjectsLocationsEndpoint(PatchProjectsLocationsEndpointRequest) returns (.google.longrunning.Operation){ + option (google.api.http) = { + patch: "/v1/{name=projects/*/locations/*/endpoints/*}" + body: "projects_locations_endpoint" + }; +} +; +} +message AuditConfig { + repeated AuditLogConfig audit_log_configs = 1 [json_name="auditLogConfigs"]; + optional string service = 2 [json_name="service"]; +} +message AuditLogConfig { + repeated string exempted_members = 1 [json_name="exemptedMembers"]; + optional string log_type = 2 [json_name="logType"]; +} +message Binding { + optional Expr condition = 1 [json_name="condition"]; + repeated string members = 2 [json_name="members"]; + optional string role = 3 [json_name="role"]; +} +message CancelOperationRequest { +} +message Empty { +} +message Endpoint { + optional .google.protobuf.Timestamp create_time = 1 [json_name="createTime"]; + optional string description = 2 [json_name="description"]; + optional string endpoint_forwarding_rule = 3 [json_name="endpointForwardingRule"]; + optional string endpoint_ip = 4 [json_name="endpointIp"]; + map labels = 5 [json_name="labels"]; + optional string name = 6 [json_name="name"]; + optional string network = 7 [json_name="network"]; + optional bool satisfies_pzi = 8 [json_name="satisfiesPzi"]; + optional bool satisfies_pzs = 9 [json_name="satisfiesPzs"]; + optional string severity = 10 [json_name="severity"]; + optional string state = 11 [json_name="state"]; + repeated string threat_exceptions = 12 [json_name="threatExceptions"]; + optional bool traffic_logs = 13 [json_name="trafficLogs"]; + optional .google.protobuf.Timestamp update_time = 14 [json_name="updateTime"]; +} +message Expr { + optional string description = 1 [json_name="description"]; + optional string expression = 2 [json_name="expression"]; + optional string location = 3 [json_name="location"]; + optional string title = 4 [json_name="title"]; +} +message ListEndpointsResponse { + repeated Endpoint endpoints = 1 [json_name="endpoints"]; + optional string next_page_token = 2 [json_name="nextPageToken"]; + repeated string unreachable = 3 [json_name="unreachable"]; +} +message ListLocationsResponse { + repeated Location locations = 1 [json_name="locations"]; + optional string next_page_token = 2 [json_name="nextPageToken"]; +} +message ListOperationsResponse { + optional string next_page_token = 1 [json_name="nextPageToken"]; + repeated .google.longrunning.Operation operations = 2 [json_name="operations"]; +} +message Location { + optional string display_name = 1 [json_name="displayName"]; + map labels = 2 [json_name="labels"]; + optional string location_id = 3 [json_name="locationId"]; + map metadata = 4 [json_name="metadata"]; + optional string name = 5 [json_name="name"]; +} +message Operation { + optional bool done = 1 [json_name="done"]; + optional Status error = 2 [json_name="error"]; + map metadata = 3 [json_name="metadata"]; + optional string name = 4 [json_name="name"]; + map response = 5 [json_name="response"]; +} +message OperationMetadata { + optional string api_version = 1 [json_name="apiVersion"]; + optional .google.protobuf.Timestamp create_time = 2 [json_name="createTime"]; + optional .google.protobuf.Timestamp end_time = 3 [json_name="endTime"]; + optional bool requested_cancellation = 4 [json_name="requestedCancellation"]; + optional string status_message = 5 [json_name="statusMessage"]; + optional string target = 6 [json_name="target"]; + optional string verb = 7 [json_name="verb"]; +} +message Policy { + repeated AuditConfig audit_configs = 1 [json_name="auditConfigs"]; + repeated Binding bindings = 2 [json_name="bindings"]; + optional bytes etag = 3 [json_name="etag"]; + optional int32 version = 4 [json_name="version"]; +} +message SetIamPolicyRequest { + optional Policy policy = 1 [json_name="policy"]; + optional string update_mask = 2 [json_name="updateMask"]; +} +message Status { + optional int32 code = 1 [json_name="code"]; + repeated .google.protobuf.Any details = 2 [json_name="details"]; + optional string message = 3 [json_name="message"]; +} +message TestIamPermissionsRequest { + repeated string permissions = 1 [json_name="permissions"]; +} +message TestIamPermissionsResponse { + repeated string permissions = 1 [json_name="permissions"]; +} +message GetProjectsLocationRequest { + optional string name = 1; +} +message ListProjectsLocationsRequest { + optional string filter = 1; + optional string name = 2; + optional int32 page_size = 3; + optional string page_token = 4; +} +message CreateProjectsLocationsEndpointRequest { + optional string endpoint_id = 1; + optional string parent = 2; + optional string request_id = 3; + optional Endpoint projects_locations_endpoint = 4; +} +message DeleteProjectsLocationsEndpointRequest { + optional string name = 1; + optional string request_id = 2; +} +message GetProjectsLocationsEndpointRequest { + optional string name = 1; +} +message ListProjectsLocationsEndpointsRequest { + optional string filter = 1; + optional string order_by = 2; + optional int32 page_size = 3; + optional string page_token = 4; + optional string parent = 5; +} +message PatchProjectsLocationsEndpointRequest { + optional string name = 1; + optional string request_id = 2; + optional string update_mask = 3; + optional Endpoint projects_locations_endpoint = 4; +} diff --git a/mockgcp/generated/mockgcp/cloud/ids/v1/service.pb.go b/mockgcp/generated/mockgcp/cloud/ids/v1/service.pb.go new file mode 100644 index 0000000000..c96f7c79bf --- /dev/null +++ b/mockgcp/generated/mockgcp/cloud/ids/v1/service.pb.go @@ -0,0 +1,2431 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.12.4 +// source: mockgcp/cloud/ids/v1/service.proto + +package idspb + +import ( + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + any1 "github.com/golang/protobuf/ptypes/any" + 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" + reflect "reflect" + sync "sync" +) + +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) +) + +type AuditConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AuditLogConfigs []*AuditLogConfig `protobuf:"bytes,1,rep,name=audit_log_configs,json=auditLogConfigs" json:"audit_log_configs,omitempty"` + Service *string `protobuf:"bytes,2,opt,name=service" json:"service,omitempty"` +} + +func (x *AuditConfig) Reset() { + *x = AuditConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AuditConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AuditConfig) ProtoMessage() {} + +func (x *AuditConfig) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_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 AuditConfig.ProtoReflect.Descriptor instead. +func (*AuditConfig) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{0} +} + +func (x *AuditConfig) GetAuditLogConfigs() []*AuditLogConfig { + if x != nil { + return x.AuditLogConfigs + } + return nil +} + +func (x *AuditConfig) GetService() string { + if x != nil && x.Service != nil { + return *x.Service + } + return "" +} + +type AuditLogConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ExemptedMembers []string `protobuf:"bytes,1,rep,name=exempted_members,json=exemptedMembers" json:"exempted_members,omitempty"` + LogType *string `protobuf:"bytes,2,opt,name=log_type,json=logType" json:"log_type,omitempty"` +} + +func (x *AuditLogConfig) Reset() { + *x = AuditLogConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AuditLogConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AuditLogConfig) ProtoMessage() {} + +func (x *AuditLogConfig) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_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 AuditLogConfig.ProtoReflect.Descriptor instead. +func (*AuditLogConfig) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{1} +} + +func (x *AuditLogConfig) GetExemptedMembers() []string { + if x != nil { + return x.ExemptedMembers + } + return nil +} + +func (x *AuditLogConfig) GetLogType() string { + if x != nil && x.LogType != nil { + return *x.LogType + } + return "" +} + +type Binding struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Condition *Expr `protobuf:"bytes,1,opt,name=condition" json:"condition,omitempty"` + Members []string `protobuf:"bytes,2,rep,name=members" json:"members,omitempty"` + Role *string `protobuf:"bytes,3,opt,name=role" json:"role,omitempty"` +} + +func (x *Binding) Reset() { + *x = Binding{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Binding) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Binding) ProtoMessage() {} + +func (x *Binding) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[2] + 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 Binding.ProtoReflect.Descriptor instead. +func (*Binding) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{2} +} + +func (x *Binding) GetCondition() *Expr { + if x != nil { + return x.Condition + } + return nil +} + +func (x *Binding) GetMembers() []string { + if x != nil { + return x.Members + } + return nil +} + +func (x *Binding) GetRole() string { + if x != nil && x.Role != nil { + return *x.Role + } + return "" +} + +type CancelOperationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CancelOperationRequest) Reset() { + *x = CancelOperationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CancelOperationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelOperationRequest) ProtoMessage() {} + +func (x *CancelOperationRequest) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_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 CancelOperationRequest.ProtoReflect.Descriptor instead. +func (*CancelOperationRequest) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{3} +} + +type Empty struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Empty) Reset() { + *x = Empty{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Empty) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Empty) ProtoMessage() {} + +func (x *Empty) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_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 Empty.ProtoReflect.Descriptor instead. +func (*Empty) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{4} +} + +type Endpoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CreateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime" json:"create_time,omitempty"` + Description *string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` + EndpointForwardingRule *string `protobuf:"bytes,3,opt,name=endpoint_forwarding_rule,json=endpointForwardingRule" json:"endpoint_forwarding_rule,omitempty"` + EndpointIp *string `protobuf:"bytes,4,opt,name=endpoint_ip,json=endpointIp" json:"endpoint_ip,omitempty"` + Labels map[string]string `protobuf:"bytes,5,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Name *string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` + Network *string `protobuf:"bytes,7,opt,name=network" json:"network,omitempty"` + SatisfiesPzi *bool `protobuf:"varint,8,opt,name=satisfies_pzi,json=satisfiesPzi" json:"satisfies_pzi,omitempty"` + SatisfiesPzs *bool `protobuf:"varint,9,opt,name=satisfies_pzs,json=satisfiesPzs" json:"satisfies_pzs,omitempty"` + Severity *string `protobuf:"bytes,10,opt,name=severity" json:"severity,omitempty"` + State *string `protobuf:"bytes,11,opt,name=state" json:"state,omitempty"` + ThreatExceptions []string `protobuf:"bytes,12,rep,name=threat_exceptions,json=threatExceptions" json:"threat_exceptions,omitempty"` + TrafficLogs *bool `protobuf:"varint,13,opt,name=traffic_logs,json=trafficLogs" json:"traffic_logs,omitempty"` + UpdateTime *timestamp.Timestamp `protobuf:"bytes,14,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` +} + +func (x *Endpoint) Reset() { + *x = Endpoint{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Endpoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Endpoint) ProtoMessage() {} + +func (x *Endpoint) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_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 Endpoint.ProtoReflect.Descriptor instead. +func (*Endpoint) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{5} +} + +func (x *Endpoint) GetCreateTime() *timestamp.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *Endpoint) GetDescription() string { + if x != nil && x.Description != nil { + return *x.Description + } + return "" +} + +func (x *Endpoint) GetEndpointForwardingRule() string { + if x != nil && x.EndpointForwardingRule != nil { + return *x.EndpointForwardingRule + } + return "" +} + +func (x *Endpoint) GetEndpointIp() string { + if x != nil && x.EndpointIp != nil { + return *x.EndpointIp + } + return "" +} + +func (x *Endpoint) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *Endpoint) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *Endpoint) GetNetwork() string { + if x != nil && x.Network != nil { + return *x.Network + } + return "" +} + +func (x *Endpoint) GetSatisfiesPzi() bool { + if x != nil && x.SatisfiesPzi != nil { + return *x.SatisfiesPzi + } + return false +} + +func (x *Endpoint) GetSatisfiesPzs() bool { + if x != nil && x.SatisfiesPzs != nil { + return *x.SatisfiesPzs + } + return false +} + +func (x *Endpoint) GetSeverity() string { + if x != nil && x.Severity != nil { + return *x.Severity + } + return "" +} + +func (x *Endpoint) GetState() string { + if x != nil && x.State != nil { + return *x.State + } + return "" +} + +func (x *Endpoint) GetThreatExceptions() []string { + if x != nil { + return x.ThreatExceptions + } + return nil +} + +func (x *Endpoint) GetTrafficLogs() bool { + if x != nil && x.TrafficLogs != nil { + return *x.TrafficLogs + } + return false +} + +func (x *Endpoint) GetUpdateTime() *timestamp.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +type Expr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Description *string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` + Expression *string `protobuf:"bytes,2,opt,name=expression" json:"expression,omitempty"` + Location *string `protobuf:"bytes,3,opt,name=location" json:"location,omitempty"` + Title *string `protobuf:"bytes,4,opt,name=title" json:"title,omitempty"` +} + +func (x *Expr) Reset() { + *x = Expr{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Expr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Expr) ProtoMessage() {} + +func (x *Expr) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[6] + 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 Expr.ProtoReflect.Descriptor instead. +func (*Expr) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{6} +} + +func (x *Expr) GetDescription() string { + if x != nil && x.Description != nil { + return *x.Description + } + return "" +} + +func (x *Expr) GetExpression() string { + if x != nil && x.Expression != nil { + return *x.Expression + } + return "" +} + +func (x *Expr) GetLocation() string { + if x != nil && x.Location != nil { + return *x.Location + } + return "" +} + +func (x *Expr) GetTitle() string { + if x != nil && x.Title != nil { + return *x.Title + } + return "" +} + +type ListEndpointsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Endpoints []*Endpoint `protobuf:"bytes,1,rep,name=endpoints" json:"endpoints,omitempty"` + NextPageToken *string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` + Unreachable []string `protobuf:"bytes,3,rep,name=unreachable" json:"unreachable,omitempty"` +} + +func (x *ListEndpointsResponse) Reset() { + *x = ListEndpointsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListEndpointsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListEndpointsResponse) ProtoMessage() {} + +func (x *ListEndpointsResponse) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[7] + 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 ListEndpointsResponse.ProtoReflect.Descriptor instead. +func (*ListEndpointsResponse) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{7} +} + +func (x *ListEndpointsResponse) GetEndpoints() []*Endpoint { + if x != nil { + return x.Endpoints + } + return nil +} + +func (x *ListEndpointsResponse) GetNextPageToken() string { + if x != nil && x.NextPageToken != nil { + return *x.NextPageToken + } + return "" +} + +func (x *ListEndpointsResponse) GetUnreachable() []string { + if x != nil { + return x.Unreachable + } + return nil +} + +type ListLocationsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Locations []*Location `protobuf:"bytes,1,rep,name=locations" json:"locations,omitempty"` + NextPageToken *string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` +} + +func (x *ListLocationsResponse) Reset() { + *x = ListLocationsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListLocationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListLocationsResponse) ProtoMessage() {} + +func (x *ListLocationsResponse) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[8] + 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 ListLocationsResponse.ProtoReflect.Descriptor instead. +func (*ListLocationsResponse) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{8} +} + +func (x *ListLocationsResponse) GetLocations() []*Location { + if x != nil { + return x.Locations + } + return nil +} + +func (x *ListLocationsResponse) GetNextPageToken() string { + if x != nil && x.NextPageToken != nil { + return *x.NextPageToken + } + return "" +} + +type ListOperationsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NextPageToken *string `protobuf:"bytes,1,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` + Operations []*longrunningpb.Operation `protobuf:"bytes,2,rep,name=operations" json:"operations,omitempty"` +} + +func (x *ListOperationsResponse) Reset() { + *x = ListOperationsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListOperationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListOperationsResponse) ProtoMessage() {} + +func (x *ListOperationsResponse) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[9] + 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 ListOperationsResponse.ProtoReflect.Descriptor instead. +func (*ListOperationsResponse) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{9} +} + +func (x *ListOperationsResponse) GetNextPageToken() string { + if x != nil && x.NextPageToken != nil { + return *x.NextPageToken + } + return "" +} + +func (x *ListOperationsResponse) GetOperations() []*longrunningpb.Operation { + if x != nil { + return x.Operations + } + return nil +} + +type Location struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DisplayName *string `protobuf:"bytes,1,opt,name=display_name,json=displayName" json:"display_name,omitempty"` + Labels map[string]string `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + LocationId *string `protobuf:"bytes,3,opt,name=location_id,json=locationId" json:"location_id,omitempty"` + Metadata map[string]*any1.Any `protobuf:"bytes,4,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Name *string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"` +} + +func (x *Location) Reset() { + *x = Location{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Location) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Location) ProtoMessage() {} + +func (x *Location) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[10] + 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 Location.ProtoReflect.Descriptor instead. +func (*Location) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{10} +} + +func (x *Location) GetDisplayName() string { + if x != nil && x.DisplayName != nil { + return *x.DisplayName + } + return "" +} + +func (x *Location) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *Location) GetLocationId() string { + if x != nil && x.LocationId != nil { + return *x.LocationId + } + return "" +} + +func (x *Location) GetMetadata() map[string]*any1.Any { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *Location) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +type Operation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Done *bool `protobuf:"varint,1,opt,name=done" json:"done,omitempty"` + Error *Status `protobuf:"bytes,2,opt,name=error" json:"error,omitempty"` + Metadata map[string]*any1.Any `protobuf:"bytes,3,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Name *string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` + Response map[string]*any1.Any `protobuf:"bytes,5,rep,name=response" json:"response,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` +} + +func (x *Operation) Reset() { + *x = Operation{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Operation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Operation) ProtoMessage() {} + +func (x *Operation) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[11] + 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 Operation.ProtoReflect.Descriptor instead. +func (*Operation) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{11} +} + +func (x *Operation) GetDone() bool { + if x != nil && x.Done != nil { + return *x.Done + } + return false +} + +func (x *Operation) GetError() *Status { + if x != nil { + return x.Error + } + return nil +} + +func (x *Operation) GetMetadata() map[string]*any1.Any { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *Operation) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *Operation) GetResponse() map[string]*any1.Any { + if x != nil { + return x.Response + } + return nil +} + +type OperationMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ApiVersion *string `protobuf:"bytes,1,opt,name=api_version,json=apiVersion" json:"api_version,omitempty"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime" json:"create_time,omitempty"` + EndTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime" json:"end_time,omitempty"` + RequestedCancellation *bool `protobuf:"varint,4,opt,name=requested_cancellation,json=requestedCancellation" json:"requested_cancellation,omitempty"` + StatusMessage *string `protobuf:"bytes,5,opt,name=status_message,json=statusMessage" json:"status_message,omitempty"` + Target *string `protobuf:"bytes,6,opt,name=target" json:"target,omitempty"` + Verb *string `protobuf:"bytes,7,opt,name=verb" json:"verb,omitempty"` +} + +func (x *OperationMetadata) Reset() { + *x = OperationMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OperationMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OperationMetadata) ProtoMessage() {} + +func (x *OperationMetadata) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[12] + 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 OperationMetadata.ProtoReflect.Descriptor instead. +func (*OperationMetadata) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{12} +} + +func (x *OperationMetadata) GetApiVersion() string { + if x != nil && x.ApiVersion != nil { + return *x.ApiVersion + } + return "" +} + +func (x *OperationMetadata) GetCreateTime() *timestamp.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *OperationMetadata) GetEndTime() *timestamp.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *OperationMetadata) GetRequestedCancellation() bool { + if x != nil && x.RequestedCancellation != nil { + return *x.RequestedCancellation + } + return false +} + +func (x *OperationMetadata) GetStatusMessage() string { + if x != nil && x.StatusMessage != nil { + return *x.StatusMessage + } + return "" +} + +func (x *OperationMetadata) GetTarget() string { + if x != nil && x.Target != nil { + return *x.Target + } + return "" +} + +func (x *OperationMetadata) GetVerb() string { + if x != nil && x.Verb != nil { + return *x.Verb + } + return "" +} + +type Policy struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AuditConfigs []*AuditConfig `protobuf:"bytes,1,rep,name=audit_configs,json=auditConfigs" json:"audit_configs,omitempty"` + Bindings []*Binding `protobuf:"bytes,2,rep,name=bindings" json:"bindings,omitempty"` + Etag []byte `protobuf:"bytes,3,opt,name=etag" json:"etag,omitempty"` + Version *int32 `protobuf:"varint,4,opt,name=version" json:"version,omitempty"` +} + +func (x *Policy) Reset() { + *x = Policy{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Policy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Policy) ProtoMessage() {} + +func (x *Policy) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[13] + 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 Policy.ProtoReflect.Descriptor instead. +func (*Policy) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{13} +} + +func (x *Policy) GetAuditConfigs() []*AuditConfig { + if x != nil { + return x.AuditConfigs + } + return nil +} + +func (x *Policy) GetBindings() []*Binding { + if x != nil { + return x.Bindings + } + return nil +} + +func (x *Policy) GetEtag() []byte { + if x != nil { + return x.Etag + } + return nil +} + +func (x *Policy) GetVersion() int32 { + if x != nil && x.Version != nil { + return *x.Version + } + return 0 +} + +type SetIamPolicyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Policy *Policy `protobuf:"bytes,1,opt,name=policy" json:"policy,omitempty"` + UpdateMask *string `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` +} + +func (x *SetIamPolicyRequest) Reset() { + *x = SetIamPolicyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetIamPolicyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetIamPolicyRequest) ProtoMessage() {} + +func (x *SetIamPolicyRequest) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[14] + 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 SetIamPolicyRequest.ProtoReflect.Descriptor instead. +func (*SetIamPolicyRequest) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{14} +} + +func (x *SetIamPolicyRequest) GetPolicy() *Policy { + if x != nil { + return x.Policy + } + return nil +} + +func (x *SetIamPolicyRequest) GetUpdateMask() string { + if x != nil && x.UpdateMask != nil { + return *x.UpdateMask + } + return "" +} + +type Status struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code *int32 `protobuf:"varint,1,opt,name=code" json:"code,omitempty"` + Details []*any1.Any `protobuf:"bytes,2,rep,name=details" json:"details,omitempty"` + Message *string `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` +} + +func (x *Status) Reset() { + *x = Status{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Status) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Status) ProtoMessage() {} + +func (x *Status) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[15] + 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 Status.ProtoReflect.Descriptor instead. +func (*Status) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{15} +} + +func (x *Status) GetCode() int32 { + if x != nil && x.Code != nil { + return *x.Code + } + return 0 +} + +func (x *Status) GetDetails() []*any1.Any { + if x != nil { + return x.Details + } + return nil +} + +func (x *Status) GetMessage() string { + if x != nil && x.Message != nil { + return *x.Message + } + return "" +} + +type TestIamPermissionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Permissions []string `protobuf:"bytes,1,rep,name=permissions" json:"permissions,omitempty"` +} + +func (x *TestIamPermissionsRequest) Reset() { + *x = TestIamPermissionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TestIamPermissionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TestIamPermissionsRequest) ProtoMessage() {} + +func (x *TestIamPermissionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[16] + 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 TestIamPermissionsRequest.ProtoReflect.Descriptor instead. +func (*TestIamPermissionsRequest) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{16} +} + +func (x *TestIamPermissionsRequest) GetPermissions() []string { + if x != nil { + return x.Permissions + } + return nil +} + +type TestIamPermissionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Permissions []string `protobuf:"bytes,1,rep,name=permissions" json:"permissions,omitempty"` +} + +func (x *TestIamPermissionsResponse) Reset() { + *x = TestIamPermissionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TestIamPermissionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TestIamPermissionsResponse) ProtoMessage() {} + +func (x *TestIamPermissionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[17] + 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 TestIamPermissionsResponse.ProtoReflect.Descriptor instead. +func (*TestIamPermissionsResponse) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{17} +} + +func (x *TestIamPermissionsResponse) GetPermissions() []string { + if x != nil { + return x.Permissions + } + return nil +} + +type GetProjectsLocationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (x *GetProjectsLocationRequest) Reset() { + *x = GetProjectsLocationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetProjectsLocationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetProjectsLocationRequest) ProtoMessage() {} + +func (x *GetProjectsLocationRequest) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[18] + 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 GetProjectsLocationRequest.ProtoReflect.Descriptor instead. +func (*GetProjectsLocationRequest) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{18} +} + +func (x *GetProjectsLocationRequest) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +type ListProjectsLocationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Filter *string `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"` + Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` + PageSize *int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` + PageToken *string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` +} + +func (x *ListProjectsLocationsRequest) Reset() { + *x = ListProjectsLocationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListProjectsLocationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListProjectsLocationsRequest) ProtoMessage() {} + +func (x *ListProjectsLocationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[19] + 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 ListProjectsLocationsRequest.ProtoReflect.Descriptor instead. +func (*ListProjectsLocationsRequest) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{19} +} + +func (x *ListProjectsLocationsRequest) GetFilter() string { + if x != nil && x.Filter != nil { + return *x.Filter + } + return "" +} + +func (x *ListProjectsLocationsRequest) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *ListProjectsLocationsRequest) GetPageSize() int32 { + if x != nil && x.PageSize != nil { + return *x.PageSize + } + return 0 +} + +func (x *ListProjectsLocationsRequest) GetPageToken() string { + if x != nil && x.PageToken != nil { + return *x.PageToken + } + return "" +} + +type CreateProjectsLocationsEndpointRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EndpointId *string `protobuf:"bytes,1,opt,name=endpoint_id,json=endpointId" json:"endpoint_id,omitempty"` + Parent *string `protobuf:"bytes,2,opt,name=parent" json:"parent,omitempty"` + RequestId *string `protobuf:"bytes,3,opt,name=request_id,json=requestId" json:"request_id,omitempty"` + ProjectsLocationsEndpoint *Endpoint `protobuf:"bytes,4,opt,name=projects_locations_endpoint,json=projectsLocationsEndpoint" json:"projects_locations_endpoint,omitempty"` +} + +func (x *CreateProjectsLocationsEndpointRequest) Reset() { + *x = CreateProjectsLocationsEndpointRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateProjectsLocationsEndpointRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateProjectsLocationsEndpointRequest) ProtoMessage() {} + +func (x *CreateProjectsLocationsEndpointRequest) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[20] + 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 CreateProjectsLocationsEndpointRequest.ProtoReflect.Descriptor instead. +func (*CreateProjectsLocationsEndpointRequest) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{20} +} + +func (x *CreateProjectsLocationsEndpointRequest) GetEndpointId() string { + if x != nil && x.EndpointId != nil { + return *x.EndpointId + } + return "" +} + +func (x *CreateProjectsLocationsEndpointRequest) GetParent() string { + if x != nil && x.Parent != nil { + return *x.Parent + } + return "" +} + +func (x *CreateProjectsLocationsEndpointRequest) GetRequestId() string { + if x != nil && x.RequestId != nil { + return *x.RequestId + } + return "" +} + +func (x *CreateProjectsLocationsEndpointRequest) GetProjectsLocationsEndpoint() *Endpoint { + if x != nil { + return x.ProjectsLocationsEndpoint + } + return nil +} + +type DeleteProjectsLocationsEndpointRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + RequestId *string `protobuf:"bytes,2,opt,name=request_id,json=requestId" json:"request_id,omitempty"` +} + +func (x *DeleteProjectsLocationsEndpointRequest) Reset() { + *x = DeleteProjectsLocationsEndpointRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteProjectsLocationsEndpointRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteProjectsLocationsEndpointRequest) ProtoMessage() {} + +func (x *DeleteProjectsLocationsEndpointRequest) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[21] + 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 DeleteProjectsLocationsEndpointRequest.ProtoReflect.Descriptor instead. +func (*DeleteProjectsLocationsEndpointRequest) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{21} +} + +func (x *DeleteProjectsLocationsEndpointRequest) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *DeleteProjectsLocationsEndpointRequest) GetRequestId() string { + if x != nil && x.RequestId != nil { + return *x.RequestId + } + return "" +} + +type GetProjectsLocationsEndpointRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (x *GetProjectsLocationsEndpointRequest) Reset() { + *x = GetProjectsLocationsEndpointRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetProjectsLocationsEndpointRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetProjectsLocationsEndpointRequest) ProtoMessage() {} + +func (x *GetProjectsLocationsEndpointRequest) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[22] + 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 GetProjectsLocationsEndpointRequest.ProtoReflect.Descriptor instead. +func (*GetProjectsLocationsEndpointRequest) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{22} +} + +func (x *GetProjectsLocationsEndpointRequest) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +type ListProjectsLocationsEndpointsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Filter *string `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"` + OrderBy *string `protobuf:"bytes,2,opt,name=order_by,json=orderBy" json:"order_by,omitempty"` + PageSize *int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` + PageToken *string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` + Parent *string `protobuf:"bytes,5,opt,name=parent" json:"parent,omitempty"` +} + +func (x *ListProjectsLocationsEndpointsRequest) Reset() { + *x = ListProjectsLocationsEndpointsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListProjectsLocationsEndpointsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListProjectsLocationsEndpointsRequest) ProtoMessage() {} + +func (x *ListProjectsLocationsEndpointsRequest) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[23] + 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 ListProjectsLocationsEndpointsRequest.ProtoReflect.Descriptor instead. +func (*ListProjectsLocationsEndpointsRequest) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{23} +} + +func (x *ListProjectsLocationsEndpointsRequest) GetFilter() string { + if x != nil && x.Filter != nil { + return *x.Filter + } + return "" +} + +func (x *ListProjectsLocationsEndpointsRequest) GetOrderBy() string { + if x != nil && x.OrderBy != nil { + return *x.OrderBy + } + return "" +} + +func (x *ListProjectsLocationsEndpointsRequest) GetPageSize() int32 { + if x != nil && x.PageSize != nil { + return *x.PageSize + } + return 0 +} + +func (x *ListProjectsLocationsEndpointsRequest) GetPageToken() string { + if x != nil && x.PageToken != nil { + return *x.PageToken + } + return "" +} + +func (x *ListProjectsLocationsEndpointsRequest) GetParent() string { + if x != nil && x.Parent != nil { + return *x.Parent + } + return "" +} + +type PatchProjectsLocationsEndpointRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + RequestId *string `protobuf:"bytes,2,opt,name=request_id,json=requestId" json:"request_id,omitempty"` + UpdateMask *string `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` + ProjectsLocationsEndpoint *Endpoint `protobuf:"bytes,4,opt,name=projects_locations_endpoint,json=projectsLocationsEndpoint" json:"projects_locations_endpoint,omitempty"` +} + +func (x *PatchProjectsLocationsEndpointRequest) Reset() { + *x = PatchProjectsLocationsEndpointRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatchProjectsLocationsEndpointRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatchProjectsLocationsEndpointRequest) ProtoMessage() {} + +func (x *PatchProjectsLocationsEndpointRequest) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_ids_v1_service_proto_msgTypes[24] + 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 PatchProjectsLocationsEndpointRequest.ProtoReflect.Descriptor instead. +func (*PatchProjectsLocationsEndpointRequest) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP(), []int{24} +} + +func (x *PatchProjectsLocationsEndpointRequest) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatchProjectsLocationsEndpointRequest) GetRequestId() string { + if x != nil && x.RequestId != nil { + return *x.RequestId + } + return "" +} + +func (x *PatchProjectsLocationsEndpointRequest) GetUpdateMask() string { + if x != nil && x.UpdateMask != nil { + return *x.UpdateMask + } + return "" +} + +func (x *PatchProjectsLocationsEndpointRequest) GetProjectsLocationsEndpoint() *Endpoint { + if x != nil { + return x.ProjectsLocationsEndpoint + } + return nil +} + +var File_mockgcp_cloud_ids_v1_service_proto protoreflect.FileDescriptor + +var file_mockgcp_cloud_ids_v1_service_proto_rawDesc = []byte{ + 0x0a, 0x22, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, + 0x69, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, + 0x79, 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, 0x78, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4f, 0x0a, 0x11, 0x61, 0x75, 0x64, 0x69, 0x74, + 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, + 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, + 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x22, 0x56, 0x0a, 0x0e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, + 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, + 0x65, 0x78, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, + 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x22, 0x70, 0x0a, 0x07, 0x42, 0x69, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x37, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x78, 0x70, 0x72, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x18, 0x0a, 0x16, + 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, + 0xf9, 0x04, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3b, 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, 0x52, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x18, 0x65, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x65, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x5f, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x70, 0x12, 0x41, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x69, 0x73, + 0x66, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x7a, 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a, 0x69, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x7a, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x65, 0x78, + 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, + 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x6c, 0x6f, 0x67, 0x73, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x4c, + 0x6f, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 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, 0x7a, 0x0a, 0x04, 0x45, + 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3b, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x26, + 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, + 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, + 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x7c, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3b, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, + 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x7f, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, + 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x3d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 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, 0x52, 0x0a, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xfc, 0x02, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x1a, 0x51, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa0, 0x03, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x12, 0x31, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x48, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x1a, 0x51, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x51, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb2, 0x02, 0x0a, 0x11, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 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, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, + 0x08, 0x65, 0x6e, 0x64, 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, 0x52, 0x07, 0x65, 0x6e, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x76, 0x65, + 0x72, 0x62, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x76, 0x65, 0x72, 0x62, 0x22, 0xb7, + 0x01, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x45, 0x0a, 0x0d, 0x61, 0x75, 0x64, + 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, + 0x12, 0x38, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, + 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x18, + 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x49, + 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x33, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x66, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3d, 0x0a, + 0x19, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3e, 0x0a, 0x1a, + 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x30, 0x0a, 0x1a, + 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x86, + 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xdf, 0x01, 0x0a, 0x26, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x1b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x19, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x5b, 0x0a, 0x26, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x39, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0xae, 0x01, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1b, + 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x22, 0xda, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, + 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, + 0x12, 0x5d, 0x0a, 0x1b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x19, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x32, + 0x10, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x32, 0xce, 0x02, 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x90, 0x01, + 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, + 0x76, 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, 0x7d, + 0x12, 0x9f, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x21, 0x12, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x32, 0xf2, 0x07, 0x0a, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0xd1, 0x01, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 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, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x22, + 0x2d, 0x2f, 0x76, 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, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x3a, 0x1b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0xb4, 0x01, 0x0a, 0x1f, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, + 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 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, 0x35, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2f, 0x2a, 0x2d, 0x2f, 0x76, 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, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, + 0x2a, 0x7d, 0x12, 0xae, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x35, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 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, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x2f, 0x2a, 0x7d, 0x12, 0xbf, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 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, 0x65, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0xcf, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 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, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x32, 0x2d, 0x2f, 0x76, 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, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x1b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x65, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x2b, 0x5a, 0x29, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x69, + 0x64, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x73, 0x70, 0x62, 0x3b, 0x69, + 0x64, 0x73, 0x70, 0x62, +} + +var ( + file_mockgcp_cloud_ids_v1_service_proto_rawDescOnce sync.Once + file_mockgcp_cloud_ids_v1_service_proto_rawDescData = file_mockgcp_cloud_ids_v1_service_proto_rawDesc +) + +func file_mockgcp_cloud_ids_v1_service_proto_rawDescGZIP() []byte { + file_mockgcp_cloud_ids_v1_service_proto_rawDescOnce.Do(func() { + file_mockgcp_cloud_ids_v1_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_mockgcp_cloud_ids_v1_service_proto_rawDescData) + }) + return file_mockgcp_cloud_ids_v1_service_proto_rawDescData +} + +var file_mockgcp_cloud_ids_v1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 30) +var file_mockgcp_cloud_ids_v1_service_proto_goTypes = []interface{}{ + (*AuditConfig)(nil), // 0: google.cloud.ids.v1.AuditConfig + (*AuditLogConfig)(nil), // 1: google.cloud.ids.v1.AuditLogConfig + (*Binding)(nil), // 2: google.cloud.ids.v1.Binding + (*CancelOperationRequest)(nil), // 3: google.cloud.ids.v1.CancelOperationRequest + (*Empty)(nil), // 4: google.cloud.ids.v1.Empty + (*Endpoint)(nil), // 5: google.cloud.ids.v1.Endpoint + (*Expr)(nil), // 6: google.cloud.ids.v1.Expr + (*ListEndpointsResponse)(nil), // 7: google.cloud.ids.v1.ListEndpointsResponse + (*ListLocationsResponse)(nil), // 8: google.cloud.ids.v1.ListLocationsResponse + (*ListOperationsResponse)(nil), // 9: google.cloud.ids.v1.ListOperationsResponse + (*Location)(nil), // 10: google.cloud.ids.v1.Location + (*Operation)(nil), // 11: google.cloud.ids.v1.Operation + (*OperationMetadata)(nil), // 12: google.cloud.ids.v1.OperationMetadata + (*Policy)(nil), // 13: google.cloud.ids.v1.Policy + (*SetIamPolicyRequest)(nil), // 14: google.cloud.ids.v1.SetIamPolicyRequest + (*Status)(nil), // 15: google.cloud.ids.v1.Status + (*TestIamPermissionsRequest)(nil), // 16: google.cloud.ids.v1.TestIamPermissionsRequest + (*TestIamPermissionsResponse)(nil), // 17: google.cloud.ids.v1.TestIamPermissionsResponse + (*GetProjectsLocationRequest)(nil), // 18: google.cloud.ids.v1.GetProjectsLocationRequest + (*ListProjectsLocationsRequest)(nil), // 19: google.cloud.ids.v1.ListProjectsLocationsRequest + (*CreateProjectsLocationsEndpointRequest)(nil), // 20: google.cloud.ids.v1.CreateProjectsLocationsEndpointRequest + (*DeleteProjectsLocationsEndpointRequest)(nil), // 21: google.cloud.ids.v1.DeleteProjectsLocationsEndpointRequest + (*GetProjectsLocationsEndpointRequest)(nil), // 22: google.cloud.ids.v1.GetProjectsLocationsEndpointRequest + (*ListProjectsLocationsEndpointsRequest)(nil), // 23: google.cloud.ids.v1.ListProjectsLocationsEndpointsRequest + (*PatchProjectsLocationsEndpointRequest)(nil), // 24: google.cloud.ids.v1.PatchProjectsLocationsEndpointRequest + nil, // 25: google.cloud.ids.v1.Endpoint.LabelsEntry + nil, // 26: google.cloud.ids.v1.Location.LabelsEntry + nil, // 27: google.cloud.ids.v1.Location.MetadataEntry + nil, // 28: google.cloud.ids.v1.Operation.MetadataEntry + nil, // 29: google.cloud.ids.v1.Operation.ResponseEntry + (*timestamp.Timestamp)(nil), // 30: google.protobuf.Timestamp + (*longrunningpb.Operation)(nil), // 31: google.longrunning.Operation + (*any1.Any)(nil), // 32: google.protobuf.Any +} +var file_mockgcp_cloud_ids_v1_service_proto_depIdxs = []int32{ + 1, // 0: google.cloud.ids.v1.AuditConfig.audit_log_configs:type_name -> google.cloud.ids.v1.AuditLogConfig + 6, // 1: google.cloud.ids.v1.Binding.condition:type_name -> google.cloud.ids.v1.Expr + 30, // 2: google.cloud.ids.v1.Endpoint.create_time:type_name -> google.protobuf.Timestamp + 25, // 3: google.cloud.ids.v1.Endpoint.labels:type_name -> google.cloud.ids.v1.Endpoint.LabelsEntry + 30, // 4: google.cloud.ids.v1.Endpoint.update_time:type_name -> google.protobuf.Timestamp + 5, // 5: google.cloud.ids.v1.ListEndpointsResponse.endpoints:type_name -> google.cloud.ids.v1.Endpoint + 10, // 6: google.cloud.ids.v1.ListLocationsResponse.locations:type_name -> google.cloud.ids.v1.Location + 31, // 7: google.cloud.ids.v1.ListOperationsResponse.operations:type_name -> google.longrunning.Operation + 26, // 8: google.cloud.ids.v1.Location.labels:type_name -> google.cloud.ids.v1.Location.LabelsEntry + 27, // 9: google.cloud.ids.v1.Location.metadata:type_name -> google.cloud.ids.v1.Location.MetadataEntry + 15, // 10: google.cloud.ids.v1.Operation.error:type_name -> google.cloud.ids.v1.Status + 28, // 11: google.cloud.ids.v1.Operation.metadata:type_name -> google.cloud.ids.v1.Operation.MetadataEntry + 29, // 12: google.cloud.ids.v1.Operation.response:type_name -> google.cloud.ids.v1.Operation.ResponseEntry + 30, // 13: google.cloud.ids.v1.OperationMetadata.create_time:type_name -> google.protobuf.Timestamp + 30, // 14: google.cloud.ids.v1.OperationMetadata.end_time:type_name -> google.protobuf.Timestamp + 0, // 15: google.cloud.ids.v1.Policy.audit_configs:type_name -> google.cloud.ids.v1.AuditConfig + 2, // 16: google.cloud.ids.v1.Policy.bindings:type_name -> google.cloud.ids.v1.Binding + 13, // 17: google.cloud.ids.v1.SetIamPolicyRequest.policy:type_name -> google.cloud.ids.v1.Policy + 32, // 18: google.cloud.ids.v1.Status.details:type_name -> google.protobuf.Any + 5, // 19: google.cloud.ids.v1.CreateProjectsLocationsEndpointRequest.projects_locations_endpoint:type_name -> google.cloud.ids.v1.Endpoint + 5, // 20: google.cloud.ids.v1.PatchProjectsLocationsEndpointRequest.projects_locations_endpoint:type_name -> google.cloud.ids.v1.Endpoint + 32, // 21: google.cloud.ids.v1.Location.MetadataEntry.value:type_name -> google.protobuf.Any + 32, // 22: google.cloud.ids.v1.Operation.MetadataEntry.value:type_name -> google.protobuf.Any + 32, // 23: google.cloud.ids.v1.Operation.ResponseEntry.value:type_name -> google.protobuf.Any + 18, // 24: google.cloud.ids.v1.ProjectsLocationsServer.GetProjectsLocation:input_type -> google.cloud.ids.v1.GetProjectsLocationRequest + 19, // 25: google.cloud.ids.v1.ProjectsLocationsServer.ListProjectsLocations:input_type -> google.cloud.ids.v1.ListProjectsLocationsRequest + 20, // 26: google.cloud.ids.v1.ProjectsLocationsEndpointsServer.CreateProjectsLocationsEndpoint:input_type -> google.cloud.ids.v1.CreateProjectsLocationsEndpointRequest + 21, // 27: google.cloud.ids.v1.ProjectsLocationsEndpointsServer.DeleteProjectsLocationsEndpoint:input_type -> google.cloud.ids.v1.DeleteProjectsLocationsEndpointRequest + 22, // 28: google.cloud.ids.v1.ProjectsLocationsEndpointsServer.GetProjectsLocationsEndpoint:input_type -> google.cloud.ids.v1.GetProjectsLocationsEndpointRequest + 23, // 29: google.cloud.ids.v1.ProjectsLocationsEndpointsServer.ListProjectsLocationsEndpoints:input_type -> google.cloud.ids.v1.ListProjectsLocationsEndpointsRequest + 24, // 30: google.cloud.ids.v1.ProjectsLocationsEndpointsServer.PatchProjectsLocationsEndpoint:input_type -> google.cloud.ids.v1.PatchProjectsLocationsEndpointRequest + 10, // 31: google.cloud.ids.v1.ProjectsLocationsServer.GetProjectsLocation:output_type -> google.cloud.ids.v1.Location + 8, // 32: google.cloud.ids.v1.ProjectsLocationsServer.ListProjectsLocations:output_type -> google.cloud.ids.v1.ListLocationsResponse + 31, // 33: google.cloud.ids.v1.ProjectsLocationsEndpointsServer.CreateProjectsLocationsEndpoint:output_type -> google.longrunning.Operation + 31, // 34: google.cloud.ids.v1.ProjectsLocationsEndpointsServer.DeleteProjectsLocationsEndpoint:output_type -> google.longrunning.Operation + 5, // 35: google.cloud.ids.v1.ProjectsLocationsEndpointsServer.GetProjectsLocationsEndpoint:output_type -> google.cloud.ids.v1.Endpoint + 7, // 36: google.cloud.ids.v1.ProjectsLocationsEndpointsServer.ListProjectsLocationsEndpoints:output_type -> google.cloud.ids.v1.ListEndpointsResponse + 31, // 37: google.cloud.ids.v1.ProjectsLocationsEndpointsServer.PatchProjectsLocationsEndpoint:output_type -> google.longrunning.Operation + 31, // [31:38] is the sub-list for method output_type + 24, // [24:31] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name +} + +func init() { file_mockgcp_cloud_ids_v1_service_proto_init() } +func file_mockgcp_cloud_ids_v1_service_proto_init() { + if File_mockgcp_cloud_ids_v1_service_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AuditConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AuditLogConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Binding); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CancelOperationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Empty); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Endpoint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Expr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListEndpointsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListLocationsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListOperationsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Location); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Operation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OperationMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Policy); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetIamPolicyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Status); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TestIamPermissionsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TestIamPermissionsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetProjectsLocationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListProjectsLocationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateProjectsLocationsEndpointRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteProjectsLocationsEndpointRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetProjectsLocationsEndpointRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListProjectsLocationsEndpointsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_ids_v1_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatchProjectsLocationsEndpointRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_mockgcp_cloud_ids_v1_service_proto_rawDesc, + NumEnums: 0, + NumMessages: 30, + NumExtensions: 0, + NumServices: 3, + }, + GoTypes: file_mockgcp_cloud_ids_v1_service_proto_goTypes, + DependencyIndexes: file_mockgcp_cloud_ids_v1_service_proto_depIdxs, + MessageInfos: file_mockgcp_cloud_ids_v1_service_proto_msgTypes, + }.Build() + File_mockgcp_cloud_ids_v1_service_proto = out.File + file_mockgcp_cloud_ids_v1_service_proto_rawDesc = nil + file_mockgcp_cloud_ids_v1_service_proto_goTypes = nil + file_mockgcp_cloud_ids_v1_service_proto_depIdxs = nil +} diff --git a/mockgcp/generated/mockgcp/cloud/ids/v1/service.pb.gw.go b/mockgcp/generated/mockgcp/cloud/ids/v1/service.pb.gw.go new file mode 100644 index 0000000000..939bb0cfde --- /dev/null +++ b/mockgcp/generated/mockgcp/cloud/ids/v1/service.pb.gw.go @@ -0,0 +1,983 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: mockgcp/cloud/ids/v1/service.proto + +/* +Package idspb is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package idspb + +import ( + "context" + "io" + "net/http" + + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = metadata.Join + +func request_ProjectsLocationsServer_GetProjectsLocation_0(ctx context.Context, marshaler runtime.Marshaler, client ProjectsLocationsServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetProjectsLocationRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.StringP(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := client.GetProjectsLocation(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ProjectsLocationsServer_GetProjectsLocation_0(ctx context.Context, marshaler runtime.Marshaler, server ProjectsLocationsServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetProjectsLocationRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.StringP(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := server.GetProjectsLocation(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_ProjectsLocationsServer_ListProjectsLocations_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_ProjectsLocationsServer_ListProjectsLocations_0(ctx context.Context, marshaler runtime.Marshaler, client ProjectsLocationsServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListProjectsLocationsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.StringP(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ProjectsLocationsServer_ListProjectsLocations_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListProjectsLocations(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ProjectsLocationsServer_ListProjectsLocations_0(ctx context.Context, marshaler runtime.Marshaler, server ProjectsLocationsServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListProjectsLocationsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.StringP(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ProjectsLocationsServer_ListProjectsLocations_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListProjectsLocations(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_0 = &utilities.DoubleArray{Encoding: map[string]int{"projects_locations_endpoint": 0, "parent": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} +) + +func request_ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_0(ctx context.Context, marshaler runtime.Marshaler, client ProjectsLocationsEndpointsServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CreateProjectsLocationsEndpointRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.ProjectsLocationsEndpoint); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["parent"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent") + } + + protoReq.Parent, err = runtime.StringP(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.CreateProjectsLocationsEndpoint(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_0(ctx context.Context, marshaler runtime.Marshaler, server ProjectsLocationsEndpointsServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CreateProjectsLocationsEndpointRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.ProjectsLocationsEndpoint); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["parent"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent") + } + + protoReq.Parent, err = runtime.StringP(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.CreateProjectsLocationsEndpoint(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_0(ctx context.Context, marshaler runtime.Marshaler, client ProjectsLocationsEndpointsServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteProjectsLocationsEndpointRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.StringP(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.DeleteProjectsLocationsEndpoint(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_0(ctx context.Context, marshaler runtime.Marshaler, server ProjectsLocationsEndpointsServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteProjectsLocationsEndpointRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.StringP(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.DeleteProjectsLocationsEndpoint(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ProjectsLocationsEndpointsServer_GetProjectsLocationsEndpoint_0(ctx context.Context, marshaler runtime.Marshaler, client ProjectsLocationsEndpointsServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetProjectsLocationsEndpointRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.StringP(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := client.GetProjectsLocationsEndpoint(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ProjectsLocationsEndpointsServer_GetProjectsLocationsEndpoint_0(ctx context.Context, marshaler runtime.Marshaler, server ProjectsLocationsEndpointsServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetProjectsLocationsEndpointRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.StringP(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := server.GetProjectsLocationsEndpoint(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_0 = &utilities.DoubleArray{Encoding: map[string]int{"parent": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_0(ctx context.Context, marshaler runtime.Marshaler, client ProjectsLocationsEndpointsServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListProjectsLocationsEndpointsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["parent"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent") + } + + protoReq.Parent, err = runtime.StringP(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListProjectsLocationsEndpoints(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_0(ctx context.Context, marshaler runtime.Marshaler, server ProjectsLocationsEndpointsServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListProjectsLocationsEndpointsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["parent"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent") + } + + protoReq.Parent, err = runtime.StringP(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListProjectsLocationsEndpoints(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_0 = &utilities.DoubleArray{Encoding: map[string]int{"projects_locations_endpoint": 0, "name": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} +) + +func request_ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_0(ctx context.Context, marshaler runtime.Marshaler, client ProjectsLocationsEndpointsServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PatchProjectsLocationsEndpointRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.ProjectsLocationsEndpoint); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.StringP(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.PatchProjectsLocationsEndpoint(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_0(ctx context.Context, marshaler runtime.Marshaler, server ProjectsLocationsEndpointsServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PatchProjectsLocationsEndpointRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.ProjectsLocationsEndpoint); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.StringP(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.PatchProjectsLocationsEndpoint(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterProjectsLocationsServerHandlerServer registers the http handlers for service ProjectsLocationsServer to "mux". +// UnaryRPC :call ProjectsLocationsServerServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterProjectsLocationsServerHandlerFromEndpoint instead. +func RegisterProjectsLocationsServerHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ProjectsLocationsServerServer) error { + + mux.Handle("GET", pattern_ProjectsLocationsServer_GetProjectsLocation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/google.cloud.ids.v1.ProjectsLocationsServer/GetProjectsLocation", runtime.WithHTTPPathPattern("/v1/{name=projects/*/locations/*}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ProjectsLocationsServer_GetProjectsLocation_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ProjectsLocationsServer_GetProjectsLocation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ProjectsLocationsServer_ListProjectsLocations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/google.cloud.ids.v1.ProjectsLocationsServer/ListProjectsLocations", runtime.WithHTTPPathPattern("/v1/{name=projects/*}/locations")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ProjectsLocationsServer_ListProjectsLocations_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ProjectsLocationsServer_ListProjectsLocations_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterProjectsLocationsEndpointsServerHandlerServer registers the http handlers for service ProjectsLocationsEndpointsServer to "mux". +// UnaryRPC :call ProjectsLocationsEndpointsServerServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterProjectsLocationsEndpointsServerHandlerFromEndpoint instead. +func RegisterProjectsLocationsEndpointsServerHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ProjectsLocationsEndpointsServerServer) error { + + mux.Handle("POST", pattern_ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/CreateProjectsLocationsEndpoint", runtime.WithHTTPPathPattern("/v1/{parent=projects/*/locations/*}/endpoints")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/DeleteProjectsLocationsEndpoint", runtime.WithHTTPPathPattern("/v1/{name=projects/*/locations/*/endpoints/*}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ProjectsLocationsEndpointsServer_GetProjectsLocationsEndpoint_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/GetProjectsLocationsEndpoint", runtime.WithHTTPPathPattern("/v1/{name=projects/*/locations/*/endpoints/*}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ProjectsLocationsEndpointsServer_GetProjectsLocationsEndpoint_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ProjectsLocationsEndpointsServer_GetProjectsLocationsEndpoint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/ListProjectsLocationsEndpoints", runtime.WithHTTPPathPattern("/v1/{parent=projects/*/locations/*}/endpoints")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("PATCH", pattern_ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/PatchProjectsLocationsEndpoint", runtime.WithHTTPPathPattern("/v1/{name=projects/*/locations/*/endpoints/*}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterProjectsLocationsServerHandlerFromEndpoint is same as RegisterProjectsLocationsServerHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterProjectsLocationsServerHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterProjectsLocationsServerHandler(ctx, mux, conn) +} + +// RegisterProjectsLocationsServerHandler registers the http handlers for service ProjectsLocationsServer to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterProjectsLocationsServerHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterProjectsLocationsServerHandlerClient(ctx, mux, NewProjectsLocationsServerClient(conn)) +} + +// RegisterProjectsLocationsServerHandlerClient registers the http handlers for service ProjectsLocationsServer +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ProjectsLocationsServerClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ProjectsLocationsServerClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "ProjectsLocationsServerClient" to call the correct interceptors. +func RegisterProjectsLocationsServerHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ProjectsLocationsServerClient) error { + + mux.Handle("GET", pattern_ProjectsLocationsServer_GetProjectsLocation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/google.cloud.ids.v1.ProjectsLocationsServer/GetProjectsLocation", runtime.WithHTTPPathPattern("/v1/{name=projects/*/locations/*}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ProjectsLocationsServer_GetProjectsLocation_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ProjectsLocationsServer_GetProjectsLocation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ProjectsLocationsServer_ListProjectsLocations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/google.cloud.ids.v1.ProjectsLocationsServer/ListProjectsLocations", runtime.WithHTTPPathPattern("/v1/{name=projects/*}/locations")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ProjectsLocationsServer_ListProjectsLocations_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ProjectsLocationsServer_ListProjectsLocations_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_ProjectsLocationsServer_GetProjectsLocation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 2, 2, 1, 0, 4, 4, 5, 3}, []string{"v1", "projects", "locations", "name"}, "")) + + pattern_ProjectsLocationsServer_ListProjectsLocations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 2, 5, 2, 2, 3}, []string{"v1", "projects", "name", "locations"}, "")) +) + +var ( + forward_ProjectsLocationsServer_GetProjectsLocation_0 = runtime.ForwardResponseMessage + + forward_ProjectsLocationsServer_ListProjectsLocations_0 = runtime.ForwardResponseMessage +) + +// RegisterProjectsLocationsEndpointsServerHandlerFromEndpoint is same as RegisterProjectsLocationsEndpointsServerHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterProjectsLocationsEndpointsServerHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterProjectsLocationsEndpointsServerHandler(ctx, mux, conn) +} + +// RegisterProjectsLocationsEndpointsServerHandler registers the http handlers for service ProjectsLocationsEndpointsServer to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterProjectsLocationsEndpointsServerHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterProjectsLocationsEndpointsServerHandlerClient(ctx, mux, NewProjectsLocationsEndpointsServerClient(conn)) +} + +// RegisterProjectsLocationsEndpointsServerHandlerClient registers the http handlers for service ProjectsLocationsEndpointsServer +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ProjectsLocationsEndpointsServerClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ProjectsLocationsEndpointsServerClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "ProjectsLocationsEndpointsServerClient" to call the correct interceptors. +func RegisterProjectsLocationsEndpointsServerHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ProjectsLocationsEndpointsServerClient) error { + + mux.Handle("POST", pattern_ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/CreateProjectsLocationsEndpoint", runtime.WithHTTPPathPattern("/v1/{parent=projects/*/locations/*}/endpoints")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/DeleteProjectsLocationsEndpoint", runtime.WithHTTPPathPattern("/v1/{name=projects/*/locations/*/endpoints/*}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ProjectsLocationsEndpointsServer_GetProjectsLocationsEndpoint_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/GetProjectsLocationsEndpoint", runtime.WithHTTPPathPattern("/v1/{name=projects/*/locations/*/endpoints/*}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ProjectsLocationsEndpointsServer_GetProjectsLocationsEndpoint_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ProjectsLocationsEndpointsServer_GetProjectsLocationsEndpoint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/ListProjectsLocationsEndpoints", runtime.WithHTTPPathPattern("/v1/{parent=projects/*/locations/*}/endpoints")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("PATCH", pattern_ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/PatchProjectsLocationsEndpoint", runtime.WithHTTPPathPattern("/v1/{name=projects/*/locations/*/endpoints/*}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 2, 2, 1, 0, 4, 4, 5, 3, 2, 4}, []string{"v1", "projects", "locations", "parent", "endpoints"}, "")) + + pattern_ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 2, 2, 1, 0, 2, 3, 1, 0, 4, 6, 5, 4}, []string{"v1", "projects", "locations", "endpoints", "name"}, "")) + + pattern_ProjectsLocationsEndpointsServer_GetProjectsLocationsEndpoint_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 2, 2, 1, 0, 2, 3, 1, 0, 4, 6, 5, 4}, []string{"v1", "projects", "locations", "endpoints", "name"}, "")) + + pattern_ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 2, 2, 1, 0, 4, 4, 5, 3, 2, 4}, []string{"v1", "projects", "locations", "parent", "endpoints"}, "")) + + pattern_ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 2, 2, 1, 0, 2, 3, 1, 0, 4, 6, 5, 4}, []string{"v1", "projects", "locations", "endpoints", "name"}, "")) +) + +var ( + forward_ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_0 = runtime.ForwardResponseMessage + + forward_ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_0 = runtime.ForwardResponseMessage + + forward_ProjectsLocationsEndpointsServer_GetProjectsLocationsEndpoint_0 = runtime.ForwardResponseMessage + + forward_ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_0 = runtime.ForwardResponseMessage + + forward_ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_0 = runtime.ForwardResponseMessage +) diff --git a/mockgcp/generated/mockgcp/cloud/ids/v1/service_grpc.pb.go b/mockgcp/generated/mockgcp/cloud/ids/v1/service_grpc.pb.go new file mode 100644 index 0000000000..94c4b4e151 --- /dev/null +++ b/mockgcp/generated/mockgcp/cloud/ids/v1/service_grpc.pb.go @@ -0,0 +1,423 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.12.4 +// source: mockgcp/cloud/ids/v1/service.proto + +package idspb + +import ( + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// ProjectsServerClient is the client API for ProjectsServer service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ProjectsServerClient interface { +} + +type projectsServerClient struct { + cc grpc.ClientConnInterface +} + +func NewProjectsServerClient(cc grpc.ClientConnInterface) ProjectsServerClient { + return &projectsServerClient{cc} +} + +// ProjectsServerServer is the server API for ProjectsServer service. +// All implementations must embed UnimplementedProjectsServerServer +// for forward compatibility +type ProjectsServerServer interface { + mustEmbedUnimplementedProjectsServerServer() +} + +// UnimplementedProjectsServerServer must be embedded to have forward compatible implementations. +type UnimplementedProjectsServerServer struct { +} + +func (UnimplementedProjectsServerServer) mustEmbedUnimplementedProjectsServerServer() {} + +// UnsafeProjectsServerServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ProjectsServerServer will +// result in compilation errors. +type UnsafeProjectsServerServer interface { + mustEmbedUnimplementedProjectsServerServer() +} + +func RegisterProjectsServerServer(s grpc.ServiceRegistrar, srv ProjectsServerServer) { + s.RegisterService(&ProjectsServer_ServiceDesc, srv) +} + +// ProjectsServer_ServiceDesc is the grpc.ServiceDesc for ProjectsServer service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ProjectsServer_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "google.cloud.ids.v1.ProjectsServer", + HandlerType: (*ProjectsServerServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "mockgcp/cloud/ids/v1/service.proto", +} + +// ProjectsLocationsServerClient is the client API for ProjectsLocationsServer service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ProjectsLocationsServerClient interface { + GetProjectsLocation(ctx context.Context, in *GetProjectsLocationRequest, opts ...grpc.CallOption) (*Location, error) + ListProjectsLocations(ctx context.Context, in *ListProjectsLocationsRequest, opts ...grpc.CallOption) (*ListLocationsResponse, error) +} + +type projectsLocationsServerClient struct { + cc grpc.ClientConnInterface +} + +func NewProjectsLocationsServerClient(cc grpc.ClientConnInterface) ProjectsLocationsServerClient { + return &projectsLocationsServerClient{cc} +} + +func (c *projectsLocationsServerClient) GetProjectsLocation(ctx context.Context, in *GetProjectsLocationRequest, opts ...grpc.CallOption) (*Location, error) { + out := new(Location) + err := c.cc.Invoke(ctx, "/google.cloud.ids.v1.ProjectsLocationsServer/GetProjectsLocation", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *projectsLocationsServerClient) ListProjectsLocations(ctx context.Context, in *ListProjectsLocationsRequest, opts ...grpc.CallOption) (*ListLocationsResponse, error) { + out := new(ListLocationsResponse) + err := c.cc.Invoke(ctx, "/google.cloud.ids.v1.ProjectsLocationsServer/ListProjectsLocations", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ProjectsLocationsServerServer is the server API for ProjectsLocationsServer service. +// All implementations must embed UnimplementedProjectsLocationsServerServer +// for forward compatibility +type ProjectsLocationsServerServer interface { + GetProjectsLocation(context.Context, *GetProjectsLocationRequest) (*Location, error) + ListProjectsLocations(context.Context, *ListProjectsLocationsRequest) (*ListLocationsResponse, error) + mustEmbedUnimplementedProjectsLocationsServerServer() +} + +// UnimplementedProjectsLocationsServerServer must be embedded to have forward compatible implementations. +type UnimplementedProjectsLocationsServerServer struct { +} + +func (UnimplementedProjectsLocationsServerServer) GetProjectsLocation(context.Context, *GetProjectsLocationRequest) (*Location, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetProjectsLocation not implemented") +} +func (UnimplementedProjectsLocationsServerServer) ListProjectsLocations(context.Context, *ListProjectsLocationsRequest) (*ListLocationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListProjectsLocations not implemented") +} +func (UnimplementedProjectsLocationsServerServer) mustEmbedUnimplementedProjectsLocationsServerServer() { +} + +// UnsafeProjectsLocationsServerServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ProjectsLocationsServerServer will +// result in compilation errors. +type UnsafeProjectsLocationsServerServer interface { + mustEmbedUnimplementedProjectsLocationsServerServer() +} + +func RegisterProjectsLocationsServerServer(s grpc.ServiceRegistrar, srv ProjectsLocationsServerServer) { + s.RegisterService(&ProjectsLocationsServer_ServiceDesc, srv) +} + +func _ProjectsLocationsServer_GetProjectsLocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetProjectsLocationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProjectsLocationsServerServer).GetProjectsLocation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.ids.v1.ProjectsLocationsServer/GetProjectsLocation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProjectsLocationsServerServer).GetProjectsLocation(ctx, req.(*GetProjectsLocationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ProjectsLocationsServer_ListProjectsLocations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListProjectsLocationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProjectsLocationsServerServer).ListProjectsLocations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.ids.v1.ProjectsLocationsServer/ListProjectsLocations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProjectsLocationsServerServer).ListProjectsLocations(ctx, req.(*ListProjectsLocationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ProjectsLocationsServer_ServiceDesc is the grpc.ServiceDesc for ProjectsLocationsServer service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ProjectsLocationsServer_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "google.cloud.ids.v1.ProjectsLocationsServer", + HandlerType: (*ProjectsLocationsServerServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetProjectsLocation", + Handler: _ProjectsLocationsServer_GetProjectsLocation_Handler, + }, + { + MethodName: "ListProjectsLocations", + Handler: _ProjectsLocationsServer_ListProjectsLocations_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "mockgcp/cloud/ids/v1/service.proto", +} + +// ProjectsLocationsEndpointsServerClient is the client API for ProjectsLocationsEndpointsServer service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ProjectsLocationsEndpointsServerClient interface { + CreateProjectsLocationsEndpoint(ctx context.Context, in *CreateProjectsLocationsEndpointRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + DeleteProjectsLocationsEndpoint(ctx context.Context, in *DeleteProjectsLocationsEndpointRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + GetProjectsLocationsEndpoint(ctx context.Context, in *GetProjectsLocationsEndpointRequest, opts ...grpc.CallOption) (*Endpoint, error) + ListProjectsLocationsEndpoints(ctx context.Context, in *ListProjectsLocationsEndpointsRequest, opts ...grpc.CallOption) (*ListEndpointsResponse, error) + PatchProjectsLocationsEndpoint(ctx context.Context, in *PatchProjectsLocationsEndpointRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) +} + +type projectsLocationsEndpointsServerClient struct { + cc grpc.ClientConnInterface +} + +func NewProjectsLocationsEndpointsServerClient(cc grpc.ClientConnInterface) ProjectsLocationsEndpointsServerClient { + return &projectsLocationsEndpointsServerClient{cc} +} + +func (c *projectsLocationsEndpointsServerClient) CreateProjectsLocationsEndpoint(ctx context.Context, in *CreateProjectsLocationsEndpointRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/CreateProjectsLocationsEndpoint", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *projectsLocationsEndpointsServerClient) DeleteProjectsLocationsEndpoint(ctx context.Context, in *DeleteProjectsLocationsEndpointRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/DeleteProjectsLocationsEndpoint", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *projectsLocationsEndpointsServerClient) GetProjectsLocationsEndpoint(ctx context.Context, in *GetProjectsLocationsEndpointRequest, opts ...grpc.CallOption) (*Endpoint, error) { + out := new(Endpoint) + err := c.cc.Invoke(ctx, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/GetProjectsLocationsEndpoint", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *projectsLocationsEndpointsServerClient) ListProjectsLocationsEndpoints(ctx context.Context, in *ListProjectsLocationsEndpointsRequest, opts ...grpc.CallOption) (*ListEndpointsResponse, error) { + out := new(ListEndpointsResponse) + err := c.cc.Invoke(ctx, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/ListProjectsLocationsEndpoints", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *projectsLocationsEndpointsServerClient) PatchProjectsLocationsEndpoint(ctx context.Context, in *PatchProjectsLocationsEndpointRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/PatchProjectsLocationsEndpoint", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ProjectsLocationsEndpointsServerServer is the server API for ProjectsLocationsEndpointsServer service. +// All implementations must embed UnimplementedProjectsLocationsEndpointsServerServer +// for forward compatibility +type ProjectsLocationsEndpointsServerServer interface { + CreateProjectsLocationsEndpoint(context.Context, *CreateProjectsLocationsEndpointRequest) (*longrunningpb.Operation, error) + DeleteProjectsLocationsEndpoint(context.Context, *DeleteProjectsLocationsEndpointRequest) (*longrunningpb.Operation, error) + GetProjectsLocationsEndpoint(context.Context, *GetProjectsLocationsEndpointRequest) (*Endpoint, error) + ListProjectsLocationsEndpoints(context.Context, *ListProjectsLocationsEndpointsRequest) (*ListEndpointsResponse, error) + PatchProjectsLocationsEndpoint(context.Context, *PatchProjectsLocationsEndpointRequest) (*longrunningpb.Operation, error) + mustEmbedUnimplementedProjectsLocationsEndpointsServerServer() +} + +// UnimplementedProjectsLocationsEndpointsServerServer must be embedded to have forward compatible implementations. +type UnimplementedProjectsLocationsEndpointsServerServer struct { +} + +func (UnimplementedProjectsLocationsEndpointsServerServer) CreateProjectsLocationsEndpoint(context.Context, *CreateProjectsLocationsEndpointRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateProjectsLocationsEndpoint not implemented") +} +func (UnimplementedProjectsLocationsEndpointsServerServer) DeleteProjectsLocationsEndpoint(context.Context, *DeleteProjectsLocationsEndpointRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteProjectsLocationsEndpoint not implemented") +} +func (UnimplementedProjectsLocationsEndpointsServerServer) GetProjectsLocationsEndpoint(context.Context, *GetProjectsLocationsEndpointRequest) (*Endpoint, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetProjectsLocationsEndpoint not implemented") +} +func (UnimplementedProjectsLocationsEndpointsServerServer) ListProjectsLocationsEndpoints(context.Context, *ListProjectsLocationsEndpointsRequest) (*ListEndpointsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListProjectsLocationsEndpoints not implemented") +} +func (UnimplementedProjectsLocationsEndpointsServerServer) PatchProjectsLocationsEndpoint(context.Context, *PatchProjectsLocationsEndpointRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method PatchProjectsLocationsEndpoint not implemented") +} +func (UnimplementedProjectsLocationsEndpointsServerServer) mustEmbedUnimplementedProjectsLocationsEndpointsServerServer() { +} + +// UnsafeProjectsLocationsEndpointsServerServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ProjectsLocationsEndpointsServerServer will +// result in compilation errors. +type UnsafeProjectsLocationsEndpointsServerServer interface { + mustEmbedUnimplementedProjectsLocationsEndpointsServerServer() +} + +func RegisterProjectsLocationsEndpointsServerServer(s grpc.ServiceRegistrar, srv ProjectsLocationsEndpointsServerServer) { + s.RegisterService(&ProjectsLocationsEndpointsServer_ServiceDesc, srv) +} + +func _ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateProjectsLocationsEndpointRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProjectsLocationsEndpointsServerServer).CreateProjectsLocationsEndpoint(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/CreateProjectsLocationsEndpoint", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProjectsLocationsEndpointsServerServer).CreateProjectsLocationsEndpoint(ctx, req.(*CreateProjectsLocationsEndpointRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteProjectsLocationsEndpointRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProjectsLocationsEndpointsServerServer).DeleteProjectsLocationsEndpoint(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/DeleteProjectsLocationsEndpoint", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProjectsLocationsEndpointsServerServer).DeleteProjectsLocationsEndpoint(ctx, req.(*DeleteProjectsLocationsEndpointRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ProjectsLocationsEndpointsServer_GetProjectsLocationsEndpoint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetProjectsLocationsEndpointRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProjectsLocationsEndpointsServerServer).GetProjectsLocationsEndpoint(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/GetProjectsLocationsEndpoint", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProjectsLocationsEndpointsServerServer).GetProjectsLocationsEndpoint(ctx, req.(*GetProjectsLocationsEndpointRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListProjectsLocationsEndpointsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProjectsLocationsEndpointsServerServer).ListProjectsLocationsEndpoints(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/ListProjectsLocationsEndpoints", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProjectsLocationsEndpointsServerServer).ListProjectsLocationsEndpoints(ctx, req.(*ListProjectsLocationsEndpointsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PatchProjectsLocationsEndpointRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProjectsLocationsEndpointsServerServer).PatchProjectsLocationsEndpoint(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.ids.v1.ProjectsLocationsEndpointsServer/PatchProjectsLocationsEndpoint", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProjectsLocationsEndpointsServerServer).PatchProjectsLocationsEndpoint(ctx, req.(*PatchProjectsLocationsEndpointRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ProjectsLocationsEndpointsServer_ServiceDesc is the grpc.ServiceDesc for ProjectsLocationsEndpointsServer service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ProjectsLocationsEndpointsServer_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "google.cloud.ids.v1.ProjectsLocationsEndpointsServer", + HandlerType: (*ProjectsLocationsEndpointsServerServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateProjectsLocationsEndpoint", + Handler: _ProjectsLocationsEndpointsServer_CreateProjectsLocationsEndpoint_Handler, + }, + { + MethodName: "DeleteProjectsLocationsEndpoint", + Handler: _ProjectsLocationsEndpointsServer_DeleteProjectsLocationsEndpoint_Handler, + }, + { + MethodName: "GetProjectsLocationsEndpoint", + Handler: _ProjectsLocationsEndpointsServer_GetProjectsLocationsEndpoint_Handler, + }, + { + MethodName: "ListProjectsLocationsEndpoints", + Handler: _ProjectsLocationsEndpointsServer_ListProjectsLocationsEndpoints_Handler, + }, + { + MethodName: "PatchProjectsLocationsEndpoint", + Handler: _ProjectsLocationsEndpointsServer_PatchProjectsLocationsEndpoint_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "mockgcp/cloud/ids/v1/service.proto", +} diff --git a/mockgcp/mock_http_roundtrip.go b/mockgcp/mock_http_roundtrip.go index 88b8575407..898e44727b 100644 --- a/mockgcp/mock_http_roundtrip.go +++ b/mockgcp/mock_http_roundtrip.go @@ -41,6 +41,7 @@ import ( "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/mockbilling" "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/mockcertificatemanager" "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/mockcloudfunctions" + "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/mockcloudids" "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/mockcompute" "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/mockcontainer" "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/mockedgecontainer" @@ -144,6 +145,7 @@ func NewMockRoundTripper(t *testing.T, k8sClient client.Client, storage storage. services = append(services, mockartifactregistry.New(env, storage)) services = append(services, mockgkehub.New(env, storage)) services = append(services, mockalloydb.New(env, storage)) + services = append(services, mockcloudids.New(env, storage)) for _, service := range services { service.Register(server) diff --git a/mockgcp/mockcloudids/endpoint.go b/mockgcp/mockcloudids/endpoint.go new file mode 100644 index 0000000000..f42d91bd9d --- /dev/null +++ b/mockgcp/mockcloudids/endpoint.go @@ -0,0 +1,152 @@ +// Copyright 2024 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. + +package mockcloudids + +import ( + "context" + "fmt" + "regexp" + "strings" + "time" + + "google.golang.org/genproto/googleapis/longrunning" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/timestamppb" + + pb "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/generated/mockgcp/cloud/ids/v1" + "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/pkg/storage" +) + +type CloudIDSEndpointV1 struct { + *MockService + pb.UnimplementedProjectsLocationsEndpointsServerServer +} + +func (c *CloudIDSEndpointV1) ListProjectsLocationsEndpoints(ctx context.Context, request *pb.ListProjectsLocationsEndpointsRequest) (*pb.ListEndpointsResponse, error) { + project, err := c.Projects.GetProjectByID(*request.Parent) + if err != nil { + return nil, err + } + findPrefix := fmt.Sprintf("projects/%v/", project.ID) + endpointKind := (&pb.Endpoint{}).ProtoReflect().Descriptor() + + var endpoints []*pb.Endpoint + if err := c.storage.List(ctx, endpointKind, storage.ListOptions{}, func(obj proto.Message) error { + endpoint := obj.(*pb.Endpoint) + if strings.HasPrefix(*endpoint.Name, findPrefix) { + endpoints = append(endpoints, endpoint) + } + + return nil + }); err != nil { + return nil, err + } + + return &pb.ListEndpointsResponse{ + Endpoints: endpoints, + }, nil +} + +func (c *CloudIDSEndpointV1) GetProjectsLocationsEndpoint(ctx context.Context, request *pb.GetProjectsLocationsEndpointRequest) (*pb.Endpoint, error) { + endpoint, err := c.parseEndpointName(*request.Name) + if err != nil { + return nil, err + } + + fqn := endpoint.String() + obj := &pb.Endpoint{} + if err := c.storage.Get(ctx, fqn, obj); err != nil { + return nil, err + } + + return obj, nil +} + +func (c *CloudIDSEndpointV1) CreateProjectsLocationsEndpoint(ctx context.Context, request *pb.CreateProjectsLocationsEndpointRequest) (*longrunning.Operation, error) { + // validate endpoint id: + // This value must start with a lowercase letter followed by up to 62 + // lowercase letters, numbers, or hyphens, and cannot end with a hyphen. + // Values that do not match this pattern will trigger an INVALID_ARGUMENT + // error. + re := regexp.MustCompile(`^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$`) + if !re.MatchString(*request.EndpointId) { + return nil, status.Errorf(codes.InvalidArgument, "endpointID %q is malformed", *request.EndpointId) + } + + reqName := *request.Parent + "/endpoints/" + *request.EndpointId + endpoint, err := c.parseEndpointName(reqName) + if err != nil { + return nil, err + } + + fqn := endpoint.String() + obj := proto.Clone(request.ProjectsLocationsEndpoint).(*pb.Endpoint) + if err := c.storage.Create(ctx, fqn, obj); err != nil { + return nil, err + } + + return c.operations.NewLRO(ctx) +} + +func (c *CloudIDSEndpointV1) DeleteProjectsLocationsEndpoint(ctx context.Context, request *pb.DeleteProjectsLocationsEndpointRequest) (*longrunning.Operation, error) { + endpoint, err := c.parseEndpointName(*request.Name) + if err != nil { + return nil, err + } + + fqn := endpoint.String() + oldObj := &pb.Endpoint{} + if err := c.storage.Delete(ctx, fqn, oldObj); err != nil { + return nil, err + } + + return c.operations.NewLRO(ctx) + +} + +func (c *CloudIDSEndpointV1) PatchProjectsLocationsEndpoint(ctx context.Context, request *pb.PatchProjectsLocationsEndpointRequest) (*longrunning.Operation, error) { + endpoint, err := c.parseEndpointName(*request.Name) + if err != nil { + return nil, err + } + + fqn := endpoint.String() + now := time.Now() + + curObj := &pb.Endpoint{} + if err := c.storage.Get(ctx, fqn, curObj); err != nil { + return nil, err + } + + paths := strings.Split(request.GetUpdateMask(), ",") + for _, path := range paths { + switch path { + case "threatExceptions": + curObj.ThreatExceptions = request.ProjectsLocationsEndpoint.GetThreatExceptions() + default: + return nil, status.Errorf(codes.InvalidArgument, "field %q is not yet handled in mock", path) + } + } + + curObj.UpdateTime = timestamppb.New(now) + + if err := c.storage.Update(ctx, fqn, curObj); err != nil { + return nil, err + } + + return c.operations.NewLRO(ctx) +} diff --git a/mockgcp/mockcloudids/names.go b/mockgcp/mockcloudids/names.go new file mode 100644 index 0000000000..df6d8e6527 --- /dev/null +++ b/mockgcp/mockcloudids/names.go @@ -0,0 +1,58 @@ +// Copyright 2024 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. + +package mockcloudids + +import ( + "strings" + + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/common/projects" +) + +// endpoint is a parsed endpoint name +type endpoint struct { + Project *projects.ProjectData + Location string + Endpoint string +} + +func (e *endpoint) String() string { + return "projects/" + e.Project.ID + "/locations/" + e.Location + "/endpoints/" + e.Endpoint +} + +// parseEndpointName parses a string into a endpoint. +// The expected form is projects//locations//endpoints/ +func (s *MockService) parseEndpointName(name string) (*endpoint, error) { + tokens := strings.Split(name, "/") + + if len(tokens) == 6 && tokens[0] == "projects" && tokens[2] == "locations" && tokens[4] == "endpoints" { + project, err := s.Projects.GetProjectByID(tokens[1]) + if err != nil { + return nil, err + } + + name := &endpoint{ + Project: project, + Location: tokens[3], + Endpoint: tokens[5], + } + + return name, nil + } else { + return nil, status.Errorf(codes.InvalidArgument, "name %q is malformed", name) + } +} diff --git a/mockgcp/mockcloudids/service.go b/mockgcp/mockcloudids/service.go new file mode 100644 index 0000000000..c4ab560430 --- /dev/null +++ b/mockgcp/mockcloudids/service.go @@ -0,0 +1,66 @@ +// Copyright 2024 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. + +package mockcloudids + +import ( + "context" + "net/http" + + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "google.golang.org/grpc" + + "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/common" + "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/common/operations" + pb "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/generated/mockgcp/cloud/ids/v1" + "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/pkg/storage" +) + +// MockService represents a mocked ids service. +type MockService struct { + *common.MockEnvironment + storage storage.Storage + + operations *operations.Operations + v1 *CloudIDSEndpointV1 +} + +// New creates a MockService. +func New(env *common.MockEnvironment, storage storage.Storage) *MockService { + s := &MockService{ + MockEnvironment: env, + storage: storage, + operations: operations.NewOperationsService(storage), + } + s.v1 = &CloudIDSEndpointV1{MockService: s} + return s +} + +func (s *MockService) ExpectedHost() string { + return "ids.googleapis.com" +} + +func (s *MockService) Register(grpcServer *grpc.Server) { + pb.RegisterProjectsLocationsEndpointsServerServer(grpcServer, s.v1) +} + +func (s *MockService) NewHTTPMux(ctx context.Context, conn *grpc.ClientConn) (http.Handler, error) { + mux := runtime.NewServeMux() + + if err := pb.RegisterProjectsLocationsEndpointsServerHandler(ctx, mux, conn); err != nil { + return nil, err + } + + return mux, nil +} diff --git a/mockgcp/tools/gapic/pkg/sorted/map.go b/mockgcp/tools/gapic/pkg/sorted/map.go index f24805d9e5..b1f8d5a6f5 100644 --- a/mockgcp/tools/gapic/pkg/sorted/map.go +++ b/mockgcp/tools/gapic/pkg/sorted/map.go @@ -29,6 +29,16 @@ type Entry[K comparable, V any] struct { Value V } +func (m *Map[K, V]) Get(k K) V { + for _, entry := range m.entries { + if entry.Key == k { + return entry.Value + } + } + var emptyV V + return emptyV +} + func (m *Map[K, V]) Keys() []K { var keys []K for _, entry := range m.entries { diff --git a/pkg/test/resourcefixture/testdata/basic/cloudids/v1alpha1/cloudidsendpoint/update.yaml b/pkg/test/resourcefixture/testdata/basic/cloudids/v1alpha1/cloudidsendpoint/update.yaml index fb877371ec..7309928fe4 100644 --- a/pkg/test/resourcefixture/testdata/basic/cloudids/v1alpha1/cloudidsendpoint/update.yaml +++ b/pkg/test/resourcefixture/testdata/basic/cloudids/v1alpha1/cloudidsendpoint/update.yaml @@ -18,7 +18,9 @@ metadata: name: cloudidsendpoint-${uniqueId} spec: network: "computenetwork-${uniqueId}" - severity: "ERROR" + severity: "INFORMATIONAL" location: "us-west2-a" projectRef: external: ${projectId} + threatExceptions: + - exception1-${uniqueId}