From 173942840c1747671a8fe6c2fb041172a58dc948 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 11 Feb 2022 09:18:37 -0800 Subject: [PATCH] chore(all): auto-regenerate .pb.go files (#758) This is an auto-generated regeneration of the .pb.go files by cloud.google.com/go/internal/gapicgen. Once this PR is submitted, genbot will update the corresponding PR to depend on the newer version of go-genproto, and assign reviewers. Whilst this or any regen PR is open in go-genproto, genbot will not create any more regeneration PRs. If all regen PRs are closed, gapicgen will create a new set of regeneration PRs once per night. If you have been assigned to review this PR, please: - Ensure that CI is passing. If it's failing, it requires your manual attention. - Approve and submit this PR if you believe it's ready to ship. That will prompt genbot to assign reviewers to the google-cloud-go PR. Corresponding google-cloud-go PR: googleapis/google-cloud-go#5512 Changes: feat(recommender): Sustainability Projection Incorporate above new features, as well as update .bazel files. PiperOrigin-RevId: 427821134 Source-Link: https://github.com/googleapis/googleapis/commit/44d6bef0ca6db8bba3fb324c8186e694bcc4829c chore: use gapic-generator-python 0.63.2 docs: add generated snippets PiperOrigin-RevId: 427792504 Source-Link: https://github.com/googleapis/googleapis/commit/55b9e1e0b3106c850d13958352bc0751147b6b15 --- .../cloud/recommender/v1beta1/insight.pb.go | 2 +- .../v1beta1/insight_type_config.pb.go | 2 +- .../recommender/v1beta1/recommendation.pb.go | 371 +++++++++++------- .../v1beta1/recommender_config.pb.go | 2 +- regen.txt | 2 +- 5 files changed, 242 insertions(+), 137 deletions(-) diff --git a/googleapis/cloud/recommender/v1beta1/insight.pb.go b/googleapis/cloud/recommender/v1beta1/insight.pb.go index a03d5b65b..6c8655de2 100644 --- a/googleapis/cloud/recommender/v1beta1/insight.pb.go +++ b/googleapis/cloud/recommender/v1beta1/insight.pb.go @@ -443,7 +443,7 @@ type Insight_RecommendationReference struct { unknownFields protoimpl.UnknownFields // Recommendation resource name, e.g. - // `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/recommendations/[RECOMMENDATION_ID]` + // projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/recommendations/[RECOMMENDATION_ID] Recommendation string `protobuf:"bytes,1,opt,name=recommendation,proto3" json:"recommendation,omitempty"` } diff --git a/googleapis/cloud/recommender/v1beta1/insight_type_config.pb.go b/googleapis/cloud/recommender/v1beta1/insight_type_config.pb.go index c7ea984b2..f7ae5888e 100644 --- a/googleapis/cloud/recommender/v1beta1/insight_type_config.pb.go +++ b/googleapis/cloud/recommender/v1beta1/insight_type_config.pb.go @@ -67,7 +67,7 @@ type InsightTypeConfig struct { // separated by a slash (/). // Prefix must be a DNS subdomain. // Name must be 63 characters or less, begin and end with alphanumerics, - // with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. + // with dashes (-), underscores (_), dots (.), and alphanumerics between. Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // A user-settable field to provide a human-readable name to be used in user // interfaces. diff --git a/googleapis/cloud/recommender/v1beta1/recommendation.pb.go b/googleapis/cloud/recommender/v1beta1/recommendation.pb.go index f01168c81..6d4c1ae91 100644 --- a/googleapis/cloud/recommender/v1beta1/recommendation.pb.go +++ b/googleapis/cloud/recommender/v1beta1/recommendation.pb.go @@ -163,7 +163,7 @@ func (x Impact_Category) Number() protoreflect.EnumNumber { // Deprecated: Use Impact_Category.Descriptor instead. func (Impact_Category) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_recommender_v1beta1_recommendation_proto_rawDescGZIP(), []int{7, 0} + return file_google_cloud_recommender_v1beta1_recommendation_proto_rawDescGZIP(), []int{8, 0} } // Represents Recommendation State. @@ -243,7 +243,7 @@ func (x RecommendationStateInfo_State) Number() protoreflect.EnumNumber { // Deprecated: Use RecommendationStateInfo_State.Descriptor instead. func (RecommendationStateInfo_State) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_recommender_v1beta1_recommendation_proto_rawDescGZIP(), []int{8, 0} + return file_google_cloud_recommender_v1beta1_recommendation_proto_rawDescGZIP(), []int{9, 0} } // A recommendation along with a suggested action. E.g., a rightsizing @@ -917,6 +917,66 @@ func (x *SecurityProjection) GetDetails() *structpb.Struct { return nil } +// Contains metadata about how much sustainability a recommendation can save or +// incur. +type SustainabilityProjection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Carbon Footprint generated in kg of CO2 equivalent. + // Chose kg_c_o2e so that the name renders correctly in camelCase (kgCO2e). + KgCO2E float64 `protobuf:"fixed64,1,opt,name=kg_c_o2e,json=kgCO2e,proto3" json:"kg_c_o2e,omitempty"` + // Duration for which this sustanability applies. + Duration *durationpb.Duration `protobuf:"bytes,2,opt,name=duration,proto3" json:"duration,omitempty"` +} + +func (x *SustainabilityProjection) Reset() { + *x = SustainabilityProjection{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SustainabilityProjection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SustainabilityProjection) ProtoMessage() {} + +func (x *SustainabilityProjection) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_recommender_v1beta1_recommendation_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 SustainabilityProjection.ProtoReflect.Descriptor instead. +func (*SustainabilityProjection) Descriptor() ([]byte, []int) { + return file_google_cloud_recommender_v1beta1_recommendation_proto_rawDescGZIP(), []int{7} +} + +func (x *SustainabilityProjection) GetKgCO2E() float64 { + if x != nil { + return x.KgCO2E + } + return 0 +} + +func (x *SustainabilityProjection) GetDuration() *durationpb.Duration { + if x != nil { + return x.Duration + } + return nil +} + // Contains the impact a recommendation can have for a given category. type Impact struct { state protoimpl.MessageState @@ -930,13 +990,14 @@ type Impact struct { // Types that are assignable to Projection: // *Impact_CostProjection // *Impact_SecurityProjection + // *Impact_SustainabilityProjection Projection isImpact_Projection `protobuf_oneof:"projection"` } func (x *Impact) Reset() { *x = Impact{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[7] + mi := &file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -949,7 +1010,7 @@ func (x *Impact) String() string { func (*Impact) ProtoMessage() {} func (x *Impact) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[7] + mi := &file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -962,7 +1023,7 @@ func (x *Impact) ProtoReflect() protoreflect.Message { // Deprecated: Use Impact.ProtoReflect.Descriptor instead. func (*Impact) Descriptor() ([]byte, []int) { - return file_google_cloud_recommender_v1beta1_recommendation_proto_rawDescGZIP(), []int{7} + return file_google_cloud_recommender_v1beta1_recommendation_proto_rawDescGZIP(), []int{8} } func (x *Impact) GetCategory() Impact_Category { @@ -993,6 +1054,13 @@ func (x *Impact) GetSecurityProjection() *SecurityProjection { return nil } +func (x *Impact) GetSustainabilityProjection() *SustainabilityProjection { + if x, ok := x.GetProjection().(*Impact_SustainabilityProjection); ok { + return x.SustainabilityProjection + } + return nil +} + type isImpact_Projection interface { isImpact_Projection() } @@ -1007,10 +1075,17 @@ type Impact_SecurityProjection struct { SecurityProjection *SecurityProjection `protobuf:"bytes,101,opt,name=security_projection,json=securityProjection,proto3,oneof"` } +type Impact_SustainabilityProjection struct { + // Use with CategoryType.SUSTAINABILITY + SustainabilityProjection *SustainabilityProjection `protobuf:"bytes,102,opt,name=sustainability_projection,json=sustainabilityProjection,proto3,oneof"` +} + func (*Impact_CostProjection) isImpact_Projection() {} func (*Impact_SecurityProjection) isImpact_Projection() {} +func (*Impact_SustainabilityProjection) isImpact_Projection() {} + // Information for state. Contains state and metadata. type RecommendationStateInfo struct { state protoimpl.MessageState @@ -1026,7 +1101,7 @@ type RecommendationStateInfo struct { func (x *RecommendationStateInfo) Reset() { *x = RecommendationStateInfo{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[8] + mi := &file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1039,7 +1114,7 @@ func (x *RecommendationStateInfo) String() string { func (*RecommendationStateInfo) ProtoMessage() {} func (x *RecommendationStateInfo) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[8] + mi := &file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1052,7 +1127,7 @@ func (x *RecommendationStateInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use RecommendationStateInfo.ProtoReflect.Descriptor instead. func (*RecommendationStateInfo) Descriptor() ([]byte, []int) { - return file_google_cloud_recommender_v1beta1_recommendation_proto_rawDescGZIP(), []int{8} + return file_google_cloud_recommender_v1beta1_recommendation_proto_rawDescGZIP(), []int{9} } func (x *RecommendationStateInfo) GetState() RecommendationStateInfo_State { @@ -1083,7 +1158,7 @@ type Recommendation_InsightReference struct { func (x *Recommendation_InsightReference) Reset() { *x = Recommendation_InsightReference{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[9] + mi := &file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1096,7 +1171,7 @@ func (x *Recommendation_InsightReference) String() string { func (*Recommendation_InsightReference) ProtoMessage() {} func (x *Recommendation_InsightReference) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[9] + mi := &file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1304,90 +1379,104 @@ var file_google_cloud_recommender_v1beta1_recommendation_proto_rawDesc = []byte{ 0x12, 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x22, 0xa1, 0x03, 0x0a, 0x06, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x12, 0x4d, - 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x5b, 0x0a, - 0x0f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x73, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x67, 0x0a, 0x13, 0x73, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x12, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x74, 0x0a, 0x08, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, - 0x18, 0x0a, 0x14, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x53, - 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, - 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x45, 0x52, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x4e, 0x43, 0x45, - 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x41, 0x42, 0x49, 0x4c, - 0x49, 0x54, 0x59, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x55, 0x53, 0x54, 0x41, 0x49, 0x4e, - 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x05, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x03, 0x0a, 0x17, 0x52, 0x65, 0x63, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x55, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x73, 0x0a, 0x0e, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, - 0x40, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x65, 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, 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, 0x61, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, - 0x07, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x45, 0x44, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, - 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, - 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x49, 0x53, 0x4d, 0x49, 0x53, 0x53, - 0x45, 0x44, 0x10, 0x05, 0x42, 0xf2, 0x03, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, + 0x69, 0x6c, 0x73, 0x22, 0x6b, 0x0a, 0x18, 0x53, 0x75, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x18, 0x0a, 0x08, 0x6b, 0x67, 0x5f, 0x63, 0x5f, 0x6f, 0x32, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x06, 0x6b, 0x67, 0x43, 0x4f, 0x32, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x9c, 0x04, 0x0a, 0x06, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x12, 0x4d, 0x0a, 0x08, 0x63, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x5b, 0x0a, 0x0f, 0x63, 0x6f, + 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x64, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x67, 0x0a, 0x13, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x65, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x79, 0x0a, 0x19, 0x73, 0x75, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x66, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x18, 0x73, 0x75, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x74, 0x0a, 0x08, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x41, 0x54, 0x45, 0x47, + 0x4f, 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x53, 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, + 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x45, 0x52, + 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x41, + 0x4e, 0x41, 0x47, 0x45, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x04, 0x12, 0x12, 0x0a, + 0x0e, 0x53, 0x55, 0x53, 0x54, 0x41, 0x49, 0x4e, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, + 0x05, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x8a, 0x03, 0x0a, 0x17, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x55, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x50, 0x01, 0x5a, - 0x4b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x63, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x3b, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0xa2, 0x02, 0x04, 0x43, - 0x52, 0x45, 0x43, 0xaa, 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x56, - 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0xea, 0x41, 0xcf, 0x02, 0x0a, 0x26, 0x72, 0x65, 0x63, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, - 0x65, 0x72, 0x12, 0x42, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 0x63, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x7d, 0x12, 0x51, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, - 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, - 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x63, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x7d, 0x12, 0x40, 0x66, 0x6f, 0x6c, 0x64, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, - 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, - 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x7d, 0x12, 0x4c, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, - 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x63, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x7d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x73, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x40, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x65, + 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, + 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, 0x61, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, + 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x45, 0x44, + 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, + 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d, 0x0a, + 0x09, 0x44, 0x49, 0x53, 0x4d, 0x49, 0x53, 0x53, 0x45, 0x44, 0x10, 0x05, 0x42, 0xf2, 0x03, 0x0a, + 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x50, 0x01, 0x5a, 0x4b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0xa2, 0x02, 0x04, 0x43, 0x52, 0x45, 0x43, 0xaa, 0x02, 0x20, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0xea, 0x41, + 0xcf, 0x02, 0x0a, 0x26, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, + 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x42, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x7d, 0x12, 0x51, + 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, + 0x7b, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x7d, 0x12, 0x40, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x6c, 0x64, + 0x65, 0x72, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x7d, 0x12, 0x4c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x7d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1403,7 +1492,7 @@ func file_google_cloud_recommender_v1beta1_recommendation_proto_rawDescGZIP() [] } var file_google_cloud_recommender_v1beta1_recommendation_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_google_cloud_recommender_v1beta1_recommendation_proto_goTypes = []interface{}{ (Recommendation_Priority)(0), // 0: google.cloud.recommender.v1beta1.Recommendation.Priority (Impact_Category)(0), // 1: google.cloud.recommender.v1beta1.Impact.Category @@ -1415,48 +1504,51 @@ var file_google_cloud_recommender_v1beta1_recommendation_proto_goTypes = []inter (*ValueMatcher)(nil), // 7: google.cloud.recommender.v1beta1.ValueMatcher (*CostProjection)(nil), // 8: google.cloud.recommender.v1beta1.CostProjection (*SecurityProjection)(nil), // 9: google.cloud.recommender.v1beta1.SecurityProjection - (*Impact)(nil), // 10: google.cloud.recommender.v1beta1.Impact - (*RecommendationStateInfo)(nil), // 11: google.cloud.recommender.v1beta1.RecommendationStateInfo - (*Recommendation_InsightReference)(nil), // 12: google.cloud.recommender.v1beta1.Recommendation.InsightReference - nil, // 13: google.cloud.recommender.v1beta1.Operation.PathFiltersEntry - nil, // 14: google.cloud.recommender.v1beta1.Operation.PathValueMatchersEntry - nil, // 15: google.cloud.recommender.v1beta1.RecommendationStateInfo.StateMetadataEntry - (*timestamppb.Timestamp)(nil), // 16: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 17: google.protobuf.Struct - (*structpb.Value)(nil), // 18: google.protobuf.Value - (*money.Money)(nil), // 19: google.type.Money - (*durationpb.Duration)(nil), // 20: google.protobuf.Duration + (*SustainabilityProjection)(nil), // 10: google.cloud.recommender.v1beta1.SustainabilityProjection + (*Impact)(nil), // 11: google.cloud.recommender.v1beta1.Impact + (*RecommendationStateInfo)(nil), // 12: google.cloud.recommender.v1beta1.RecommendationStateInfo + (*Recommendation_InsightReference)(nil), // 13: google.cloud.recommender.v1beta1.Recommendation.InsightReference + nil, // 14: google.cloud.recommender.v1beta1.Operation.PathFiltersEntry + nil, // 15: google.cloud.recommender.v1beta1.Operation.PathValueMatchersEntry + nil, // 16: google.cloud.recommender.v1beta1.RecommendationStateInfo.StateMetadataEntry + (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 18: google.protobuf.Struct + (*structpb.Value)(nil), // 19: google.protobuf.Value + (*money.Money)(nil), // 20: google.type.Money + (*durationpb.Duration)(nil), // 21: google.protobuf.Duration } var file_google_cloud_recommender_v1beta1_recommendation_proto_depIdxs = []int32{ - 16, // 0: google.cloud.recommender.v1beta1.Recommendation.last_refresh_time:type_name -> google.protobuf.Timestamp - 10, // 1: google.cloud.recommender.v1beta1.Recommendation.primary_impact:type_name -> google.cloud.recommender.v1beta1.Impact - 10, // 2: google.cloud.recommender.v1beta1.Recommendation.additional_impact:type_name -> google.cloud.recommender.v1beta1.Impact + 17, // 0: google.cloud.recommender.v1beta1.Recommendation.last_refresh_time:type_name -> google.protobuf.Timestamp + 11, // 1: google.cloud.recommender.v1beta1.Recommendation.primary_impact:type_name -> google.cloud.recommender.v1beta1.Impact + 11, // 2: google.cloud.recommender.v1beta1.Recommendation.additional_impact:type_name -> google.cloud.recommender.v1beta1.Impact 0, // 3: google.cloud.recommender.v1beta1.Recommendation.priority:type_name -> google.cloud.recommender.v1beta1.Recommendation.Priority 4, // 4: google.cloud.recommender.v1beta1.Recommendation.content:type_name -> google.cloud.recommender.v1beta1.RecommendationContent - 11, // 5: google.cloud.recommender.v1beta1.Recommendation.state_info:type_name -> google.cloud.recommender.v1beta1.RecommendationStateInfo - 12, // 6: google.cloud.recommender.v1beta1.Recommendation.associated_insights:type_name -> google.cloud.recommender.v1beta1.Recommendation.InsightReference + 12, // 5: google.cloud.recommender.v1beta1.Recommendation.state_info:type_name -> google.cloud.recommender.v1beta1.RecommendationStateInfo + 13, // 6: google.cloud.recommender.v1beta1.Recommendation.associated_insights:type_name -> google.cloud.recommender.v1beta1.Recommendation.InsightReference 5, // 7: google.cloud.recommender.v1beta1.RecommendationContent.operation_groups:type_name -> google.cloud.recommender.v1beta1.OperationGroup - 17, // 8: google.cloud.recommender.v1beta1.RecommendationContent.overview:type_name -> google.protobuf.Struct + 18, // 8: google.cloud.recommender.v1beta1.RecommendationContent.overview:type_name -> google.protobuf.Struct 6, // 9: google.cloud.recommender.v1beta1.OperationGroup.operations:type_name -> google.cloud.recommender.v1beta1.Operation - 18, // 10: google.cloud.recommender.v1beta1.Operation.value:type_name -> google.protobuf.Value + 19, // 10: google.cloud.recommender.v1beta1.Operation.value:type_name -> google.protobuf.Value 7, // 11: google.cloud.recommender.v1beta1.Operation.value_matcher:type_name -> google.cloud.recommender.v1beta1.ValueMatcher - 13, // 12: google.cloud.recommender.v1beta1.Operation.path_filters:type_name -> google.cloud.recommender.v1beta1.Operation.PathFiltersEntry - 14, // 13: google.cloud.recommender.v1beta1.Operation.path_value_matchers:type_name -> google.cloud.recommender.v1beta1.Operation.PathValueMatchersEntry - 19, // 14: google.cloud.recommender.v1beta1.CostProjection.cost:type_name -> google.type.Money - 20, // 15: google.cloud.recommender.v1beta1.CostProjection.duration:type_name -> google.protobuf.Duration - 17, // 16: google.cloud.recommender.v1beta1.SecurityProjection.details:type_name -> google.protobuf.Struct - 1, // 17: google.cloud.recommender.v1beta1.Impact.category:type_name -> google.cloud.recommender.v1beta1.Impact.Category - 8, // 18: google.cloud.recommender.v1beta1.Impact.cost_projection:type_name -> google.cloud.recommender.v1beta1.CostProjection - 9, // 19: google.cloud.recommender.v1beta1.Impact.security_projection:type_name -> google.cloud.recommender.v1beta1.SecurityProjection - 2, // 20: google.cloud.recommender.v1beta1.RecommendationStateInfo.state:type_name -> google.cloud.recommender.v1beta1.RecommendationStateInfo.State - 15, // 21: google.cloud.recommender.v1beta1.RecommendationStateInfo.state_metadata:type_name -> google.cloud.recommender.v1beta1.RecommendationStateInfo.StateMetadataEntry - 18, // 22: google.cloud.recommender.v1beta1.Operation.PathFiltersEntry.value:type_name -> google.protobuf.Value - 7, // 23: google.cloud.recommender.v1beta1.Operation.PathValueMatchersEntry.value:type_name -> google.cloud.recommender.v1beta1.ValueMatcher - 24, // [24:24] is the sub-list for method output_type - 24, // [24:24] 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 + 14, // 12: google.cloud.recommender.v1beta1.Operation.path_filters:type_name -> google.cloud.recommender.v1beta1.Operation.PathFiltersEntry + 15, // 13: google.cloud.recommender.v1beta1.Operation.path_value_matchers:type_name -> google.cloud.recommender.v1beta1.Operation.PathValueMatchersEntry + 20, // 14: google.cloud.recommender.v1beta1.CostProjection.cost:type_name -> google.type.Money + 21, // 15: google.cloud.recommender.v1beta1.CostProjection.duration:type_name -> google.protobuf.Duration + 18, // 16: google.cloud.recommender.v1beta1.SecurityProjection.details:type_name -> google.protobuf.Struct + 21, // 17: google.cloud.recommender.v1beta1.SustainabilityProjection.duration:type_name -> google.protobuf.Duration + 1, // 18: google.cloud.recommender.v1beta1.Impact.category:type_name -> google.cloud.recommender.v1beta1.Impact.Category + 8, // 19: google.cloud.recommender.v1beta1.Impact.cost_projection:type_name -> google.cloud.recommender.v1beta1.CostProjection + 9, // 20: google.cloud.recommender.v1beta1.Impact.security_projection:type_name -> google.cloud.recommender.v1beta1.SecurityProjection + 10, // 21: google.cloud.recommender.v1beta1.Impact.sustainability_projection:type_name -> google.cloud.recommender.v1beta1.SustainabilityProjection + 2, // 22: google.cloud.recommender.v1beta1.RecommendationStateInfo.state:type_name -> google.cloud.recommender.v1beta1.RecommendationStateInfo.State + 16, // 23: google.cloud.recommender.v1beta1.RecommendationStateInfo.state_metadata:type_name -> google.cloud.recommender.v1beta1.RecommendationStateInfo.StateMetadataEntry + 19, // 24: google.cloud.recommender.v1beta1.Operation.PathFiltersEntry.value:type_name -> google.protobuf.Value + 7, // 25: google.cloud.recommender.v1beta1.Operation.PathValueMatchersEntry.value:type_name -> google.cloud.recommender.v1beta1.ValueMatcher + 26, // [26:26] is the sub-list for method output_type + 26, // [26:26] is the sub-list for method input_type + 26, // [26:26] is the sub-list for extension type_name + 26, // [26:26] is the sub-list for extension extendee + 0, // [0:26] is the sub-list for field type_name } func init() { file_google_cloud_recommender_v1beta1_recommendation_proto_init() } @@ -1550,7 +1642,7 @@ func file_google_cloud_recommender_v1beta1_recommendation_proto_init() { } } file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Impact); i { + switch v := v.(*SustainabilityProjection); i { case 0: return &v.state case 1: @@ -1562,7 +1654,7 @@ func file_google_cloud_recommender_v1beta1_recommendation_proto_init() { } } file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RecommendationStateInfo); i { + switch v := v.(*Impact); i { case 0: return &v.state case 1: @@ -1574,6 +1666,18 @@ func file_google_cloud_recommender_v1beta1_recommendation_proto_init() { } } file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RecommendationStateInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Recommendation_InsightReference); i { case 0: return &v.state @@ -1593,9 +1697,10 @@ func file_google_cloud_recommender_v1beta1_recommendation_proto_init() { file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[4].OneofWrappers = []interface{}{ (*ValueMatcher_MatchesPattern)(nil), } - file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_google_cloud_recommender_v1beta1_recommendation_proto_msgTypes[8].OneofWrappers = []interface{}{ (*Impact_CostProjection)(nil), (*Impact_SecurityProjection)(nil), + (*Impact_SustainabilityProjection)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -1603,7 +1708,7 @@ func file_google_cloud_recommender_v1beta1_recommendation_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_recommender_v1beta1_recommendation_proto_rawDesc, NumEnums: 3, - NumMessages: 13, + NumMessages: 14, NumExtensions: 0, NumServices: 0, }, diff --git a/googleapis/cloud/recommender/v1beta1/recommender_config.pb.go b/googleapis/cloud/recommender/v1beta1/recommender_config.pb.go index 0c07b8683..f06b8af65 100644 --- a/googleapis/cloud/recommender/v1beta1/recommender_config.pb.go +++ b/googleapis/cloud/recommender/v1beta1/recommender_config.pb.go @@ -67,7 +67,7 @@ type RecommenderConfig struct { // separated by a slash (/). // Prefix must be a DNS subdomain. // Name must be 63 characters or less, begin and end with alphanumerics, - // with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. + // with dashes (-), underscores (_), dots (.), and alphanumerics between. Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // A user-settable field to provide a human-readable name to be used in user // interfaces. diff --git a/regen.txt b/regen.txt index 18354fd57..31aba74d2 100644 --- a/regen.txt +++ b/regen.txt @@ -1 +1 @@ -fed73d4cdc017d9b8eaea1586af282c6f566c07d \ No newline at end of file +44d6bef0ca6db8bba3fb324c8186e694bcc4829c \ No newline at end of file