google-cloud-recommender-v1 0.8.5 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -178,6 +178,49 @@ module Google
178
178
  resource.call(**args)
179
179
  end
180
180
 
181
+ ##
182
+ # Create a fully-qualified InsightTypeConfig resource string.
183
+ #
184
+ # @overload insight_type_config_path(project:, location:, insight_type:)
185
+ # The resource will be in the following format:
186
+ #
187
+ # `projects/{project}/locations/{location}/insightTypes/{insight_type}/config`
188
+ #
189
+ # @param project [String]
190
+ # @param location [String]
191
+ # @param insight_type [String]
192
+ #
193
+ # @overload insight_type_config_path(organization:, location:, insight_type:)
194
+ # The resource will be in the following format:
195
+ #
196
+ # `organizations/{organization}/locations/{location}/insightTypes/{insight_type}/config`
197
+ #
198
+ # @param organization [String]
199
+ # @param location [String]
200
+ # @param insight_type [String]
201
+ #
202
+ # @return [::String]
203
+ def insight_type_config_path **args
204
+ resources = {
205
+ "insight_type:location:project" => (proc do |project:, location:, insight_type:|
206
+ raise ::ArgumentError, "project cannot contain /" if project.to_s.include? "/"
207
+ raise ::ArgumentError, "location cannot contain /" if location.to_s.include? "/"
208
+
209
+ "projects/#{project}/locations/#{location}/insightTypes/#{insight_type}/config"
210
+ end),
211
+ "insight_type:location:organization" => (proc do |organization:, location:, insight_type:|
212
+ raise ::ArgumentError, "organization cannot contain /" if organization.to_s.include? "/"
213
+ raise ::ArgumentError, "location cannot contain /" if location.to_s.include? "/"
214
+
215
+ "organizations/#{organization}/locations/#{location}/insightTypes/#{insight_type}/config"
216
+ end)
217
+ }
218
+
219
+ resource = resources[args.keys.sort.join(":")]
220
+ raise ::ArgumentError, "no resource found for values #{args.keys}" if resource.nil?
221
+ resource.call(**args)
222
+ end
223
+
181
224
  ##
182
225
  # Create a fully-qualified Recommendation resource string.
183
226
  #
@@ -332,6 +375,49 @@ module Google
332
375
  resource.call(**args)
333
376
  end
334
377
 
378
+ ##
379
+ # Create a fully-qualified RecommenderConfig resource string.
380
+ #
381
+ # @overload recommender_config_path(project:, location:, recommender:)
382
+ # The resource will be in the following format:
383
+ #
384
+ # `projects/{project}/locations/{location}/recommenders/{recommender}/config`
385
+ #
386
+ # @param project [String]
387
+ # @param location [String]
388
+ # @param recommender [String]
389
+ #
390
+ # @overload recommender_config_path(organization:, location:, recommender:)
391
+ # The resource will be in the following format:
392
+ #
393
+ # `organizations/{organization}/locations/{location}/recommenders/{recommender}/config`
394
+ #
395
+ # @param organization [String]
396
+ # @param location [String]
397
+ # @param recommender [String]
398
+ #
399
+ # @return [::String]
400
+ def recommender_config_path **args
401
+ resources = {
402
+ "location:project:recommender" => (proc do |project:, location:, recommender:|
403
+ raise ::ArgumentError, "project cannot contain /" if project.to_s.include? "/"
404
+ raise ::ArgumentError, "location cannot contain /" if location.to_s.include? "/"
405
+
406
+ "projects/#{project}/locations/#{location}/recommenders/#{recommender}/config"
407
+ end),
408
+ "location:organization:recommender" => (proc do |organization:, location:, recommender:|
409
+ raise ::ArgumentError, "organization cannot contain /" if organization.to_s.include? "/"
410
+ raise ::ArgumentError, "location cannot contain /" if location.to_s.include? "/"
411
+
412
+ "organizations/#{organization}/locations/#{location}/recommenders/#{recommender}/config"
413
+ end)
414
+ }
415
+
416
+ resource = resources[args.keys.sort.join(":")]
417
+ raise ::ArgumentError, "no resource found for values #{args.keys}" if resource.nil?
418
+ resource.call(**args)
419
+ end
420
+
335
421
  extend self
336
422
  end
337
423
  end
@@ -0,0 +1,37 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: google/cloud/recommender/v1/recommender_config.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ require 'google/api/field_behavior_pb'
7
+ require 'google/api/resource_pb'
8
+ require 'google/protobuf/struct_pb'
9
+ require 'google/protobuf/timestamp_pb'
10
+
11
+ Google::Protobuf::DescriptorPool.generated_pool.build do
12
+ add_file("google/cloud/recommender/v1/recommender_config.proto", :syntax => :proto3) do
13
+ add_message "google.cloud.recommender.v1.RecommenderConfig" do
14
+ optional :name, :string, 1
15
+ optional :recommender_generation_config, :message, 2, "google.cloud.recommender.v1.RecommenderGenerationConfig"
16
+ optional :etag, :string, 3
17
+ optional :update_time, :message, 4, "google.protobuf.Timestamp"
18
+ optional :revision_id, :string, 5
19
+ map :annotations, :string, :string, 6
20
+ optional :display_name, :string, 7
21
+ end
22
+ add_message "google.cloud.recommender.v1.RecommenderGenerationConfig" do
23
+ optional :params, :message, 1, "google.protobuf.Struct"
24
+ end
25
+ end
26
+ end
27
+
28
+ module Google
29
+ module Cloud
30
+ module Recommender
31
+ module V1
32
+ RecommenderConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recommender.v1.RecommenderConfig").msgclass
33
+ RecommenderGenerationConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recommender.v1.RecommenderGenerationConfig").msgclass
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,13 +1,17 @@
1
1
  # Generated by the protocol buffer compiler. DO NOT EDIT!
2
2
  # source: google/cloud/recommender/v1/recommender_service.proto
3
3
 
4
+ require 'google/protobuf'
5
+
4
6
  require 'google/api/annotations_pb'
5
7
  require 'google/api/client_pb'
6
8
  require 'google/api/field_behavior_pb'
7
9
  require 'google/api/resource_pb'
8
10
  require 'google/cloud/recommender/v1/insight_pb'
11
+ require 'google/cloud/recommender/v1/insight_type_config_pb'
9
12
  require 'google/cloud/recommender/v1/recommendation_pb'
10
- require 'google/protobuf'
13
+ require 'google/cloud/recommender/v1/recommender_config_pb'
14
+ require 'google/protobuf/field_mask_pb'
11
15
 
12
16
  Google::Protobuf::DescriptorPool.generated_pool.build do
13
17
  add_file("google/cloud/recommender/v1/recommender_service.proto", :syntax => :proto3) do
@@ -57,6 +61,22 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
57
61
  map :state_metadata, :string, :string, 2
58
62
  optional :etag, :string, 3
59
63
  end
64
+ add_message "google.cloud.recommender.v1.GetRecommenderConfigRequest" do
65
+ optional :name, :string, 1
66
+ end
67
+ add_message "google.cloud.recommender.v1.UpdateRecommenderConfigRequest" do
68
+ optional :recommender_config, :message, 1, "google.cloud.recommender.v1.RecommenderConfig"
69
+ optional :update_mask, :message, 2, "google.protobuf.FieldMask"
70
+ optional :validate_only, :bool, 3
71
+ end
72
+ add_message "google.cloud.recommender.v1.GetInsightTypeConfigRequest" do
73
+ optional :name, :string, 1
74
+ end
75
+ add_message "google.cloud.recommender.v1.UpdateInsightTypeConfigRequest" do
76
+ optional :insight_type_config, :message, 1, "google.cloud.recommender.v1.InsightTypeConfig"
77
+ optional :update_mask, :message, 2, "google.protobuf.FieldMask"
78
+ optional :validate_only, :bool, 3
79
+ end
60
80
  end
61
81
  end
62
82
 
@@ -74,6 +94,10 @@ module Google
74
94
  MarkRecommendationClaimedRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recommender.v1.MarkRecommendationClaimedRequest").msgclass
75
95
  MarkRecommendationSucceededRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recommender.v1.MarkRecommendationSucceededRequest").msgclass
76
96
  MarkRecommendationFailedRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recommender.v1.MarkRecommendationFailedRequest").msgclass
97
+ GetRecommenderConfigRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recommender.v1.GetRecommenderConfigRequest").msgclass
98
+ UpdateRecommenderConfigRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recommender.v1.UpdateRecommenderConfigRequest").msgclass
99
+ GetInsightTypeConfigRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recommender.v1.GetInsightTypeConfigRequest").msgclass
100
+ UpdateInsightTypeConfigRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recommender.v1.UpdateInsightTypeConfigRequest").msgclass
77
101
  end
78
102
  end
79
103
  end
@@ -36,8 +36,8 @@ module Google
36
36
  self.unmarshal_class_method = :decode
37
37
  self.service_name = 'google.cloud.recommender.v1.Recommender'
38
38
 
39
- # Lists insights for a Cloud project. Requires the recommender.*.list IAM
40
- # permission for the specified insight type.
39
+ # Lists insights for the specified Cloud Resource. Requires the
40
+ # recommender.*.list IAM permission for the specified insight type.
41
41
  rpc :ListInsights, ::Google::Cloud::Recommender::V1::ListInsightsRequest, ::Google::Cloud::Recommender::V1::ListInsightsResponse
42
42
  # Gets the requested insight. Requires the recommender.*.get IAM permission
43
43
  # for the specified insight type.
@@ -49,8 +49,8 @@ module Google
49
49
  # MarkInsightAccepted can be applied to insights in ACTIVE state. Requires
50
50
  # the recommender.*.update IAM permission for the specified insight.
51
51
  rpc :MarkInsightAccepted, ::Google::Cloud::Recommender::V1::MarkInsightAcceptedRequest, ::Google::Cloud::Recommender::V1::Insight
52
- # Lists recommendations for a Cloud project. Requires the recommender.*.list
53
- # IAM permission for the specified recommender.
52
+ # Lists recommendations for the specified Cloud Resource. Requires the
53
+ # recommender.*.list IAM permission for the specified recommender.
54
54
  rpc :ListRecommendations, ::Google::Cloud::Recommender::V1::ListRecommendationsRequest, ::Google::Cloud::Recommender::V1::ListRecommendationsResponse
55
55
  # Gets the requested recommendation. Requires the recommender.*.get
56
56
  # IAM permission for the specified recommender.
@@ -90,6 +90,18 @@ module Google
90
90
  # Requires the recommender.*.update IAM permission for the specified
91
91
  # recommender.
92
92
  rpc :MarkRecommendationFailed, ::Google::Cloud::Recommender::V1::MarkRecommendationFailedRequest, ::Google::Cloud::Recommender::V1::Recommendation
93
+ # Gets the requested Recommender Config. There is only one instance of the
94
+ # config for each Recommender.
95
+ rpc :GetRecommenderConfig, ::Google::Cloud::Recommender::V1::GetRecommenderConfigRequest, ::Google::Cloud::Recommender::V1::RecommenderConfig
96
+ # Updates a Recommender Config. This will create a new revision of the
97
+ # config.
98
+ rpc :UpdateRecommenderConfig, ::Google::Cloud::Recommender::V1::UpdateRecommenderConfigRequest, ::Google::Cloud::Recommender::V1::RecommenderConfig
99
+ # Gets the requested InsightTypeConfig. There is only one instance of the
100
+ # config for each InsightType.
101
+ rpc :GetInsightTypeConfig, ::Google::Cloud::Recommender::V1::GetInsightTypeConfigRequest, ::Google::Cloud::Recommender::V1::InsightTypeConfig
102
+ # Updates an InsightTypeConfig change. This will create a new revision of the
103
+ # config.
104
+ rpc :UpdateInsightTypeConfig, ::Google::Cloud::Recommender::V1::UpdateInsightTypeConfigRequest, ::Google::Cloud::Recommender::V1::InsightTypeConfig
93
105
  end
94
106
 
95
107
  Stub = Service.rpc_stub_class
@@ -21,7 +21,7 @@ module Google
21
21
  module Cloud
22
22
  module Recommender
23
23
  module V1
24
- VERSION = "0.8.5"
24
+ VERSION = "0.10.0"
25
25
  end
26
26
  end
27
27
  end
@@ -25,6 +25,8 @@ module Google
25
25
  ##
26
26
  # To load this package, including all its services, and instantiate a client:
27
27
  #
28
+ # @example
29
+ #
28
30
  # require "google/cloud/recommender/v1"
29
31
  # client = ::Google::Cloud::Recommender::V1::Recommender::Client.new
30
32
  #
@@ -33,11 +33,7 @@ module Google
33
33
  # // For Kubernetes resources, the format is {api group}/{kind}.
34
34
  # option (google.api.resource) = {
35
35
  # type: "pubsub.googleapis.com/Topic"
36
- # name_descriptor: {
37
- # pattern: "projects/{project}/topics/{topic}"
38
- # parent_type: "cloudresourcemanager.googleapis.com/Project"
39
- # parent_name_extractor: "projects/{project}"
40
- # }
36
+ # pattern: "projects/{project}/topics/{topic}"
41
37
  # };
42
38
  # }
43
39
  #
@@ -45,10 +41,7 @@ module Google
45
41
  #
46
42
  # resources:
47
43
  # - type: "pubsub.googleapis.com/Topic"
48
- # name_descriptor:
49
- # - pattern: "projects/{project}/topics/{topic}"
50
- # parent_type: "cloudresourcemanager.googleapis.com/Project"
51
- # parent_name_extractor: "projects/{project}"
44
+ # pattern: "projects/{project}/topics/{topic}"
52
45
  #
53
46
  # Sometimes, resources have multiple patterns, typically because they can
54
47
  # live under multiple parents.
@@ -58,26 +51,10 @@ module Google
58
51
  # message LogEntry {
59
52
  # option (google.api.resource) = {
60
53
  # type: "logging.googleapis.com/LogEntry"
61
- # name_descriptor: {
62
- # pattern: "projects/{project}/logs/{log}"
63
- # parent_type: "cloudresourcemanager.googleapis.com/Project"
64
- # parent_name_extractor: "projects/{project}"
65
- # }
66
- # name_descriptor: {
67
- # pattern: "folders/{folder}/logs/{log}"
68
- # parent_type: "cloudresourcemanager.googleapis.com/Folder"
69
- # parent_name_extractor: "folders/{folder}"
70
- # }
71
- # name_descriptor: {
72
- # pattern: "organizations/{organization}/logs/{log}"
73
- # parent_type: "cloudresourcemanager.googleapis.com/Organization"
74
- # parent_name_extractor: "organizations/{organization}"
75
- # }
76
- # name_descriptor: {
77
- # pattern: "billingAccounts/{billing_account}/logs/{log}"
78
- # parent_type: "billing.googleapis.com/BillingAccount"
79
- # parent_name_extractor: "billingAccounts/{billing_account}"
80
- # }
54
+ # pattern: "projects/{project}/logs/{log}"
55
+ # pattern: "folders/{folder}/logs/{log}"
56
+ # pattern: "organizations/{organization}/logs/{log}"
57
+ # pattern: "billingAccounts/{billing_account}/logs/{log}"
81
58
  # };
82
59
  # }
83
60
  #
@@ -85,48 +62,10 @@ module Google
85
62
  #
86
63
  # resources:
87
64
  # - type: 'logging.googleapis.com/LogEntry'
88
- # name_descriptor:
89
- # - pattern: "projects/{project}/logs/{log}"
90
- # parent_type: "cloudresourcemanager.googleapis.com/Project"
91
- # parent_name_extractor: "projects/{project}"
92
- # - pattern: "folders/{folder}/logs/{log}"
93
- # parent_type: "cloudresourcemanager.googleapis.com/Folder"
94
- # parent_name_extractor: "folders/{folder}"
95
- # - pattern: "organizations/{organization}/logs/{log}"
96
- # parent_type: "cloudresourcemanager.googleapis.com/Organization"
97
- # parent_name_extractor: "organizations/{organization}"
98
- # - pattern: "billingAccounts/{billing_account}/logs/{log}"
99
- # parent_type: "billing.googleapis.com/BillingAccount"
100
- # parent_name_extractor: "billingAccounts/{billing_account}"
101
- #
102
- # For flexible resources, the resource name doesn't contain parent names, but
103
- # the resource itself has parents for policy evaluation.
104
- #
105
- # Example:
106
- #
107
- # message Shelf {
108
- # option (google.api.resource) = {
109
- # type: "library.googleapis.com/Shelf"
110
- # name_descriptor: {
111
- # pattern: "shelves/{shelf}"
112
- # parent_type: "cloudresourcemanager.googleapis.com/Project"
113
- # }
114
- # name_descriptor: {
115
- # pattern: "shelves/{shelf}"
116
- # parent_type: "cloudresourcemanager.googleapis.com/Folder"
117
- # }
118
- # };
119
- # }
120
- #
121
- # The ResourceDescriptor Yaml config will look like:
122
- #
123
- # resources:
124
- # - type: 'library.googleapis.com/Shelf'
125
- # name_descriptor:
126
- # - pattern: "shelves/{shelf}"
127
- # parent_type: "cloudresourcemanager.googleapis.com/Project"
128
- # - pattern: "shelves/{shelf}"
129
- # parent_type: "cloudresourcemanager.googleapis.com/Folder"
65
+ # pattern: "projects/{project}/logs/{log}"
66
+ # pattern: "folders/{folder}/logs/{log}"
67
+ # pattern: "organizations/{organization}/logs/{log}"
68
+ # pattern: "billingAccounts/{billing_account}/logs/{log}"
130
69
  # @!attribute [rw] type
131
70
  # @return [::String]
132
71
  # The resource type. It must be in the format of
@@ -54,6 +54,9 @@ module Google
54
54
  # @!attribute [rw] category
55
55
  # @return [::Google::Cloud::Recommender::V1::Insight::Category]
56
56
  # Category being targeted by the insight.
57
+ # @!attribute [rw] severity
58
+ # @return [::Google::Cloud::Recommender::V1::Insight::Severity]
59
+ # Insight's severity.
57
60
  # @!attribute [rw] etag
58
61
  # @return [::String]
59
62
  # Fingerprint of the Insight. Provides optimistic locking when updating
@@ -92,6 +95,24 @@ module Google
92
95
  # This insight is related to manageability.
93
96
  MANAGEABILITY = 4
94
97
  end
98
+
99
+ # Insight severity levels.
100
+ module Severity
101
+ # Insight has unspecified severity.
102
+ SEVERITY_UNSPECIFIED = 0
103
+
104
+ # Insight has low severity.
105
+ LOW = 1
106
+
107
+ # Insight has medium severity.
108
+ MEDIUM = 2
109
+
110
+ # Insight has high severity.
111
+ HIGH = 3
112
+
113
+ # Insight has critical severity.
114
+ CRITICAL = 4
115
+ end
95
116
  end
96
117
 
97
118
  # Information related to insight state.
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2022 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Cloud
22
+ module Recommender
23
+ module V1
24
+ # Configuration for an InsightType.
25
+ # @!attribute [rw] name
26
+ # @return [::String]
27
+ # Name of insight type config.
28
+ # Eg,
29
+ # projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config
30
+ # @!attribute [rw] insight_type_generation_config
31
+ # @return [::Google::Cloud::Recommender::V1::InsightTypeGenerationConfig]
32
+ # InsightTypeGenerationConfig which configures the generation of
33
+ # insights for this insight type.
34
+ # @!attribute [rw] etag
35
+ # @return [::String]
36
+ # Fingerprint of the InsightTypeConfig. Provides optimistic locking when
37
+ # updating.
38
+ # @!attribute [rw] update_time
39
+ # @return [::Google::Protobuf::Timestamp]
40
+ # Last time when the config was updated.
41
+ # @!attribute [r] revision_id
42
+ # @return [::String]
43
+ # Output only. Immutable. The revision ID of the config.
44
+ # A new revision is committed whenever the config is changed in any way.
45
+ # The format is an 8-character hexadecimal string.
46
+ # @!attribute [rw] annotations
47
+ # @return [::Google::Protobuf::Map{::String => ::String}]
48
+ # Allows clients to store small amounts of arbitrary data. Annotations must
49
+ # follow the Kubernetes syntax.
50
+ # The total size of all keys and values combined is limited to 256k.
51
+ # Key can have 2 segments: prefix (optional) and name (required),
52
+ # separated by a slash (/).
53
+ # Prefix must be a DNS subdomain.
54
+ # Name must be 63 characters or less, begin and end with alphanumerics,
55
+ # with dashes (-), underscores (_), dots (.), and alphanumerics between.
56
+ # @!attribute [rw] display_name
57
+ # @return [::String]
58
+ # A user-settable field to provide a human-readable name to be used in user
59
+ # interfaces.
60
+ class InsightTypeConfig
61
+ include ::Google::Protobuf::MessageExts
62
+ extend ::Google::Protobuf::MessageExts::ClassMethods
63
+
64
+ # @!attribute [rw] key
65
+ # @return [::String]
66
+ # @!attribute [rw] value
67
+ # @return [::String]
68
+ class AnnotationsEntry
69
+ include ::Google::Protobuf::MessageExts
70
+ extend ::Google::Protobuf::MessageExts::ClassMethods
71
+ end
72
+ end
73
+
74
+ # A configuration to customize the generation of insights.
75
+ # Eg, customizing the lookback period considered when generating a
76
+ # insight.
77
+ # @!attribute [rw] params
78
+ # @return [::Google::Protobuf::Struct]
79
+ # Parameters for this InsightTypeGenerationConfig. These configs can be used
80
+ # by or are applied to all subtypes.
81
+ class InsightTypeGenerationConfig
82
+ include ::Google::Protobuf::MessageExts
83
+ extend ::Google::Protobuf::MessageExts::ClassMethods
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -54,6 +54,9 @@ module Google
54
54
  # Optional set of additional impact that this recommendation may have when
55
55
  # trying to optimize for the primary category. These may be positive
56
56
  # or negative.
57
+ # @!attribute [rw] priority
58
+ # @return [::Google::Cloud::Recommender::V1::Recommendation::Priority]
59
+ # Recommendation's priority.
57
60
  # @!attribute [rw] content
58
61
  # @return [::Google::Cloud::Recommender::V1::RecommendationContent]
59
62
  # Content of the recommendation describing recommended changes to resources.
@@ -67,6 +70,12 @@ module Google
67
70
  # @!attribute [rw] associated_insights
68
71
  # @return [::Array<::Google::Cloud::Recommender::V1::Recommendation::InsightReference>]
69
72
  # Insights that led to this recommendation.
73
+ # @!attribute [rw] xor_group_id
74
+ # @return [::String]
75
+ # Corresponds to a mutually exclusive group ID within a recommender.
76
+ # A non-empty ID indicates that the recommendation belongs to a mutually
77
+ # exclusive group. This means that only one recommendation within the group
78
+ # is suggested to be applied.
70
79
  class Recommendation
71
80
  include ::Google::Protobuf::MessageExts
72
81
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -80,6 +89,24 @@ module Google
80
89
  include ::Google::Protobuf::MessageExts
81
90
  extend ::Google::Protobuf::MessageExts::ClassMethods
82
91
  end
92
+
93
+ # Recommendation priority levels.
94
+ module Priority
95
+ # Recommendation has unspecified priority.
96
+ PRIORITY_UNSPECIFIED = 0
97
+
98
+ # Recommendation has P4 priority (lowest priority).
99
+ P4 = 1
100
+
101
+ # Recommendation has P3 priority (second lowest priority).
102
+ P3 = 2
103
+
104
+ # Recommendation has P2 priority (second highest priority).
105
+ P2 = 3
106
+
107
+ # Recommendation has P1 priority (highest priority).
108
+ P1 = 4
109
+ end
83
110
  end
84
111
 
85
112
  # Contains what resources are changing and how they are changing.
@@ -88,6 +115,9 @@ module Google
88
115
  # Operations to one or more Google Cloud resources grouped in such a way
89
116
  # that, all operations within one group are expected to be performed
90
117
  # atomically and in an order.
118
+ # @!attribute [rw] overview
119
+ # @return [::Google::Protobuf::Struct]
120
+ # Condensed overview information about the recommendation.
91
121
  class RecommendationContent
92
122
  include ::Google::Protobuf::MessageExts
93
123
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -114,7 +144,7 @@ module Google
114
144
  # See https://tools.ietf.org/html/rfc6902 for details on the original RFC.
115
145
  # @!attribute [rw] action
116
146
  # @return [::String]
117
- # Type of this operation. Contains one of 'and', 'remove', 'replace', 'move',
147
+ # Type of this operation. Contains one of 'add', 'remove', 'replace', 'move',
118
148
  # 'copy', 'test' and custom operations. This field is case-insensitive and
119
149
  # always populated.
120
150
  # @!attribute [rw] resource_type
@@ -184,7 +214,7 @@ module Google
184
214
  # @!attribute [rw] path_value_matchers
185
215
  # @return [::Google::Protobuf::Map{::String => ::Google::Cloud::Recommender::V1::ValueMatcher}]
186
216
  # Similar to path_filters, this contains set of filters to apply if `path`
187
- # field referes to array elements. This is meant to support value matching
217
+ # field refers to array elements. This is meant to support value matching
188
218
  # beyond exact match. To perform exact match, use path_filters.
189
219
  # When both path_filters and path_value_matchers are set, an implicit AND
190
220
  # must be performed.
@@ -228,6 +258,9 @@ module Google
228
258
  # An approximate projection on amount saved or amount incurred. Negative cost
229
259
  # units indicate cost savings and positive cost units indicate increase.
230
260
  # See google.type.Money documentation for positive/negative units.
261
+ #
262
+ # A user's permissions may affect whether the cost is computed using list
263
+ # prices or custom contract prices.
231
264
  # @!attribute [rw] duration
232
265
  # @return [::Google::Protobuf::Duration]
233
266
  # Duration for which this cost applies.
@@ -236,6 +269,15 @@ module Google
236
269
  extend ::Google::Protobuf::MessageExts::ClassMethods
237
270
  end
238
271
 
272
+ # Contains various ways of describing the impact on Security.
273
+ # @!attribute [rw] details
274
+ # @return [::Google::Protobuf::Struct]
275
+ # Additional security impact details that is provided by the recommender.
276
+ class SecurityProjection
277
+ include ::Google::Protobuf::MessageExts
278
+ extend ::Google::Protobuf::MessageExts::ClassMethods
279
+ end
280
+
239
281
  # Contains the impact a recommendation can have for a given category.
240
282
  # @!attribute [rw] category
241
283
  # @return [::Google::Cloud::Recommender::V1::Impact::Category]
@@ -243,6 +285,9 @@ module Google
243
285
  # @!attribute [rw] cost_projection
244
286
  # @return [::Google::Cloud::Recommender::V1::CostProjection]
245
287
  # Use with CategoryType.COST
288
+ # @!attribute [rw] security_projection
289
+ # @return [::Google::Cloud::Recommender::V1::SecurityProjection]
290
+ # Use with CategoryType.SECURITY
246
291
  class Impact
247
292
  include ::Google::Protobuf::MessageExts
248
293
  extend ::Google::Protobuf::MessageExts::ClassMethods