diff --git a/google/__init__.py b/google/__init__.py index 8fcc60e..9a1b64a 100644 --- a/google/__init__.py +++ b/google/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/__init__.py b/google/cloud/__init__.py index 8fcc60e..9a1b64a 100644 --- a/google/cloud/__init__.py +++ b/google/cloud/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/recommender.py b/google/cloud/recommender.py index a54d504..7bf5c92 100644 --- a/google/cloud/recommender.py +++ b/google/cloud/recommender.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/recommender_v1/__init__.py b/google/cloud/recommender_v1/__init__.py index af2ac67..1de5743 100644 --- a/google/cloud/recommender_v1/__init__.py +++ b/google/cloud/recommender_v1/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/recommender_v1/gapic/enums.py b/google/cloud/recommender_v1/gapic/enums.py index 20e2869..a4c452d 100644 --- a/google/cloud/recommender_v1/gapic/enums.py +++ b/google/cloud/recommender_v1/gapic/enums.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/recommender_v1/gapic/recommender_client.py b/google/cloud/recommender_v1/gapic/recommender_client.py index a8e30e8..308aaaa 100644 --- a/google/cloud/recommender_v1/gapic/recommender_client.py +++ b/google/cloud/recommender_v1/gapic/recommender_client.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -81,12 +81,7 @@ def from_service_account_file(cls, filename, *args, **kwargs): @classmethod def recommendation_path(cls, project, location, recommender, recommendation): - """DEPRECATED. Return a fully-qualified recommendation string.""" - warnings.warn( - "Resource name helper functions are deprecated.", - PendingDeprecationWarning, - stacklevel=1, - ) + """Return a fully-qualified recommendation string.""" return google.api_core.path_template.expand( "projects/{project}/locations/{location}/recommenders/{recommender}/recommendations/{recommendation}", project=project, @@ -97,12 +92,7 @@ def recommendation_path(cls, project, location, recommender, recommendation): @classmethod def recommender_path(cls, project, location, recommender): - """DEPRECATED. Return a fully-qualified recommender string.""" - warnings.warn( - "Resource name helper functions are deprecated.", - PendingDeprecationWarning, - stacklevel=1, - ) + """Return a fully-qualified recommender string.""" return google.api_core.path_template.expand( "projects/{project}/locations/{location}/recommenders/{recommender}", project=project, diff --git a/google/cloud/recommender_v1/gapic/recommender_client_config.py b/google/cloud/recommender_v1/gapic/recommender_client_config.py index 3b74190..7526288 100644 --- a/google/cloud/recommender_v1/gapic/recommender_client_config.py +++ b/google/cloud/recommender_v1/gapic/recommender_client_config.py @@ -1,17 +1,3 @@ -# Copyright 2020 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. - config = { "interfaces": { "google.cloud.recommender.v1.Recommender": { diff --git a/google/cloud/recommender_v1/gapic/transports/recommender_grpc_transport.py b/google/cloud/recommender_v1/gapic/transports/recommender_grpc_transport.py index 40e1897..b08c238 100644 --- a/google/cloud/recommender_v1/gapic/transports/recommender_grpc_transport.py +++ b/google/cloud/recommender_v1/gapic/transports/recommender_grpc_transport.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/recommender_v1/proto/recommendation_pb2.py b/google/cloud/recommender_v1/proto/recommendation_pb2.py index 38f19f8..b5f9bee 100644 --- a/google/cloud/recommender_v1/proto/recommendation_pb2.py +++ b/google/cloud/recommender_v1/proto/recommendation_pb2.py @@ -1,24 +1,7 @@ # -*- coding: utf-8 -*- -# Copyright 2020 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. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: google/cloud/recommender_v1/proto/recommendation.proto -import sys - -_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -40,12 +23,8 @@ name="google/cloud/recommender_v1/proto/recommendation.proto", package="google.cloud.recommender.v1", syntax="proto3", - serialized_options=_b( - "\n\037com.google.cloud.recommender.v1P\001ZFgoogle.golang.org/genproto/googleapis/cloud/recommender/v1;recommender\242\002\004CREC\252\002\033Google.Cloud.Recommender.V1\352Al\n&recommender.googleapis.com/Recommender\022Bprojects/{project}/locations/{location}/recommenders/{recommender}" - ), - serialized_pb=_b( - '\n6google/cloud/recommender_v1/proto/recommendation.proto\x12\x1bgoogle.cloud.recommender.v1\x1a\x19google/api/resource.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/type/money.proto"\xb8\x04\n\x0eRecommendation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x1b\n\x13recommender_subtype\x18\x0c \x01(\t\x12\x35\n\x11last_refresh_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12;\n\x0eprimary_impact\x18\x05 \x01(\x0b\x32#.google.cloud.recommender.v1.Impact\x12>\n\x11\x61\x64\x64itional_impact\x18\x06 \x03(\x0b\x32#.google.cloud.recommender.v1.Impact\x12\x43\n\x07\x63ontent\x18\x07 \x01(\x0b\x32\x32.google.cloud.recommender.v1.RecommendationContent\x12H\n\nstate_info\x18\n \x01(\x0b\x32\x34.google.cloud.recommender.v1.RecommendationStateInfo\x12\x0c\n\x04\x65tag\x18\x0b \x01(\t:\x94\x01\xea\x41\x90\x01\n)recommender.googleapis.com/Recommendation\x12\x63projects/{project}/locations/{location}/recommenders/{recommender}/recommendations/{recommendation}"^\n\x15RecommendationContent\x12\x45\n\x10operation_groups\x18\x02 \x03(\x0b\x32+.google.cloud.recommender.v1.OperationGroup"L\n\x0eOperationGroup\x12:\n\noperations\x18\x01 \x03(\x0b\x32&.google.cloud.recommender.v1.Operation"\xd7\x04\n\tOperation\x12\x0e\n\x06\x61\x63tion\x18\x01 \x01(\t\x12\x15\n\rresource_type\x18\x02 \x01(\t\x12\x10\n\x08resource\x18\x03 \x01(\t\x12\x0c\n\x04path\x18\x04 \x01(\t\x12\x17\n\x0fsource_resource\x18\x05 \x01(\t\x12\x13\n\x0bsource_path\x18\x06 \x01(\t\x12\'\n\x05value\x18\x07 \x01(\x0b\x32\x16.google.protobuf.ValueH\x00\x12\x42\n\rvalue_matcher\x18\n \x01(\x0b\x32).google.cloud.recommender.v1.ValueMatcherH\x00\x12M\n\x0cpath_filters\x18\x08 \x03(\x0b\x32\x37.google.cloud.recommender.v1.Operation.PathFiltersEntry\x12Z\n\x13path_value_matchers\x18\x0b \x03(\x0b\x32=.google.cloud.recommender.v1.Operation.PathValueMatchersEntry\x1aJ\n\x10PathFiltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.Value:\x02\x38\x01\x1a\x63\n\x16PathValueMatchersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x38\n\x05value\x18\x02 \x01(\x0b\x32).google.cloud.recommender.v1.ValueMatcher:\x02\x38\x01\x42\x0c\n\npath_value":\n\x0cValueMatcher\x12\x19\n\x0fmatches_pattern\x18\x01 \x01(\tH\x00\x42\x0f\n\rmatch_variant"_\n\x0e\x43ostProjection\x12 \n\x04\x63ost\x18\x01 \x01(\x0b\x32\x12.google.type.Money\x12+\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration"\x80\x02\n\x06Impact\x12>\n\x08\x63\x61tegory\x18\x01 \x01(\x0e\x32,.google.cloud.recommender.v1.Impact.Category\x12\x46\n\x0f\x63ost_projection\x18\x64 \x01(\x0b\x32+.google.cloud.recommender.v1.CostProjectionH\x00"`\n\x08\x43\x61tegory\x12\x18\n\x14\x43\x41TEGORY_UNSPECIFIED\x10\x00\x12\x08\n\x04\x43OST\x10\x01\x12\x0c\n\x08SECURITY\x10\x02\x12\x0f\n\x0bPERFORMANCE\x10\x03\x12\x11\n\rMANAGEABILITY\x10\x04\x42\x0c\n\nprojection"\xde\x02\n\x17RecommendationStateInfo\x12I\n\x05state\x18\x01 \x01(\x0e\x32:.google.cloud.recommender.v1.RecommendationStateInfo.State\x12_\n\x0estate_metadata\x18\x02 \x03(\x0b\x32G.google.cloud.recommender.v1.RecommendationStateInfo.StateMetadataEntry\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"a\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x0b\n\x07\x43LAIMED\x10\x06\x12\r\n\tSUCCEEDED\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04\x12\r\n\tDISMISSED\x10\x05\x42\xff\x01\n\x1f\x63om.google.cloud.recommender.v1P\x01ZFgoogle.golang.org/genproto/googleapis/cloud/recommender/v1;recommender\xa2\x02\x04\x43REC\xaa\x02\x1bGoogle.Cloud.Recommender.V1\xea\x41l\n&recommender.googleapis.com/Recommender\x12\x42projects/{project}/locations/{location}/recommenders/{recommender}b\x06proto3' - ), + serialized_options=b"\n\037com.google.cloud.recommender.v1P\001ZFgoogle.golang.org/genproto/googleapis/cloud/recommender/v1;recommender\242\002\004CREC\252\002\033Google.Cloud.Recommender.V1\352Al\n&recommender.googleapis.com/Recommender\022Bprojects/{project}/locations/{location}/recommenders/{recommender}", + serialized_pb=b'\n6google/cloud/recommender_v1/proto/recommendation.proto\x12\x1bgoogle.cloud.recommender.v1\x1a\x19google/api/resource.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/type/money.proto"\xb8\x04\n\x0eRecommendation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x1b\n\x13recommender_subtype\x18\x0c \x01(\t\x12\x35\n\x11last_refresh_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12;\n\x0eprimary_impact\x18\x05 \x01(\x0b\x32#.google.cloud.recommender.v1.Impact\x12>\n\x11\x61\x64\x64itional_impact\x18\x06 \x03(\x0b\x32#.google.cloud.recommender.v1.Impact\x12\x43\n\x07\x63ontent\x18\x07 \x01(\x0b\x32\x32.google.cloud.recommender.v1.RecommendationContent\x12H\n\nstate_info\x18\n \x01(\x0b\x32\x34.google.cloud.recommender.v1.RecommendationStateInfo\x12\x0c\n\x04\x65tag\x18\x0b \x01(\t:\x94\x01\xea\x41\x90\x01\n)recommender.googleapis.com/Recommendation\x12\x63projects/{project}/locations/{location}/recommenders/{recommender}/recommendations/{recommendation}"^\n\x15RecommendationContent\x12\x45\n\x10operation_groups\x18\x02 \x03(\x0b\x32+.google.cloud.recommender.v1.OperationGroup"L\n\x0eOperationGroup\x12:\n\noperations\x18\x01 \x03(\x0b\x32&.google.cloud.recommender.v1.Operation"\xd7\x04\n\tOperation\x12\x0e\n\x06\x61\x63tion\x18\x01 \x01(\t\x12\x15\n\rresource_type\x18\x02 \x01(\t\x12\x10\n\x08resource\x18\x03 \x01(\t\x12\x0c\n\x04path\x18\x04 \x01(\t\x12\x17\n\x0fsource_resource\x18\x05 \x01(\t\x12\x13\n\x0bsource_path\x18\x06 \x01(\t\x12\'\n\x05value\x18\x07 \x01(\x0b\x32\x16.google.protobuf.ValueH\x00\x12\x42\n\rvalue_matcher\x18\n \x01(\x0b\x32).google.cloud.recommender.v1.ValueMatcherH\x00\x12M\n\x0cpath_filters\x18\x08 \x03(\x0b\x32\x37.google.cloud.recommender.v1.Operation.PathFiltersEntry\x12Z\n\x13path_value_matchers\x18\x0b \x03(\x0b\x32=.google.cloud.recommender.v1.Operation.PathValueMatchersEntry\x1aJ\n\x10PathFiltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.Value:\x02\x38\x01\x1a\x63\n\x16PathValueMatchersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x38\n\x05value\x18\x02 \x01(\x0b\x32).google.cloud.recommender.v1.ValueMatcher:\x02\x38\x01\x42\x0c\n\npath_value":\n\x0cValueMatcher\x12\x19\n\x0fmatches_pattern\x18\x01 \x01(\tH\x00\x42\x0f\n\rmatch_variant"_\n\x0e\x43ostProjection\x12 \n\x04\x63ost\x18\x01 \x01(\x0b\x32\x12.google.type.Money\x12+\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration"\x80\x02\n\x06Impact\x12>\n\x08\x63\x61tegory\x18\x01 \x01(\x0e\x32,.google.cloud.recommender.v1.Impact.Category\x12\x46\n\x0f\x63ost_projection\x18\x64 \x01(\x0b\x32+.google.cloud.recommender.v1.CostProjectionH\x00"`\n\x08\x43\x61tegory\x12\x18\n\x14\x43\x41TEGORY_UNSPECIFIED\x10\x00\x12\x08\n\x04\x43OST\x10\x01\x12\x0c\n\x08SECURITY\x10\x02\x12\x0f\n\x0bPERFORMANCE\x10\x03\x12\x11\n\rMANAGEABILITY\x10\x04\x42\x0c\n\nprojection"\xde\x02\n\x17RecommendationStateInfo\x12I\n\x05state\x18\x01 \x01(\x0e\x32:.google.cloud.recommender.v1.RecommendationStateInfo.State\x12_\n\x0estate_metadata\x18\x02 \x03(\x0b\x32G.google.cloud.recommender.v1.RecommendationStateInfo.StateMetadataEntry\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"a\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x0b\n\x07\x43LAIMED\x10\x06\x12\r\n\tSUCCEEDED\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04\x12\r\n\tDISMISSED\x10\x05\x42\xff\x01\n\x1f\x63om.google.cloud.recommender.v1P\x01ZFgoogle.golang.org/genproto/googleapis/cloud/recommender/v1;recommender\xa2\x02\x04\x43REC\xaa\x02\x1bGoogle.Cloud.Recommender.V1\xea\x41l\n&recommender.googleapis.com/Recommender\x12\x42projects/{project}/locations/{location}/recommenders/{recommender}b\x06proto3', dependencies=[ google_dot_api_dot_resource__pb2.DESCRIPTOR, google_dot_protobuf_dot_duration__pb2.DESCRIPTOR, @@ -142,7 +121,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -160,7 +139,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -178,7 +157,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -286,7 +265,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -299,9 +278,7 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=_b( - "\352A\220\001\n)recommender.googleapis.com/Recommendation\022cprojects/{project}/locations/{location}/recommenders/{recommender}/recommendations/{recommendation}" - ), + serialized_options=b"\352A\220\001\n)recommender.googleapis.com/Recommendation\022cprojects/{project}/locations/{location}/recommenders/{recommender}/recommendations/{recommendation}", is_extendable=False, syntax="proto3", extension_ranges=[], @@ -405,7 +382,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -436,7 +413,7 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=_b("8\001"), + serialized_options=b"8\001", is_extendable=False, syntax="proto3", extension_ranges=[], @@ -461,7 +438,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -492,7 +469,7 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=_b("8\001"), + serialized_options=b"8\001", is_extendable=False, syntax="proto3", extension_ranges=[], @@ -517,7 +494,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -535,7 +512,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -553,7 +530,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -571,7 +548,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -589,7 +566,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -607,7 +584,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -726,7 +703,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -895,7 +872,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -913,7 +890,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -926,7 +903,7 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=_b("8\001"), + serialized_options=b"8\001", is_extendable=False, syntax="proto3", extension_ranges=[], diff --git a/google/cloud/recommender_v1/proto/recommendation_pb2_grpc.py b/google/cloud/recommender_v1/proto/recommendation_pb2_grpc.py index b662812..7343170 100644 --- a/google/cloud/recommender_v1/proto/recommendation_pb2_grpc.py +++ b/google/cloud/recommender_v1/proto/recommendation_pb2_grpc.py @@ -1,4 +1,4 @@ -# Copyright 2020 Google LLC +# Copyright 2019 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/recommender_v1/proto/recommender_service_pb2.py b/google/cloud/recommender_v1/proto/recommender_service_pb2.py index cfe9715..d518bd7 100644 --- a/google/cloud/recommender_v1/proto/recommender_service_pb2.py +++ b/google/cloud/recommender_v1/proto/recommender_service_pb2.py @@ -1,24 +1,7 @@ # -*- coding: utf-8 -*- -# Copyright 2020 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. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: google/cloud/recommender_v1/proto/recommender_service.proto -import sys - -_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -42,12 +25,8 @@ name="google/cloud/recommender_v1/proto/recommender_service.proto", package="google.cloud.recommender.v1", syntax="proto3", - serialized_options=_b( - "\n\037com.google.cloud.recommender.v1B\020RecommenderProtoP\001ZFgoogle.golang.org/genproto/googleapis/cloud/recommender/v1;recommender\242\002\004CREC\252\002\033Google.Cloud.Recommender.V1" - ), - serialized_pb=_b( - '\n;google/cloud/recommender_v1/proto/recommender_service.proto\x12\x1bgoogle.cloud.recommender.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x36google/cloud/recommender_v1/proto/recommendation.proto"\x9d\x01\n\x1aListRecommendationsRequest\x12>\n\x06parent\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recommender.googleapis.com/Recommender\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x0e\n\x06\x66ilter\x18\x05 \x01(\t"|\n\x1bListRecommendationsResponse\x12\x44\n\x0frecommendations\x18\x01 \x03(\x0b\x32+.google.cloud.recommender.v1.Recommendation\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"[\n\x18GetRecommendationRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation"\x96\x02\n MarkRecommendationClaimedRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation\x12h\n\x0estate_metadata\x18\x02 \x03(\x0b\x32P.google.cloud.recommender.v1.MarkRecommendationClaimedRequest.StateMetadataEntry\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x02\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x9a\x02\n"MarkRecommendationSucceededRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation\x12j\n\x0estate_metadata\x18\x02 \x03(\x0b\x32R.google.cloud.recommender.v1.MarkRecommendationSucceededRequest.StateMetadataEntry\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x02\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x94\x02\n\x1fMarkRecommendationFailedRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation\x12g\n\x0estate_metadata\x18\x02 \x03(\x0b\x32O.google.cloud.recommender.v1.MarkRecommendationFailedRequest.StateMetadataEntry\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x02\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x32\x9d\n\n\x0bRecommender\x12\xed\x01\n\x13ListRecommendations\x12\x37.google.cloud.recommender.v1.ListRecommendationsRequest\x1a\x38.google.cloud.recommender.v1.ListRecommendationsResponse"c\x82\xd3\xe4\x93\x02\x44\x12\x42/v1/{parent=projects/*/locations/*/recommenders/*}/recommendations\xda\x41\x06parent\xda\x41\rparent,filter\x12\xca\x01\n\x11GetRecommendation\x12\x35.google.cloud.recommender.v1.GetRecommendationRequest\x1a+.google.cloud.recommender.v1.Recommendation"Q\x82\xd3\xe4\x93\x02\x44\x12\x42/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}\xda\x41\x04name\x12\xfd\x01\n\x19MarkRecommendationClaimed\x12=.google.cloud.recommender.v1.MarkRecommendationClaimedRequest\x1a+.google.cloud.recommender.v1.Recommendation"t\x82\xd3\xe4\x93\x02S"N/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markClaimed:\x01*\xda\x41\x18name,state_metadata,etag\x12\x83\x02\n\x1bMarkRecommendationSucceeded\x12?.google.cloud.recommender.v1.MarkRecommendationSucceededRequest\x1a+.google.cloud.recommender.v1.Recommendation"v\x82\xd3\xe4\x93\x02U"P/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markSucceeded:\x01*\xda\x41\x18name,state_metadata,etag\x12\xfa\x01\n\x18MarkRecommendationFailed\x12<.google.cloud.recommender.v1.MarkRecommendationFailedRequest\x1a+.google.cloud.recommender.v1.Recommendation"s\x82\xd3\xe4\x93\x02R"M/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markFailed:\x01*\xda\x41\x18name,state_metadata,etag\x1aN\xca\x41\x1arecommender.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\xa2\x01\n\x1f\x63om.google.cloud.recommender.v1B\x10RecommenderProtoP\x01ZFgoogle.golang.org/genproto/googleapis/cloud/recommender/v1;recommender\xa2\x02\x04\x43REC\xaa\x02\x1bGoogle.Cloud.Recommender.V1b\x06proto3' - ), + serialized_options=b"\n\037com.google.cloud.recommender.v1B\020RecommenderProtoP\001ZFgoogle.golang.org/genproto/googleapis/cloud/recommender/v1;recommender\242\002\004CREC\252\002\033Google.Cloud.Recommender.V1", + serialized_pb=b'\n;google/cloud/recommender_v1/proto/recommender_service.proto\x12\x1bgoogle.cloud.recommender.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x36google/cloud/recommender_v1/proto/recommendation.proto"\x9d\x01\n\x1aListRecommendationsRequest\x12>\n\x06parent\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recommender.googleapis.com/Recommender\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x0e\n\x06\x66ilter\x18\x05 \x01(\t"|\n\x1bListRecommendationsResponse\x12\x44\n\x0frecommendations\x18\x01 \x03(\x0b\x32+.google.cloud.recommender.v1.Recommendation\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"[\n\x18GetRecommendationRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation"\x96\x02\n MarkRecommendationClaimedRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation\x12h\n\x0estate_metadata\x18\x02 \x03(\x0b\x32P.google.cloud.recommender.v1.MarkRecommendationClaimedRequest.StateMetadataEntry\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x02\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x9a\x02\n"MarkRecommendationSucceededRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation\x12j\n\x0estate_metadata\x18\x02 \x03(\x0b\x32R.google.cloud.recommender.v1.MarkRecommendationSucceededRequest.StateMetadataEntry\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x02\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x94\x02\n\x1fMarkRecommendationFailedRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation\x12g\n\x0estate_metadata\x18\x02 \x03(\x0b\x32O.google.cloud.recommender.v1.MarkRecommendationFailedRequest.StateMetadataEntry\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x02\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x32\x9d\n\n\x0bRecommender\x12\xed\x01\n\x13ListRecommendations\x12\x37.google.cloud.recommender.v1.ListRecommendationsRequest\x1a\x38.google.cloud.recommender.v1.ListRecommendationsResponse"c\x82\xd3\xe4\x93\x02\x44\x12\x42/v1/{parent=projects/*/locations/*/recommenders/*}/recommendations\xda\x41\x06parent\xda\x41\rparent,filter\x12\xca\x01\n\x11GetRecommendation\x12\x35.google.cloud.recommender.v1.GetRecommendationRequest\x1a+.google.cloud.recommender.v1.Recommendation"Q\x82\xd3\xe4\x93\x02\x44\x12\x42/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}\xda\x41\x04name\x12\xfd\x01\n\x19MarkRecommendationClaimed\x12=.google.cloud.recommender.v1.MarkRecommendationClaimedRequest\x1a+.google.cloud.recommender.v1.Recommendation"t\x82\xd3\xe4\x93\x02S"N/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markClaimed:\x01*\xda\x41\x18name,state_metadata,etag\x12\x83\x02\n\x1bMarkRecommendationSucceeded\x12?.google.cloud.recommender.v1.MarkRecommendationSucceededRequest\x1a+.google.cloud.recommender.v1.Recommendation"v\x82\xd3\xe4\x93\x02U"P/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markSucceeded:\x01*\xda\x41\x18name,state_metadata,etag\x12\xfa\x01\n\x18MarkRecommendationFailed\x12<.google.cloud.recommender.v1.MarkRecommendationFailedRequest\x1a+.google.cloud.recommender.v1.Recommendation"s\x82\xd3\xe4\x93\x02R"M/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markFailed:\x01*\xda\x41\x18name,state_metadata,etag\x1aN\xca\x41\x1arecommender.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\xa2\x01\n\x1f\x63om.google.cloud.recommender.v1B\x10RecommenderProtoP\x01ZFgoogle.golang.org/genproto/googleapis/cloud/recommender/v1;recommender\xa2\x02\x04\x43REC\xaa\x02\x1bGoogle.Cloud.Recommender.V1b\x06proto3', dependencies=[ google_dot_api_dot_annotations__pb2.DESCRIPTOR, google_dot_api_dot_client__pb2.DESCRIPTOR, @@ -74,15 +53,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b( - "\340A\002\372A(\n&recommender.googleapis.com/Recommender" - ), + serialized_options=b"\340A\002\372A(\n&recommender.googleapis.com/Recommender", file=DESCRIPTOR, ), _descriptor.FieldDescriptor( @@ -100,7 +77,7 @@ containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b("\340A\001"), + serialized_options=b"\340A\001", file=DESCRIPTOR, ), _descriptor.FieldDescriptor( @@ -112,13 +89,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b("\340A\001"), + serialized_options=b"\340A\001", file=DESCRIPTOR, ), _descriptor.FieldDescriptor( @@ -130,7 +107,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -187,7 +164,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -226,15 +203,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b( - "\340A\002\372A+\n)recommender.googleapis.com/Recommendation" - ), + serialized_options=b"\340A\002\372A+\n)recommender.googleapis.com/Recommendation", file=DESCRIPTOR, ) ], @@ -267,7 +242,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -285,7 +260,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -298,7 +273,7 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=_b("8\001"), + serialized_options=b"8\001", is_extendable=False, syntax="proto3", extension_ranges=[], @@ -323,15 +298,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b( - "\340A\002\372A+\n)recommender.googleapis.com/Recommendation" - ), + serialized_options=b"\340A\002\372A+\n)recommender.googleapis.com/Recommendation", file=DESCRIPTOR, ), _descriptor.FieldDescriptor( @@ -361,13 +334,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b("\340A\002"), + serialized_options=b"\340A\002", file=DESCRIPTOR, ), ], @@ -400,7 +373,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -418,7 +391,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -431,7 +404,7 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=_b("8\001"), + serialized_options=b"8\001", is_extendable=False, syntax="proto3", extension_ranges=[], @@ -456,15 +429,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b( - "\340A\002\372A+\n)recommender.googleapis.com/Recommendation" - ), + serialized_options=b"\340A\002\372A+\n)recommender.googleapis.com/Recommendation", file=DESCRIPTOR, ), _descriptor.FieldDescriptor( @@ -494,13 +465,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b("\340A\002"), + serialized_options=b"\340A\002", file=DESCRIPTOR, ), ], @@ -533,7 +504,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -551,7 +522,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -564,7 +535,7 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=_b("8\001"), + serialized_options=b"8\001", is_extendable=False, syntax="proto3", extension_ranges=[], @@ -589,15 +560,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b( - "\340A\002\372A+\n)recommender.googleapis.com/Recommendation" - ), + serialized_options=b"\340A\002\372A+\n)recommender.googleapis.com/Recommendation", file=DESCRIPTOR, ), _descriptor.FieldDescriptor( @@ -627,13 +596,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b("\340A\002"), + serialized_options=b"\340A\002", file=DESCRIPTOR, ), ], @@ -895,9 +864,7 @@ full_name="google.cloud.recommender.v1.Recommender", file=DESCRIPTOR, index=0, - serialized_options=_b( - "\312A\032recommender.googleapis.com\322A.https://www.googleapis.com/auth/cloud-platform" - ), + serialized_options=b"\312A\032recommender.googleapis.com\322A.https://www.googleapis.com/auth/cloud-platform", serialized_start=1488, serialized_end=2797, methods=[ @@ -908,9 +875,7 @@ containing_service=None, input_type=_LISTRECOMMENDATIONSREQUEST, output_type=_LISTRECOMMENDATIONSRESPONSE, - serialized_options=_b( - "\202\323\344\223\002D\022B/v1/{parent=projects/*/locations/*/recommenders/*}/recommendations\332A\006parent\332A\rparent,filter" - ), + serialized_options=b"\202\323\344\223\002D\022B/v1/{parent=projects/*/locations/*/recommenders/*}/recommendations\332A\006parent\332A\rparent,filter", ), _descriptor.MethodDescriptor( name="GetRecommendation", @@ -919,9 +884,7 @@ containing_service=None, input_type=_GETRECOMMENDATIONREQUEST, output_type=google_dot_cloud_dot_recommender__v1_dot_proto_dot_recommendation__pb2._RECOMMENDATION, - serialized_options=_b( - "\202\323\344\223\002D\022B/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}\332A\004name" - ), + serialized_options=b"\202\323\344\223\002D\022B/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}\332A\004name", ), _descriptor.MethodDescriptor( name="MarkRecommendationClaimed", @@ -930,9 +893,7 @@ containing_service=None, input_type=_MARKRECOMMENDATIONCLAIMEDREQUEST, output_type=google_dot_cloud_dot_recommender__v1_dot_proto_dot_recommendation__pb2._RECOMMENDATION, - serialized_options=_b( - '\202\323\344\223\002S"N/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markClaimed:\001*\332A\030name,state_metadata,etag' - ), + serialized_options=b'\202\323\344\223\002S"N/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markClaimed:\001*\332A\030name,state_metadata,etag', ), _descriptor.MethodDescriptor( name="MarkRecommendationSucceeded", @@ -941,9 +902,7 @@ containing_service=None, input_type=_MARKRECOMMENDATIONSUCCEEDEDREQUEST, output_type=google_dot_cloud_dot_recommender__v1_dot_proto_dot_recommendation__pb2._RECOMMENDATION, - serialized_options=_b( - '\202\323\344\223\002U"P/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markSucceeded:\001*\332A\030name,state_metadata,etag' - ), + serialized_options=b'\202\323\344\223\002U"P/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markSucceeded:\001*\332A\030name,state_metadata,etag', ), _descriptor.MethodDescriptor( name="MarkRecommendationFailed", @@ -952,9 +911,7 @@ containing_service=None, input_type=_MARKRECOMMENDATIONFAILEDREQUEST, output_type=google_dot_cloud_dot_recommender__v1_dot_proto_dot_recommendation__pb2._RECOMMENDATION, - serialized_options=_b( - '\202\323\344\223\002R"M/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markFailed:\001*\332A\030name,state_metadata,etag' - ), + serialized_options=b'\202\323\344\223\002R"M/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markFailed:\001*\332A\030name,state_metadata,etag', ), ], ) diff --git a/google/cloud/recommender_v1/proto/recommender_service_pb2_grpc.py b/google/cloud/recommender_v1/proto/recommender_service_pb2_grpc.py index 486a25a..617b0cb 100644 --- a/google/cloud/recommender_v1/proto/recommender_service_pb2_grpc.py +++ b/google/cloud/recommender_v1/proto/recommender_service_pb2_grpc.py @@ -1,4 +1,4 @@ -# Copyright 2020 Google LLC +# Copyright 2019 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/recommender_v1/types.py b/google/cloud/recommender_v1/types.py index 96dccdf..f5d243e 100644 --- a/google/cloud/recommender_v1/types.py +++ b/google/cloud/recommender_v1/types.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/recommender_v1beta1/__init__.py b/google/cloud/recommender_v1beta1/__init__.py index 330d111..51dbe34 100644 --- a/google/cloud/recommender_v1beta1/__init__.py +++ b/google/cloud/recommender_v1beta1/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/recommender_v1beta1/gapic/enums.py b/google/cloud/recommender_v1beta1/gapic/enums.py index f2eaf84..a794132 100644 --- a/google/cloud/recommender_v1beta1/gapic/enums.py +++ b/google/cloud/recommender_v1beta1/gapic/enums.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -53,6 +53,50 @@ class Category(enum.IntEnum): MANAGEABILITY = 4 +class Insight(object): + class Category(enum.IntEnum): + """ + Insight category. + + Attributes: + CATEGORY_UNSPECIFIED (int): Unspecified category. + COST (int): The insight is related to cost. + SECURITY (int): The insight is related to security. + PERFORMANCE (int): The insight is related to performance. + MANAGEABILITY (int): This insight is related to manageability. + """ + + CATEGORY_UNSPECIFIED = 0 + COST = 1 + SECURITY = 2 + PERFORMANCE = 3 + MANAGEABILITY = 4 + + +class InsightStateInfo(object): + class State(enum.IntEnum): + """ + Represents insight state. + + Attributes: + STATE_UNSPECIFIED (int): Unspecified state. + ACTIVE (int): Insight is active. Content for ACTIVE insights can be updated by Google. + ACTIVE insights can be marked DISMISSED OR ACCEPTED. + ACCEPTED (int): Some action has been taken based on this insight. Insights become + accepted when a recommendation derived from the insight has been marked + CLAIMED, SUCCEEDED, or FAILED. ACTIVE insights can also be marked + ACCEPTED explicitly. Content for ACCEPTED insights is immutable. ACCEPTED + insights can only be marked ACCEPTED (which may update state metadata). + DISMISSED (int): Insight is dismissed. Content for DISMISSED insights can be updated by + Google. DISMISSED insights can be marked as ACTIVE. + """ + + STATE_UNSPECIFIED = 0 + ACTIVE = 1 + ACCEPTED = 2 + DISMISSED = 3 + + class RecommendationStateInfo(object): class State(enum.IntEnum): """ diff --git a/google/cloud/recommender_v1beta1/gapic/recommender_client.py b/google/cloud/recommender_v1beta1/gapic/recommender_client.py index fb3e014..e437b03 100644 --- a/google/cloud/recommender_v1beta1/gapic/recommender_client.py +++ b/google/cloud/recommender_v1beta1/gapic/recommender_client.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -34,6 +34,7 @@ from google.cloud.recommender_v1beta1.gapic import enums from google.cloud.recommender_v1beta1.gapic import recommender_client_config from google.cloud.recommender_v1beta1.gapic.transports import recommender_grpc_transport +from google.cloud.recommender_v1beta1.proto import insight_pb2 from google.cloud.recommender_v1beta1.proto import recommendation_pb2 from google.cloud.recommender_v1beta1.proto import recommender_service_pb2 from google.cloud.recommender_v1beta1.proto import recommender_service_pb2_grpc @@ -80,13 +81,29 @@ def from_service_account_file(cls, filename, *args, **kwargs): from_service_account_json = from_service_account_file @classmethod - def recommendation_path(cls, project, location, recommender, recommendation): - """DEPRECATED. Return a fully-qualified recommendation string.""" - warnings.warn( - "Resource name helper functions are deprecated.", - PendingDeprecationWarning, - stacklevel=1, + def insight_path(cls, project, location, insight_type, insight): + """Return a fully-qualified insight string.""" + return google.api_core.path_template.expand( + "projects/{project}/locations/{location}/insightTypes/{insight_type}/insights/{insight}", + project=project, + location=location, + insight_type=insight_type, + insight=insight, ) + + @classmethod + def insight_type_path(cls, project, location, insight_type): + """Return a fully-qualified insight_type string.""" + return google.api_core.path_template.expand( + "projects/{project}/locations/{location}/insightTypes/{insight_type}", + project=project, + location=location, + insight_type=insight_type, + ) + + @classmethod + def recommendation_path(cls, project, location, recommender, recommendation): + """Return a fully-qualified recommendation string.""" return google.api_core.path_template.expand( "projects/{project}/locations/{location}/recommenders/{recommender}/recommendations/{recommendation}", project=project, @@ -97,12 +114,7 @@ def recommendation_path(cls, project, location, recommender, recommendation): @classmethod def recommender_path(cls, project, location, recommender): - """DEPRECATED. Return a fully-qualified recommender string.""" - warnings.warn( - "Resource name helper functions are deprecated.", - PendingDeprecationWarning, - stacklevel=1, - ) + """Return a fully-qualified recommender string.""" return google.api_core.path_template.expand( "projects/{project}/locations/{location}/recommenders/{recommender}", project=project, @@ -223,6 +235,275 @@ def __init__( self._inner_api_calls = {} # Service calls + def list_insights( + self, + parent, + page_size=None, + filter_=None, + retry=google.api_core.gapic_v1.method.DEFAULT, + timeout=google.api_core.gapic_v1.method.DEFAULT, + metadata=None, + ): + """ + Lists insights for a Cloud project. Requires the recommender.*.list + IAM permission for the specified insight type. + + Example: + >>> from google.cloud import recommender_v1beta1 + >>> + >>> client = recommender_v1beta1.RecommenderClient() + >>> + >>> parent = client.insight_type_path('[PROJECT]', '[LOCATION]', '[INSIGHT_TYPE]') + >>> + >>> # Iterate over all results + >>> for element in client.list_insights(parent): + ... # process element + ... pass + >>> + >>> + >>> # Alternatively: + >>> + >>> # Iterate over results one page at a time + >>> for page in client.list_insights(parent).pages: + ... for element in page: + ... # process element + ... pass + + Args: + parent (str): Required. The container resource on which to execute the request. + Acceptable formats: + + 1. + + "projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]", + + LOCATION here refers to GCP Locations: + https://cloud.google.com/about/locations/ + page_size (int): The maximum number of resources contained in the + underlying API response. If page streaming is performed per- + resource, this parameter does not affect the return value. If page + streaming is performed per-page, this determines the maximum number + of resources in a page. + filter_ (str): Optional. Filter expression to restrict the insights returned. + Supported filter fields: state Eg: \`state:"DISMISSED" or state:"ACTIVE" + retry (Optional[google.api_core.retry.Retry]): A retry object used + to retry requests. If ``None`` is specified, requests will + be retried using a default configuration. + timeout (Optional[float]): The amount of time, in seconds, to wait + for the request to complete. Note that if ``retry`` is + specified, the timeout applies to each individual attempt. + metadata (Optional[Sequence[Tuple[str, str]]]): Additional metadata + that is provided to the method. + + Returns: + A :class:`~google.api_core.page_iterator.PageIterator` instance. + An iterable of :class:`~google.cloud.recommender_v1beta1.types.Insight` instances. + You can also iterate over the pages of the response + using its `pages` property. + + Raises: + google.api_core.exceptions.GoogleAPICallError: If the request + failed for any reason. + google.api_core.exceptions.RetryError: If the request failed due + to a retryable error and retry attempts failed. + ValueError: If the parameters are invalid. + """ + # Wrap the transport method to add retry and timeout logic. + if "list_insights" not in self._inner_api_calls: + self._inner_api_calls[ + "list_insights" + ] = google.api_core.gapic_v1.method.wrap_method( + self.transport.list_insights, + default_retry=self._method_configs["ListInsights"].retry, + default_timeout=self._method_configs["ListInsights"].timeout, + client_info=self._client_info, + ) + + request = recommender_service_pb2.ListInsightsRequest( + parent=parent, page_size=page_size, filter=filter_ + ) + if metadata is None: + metadata = [] + metadata = list(metadata) + try: + routing_header = [("parent", parent)] + except AttributeError: + pass + else: + routing_metadata = google.api_core.gapic_v1.routing_header.to_grpc_metadata( + routing_header + ) + metadata.append(routing_metadata) + + iterator = google.api_core.page_iterator.GRPCIterator( + client=None, + method=functools.partial( + self._inner_api_calls["list_insights"], + retry=retry, + timeout=timeout, + metadata=metadata, + ), + request=request, + items_field="insights", + request_token_field="page_token", + response_token_field="next_page_token", + ) + return iterator + + def get_insight( + self, + name, + retry=google.api_core.gapic_v1.method.DEFAULT, + timeout=google.api_core.gapic_v1.method.DEFAULT, + metadata=None, + ): + """ + Gets the requested insight. Requires the recommender.*.get IAM + permission for the specified insight type. + + Example: + >>> from google.cloud import recommender_v1beta1 + >>> + >>> client = recommender_v1beta1.RecommenderClient() + >>> + >>> name = client.insight_path('[PROJECT]', '[LOCATION]', '[INSIGHT_TYPE]', '[INSIGHT]') + >>> + >>> response = client.get_insight(name) + + Args: + name (str): Required. Name of the insight. + retry (Optional[google.api_core.retry.Retry]): A retry object used + to retry requests. If ``None`` is specified, requests will + be retried using a default configuration. + timeout (Optional[float]): The amount of time, in seconds, to wait + for the request to complete. Note that if ``retry`` is + specified, the timeout applies to each individual attempt. + metadata (Optional[Sequence[Tuple[str, str]]]): Additional metadata + that is provided to the method. + + Returns: + A :class:`~google.cloud.recommender_v1beta1.types.Insight` instance. + + Raises: + google.api_core.exceptions.GoogleAPICallError: If the request + failed for any reason. + google.api_core.exceptions.RetryError: If the request failed due + to a retryable error and retry attempts failed. + ValueError: If the parameters are invalid. + """ + # Wrap the transport method to add retry and timeout logic. + if "get_insight" not in self._inner_api_calls: + self._inner_api_calls[ + "get_insight" + ] = google.api_core.gapic_v1.method.wrap_method( + self.transport.get_insight, + default_retry=self._method_configs["GetInsight"].retry, + default_timeout=self._method_configs["GetInsight"].timeout, + client_info=self._client_info, + ) + + request = recommender_service_pb2.GetInsightRequest(name=name) + if metadata is None: + metadata = [] + metadata = list(metadata) + try: + routing_header = [("name", name)] + except AttributeError: + pass + else: + routing_metadata = google.api_core.gapic_v1.routing_header.to_grpc_metadata( + routing_header + ) + metadata.append(routing_metadata) + + return self._inner_api_calls["get_insight"]( + request, retry=retry, timeout=timeout, metadata=metadata + ) + + def mark_insight_accepted( + self, + name, + etag, + state_metadata=None, + retry=google.api_core.gapic_v1.method.DEFAULT, + timeout=google.api_core.gapic_v1.method.DEFAULT, + metadata=None, + ): + """ + Marks the Insight State as Accepted. Users can use this method to + indicate to the Recommender API that they have applied some action based + on the insight. This stops the insight content from being updated. + + MarkInsightAccepted can be applied to insights in ACTIVE state. Requires + the recommender.*.update IAM permission for the specified insight. + + Example: + >>> from google.cloud import recommender_v1beta1 + >>> + >>> client = recommender_v1beta1.RecommenderClient() + >>> + >>> name = client.insight_path('[PROJECT]', '[LOCATION]', '[INSIGHT_TYPE]', '[INSIGHT]') + >>> + >>> # TODO: Initialize `etag`: + >>> etag = '' + >>> + >>> response = client.mark_insight_accepted(name, etag) + + Args: + name (str): Required. Name of the insight. + etag (str): Required. Fingerprint of the Insight. Provides optimistic locking. + state_metadata (dict[str -> str]): Optional. State properties user wish to include with this state. + Full replace of the current state_metadata. + retry (Optional[google.api_core.retry.Retry]): A retry object used + to retry requests. If ``None`` is specified, requests will + be retried using a default configuration. + timeout (Optional[float]): The amount of time, in seconds, to wait + for the request to complete. Note that if ``retry`` is + specified, the timeout applies to each individual attempt. + metadata (Optional[Sequence[Tuple[str, str]]]): Additional metadata + that is provided to the method. + + Returns: + A :class:`~google.cloud.recommender_v1beta1.types.Insight` instance. + + Raises: + google.api_core.exceptions.GoogleAPICallError: If the request + failed for any reason. + google.api_core.exceptions.RetryError: If the request failed due + to a retryable error and retry attempts failed. + ValueError: If the parameters are invalid. + """ + # Wrap the transport method to add retry and timeout logic. + if "mark_insight_accepted" not in self._inner_api_calls: + self._inner_api_calls[ + "mark_insight_accepted" + ] = google.api_core.gapic_v1.method.wrap_method( + self.transport.mark_insight_accepted, + default_retry=self._method_configs["MarkInsightAccepted"].retry, + default_timeout=self._method_configs["MarkInsightAccepted"].timeout, + client_info=self._client_info, + ) + + request = recommender_service_pb2.MarkInsightAcceptedRequest( + name=name, etag=etag, state_metadata=state_metadata + ) + if metadata is None: + metadata = [] + metadata = list(metadata) + try: + routing_header = [("name", name)] + except AttributeError: + pass + else: + routing_metadata = google.api_core.gapic_v1.routing_header.to_grpc_metadata( + routing_header + ) + metadata.append(routing_metadata) + + return self._inner_api_calls["mark_insight_accepted"]( + request, retry=retry, timeout=timeout, metadata=metadata + ) + def list_recommendations( self, parent, diff --git a/google/cloud/recommender_v1beta1/gapic/recommender_client_config.py b/google/cloud/recommender_v1beta1/gapic/recommender_client_config.py index d16dd81..011d9eb 100644 --- a/google/cloud/recommender_v1beta1/gapic/recommender_client_config.py +++ b/google/cloud/recommender_v1beta1/gapic/recommender_client_config.py @@ -1,17 +1,3 @@ -# Copyright 2020 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. - config = { "interfaces": { "google.cloud.recommender.v1beta1.Recommender": { @@ -31,6 +17,21 @@ } }, "methods": { + "ListInsights": { + "timeout_millis": 60000, + "retry_codes_name": "idempotent", + "retry_params_name": "default", + }, + "GetInsight": { + "timeout_millis": 60000, + "retry_codes_name": "idempotent", + "retry_params_name": "default", + }, + "MarkInsightAccepted": { + "timeout_millis": 60000, + "retry_codes_name": "non_idempotent", + "retry_params_name": "default", + }, "ListRecommendations": { "timeout_millis": 60000, "retry_codes_name": "idempotent", diff --git a/google/cloud/recommender_v1beta1/gapic/transports/recommender_grpc_transport.py b/google/cloud/recommender_v1beta1/gapic/transports/recommender_grpc_transport.py index a0628a2..fd2d573 100644 --- a/google/cloud/recommender_v1beta1/gapic/transports/recommender_grpc_transport.py +++ b/google/cloud/recommender_v1beta1/gapic/transports/recommender_grpc_transport.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -107,6 +107,52 @@ def channel(self): """ return self._channel + @property + def list_insights(self): + """Return the gRPC stub for :meth:`RecommenderClient.list_insights`. + + Lists insights for a Cloud project. Requires the recommender.*.list + IAM permission for the specified insight type. + + Returns: + Callable: A callable which accepts the appropriate + deserialized request object and returns a + deserialized response object. + """ + return self._stubs["recommender_stub"].ListInsights + + @property + def get_insight(self): + """Return the gRPC stub for :meth:`RecommenderClient.get_insight`. + + Gets the requested insight. Requires the recommender.*.get IAM + permission for the specified insight type. + + Returns: + Callable: A callable which accepts the appropriate + deserialized request object and returns a + deserialized response object. + """ + return self._stubs["recommender_stub"].GetInsight + + @property + def mark_insight_accepted(self): + """Return the gRPC stub for :meth:`RecommenderClient.mark_insight_accepted`. + + Marks the Insight State as Accepted. Users can use this method to + indicate to the Recommender API that they have applied some action based + on the insight. This stops the insight content from being updated. + + MarkInsightAccepted can be applied to insights in ACTIVE state. Requires + the recommender.*.update IAM permission for the specified insight. + + Returns: + Callable: A callable which accepts the appropriate + deserialized request object and returns a + deserialized response object. + """ + return self._stubs["recommender_stub"].MarkInsightAccepted + @property def list_recommendations(self): """Return the gRPC stub for :meth:`RecommenderClient.list_recommendations`. diff --git a/google/cloud/recommender_v1beta1/proto/insight_pb2.py b/google/cloud/recommender_v1beta1/proto/insight_pb2.py new file mode 100644 index 0000000..6f51f39 --- /dev/null +++ b/google/cloud/recommender_v1beta1/proto/insight_pb2.py @@ -0,0 +1,594 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: google/cloud/recommender_v1beta1/proto/insight.proto + +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.api import resource_pb2 as google_dot_api_dot_resource__pb2 +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name="google/cloud/recommender_v1beta1/proto/insight.proto", + package="google.cloud.recommender.v1beta1", + syntax="proto3", + serialized_options=b"\n$com.google.cloud.recommender.v1beta1P\001ZKgoogle.golang.org/genproto/googleapis/cloud/recommender/v1beta1;recommender\242\002\004CREC\252\002 Google.Cloud.Recommender.V1Beta1\352Am\n&recommender.googleapis.com/InsightType\022Cprojects/{project}/locations/{location}/insightTypes/{insight_type}", + serialized_pb=b'\n4google/cloud/recommender_v1beta1/proto/insight.proto\x12 google.cloud.recommender.v1beta1\x1a\x19google/api/resource.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto"\x90\x06\n\x07Insight\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x18\n\x10target_resources\x18\t \x03(\t\x12\x17\n\x0finsight_subtype\x18\n \x01(\t\x12(\n\x07\x63ontent\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x35\n\x11last_refresh_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x35\n\x12observation_period\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x46\n\nstate_info\x18\x06 \x01(\x0b\x32\x32.google.cloud.recommender.v1beta1.InsightStateInfo\x12\x44\n\x08\x63\x61tegory\x18\x07 \x01(\x0e\x32\x32.google.cloud.recommender.v1beta1.Insight.Category\x12\x0c\n\x04\x65tag\x18\x0b \x01(\t\x12\x65\n\x1a\x61ssociated_recommendations\x18\x08 \x03(\x0b\x32\x41.google.cloud.recommender.v1beta1.Insight.RecommendationReference\x1a\x31\n\x17RecommendationReference\x12\x16\n\x0erecommendation\x18\x01 \x01(\t"`\n\x08\x43\x61tegory\x12\x18\n\x14\x43\x41TEGORY_UNSPECIFIED\x10\x00\x12\x08\n\x04\x43OST\x10\x01\x12\x0c\n\x08SECURITY\x10\x02\x12\x0f\n\x0bPERFORMANCE\x10\x03\x12\x11\n\rMANAGEABILITY\x10\x04:\x7f\xea\x41|\n"recommender.googleapis.com/Insight\x12Vprojects/{project}/locations/{location}/insightTypes/{insight_type}/insights/{insight}"\xb9\x02\n\x10InsightStateInfo\x12G\n\x05state\x18\x01 \x01(\x0e\x32\x38.google.cloud.recommender.v1beta1.InsightStateInfo.State\x12]\n\x0estate_metadata\x18\x02 \x03(\x0b\x32\x45.google.cloud.recommender.v1beta1.InsightStateInfo.StateMetadataEntry\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"G\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x0c\n\x08\x41\x43\x43\x45PTED\x10\x02\x12\r\n\tDISMISSED\x10\x03\x42\x8f\x02\n$com.google.cloud.recommender.v1beta1P\x01ZKgoogle.golang.org/genproto/googleapis/cloud/recommender/v1beta1;recommender\xa2\x02\x04\x43REC\xaa\x02 Google.Cloud.Recommender.V1Beta1\xea\x41m\n&recommender.googleapis.com/InsightType\x12\x43projects/{project}/locations/{location}/insightTypes/{insight_type}b\x06proto3', + dependencies=[ + google_dot_api_dot_resource__pb2.DESCRIPTOR, + google_dot_protobuf_dot_duration__pb2.DESCRIPTOR, + google_dot_protobuf_dot_struct__pb2.DESCRIPTOR, + google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR, + ], +) + + +_INSIGHT_CATEGORY = _descriptor.EnumDescriptor( + name="Category", + full_name="google.cloud.recommender.v1beta1.Insight.Category", + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name="CATEGORY_UNSPECIFIED", + index=0, + number=0, + serialized_options=None, + type=None, + ), + _descriptor.EnumValueDescriptor( + name="COST", index=1, number=1, serialized_options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="SECURITY", index=2, number=2, serialized_options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="PERFORMANCE", index=3, number=3, serialized_options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="MANAGEABILITY", index=4, number=4, serialized_options=None, type=None + ), + ], + containing_type=None, + serialized_options=None, + serialized_start=772, + serialized_end=868, +) +_sym_db.RegisterEnumDescriptor(_INSIGHT_CATEGORY) + +_INSIGHTSTATEINFO_STATE = _descriptor.EnumDescriptor( + name="State", + full_name="google.cloud.recommender.v1beta1.InsightStateInfo.State", + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name="STATE_UNSPECIFIED", + index=0, + number=0, + serialized_options=None, + type=None, + ), + _descriptor.EnumValueDescriptor( + name="ACTIVE", index=1, number=1, serialized_options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="ACCEPTED", index=2, number=2, serialized_options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="DISMISSED", index=3, number=3, serialized_options=None, type=None + ), + ], + containing_type=None, + serialized_options=None, + serialized_start=1242, + serialized_end=1313, +) +_sym_db.RegisterEnumDescriptor(_INSIGHTSTATEINFO_STATE) + + +_INSIGHT_RECOMMENDATIONREFERENCE = _descriptor.Descriptor( + name="RecommendationReference", + full_name="google.cloud.recommender.v1beta1.Insight.RecommendationReference", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="recommendation", + full_name="google.cloud.recommender.v1beta1.Insight.RecommendationReference.recommendation", + index=0, + number=1, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ) + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=721, + serialized_end=770, +) + +_INSIGHT = _descriptor.Descriptor( + name="Insight", + full_name="google.cloud.recommender.v1beta1.Insight", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="name", + full_name="google.cloud.recommender.v1beta1.Insight.name", + index=0, + number=1, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="description", + full_name="google.cloud.recommender.v1beta1.Insight.description", + index=1, + number=2, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="target_resources", + full_name="google.cloud.recommender.v1beta1.Insight.target_resources", + index=2, + number=9, + type=9, + cpp_type=9, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="insight_subtype", + full_name="google.cloud.recommender.v1beta1.Insight.insight_subtype", + index=3, + number=10, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="content", + full_name="google.cloud.recommender.v1beta1.Insight.content", + index=4, + number=3, + type=11, + cpp_type=10, + label=1, + has_default_value=False, + default_value=None, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="last_refresh_time", + full_name="google.cloud.recommender.v1beta1.Insight.last_refresh_time", + index=5, + number=4, + type=11, + cpp_type=10, + label=1, + has_default_value=False, + default_value=None, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="observation_period", + full_name="google.cloud.recommender.v1beta1.Insight.observation_period", + index=6, + number=5, + type=11, + cpp_type=10, + label=1, + has_default_value=False, + default_value=None, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="state_info", + full_name="google.cloud.recommender.v1beta1.Insight.state_info", + index=7, + number=6, + type=11, + cpp_type=10, + label=1, + has_default_value=False, + default_value=None, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="category", + full_name="google.cloud.recommender.v1beta1.Insight.category", + index=8, + number=7, + type=14, + cpp_type=8, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="etag", + full_name="google.cloud.recommender.v1beta1.Insight.etag", + index=9, + number=11, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="associated_recommendations", + full_name="google.cloud.recommender.v1beta1.Insight.associated_recommendations", + index=10, + number=8, + type=11, + cpp_type=10, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + ], + extensions=[], + nested_types=[_INSIGHT_RECOMMENDATIONREFERENCE], + enum_types=[_INSIGHT_CATEGORY], + serialized_options=b'\352A|\n"recommender.googleapis.com/Insight\022Vprojects/{project}/locations/{location}/insightTypes/{insight_type}/insights/{insight}', + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=213, + serialized_end=997, +) + + +_INSIGHTSTATEINFO_STATEMETADATAENTRY = _descriptor.Descriptor( + name="StateMetadataEntry", + full_name="google.cloud.recommender.v1beta1.InsightStateInfo.StateMetadataEntry", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="key", + full_name="google.cloud.recommender.v1beta1.InsightStateInfo.StateMetadataEntry.key", + index=0, + number=1, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="value", + full_name="google.cloud.recommender.v1beta1.InsightStateInfo.StateMetadataEntry.value", + index=1, + number=2, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=b"8\001", + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=1188, + serialized_end=1240, +) + +_INSIGHTSTATEINFO = _descriptor.Descriptor( + name="InsightStateInfo", + full_name="google.cloud.recommender.v1beta1.InsightStateInfo", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="state", + full_name="google.cloud.recommender.v1beta1.InsightStateInfo.state", + index=0, + number=1, + type=14, + cpp_type=8, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="state_metadata", + full_name="google.cloud.recommender.v1beta1.InsightStateInfo.state_metadata", + index=1, + number=2, + type=11, + cpp_type=10, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + ], + extensions=[], + nested_types=[_INSIGHTSTATEINFO_STATEMETADATAENTRY], + enum_types=[_INSIGHTSTATEINFO_STATE], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=1000, + serialized_end=1313, +) + +_INSIGHT_RECOMMENDATIONREFERENCE.containing_type = _INSIGHT +_INSIGHT.fields_by_name[ + "content" +].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT +_INSIGHT.fields_by_name[ + "last_refresh_time" +].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_INSIGHT.fields_by_name[ + "observation_period" +].message_type = google_dot_protobuf_dot_duration__pb2._DURATION +_INSIGHT.fields_by_name["state_info"].message_type = _INSIGHTSTATEINFO +_INSIGHT.fields_by_name["category"].enum_type = _INSIGHT_CATEGORY +_INSIGHT.fields_by_name[ + "associated_recommendations" +].message_type = _INSIGHT_RECOMMENDATIONREFERENCE +_INSIGHT_CATEGORY.containing_type = _INSIGHT +_INSIGHTSTATEINFO_STATEMETADATAENTRY.containing_type = _INSIGHTSTATEINFO +_INSIGHTSTATEINFO.fields_by_name["state"].enum_type = _INSIGHTSTATEINFO_STATE +_INSIGHTSTATEINFO.fields_by_name[ + "state_metadata" +].message_type = _INSIGHTSTATEINFO_STATEMETADATAENTRY +_INSIGHTSTATEINFO_STATE.containing_type = _INSIGHTSTATEINFO +DESCRIPTOR.message_types_by_name["Insight"] = _INSIGHT +DESCRIPTOR.message_types_by_name["InsightStateInfo"] = _INSIGHTSTATEINFO +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +Insight = _reflection.GeneratedProtocolMessageType( + "Insight", + (_message.Message,), + { + "RecommendationReference": _reflection.GeneratedProtocolMessageType( + "RecommendationReference", + (_message.Message,), + { + "DESCRIPTOR": _INSIGHT_RECOMMENDATIONREFERENCE, + "__module__": "google.cloud.recommender_v1beta1.proto.insight_pb2", + "__doc__": """Reference to an associated recommendation. + + + Attributes: + recommendation: + Recommendation resource name, e.g. projects/[PROJECT_NUMBER]/l + ocations/[LOCATION]/recommenders/[RECOMMENDER_ID]/recommendati + ons/[RECOMMENDATION_ID] + """, + # @@protoc_insertion_point(class_scope:google.cloud.recommender.v1beta1.Insight.RecommendationReference) + }, + ), + "DESCRIPTOR": _INSIGHT, + "__module__": "google.cloud.recommender_v1beta1.proto.insight_pb2", + "__doc__": """An insight along with the information used to derive the + insight. The insight may have associated recomendations as well. + + + Attributes: + name: + Name of the insight. + description: + Free-form human readable summary in English. The maximum + length is 500 characters. + target_resources: + Fully qualified resource names that this insight is targeting. + insight_subtype: + Insight subtype. Insight content schema will be stable for a + given subtype. + content: + A struct of custom fields to explain the insight. Example: + “grantedPermissionsCount”: “1000” + last_refresh_time: + Timestamp of the latest data used to generate the insight. + observation_period: + Observation period that led to the insight. The source data + used to generate the insight ends at last_refresh_time and + begins at (last_refresh_time - observation_period). + state_info: + Information state and metadata. + category: + Category being targeted by the insight. + etag: + Fingerprint of the Insight. Provides optimistic locking when + updating states. + associated_recommendations: + Recommendations derived from this insight. + """, + # @@protoc_insertion_point(class_scope:google.cloud.recommender.v1beta1.Insight) + }, +) +_sym_db.RegisterMessage(Insight) +_sym_db.RegisterMessage(Insight.RecommendationReference) + +InsightStateInfo = _reflection.GeneratedProtocolMessageType( + "InsightStateInfo", + (_message.Message,), + { + "StateMetadataEntry": _reflection.GeneratedProtocolMessageType( + "StateMetadataEntry", + (_message.Message,), + { + "DESCRIPTOR": _INSIGHTSTATEINFO_STATEMETADATAENTRY, + "__module__": "google.cloud.recommender_v1beta1.proto.insight_pb2" + # @@protoc_insertion_point(class_scope:google.cloud.recommender.v1beta1.InsightStateInfo.StateMetadataEntry) + }, + ), + "DESCRIPTOR": _INSIGHTSTATEINFO, + "__module__": "google.cloud.recommender_v1beta1.proto.insight_pb2", + "__doc__": """Information related to insight state. + + + Attributes: + state: + Insight state. + state_metadata: + A map of metadata for the state, provided by user or + automations systems. + """, + # @@protoc_insertion_point(class_scope:google.cloud.recommender.v1beta1.InsightStateInfo) + }, +) +_sym_db.RegisterMessage(InsightStateInfo) +_sym_db.RegisterMessage(InsightStateInfo.StateMetadataEntry) + + +DESCRIPTOR._options = None +_INSIGHT._options = None +_INSIGHTSTATEINFO_STATEMETADATAENTRY._options = None +# @@protoc_insertion_point(module_scope) diff --git a/google/cloud/recommender_v1beta1/proto/insight_pb2_grpc.py b/google/cloud/recommender_v1beta1/proto/insight_pb2_grpc.py new file mode 100644 index 0000000..7343170 --- /dev/null +++ b/google/cloud/recommender_v1beta1/proto/insight_pb2_grpc.py @@ -0,0 +1,17 @@ +# Copyright 2019 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. + +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! + +import grpc diff --git a/google/cloud/recommender_v1beta1/proto/recommendation_pb2.py b/google/cloud/recommender_v1beta1/proto/recommendation_pb2.py index 8262f8e..0954a7e 100644 --- a/google/cloud/recommender_v1beta1/proto/recommendation_pb2.py +++ b/google/cloud/recommender_v1beta1/proto/recommendation_pb2.py @@ -1,24 +1,7 @@ # -*- coding: utf-8 -*- -# Copyright 2020 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. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: google/cloud/recommender_v1beta1/proto/recommendation.proto -import sys - -_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -40,12 +23,8 @@ name="google/cloud/recommender_v1beta1/proto/recommendation.proto", package="google.cloud.recommender.v1beta1", syntax="proto3", - serialized_options=_b( - "\n$com.google.cloud.recommender.v1beta1P\001ZKgoogle.golang.org/genproto/googleapis/cloud/recommender/v1beta1;recommender\242\002\004CREC\252\002 Google.Cloud.Recommender.V1Beta1\352Al\n&recommender.googleapis.com/Recommender\022Bprojects/{project}/locations/{location}/recommenders/{recommender}" - ), - serialized_pb=_b( - '\n;google/cloud/recommender_v1beta1/proto/recommendation.proto\x12 google.cloud.recommender.v1beta1\x1a\x19google/api/resource.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/type/money.proto"\xcc\x04\n\x0eRecommendation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x1b\n\x13recommender_subtype\x18\x0c \x01(\t\x12\x35\n\x11last_refresh_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12@\n\x0eprimary_impact\x18\x05 \x01(\x0b\x32(.google.cloud.recommender.v1beta1.Impact\x12\x43\n\x11\x61\x64\x64itional_impact\x18\x06 \x03(\x0b\x32(.google.cloud.recommender.v1beta1.Impact\x12H\n\x07\x63ontent\x18\x07 \x01(\x0b\x32\x37.google.cloud.recommender.v1beta1.RecommendationContent\x12M\n\nstate_info\x18\n \x01(\x0b\x32\x39.google.cloud.recommender.v1beta1.RecommendationStateInfo\x12\x0c\n\x04\x65tag\x18\x0b \x01(\t:\x94\x01\xea\x41\x90\x01\n)recommender.googleapis.com/Recommendation\x12\x63projects/{project}/locations/{location}/recommenders/{recommender}/recommendations/{recommendation}"c\n\x15RecommendationContent\x12J\n\x10operation_groups\x18\x02 \x03(\x0b\x32\x30.google.cloud.recommender.v1beta1.OperationGroup"Q\n\x0eOperationGroup\x12?\n\noperations\x18\x01 \x03(\x0b\x32+.google.cloud.recommender.v1beta1.Operation"\xeb\x04\n\tOperation\x12\x0e\n\x06\x61\x63tion\x18\x01 \x01(\t\x12\x15\n\rresource_type\x18\x02 \x01(\t\x12\x10\n\x08resource\x18\x03 \x01(\t\x12\x0c\n\x04path\x18\x04 \x01(\t\x12\x17\n\x0fsource_resource\x18\x05 \x01(\t\x12\x13\n\x0bsource_path\x18\x06 \x01(\t\x12\'\n\x05value\x18\x07 \x01(\x0b\x32\x16.google.protobuf.ValueH\x00\x12G\n\rvalue_matcher\x18\n \x01(\x0b\x32..google.cloud.recommender.v1beta1.ValueMatcherH\x00\x12R\n\x0cpath_filters\x18\x08 \x03(\x0b\x32<.google.cloud.recommender.v1beta1.Operation.PathFiltersEntry\x12_\n\x13path_value_matchers\x18\x0b \x03(\x0b\x32\x42.google.cloud.recommender.v1beta1.Operation.PathValueMatchersEntry\x1aJ\n\x10PathFiltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.Value:\x02\x38\x01\x1ah\n\x16PathValueMatchersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12=\n\x05value\x18\x02 \x01(\x0b\x32..google.cloud.recommender.v1beta1.ValueMatcher:\x02\x38\x01\x42\x0c\n\npath_value":\n\x0cValueMatcher\x12\x19\n\x0fmatches_pattern\x18\x01 \x01(\tH\x00\x42\x0f\n\rmatch_variant"_\n\x0e\x43ostProjection\x12 \n\x04\x63ost\x18\x01 \x01(\x0b\x32\x12.google.type.Money\x12+\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration"\x8a\x02\n\x06Impact\x12\x43\n\x08\x63\x61tegory\x18\x01 \x01(\x0e\x32\x31.google.cloud.recommender.v1beta1.Impact.Category\x12K\n\x0f\x63ost_projection\x18\x64 \x01(\x0b\x32\x30.google.cloud.recommender.v1beta1.CostProjectionH\x00"`\n\x08\x43\x61tegory\x12\x18\n\x14\x43\x41TEGORY_UNSPECIFIED\x10\x00\x12\x08\n\x04\x43OST\x10\x01\x12\x0c\n\x08SECURITY\x10\x02\x12\x0f\n\x0bPERFORMANCE\x10\x03\x12\x11\n\rMANAGEABILITY\x10\x04\x42\x0c\n\nprojection"\xe8\x02\n\x17RecommendationStateInfo\x12N\n\x05state\x18\x01 \x01(\x0e\x32?.google.cloud.recommender.v1beta1.RecommendationStateInfo.State\x12\x64\n\x0estate_metadata\x18\x02 \x03(\x0b\x32L.google.cloud.recommender.v1beta1.RecommendationStateInfo.StateMetadataEntry\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"a\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x0b\n\x07\x43LAIMED\x10\x06\x12\r\n\tSUCCEEDED\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04\x12\r\n\tDISMISSED\x10\x05\x42\x8e\x02\n$com.google.cloud.recommender.v1beta1P\x01ZKgoogle.golang.org/genproto/googleapis/cloud/recommender/v1beta1;recommender\xa2\x02\x04\x43REC\xaa\x02 Google.Cloud.Recommender.V1Beta1\xea\x41l\n&recommender.googleapis.com/Recommender\x12\x42projects/{project}/locations/{location}/recommenders/{recommender}b\x06proto3' - ), + serialized_options=b"\n$com.google.cloud.recommender.v1beta1P\001ZKgoogle.golang.org/genproto/googleapis/cloud/recommender/v1beta1;recommender\242\002\004CREC\252\002 Google.Cloud.Recommender.V1Beta1\352Al\n&recommender.googleapis.com/Recommender\022Bprojects/{project}/locations/{location}/recommenders/{recommender}", + serialized_pb=b'\n;google/cloud/recommender_v1beta1/proto/recommendation.proto\x12 google.cloud.recommender.v1beta1\x1a\x19google/api/resource.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/type/money.proto"\xd1\x05\n\x0eRecommendation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x1b\n\x13recommender_subtype\x18\x0c \x01(\t\x12\x35\n\x11last_refresh_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12@\n\x0eprimary_impact\x18\x05 \x01(\x0b\x32(.google.cloud.recommender.v1beta1.Impact\x12\x43\n\x11\x61\x64\x64itional_impact\x18\x06 \x03(\x0b\x32(.google.cloud.recommender.v1beta1.Impact\x12H\n\x07\x63ontent\x18\x07 \x01(\x0b\x32\x37.google.cloud.recommender.v1beta1.RecommendationContent\x12M\n\nstate_info\x18\n \x01(\x0b\x32\x39.google.cloud.recommender.v1beta1.RecommendationStateInfo\x12\x0c\n\x04\x65tag\x18\x0b \x01(\t\x12^\n\x13\x61ssociated_insights\x18\x0e \x03(\x0b\x32\x41.google.cloud.recommender.v1beta1.Recommendation.InsightReference\x1a#\n\x10InsightReference\x12\x0f\n\x07insight\x18\x01 \x01(\t:\x94\x01\xea\x41\x90\x01\n)recommender.googleapis.com/Recommendation\x12\x63projects/{project}/locations/{location}/recommenders/{recommender}/recommendations/{recommendation}"c\n\x15RecommendationContent\x12J\n\x10operation_groups\x18\x02 \x03(\x0b\x32\x30.google.cloud.recommender.v1beta1.OperationGroup"Q\n\x0eOperationGroup\x12?\n\noperations\x18\x01 \x03(\x0b\x32+.google.cloud.recommender.v1beta1.Operation"\xeb\x04\n\tOperation\x12\x0e\n\x06\x61\x63tion\x18\x01 \x01(\t\x12\x15\n\rresource_type\x18\x02 \x01(\t\x12\x10\n\x08resource\x18\x03 \x01(\t\x12\x0c\n\x04path\x18\x04 \x01(\t\x12\x17\n\x0fsource_resource\x18\x05 \x01(\t\x12\x13\n\x0bsource_path\x18\x06 \x01(\t\x12\'\n\x05value\x18\x07 \x01(\x0b\x32\x16.google.protobuf.ValueH\x00\x12G\n\rvalue_matcher\x18\n \x01(\x0b\x32..google.cloud.recommender.v1beta1.ValueMatcherH\x00\x12R\n\x0cpath_filters\x18\x08 \x03(\x0b\x32<.google.cloud.recommender.v1beta1.Operation.PathFiltersEntry\x12_\n\x13path_value_matchers\x18\x0b \x03(\x0b\x32\x42.google.cloud.recommender.v1beta1.Operation.PathValueMatchersEntry\x1aJ\n\x10PathFiltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.Value:\x02\x38\x01\x1ah\n\x16PathValueMatchersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12=\n\x05value\x18\x02 \x01(\x0b\x32..google.cloud.recommender.v1beta1.ValueMatcher:\x02\x38\x01\x42\x0c\n\npath_value":\n\x0cValueMatcher\x12\x19\n\x0fmatches_pattern\x18\x01 \x01(\tH\x00\x42\x0f\n\rmatch_variant"_\n\x0e\x43ostProjection\x12 \n\x04\x63ost\x18\x01 \x01(\x0b\x32\x12.google.type.Money\x12+\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration"\x8a\x02\n\x06Impact\x12\x43\n\x08\x63\x61tegory\x18\x01 \x01(\x0e\x32\x31.google.cloud.recommender.v1beta1.Impact.Category\x12K\n\x0f\x63ost_projection\x18\x64 \x01(\x0b\x32\x30.google.cloud.recommender.v1beta1.CostProjectionH\x00"`\n\x08\x43\x61tegory\x12\x18\n\x14\x43\x41TEGORY_UNSPECIFIED\x10\x00\x12\x08\n\x04\x43OST\x10\x01\x12\x0c\n\x08SECURITY\x10\x02\x12\x0f\n\x0bPERFORMANCE\x10\x03\x12\x11\n\rMANAGEABILITY\x10\x04\x42\x0c\n\nprojection"\xe8\x02\n\x17RecommendationStateInfo\x12N\n\x05state\x18\x01 \x01(\x0e\x32?.google.cloud.recommender.v1beta1.RecommendationStateInfo.State\x12\x64\n\x0estate_metadata\x18\x02 \x03(\x0b\x32L.google.cloud.recommender.v1beta1.RecommendationStateInfo.StateMetadataEntry\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"a\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x0b\n\x07\x43LAIMED\x10\x06\x12\r\n\tSUCCEEDED\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04\x12\r\n\tDISMISSED\x10\x05\x42\x8e\x02\n$com.google.cloud.recommender.v1beta1P\x01ZKgoogle.golang.org/genproto/googleapis/cloud/recommender/v1beta1;recommender\xa2\x02\x04\x43REC\xaa\x02 Google.Cloud.Recommender.V1Beta1\xea\x41l\n&recommender.googleapis.com/Recommender\x12\x42projects/{project}/locations/{location}/recommenders/{recommender}b\x06proto3', dependencies=[ google_dot_api_dot_resource__pb2.DESCRIPTOR, google_dot_protobuf_dot_duration__pb2.DESCRIPTOR, @@ -84,8 +63,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=1955, - serialized_end=2051, + serialized_start=2088, + serialized_end=2184, ) _sym_db.RegisterEnumDescriptor(_IMPACT_CATEGORY) @@ -120,12 +99,50 @@ ], containing_type=None, serialized_options=None, - serialized_start=2331, - serialized_end=2428, + serialized_start=2464, + serialized_end=2561, ) _sym_db.RegisterEnumDescriptor(_RECOMMENDATIONSTATEINFO_STATE) +_RECOMMENDATION_INSIGHTREFERENCE = _descriptor.Descriptor( + name="InsightReference", + full_name="google.cloud.recommender.v1beta1.Recommendation.InsightReference", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="insight", + full_name="google.cloud.recommender.v1beta1.Recommendation.InsightReference.insight", + index=0, + number=1, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ) + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=780, + serialized_end=815, +) + _RECOMMENDATION = _descriptor.Descriptor( name="Recommendation", full_name="google.cloud.recommender.v1beta1.Recommendation", @@ -142,7 +159,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -160,7 +177,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -178,7 +195,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -286,7 +303,25 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="associated_insights", + full_name="google.cloud.recommender.v1beta1.Recommendation.associated_insights", + index=9, + number=14, + type=11, + cpp_type=10, + label=3, + has_default_value=False, + default_value=[], message_type=None, enum_type=None, containing_type=None, @@ -297,17 +332,15 @@ ), ], extensions=[], - nested_types=[], + nested_types=[_RECOMMENDATION_INSIGHTREFERENCE], enum_types=[], - serialized_options=_b( - "\352A\220\001\n)recommender.googleapis.com/Recommendation\022cprojects/{project}/locations/{location}/recommenders/{recommender}/recommendations/{recommendation}" - ), + serialized_options=b"\352A\220\001\n)recommender.googleapis.com/Recommendation\022cprojects/{project}/locations/{location}/recommenders/{recommender}/recommendations/{recommendation}", is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], serialized_start=245, - serialized_end=833, + serialized_end=966, ) @@ -345,8 +378,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=835, - serialized_end=934, + serialized_start=968, + serialized_end=1067, ) @@ -384,8 +417,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=936, - serialized_end=1017, + serialized_start=1069, + serialized_end=1150, ) @@ -405,7 +438,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -436,13 +469,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=_b("8\001"), + serialized_options=b"8\001", is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1445, - serialized_end=1519, + serialized_start=1578, + serialized_end=1652, ) _OPERATION_PATHVALUEMATCHERSENTRY = _descriptor.Descriptor( @@ -461,7 +494,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -492,13 +525,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=_b("8\001"), + serialized_options=b"8\001", is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1521, - serialized_end=1625, + serialized_start=1654, + serialized_end=1758, ) _OPERATION = _descriptor.Descriptor( @@ -517,7 +550,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -535,7 +568,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -553,7 +586,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -571,7 +604,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -589,7 +622,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -607,7 +640,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -705,8 +738,8 @@ fields=[], ) ], - serialized_start=1020, - serialized_end=1639, + serialized_start=1153, + serialized_end=1772, ) @@ -726,7 +759,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -752,8 +785,8 @@ fields=[], ) ], - serialized_start=1641, - serialized_end=1699, + serialized_start=1774, + serialized_end=1832, ) @@ -809,8 +842,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1701, - serialized_end=1796, + serialized_start=1834, + serialized_end=1929, ) @@ -874,8 +907,8 @@ fields=[], ) ], - serialized_start=1799, - serialized_end=2065, + serialized_start=1932, + serialized_end=2198, ) @@ -895,7 +928,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -913,7 +946,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -926,13 +959,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=_b("8\001"), + serialized_options=b"8\001", is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=2277, - serialized_end=2329, + serialized_start=2410, + serialized_end=2462, ) _RECOMMENDATIONSTATEINFO = _descriptor.Descriptor( @@ -987,10 +1020,11 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=2068, - serialized_end=2428, + serialized_start=2201, + serialized_end=2561, ) +_RECOMMENDATION_INSIGHTREFERENCE.containing_type = _RECOMMENDATION _RECOMMENDATION.fields_by_name[ "last_refresh_time" ].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP @@ -998,6 +1032,9 @@ _RECOMMENDATION.fields_by_name["additional_impact"].message_type = _IMPACT _RECOMMENDATION.fields_by_name["content"].message_type = _RECOMMENDATIONCONTENT _RECOMMENDATION.fields_by_name["state_info"].message_type = _RECOMMENDATIONSTATEINFO +_RECOMMENDATION.fields_by_name[ + "associated_insights" +].message_type = _RECOMMENDATION_INSIGHTREFERENCE _RECOMMENDATIONCONTENT.fields_by_name["operation_groups"].message_type = _OPERATIONGROUP _OPERATIONGROUP.fields_by_name["operations"].message_type = _OPERATION _OPERATION_PATHFILTERSENTRY.fields_by_name[ @@ -1069,10 +1106,27 @@ "Recommendation", (_message.Message,), { + "InsightReference": _reflection.GeneratedProtocolMessageType( + "InsightReference", + (_message.Message,), + { + "DESCRIPTOR": _RECOMMENDATION_INSIGHTREFERENCE, + "__module__": "google.cloud.recommender_v1beta1.proto.recommendation_pb2", + "__doc__": """Reference to an associated insight. + + + Attributes: + insight: + Insight resource name, e.g. ``projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/insights/[INSIGHT_ID]`` + """, + # @@protoc_insertion_point(class_scope:google.cloud.recommender.v1beta1.Recommendation.InsightReference) + }, + ), "DESCRIPTOR": _RECOMMENDATION, "__module__": "google.cloud.recommender_v1beta1.proto.recommendation_pb2", - "__doc__": """A recommendation along with a suggested action. E.g., a rightsizing - recommendation for an underutilized VM, IAM role recommendations, etc + "__doc__": """A recommendation along with a suggested action. E.g., a + rightsizing recommendation for an underutilized VM, IAM role + recommendations, etc Attributes: @@ -1109,11 +1163,14 @@ etag: Fingerprint of the Recommendation. Provides optimistic locking when updating states. + associated_insights: + Insights that led to this recommendation. """, # @@protoc_insertion_point(class_scope:google.cloud.recommender.v1beta1.Recommendation) }, ) _sym_db.RegisterMessage(Recommendation) +_sym_db.RegisterMessage(Recommendation.InsightReference) RecommendationContent = _reflection.GeneratedProtocolMessageType( "RecommendationContent", diff --git a/google/cloud/recommender_v1beta1/proto/recommendation_pb2_grpc.py b/google/cloud/recommender_v1beta1/proto/recommendation_pb2_grpc.py index b662812..7343170 100644 --- a/google/cloud/recommender_v1beta1/proto/recommendation_pb2_grpc.py +++ b/google/cloud/recommender_v1beta1/proto/recommendation_pb2_grpc.py @@ -1,4 +1,4 @@ -# Copyright 2020 Google LLC +# Copyright 2019 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/recommender_v1beta1/proto/recommender_service_pb2.py b/google/cloud/recommender_v1beta1/proto/recommender_service_pb2.py index 9bebc60..ac9a5a0 100644 --- a/google/cloud/recommender_v1beta1/proto/recommender_service_pb2.py +++ b/google/cloud/recommender_v1beta1/proto/recommender_service_pb2.py @@ -1,24 +1,7 @@ # -*- coding: utf-8 -*- -# Copyright 2020 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. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: google/cloud/recommender_v1beta1/proto/recommender_service.proto -import sys - -_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -33,6 +16,9 @@ from google.api import client_pb2 as google_dot_api_dot_client__pb2 from google.api import field_behavior_pb2 as google_dot_api_dot_field__behavior__pb2 from google.api import resource_pb2 as google_dot_api_dot_resource__pb2 +from google.cloud.recommender_v1beta1.proto import ( + insight_pb2 as google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_insight__pb2, +) from google.cloud.recommender_v1beta1.proto import ( recommendation_pb2 as google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommendation__pb2, ) @@ -42,22 +28,339 @@ name="google/cloud/recommender_v1beta1/proto/recommender_service.proto", package="google.cloud.recommender.v1beta1", syntax="proto3", - serialized_options=_b( - "\n$com.google.cloud.recommender.v1beta1B\020RecommenderProtoP\001ZKgoogle.golang.org/genproto/googleapis/cloud/recommender/v1beta1;recommender\242\002\004CREC\252\002 Google.Cloud.Recommender.V1Beta1" - ), - serialized_pb=_b( - '\n@google/cloud/recommender_v1beta1/proto/recommender_service.proto\x12 google.cloud.recommender.v1beta1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a;google/cloud/recommender_v1beta1/proto/recommendation.proto"\x9d\x01\n\x1aListRecommendationsRequest\x12>\n\x06parent\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recommender.googleapis.com/Recommender\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x0e\n\x06\x66ilter\x18\x05 \x01(\t"\x81\x01\n\x1bListRecommendationsResponse\x12I\n\x0frecommendations\x18\x01 \x03(\x0b\x32\x30.google.cloud.recommender.v1beta1.Recommendation\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"[\n\x18GetRecommendationRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation"\x9b\x02\n MarkRecommendationClaimedRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation\x12m\n\x0estate_metadata\x18\x02 \x03(\x0b\x32U.google.cloud.recommender.v1beta1.MarkRecommendationClaimedRequest.StateMetadataEntry\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x02\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x9f\x02\n"MarkRecommendationSucceededRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation\x12o\n\x0estate_metadata\x18\x02 \x03(\x0b\x32W.google.cloud.recommender.v1beta1.MarkRecommendationSucceededRequest.StateMetadataEntry\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x02\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x99\x02\n\x1fMarkRecommendationFailedRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation\x12l\n\x0estate_metadata\x18\x02 \x03(\x0b\x32T.google.cloud.recommender.v1beta1.MarkRecommendationFailedRequest.StateMetadataEntry\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x02\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x32\xdf\n\n\x0bRecommender\x12\xf3\x01\n\x13ListRecommendations\x12<.google.cloud.recommender.v1beta1.ListRecommendationsRequest\x1a=.google.cloud.recommender.v1beta1.ListRecommendationsResponse"_\x82\xd3\xe4\x93\x02I\x12G/v1beta1/{parent=projects/*/locations/*/recommenders/*}/recommendations\xda\x41\rparent,filter\x12\xd9\x01\n\x11GetRecommendation\x12:.google.cloud.recommender.v1beta1.GetRecommendationRequest\x1a\x30.google.cloud.recommender.v1beta1.Recommendation"V\x82\xd3\xe4\x93\x02I\x12G/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}\xda\x41\x04name\x12\x8c\x02\n\x19MarkRecommendationClaimed\x12\x42.google.cloud.recommender.v1beta1.MarkRecommendationClaimedRequest\x1a\x30.google.cloud.recommender.v1beta1.Recommendation"y\x82\xd3\xe4\x93\x02X"S/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markClaimed:\x01*\xda\x41\x18name,state_metadata,etag\x12\x92\x02\n\x1bMarkRecommendationSucceeded\x12\x44.google.cloud.recommender.v1beta1.MarkRecommendationSucceededRequest\x1a\x30.google.cloud.recommender.v1beta1.Recommendation"{\x82\xd3\xe4\x93\x02Z"U/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markSucceeded:\x01*\xda\x41\x18name,state_metadata,etag\x12\x89\x02\n\x18MarkRecommendationFailed\x12\x41.google.cloud.recommender.v1beta1.MarkRecommendationFailedRequest\x1a\x30.google.cloud.recommender.v1beta1.Recommendation"x\x82\xd3\xe4\x93\x02W"R/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markFailed:\x01*\xda\x41\x18name,state_metadata,etag\x1aN\xca\x41\x1arecommender.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\xb1\x01\n$com.google.cloud.recommender.v1beta1B\x10RecommenderProtoP\x01ZKgoogle.golang.org/genproto/googleapis/cloud/recommender/v1beta1;recommender\xa2\x02\x04\x43REC\xaa\x02 Google.Cloud.Recommender.V1Beta1b\x06proto3' - ), + serialized_options=b"\n$com.google.cloud.recommender.v1beta1B\020RecommenderProtoP\001ZKgoogle.golang.org/genproto/googleapis/cloud/recommender/v1beta1;recommender\242\002\004CREC\252\002 Google.Cloud.Recommender.V1Beta1", + serialized_pb=b'\n@google/cloud/recommender_v1beta1/proto/recommender_service.proto\x12 google.cloud.recommender.v1beta1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x34google/cloud/recommender_v1beta1/proto/insight.proto\x1a;google/cloud/recommender_v1beta1/proto/recommendation.proto"\x9b\x01\n\x13ListInsightsRequest\x12>\n\x06parent\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recommender.googleapis.com/InsightType\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x13\n\x06\x66ilter\x18\x04 \x01(\tB\x03\xe0\x41\x01"l\n\x14ListInsightsResponse\x12;\n\x08insights\x18\x01 \x03(\x0b\x32).google.cloud.recommender.v1beta1.Insight\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"M\n\x11GetInsightRequest\x12\x38\n\x04name\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n"recommender.googleapis.com/Insight"\x8d\x02\n\x1aMarkInsightAcceptedRequest\x12\x38\n\x04name\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n"recommender.googleapis.com/Insight\x12l\n\x0estate_metadata\x18\x02 \x03(\x0b\x32O.google.cloud.recommender.v1beta1.MarkInsightAcceptedRequest.StateMetadataEntryB\x03\xe0\x41\x01\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x02\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x9d\x01\n\x1aListRecommendationsRequest\x12>\n\x06parent\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recommender.googleapis.com/Recommender\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x0e\n\x06\x66ilter\x18\x05 \x01(\t"\x81\x01\n\x1bListRecommendationsResponse\x12I\n\x0frecommendations\x18\x01 \x03(\x0b\x32\x30.google.cloud.recommender.v1beta1.Recommendation\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"[\n\x18GetRecommendationRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation"\x9b\x02\n MarkRecommendationClaimedRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation\x12m\n\x0estate_metadata\x18\x02 \x03(\x0b\x32U.google.cloud.recommender.v1beta1.MarkRecommendationClaimedRequest.StateMetadataEntry\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x02\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x9f\x02\n"MarkRecommendationSucceededRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation\x12o\n\x0estate_metadata\x18\x02 \x03(\x0b\x32W.google.cloud.recommender.v1beta1.MarkRecommendationSucceededRequest.StateMetadataEntry\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x02\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x99\x02\n\x1fMarkRecommendationFailedRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recommender.googleapis.com/Recommendation\x12l\n\x0estate_metadata\x18\x02 \x03(\x0b\x32T.google.cloud.recommender.v1beta1.MarkRecommendationFailedRequest.StateMetadataEntry\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x02\x1a\x34\n\x12StateMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x32\xe8\x0f\n\x0bRecommender\x12\xd0\x01\n\x0cListInsights\x12\x35.google.cloud.recommender.v1beta1.ListInsightsRequest\x1a\x36.google.cloud.recommender.v1beta1.ListInsightsResponse"Q\x82\xd3\xe4\x93\x02\x42\x12@/v1beta1/{parent=projects/*/locations/*/insightTypes/*}/insights\xda\x41\x06parent\x12\xbd\x01\n\nGetInsight\x12\x33.google.cloud.recommender.v1beta1.GetInsightRequest\x1a).google.cloud.recommender.v1beta1.Insight"O\x82\xd3\xe4\x93\x02\x42\x12@/v1beta1/{name=projects/*/locations/*/insightTypes/*/insights/*}\xda\x41\x04name\x12\xf3\x01\n\x13MarkInsightAccepted\x12<.google.cloud.recommender.v1beta1.MarkInsightAcceptedRequest\x1a).google.cloud.recommender.v1beta1.Insight"s\x82\xd3\xe4\x93\x02R"M/v1beta1/{name=projects/*/locations/*/insightTypes/*/insights/*}:markAccepted:\x01*\xda\x41\x18name,state_metadata,etag\x12\xf3\x01\n\x13ListRecommendations\x12<.google.cloud.recommender.v1beta1.ListRecommendationsRequest\x1a=.google.cloud.recommender.v1beta1.ListRecommendationsResponse"_\x82\xd3\xe4\x93\x02I\x12G/v1beta1/{parent=projects/*/locations/*/recommenders/*}/recommendations\xda\x41\rparent,filter\x12\xd9\x01\n\x11GetRecommendation\x12:.google.cloud.recommender.v1beta1.GetRecommendationRequest\x1a\x30.google.cloud.recommender.v1beta1.Recommendation"V\x82\xd3\xe4\x93\x02I\x12G/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}\xda\x41\x04name\x12\x8c\x02\n\x19MarkRecommendationClaimed\x12\x42.google.cloud.recommender.v1beta1.MarkRecommendationClaimedRequest\x1a\x30.google.cloud.recommender.v1beta1.Recommendation"y\x82\xd3\xe4\x93\x02X"S/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markClaimed:\x01*\xda\x41\x18name,state_metadata,etag\x12\x92\x02\n\x1bMarkRecommendationSucceeded\x12\x44.google.cloud.recommender.v1beta1.MarkRecommendationSucceededRequest\x1a\x30.google.cloud.recommender.v1beta1.Recommendation"{\x82\xd3\xe4\x93\x02Z"U/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markSucceeded:\x01*\xda\x41\x18name,state_metadata,etag\x12\x89\x02\n\x18MarkRecommendationFailed\x12\x41.google.cloud.recommender.v1beta1.MarkRecommendationFailedRequest\x1a\x30.google.cloud.recommender.v1beta1.Recommendation"x\x82\xd3\xe4\x93\x02W"R/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markFailed:\x01*\xda\x41\x18name,state_metadata,etag\x1aN\xca\x41\x1arecommender.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\xb1\x01\n$com.google.cloud.recommender.v1beta1B\x10RecommenderProtoP\x01ZKgoogle.golang.org/genproto/googleapis/cloud/recommender/v1beta1;recommender\xa2\x02\x04\x43REC\xaa\x02 Google.Cloud.Recommender.V1Beta1b\x06proto3', dependencies=[ google_dot_api_dot_annotations__pb2.DESCRIPTOR, google_dot_api_dot_client__pb2.DESCRIPTOR, google_dot_api_dot_field__behavior__pb2.DESCRIPTOR, google_dot_api_dot_resource__pb2.DESCRIPTOR, + google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_insight__pb2.DESCRIPTOR, google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommendation__pb2.DESCRIPTOR, ], ) +_LISTINSIGHTSREQUEST = _descriptor.Descriptor( + name="ListInsightsRequest", + full_name="google.cloud.recommender.v1beta1.ListInsightsRequest", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="parent", + full_name="google.cloud.recommender.v1beta1.ListInsightsRequest.parent", + index=0, + number=1, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=b"\340A\002\372A(\n&recommender.googleapis.com/InsightType", + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="page_size", + full_name="google.cloud.recommender.v1beta1.ListInsightsRequest.page_size", + index=1, + number=2, + type=5, + cpp_type=1, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=b"\340A\001", + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="page_token", + full_name="google.cloud.recommender.v1beta1.ListInsightsRequest.page_token", + index=2, + number=3, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=b"\340A\001", + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="filter", + full_name="google.cloud.recommender.v1beta1.ListInsightsRequest.filter", + index=3, + number=4, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=b"\340A\001", + file=DESCRIPTOR, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=333, + serialized_end=488, +) + + +_LISTINSIGHTSRESPONSE = _descriptor.Descriptor( + name="ListInsightsResponse", + full_name="google.cloud.recommender.v1beta1.ListInsightsResponse", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="insights", + full_name="google.cloud.recommender.v1beta1.ListInsightsResponse.insights", + index=0, + number=1, + type=11, + cpp_type=10, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="next_page_token", + full_name="google.cloud.recommender.v1beta1.ListInsightsResponse.next_page_token", + index=1, + number=2, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=490, + serialized_end=598, +) + + +_GETINSIGHTREQUEST = _descriptor.Descriptor( + name="GetInsightRequest", + full_name="google.cloud.recommender.v1beta1.GetInsightRequest", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="name", + full_name="google.cloud.recommender.v1beta1.GetInsightRequest.name", + index=0, + number=1, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=b'\340A\002\372A$\n"recommender.googleapis.com/Insight', + file=DESCRIPTOR, + ) + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=600, + serialized_end=677, +) + + +_MARKINSIGHTACCEPTEDREQUEST_STATEMETADATAENTRY = _descriptor.Descriptor( + name="StateMetadataEntry", + full_name="google.cloud.recommender.v1beta1.MarkInsightAcceptedRequest.StateMetadataEntry", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="key", + full_name="google.cloud.recommender.v1beta1.MarkInsightAcceptedRequest.StateMetadataEntry.key", + index=0, + number=1, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="value", + full_name="google.cloud.recommender.v1beta1.MarkInsightAcceptedRequest.StateMetadataEntry.value", + index=1, + number=2, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=b"8\001", + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=897, + serialized_end=949, +) + +_MARKINSIGHTACCEPTEDREQUEST = _descriptor.Descriptor( + name="MarkInsightAcceptedRequest", + full_name="google.cloud.recommender.v1beta1.MarkInsightAcceptedRequest", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="name", + full_name="google.cloud.recommender.v1beta1.MarkInsightAcceptedRequest.name", + index=0, + number=1, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=b'\340A\002\372A$\n"recommender.googleapis.com/Insight', + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="state_metadata", + full_name="google.cloud.recommender.v1beta1.MarkInsightAcceptedRequest.state_metadata", + index=1, + number=2, + type=11, + cpp_type=10, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=b"\340A\001", + file=DESCRIPTOR, + ), + _descriptor.FieldDescriptor( + name="etag", + full_name="google.cloud.recommender.v1beta1.MarkInsightAcceptedRequest.etag", + index=2, + number=3, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=b"\340A\002", + file=DESCRIPTOR, + ), + ], + extensions=[], + nested_types=[_MARKINSIGHTACCEPTEDREQUEST_STATEMETADATAENTRY], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=680, + serialized_end=949, +) + + _LISTRECOMMENDATIONSREQUEST = _descriptor.Descriptor( name="ListRecommendationsRequest", full_name="google.cloud.recommender.v1beta1.ListRecommendationsRequest", @@ -74,15 +377,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b( - "\340A\002\372A(\n&recommender.googleapis.com/Recommender" - ), + serialized_options=b"\340A\002\372A(\n&recommender.googleapis.com/Recommender", file=DESCRIPTOR, ), _descriptor.FieldDescriptor( @@ -100,7 +401,7 @@ containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b("\340A\001"), + serialized_options=b"\340A\001", file=DESCRIPTOR, ), _descriptor.FieldDescriptor( @@ -112,13 +413,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b("\340A\001"), + serialized_options=b"\340A\001", file=DESCRIPTOR, ), _descriptor.FieldDescriptor( @@ -130,7 +431,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -148,8 +449,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=279, - serialized_end=436, + serialized_start=952, + serialized_end=1109, ) @@ -187,7 +488,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -205,8 +506,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=439, - serialized_end=568, + serialized_start=1112, + serialized_end=1241, ) @@ -226,15 +527,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b( - "\340A\002\372A+\n)recommender.googleapis.com/Recommendation" - ), + serialized_options=b"\340A\002\372A+\n)recommender.googleapis.com/Recommendation", file=DESCRIPTOR, ) ], @@ -246,8 +545,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=570, - serialized_end=661, + serialized_start=1243, + serialized_end=1334, ) @@ -267,7 +566,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -285,7 +584,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -298,13 +597,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=_b("8\001"), + serialized_options=b"8\001", is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=895, - serialized_end=947, + serialized_start=897, + serialized_end=949, ) _MARKRECOMMENDATIONCLAIMEDREQUEST = _descriptor.Descriptor( @@ -323,15 +622,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b( - "\340A\002\372A+\n)recommender.googleapis.com/Recommendation" - ), + serialized_options=b"\340A\002\372A+\n)recommender.googleapis.com/Recommendation", file=DESCRIPTOR, ), _descriptor.FieldDescriptor( @@ -361,13 +658,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b("\340A\002"), + serialized_options=b"\340A\002", file=DESCRIPTOR, ), ], @@ -379,8 +676,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=664, - serialized_end=947, + serialized_start=1337, + serialized_end=1620, ) @@ -400,7 +697,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -418,7 +715,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -431,13 +728,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=_b("8\001"), + serialized_options=b"8\001", is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=895, - serialized_end=947, + serialized_start=897, + serialized_end=949, ) _MARKRECOMMENDATIONSUCCEEDEDREQUEST = _descriptor.Descriptor( @@ -456,15 +753,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b( - "\340A\002\372A+\n)recommender.googleapis.com/Recommendation" - ), + serialized_options=b"\340A\002\372A+\n)recommender.googleapis.com/Recommendation", file=DESCRIPTOR, ), _descriptor.FieldDescriptor( @@ -494,13 +789,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b("\340A\002"), + serialized_options=b"\340A\002", file=DESCRIPTOR, ), ], @@ -512,8 +807,8 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=950, - serialized_end=1237, + serialized_start=1623, + serialized_end=1910, ) @@ -533,7 +828,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -551,7 +846,7 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, @@ -564,13 +859,13 @@ extensions=[], nested_types=[], enum_types=[], - serialized_options=_b("8\001"), + serialized_options=b"8\001", is_extendable=False, syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=895, - serialized_end=947, + serialized_start=897, + serialized_end=949, ) _MARKRECOMMENDATIONFAILEDREQUEST = _descriptor.Descriptor( @@ -589,15 +884,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b( - "\340A\002\372A+\n)recommender.googleapis.com/Recommendation" - ), + serialized_options=b"\340A\002\372A+\n)recommender.googleapis.com/Recommendation", file=DESCRIPTOR, ), _descriptor.FieldDescriptor( @@ -627,13 +920,13 @@ cpp_type=9, label=1, has_default_value=False, - default_value=_b("").decode("utf-8"), + default_value=b"".decode("utf-8"), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b("\340A\002"), + serialized_options=b"\340A\002", file=DESCRIPTOR, ), ], @@ -645,10 +938,21 @@ syntax="proto3", extension_ranges=[], oneofs=[], - serialized_start=1240, - serialized_end=1521, + serialized_start=1913, + serialized_end=2194, ) +_LISTINSIGHTSRESPONSE.fields_by_name[ + "insights" +].message_type = ( + google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_insight__pb2._INSIGHT +) +_MARKINSIGHTACCEPTEDREQUEST_STATEMETADATAENTRY.containing_type = ( + _MARKINSIGHTACCEPTEDREQUEST +) +_MARKINSIGHTACCEPTEDREQUEST.fields_by_name[ + "state_metadata" +].message_type = _MARKINSIGHTACCEPTEDREQUEST_STATEMETADATAENTRY _LISTRECOMMENDATIONSRESPONSE.fields_by_name[ "recommendations" ].message_type = ( @@ -672,6 +976,12 @@ _MARKRECOMMENDATIONFAILEDREQUEST.fields_by_name[ "state_metadata" ].message_type = _MARKRECOMMENDATIONFAILEDREQUEST_STATEMETADATAENTRY +DESCRIPTOR.message_types_by_name["ListInsightsRequest"] = _LISTINSIGHTSREQUEST +DESCRIPTOR.message_types_by_name["ListInsightsResponse"] = _LISTINSIGHTSRESPONSE +DESCRIPTOR.message_types_by_name["GetInsightRequest"] = _GETINSIGHTREQUEST +DESCRIPTOR.message_types_by_name[ + "MarkInsightAcceptedRequest" +] = _MARKINSIGHTACCEPTEDREQUEST DESCRIPTOR.message_types_by_name[ "ListRecommendationsRequest" ] = _LISTRECOMMENDATIONSREQUEST @@ -690,6 +1000,115 @@ ] = _MARKRECOMMENDATIONFAILEDREQUEST _sym_db.RegisterFileDescriptor(DESCRIPTOR) +ListInsightsRequest = _reflection.GeneratedProtocolMessageType( + "ListInsightsRequest", + (_message.Message,), + { + "DESCRIPTOR": _LISTINSIGHTSREQUEST, + "__module__": "google.cloud.recommender_v1beta1.proto.recommender_service_pb2", + "__doc__": """Request for the ``ListInsights`` method. + + + Attributes: + parent: + Required. The container resource on which to execute the + request. Acceptable formats: 1. “projects/[PROJECT_NUMBER]/lo + cations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]”, LOCATION + here refers to GCP Locations: + https://cloud.google.com/about/locations/ + page_size: + Optional. The maximum number of results to return from this + request. Non-positive values are ignored. If not specified, + the server will determine the number of results to return. + page_token: + Optional. If present, retrieves the next batch of results from + the preceding call to this method. ``page_token`` must be the + value of ``next_page_token`` from the previous response. The + values of other method parameters must be identical to those + in the previous call. + filter: + Optional. Filter expression to restrict the insights returned. + Supported filter fields: state Eg: \`state:“DISMISSED” or + state:“ACTIVE” + """, + # @@protoc_insertion_point(class_scope:google.cloud.recommender.v1beta1.ListInsightsRequest) + }, +) +_sym_db.RegisterMessage(ListInsightsRequest) + +ListInsightsResponse = _reflection.GeneratedProtocolMessageType( + "ListInsightsResponse", + (_message.Message,), + { + "DESCRIPTOR": _LISTINSIGHTSRESPONSE, + "__module__": "google.cloud.recommender_v1beta1.proto.recommender_service_pb2", + "__doc__": """Response to the ``ListInsights`` method. + + + Attributes: + insights: + The set of insights for the ``parent`` resource. + next_page_token: + A token that can be used to request the next page of results. + This field is empty if there are no additional results. + """, + # @@protoc_insertion_point(class_scope:google.cloud.recommender.v1beta1.ListInsightsResponse) + }, +) +_sym_db.RegisterMessage(ListInsightsResponse) + +GetInsightRequest = _reflection.GeneratedProtocolMessageType( + "GetInsightRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETINSIGHTREQUEST, + "__module__": "google.cloud.recommender_v1beta1.proto.recommender_service_pb2", + "__doc__": """Request to the ``GetInsight`` method. + + + Attributes: + name: + Required. Name of the insight. + """, + # @@protoc_insertion_point(class_scope:google.cloud.recommender.v1beta1.GetInsightRequest) + }, +) +_sym_db.RegisterMessage(GetInsightRequest) + +MarkInsightAcceptedRequest = _reflection.GeneratedProtocolMessageType( + "MarkInsightAcceptedRequest", + (_message.Message,), + { + "StateMetadataEntry": _reflection.GeneratedProtocolMessageType( + "StateMetadataEntry", + (_message.Message,), + { + "DESCRIPTOR": _MARKINSIGHTACCEPTEDREQUEST_STATEMETADATAENTRY, + "__module__": "google.cloud.recommender_v1beta1.proto.recommender_service_pb2" + # @@protoc_insertion_point(class_scope:google.cloud.recommender.v1beta1.MarkInsightAcceptedRequest.StateMetadataEntry) + }, + ), + "DESCRIPTOR": _MARKINSIGHTACCEPTEDREQUEST, + "__module__": "google.cloud.recommender_v1beta1.proto.recommender_service_pb2", + "__doc__": """Request for the ``MarkInsightAccepted`` method. + + + Attributes: + name: + Required. Name of the insight. + state_metadata: + Optional. State properties user wish to include with this + state. Full replace of the current state_metadata. + etag: + Required. Fingerprint of the Insight. Provides optimistic + locking. + """, + # @@protoc_insertion_point(class_scope:google.cloud.recommender.v1beta1.MarkInsightAcceptedRequest) + }, +) +_sym_db.RegisterMessage(MarkInsightAcceptedRequest) +_sym_db.RegisterMessage(MarkInsightAcceptedRequest.StateMetadataEntry) + ListRecommendationsRequest = _reflection.GeneratedProtocolMessageType( "ListRecommendationsRequest", (_message.Message,), @@ -789,11 +1208,12 @@ state_metadata: State properties to include with this state. Overwrites any existing ``state_metadata``. Keys must match the regex ``/ - [2]_[a-z0-9_.-]{0,62}/``. Values must match the regex + [3]_[a-z0-9_.-]{0,62}/``. Values must match the regex ``/^[a-zA-Z0-9_./-]{0,255}/``. etag: Required. Fingerprint of the Recommendation. Provides - optimistic locking. + optimistic locking. .. [1] a-z0-9 .. [2] a-z0-9 .. + [3] a-z0-9 """, # @@protoc_insertion_point(class_scope:google.cloud.recommender.v1beta1.MarkRecommendationClaimedRequest) }, @@ -825,12 +1245,11 @@ state_metadata: State properties to include with this state. Overwrites any existing ``state_metadata``. Keys must match the regex ``/ - [3]_[a-z0-9_.-]{0,62}/``. Values must match the regex + [2]_[a-z0-9_.-]{0,62}/``. Values must match the regex ``/^[a-zA-Z0-9_./-]{0,255}/``. etag: Required. Fingerprint of the Recommendation. Provides - optimistic locking. .. [1] a-z0-9 .. [2] a-z0-9 .. - [3] a-z0-9 + optimistic locking. """, # @@protoc_insertion_point(class_scope:google.cloud.recommender.v1beta1.MarkRecommendationSucceededRequest) }, @@ -876,6 +1295,15 @@ DESCRIPTOR._options = None +_LISTINSIGHTSREQUEST.fields_by_name["parent"]._options = None +_LISTINSIGHTSREQUEST.fields_by_name["page_size"]._options = None +_LISTINSIGHTSREQUEST.fields_by_name["page_token"]._options = None +_LISTINSIGHTSREQUEST.fields_by_name["filter"]._options = None +_GETINSIGHTREQUEST.fields_by_name["name"]._options = None +_MARKINSIGHTACCEPTEDREQUEST_STATEMETADATAENTRY._options = None +_MARKINSIGHTACCEPTEDREQUEST.fields_by_name["name"]._options = None +_MARKINSIGHTACCEPTEDREQUEST.fields_by_name["state_metadata"]._options = None +_MARKINSIGHTACCEPTEDREQUEST.fields_by_name["etag"]._options = None _LISTRECOMMENDATIONSREQUEST.fields_by_name["parent"]._options = None _LISTRECOMMENDATIONSREQUEST.fields_by_name["page_size"]._options = None _LISTRECOMMENDATIONSREQUEST.fields_by_name["page_token"]._options = None @@ -895,66 +1323,81 @@ full_name="google.cloud.recommender.v1beta1.Recommender", file=DESCRIPTOR, index=0, - serialized_options=_b( - "\312A\032recommender.googleapis.com\322A.https://www.googleapis.com/auth/cloud-platform" - ), - serialized_start=1524, - serialized_end=2899, + serialized_options=b"\312A\032recommender.googleapis.com\322A.https://www.googleapis.com/auth/cloud-platform", + serialized_start=2197, + serialized_end=4221, methods=[ + _descriptor.MethodDescriptor( + name="ListInsights", + full_name="google.cloud.recommender.v1beta1.Recommender.ListInsights", + index=0, + containing_service=None, + input_type=_LISTINSIGHTSREQUEST, + output_type=_LISTINSIGHTSRESPONSE, + serialized_options=b"\202\323\344\223\002B\022@/v1beta1/{parent=projects/*/locations/*/insightTypes/*}/insights\332A\006parent", + ), + _descriptor.MethodDescriptor( + name="GetInsight", + full_name="google.cloud.recommender.v1beta1.Recommender.GetInsight", + index=1, + containing_service=None, + input_type=_GETINSIGHTREQUEST, + output_type=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_insight__pb2._INSIGHT, + serialized_options=b"\202\323\344\223\002B\022@/v1beta1/{name=projects/*/locations/*/insightTypes/*/insights/*}\332A\004name", + ), + _descriptor.MethodDescriptor( + name="MarkInsightAccepted", + full_name="google.cloud.recommender.v1beta1.Recommender.MarkInsightAccepted", + index=2, + containing_service=None, + input_type=_MARKINSIGHTACCEPTEDREQUEST, + output_type=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_insight__pb2._INSIGHT, + serialized_options=b'\202\323\344\223\002R"M/v1beta1/{name=projects/*/locations/*/insightTypes/*/insights/*}:markAccepted:\001*\332A\030name,state_metadata,etag', + ), _descriptor.MethodDescriptor( name="ListRecommendations", full_name="google.cloud.recommender.v1beta1.Recommender.ListRecommendations", - index=0, + index=3, containing_service=None, input_type=_LISTRECOMMENDATIONSREQUEST, output_type=_LISTRECOMMENDATIONSRESPONSE, - serialized_options=_b( - "\202\323\344\223\002I\022G/v1beta1/{parent=projects/*/locations/*/recommenders/*}/recommendations\332A\rparent,filter" - ), + serialized_options=b"\202\323\344\223\002I\022G/v1beta1/{parent=projects/*/locations/*/recommenders/*}/recommendations\332A\rparent,filter", ), _descriptor.MethodDescriptor( name="GetRecommendation", full_name="google.cloud.recommender.v1beta1.Recommender.GetRecommendation", - index=1, + index=4, containing_service=None, input_type=_GETRECOMMENDATIONREQUEST, output_type=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommendation__pb2._RECOMMENDATION, - serialized_options=_b( - "\202\323\344\223\002I\022G/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}\332A\004name" - ), + serialized_options=b"\202\323\344\223\002I\022G/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}\332A\004name", ), _descriptor.MethodDescriptor( name="MarkRecommendationClaimed", full_name="google.cloud.recommender.v1beta1.Recommender.MarkRecommendationClaimed", - index=2, + index=5, containing_service=None, input_type=_MARKRECOMMENDATIONCLAIMEDREQUEST, output_type=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommendation__pb2._RECOMMENDATION, - serialized_options=_b( - '\202\323\344\223\002X"S/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markClaimed:\001*\332A\030name,state_metadata,etag' - ), + serialized_options=b'\202\323\344\223\002X"S/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markClaimed:\001*\332A\030name,state_metadata,etag', ), _descriptor.MethodDescriptor( name="MarkRecommendationSucceeded", full_name="google.cloud.recommender.v1beta1.Recommender.MarkRecommendationSucceeded", - index=3, + index=6, containing_service=None, input_type=_MARKRECOMMENDATIONSUCCEEDEDREQUEST, output_type=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommendation__pb2._RECOMMENDATION, - serialized_options=_b( - '\202\323\344\223\002Z"U/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markSucceeded:\001*\332A\030name,state_metadata,etag' - ), + serialized_options=b'\202\323\344\223\002Z"U/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markSucceeded:\001*\332A\030name,state_metadata,etag', ), _descriptor.MethodDescriptor( name="MarkRecommendationFailed", full_name="google.cloud.recommender.v1beta1.Recommender.MarkRecommendationFailed", - index=4, + index=7, containing_service=None, input_type=_MARKRECOMMENDATIONFAILEDREQUEST, output_type=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommendation__pb2._RECOMMENDATION, - serialized_options=_b( - '\202\323\344\223\002W"R/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markFailed:\001*\332A\030name,state_metadata,etag' - ), + serialized_options=b'\202\323\344\223\002W"R/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markFailed:\001*\332A\030name,state_metadata,etag', ), ], ) diff --git a/google/cloud/recommender_v1beta1/proto/recommender_service_pb2_grpc.py b/google/cloud/recommender_v1beta1/proto/recommender_service_pb2_grpc.py index 6b72361..733edaf 100644 --- a/google/cloud/recommender_v1beta1/proto/recommender_service_pb2_grpc.py +++ b/google/cloud/recommender_v1beta1/proto/recommender_service_pb2_grpc.py @@ -1,4 +1,4 @@ -# Copyright 2020 Google LLC +# Copyright 2019 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,6 +16,9 @@ import grpc +from google.cloud.recommender_v1beta1.proto import ( + insight_pb2 as google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_insight__pb2, +) from google.cloud.recommender_v1beta1.proto import ( recommendation_pb2 as google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommendation__pb2, ) @@ -37,6 +40,21 @@ def __init__(self, channel): Args: channel: A grpc.Channel. """ + self.ListInsights = channel.unary_unary( + "/google.cloud.recommender.v1beta1.Recommender/ListInsights", + request_serializer=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommender__service__pb2.ListInsightsRequest.SerializeToString, + response_deserializer=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommender__service__pb2.ListInsightsResponse.FromString, + ) + self.GetInsight = channel.unary_unary( + "/google.cloud.recommender.v1beta1.Recommender/GetInsight", + request_serializer=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommender__service__pb2.GetInsightRequest.SerializeToString, + response_deserializer=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_insight__pb2.Insight.FromString, + ) + self.MarkInsightAccepted = channel.unary_unary( + "/google.cloud.recommender.v1beta1.Recommender/MarkInsightAccepted", + request_serializer=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommender__service__pb2.MarkInsightAcceptedRequest.SerializeToString, + response_deserializer=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_insight__pb2.Insight.FromString, + ) self.ListRecommendations = channel.unary_unary( "/google.cloud.recommender.v1beta1.Recommender/ListRecommendations", request_serializer=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommender__service__pb2.ListRecommendationsRequest.SerializeToString, @@ -71,6 +89,34 @@ class RecommenderServicer(object): based on analysis of user resources, configuration and monitoring metrics. """ + def ListInsights(self, request, context): + """Lists insights for a Cloud project. Requires the recommender.*.list IAM + permission for the specified insight type. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def GetInsight(self, request, context): + """Gets the requested insight. Requires the recommender.*.get IAM permission + for the specified insight type. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def MarkInsightAccepted(self, request, context): + """Marks the Insight State as Accepted. Users can use this method to + indicate to the Recommender API that they have applied some action based + on the insight. This stops the insight content from being updated. + + MarkInsightAccepted can be applied to insights in ACTIVE state. Requires + the recommender.*.update IAM permission for the specified insight. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + def ListRecommendations(self, request, context): """Lists recommendations for a Cloud project. Requires the recommender.*.list IAM permission for the specified recommender. @@ -140,6 +186,21 @@ def MarkRecommendationFailed(self, request, context): def add_RecommenderServicer_to_server(servicer, server): rpc_method_handlers = { + "ListInsights": grpc.unary_unary_rpc_method_handler( + servicer.ListInsights, + request_deserializer=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommender__service__pb2.ListInsightsRequest.FromString, + response_serializer=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommender__service__pb2.ListInsightsResponse.SerializeToString, + ), + "GetInsight": grpc.unary_unary_rpc_method_handler( + servicer.GetInsight, + request_deserializer=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommender__service__pb2.GetInsightRequest.FromString, + response_serializer=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_insight__pb2.Insight.SerializeToString, + ), + "MarkInsightAccepted": grpc.unary_unary_rpc_method_handler( + servicer.MarkInsightAccepted, + request_deserializer=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommender__service__pb2.MarkInsightAcceptedRequest.FromString, + response_serializer=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_insight__pb2.Insight.SerializeToString, + ), "ListRecommendations": grpc.unary_unary_rpc_method_handler( servicer.ListRecommendations, request_deserializer=google_dot_cloud_dot_recommender__v1beta1_dot_proto_dot_recommender__service__pb2.ListRecommendationsRequest.FromString, diff --git a/google/cloud/recommender_v1beta1/types.py b/google/cloud/recommender_v1beta1/types.py index 205bae4..3a85b6f 100644 --- a/google/cloud/recommender_v1beta1/types.py +++ b/google/cloud/recommender_v1beta1/types.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ from google.api_core.protobuf_helpers import get_messages +from google.cloud.recommender_v1beta1.proto import insight_pb2 from google.cloud.recommender_v1beta1.proto import recommendation_pb2 from google.cloud.recommender_v1beta1.proto import recommender_service_pb2 from google.protobuf import duration_pb2 @@ -30,7 +31,7 @@ _shared_modules = [duration_pb2, struct_pb2, timestamp_pb2, money_pb2] -_local_modules = [recommendation_pb2, recommender_service_pb2] +_local_modules = [insight_pb2, recommendation_pb2, recommender_service_pb2] names = [] diff --git a/noxfile.py b/noxfile.py index 8ac2d4b..00d00a4 100644 --- a/noxfile.py +++ b/noxfile.py @@ -42,7 +42,7 @@ def lint(session): session.run("flake8", "google", "tests") -@nox.session(python="3") +@nox.session(python="3.6") def blacken(session): """Run black. @@ -72,6 +72,7 @@ def default(session): session.run( "py.test", "--quiet", + "--cov=google.cloud.recommender", "--cov=google.cloud", "--cov=tests.unit", "--cov-append", diff --git a/synth.metadata b/synth.metadata index 02ad1dc..01e407a 100644 --- a/synth.metadata +++ b/synth.metadata @@ -1,11 +1,46 @@ { - "updateTime": "2020-02-05T00:09:38.363168Z", + "updateTime": "2020-03-14T00:25:36.917796Z", "sources": [ + { + "git": { + "name": ".", + "remote": "git@github.com:googleapis/python-recommender.git", + "sha": "b8f198ecb1d36afa16d9054653ebbb811e7dbd91" + } + }, + { + "git": { + "name": "googleapis", + "remote": "https://github.com/googleapis/googleapis.git", + "sha": "8386761d09819b665b6a6e1e6d6ff884bc8ff781", + "internalRef": "300843960" + } + }, { "template": { - "name": "python_split_library", + "name": "python_library", "origin": "synthtool.gcp", - "version": "2019.10.17" + "version": "2020.2.4" + } + } + ], + "destinations": [ + { + "client": { + "source": "googleapis", + "apiName": "recommender", + "apiVersion": "v1beta1", + "language": "python", + "generator": "bazel" + } + }, + { + "client": { + "source": "googleapis", + "apiName": "recommender", + "apiVersion": "v1", + "language": "python", + "generator": "bazel" } } ] diff --git a/synth.py b/synth.py index 7790539..2cf1995 100644 --- a/synth.py +++ b/synth.py @@ -47,6 +47,16 @@ flags=re.MULTILINE | re.DOTALL, ) +# Fix multiline path +s.replace( + "google/**/recommendation_pb2.py", + """projects/\[PROJECT_NUMBER\]/location + s/\[LOCATION\]/insightTypes/\[INSIGHT\_TYPE\_ID\]/insights/\[INSIGHT_ + ID\]""", + """``projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/insights/[INSIGHT_ID]``""" +) + + python.fix_pb2_headers() python.fix_pb2_grpc_headers() diff --git a/tests/unit/gapic/v1/test_recommender_client_v1.py b/tests/unit/gapic/v1/test_recommender_client_v1.py index 2822743..617fb6d 100644 --- a/tests/unit/gapic/v1/test_recommender_client_v1.py +++ b/tests/unit/gapic/v1/test_recommender_client_v1.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/v1beta1/test_recommender_client_v1beta1.py b/tests/unit/gapic/v1beta1/test_recommender_client_v1beta1.py index dafe315..8c84608 100644 --- a/tests/unit/gapic/v1beta1/test_recommender_client_v1beta1.py +++ b/tests/unit/gapic/v1beta1/test_recommender_client_v1beta1.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2019 Google LLC +# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import pytest from google.cloud import recommender_v1beta1 +from google.cloud.recommender_v1beta1.proto import insight_pb2 from google.cloud.recommender_v1beta1.proto import recommendation_pb2 from google.cloud.recommender_v1beta1.proto import recommender_service_pb2 @@ -61,6 +62,155 @@ class CustomException(Exception): class TestRecommenderClient(object): + def test_list_insights(self): + # Setup Expected Response + next_page_token = "" + insights_element = {} + insights = [insights_element] + expected_response = {"next_page_token": next_page_token, "insights": insights} + expected_response = recommender_service_pb2.ListInsightsResponse( + **expected_response + ) + + # Mock the API response + channel = ChannelStub(responses=[expected_response]) + patch = mock.patch("google.api_core.grpc_helpers.create_channel") + with patch as create_channel: + create_channel.return_value = channel + client = recommender_v1beta1.RecommenderClient() + + # Setup Request + parent = client.insight_type_path("[PROJECT]", "[LOCATION]", "[INSIGHT_TYPE]") + + paged_list_response = client.list_insights(parent) + resources = list(paged_list_response) + assert len(resources) == 1 + + assert expected_response.insights[0] == resources[0] + + assert len(channel.requests) == 1 + expected_request = recommender_service_pb2.ListInsightsRequest(parent=parent) + actual_request = channel.requests[0][1] + assert expected_request == actual_request + + def test_list_insights_exception(self): + channel = ChannelStub(responses=[CustomException()]) + patch = mock.patch("google.api_core.grpc_helpers.create_channel") + with patch as create_channel: + create_channel.return_value = channel + client = recommender_v1beta1.RecommenderClient() + + # Setup request + parent = client.insight_type_path("[PROJECT]", "[LOCATION]", "[INSIGHT_TYPE]") + + paged_list_response = client.list_insights(parent) + with pytest.raises(CustomException): + list(paged_list_response) + + def test_get_insight(self): + # Setup Expected Response + name_2 = "name2-1052831874" + description = "description-1724546052" + insight_subtype = "insightSubtype-1491142701" + etag = "etag3123477" + expected_response = { + "name": name_2, + "description": description, + "insight_subtype": insight_subtype, + "etag": etag, + } + expected_response = insight_pb2.Insight(**expected_response) + + # Mock the API response + channel = ChannelStub(responses=[expected_response]) + patch = mock.patch("google.api_core.grpc_helpers.create_channel") + with patch as create_channel: + create_channel.return_value = channel + client = recommender_v1beta1.RecommenderClient() + + # Setup Request + name = client.insight_path( + "[PROJECT]", "[LOCATION]", "[INSIGHT_TYPE]", "[INSIGHT]" + ) + + response = client.get_insight(name) + assert expected_response == response + + assert len(channel.requests) == 1 + expected_request = recommender_service_pb2.GetInsightRequest(name=name) + actual_request = channel.requests[0][1] + assert expected_request == actual_request + + def test_get_insight_exception(self): + # Mock the API response + channel = ChannelStub(responses=[CustomException()]) + patch = mock.patch("google.api_core.grpc_helpers.create_channel") + with patch as create_channel: + create_channel.return_value = channel + client = recommender_v1beta1.RecommenderClient() + + # Setup request + name = client.insight_path( + "[PROJECT]", "[LOCATION]", "[INSIGHT_TYPE]", "[INSIGHT]" + ) + + with pytest.raises(CustomException): + client.get_insight(name) + + def test_mark_insight_accepted(self): + # Setup Expected Response + name_2 = "name2-1052831874" + description = "description-1724546052" + insight_subtype = "insightSubtype-1491142701" + etag_2 = "etag2-1293302904" + expected_response = { + "name": name_2, + "description": description, + "insight_subtype": insight_subtype, + "etag": etag_2, + } + expected_response = insight_pb2.Insight(**expected_response) + + # Mock the API response + channel = ChannelStub(responses=[expected_response]) + patch = mock.patch("google.api_core.grpc_helpers.create_channel") + with patch as create_channel: + create_channel.return_value = channel + client = recommender_v1beta1.RecommenderClient() + + # Setup Request + name = client.insight_path( + "[PROJECT]", "[LOCATION]", "[INSIGHT_TYPE]", "[INSIGHT]" + ) + etag = "etag3123477" + + response = client.mark_insight_accepted(name, etag) + assert expected_response == response + + assert len(channel.requests) == 1 + expected_request = recommender_service_pb2.MarkInsightAcceptedRequest( + name=name, etag=etag + ) + actual_request = channel.requests[0][1] + assert expected_request == actual_request + + def test_mark_insight_accepted_exception(self): + # Mock the API response + channel = ChannelStub(responses=[CustomException()]) + patch = mock.patch("google.api_core.grpc_helpers.create_channel") + with patch as create_channel: + create_channel.return_value = channel + client = recommender_v1beta1.RecommenderClient() + + # Setup request + name = client.insight_path( + "[PROJECT]", "[LOCATION]", "[INSIGHT_TYPE]", "[INSIGHT]" + ) + etag = "etag3123477" + + with pytest.raises(CustomException): + client.mark_insight_accepted(name, etag) + def test_list_recommendations(self): # Setup Expected Response next_page_token = ""