grafeas 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +11 -0
  3. data/AUTHENTICATION.md +199 -0
  4. data/LICENSE +201 -0
  5. data/README.md +55 -25
  6. data/lib/grafeas.rb +151 -2
  7. data/lib/grafeas/v1.rb +155 -0
  8. data/lib/grafeas/v1/attestation_pb.rb +27 -0
  9. data/lib/grafeas/v1/build_pb.rb +23 -0
  10. data/lib/grafeas/v1/common_pb.rb +34 -0
  11. data/lib/grafeas/v1/credentials.rb +37 -0
  12. data/lib/grafeas/v1/cvss_pb.rb +67 -0
  13. data/lib/grafeas/v1/deployment_pb.rb +35 -0
  14. data/lib/grafeas/v1/discovery_pb.rb +40 -0
  15. data/lib/grafeas/v1/doc/google/protobuf/any.rb +131 -0
  16. data/lib/grafeas/v1/doc/google/protobuf/empty.rb +29 -0
  17. data/lib/grafeas/v1/doc/google/protobuf/field_mask.rb +222 -0
  18. data/lib/grafeas/v1/doc/google/protobuf/timestamp.rb +113 -0
  19. data/lib/grafeas/v1/doc/google/rpc/status.rb +87 -0
  20. data/lib/grafeas/v1/doc/grafeas/v1/attestation.rb +64 -0
  21. data/lib/grafeas/v1/doc/grafeas/v1/build.rb +44 -0
  22. data/lib/grafeas/v1/doc/grafeas/v1/common.rb +105 -0
  23. data/lib/grafeas/v1/doc/grafeas/v1/cvss.rb +104 -0
  24. data/lib/grafeas/v1/doc/grafeas/v1/deployment.rb +64 -0
  25. data/lib/grafeas/v1/doc/grafeas/v1/discovery.rb +76 -0
  26. data/lib/grafeas/v1/doc/grafeas/v1/grafeas.rb +322 -0
  27. data/lib/grafeas/v1/doc/grafeas/v1/image.rb +79 -0
  28. data/lib/grafeas/v1/doc/grafeas/v1/package.rb +125 -0
  29. data/lib/grafeas/v1/doc/grafeas/v1/provenance.rb +248 -0
  30. data/lib/grafeas/v1/doc/grafeas/v1/vulnerability.rb +214 -0
  31. data/lib/grafeas/v1/grafeas_client.rb +961 -0
  32. data/lib/grafeas/v1/grafeas_client_config.json +96 -0
  33. data/lib/grafeas/v1/grafeas_pb.rb +163 -0
  34. data/lib/grafeas/v1/grafeas_services_pb.rb +86 -0
  35. data/lib/grafeas/v1/image_pb.rb +36 -0
  36. data/lib/grafeas/v1/package_pb.rb +59 -0
  37. data/lib/grafeas/v1/provenance_pb.rb +116 -0
  38. data/lib/grafeas/v1/vulnerability_pb.rb +81 -0
  39. data/lib/grafeas/version.rb +16 -1
  40. metadata +111 -31
  41. data/.gitignore +0 -8
  42. data/.travis.yml +0 -5
  43. data/Gemfile +0 -6
  44. data/Gemfile.lock +0 -22
  45. data/LICENSE.txt +0 -21
  46. data/Rakefile +0 -10
  47. data/bin/console +0 -14
  48. data/bin/setup +0 -8
  49. data/grafeas.gemspec +0 -26
@@ -0,0 +1,214 @@
1
+ # Copyright 2019 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+
16
+ module Grafeas
17
+ module V1
18
+ # A security vulnerability that can be found in resources.
19
+ # @!attribute [rw] cvss_score
20
+ # @return [Float]
21
+ # The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10
22
+ # where 0 indicates low severity and 10 indicates high severity.
23
+ # @!attribute [rw] severity
24
+ # @return [Grafeas::V1::Severity]
25
+ # The note provider assigned severity of this vulnerability.
26
+ # @!attribute [rw] details
27
+ # @return [Array<Grafeas::V1::VulnerabilityNote::Detail>]
28
+ # Details of all known distros and packages affected by this vulnerability.
29
+ # @!attribute [rw] cvss_v3
30
+ # @return [Grafeas::V1::CVSSv3]
31
+ # The full description of the CVSSv3 for this vulnerability.
32
+ # @!attribute [rw] windows_details
33
+ # @return [Array<Grafeas::V1::VulnerabilityNote::WindowsDetail>]
34
+ # Windows details get their own format because the information format and
35
+ # model don't match a normal detail. Specifically Windows updates are done as
36
+ # patches, thus Windows vulnerabilities really are a missing package, rather
37
+ # than a package being at an incorrect version.
38
+ class VulnerabilityNote
39
+ # A detail for a distro and package affected by this vulnerability and its
40
+ # associated fix (if one is available).
41
+ # @!attribute [rw] severity_name
42
+ # @return [String]
43
+ # The distro assigned severity of this vulnerability.
44
+ # @!attribute [rw] description
45
+ # @return [String]
46
+ # A vendor-specific description of this vulnerability.
47
+ # @!attribute [rw] package_type
48
+ # @return [String]
49
+ # The type of package; whether native or non native (e.g., ruby gems,
50
+ # node.js packages, etc.).
51
+ # @!attribute [rw] affected_cpe_uri
52
+ # @return [String]
53
+ # Required. The [CPE URI](https://cpe.mitre.org/specification/) this
54
+ # vulnerability affects.
55
+ # @!attribute [rw] affected_package
56
+ # @return [String]
57
+ # Required. The package this vulnerability affects.
58
+ # @!attribute [rw] affected_version_start
59
+ # @return [Grafeas::V1::Version]
60
+ # The version number at the start of an interval in which this
61
+ # vulnerability exists. A vulnerability can affect a package between
62
+ # version numbers that are disjoint sets of intervals (example:
63
+ # [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be
64
+ # represented in its own Detail. If a specific affected version is provided
65
+ # by a vulnerability database, affected_version_start and
66
+ # affected_version_end will be the same in that Detail.
67
+ # @!attribute [rw] affected_version_end
68
+ # @return [Grafeas::V1::Version]
69
+ # The version number at the end of an interval in which this vulnerability
70
+ # exists. A vulnerability can affect a package between version numbers
71
+ # that are disjoint sets of intervals (example: [1.0.0-1.1.0],
72
+ # [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its
73
+ # own Detail. If a specific affected version is provided by a vulnerability
74
+ # database, affected_version_start and affected_version_end will be the
75
+ # same in that Detail.
76
+ # @!attribute [rw] fixed_cpe_uri
77
+ # @return [String]
78
+ # The distro recommended [CPE URI](https://cpe.mitre.org/specification/)
79
+ # to update to that contains a fix for this vulnerability. It is possible
80
+ # for this to be different from the affected_cpe_uri.
81
+ # @!attribute [rw] fixed_package
82
+ # @return [String]
83
+ # The distro recommended package to update to that contains a fix for this
84
+ # vulnerability. It is possible for this to be different from the
85
+ # affected_package.
86
+ # @!attribute [rw] fixed_version
87
+ # @return [Grafeas::V1::Version]
88
+ # The distro recommended version to update to that contains a
89
+ # fix for this vulnerability. Setting this to VersionKind.MAXIMUM means no
90
+ # such version is yet available.
91
+ # @!attribute [rw] is_obsolete
92
+ # @return [true, false]
93
+ # Whether this detail is obsolete. Occurrences are expected not to point to
94
+ # obsolete details.
95
+ class Detail; end
96
+
97
+ # @!attribute [rw] cpe_uri
98
+ # @return [String]
99
+ # Required. The [CPE URI](https://cpe.mitre.org/specification/) this
100
+ # vulnerability affects.
101
+ # @!attribute [rw] name
102
+ # @return [String]
103
+ # Required. The name of this vulnerability.
104
+ # @!attribute [rw] description
105
+ # @return [String]
106
+ # The description of this vulnerability.
107
+ # @!attribute [rw] fixing_kbs
108
+ # @return [Array<Grafeas::V1::VulnerabilityNote::WindowsDetail::KnowledgeBase>]
109
+ # Required. The names of the KBs which have hotfixes to mitigate this
110
+ # vulnerability. Note that there may be multiple hotfixes (and thus
111
+ # multiple KBs) that mitigate a given vulnerability. Currently any listed
112
+ # KBs presence is considered a fix.
113
+ class WindowsDetail
114
+ # @!attribute [rw] name
115
+ # @return [String]
116
+ # The KB name (generally of the form KB[0-9]+ (e.g., KB123456)).
117
+ # @!attribute [rw] url
118
+ # @return [String]
119
+ # A link to the KB in the [Windows update catalog]
120
+ # (https://www.catalog.update.microsoft.com/).
121
+ class KnowledgeBase; end
122
+ end
123
+ end
124
+
125
+ # An occurrence of a severity vulnerability on a resource.
126
+ # @!attribute [rw] type
127
+ # @return [String]
128
+ # The type of package; whether native or non native (e.g., ruby gems, node.js
129
+ # packages, etc.).
130
+ # @!attribute [rw] severity
131
+ # @return [Grafeas::V1::Severity]
132
+ # Output only. The note provider assigned severity of this vulnerability.
133
+ # @!attribute [rw] cvss_score
134
+ # @return [Float]
135
+ # Output only. The CVSS score of this vulnerability. CVSS score is on a
136
+ # scale of 0 - 10 where 0 indicates low severity and 10 indicates high
137
+ # severity.
138
+ # @!attribute [rw] package_issue
139
+ # @return [Array<Grafeas::V1::VulnerabilityOccurrence::PackageIssue>]
140
+ # Required. The set of affected locations and their fixes (if available)
141
+ # within the associated resource.
142
+ # @!attribute [rw] short_description
143
+ # @return [String]
144
+ # Output only. A one sentence description of this vulnerability.
145
+ # @!attribute [rw] long_description
146
+ # @return [String]
147
+ # Output only. A detailed description of this vulnerability.
148
+ # @!attribute [rw] related_urls
149
+ # @return [Array<Grafeas::V1::RelatedUrl>]
150
+ # Output only. URLs related to this vulnerability.
151
+ # @!attribute [rw] effective_severity
152
+ # @return [Grafeas::V1::Severity]
153
+ # The distro assigned severity for this vulnerability when it is available,
154
+ # and note provider assigned severity when distro has not yet assigned a
155
+ # severity for this vulnerability.
156
+ # @!attribute [rw] fix_available
157
+ # @return [true, false]
158
+ # Output only. Whether at least one of the affected packages has a fix
159
+ # available.
160
+ class VulnerabilityOccurrence
161
+ # A detail for a distro and package this vulnerability occurrence was found
162
+ # in and its associated fix (if one is available).
163
+ # @!attribute [rw] affected_cpe_uri
164
+ # @return [String]
165
+ # Required. The [CPE URI](https://cpe.mitre.org/specification/) this
166
+ # vulnerability was found in.
167
+ # @!attribute [rw] affected_package
168
+ # @return [String]
169
+ # Required. The package this vulnerability was found in.
170
+ # @!attribute [rw] affected_version
171
+ # @return [Grafeas::V1::Version]
172
+ # Required. The version of the package that is installed on the resource
173
+ # affected by this vulnerability.
174
+ # @!attribute [rw] fixed_cpe_uri
175
+ # @return [String]
176
+ # The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability
177
+ # was fixed in. It is possible for this to be different from the
178
+ # affected_cpe_uri.
179
+ # @!attribute [rw] fixed_package
180
+ # @return [String]
181
+ # The package this vulnerability was fixed in. It is possible for this to
182
+ # be different from the affected_package.
183
+ # @!attribute [rw] fixed_version
184
+ # @return [Grafeas::V1::Version]
185
+ # Required. The version of the package this vulnerability was fixed in.
186
+ # Setting this to VersionKind.MAXIMUM means no fix is yet available.
187
+ # @!attribute [rw] fix_available
188
+ # @return [true, false]
189
+ # Output only. Whether a fix is available for this package.
190
+ class PackageIssue; end
191
+ end
192
+
193
+ # Note provider assigned severity/impact ranking.
194
+ module Severity
195
+ # Unknown.
196
+ SEVERITY_UNSPECIFIED = 0
197
+
198
+ # Minimal severity.
199
+ MINIMAL = 1
200
+
201
+ # Low severity.
202
+ LOW = 2
203
+
204
+ # Medium severity.
205
+ MEDIUM = 3
206
+
207
+ # High severity.
208
+ HIGH = 4
209
+
210
+ # Critical severity.
211
+ CRITICAL = 5
212
+ end
213
+ end
214
+ end
@@ -0,0 +1,961 @@
1
+ # Copyright 2019 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ #
15
+ # EDITING INSTRUCTIONS
16
+ # This file was generated from the file
17
+ # https://github.com/googleapis/googleapis/blob/master/grafeas/v1/grafeas.proto,
18
+ # and updates to that file get reflected here through a refresh process.
19
+ # For the short term, the refresh process will only be runnable by Google
20
+ # engineers.
21
+
22
+
23
+ require "json"
24
+ require "pathname"
25
+
26
+ require "google/gax"
27
+
28
+ require "grafeas/v1/grafeas_pb"
29
+ require "grafeas/v1/credentials"
30
+ require "grafeas/version"
31
+
32
+ module Grafeas
33
+ module V1
34
+ # [Grafeas](https://grafeas.io) API.
35
+ #
36
+ # Retrieves analysis results of Cloud components such as Docker container
37
+ # images.
38
+ #
39
+ # Analysis results are stored as a series of occurrences. An `Occurrence`
40
+ # contains information about a specific analysis instance on a resource. An
41
+ # occurrence refers to a `Note`. A note contains details describing the
42
+ # analysis and is generally stored in a separate project, called a `Provider`.
43
+ # Multiple occurrences can refer to the same note.
44
+ #
45
+ # For example, an SSL vulnerability could affect multiple images. In this case,
46
+ # there would be one note for the vulnerability and an occurrence for each
47
+ # image with the vulnerability referring to that note.
48
+ #
49
+ # @!attribute [r] grafeas_stub
50
+ # @return [Grafeas::V1::GrafeasService::Stub]
51
+ class GrafeasClient
52
+ # @private
53
+ attr_reader :grafeas_stub
54
+
55
+ # The default address of the service.
56
+ SERVICE_ADDRESS = "containeranalysis.googleapis.com".freeze
57
+
58
+ # The default port of the service.
59
+ DEFAULT_SERVICE_PORT = 443
60
+
61
+ # The default set of gRPC interceptors.
62
+ GRPC_INTERCEPTORS = []
63
+
64
+ DEFAULT_TIMEOUT = 30
65
+
66
+ PAGE_DESCRIPTORS = {
67
+ "list_occurrences" => Google::Gax::PageDescriptor.new(
68
+ "page_token",
69
+ "next_page_token",
70
+ "occurrences"),
71
+ "list_notes" => Google::Gax::PageDescriptor.new(
72
+ "page_token",
73
+ "next_page_token",
74
+ "notes"),
75
+ "list_note_occurrences" => Google::Gax::PageDescriptor.new(
76
+ "page_token",
77
+ "next_page_token",
78
+ "occurrences")
79
+ }.freeze
80
+
81
+ private_constant :PAGE_DESCRIPTORS
82
+
83
+ # The scopes needed to make gRPC calls to all of the methods defined in
84
+ # this service.
85
+ ALL_SCOPES = [
86
+ "https://www.googleapis.com/auth/cloud-platform"
87
+ ].freeze
88
+
89
+
90
+ NOTE_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
91
+ "projects/{project}/notes/{note}"
92
+ )
93
+
94
+ private_constant :NOTE_PATH_TEMPLATE
95
+
96
+ OCCURRENCE_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
97
+ "projects/{project}/occurrences/{occurrence}"
98
+ )
99
+
100
+ private_constant :OCCURRENCE_PATH_TEMPLATE
101
+
102
+ PROJECT_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
103
+ "projects/{project}"
104
+ )
105
+
106
+ private_constant :PROJECT_PATH_TEMPLATE
107
+
108
+ # Returns a fully-qualified note resource name string.
109
+ # @param project [String]
110
+ # @param note [String]
111
+ # @return [String]
112
+ def self.note_path project, note
113
+ NOTE_PATH_TEMPLATE.render(
114
+ :"project" => project,
115
+ :"note" => note
116
+ )
117
+ end
118
+
119
+ # Returns a fully-qualified occurrence resource name string.
120
+ # @param project [String]
121
+ # @param occurrence [String]
122
+ # @return [String]
123
+ def self.occurrence_path project, occurrence
124
+ OCCURRENCE_PATH_TEMPLATE.render(
125
+ :"project" => project,
126
+ :"occurrence" => occurrence
127
+ )
128
+ end
129
+
130
+ # Returns a fully-qualified project resource name string.
131
+ # @param project [String]
132
+ # @return [String]
133
+ def self.project_path project
134
+ PROJECT_PATH_TEMPLATE.render(
135
+ :"project" => project
136
+ )
137
+ end
138
+
139
+ # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
140
+ # Provides the means for authenticating requests made by the client. This parameter can
141
+ # be many types.
142
+ # A `Google::Auth::Credentials` uses a the properties of its represented keyfile for
143
+ # authenticating requests made by this client.
144
+ # A `String` will be treated as the path to the keyfile to be used for the construction of
145
+ # credentials for this client.
146
+ # A `Hash` will be treated as the contents of a keyfile to be used for the construction of
147
+ # credentials for this client.
148
+ # A `GRPC::Core::Channel` will be used to make calls through.
149
+ # A `GRPC::Core::ChannelCredentials` for the setting up the RPC client. The channel credentials
150
+ # should already be composed with a `GRPC::Core::CallCredentials` object.
151
+ # A `Proc` will be used as an updater_proc for the Grpc channel. The proc transforms the
152
+ # metadata for requests, generally, to give OAuth credentials.
153
+ # @param scopes [Array<String>]
154
+ # The OAuth scopes for this service. This parameter is ignored if
155
+ # an updater_proc is supplied.
156
+ # @param client_config [Hash]
157
+ # A Hash for call options for each method. See
158
+ # Google::Gax#construct_settings for the structure of
159
+ # this data. Falls back to the default config if not specified
160
+ # or the specified config is missing data points.
161
+ # @param timeout [Numeric]
162
+ # The default timeout, in seconds, for calls made through this client.
163
+ # @param metadata [Hash]
164
+ # Default metadata to be sent with each request. This can be overridden on a per call basis.
165
+ # @param service_address [String]
166
+ # Override for the service hostname, or `nil` to leave as the default.
167
+ # @param service_port [Integer]
168
+ # Override for the service port, or `nil` to leave as the default.
169
+ # @param exception_transformer [Proc]
170
+ # An optional proc that intercepts any exceptions raised during an API call to inject
171
+ # custom error handling.
172
+ def initialize \
173
+ credentials: nil,
174
+ scopes: ALL_SCOPES,
175
+ client_config: {},
176
+ timeout: DEFAULT_TIMEOUT,
177
+ metadata: nil,
178
+ service_address: nil,
179
+ service_port: nil,
180
+ exception_transformer: nil,
181
+ lib_name: nil,
182
+ lib_version: ""
183
+ # These require statements are intentionally placed here to initialize
184
+ # the gRPC module only when it's required.
185
+ # See https://github.com/googleapis/toolkit/issues/446
186
+ require "google/gax/grpc"
187
+ require "grafeas/v1/grafeas_services_pb"
188
+
189
+ credentials ||= Grafeas::V1::Credentials.default
190
+
191
+ if credentials.is_a?(String) || credentials.is_a?(Hash)
192
+ updater_proc = Grafeas::V1::Credentials.new(credentials).updater_proc
193
+ end
194
+ if credentials.is_a?(GRPC::Core::Channel)
195
+ channel = credentials
196
+ end
197
+ if credentials.is_a?(GRPC::Core::ChannelCredentials)
198
+ chan_creds = credentials
199
+ end
200
+ if credentials.is_a?(Proc)
201
+ updater_proc = credentials
202
+ end
203
+ if credentials.is_a?(Google::Auth::Credentials)
204
+ updater_proc = credentials.updater_proc
205
+ end
206
+
207
+ package_version = Grafeas::VERSION
208
+
209
+ google_api_client = "gl-ruby/#{RUBY_VERSION}"
210
+ google_api_client << " #{lib_name}/#{lib_version}" if lib_name
211
+ google_api_client << " gapic/#{package_version} gax/#{Google::Gax::VERSION}"
212
+ google_api_client << " grpc/#{GRPC::VERSION}"
213
+ google_api_client.freeze
214
+
215
+ headers = { :"x-goog-api-client" => google_api_client }
216
+ headers.merge!(metadata) unless metadata.nil?
217
+ client_config_file = Pathname.new(__dir__).join(
218
+ "grafeas_client_config.json"
219
+ )
220
+ defaults = client_config_file.open do |f|
221
+ Google::Gax.construct_settings(
222
+ "grafeas.v1.Grafeas",
223
+ JSON.parse(f.read),
224
+ client_config,
225
+ Google::Gax::Grpc::STATUS_CODE_NAMES,
226
+ timeout,
227
+ page_descriptors: PAGE_DESCRIPTORS,
228
+ errors: Google::Gax::Grpc::API_ERRORS,
229
+ metadata: headers
230
+ )
231
+ end
232
+
233
+ # Allow overriding the service path/port in subclasses.
234
+ service_path = service_address || self.class::SERVICE_ADDRESS
235
+ port = service_port || self.class::DEFAULT_SERVICE_PORT
236
+ interceptors = self.class::GRPC_INTERCEPTORS
237
+ @grafeas_stub = Google::Gax::Grpc.create_stub(
238
+ service_path,
239
+ port,
240
+ chan_creds: chan_creds,
241
+ channel: channel,
242
+ updater_proc: updater_proc,
243
+ scopes: scopes,
244
+ interceptors: interceptors,
245
+ &Grafeas::V1::GrafeasService::Stub.method(:new)
246
+ )
247
+
248
+ @get_occurrence = Google::Gax.create_api_call(
249
+ @grafeas_stub.method(:get_occurrence),
250
+ defaults["get_occurrence"],
251
+ exception_transformer: exception_transformer,
252
+ params_extractor: proc do |request|
253
+ {'name' => request.name}
254
+ end
255
+ )
256
+ @list_occurrences = Google::Gax.create_api_call(
257
+ @grafeas_stub.method(:list_occurrences),
258
+ defaults["list_occurrences"],
259
+ exception_transformer: exception_transformer,
260
+ params_extractor: proc do |request|
261
+ {'parent' => request.parent}
262
+ end
263
+ )
264
+ @delete_occurrence = Google::Gax.create_api_call(
265
+ @grafeas_stub.method(:delete_occurrence),
266
+ defaults["delete_occurrence"],
267
+ exception_transformer: exception_transformer,
268
+ params_extractor: proc do |request|
269
+ {'name' => request.name}
270
+ end
271
+ )
272
+ @create_occurrence = Google::Gax.create_api_call(
273
+ @grafeas_stub.method(:create_occurrence),
274
+ defaults["create_occurrence"],
275
+ exception_transformer: exception_transformer,
276
+ params_extractor: proc do |request|
277
+ {'parent' => request.parent}
278
+ end
279
+ )
280
+ @batch_create_occurrences = Google::Gax.create_api_call(
281
+ @grafeas_stub.method(:batch_create_occurrences),
282
+ defaults["batch_create_occurrences"],
283
+ exception_transformer: exception_transformer,
284
+ params_extractor: proc do |request|
285
+ {'parent' => request.parent}
286
+ end
287
+ )
288
+ @update_occurrence = Google::Gax.create_api_call(
289
+ @grafeas_stub.method(:update_occurrence),
290
+ defaults["update_occurrence"],
291
+ exception_transformer: exception_transformer,
292
+ params_extractor: proc do |request|
293
+ {'name' => request.name}
294
+ end
295
+ )
296
+ @get_occurrence_note = Google::Gax.create_api_call(
297
+ @grafeas_stub.method(:get_occurrence_note),
298
+ defaults["get_occurrence_note"],
299
+ exception_transformer: exception_transformer,
300
+ params_extractor: proc do |request|
301
+ {'name' => request.name}
302
+ end
303
+ )
304
+ @get_note = Google::Gax.create_api_call(
305
+ @grafeas_stub.method(:get_note),
306
+ defaults["get_note"],
307
+ exception_transformer: exception_transformer,
308
+ params_extractor: proc do |request|
309
+ {'name' => request.name}
310
+ end
311
+ )
312
+ @list_notes = Google::Gax.create_api_call(
313
+ @grafeas_stub.method(:list_notes),
314
+ defaults["list_notes"],
315
+ exception_transformer: exception_transformer,
316
+ params_extractor: proc do |request|
317
+ {'parent' => request.parent}
318
+ end
319
+ )
320
+ @delete_note = Google::Gax.create_api_call(
321
+ @grafeas_stub.method(:delete_note),
322
+ defaults["delete_note"],
323
+ exception_transformer: exception_transformer,
324
+ params_extractor: proc do |request|
325
+ {'name' => request.name}
326
+ end
327
+ )
328
+ @create_note = Google::Gax.create_api_call(
329
+ @grafeas_stub.method(:create_note),
330
+ defaults["create_note"],
331
+ exception_transformer: exception_transformer,
332
+ params_extractor: proc do |request|
333
+ {'parent' => request.parent}
334
+ end
335
+ )
336
+ @batch_create_notes = Google::Gax.create_api_call(
337
+ @grafeas_stub.method(:batch_create_notes),
338
+ defaults["batch_create_notes"],
339
+ exception_transformer: exception_transformer,
340
+ params_extractor: proc do |request|
341
+ {'parent' => request.parent}
342
+ end
343
+ )
344
+ @update_note = Google::Gax.create_api_call(
345
+ @grafeas_stub.method(:update_note),
346
+ defaults["update_note"],
347
+ exception_transformer: exception_transformer,
348
+ params_extractor: proc do |request|
349
+ {'name' => request.name}
350
+ end
351
+ )
352
+ @list_note_occurrences = Google::Gax.create_api_call(
353
+ @grafeas_stub.method(:list_note_occurrences),
354
+ defaults["list_note_occurrences"],
355
+ exception_transformer: exception_transformer,
356
+ params_extractor: proc do |request|
357
+ {'name' => request.name}
358
+ end
359
+ )
360
+ end
361
+
362
+ # Service calls
363
+
364
+ # Gets the specified occurrence.
365
+ #
366
+ # @param name [String]
367
+ # The name of the occurrence in the form of
368
+ # `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
369
+ # @param options [Google::Gax::CallOptions]
370
+ # Overrides the default settings for this call, e.g, timeout,
371
+ # retries, etc.
372
+ # @yield [result, operation] Access the result along with the RPC operation
373
+ # @yieldparam result [Grafeas::V1::Occurrence]
374
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
375
+ # @return [Grafeas::V1::Occurrence]
376
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
377
+ # @example
378
+ # require "grafeas"
379
+ #
380
+ # grafeas_client = Grafeas.new(version: :v1)
381
+ # formatted_name = Grafeas::V1::GrafeasClient.occurrence_path("[PROJECT]", "[OCCURRENCE]")
382
+ # response = grafeas_client.get_occurrence(formatted_name)
383
+
384
+ def get_occurrence \
385
+ name,
386
+ options: nil,
387
+ &block
388
+ req = {
389
+ name: name
390
+ }.delete_if { |_, v| v.nil? }
391
+ req = Google::Gax::to_proto(req, Grafeas::V1::GetOccurrenceRequest)
392
+ @get_occurrence.call(req, options, &block)
393
+ end
394
+
395
+ # Lists occurrences for the specified project.
396
+ #
397
+ # @param parent [String]
398
+ # The name of the project to list occurrences for in the form of
399
+ # `projects/[PROJECT_ID]`.
400
+ # @param filter [String]
401
+ # The filter expression.
402
+ # @param page_size [Integer]
403
+ # The maximum number of resources contained in the underlying API
404
+ # response. If page streaming is performed per-resource, this
405
+ # parameter does not affect the return value. If page streaming is
406
+ # performed per-page, this determines the maximum number of
407
+ # resources in a page.
408
+ # @param options [Google::Gax::CallOptions]
409
+ # Overrides the default settings for this call, e.g, timeout,
410
+ # retries, etc.
411
+ # @yield [result, operation] Access the result along with the RPC operation
412
+ # @yieldparam result [Google::Gax::PagedEnumerable<Grafeas::V1::Occurrence>]
413
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
414
+ # @return [Google::Gax::PagedEnumerable<Grafeas::V1::Occurrence>]
415
+ # An enumerable of Grafeas::V1::Occurrence instances.
416
+ # See Google::Gax::PagedEnumerable documentation for other
417
+ # operations such as per-page iteration or access to the response
418
+ # object.
419
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
420
+ # @example
421
+ # require "grafeas"
422
+ #
423
+ # grafeas_client = Grafeas.new(version: :v1)
424
+ # formatted_parent = Grafeas::V1::GrafeasClient.project_path("[PROJECT]")
425
+ #
426
+ # # Iterate over all results.
427
+ # grafeas_client.list_occurrences(formatted_parent).each do |element|
428
+ # # Process element.
429
+ # end
430
+ #
431
+ # # Or iterate over results one page at a time.
432
+ # grafeas_client.list_occurrences(formatted_parent).each_page do |page|
433
+ # # Process each page at a time.
434
+ # page.each do |element|
435
+ # # Process element.
436
+ # end
437
+ # end
438
+
439
+ def list_occurrences \
440
+ parent,
441
+ filter: nil,
442
+ page_size: nil,
443
+ options: nil,
444
+ &block
445
+ req = {
446
+ parent: parent,
447
+ filter: filter,
448
+ page_size: page_size
449
+ }.delete_if { |_, v| v.nil? }
450
+ req = Google::Gax::to_proto(req, Grafeas::V1::ListOccurrencesRequest)
451
+ @list_occurrences.call(req, options, &block)
452
+ end
453
+
454
+ # Deletes the specified occurrence. For example, use this method to delete an
455
+ # occurrence when the occurrence is no longer applicable for the given
456
+ # resource.
457
+ #
458
+ # @param name [String]
459
+ # The name of the occurrence in the form of
460
+ # `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
461
+ # @param options [Google::Gax::CallOptions]
462
+ # Overrides the default settings for this call, e.g, timeout,
463
+ # retries, etc.
464
+ # @yield [result, operation] Access the result along with the RPC operation
465
+ # @yieldparam result []
466
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
467
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
468
+ # @example
469
+ # require "grafeas"
470
+ #
471
+ # grafeas_client = Grafeas.new(version: :v1)
472
+ # formatted_name = Grafeas::V1::GrafeasClient.occurrence_path("[PROJECT]", "[OCCURRENCE]")
473
+ # grafeas_client.delete_occurrence(formatted_name)
474
+
475
+ def delete_occurrence \
476
+ name,
477
+ options: nil,
478
+ &block
479
+ req = {
480
+ name: name
481
+ }.delete_if { |_, v| v.nil? }
482
+ req = Google::Gax::to_proto(req, Grafeas::V1::DeleteOccurrenceRequest)
483
+ @delete_occurrence.call(req, options, &block)
484
+ nil
485
+ end
486
+
487
+ # Creates a new occurrence.
488
+ #
489
+ # @param parent [String]
490
+ # The name of the project in the form of `projects/[PROJECT_ID]`, under which
491
+ # the occurrence is to be created.
492
+ # @param occurrence [Grafeas::V1::Occurrence | Hash]
493
+ # The occurrence to create.
494
+ # A hash of the same form as `Grafeas::V1::Occurrence`
495
+ # can also be provided.
496
+ # @param options [Google::Gax::CallOptions]
497
+ # Overrides the default settings for this call, e.g, timeout,
498
+ # retries, etc.
499
+ # @yield [result, operation] Access the result along with the RPC operation
500
+ # @yieldparam result [Grafeas::V1::Occurrence]
501
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
502
+ # @return [Grafeas::V1::Occurrence]
503
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
504
+ # @example
505
+ # require "grafeas"
506
+ #
507
+ # grafeas_client = Grafeas.new(version: :v1)
508
+ # formatted_parent = Grafeas::V1::GrafeasClient.project_path("[PROJECT]")
509
+ #
510
+ # # TODO: Initialize `occurrence`:
511
+ # occurrence = {}
512
+ # response = grafeas_client.create_occurrence(formatted_parent, occurrence)
513
+
514
+ def create_occurrence \
515
+ parent,
516
+ occurrence,
517
+ options: nil,
518
+ &block
519
+ req = {
520
+ parent: parent,
521
+ occurrence: occurrence
522
+ }.delete_if { |_, v| v.nil? }
523
+ req = Google::Gax::to_proto(req, Grafeas::V1::CreateOccurrenceRequest)
524
+ @create_occurrence.call(req, options, &block)
525
+ end
526
+
527
+ # Creates new occurrences in batch.
528
+ #
529
+ # @param parent [String]
530
+ # The name of the project in the form of `projects/[PROJECT_ID]`, under which
531
+ # the occurrences are to be created.
532
+ # @param occurrences [Array<Grafeas::V1::Occurrence | Hash>]
533
+ # The occurrences to create. Max allowed length is 1000.
534
+ # A hash of the same form as `Grafeas::V1::Occurrence`
535
+ # can also be provided.
536
+ # @param options [Google::Gax::CallOptions]
537
+ # Overrides the default settings for this call, e.g, timeout,
538
+ # retries, etc.
539
+ # @yield [result, operation] Access the result along with the RPC operation
540
+ # @yieldparam result [Grafeas::V1::BatchCreateOccurrencesResponse]
541
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
542
+ # @return [Grafeas::V1::BatchCreateOccurrencesResponse]
543
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
544
+ # @example
545
+ # require "grafeas"
546
+ #
547
+ # grafeas_client = Grafeas.new(version: :v1)
548
+ # formatted_parent = Grafeas::V1::GrafeasClient.project_path("[PROJECT]")
549
+ #
550
+ # # TODO: Initialize `occurrences`:
551
+ # occurrences = []
552
+ # response = grafeas_client.batch_create_occurrences(formatted_parent, occurrences)
553
+
554
+ def batch_create_occurrences \
555
+ parent,
556
+ occurrences,
557
+ options: nil,
558
+ &block
559
+ req = {
560
+ parent: parent,
561
+ occurrences: occurrences
562
+ }.delete_if { |_, v| v.nil? }
563
+ req = Google::Gax::to_proto(req, Grafeas::V1::BatchCreateOccurrencesRequest)
564
+ @batch_create_occurrences.call(req, options, &block)
565
+ end
566
+
567
+ # Updates the specified occurrence.
568
+ #
569
+ # @param name [String]
570
+ # The name of the occurrence in the form of
571
+ # `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
572
+ # @param occurrence [Grafeas::V1::Occurrence | Hash]
573
+ # The updated occurrence.
574
+ # A hash of the same form as `Grafeas::V1::Occurrence`
575
+ # can also be provided.
576
+ # @param update_mask [Google::Protobuf::FieldMask | Hash]
577
+ # The fields to update.
578
+ # A hash of the same form as `Google::Protobuf::FieldMask`
579
+ # can also be provided.
580
+ # @param options [Google::Gax::CallOptions]
581
+ # Overrides the default settings for this call, e.g, timeout,
582
+ # retries, etc.
583
+ # @yield [result, operation] Access the result along with the RPC operation
584
+ # @yieldparam result [Grafeas::V1::Occurrence]
585
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
586
+ # @return [Grafeas::V1::Occurrence]
587
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
588
+ # @example
589
+ # require "grafeas"
590
+ #
591
+ # grafeas_client = Grafeas.new(version: :v1)
592
+ # formatted_name = Grafeas::V1::GrafeasClient.occurrence_path("[PROJECT]", "[OCCURRENCE]")
593
+ #
594
+ # # TODO: Initialize `occurrence`:
595
+ # occurrence = {}
596
+ # response = grafeas_client.update_occurrence(formatted_name, occurrence)
597
+
598
+ def update_occurrence \
599
+ name,
600
+ occurrence,
601
+ update_mask: nil,
602
+ options: nil,
603
+ &block
604
+ req = {
605
+ name: name,
606
+ occurrence: occurrence,
607
+ update_mask: update_mask
608
+ }.delete_if { |_, v| v.nil? }
609
+ req = Google::Gax::to_proto(req, Grafeas::V1::UpdateOccurrenceRequest)
610
+ @update_occurrence.call(req, options, &block)
611
+ end
612
+
613
+ # Gets the note attached to the specified occurrence. Consumer projects can
614
+ # use this method to get a note that belongs to a provider project.
615
+ #
616
+ # @param name [String]
617
+ # The name of the occurrence in the form of
618
+ # `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
619
+ # @param options [Google::Gax::CallOptions]
620
+ # Overrides the default settings for this call, e.g, timeout,
621
+ # retries, etc.
622
+ # @yield [result, operation] Access the result along with the RPC operation
623
+ # @yieldparam result [Grafeas::V1::Note]
624
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
625
+ # @return [Grafeas::V1::Note]
626
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
627
+ # @example
628
+ # require "grafeas"
629
+ #
630
+ # grafeas_client = Grafeas.new(version: :v1)
631
+ # formatted_name = Grafeas::V1::GrafeasClient.occurrence_path("[PROJECT]", "[OCCURRENCE]")
632
+ # response = grafeas_client.get_occurrence_note(formatted_name)
633
+
634
+ def get_occurrence_note \
635
+ name,
636
+ options: nil,
637
+ &block
638
+ req = {
639
+ name: name
640
+ }.delete_if { |_, v| v.nil? }
641
+ req = Google::Gax::to_proto(req, Grafeas::V1::GetOccurrenceNoteRequest)
642
+ @get_occurrence_note.call(req, options, &block)
643
+ end
644
+
645
+ # Gets the specified note.
646
+ #
647
+ # @param name [String]
648
+ # The name of the note in the form of
649
+ # `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
650
+ # @param options [Google::Gax::CallOptions]
651
+ # Overrides the default settings for this call, e.g, timeout,
652
+ # retries, etc.
653
+ # @yield [result, operation] Access the result along with the RPC operation
654
+ # @yieldparam result [Grafeas::V1::Note]
655
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
656
+ # @return [Grafeas::V1::Note]
657
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
658
+ # @example
659
+ # require "grafeas"
660
+ #
661
+ # grafeas_client = Grafeas.new(version: :v1)
662
+ # formatted_name = Grafeas::V1::GrafeasClient.note_path("[PROJECT]", "[NOTE]")
663
+ # response = grafeas_client.get_note(formatted_name)
664
+
665
+ def get_note \
666
+ name,
667
+ options: nil,
668
+ &block
669
+ req = {
670
+ name: name
671
+ }.delete_if { |_, v| v.nil? }
672
+ req = Google::Gax::to_proto(req, Grafeas::V1::GetNoteRequest)
673
+ @get_note.call(req, options, &block)
674
+ end
675
+
676
+ # Lists notes for the specified project.
677
+ #
678
+ # @param parent [String]
679
+ # The name of the project to list notes for in the form of
680
+ # `projects/[PROJECT_ID]`.
681
+ # @param filter [String]
682
+ # The filter expression.
683
+ # @param page_size [Integer]
684
+ # The maximum number of resources contained in the underlying API
685
+ # response. If page streaming is performed per-resource, this
686
+ # parameter does not affect the return value. If page streaming is
687
+ # performed per-page, this determines the maximum number of
688
+ # resources in a page.
689
+ # @param options [Google::Gax::CallOptions]
690
+ # Overrides the default settings for this call, e.g, timeout,
691
+ # retries, etc.
692
+ # @yield [result, operation] Access the result along with the RPC operation
693
+ # @yieldparam result [Google::Gax::PagedEnumerable<Grafeas::V1::Note>]
694
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
695
+ # @return [Google::Gax::PagedEnumerable<Grafeas::V1::Note>]
696
+ # An enumerable of Grafeas::V1::Note instances.
697
+ # See Google::Gax::PagedEnumerable documentation for other
698
+ # operations such as per-page iteration or access to the response
699
+ # object.
700
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
701
+ # @example
702
+ # require "grafeas"
703
+ #
704
+ # grafeas_client = Grafeas.new(version: :v1)
705
+ # formatted_parent = Grafeas::V1::GrafeasClient.project_path("[PROJECT]")
706
+ #
707
+ # # Iterate over all results.
708
+ # grafeas_client.list_notes(formatted_parent).each do |element|
709
+ # # Process element.
710
+ # end
711
+ #
712
+ # # Or iterate over results one page at a time.
713
+ # grafeas_client.list_notes(formatted_parent).each_page do |page|
714
+ # # Process each page at a time.
715
+ # page.each do |element|
716
+ # # Process element.
717
+ # end
718
+ # end
719
+
720
+ def list_notes \
721
+ parent,
722
+ filter: nil,
723
+ page_size: nil,
724
+ options: nil,
725
+ &block
726
+ req = {
727
+ parent: parent,
728
+ filter: filter,
729
+ page_size: page_size
730
+ }.delete_if { |_, v| v.nil? }
731
+ req = Google::Gax::to_proto(req, Grafeas::V1::ListNotesRequest)
732
+ @list_notes.call(req, options, &block)
733
+ end
734
+
735
+ # Deletes the specified note.
736
+ #
737
+ # @param name [String]
738
+ # The name of the note in the form of
739
+ # `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
740
+ # @param options [Google::Gax::CallOptions]
741
+ # Overrides the default settings for this call, e.g, timeout,
742
+ # retries, etc.
743
+ # @yield [result, operation] Access the result along with the RPC operation
744
+ # @yieldparam result []
745
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
746
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
747
+ # @example
748
+ # require "grafeas"
749
+ #
750
+ # grafeas_client = Grafeas.new(version: :v1)
751
+ # formatted_name = Grafeas::V1::GrafeasClient.note_path("[PROJECT]", "[NOTE]")
752
+ # grafeas_client.delete_note(formatted_name)
753
+
754
+ def delete_note \
755
+ name,
756
+ options: nil,
757
+ &block
758
+ req = {
759
+ name: name
760
+ }.delete_if { |_, v| v.nil? }
761
+ req = Google::Gax::to_proto(req, Grafeas::V1::DeleteNoteRequest)
762
+ @delete_note.call(req, options, &block)
763
+ nil
764
+ end
765
+
766
+ # Creates a new note.
767
+ #
768
+ # @param parent [String]
769
+ # The name of the project in the form of `projects/[PROJECT_ID]`, under which
770
+ # the note is to be created.
771
+ # @param note_id [String]
772
+ # The ID to use for this note.
773
+ # @param note [Grafeas::V1::Note | Hash]
774
+ # The note to create.
775
+ # A hash of the same form as `Grafeas::V1::Note`
776
+ # can also be provided.
777
+ # @param options [Google::Gax::CallOptions]
778
+ # Overrides the default settings for this call, e.g, timeout,
779
+ # retries, etc.
780
+ # @yield [result, operation] Access the result along with the RPC operation
781
+ # @yieldparam result [Grafeas::V1::Note]
782
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
783
+ # @return [Grafeas::V1::Note]
784
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
785
+ # @example
786
+ # require "grafeas"
787
+ #
788
+ # grafeas_client = Grafeas.new(version: :v1)
789
+ # formatted_parent = Grafeas::V1::GrafeasClient.project_path("[PROJECT]")
790
+ #
791
+ # # TODO: Initialize `note_id`:
792
+ # note_id = ''
793
+ #
794
+ # # TODO: Initialize `note`:
795
+ # note = {}
796
+ # response = grafeas_client.create_note(formatted_parent, note_id, note)
797
+
798
+ def create_note \
799
+ parent,
800
+ note_id,
801
+ note,
802
+ options: nil,
803
+ &block
804
+ req = {
805
+ parent: parent,
806
+ note_id: note_id,
807
+ note: note
808
+ }.delete_if { |_, v| v.nil? }
809
+ req = Google::Gax::to_proto(req, Grafeas::V1::CreateNoteRequest)
810
+ @create_note.call(req, options, &block)
811
+ end
812
+
813
+ # Creates new notes in batch.
814
+ #
815
+ # @param parent [String]
816
+ # The name of the project in the form of `projects/[PROJECT_ID]`, under which
817
+ # the notes are to be created.
818
+ # @param notes [Hash{String => Grafeas::V1::Note | Hash}]
819
+ # The notes to create. Max allowed length is 1000.
820
+ # A hash of the same form as `Grafeas::V1::Note`
821
+ # can also be provided.
822
+ # @param options [Google::Gax::CallOptions]
823
+ # Overrides the default settings for this call, e.g, timeout,
824
+ # retries, etc.
825
+ # @yield [result, operation] Access the result along with the RPC operation
826
+ # @yieldparam result [Grafeas::V1::BatchCreateNotesResponse]
827
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
828
+ # @return [Grafeas::V1::BatchCreateNotesResponse]
829
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
830
+ # @example
831
+ # require "grafeas"
832
+ #
833
+ # grafeas_client = Grafeas.new(version: :v1)
834
+ # formatted_parent = Grafeas::V1::GrafeasClient.project_path("[PROJECT]")
835
+ #
836
+ # # TODO: Initialize `notes`:
837
+ # notes = {}
838
+ # response = grafeas_client.batch_create_notes(formatted_parent, notes)
839
+
840
+ def batch_create_notes \
841
+ parent,
842
+ notes,
843
+ options: nil,
844
+ &block
845
+ req = {
846
+ parent: parent,
847
+ notes: notes
848
+ }.delete_if { |_, v| v.nil? }
849
+ req = Google::Gax::to_proto(req, Grafeas::V1::BatchCreateNotesRequest)
850
+ @batch_create_notes.call(req, options, &block)
851
+ end
852
+
853
+ # Updates the specified note.
854
+ #
855
+ # @param name [String]
856
+ # The name of the note in the form of
857
+ # `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
858
+ # @param note [Grafeas::V1::Note | Hash]
859
+ # The updated note.
860
+ # A hash of the same form as `Grafeas::V1::Note`
861
+ # can also be provided.
862
+ # @param update_mask [Google::Protobuf::FieldMask | Hash]
863
+ # The fields to update.
864
+ # A hash of the same form as `Google::Protobuf::FieldMask`
865
+ # can also be provided.
866
+ # @param options [Google::Gax::CallOptions]
867
+ # Overrides the default settings for this call, e.g, timeout,
868
+ # retries, etc.
869
+ # @yield [result, operation] Access the result along with the RPC operation
870
+ # @yieldparam result [Grafeas::V1::Note]
871
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
872
+ # @return [Grafeas::V1::Note]
873
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
874
+ # @example
875
+ # require "grafeas"
876
+ #
877
+ # grafeas_client = Grafeas.new(version: :v1)
878
+ # formatted_name = Grafeas::V1::GrafeasClient.note_path("[PROJECT]", "[NOTE]")
879
+ #
880
+ # # TODO: Initialize `note`:
881
+ # note = {}
882
+ # response = grafeas_client.update_note(formatted_name, note)
883
+
884
+ def update_note \
885
+ name,
886
+ note,
887
+ update_mask: nil,
888
+ options: nil,
889
+ &block
890
+ req = {
891
+ name: name,
892
+ note: note,
893
+ update_mask: update_mask
894
+ }.delete_if { |_, v| v.nil? }
895
+ req = Google::Gax::to_proto(req, Grafeas::V1::UpdateNoteRequest)
896
+ @update_note.call(req, options, &block)
897
+ end
898
+
899
+ # Lists occurrences referencing the specified note. Provider projects can use
900
+ # this method to get all occurrences across consumer projects referencing the
901
+ # specified note.
902
+ #
903
+ # @param name [String]
904
+ # The name of the note to list occurrences for in the form of
905
+ # `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
906
+ # @param filter [String]
907
+ # The filter expression.
908
+ # @param page_size [Integer]
909
+ # The maximum number of resources contained in the underlying API
910
+ # response. If page streaming is performed per-resource, this
911
+ # parameter does not affect the return value. If page streaming is
912
+ # performed per-page, this determines the maximum number of
913
+ # resources in a page.
914
+ # @param options [Google::Gax::CallOptions]
915
+ # Overrides the default settings for this call, e.g, timeout,
916
+ # retries, etc.
917
+ # @yield [result, operation] Access the result along with the RPC operation
918
+ # @yieldparam result [Google::Gax::PagedEnumerable<Grafeas::V1::Occurrence>]
919
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
920
+ # @return [Google::Gax::PagedEnumerable<Grafeas::V1::Occurrence>]
921
+ # An enumerable of Grafeas::V1::Occurrence instances.
922
+ # See Google::Gax::PagedEnumerable documentation for other
923
+ # operations such as per-page iteration or access to the response
924
+ # object.
925
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
926
+ # @example
927
+ # require "grafeas"
928
+ #
929
+ # grafeas_client = Grafeas.new(version: :v1)
930
+ # formatted_name = Grafeas::V1::GrafeasClient.note_path("[PROJECT]", "[NOTE]")
931
+ #
932
+ # # Iterate over all results.
933
+ # grafeas_client.list_note_occurrences(formatted_name).each do |element|
934
+ # # Process element.
935
+ # end
936
+ #
937
+ # # Or iterate over results one page at a time.
938
+ # grafeas_client.list_note_occurrences(formatted_name).each_page do |page|
939
+ # # Process each page at a time.
940
+ # page.each do |element|
941
+ # # Process element.
942
+ # end
943
+ # end
944
+
945
+ def list_note_occurrences \
946
+ name,
947
+ filter: nil,
948
+ page_size: nil,
949
+ options: nil,
950
+ &block
951
+ req = {
952
+ name: name,
953
+ filter: filter,
954
+ page_size: page_size
955
+ }.delete_if { |_, v| v.nil? }
956
+ req = Google::Gax::to_proto(req, Grafeas::V1::ListNoteOccurrencesRequest)
957
+ @list_note_occurrences.call(req, options, &block)
958
+ end
959
+ end
960
+ end
961
+ end