aws-sdk-interconnect 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1807 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ require 'seahorse/client/plugins/content_length'
11
+ require 'aws-sdk-core/plugins/credentials_configuration'
12
+ require 'aws-sdk-core/plugins/logging'
13
+ require 'aws-sdk-core/plugins/param_converter'
14
+ require 'aws-sdk-core/plugins/param_validator'
15
+ require 'aws-sdk-core/plugins/user_agent'
16
+ require 'aws-sdk-core/plugins/helpful_socket_errors'
17
+ require 'aws-sdk-core/plugins/retry_errors'
18
+ require 'aws-sdk-core/plugins/global_configuration'
19
+ require 'aws-sdk-core/plugins/regional_endpoint'
20
+ require 'aws-sdk-core/plugins/endpoint_discovery'
21
+ require 'aws-sdk-core/plugins/endpoint_pattern'
22
+ require 'aws-sdk-core/plugins/response_paging'
23
+ require 'aws-sdk-core/plugins/stub_responses'
24
+ require 'aws-sdk-core/plugins/idempotency_token'
25
+ require 'aws-sdk-core/plugins/invocation_id'
26
+ require 'aws-sdk-core/plugins/jsonvalue_converter'
27
+ require 'aws-sdk-core/plugins/client_metrics_plugin'
28
+ require 'aws-sdk-core/plugins/client_metrics_send_plugin'
29
+ require 'aws-sdk-core/plugins/transfer_encoding'
30
+ require 'aws-sdk-core/plugins/http_checksum'
31
+ require 'aws-sdk-core/plugins/checksum_algorithm'
32
+ require 'aws-sdk-core/plugins/request_compression'
33
+ require 'aws-sdk-core/plugins/defaults_mode'
34
+ require 'aws-sdk-core/plugins/recursion_detection'
35
+ require 'aws-sdk-core/plugins/telemetry'
36
+ require 'aws-sdk-core/plugins/sign'
37
+ require 'aws-sdk-core/plugins/protocols/json_rpc'
38
+
39
+ module Aws::Interconnect
40
+ # An API client for Interconnect. To construct a client, you need to configure a `:region` and `:credentials`.
41
+ #
42
+ # client = Aws::Interconnect::Client.new(
43
+ # region: region_name,
44
+ # credentials: credentials,
45
+ # # ...
46
+ # )
47
+ #
48
+ # For details on configuring region and credentials see
49
+ # the [developer guide](/sdk-for-ruby/v3/developer-guide/setup-config.html).
50
+ #
51
+ # See {#initialize} for a full list of supported configuration options.
52
+ class Client < Seahorse::Client::Base
53
+
54
+ include Aws::ClientStubs
55
+
56
+ @identifier = :interconnect
57
+
58
+ set_api(ClientApi::API)
59
+
60
+ add_plugin(Seahorse::Client::Plugins::ContentLength)
61
+ add_plugin(Aws::Plugins::CredentialsConfiguration)
62
+ add_plugin(Aws::Plugins::Logging)
63
+ add_plugin(Aws::Plugins::ParamConverter)
64
+ add_plugin(Aws::Plugins::ParamValidator)
65
+ add_plugin(Aws::Plugins::UserAgent)
66
+ add_plugin(Aws::Plugins::HelpfulSocketErrors)
67
+ add_plugin(Aws::Plugins::RetryErrors)
68
+ add_plugin(Aws::Plugins::GlobalConfiguration)
69
+ add_plugin(Aws::Plugins::RegionalEndpoint)
70
+ add_plugin(Aws::Plugins::EndpointDiscovery)
71
+ add_plugin(Aws::Plugins::EndpointPattern)
72
+ add_plugin(Aws::Plugins::ResponsePaging)
73
+ add_plugin(Aws::Plugins::StubResponses)
74
+ add_plugin(Aws::Plugins::IdempotencyToken)
75
+ add_plugin(Aws::Plugins::InvocationId)
76
+ add_plugin(Aws::Plugins::JsonvalueConverter)
77
+ add_plugin(Aws::Plugins::ClientMetricsPlugin)
78
+ add_plugin(Aws::Plugins::ClientMetricsSendPlugin)
79
+ add_plugin(Aws::Plugins::TransferEncoding)
80
+ add_plugin(Aws::Plugins::HttpChecksum)
81
+ add_plugin(Aws::Plugins::ChecksumAlgorithm)
82
+ add_plugin(Aws::Plugins::RequestCompression)
83
+ add_plugin(Aws::Plugins::DefaultsMode)
84
+ add_plugin(Aws::Plugins::RecursionDetection)
85
+ add_plugin(Aws::Plugins::Telemetry)
86
+ add_plugin(Aws::Plugins::Sign)
87
+ add_plugin(Aws::Plugins::Protocols::JsonRpc)
88
+ add_plugin(Aws::Interconnect::Plugins::Endpoints)
89
+
90
+ # @overload initialize(options)
91
+ # @param [Hash] options
92
+ #
93
+ # @option options [Array<Seahorse::Client::Plugin>] :plugins ([]])
94
+ # A list of plugins to apply to the client. Each plugin is either a
95
+ # class name or an instance of a plugin class.
96
+ #
97
+ # @option options [required, Aws::CredentialProvider] :credentials
98
+ # Your AWS credentials used for authentication. This can be any class that includes and implements
99
+ # `Aws::CredentialProvider`, or instance of any one of the following classes:
100
+ #
101
+ # * `Aws::Credentials` - Used for configuring static, non-refreshing
102
+ # credentials.
103
+ #
104
+ # * `Aws::SharedCredentials` - Used for loading static credentials from a
105
+ # shared file, such as `~/.aws/config`.
106
+ #
107
+ # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role.
108
+ #
109
+ # * `Aws::AssumeRoleWebIdentityCredentials` - Used when you need to
110
+ # assume a role after providing credentials via the web.
111
+ #
112
+ # * `Aws::SSOCredentials` - Used for loading credentials from AWS SSO using an
113
+ # access token generated from `aws login`.
114
+ #
115
+ # * `Aws::ProcessCredentials` - Used for loading credentials from a
116
+ # process that outputs to stdout.
117
+ #
118
+ # * `Aws::InstanceProfileCredentials` - Used for loading credentials
119
+ # from an EC2 IMDS on an EC2 instance.
120
+ #
121
+ # * `Aws::ECSCredentials` - Used for loading credentials from
122
+ # instances running in ECS.
123
+ #
124
+ # * `Aws::CognitoIdentityCredentials` - Used for loading credentials
125
+ # from the Cognito Identity service.
126
+ #
127
+ # When `:credentials` are not configured directly, the following locations will be searched for credentials:
128
+ #
129
+ # * `Aws.config[:credentials]`
130
+ #
131
+ # * The `:access_key_id`, `:secret_access_key`, `:session_token`, and
132
+ # `:account_id` options.
133
+ #
134
+ # * `ENV['AWS_ACCESS_KEY_ID']`, `ENV['AWS_SECRET_ACCESS_KEY']`,
135
+ # `ENV['AWS_SESSION_TOKEN']`, and `ENV['AWS_ACCOUNT_ID']`.
136
+ #
137
+ # * `~/.aws/credentials`
138
+ #
139
+ # * `~/.aws/config`
140
+ #
141
+ # * EC2/ECS IMDS instance profile - When used by default, the timeouts are very aggressive.
142
+ # Construct and pass an instance of `Aws::InstanceProfileCredentials` or `Aws::ECSCredentials` to
143
+ # enable retries and extended timeouts. Instance profile credential fetching can be disabled by
144
+ # setting `ENV['AWS_EC2_METADATA_DISABLED']` to `true`.
145
+ #
146
+ # @option options [required, String] :region
147
+ # The AWS region to connect to. The configured `:region` is
148
+ # used to determine the service `:endpoint`. When not passed,
149
+ # a default `:region` is searched for in the following locations:
150
+ #
151
+ # * `Aws.config[:region]`
152
+ # * `ENV['AWS_REGION']`
153
+ # * `ENV['AMAZON_REGION']`
154
+ # * `ENV['AWS_DEFAULT_REGION']`
155
+ # * `~/.aws/credentials`
156
+ # * `~/.aws/config`
157
+ #
158
+ # @option options [String] :access_key_id
159
+ #
160
+ # @option options [String] :account_id
161
+ #
162
+ # @option options [Boolean] :active_endpoint_cache (false)
163
+ # When set to `true`, a thread polling for endpoints will be running in
164
+ # the background every 60 secs (default). Defaults to `false`.
165
+ #
166
+ # @option options [Boolean] :adaptive_retry_wait_to_fill (true)
167
+ # Used only in `adaptive` retry mode. When true, the request will sleep
168
+ # until there is sufficent client side capacity to retry the request.
169
+ # When false, the request will raise a `RetryCapacityNotAvailableError` and will
170
+ # not retry instead of sleeping.
171
+ #
172
+ # @option options [Array<String>] :auth_scheme_preference
173
+ # A list of preferred authentication schemes to use when making a request. Supported values are:
174
+ # `sigv4`, `sigv4a`, `httpBearerAuth`, and `noAuth`. When set using `ENV['AWS_AUTH_SCHEME_PREFERENCE']` or in
175
+ # shared config as `auth_scheme_preference`, the value should be a comma-separated list.
176
+ #
177
+ # @option options [Boolean] :client_side_monitoring (false)
178
+ # When `true`, client-side metrics will be collected for all API requests from
179
+ # this client.
180
+ #
181
+ # @option options [String] :client_side_monitoring_client_id ("")
182
+ # Allows you to provide an identifier for this client which will be attached to
183
+ # all generated client side metrics. Defaults to an empty string.
184
+ #
185
+ # @option options [String] :client_side_monitoring_host ("127.0.0.1")
186
+ # Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client
187
+ # side monitoring agent is running on, where client metrics will be published via UDP.
188
+ #
189
+ # @option options [Integer] :client_side_monitoring_port (31000)
190
+ # Required for publishing client metrics. The port that the client side monitoring
191
+ # agent is running on, where client metrics will be published via UDP.
192
+ #
193
+ # @option options [Aws::ClientSideMonitoring::Publisher] :client_side_monitoring_publisher (Aws::ClientSideMonitoring::Publisher)
194
+ # Allows you to provide a custom client-side monitoring publisher class. By default,
195
+ # will use the Client Side Monitoring Agent Publisher.
196
+ #
197
+ # @option options [Boolean] :convert_params (true)
198
+ # When `true`, an attempt is made to coerce request parameters into
199
+ # the required types.
200
+ #
201
+ # @option options [Boolean] :correct_clock_skew (true)
202
+ # Used only in `standard` and adaptive retry modes. Specifies whether to apply
203
+ # a clock skew correction and retry requests with skewed client clocks.
204
+ #
205
+ # @option options [String] :defaults_mode ("legacy")
206
+ # See {Aws::DefaultsModeConfiguration} for a list of the
207
+ # accepted modes and the configuration defaults that are included.
208
+ #
209
+ # @option options [Boolean] :disable_host_prefix_injection (false)
210
+ # When `true`, the SDK will not prepend the modeled host prefix to the endpoint.
211
+ #
212
+ # @option options [Boolean] :disable_request_compression (false)
213
+ # When set to 'true' the request body will not be compressed
214
+ # for supported operations.
215
+ #
216
+ # @option options [String, URI::HTTPS, URI::HTTP] :endpoint
217
+ # Normally you should not configure the `:endpoint` option
218
+ # directly. This is normally constructed from the `:region`
219
+ # option. Configuring `:endpoint` is normally reserved for
220
+ # connecting to test or custom endpoints. The endpoint should
221
+ # be a URI formatted like:
222
+ #
223
+ # 'http://example.com'
224
+ # 'https://example.com'
225
+ # 'http://example.com:123'
226
+ #
227
+ # @option options [Integer] :endpoint_cache_max_entries (1000)
228
+ # Used for the maximum size limit of the LRU cache storing endpoints data
229
+ # for endpoint discovery enabled operations. Defaults to 1000.
230
+ #
231
+ # @option options [Integer] :endpoint_cache_max_threads (10)
232
+ # Used for the maximum threads in use for polling endpoints to be cached, defaults to 10.
233
+ #
234
+ # @option options [Integer] :endpoint_cache_poll_interval (60)
235
+ # When :endpoint_discovery and :active_endpoint_cache is enabled,
236
+ # Use this option to config the time interval in seconds for making
237
+ # requests fetching endpoints information. Defaults to 60 sec.
238
+ #
239
+ # @option options [Boolean] :endpoint_discovery (false)
240
+ # When set to `true`, endpoint discovery will be enabled for operations when available.
241
+ #
242
+ # @option options [Boolean] :ignore_configured_endpoint_urls
243
+ # Setting to true disables use of endpoint URLs provided via environment
244
+ # variables and the shared configuration file.
245
+ #
246
+ # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default)
247
+ # The log formatter.
248
+ #
249
+ # @option options [Symbol] :log_level (:info)
250
+ # The log level to send messages to the `:logger` at.
251
+ #
252
+ # @option options [Logger] :logger
253
+ # The Logger instance to send log messages to. If this option
254
+ # is not set, logging will be disabled.
255
+ #
256
+ # @option options [Integer] :max_attempts (3)
257
+ # An integer representing the maximum number attempts that will be made for
258
+ # a single request, including the initial attempt. For example,
259
+ # setting this value to 5 will result in a request being retried up to
260
+ # 4 times. Used in `standard` and `adaptive` retry modes.
261
+ #
262
+ # @option options [String] :profile ("default")
263
+ # Used when loading credentials from the shared credentials file at `HOME/.aws/credentials`.
264
+ # When not specified, 'default' is used.
265
+ #
266
+ # @option options [String] :request_checksum_calculation ("when_supported")
267
+ # Determines when a checksum will be calculated for request payloads. Values are:
268
+ #
269
+ # * `when_supported` - (default) When set, a checksum will be
270
+ # calculated for all request payloads of operations modeled with the
271
+ # `httpChecksum` trait where `requestChecksumRequired` is `true` and/or a
272
+ # `requestAlgorithmMember` is modeled.
273
+ # * `when_required` - When set, a checksum will only be calculated for
274
+ # request payloads of operations modeled with the `httpChecksum` trait where
275
+ # `requestChecksumRequired` is `true` or where a `requestAlgorithmMember`
276
+ # is modeled and supplied.
277
+ #
278
+ # @option options [Integer] :request_min_compression_size_bytes (10240)
279
+ # The minimum size in bytes that triggers compression for request
280
+ # bodies. The value must be non-negative integer value between 0
281
+ # and 10485780 bytes inclusive.
282
+ #
283
+ # @option options [String] :response_checksum_validation ("when_supported")
284
+ # Determines when checksum validation will be performed on response payloads. Values are:
285
+ #
286
+ # * `when_supported` - (default) When set, checksum validation is performed on all
287
+ # response payloads of operations modeled with the `httpChecksum` trait where
288
+ # `responseAlgorithms` is modeled, except when no modeled checksum algorithms
289
+ # are supported.
290
+ # * `when_required` - When set, checksum validation is not performed on
291
+ # response payloads of operations unless the checksum algorithm is supported and
292
+ # the `requestValidationModeMember` member is set to `ENABLED`.
293
+ #
294
+ # @option options [Proc] :retry_backoff
295
+ # A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay.
296
+ # This option is only used in the `legacy` retry mode.
297
+ #
298
+ # @option options [Float] :retry_base_delay (0.3)
299
+ # The base delay in seconds used by the default backoff function. This option
300
+ # is only used in the `legacy` retry mode.
301
+ #
302
+ # @option options [Symbol] :retry_jitter (:none)
303
+ # A delay randomiser function used by the default backoff function.
304
+ # Some predefined functions can be referenced by name - :none, :equal, :full,
305
+ # otherwise a Proc that takes and returns a number. This option is only used
306
+ # in the `legacy` retry mode.
307
+ #
308
+ # @see https://www.awsarchitectureblog.com/2015/03/backoff.html
309
+ #
310
+ # @option options [Integer] :retry_limit (3)
311
+ # The maximum number of times to retry failed requests. Only
312
+ # ~ 500 level server errors and certain ~ 400 level client errors
313
+ # are retried. Generally, these are throttling errors, data
314
+ # checksum errors, networking errors, timeout errors, auth errors,
315
+ # endpoint discovery, and errors from expired credentials.
316
+ # This option is only used in the `legacy` retry mode.
317
+ #
318
+ # @option options [Integer] :retry_max_delay (0)
319
+ # The maximum number of seconds to delay between retries (0 for no limit)
320
+ # used by the default backoff function. This option is only used in the
321
+ # `legacy` retry mode.
322
+ #
323
+ # @option options [String] :retry_mode ("legacy")
324
+ # Specifies which retry algorithm to use. Values are:
325
+ #
326
+ # * `legacy` - The pre-existing retry behavior. This is default value if
327
+ # no retry mode is provided.
328
+ #
329
+ # * `standard` - A standardized set of retry rules across the AWS SDKs.
330
+ # This includes support for retry quotas, which limit the number of
331
+ # unsuccessful retries a client can make.
332
+ #
333
+ # * `adaptive` - An experimental retry mode that includes all the
334
+ # functionality of `standard` mode along with automatic client side
335
+ # throttling. This is a provisional mode that may change behavior
336
+ # in the future.
337
+ #
338
+ # @option options [String] :sdk_ua_app_id
339
+ # A unique and opaque application ID that is appended to the
340
+ # User-Agent header as app/sdk_ua_app_id. It should have a
341
+ # maximum length of 50. This variable is sourced from environment
342
+ # variable AWS_SDK_UA_APP_ID or the shared config profile attribute sdk_ua_app_id.
343
+ #
344
+ # @option options [String] :secret_access_key
345
+ #
346
+ # @option options [String] :session_token
347
+ #
348
+ # @option options [Array] :sigv4a_signing_region_set
349
+ # A list of regions that should be signed with SigV4a signing. When
350
+ # not passed, a default `:sigv4a_signing_region_set` is searched for
351
+ # in the following locations:
352
+ #
353
+ # * `Aws.config[:sigv4a_signing_region_set]`
354
+ # * `ENV['AWS_SIGV4A_SIGNING_REGION_SET']`
355
+ # * `~/.aws/config`
356
+ #
357
+ # @option options [Boolean] :simple_json (false)
358
+ # Disables request parameter conversion, validation, and formatting.
359
+ # Also disables response data type conversions. The request parameters
360
+ # hash must be formatted exactly as the API expects.This option is useful
361
+ # when you want to ensure the highest level of performance by avoiding
362
+ # overhead of walking request parameters and response data structures.
363
+ #
364
+ # @option options [Boolean] :stub_responses (false)
365
+ # Causes the client to return stubbed responses. By default
366
+ # fake responses are generated and returned. You can specify
367
+ # the response data to return or errors to raise by calling
368
+ # {ClientStubs#stub_responses}. See {ClientStubs} for more information.
369
+ #
370
+ # ** Please note ** When response stubbing is enabled, no HTTP
371
+ # requests are made, and retries are disabled.
372
+ #
373
+ # @option options [Aws::Telemetry::TelemetryProviderBase] :telemetry_provider (Aws::Telemetry::NoOpTelemetryProvider)
374
+ # Allows you to provide a telemetry provider, which is used to
375
+ # emit telemetry data. By default, uses `NoOpTelemetryProvider` which
376
+ # will not record or emit any telemetry data. The SDK supports the
377
+ # following telemetry providers:
378
+ #
379
+ # * OpenTelemetry (OTel) - To use the OTel provider, install and require the
380
+ # `opentelemetry-sdk` gem and then, pass in an instance of a
381
+ # `Aws::Telemetry::OTelProvider` for telemetry provider.
382
+ #
383
+ # @option options [Aws::TokenProvider] :token_provider
384
+ # Your Bearer token used for authentication. This can be any class that includes and implements
385
+ # `Aws::TokenProvider`, or instance of any one of the following classes:
386
+ #
387
+ # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing
388
+ # tokens.
389
+ #
390
+ # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an
391
+ # access token generated from `aws login`.
392
+ #
393
+ # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain`
394
+ # will be used to search for tokens configured for your profile in shared configuration files.
395
+ #
396
+ # @option options [Boolean] :use_dualstack_endpoint
397
+ # When set to `true`, dualstack enabled endpoints (with `.aws` TLD)
398
+ # will be used if available.
399
+ #
400
+ # @option options [Boolean] :use_fips_endpoint
401
+ # When set to `true`, fips compatible endpoints will be used if available.
402
+ # When a `fips` region is used, the region is normalized and this config
403
+ # is set to `true`.
404
+ #
405
+ # @option options [Boolean] :validate_params (true)
406
+ # When `true`, request parameters are validated before
407
+ # sending the request.
408
+ #
409
+ # @option options [Aws::Interconnect::EndpointProvider] :endpoint_provider
410
+ # The endpoint provider used to resolve endpoints. Any object that responds to
411
+ # `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to
412
+ # `Aws::Interconnect::EndpointParameters`.
413
+ #
414
+ # @option options [Float] :http_continue_timeout (1)
415
+ # The number of seconds to wait for a 100-continue response before sending the
416
+ # request body. This option has no effect unless the request has "Expect"
417
+ # header set to "100-continue". Defaults to `nil` which disables this
418
+ # behaviour. This value can safely be set per request on the session.
419
+ #
420
+ # @option options [Float] :http_idle_timeout (5)
421
+ # The number of seconds a connection is allowed to sit idle before it
422
+ # is considered stale. Stale connections are closed and removed from the
423
+ # pool before making a request.
424
+ #
425
+ # @option options [Float] :http_open_timeout (15)
426
+ # The default number of seconds to wait for response data.
427
+ # This value can safely be set per-request on the session.
428
+ #
429
+ # @option options [URI::HTTP,String] :http_proxy
430
+ # A proxy to send requests through. Formatted like 'http://proxy.com:123'.
431
+ #
432
+ # @option options [Float] :http_read_timeout (60)
433
+ # The default number of seconds to wait for response data.
434
+ # This value can safely be set per-request on the session.
435
+ #
436
+ # @option options [Boolean] :http_wire_trace (false)
437
+ # When `true`, HTTP debug output will be sent to the `:logger`.
438
+ #
439
+ # @option options [Proc] :on_chunk_received
440
+ # When a Proc object is provided, it will be used as callback when each chunk
441
+ # of the response body is received. It provides three arguments: the chunk,
442
+ # the number of bytes received, and the total number of
443
+ # bytes in the response (or nil if the server did not send a `content-length`).
444
+ #
445
+ # @option options [Proc] :on_chunk_sent
446
+ # When a Proc object is provided, it will be used as callback when each chunk
447
+ # of the request body is sent. It provides three arguments: the chunk,
448
+ # the number of bytes read from the body, and the total number of
449
+ # bytes in the body.
450
+ #
451
+ # @option options [Boolean] :raise_response_errors (true)
452
+ # When `true`, response errors are raised.
453
+ #
454
+ # @option options [String] :ssl_ca_bundle
455
+ # Full path to the SSL certificate authority bundle file that should be used when
456
+ # verifying peer certificates. If you do not pass `:ssl_ca_bundle` or
457
+ # `:ssl_ca_directory` the the system default will be used if available.
458
+ #
459
+ # @option options [String] :ssl_ca_directory
460
+ # Full path of the directory that contains the unbundled SSL certificate
461
+ # authority files for verifying peer certificates. If you do
462
+ # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the system
463
+ # default will be used if available.
464
+ #
465
+ # @option options [String] :ssl_ca_store
466
+ # Sets the X509::Store to verify peer certificate.
467
+ #
468
+ # @option options [OpenSSL::X509::Certificate] :ssl_cert
469
+ # Sets a client certificate when creating http connections.
470
+ #
471
+ # @option options [OpenSSL::PKey] :ssl_key
472
+ # Sets a client key when creating http connections.
473
+ #
474
+ # @option options [Float] :ssl_timeout
475
+ # Sets the SSL timeout in seconds
476
+ #
477
+ # @option options [Boolean] :ssl_verify_peer (true)
478
+ # When `true`, SSL peer certificates are verified when establishing a connection.
479
+ #
480
+ def initialize(*args)
481
+ super
482
+ end
483
+
484
+ # @!group API Operations
485
+
486
+ # Accepts a connection proposal which was generated at a supported
487
+ # partner's portal.
488
+ #
489
+ # The proposal contains the Environment and bandwidth that were chosen
490
+ # on the partner's portal and cannot be modified.
491
+ #
492
+ # Upon accepting the proposal a connection will be made between the AWS
493
+ # network as accessed via the selected Attach Point and the network
494
+ # previously selected network on the partner's portal.
495
+ #
496
+ # @option params [required, Types::AttachPoint] :attach_point
497
+ # The Attach Point to which the connection should be associated.
498
+ #
499
+ # @option params [required, String] :activation_key
500
+ # An Activation Key that was generated on a supported partner's portal.
501
+ # This key captures the desired parameters from the initial creation
502
+ # request.
503
+ #
504
+ # The details of this request can be described using with
505
+ # DescribeConnectionProposal.
506
+ #
507
+ # @option params [String] :description
508
+ # A description to distinguish this Connection.
509
+ #
510
+ # @option params [Hash<String,String>] :tags
511
+ # The tags to associate with the resulting Connection.
512
+ #
513
+ # @option params [String] :client_token
514
+ # Idempotency token used for the request.
515
+ #
516
+ # **A suitable default value is auto-generated.** You should normally
517
+ # not need to pass this option.**
518
+ #
519
+ # @return [Types::AcceptConnectionProposalResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
520
+ #
521
+ # * {Types::AcceptConnectionProposalResponse#connection #connection} => Types::Connection
522
+ #
523
+ #
524
+ # @example Example: Accept Connection Proposal
525
+ #
526
+ # resp = client.accept_connection_proposal({
527
+ # activation_key: "<Activation Key Data>",
528
+ # attach_point: {
529
+ # direct_connect_gateway: "90392BE3-219C-47FD-BBA5-03DF76D2542A",
530
+ # },
531
+ # })
532
+ #
533
+ # resp.to_h outputs the following:
534
+ # {
535
+ # connection: {
536
+ # type: "Multicloud",
537
+ # activation_key: "<Activation Key Data>",
538
+ # arn: "arn:aws:interconnect:us-east-1:000000000000:connection/mcc-abc12345",
539
+ # attach_point: {
540
+ # direct_connect_gateway: "90392BE3-219C-47FD-BBA5-03DF76D2542A",
541
+ # },
542
+ # bandwidth: "1Gbps",
543
+ # description: "My MultiCloud Connection",
544
+ # environment_id: "mce-aws-acme-1",
545
+ # id: "mcc-abc12345",
546
+ # location: "acme-east",
547
+ # owner_account: "000000000000",
548
+ # provider: {
549
+ # cloud_service_provider: "acme",
550
+ # },
551
+ # shared_id: "B0615F4D-E588-47AD-9D04-1449EAA61C91",
552
+ # state: "pending",
553
+ # },
554
+ # }
555
+ #
556
+ # @example Request syntax with placeholder values
557
+ #
558
+ # resp = client.accept_connection_proposal({
559
+ # attach_point: { # required
560
+ # direct_connect_gateway: "DirectConnectGatewayAttachPoint",
561
+ # arn: "AmazonResourceName",
562
+ # },
563
+ # activation_key: "ActivationKey", # required
564
+ # description: "ConnectionDescription",
565
+ # tags: {
566
+ # "TagKey" => "TagValue",
567
+ # },
568
+ # client_token: "String",
569
+ # })
570
+ #
571
+ # @example Response structure
572
+ #
573
+ # resp.connection.id #=> String
574
+ # resp.connection.arn #=> String
575
+ # resp.connection.description #=> String
576
+ # resp.connection.bandwidth #=> String
577
+ # resp.connection.attach_point.direct_connect_gateway #=> String
578
+ # resp.connection.attach_point.arn #=> String
579
+ # resp.connection.environment_id #=> String
580
+ # resp.connection.provider.cloud_service_provider #=> String
581
+ # resp.connection.provider.last_mile_provider #=> String
582
+ # resp.connection.location #=> String
583
+ # resp.connection.type #=> String
584
+ # resp.connection.state #=> String, one of "available", "requested", "pending", "down", "deleting", "deleted", "failed", "updating"
585
+ # resp.connection.shared_id #=> String
586
+ # resp.connection.billing_tier #=> Integer
587
+ # resp.connection.owner_account #=> String
588
+ # resp.connection.activation_key #=> String
589
+ # resp.connection.tags #=> Hash
590
+ # resp.connection.tags["TagKey"] #=> String
591
+ #
592
+ # @see http://docs.aws.amazon.com/goto/WebAPI/interconnect-2022-07-26/AcceptConnectionProposal AWS API Documentation
593
+ #
594
+ # @overload accept_connection_proposal(params = {})
595
+ # @param [Hash] params ({})
596
+ def accept_connection_proposal(params = {}, options = {})
597
+ req = build_request(:accept_connection_proposal, params)
598
+ req.send_request(options)
599
+ end
600
+
601
+ # Initiates the process to create a Connection across the specified
602
+ # Environment.
603
+ #
604
+ # The Environment dictates the specified partner and location to which
605
+ # the other end of the connection should attach. You can see a list of
606
+ # the available Environments by calling ListEnvironments
607
+ #
608
+ # The Attach Point specifies where within the AWS Network your
609
+ # connection will logically connect.
610
+ #
611
+ # After a successful call to this method, the resulting Connection will
612
+ # return an Activation Key which will need to be brought to the specific
613
+ # partner's portal to confirm the Connection on both sides. (See
614
+ # Environment$activationPageUrl for a direct link to the partner
615
+ # portal).
616
+ #
617
+ # @option params [String] :description
618
+ # A description to distinguish this Connection.
619
+ #
620
+ # @option params [required, String] :bandwidth
621
+ # The desired bandwidth of the requested Connection
622
+ #
623
+ # @option params [required, Types::AttachPoint] :attach_point
624
+ # The Attach Point to which the connection should be associated."
625
+ #
626
+ # @option params [required, String] :environment_id
627
+ # The identifier of the Environment across which this Connection should
628
+ # be created.
629
+ #
630
+ # The available Environment objects can be determined using
631
+ # ListEnvironments.
632
+ #
633
+ # @option params [Types::RemoteAccountIdentifier] :remote_account
634
+ # Account and/or principal identifying information that can be verified
635
+ # by the partner of this specific Environment.
636
+ #
637
+ # @option params [Hash<String,String>] :tags
638
+ # The tag to associate with the resulting Connection.
639
+ #
640
+ # @option params [String] :client_token
641
+ # Idempotency token used for the request.
642
+ #
643
+ # **A suitable default value is auto-generated.** You should normally
644
+ # not need to pass this option.**
645
+ #
646
+ # @return [Types::CreateConnectionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
647
+ #
648
+ # * {Types::CreateConnectionResponse#connection #connection} => Types::Connection
649
+ #
650
+ #
651
+ # @example Example: Create Connection on specific environment
652
+ #
653
+ # resp = client.create_connection({
654
+ # attach_point: {
655
+ # direct_connect_gateway: "90392BE3-219C-47FD-BBA5-03DF76D2542A",
656
+ # },
657
+ # bandwidth: "1Gbps",
658
+ # environment_id: "mce-aws-acme-1",
659
+ # remote_account: {
660
+ # identifier: "PartnerAccountDetails",
661
+ # },
662
+ # })
663
+ #
664
+ # resp.to_h outputs the following:
665
+ # {
666
+ # connection: {
667
+ # type: "Multicloud",
668
+ # activation_key: "<Activation Key Data>",
669
+ # arn: "arn:aws:interconnect:us-east-1:000000000000:connection/mcc-abc12345",
670
+ # attach_point: {
671
+ # direct_connect_gateway: "90392BE3-219C-47FD-BBA5-03DF76D2542A",
672
+ # },
673
+ # bandwidth: "1Gbps",
674
+ # description: "My MultiCloud Connection",
675
+ # environment_id: "mce-aws-acme-1",
676
+ # id: "mcc-abc12345",
677
+ # location: "acme-east",
678
+ # owner_account: "000000000000",
679
+ # provider: {
680
+ # cloud_service_provider: "acme",
681
+ # },
682
+ # shared_id: "B0615F4D-E588-47AD-9D04-1449EAA61C91",
683
+ # state: "requested",
684
+ # },
685
+ # }
686
+ #
687
+ # @example Request syntax with placeholder values
688
+ #
689
+ # resp = client.create_connection({
690
+ # description: "ConnectionDescription",
691
+ # bandwidth: "ConnectionBandwidth", # required
692
+ # attach_point: { # required
693
+ # direct_connect_gateway: "DirectConnectGatewayAttachPoint",
694
+ # arn: "AmazonResourceName",
695
+ # },
696
+ # environment_id: "EnvironmentId", # required
697
+ # remote_account: {
698
+ # identifier: "RemoteOwnerAccount",
699
+ # },
700
+ # tags: {
701
+ # "TagKey" => "TagValue",
702
+ # },
703
+ # client_token: "String",
704
+ # })
705
+ #
706
+ # @example Response structure
707
+ #
708
+ # resp.connection.id #=> String
709
+ # resp.connection.arn #=> String
710
+ # resp.connection.description #=> String
711
+ # resp.connection.bandwidth #=> String
712
+ # resp.connection.attach_point.direct_connect_gateway #=> String
713
+ # resp.connection.attach_point.arn #=> String
714
+ # resp.connection.environment_id #=> String
715
+ # resp.connection.provider.cloud_service_provider #=> String
716
+ # resp.connection.provider.last_mile_provider #=> String
717
+ # resp.connection.location #=> String
718
+ # resp.connection.type #=> String
719
+ # resp.connection.state #=> String, one of "available", "requested", "pending", "down", "deleting", "deleted", "failed", "updating"
720
+ # resp.connection.shared_id #=> String
721
+ # resp.connection.billing_tier #=> Integer
722
+ # resp.connection.owner_account #=> String
723
+ # resp.connection.activation_key #=> String
724
+ # resp.connection.tags #=> Hash
725
+ # resp.connection.tags["TagKey"] #=> String
726
+ #
727
+ # @see http://docs.aws.amazon.com/goto/WebAPI/interconnect-2022-07-26/CreateConnection AWS API Documentation
728
+ #
729
+ # @overload create_connection(params = {})
730
+ # @param [Hash] params ({})
731
+ def create_connection(params = {}, options = {})
732
+ req = build_request(:create_connection, params)
733
+ req.send_request(options)
734
+ end
735
+
736
+ # Deletes an existing Connection with the supplied identifier.
737
+ #
738
+ # This operation will also inform the remote partner of your intention
739
+ # to delete your connection. Note, the partner may still require you to
740
+ # delete to fully clean up resources, but the network connectivity
741
+ # provided by the Connection will cease to exist.
742
+ #
743
+ # @option params [required, String] :identifier
744
+ # The identifier of the Connection to be deleted.
745
+ #
746
+ # @option params [String] :client_token
747
+ # Idempotency token used for the request.
748
+ #
749
+ # **A suitable default value is auto-generated.** You should normally
750
+ # not need to pass this option.**
751
+ #
752
+ # @return [Types::DeleteConnectionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
753
+ #
754
+ # * {Types::DeleteConnectionResponse#connection #connection} => Types::Connection
755
+ #
756
+ #
757
+ # @example Example: Delete Connection
758
+ #
759
+ # resp = client.delete_connection({
760
+ # identifier: "mcc-abc12345",
761
+ # })
762
+ #
763
+ # resp.to_h outputs the following:
764
+ # {
765
+ # connection: {
766
+ # type: "Multicloud",
767
+ # activation_key: "<Activation Key Data>",
768
+ # arn: "arn:aws:interconnect:us-east-1:000000000000:connection/mcc-abc12345",
769
+ # attach_point: {
770
+ # direct_connect_gateway: "90392BE3-219C-47FD-BBA5-03DF76D2542A",
771
+ # },
772
+ # bandwidth: "2Gbps",
773
+ # description: "changed Description",
774
+ # environment_id: "mce-aws-acme-1",
775
+ # id: "mcc-abc12345",
776
+ # location: "acme-east",
777
+ # owner_account: "000000000000",
778
+ # provider: {
779
+ # cloud_service_provider: "acme",
780
+ # },
781
+ # shared_id: "B0615F4D-E588-47AD-9D04-1449EAA61C91",
782
+ # state: "deleting",
783
+ # },
784
+ # }
785
+ #
786
+ # @example Request syntax with placeholder values
787
+ #
788
+ # resp = client.delete_connection({
789
+ # identifier: "ConnectionId", # required
790
+ # client_token: "String",
791
+ # })
792
+ #
793
+ # @example Response structure
794
+ #
795
+ # resp.connection.id #=> String
796
+ # resp.connection.arn #=> String
797
+ # resp.connection.description #=> String
798
+ # resp.connection.bandwidth #=> String
799
+ # resp.connection.attach_point.direct_connect_gateway #=> String
800
+ # resp.connection.attach_point.arn #=> String
801
+ # resp.connection.environment_id #=> String
802
+ # resp.connection.provider.cloud_service_provider #=> String
803
+ # resp.connection.provider.last_mile_provider #=> String
804
+ # resp.connection.location #=> String
805
+ # resp.connection.type #=> String
806
+ # resp.connection.state #=> String, one of "available", "requested", "pending", "down", "deleting", "deleted", "failed", "updating"
807
+ # resp.connection.shared_id #=> String
808
+ # resp.connection.billing_tier #=> Integer
809
+ # resp.connection.owner_account #=> String
810
+ # resp.connection.activation_key #=> String
811
+ # resp.connection.tags #=> Hash
812
+ # resp.connection.tags["TagKey"] #=> String
813
+ #
814
+ # @see http://docs.aws.amazon.com/goto/WebAPI/interconnect-2022-07-26/DeleteConnection AWS API Documentation
815
+ #
816
+ # @overload delete_connection(params = {})
817
+ # @param [Hash] params ({})
818
+ def delete_connection(params = {}, options = {})
819
+ req = build_request(:delete_connection, params)
820
+ req.send_request(options)
821
+ end
822
+
823
+ # Describes the details of a connection proposal generated at a
824
+ # partner's portal.
825
+ #
826
+ # @option params [required, String] :activation_key
827
+ # An Activation Key that was generated on a supported partner's portal.
828
+ # This key captures the desired parameters from the initial creation
829
+ # request.
830
+ #
831
+ # @return [Types::DescribeConnectionProposalResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
832
+ #
833
+ # * {Types::DescribeConnectionProposalResponse#bandwidth #bandwidth} => String
834
+ # * {Types::DescribeConnectionProposalResponse#environment_id #environment_id} => String
835
+ # * {Types::DescribeConnectionProposalResponse#provider #provider} => Types::Provider
836
+ # * {Types::DescribeConnectionProposalResponse#location #location} => String
837
+ #
838
+ #
839
+ # @example Example: Describe Connection Proposal
840
+ #
841
+ # resp = client.describe_connection_proposal({
842
+ # activation_key: "<Activation Key Data>",
843
+ # })
844
+ #
845
+ # resp.to_h outputs the following:
846
+ # {
847
+ # bandwidth: "1Gbps",
848
+ # environment_id: "mce-aws-acme-1",
849
+ # location: "acme-east",
850
+ # provider: {
851
+ # cloud_service_provider: "acme",
852
+ # },
853
+ # }
854
+ #
855
+ # @example Request syntax with placeholder values
856
+ #
857
+ # resp = client.describe_connection_proposal({
858
+ # activation_key: "ActivationKey", # required
859
+ # })
860
+ #
861
+ # @example Response structure
862
+ #
863
+ # resp.bandwidth #=> String
864
+ # resp.environment_id #=> String
865
+ # resp.provider.cloud_service_provider #=> String
866
+ # resp.provider.last_mile_provider #=> String
867
+ # resp.location #=> String
868
+ #
869
+ # @see http://docs.aws.amazon.com/goto/WebAPI/interconnect-2022-07-26/DescribeConnectionProposal AWS API Documentation
870
+ #
871
+ # @overload describe_connection_proposal(params = {})
872
+ # @param [Hash] params ({})
873
+ def describe_connection_proposal(params = {}, options = {})
874
+ req = build_request(:describe_connection_proposal, params)
875
+ req.send_request(options)
876
+ end
877
+
878
+ # Describes the current state of a Connection resource as specified by
879
+ # the identifier.
880
+ #
881
+ # @option params [required, String] :identifier
882
+ # The identifier of the requested Connection
883
+ #
884
+ # @return [Types::GetConnectionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
885
+ #
886
+ # * {Types::GetConnectionResponse#connection #connection} => Types::Connection
887
+ #
888
+ #
889
+ # @example Example: Get connection
890
+ #
891
+ # resp = client.get_connection({
892
+ # identifier: "mcc-abc12345",
893
+ # })
894
+ #
895
+ # resp.to_h outputs the following:
896
+ # {
897
+ # connection: {
898
+ # type: "Multicloud",
899
+ # activation_key: "<Activation Key Data>",
900
+ # arn: "arn:aws:interconnect:us-east-1:000000000000:connection/mcc-abc12345",
901
+ # attach_point: {
902
+ # direct_connect_gateway: "90392BE3-219C-47FD-BBA5-03DF76D2542A",
903
+ # },
904
+ # bandwidth: "1Gbps",
905
+ # description: "My MultiCloud Connection",
906
+ # environment_id: "mce-aws-acme-1",
907
+ # id: "mcc-abc12345",
908
+ # location: "acme-east",
909
+ # owner_account: "000000000000",
910
+ # provider: {
911
+ # cloud_service_provider: "acme",
912
+ # },
913
+ # shared_id: "B0615F4D-E588-47AD-9D04-1449EAA61C91",
914
+ # state: "available",
915
+ # },
916
+ # }
917
+ #
918
+ # @example Request syntax with placeholder values
919
+ #
920
+ # resp = client.get_connection({
921
+ # identifier: "ConnectionId", # required
922
+ # })
923
+ #
924
+ # @example Response structure
925
+ #
926
+ # resp.connection.id #=> String
927
+ # resp.connection.arn #=> String
928
+ # resp.connection.description #=> String
929
+ # resp.connection.bandwidth #=> String
930
+ # resp.connection.attach_point.direct_connect_gateway #=> String
931
+ # resp.connection.attach_point.arn #=> String
932
+ # resp.connection.environment_id #=> String
933
+ # resp.connection.provider.cloud_service_provider #=> String
934
+ # resp.connection.provider.last_mile_provider #=> String
935
+ # resp.connection.location #=> String
936
+ # resp.connection.type #=> String
937
+ # resp.connection.state #=> String, one of "available", "requested", "pending", "down", "deleting", "deleted", "failed", "updating"
938
+ # resp.connection.shared_id #=> String
939
+ # resp.connection.billing_tier #=> Integer
940
+ # resp.connection.owner_account #=> String
941
+ # resp.connection.activation_key #=> String
942
+ # resp.connection.tags #=> Hash
943
+ # resp.connection.tags["TagKey"] #=> String
944
+ #
945
+ #
946
+ # The following waiters are defined for this operation (see {Client#wait_until} for detailed usage):
947
+ #
948
+ # * connection_available
949
+ # * connection_deleted
950
+ #
951
+ # @see http://docs.aws.amazon.com/goto/WebAPI/interconnect-2022-07-26/GetConnection AWS API Documentation
952
+ #
953
+ # @overload get_connection(params = {})
954
+ # @param [Hash] params ({})
955
+ def get_connection(params = {}, options = {})
956
+ req = build_request(:get_connection, params)
957
+ req.send_request(options)
958
+ end
959
+
960
+ # Describes a specific Environment
961
+ #
962
+ # @option params [required, String] :id
963
+ # The identifier of the specific Environment to describe.
964
+ #
965
+ # @return [Types::GetEnvironmentResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
966
+ #
967
+ # * {Types::GetEnvironmentResponse#environment #environment} => Types::Environment
968
+ #
969
+ #
970
+ # @example Example: Get a specific environment
971
+ #
972
+ # resp = client.get_environment({
973
+ # id: "mce-aws-acme-1",
974
+ # })
975
+ #
976
+ # resp.to_h outputs the following:
977
+ # {
978
+ # environment: {
979
+ # type: "Multicloud",
980
+ # bandwidths: {
981
+ # available: [
982
+ # "1Gbps",
983
+ # ],
984
+ # supported: [
985
+ # "1Gbps",
986
+ # "2Gbps",
987
+ # ],
988
+ # },
989
+ # environment_id: "mce-aws-acme-1",
990
+ # location: "acme-east",
991
+ # provider: {
992
+ # cloud_service_provider: "acme",
993
+ # },
994
+ # state: "available",
995
+ # },
996
+ # }
997
+ #
998
+ # @example Request syntax with placeholder values
999
+ #
1000
+ # resp = client.get_environment({
1001
+ # id: "EnvironmentId", # required
1002
+ # })
1003
+ #
1004
+ # @example Response structure
1005
+ #
1006
+ # resp.environment.provider.cloud_service_provider #=> String
1007
+ # resp.environment.provider.last_mile_provider #=> String
1008
+ # resp.environment.location #=> String
1009
+ # resp.environment.environment_id #=> String
1010
+ # resp.environment.state #=> String, one of "available", "limited", "unavailable"
1011
+ # resp.environment.bandwidths.available #=> Array
1012
+ # resp.environment.bandwidths.available[0] #=> String
1013
+ # resp.environment.bandwidths.supported #=> Array
1014
+ # resp.environment.bandwidths.supported[0] #=> String
1015
+ # resp.environment.type #=> String
1016
+ # resp.environment.activation_page_url #=> String
1017
+ # resp.environment.remote_identifier_type #=> String, one of "account", "email"
1018
+ #
1019
+ # @see http://docs.aws.amazon.com/goto/WebAPI/interconnect-2022-07-26/GetEnvironment AWS API Documentation
1020
+ #
1021
+ # @overload get_environment(params = {})
1022
+ # @param [Hash] params ({})
1023
+ def get_environment(params = {}, options = {})
1024
+ req = build_request(:get_environment, params)
1025
+ req.send_request(options)
1026
+ end
1027
+
1028
+ # Lists all Attach Points the caller has access to that are valid for
1029
+ # the specified Environment.
1030
+ #
1031
+ # @option params [required, String] :environment_id
1032
+ # The identifier of the Environment for which to list valid Attach
1033
+ # Points.
1034
+ #
1035
+ # @option params [Integer] :max_results
1036
+ # The max number of list results in a single paginated response.
1037
+ #
1038
+ # @option params [String] :next_token
1039
+ # A pagination token from a previous paginated response indicating you
1040
+ # wish to get the next page.
1041
+ #
1042
+ # @return [Types::ListAttachPointsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1043
+ #
1044
+ # * {Types::ListAttachPointsResponse#attach_points #attach_points} => Array&lt;Types::AttachPointDescriptor&gt;
1045
+ # * {Types::ListAttachPointsResponse#next_token #next_token} => String
1046
+ #
1047
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1048
+ #
1049
+ #
1050
+ # @example Example: List Attach Points
1051
+ #
1052
+ # resp = client.list_attach_points({
1053
+ # environment_id: "mce-aws-acme-1",
1054
+ # })
1055
+ #
1056
+ # resp.to_h outputs the following:
1057
+ # {
1058
+ # attach_points: [
1059
+ # {
1060
+ # name: "My DirectConnectGateway",
1061
+ # type: "DirectConnectGateway",
1062
+ # identifier: "90392BE3-219C-47FD-BBA5-03DF76D2542A",
1063
+ # },
1064
+ # ],
1065
+ # }
1066
+ #
1067
+ # @example Request syntax with placeholder values
1068
+ #
1069
+ # resp = client.list_attach_points({
1070
+ # environment_id: "EnvironmentId", # required
1071
+ # max_results: 1,
1072
+ # next_token: "NextToken",
1073
+ # })
1074
+ #
1075
+ # @example Response structure
1076
+ #
1077
+ # resp.attach_points #=> Array
1078
+ # resp.attach_points[0].type #=> String, one of "DirectConnectGateway"
1079
+ # resp.attach_points[0].identifier #=> String
1080
+ # resp.attach_points[0].name #=> String
1081
+ # resp.next_token #=> String
1082
+ #
1083
+ # @see http://docs.aws.amazon.com/goto/WebAPI/interconnect-2022-07-26/ListAttachPoints AWS API Documentation
1084
+ #
1085
+ # @overload list_attach_points(params = {})
1086
+ # @param [Hash] params ({})
1087
+ def list_attach_points(params = {}, options = {})
1088
+ req = build_request(:list_attach_points, params)
1089
+ req.send_request(options)
1090
+ end
1091
+
1092
+ # Lists all connection objects to which the caller has access.
1093
+ #
1094
+ # Allows for optional filtering by the following properties:
1095
+ #
1096
+ # * `state`
1097
+ #
1098
+ # * `environmentId`
1099
+ #
1100
+ # * `provider`
1101
+ #
1102
+ # * `attach point`
1103
+ #
1104
+ # Only Connection objects matching all filters will be returned.
1105
+ #
1106
+ # @option params [Integer] :max_results
1107
+ # The max number of list results in a single paginated response.
1108
+ #
1109
+ # @option params [String] :next_token
1110
+ # A pagination token from a previous paginated response indicating you
1111
+ # wish to get the next page of results.
1112
+ #
1113
+ # @option params [String] :state
1114
+ # Filter the results to only include Connection objects in the given
1115
+ # Connection$state.
1116
+ #
1117
+ # @option params [String] :environment_id
1118
+ # Filter the results to only include Connection objects on the given
1119
+ # Environment.
1120
+ #
1121
+ # @option params [Types::Provider] :provider
1122
+ # Filter the results to only include Connection objects to the given
1123
+ # Provider.
1124
+ #
1125
+ # @option params [Types::AttachPoint] :attach_point
1126
+ # Filter results to only include Connection objects attached to the
1127
+ # given AttachPoint.
1128
+ #
1129
+ # @return [Types::ListConnectionsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1130
+ #
1131
+ # * {Types::ListConnectionsResponse#connections #connections} => Array&lt;Types::ConnectionSummary&gt;
1132
+ # * {Types::ListConnectionsResponse#next_token #next_token} => String
1133
+ #
1134
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1135
+ #
1136
+ #
1137
+ # @example Example: List All Connections
1138
+ #
1139
+ # resp = client.list_connections({
1140
+ # })
1141
+ #
1142
+ # resp.to_h outputs the following:
1143
+ # {
1144
+ # connections: [
1145
+ # {
1146
+ # type: "Multicloud",
1147
+ # arn: "arn:aws:interconnect:us-east-1:000000000000:connection/mcc-abc12345",
1148
+ # attach_point: {
1149
+ # direct_connect_gateway: "90392BE3-219C-47FD-BBA5-03DF76D2542A",
1150
+ # },
1151
+ # bandwidth: "1Gbps",
1152
+ # description: "My MultiCloud Connection",
1153
+ # environment_id: "mce-aws-acme-1",
1154
+ # id: "mcc-abc12345",
1155
+ # location: "acme-east",
1156
+ # provider: {
1157
+ # cloud_service_provider: "acme",
1158
+ # },
1159
+ # shared_id: "B0615F4D-E588-47AD-9D04-1449EAA61C91",
1160
+ # state: "available",
1161
+ # },
1162
+ # {
1163
+ # type: "LastMile",
1164
+ # arn: "arn:aws:interconnect:us-east-1:000000000000:connection/lmcc-xyz98765",
1165
+ # attach_point: {
1166
+ # direct_connect_gateway: "244FB7E5-3C56-4F7D-AAB9-E35F70764154",
1167
+ # },
1168
+ # bandwidth: "1Gbps",
1169
+ # description: "My LastMile Connection",
1170
+ # environment_id: "mce-aws-lastmile-1",
1171
+ # id: "lmcc-xyz98765",
1172
+ # location: "lastmile-east",
1173
+ # provider: {
1174
+ # last_mile_provider: "lastmile",
1175
+ # },
1176
+ # shared_id: "27C2CDD8-8FDF-402D-9DFF-92F66ED7C7FC",
1177
+ # state: "pending",
1178
+ # },
1179
+ # ],
1180
+ # }
1181
+ #
1182
+ # @example Example: List Connections in available state
1183
+ #
1184
+ # resp = client.list_connections({
1185
+ # state: "available",
1186
+ # })
1187
+ #
1188
+ # resp.to_h outputs the following:
1189
+ # {
1190
+ # connections: [
1191
+ # {
1192
+ # type: "Multicloud",
1193
+ # arn: "arn:aws:interconnect:us-east-1:000000000000:connection/mcc-abc12345",
1194
+ # attach_point: {
1195
+ # direct_connect_gateway: "90392BE3-219C-47FD-BBA5-03DF76D2542A",
1196
+ # },
1197
+ # bandwidth: "1Gbps",
1198
+ # description: "My MultiCloud Connection",
1199
+ # environment_id: "mce-aws-acme-1",
1200
+ # id: "mcc-abc12345",
1201
+ # location: "acme-east",
1202
+ # provider: {
1203
+ # cloud_service_provider: "acme",
1204
+ # },
1205
+ # shared_id: "B0615F4D-E588-47AD-9D04-1449EAA61C91",
1206
+ # state: "available",
1207
+ # },
1208
+ # ],
1209
+ # }
1210
+ #
1211
+ # @example Example: List Connections on specific Environment
1212
+ #
1213
+ # resp = client.list_connections({
1214
+ # environment_id: "mce-aws-acme-1",
1215
+ # })
1216
+ #
1217
+ # resp.to_h outputs the following:
1218
+ # {
1219
+ # connections: [
1220
+ # {
1221
+ # type: "LastMile",
1222
+ # arn: "arn:aws:interconnect:us-east-1:000000000000:connection/lmcc-xyz98765",
1223
+ # attach_point: {
1224
+ # direct_connect_gateway: "244FB7E5-3C56-4F7D-AAB9-E35F70764154",
1225
+ # },
1226
+ # bandwidth: "1Gbps",
1227
+ # description: "My LastMile Connection",
1228
+ # environment_id: "mce-aws-lastmile-1",
1229
+ # id: "lmcc-xyz98765",
1230
+ # location: "lastmile-east",
1231
+ # provider: {
1232
+ # last_mile_provider: "lastmile",
1233
+ # },
1234
+ # shared_id: "27C2CDD8-8FDF-402D-9DFF-92F66ED7C7FC",
1235
+ # state: "pending",
1236
+ # },
1237
+ # ],
1238
+ # }
1239
+ #
1240
+ # @example Request syntax with placeholder values
1241
+ #
1242
+ # resp = client.list_connections({
1243
+ # max_results: 1,
1244
+ # next_token: "NextToken",
1245
+ # state: "available", # accepts available, requested, pending, down, deleting, deleted, failed, updating
1246
+ # environment_id: "EnvironmentId",
1247
+ # provider: {
1248
+ # cloud_service_provider: "CloudServiceProvider",
1249
+ # last_mile_provider: "LastMileProvider",
1250
+ # },
1251
+ # attach_point: {
1252
+ # direct_connect_gateway: "DirectConnectGatewayAttachPoint",
1253
+ # arn: "AmazonResourceName",
1254
+ # },
1255
+ # })
1256
+ #
1257
+ # @example Response structure
1258
+ #
1259
+ # resp.connections #=> Array
1260
+ # resp.connections[0].id #=> String
1261
+ # resp.connections[0].arn #=> String
1262
+ # resp.connections[0].description #=> String
1263
+ # resp.connections[0].bandwidth #=> String
1264
+ # resp.connections[0].attach_point.direct_connect_gateway #=> String
1265
+ # resp.connections[0].attach_point.arn #=> String
1266
+ # resp.connections[0].environment_id #=> String
1267
+ # resp.connections[0].provider.cloud_service_provider #=> String
1268
+ # resp.connections[0].provider.last_mile_provider #=> String
1269
+ # resp.connections[0].location #=> String
1270
+ # resp.connections[0].type #=> String
1271
+ # resp.connections[0].state #=> String, one of "available", "requested", "pending", "down", "deleting", "deleted", "failed", "updating"
1272
+ # resp.connections[0].shared_id #=> String
1273
+ # resp.connections[0].billing_tier #=> Integer
1274
+ # resp.next_token #=> String
1275
+ #
1276
+ # @see http://docs.aws.amazon.com/goto/WebAPI/interconnect-2022-07-26/ListConnections AWS API Documentation
1277
+ #
1278
+ # @overload list_connections(params = {})
1279
+ # @param [Hash] params ({})
1280
+ def list_connections(params = {}, options = {})
1281
+ req = build_request(:list_connections, params)
1282
+ req.send_request(options)
1283
+ end
1284
+
1285
+ # Lists all of the environments that can produce connections that will
1286
+ # land in the called AWS region.
1287
+ #
1288
+ # @option params [Integer] :max_results
1289
+ # The max number of list results in a single paginated response.
1290
+ #
1291
+ # @option params [String] :next_token
1292
+ # A pagination token from a previous paginated response indicating you
1293
+ # wish to get the next page of results.
1294
+ #
1295
+ # @option params [Types::Provider] :provider
1296
+ # Filter results to only include Environment objects that connect to the
1297
+ # Provider.
1298
+ #
1299
+ # @option params [String] :location
1300
+ # Filter results to only include Environment objects that connect to a
1301
+ # given location distiguisher.
1302
+ #
1303
+ # @return [Types::ListEnvironmentsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1304
+ #
1305
+ # * {Types::ListEnvironmentsResponse#environments #environments} => Array&lt;Types::Environment&gt;
1306
+ # * {Types::ListEnvironmentsResponse#next_token #next_token} => String
1307
+ #
1308
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1309
+ #
1310
+ #
1311
+ # @example Example: List All Environments
1312
+ #
1313
+ # resp = client.list_environments({
1314
+ # })
1315
+ #
1316
+ # resp.to_h outputs the following:
1317
+ # {
1318
+ # environments: [
1319
+ # {
1320
+ # type: "Multicloud",
1321
+ # bandwidths: {
1322
+ # available: [
1323
+ # "1Gbps",
1324
+ # ],
1325
+ # supported: [
1326
+ # "1Gbps",
1327
+ # "2Gbps",
1328
+ # ],
1329
+ # },
1330
+ # environment_id: "mce-aws-acme-1",
1331
+ # location: "acme-east",
1332
+ # provider: {
1333
+ # cloud_service_provider: "acme",
1334
+ # },
1335
+ # state: "available",
1336
+ # },
1337
+ # {
1338
+ # type: "LastMile",
1339
+ # bandwidths: {
1340
+ # available: [
1341
+ # "1Gbps",
1342
+ # ],
1343
+ # supported: [
1344
+ # "1Gbps",
1345
+ # "2Gbps",
1346
+ # ],
1347
+ # },
1348
+ # environment_id: "mce-aws-lastmile-1",
1349
+ # location: "lastmile-east",
1350
+ # provider: {
1351
+ # cloud_service_provider: "acme",
1352
+ # },
1353
+ # state: "available",
1354
+ # },
1355
+ # ],
1356
+ # }
1357
+ #
1358
+ # @example Request syntax with placeholder values
1359
+ #
1360
+ # resp = client.list_environments({
1361
+ # max_results: 1,
1362
+ # next_token: "NextToken",
1363
+ # provider: {
1364
+ # cloud_service_provider: "CloudServiceProvider",
1365
+ # last_mile_provider: "LastMileProvider",
1366
+ # },
1367
+ # location: "Location",
1368
+ # })
1369
+ #
1370
+ # @example Response structure
1371
+ #
1372
+ # resp.environments #=> Array
1373
+ # resp.environments[0].provider.cloud_service_provider #=> String
1374
+ # resp.environments[0].provider.last_mile_provider #=> String
1375
+ # resp.environments[0].location #=> String
1376
+ # resp.environments[0].environment_id #=> String
1377
+ # resp.environments[0].state #=> String, one of "available", "limited", "unavailable"
1378
+ # resp.environments[0].bandwidths.available #=> Array
1379
+ # resp.environments[0].bandwidths.available[0] #=> String
1380
+ # resp.environments[0].bandwidths.supported #=> Array
1381
+ # resp.environments[0].bandwidths.supported[0] #=> String
1382
+ # resp.environments[0].type #=> String
1383
+ # resp.environments[0].activation_page_url #=> String
1384
+ # resp.environments[0].remote_identifier_type #=> String, one of "account", "email"
1385
+ # resp.next_token #=> String
1386
+ #
1387
+ # @see http://docs.aws.amazon.com/goto/WebAPI/interconnect-2022-07-26/ListEnvironments AWS API Documentation
1388
+ #
1389
+ # @overload list_environments(params = {})
1390
+ # @param [Hash] params ({})
1391
+ def list_environments(params = {}, options = {})
1392
+ req = build_request(:list_environments, params)
1393
+ req.send_request(options)
1394
+ end
1395
+
1396
+ # List all current tags on the specified resource. Currently this
1397
+ # supports Connection resources.
1398
+ #
1399
+ # @option params [required, String] :arn
1400
+ # The resource ARN for which to list tags.
1401
+ #
1402
+ # @return [Types::ListTagsForResourceResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1403
+ #
1404
+ # * {Types::ListTagsForResourceResponse#tags #tags} => Hash&lt;String,String&gt;
1405
+ #
1406
+ #
1407
+ # @example Example: List Tags
1408
+ #
1409
+ # resp = client.list_tags_for_resource({
1410
+ # arn: "arn:aws:interconnect:us-east-1:000000000000:connection/mcc-abc12345",
1411
+ # })
1412
+ #
1413
+ # resp.to_h outputs the following:
1414
+ # {
1415
+ # tags: {
1416
+ # "TagKey1" => "TagValue1",
1417
+ # "TagKey2" => "TagValue2",
1418
+ # },
1419
+ # }
1420
+ #
1421
+ # @example Request syntax with placeholder values
1422
+ #
1423
+ # resp = client.list_tags_for_resource({
1424
+ # arn: "AmazonResourceName", # required
1425
+ # })
1426
+ #
1427
+ # @example Response structure
1428
+ #
1429
+ # resp.tags #=> Hash
1430
+ # resp.tags["TagKey"] #=> String
1431
+ #
1432
+ # @see http://docs.aws.amazon.com/goto/WebAPI/interconnect-2022-07-26/ListTagsForResource AWS API Documentation
1433
+ #
1434
+ # @overload list_tags_for_resource(params = {})
1435
+ # @param [Hash] params ({})
1436
+ def list_tags_for_resource(params = {}, options = {})
1437
+ req = build_request(:list_tags_for_resource, params)
1438
+ req.send_request(options)
1439
+ end
1440
+
1441
+ # Add new tags to the specified resource.
1442
+ #
1443
+ # @option params [required, String] :arn
1444
+ # The ARN of the resource that should receive the new tags.
1445
+ #
1446
+ # @option params [required, Hash<String,String>] :tags
1447
+ # A map of tags to apply to the specified resource.
1448
+ #
1449
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1450
+ #
1451
+ #
1452
+ # @example Example: Apply Tags
1453
+ #
1454
+ # resp = client.tag_resource({
1455
+ # arn: "arn:aws:interconnect:us-east-1:000000000000:connection/mcc-abc12345",
1456
+ # tags: {
1457
+ # "TagKey1" => "TagValue1",
1458
+ # "TagKey2" => "TagValue2",
1459
+ # },
1460
+ # })
1461
+ #
1462
+ # resp.to_h outputs the following:
1463
+ # {
1464
+ # }
1465
+ #
1466
+ # @example Request syntax with placeholder values
1467
+ #
1468
+ # resp = client.tag_resource({
1469
+ # arn: "AmazonResourceName", # required
1470
+ # tags: { # required
1471
+ # "TagKey" => "TagValue",
1472
+ # },
1473
+ # })
1474
+ #
1475
+ # @see http://docs.aws.amazon.com/goto/WebAPI/interconnect-2022-07-26/TagResource AWS API Documentation
1476
+ #
1477
+ # @overload tag_resource(params = {})
1478
+ # @param [Hash] params ({})
1479
+ def tag_resource(params = {}, options = {})
1480
+ req = build_request(:tag_resource, params)
1481
+ req.send_request(options)
1482
+ end
1483
+
1484
+ # Removes tags from the specified resource.
1485
+ #
1486
+ # @option params [required, String] :arn
1487
+ # The ARN of the resource from which the specified tags should be
1488
+ # removed.
1489
+ #
1490
+ # @option params [required, Array<String>] :tag_keys
1491
+ # The list of tag keys that should be removed from the resource.
1492
+ #
1493
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1494
+ #
1495
+ #
1496
+ # @example Example: Remove Tags
1497
+ #
1498
+ # resp = client.untag_resource({
1499
+ # arn: "arn:aws:interconnect:us-east-1:000000000000:connection/mcc-abc12345",
1500
+ # tag_keys: [
1501
+ # "TagKey1",
1502
+ # "TagKey2",
1503
+ # ],
1504
+ # })
1505
+ #
1506
+ # resp.to_h outputs the following:
1507
+ # {
1508
+ # }
1509
+ #
1510
+ # @example Request syntax with placeholder values
1511
+ #
1512
+ # resp = client.untag_resource({
1513
+ # arn: "AmazonResourceName", # required
1514
+ # tag_keys: ["TagKey"], # required
1515
+ # })
1516
+ #
1517
+ # @see http://docs.aws.amazon.com/goto/WebAPI/interconnect-2022-07-26/UntagResource AWS API Documentation
1518
+ #
1519
+ # @overload untag_resource(params = {})
1520
+ # @param [Hash] params ({})
1521
+ def untag_resource(params = {}, options = {})
1522
+ req = build_request(:untag_resource, params)
1523
+ req.send_request(options)
1524
+ end
1525
+
1526
+ # Modifies an existing connection. Currently we support modifications to
1527
+ # the connection's description and/or bandwidth.
1528
+ #
1529
+ # @option params [required, String] :identifier
1530
+ # The identifier of the Connection that should be updated.
1531
+ #
1532
+ # @option params [String] :description
1533
+ # An updated description to apply to the Connection
1534
+ #
1535
+ # @option params [String] :bandwidth
1536
+ # Request a new bandwidth size on the given Connection.
1537
+ #
1538
+ # Note that changes to the size may be subject to additional policy, and
1539
+ # does require the remote partner provider to acknowledge and permit
1540
+ # this new bandwidth size.
1541
+ #
1542
+ # @option params [String] :client_token
1543
+ # Idempotency token used for the request.
1544
+ #
1545
+ # **A suitable default value is auto-generated.** You should normally
1546
+ # not need to pass this option.**
1547
+ #
1548
+ # @return [Types::UpdateConnectionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1549
+ #
1550
+ # * {Types::UpdateConnectionResponse#connection #connection} => Types::Connection
1551
+ #
1552
+ #
1553
+ # @example Example: Update Connection Description
1554
+ #
1555
+ # resp = client.update_connection({
1556
+ # description: "Changed Description",
1557
+ # identifier: "mcc-abc12345",
1558
+ # })
1559
+ #
1560
+ # resp.to_h outputs the following:
1561
+ # {
1562
+ # connection: {
1563
+ # type: "Multicloud",
1564
+ # activation_key: "<Activation Key Data>",
1565
+ # arn: "arn:aws:interconnect:us-east-1:000000000000:connection/mcc-abc12345",
1566
+ # attach_point: {
1567
+ # direct_connect_gateway: "90392BE3-219C-47FD-BBA5-03DF76D2542A",
1568
+ # },
1569
+ # bandwidth: "1Gbps",
1570
+ # description: "changed Description",
1571
+ # environment_id: "mce-aws-acme-1",
1572
+ # id: "mcc-abc12345",
1573
+ # location: "acme-east",
1574
+ # owner_account: "000000000000",
1575
+ # provider: {
1576
+ # cloud_service_provider: "acme",
1577
+ # },
1578
+ # shared_id: "B0615F4D-E588-47AD-9D04-1449EAA61C91",
1579
+ # state: "available",
1580
+ # },
1581
+ # }
1582
+ #
1583
+ # @example Example: Update Connection Bandwidth
1584
+ #
1585
+ # resp = client.update_connection({
1586
+ # bandwidth: "2Gbps",
1587
+ # identifier: "mcc-abc12345",
1588
+ # })
1589
+ #
1590
+ # resp.to_h outputs the following:
1591
+ # {
1592
+ # connection: {
1593
+ # type: "Multicloud",
1594
+ # activation_key: "<Activation Key Data>",
1595
+ # arn: "arn:aws:interconnect:us-east-1:000000000000:connection/mcc-abc12345",
1596
+ # attach_point: {
1597
+ # direct_connect_gateway: "90392BE3-219C-47FD-BBA5-03DF76D2542A",
1598
+ # },
1599
+ # bandwidth: "2Gbps",
1600
+ # description: "changed Description",
1601
+ # environment_id: "mce-aws-acme-1",
1602
+ # id: "mcc-abc12345",
1603
+ # location: "acme-east",
1604
+ # owner_account: "000000000000",
1605
+ # provider: {
1606
+ # cloud_service_provider: "acme",
1607
+ # },
1608
+ # shared_id: "B0615F4D-E588-47AD-9D04-1449EAA61C91",
1609
+ # state: "updating",
1610
+ # },
1611
+ # }
1612
+ #
1613
+ # @example Request syntax with placeholder values
1614
+ #
1615
+ # resp = client.update_connection({
1616
+ # identifier: "ConnectionId", # required
1617
+ # description: "ConnectionDescription",
1618
+ # bandwidth: "ConnectionBandwidth",
1619
+ # client_token: "String",
1620
+ # })
1621
+ #
1622
+ # @example Response structure
1623
+ #
1624
+ # resp.connection.id #=> String
1625
+ # resp.connection.arn #=> String
1626
+ # resp.connection.description #=> String
1627
+ # resp.connection.bandwidth #=> String
1628
+ # resp.connection.attach_point.direct_connect_gateway #=> String
1629
+ # resp.connection.attach_point.arn #=> String
1630
+ # resp.connection.environment_id #=> String
1631
+ # resp.connection.provider.cloud_service_provider #=> String
1632
+ # resp.connection.provider.last_mile_provider #=> String
1633
+ # resp.connection.location #=> String
1634
+ # resp.connection.type #=> String
1635
+ # resp.connection.state #=> String, one of "available", "requested", "pending", "down", "deleting", "deleted", "failed", "updating"
1636
+ # resp.connection.shared_id #=> String
1637
+ # resp.connection.billing_tier #=> Integer
1638
+ # resp.connection.owner_account #=> String
1639
+ # resp.connection.activation_key #=> String
1640
+ # resp.connection.tags #=> Hash
1641
+ # resp.connection.tags["TagKey"] #=> String
1642
+ #
1643
+ # @see http://docs.aws.amazon.com/goto/WebAPI/interconnect-2022-07-26/UpdateConnection AWS API Documentation
1644
+ #
1645
+ # @overload update_connection(params = {})
1646
+ # @param [Hash] params ({})
1647
+ def update_connection(params = {}, options = {})
1648
+ req = build_request(:update_connection, params)
1649
+ req.send_request(options)
1650
+ end
1651
+
1652
+ # @!endgroup
1653
+
1654
+ # @param params ({})
1655
+ # @api private
1656
+ def build_request(operation_name, params = {})
1657
+ handlers = @handlers.for(operation_name)
1658
+ tracer = config.telemetry_provider.tracer_provider.tracer(
1659
+ Aws::Telemetry.module_to_tracer_name('Aws::Interconnect')
1660
+ )
1661
+ context = Seahorse::Client::RequestContext.new(
1662
+ operation_name: operation_name,
1663
+ operation: config.api.operation(operation_name),
1664
+ client: self,
1665
+ params: params,
1666
+ config: config,
1667
+ tracer: tracer
1668
+ )
1669
+ context[:gem_name] = 'aws-sdk-interconnect'
1670
+ context[:gem_version] = '1.0.0'
1671
+ Seahorse::Client::Request.new(handlers, context)
1672
+ end
1673
+
1674
+ # Polls an API operation until a resource enters a desired state.
1675
+ #
1676
+ # ## Basic Usage
1677
+ #
1678
+ # A waiter will call an API operation until:
1679
+ #
1680
+ # * It is successful
1681
+ # * It enters a terminal state
1682
+ # * It makes the maximum number of attempts
1683
+ #
1684
+ # In between attempts, the waiter will sleep.
1685
+ #
1686
+ # # polls in a loop, sleeping between attempts
1687
+ # client.wait_until(waiter_name, params)
1688
+ #
1689
+ # ## Configuration
1690
+ #
1691
+ # You can configure the maximum number of polling attempts, and the
1692
+ # delay (in seconds) between each polling attempt. You can pass
1693
+ # configuration as the final arguments hash.
1694
+ #
1695
+ # # poll for ~25 seconds
1696
+ # client.wait_until(waiter_name, params, {
1697
+ # max_attempts: 5,
1698
+ # delay: 5,
1699
+ # })
1700
+ #
1701
+ # ## Callbacks
1702
+ #
1703
+ # You can be notified before each polling attempt and before each
1704
+ # delay. If you throw `:success` or `:failure` from these callbacks,
1705
+ # it will terminate the waiter.
1706
+ #
1707
+ # started_at = Time.now
1708
+ # client.wait_until(waiter_name, params, {
1709
+ #
1710
+ # # disable max attempts
1711
+ # max_attempts: nil,
1712
+ #
1713
+ # # poll for 1 hour, instead of a number of attempts
1714
+ # before_wait: -> (attempts, response) do
1715
+ # throw :failure if Time.now - started_at > 3600
1716
+ # end
1717
+ # })
1718
+ #
1719
+ # ## Handling Errors
1720
+ #
1721
+ # When a waiter is unsuccessful, it will raise an error.
1722
+ # All of the failure errors extend from
1723
+ # {Aws::Waiters::Errors::WaiterFailed}.
1724
+ #
1725
+ # begin
1726
+ # client.wait_until(...)
1727
+ # rescue Aws::Waiters::Errors::WaiterFailed
1728
+ # # resource did not enter the desired state in time
1729
+ # end
1730
+ #
1731
+ # ## Valid Waiters
1732
+ #
1733
+ # The following table lists the valid waiter names, the operations they call,
1734
+ # and the default `:delay` and `:max_attempts` values.
1735
+ #
1736
+ # | waiter_name | params | :delay | :max_attempts |
1737
+ # | -------------------- | ----------------------- | -------- | ------------- |
1738
+ # | connection_available | {Client#get_connection} | 30 | 5 |
1739
+ # | connection_deleted | {Client#get_connection} | 30 | 5 |
1740
+ #
1741
+ # @raise [Errors::FailureStateError] Raised when the waiter terminates
1742
+ # because the waiter has entered a state that it will not transition
1743
+ # out of, preventing success.
1744
+ #
1745
+ # @raise [Errors::TooManyAttemptsError] Raised when the configured
1746
+ # maximum number of attempts have been made, and the waiter is not
1747
+ # yet successful.
1748
+ #
1749
+ # @raise [Errors::UnexpectedError] Raised when an error is encounted
1750
+ # while polling for a resource that is not expected.
1751
+ #
1752
+ # @raise [Errors::NoSuchWaiterError] Raised when you request to wait
1753
+ # for an unknown state.
1754
+ #
1755
+ # @return [Boolean] Returns `true` if the waiter was successful.
1756
+ # @param [Symbol] waiter_name
1757
+ # @param [Hash] params ({})
1758
+ # @param [Hash] options ({})
1759
+ # @option options [Integer] :max_attempts
1760
+ # @option options [Integer] :delay
1761
+ # @option options [Proc] :before_attempt
1762
+ # @option options [Proc] :before_wait
1763
+ def wait_until(waiter_name, params = {}, options = {})
1764
+ w = waiter(waiter_name, options)
1765
+ yield(w.waiter) if block_given? # deprecated
1766
+ w.wait(params)
1767
+ end
1768
+
1769
+ # @api private
1770
+ # @deprecated
1771
+ def waiter_names
1772
+ waiters.keys
1773
+ end
1774
+
1775
+ private
1776
+
1777
+ # @param [Symbol] waiter_name
1778
+ # @param [Hash] options ({})
1779
+ def waiter(waiter_name, options = {})
1780
+ waiter_class = waiters[waiter_name]
1781
+ if waiter_class
1782
+ waiter_class.new(options.merge(client: self))
1783
+ else
1784
+ raise Aws::Waiters::Errors::NoSuchWaiterError.new(waiter_name, waiters.keys)
1785
+ end
1786
+ end
1787
+
1788
+ def waiters
1789
+ {
1790
+ connection_available: Waiters::ConnectionAvailable,
1791
+ connection_deleted: Waiters::ConnectionDeleted
1792
+ }
1793
+ end
1794
+
1795
+ class << self
1796
+
1797
+ # @api private
1798
+ attr_reader :identifier
1799
+
1800
+ # @api private
1801
+ def errors_module
1802
+ Errors
1803
+ end
1804
+
1805
+ end
1806
+ end
1807
+ end