Class: Google::Cloud::Asset::V1beta1::AssetServiceClient

Inherits:
Object
  • Object
show all
Defined in:
lib/google/cloud/asset/v1beta1/asset_service_client.rb,
lib/google/cloud/asset/v1beta1/helpers.rb

Overview

Asset service definition.

Constant Summary collapse

SERVICE_ADDRESS =

The default address of the service.

"cloudasset.googleapis.com".freeze
DEFAULT_SERVICE_PORT =

The default port of the service.

443
GRPC_INTERCEPTORS =

The default set of gRPC interceptors.

[]
DEFAULT_TIMEOUT =
30
ALL_SCOPES =

The scopes needed to make gRPC calls to all of the methods defined in this service.

[
  "https://www.googleapis.com/auth/cloud-platform"
].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(credentials: nil, scopes: ALL_SCOPES, client_config: {}, timeout: DEFAULT_TIMEOUT, metadata: nil, service_address: nil, service_port: nil, exception_transformer: nil, lib_name: nil, lib_version: "") ⇒ AssetServiceClient

Returns a new instance of AssetServiceClient.

Parameters:

  • credentials (Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc) (defaults to: nil)

    Provides the means for authenticating requests made by the client. This parameter can be many types. A Google::Auth::Credentials uses a the properties of its represented keyfile for authenticating requests made by this client. A String will be treated as the path to the keyfile to be used for the construction of credentials for this client. A Hash will be treated as the contents of a keyfile to be used for the construction of credentials for this client. A GRPC::Core::Channel will be used to make calls through. A GRPC::Core::ChannelCredentials for the setting up the RPC client. The channel credentials should already be composed with a GRPC::Core::CallCredentials object. A Proc will be used as an updater_proc for the Grpc channel. The proc transforms the metadata for requests, generally, to give OAuth credentials.

  • scopes (Array<String>) (defaults to: ALL_SCOPES)

    The OAuth scopes for this service. This parameter is ignored if an updater_proc is supplied.

  • client_config (Hash) (defaults to: {})

    A Hash for call options for each method. See Google::Gax#construct_settings for the structure of this data. Falls back to the default config if not specified or the specified config is missing data points.

  • timeout (Numeric) (defaults to: DEFAULT_TIMEOUT)

    The default timeout, in seconds, for calls made through this client.

  • metadata (Hash) (defaults to: nil)

    Default metadata to be sent with each request. This can be overridden on a per call basis.

  • service_address (String) (defaults to: nil)

    Override for the service hostname, or nil to leave as the default.

  • service_port (Integer) (defaults to: nil)

    Override for the service port, or nil to leave as the default.

  • exception_transformer (Proc) (defaults to: nil)

    An optional proc that intercepts any exceptions raised during an API call to inject custom error handling.



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
# File 'lib/google/cloud/asset/v1beta1/asset_service_client.rb', line 117

def initialize \
    credentials: nil,
    scopes: ALL_SCOPES,
    client_config: {},
    timeout: DEFAULT_TIMEOUT,
    metadata: nil,
    service_address: nil,
    service_port: nil,
    exception_transformer: nil,
    lib_name: nil,
    lib_version: ""
  # These require statements are intentionally placed here to initialize
  # the gRPC module only when it's required.
  # See https://github.com/googleapis/toolkit/issues/446
  require "google/gax/grpc"
  require "google/cloud/asset/v1beta1/asset_service_services_pb"

  credentials ||= Google::Cloud::Asset::V1beta1::Credentials.default

  @operations_client = OperationsClient.new(
    credentials: credentials,
    scopes: scopes,
    client_config: client_config,
    timeout: timeout,
    lib_name: lib_name,
    service_address: service_address,
    service_port: service_port,
    lib_version: lib_version,
    metadata: ,
  )

  if credentials.is_a?(String) || credentials.is_a?(Hash)
    updater_proc = Google::Cloud::Asset::V1beta1::Credentials.new(credentials).updater_proc
  end
  if credentials.is_a?(GRPC::Core::Channel)
    channel = credentials
  end
  if credentials.is_a?(GRPC::Core::ChannelCredentials)
    chan_creds = credentials
  end
  if credentials.is_a?(Proc)
    updater_proc = credentials
  end
  if credentials.is_a?(Google::Auth::Credentials)
    updater_proc = credentials.updater_proc
  end

  package_version = Google::Cloud::Asset::VERSION

  google_api_client = "gl-ruby/#{RUBY_VERSION}"
  google_api_client << " #{lib_name}/#{lib_version}" if lib_name
  google_api_client << " gapic/#{package_version} gax/#{Google::Gax::VERSION}"
  google_api_client << " grpc/#{GRPC::VERSION}"
  google_api_client.freeze

  headers = { :"x-goog-api-client" => google_api_client }
  headers.merge!() unless .nil?
  client_config_file = Pathname.new(__dir__).join(
    "asset_service_client_config.json"
  )
  defaults = client_config_file.open do |f|
    Google::Gax.construct_settings(
      "google.cloud.asset.v1beta1.AssetService",
      JSON.parse(f.read),
      client_config,
      Google::Gax::Grpc::STATUS_CODE_NAMES,
      timeout,
      errors: Google::Gax::Grpc::API_ERRORS,
      metadata: headers
    )
  end

  # Allow overriding the service path/port in subclasses.
  service_path = service_address || self.class::SERVICE_ADDRESS
  port = service_port || self.class::DEFAULT_SERVICE_PORT
  interceptors = self.class::GRPC_INTERCEPTORS
  @asset_service_stub = Google::Gax::Grpc.create_stub(
    service_path,
    port,
    chan_creds: chan_creds,
    channel: channel,
    updater_proc: updater_proc,
    scopes: scopes,
    interceptors: interceptors,
    &Google::Cloud::Asset::V1beta1::AssetService::Stub.method(:new)
  )

  @export_assets = Google::Gax.create_api_call(
    @asset_service_stub.method(:export_assets),
    defaults["export_assets"],
    exception_transformer: exception_transformer,
    params_extractor: proc do |request|
      {'parent' => request.parent}
    end
  )
  @batch_get_assets_history = Google::Gax.create_api_call(
    @asset_service_stub.method(:batch_get_assets_history),
    defaults["batch_get_assets_history"],
    exception_transformer: exception_transformer,
    params_extractor: proc do |request|
      {'parent' => request.parent}
    end
  )
end

Class Method Details

.project_path(project) ⇒ String

Returns a fully-qualified project resource name string.

Parameters:

  • project (String)

Returns:

  • (String)


78
79
80
81
82
# File 'lib/google/cloud/asset/v1beta1/asset_service_client.rb', line 78

def self.project_path project
  PROJECT_PATH_TEMPLATE.render(
    :"project" => project
  )
end

Instance Method Details

#batch_get_assets_history(parent, content_type, read_time_window, asset_names: nil, options: nil) {|result, operation| ... } ⇒ Google::Cloud::Asset::V1beta1::BatchGetAssetsHistoryResponse

Batch gets the update history of assets that overlap a time window. For RESOURCE content, this API outputs history with asset in both non-delete or deleted status. For IAM_POLICY content, this API outputs history when the asset and its attached IAM POLICY both exist. This can create gaps in the output history.

Examples:

require "google/cloud/asset"

asset_client = Google::Cloud::Asset.new(version: :v1beta1)
formatted_parent = Google::Cloud::Asset::V1beta1::AssetServiceClient.project_path("[PROJECT]")

# TODO: Initialize `content_type`:
content_type = :CONTENT_TYPE_UNSPECIFIED

# TODO: Initialize `read_time_window`:
read_time_window = {}
response = asset_client.batch_get_assets_history(formatted_parent, content_type, read_time_window)

Parameters:

  • parent (String)

    Required. The relative name of the root asset. It can only be an organization number (such as "organizations/123"), a project ID (such as "projects/my-project-id")", or a project number (such as "projects/12345").

  • content_type (Google::Cloud::Asset::V1beta1::ContentType)

    Required. The content type.

  • read_time_window (Google::Cloud::Asset::V1beta1::TimeWindow | Hash)

    Optional. The time window for the asset history. Both start_time and end_time are optional and if set, it must be after 2018-10-02 UTC. If end_time is not set, it is default to current timestamp. If start_time is not set, the snapshot of the assets at end_time will be returned. The returned results contain all temporal assets whose time window overlap with read_time_window. A hash of the same form as Google::Cloud::Asset::V1beta1::TimeWindow can also be provided.

  • asset_names (Array<String>) (defaults to: nil)

    A list of the full names of the assets. For example: //compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1. See Resource Names for more info.

    The request becomes a no-op if the asset name list is empty, and the max size of the asset name list is 100 in one request.

  • options (Google::Gax::CallOptions) (defaults to: nil)

    Overrides the default settings for this call, e.g, timeout, retries, etc.

Yields:

  • (result, operation)

    Access the result along with the RPC operation

Yield Parameters:

Returns:

Raises:

  • (Google::Gax::GaxError)

    if the RPC is aborted.



375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
# File 'lib/google/cloud/asset/v1beta1/asset_service_client.rb', line 375

def batch_get_assets_history \
    parent,
    content_type,
    read_time_window,
    asset_names: nil,
    options: nil,
    &block
  req = {
    parent: parent,
    content_type: content_type,
    read_time_window: read_time_window,
    asset_names: asset_names
  }.delete_if { |_, v| v.nil? }
  req = Google::Gax::to_proto(req, Google::Cloud::Asset::V1beta1::BatchGetAssetsHistoryRequest)
  @batch_get_assets_history.call(req, options, &block)
end

#export_assets(parent, output_config, read_time: nil, asset_types: nil, content_type: nil, options: nil) ⇒ Google::Gax::Operation

Exports assets with time and resource types to a given Cloud Storage location. The output format is newline-delimited JSON. This API implements the Longrunning::Operation API allowing you to keep track of the export.

Examples:

require "google/cloud/asset"

asset_client = Google::Cloud::Asset.new(version: :v1beta1)
formatted_parent = Google::Cloud::Asset::V1beta1::AssetServiceClient.project_path("[PROJECT]")

# TODO: Initialize `output_config`:
output_config = {}

# Register a callback during the method call.
operation = asset_client.export_assets(formatted_parent, output_config) do |op|
  raise op.results.message if op.error?
  op_results = op.results
  # Process the results.

   = op.
  # Process the metadata.
end

# Or use the return value to register a callback.
operation.on_done do |op|
  raise op.results.message if op.error?
  op_results = op.results
  # Process the results.

   = op.
  # Process the metadata.
end

# Manually reload the operation.
operation.reload!

# Or block until the operation completes, triggering callbacks on
# completion.
operation.wait_until_done!

Parameters:

  • parent (String)

    Required. The relative name of the root asset. This can only be an organization number (such as "organizations/123"), a project ID (such as "projects/my-project-id"), a project number (such as "projects/12345"), or a folder number (such as "folders/123").

  • output_config (Google::Cloud::Asset::V1beta1::OutputConfig | Hash)

    Required. Output configuration indicating where the results will be output to. All results will be in newline delimited JSON format. A hash of the same form as Google::Cloud::Asset::V1beta1::OutputConfig can also be provided.

  • read_time (Google::Protobuf::Timestamp | Hash) (defaults to: nil)

    Timestamp to take an asset snapshot. This can only be set to a timestamp between 2018-10-02 UTC (inclusive) and the current time. If not specified, the current time will be used. Due to delays in resource data collection and indexing, there is a volatile window during which running the same query may get different results. A hash of the same form as Google::Protobuf::Timestamp can also be provided.

  • asset_types (Array<String>) (defaults to: nil)

    A list of asset types of which to take a snapshot for. For example: "google.compute.Disk". If specified, only matching assets will be returned. See Introduction to Cloud Asset Inventory for all supported asset types.

  • content_type (Google::Cloud::Asset::V1beta1::ContentType) (defaults to: nil)

    Asset content type. If not specified, no content but the asset name will be returned.

  • options (Google::Gax::CallOptions) (defaults to: nil)

    Overrides the default settings for this call, e.g, timeout, retries, etc.

Returns:

  • (Google::Gax::Operation)

Raises:

  • (Google::Gax::GaxError)

    if the RPC is aborted.



298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
# File 'lib/google/cloud/asset/v1beta1/asset_service_client.rb', line 298

def export_assets \
    parent,
    output_config,
    read_time: nil,
    asset_types: nil,
    content_type: nil,
    options: nil
  req = {
    parent: parent,
    output_config: output_config,
    read_time: read_time,
    asset_types: asset_types,
    content_type: content_type
  }.delete_if { |_, v| v.nil? }
  req = Google::Gax::to_proto(req, Google::Cloud::Asset::V1beta1::ExportAssetsRequest)
  operation = Google::Gax::Operation.new(
    @export_assets.call(req, options),
    @operations_client,
    Google::Cloud::Asset::V1beta1::ExportAssetsResponse,
    Google::Cloud::Asset::V1beta1::ExportAssetsRequest,
    call_options: options
  )
  operation.on_done { |operation| yield(operation) } if block_given?
  operation
end

#project_path(project) ⇒ String

Alias for Google::Cloud::Asset::V1beta1::AssetServiceClient.project_path.

Parameters:

  • project (String)

Returns:

  • (String)


24
25
26
# File 'lib/google/cloud/asset/v1beta1/helpers.rb', line 24

def project_path project
  self.class.project_path project
end