# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0. # This file is generated from . import model from .client import GreengrassCoreIPCClient from . import client import concurrent.futures import datetime import typing class GreengrassCoreIPCClientV2: """ V2 client for the GreengrassCoreIPC service. Args: client: Connection that this client will use. If you do not provide one, it will be made automatically. executor: Executor used to run on_stream_event and on_stream_closed callbacks to avoid blocking the networking thread. By default, a ThreadPoolExecutor will be created and used. Use None to run callbacks in the networking thread, but understand that your code can deadlock the networking thread if it performs a synchronous network call. """ def __init__(self, client: typing.Optional[GreengrassCoreIPCClient] = None, executor: typing.Optional[concurrent.futures.Executor] = True): if client is None: import awsiot.greengrasscoreipc client = awsiot.greengrasscoreipc.connect() self.client = client if executor is True: executor = concurrent.futures.ThreadPoolExecutor() self.executor = executor self.ignore_executor_exceptions = False def close(self, *, executor_wait=True) -> concurrent.futures.Future: """ Close the underlying connection and shutdown the event executor (if any) Args: executor_wait: If true (default), then this method will block until the executor finishes running all tasks and shuts down. Returns: The future which will complete when the shutdown process is done. The future will have an exception if shutdown was caused by an error, or a result of None if the shutdown was clean and user-initiated. """ fut = self.client.close() # events that arrive during the shutdown process will generate executor exceptions, ignore them self.ignore_executor_exceptions = True if self.executor is not None: self.executor.shutdown(wait=executor_wait) return fut def __combine_futures(self, future1: concurrent.futures.Future, future2: concurrent.futures.Future) -> concurrent.futures.Future: def callback(*args, **kwargs): try: future1.result() except Exception as e: future2.set_exception(e) future1.add_done_callback(callback) return future2 @staticmethod def __handle_error(): import sys import traceback traceback.print_exc(file=sys.stderr) def __wrap_error(self, func): def wrapper(*args, **kwargs): try: return func(*args, **kwargs) except Exception as e: self.__handle_error() raise e return wrapper def __create_stream_handler(real_self, operation, on_stream_event, on_stream_error, on_stream_closed): stream_handler_type = type(operation + 'Handler', (getattr(client, operation + "StreamHandler"),), {}) if on_stream_event is not None: on_stream_event = real_self.__wrap_error(on_stream_event) def handler(self, event): if real_self.executor is not None: try: real_self.executor.submit(on_stream_event, event) except RuntimeError: if not real_self.ignore_executor_exceptions: raise else: on_stream_event(event) setattr(stream_handler_type, "on_stream_event", handler) if on_stream_error is not None: on_stream_error = real_self.__wrap_error(on_stream_error) def handler(self, error): return on_stream_error(error) setattr(stream_handler_type, "on_stream_error", handler) if on_stream_closed is not None: on_stream_closed = real_self.__wrap_error(on_stream_closed) def handler(self): if real_self.executor is not None: try: real_self.executor.submit(on_stream_closed) except RuntimeError: if real_self.ignore_executor_exceptions: raise else: on_stream_closed() setattr(stream_handler_type, "on_stream_closed", handler) return stream_handler_type() def __handle_stream_handler(real_self, operation, stream_handler, on_stream_event, on_stream_error, on_stream_closed): if stream_handler is not None and (on_stream_event is not None or on_stream_error is not None or on_stream_closed is not None): raise ValueError("Must choose either stream_handler or on_stream_event/on_stream_error/on_stream_closed") if stream_handler is not None and real_self.executor is not None: return real_self.__create_stream_handler(operation, stream_handler.on_stream_event, stream_handler.on_stream_error, stream_handler.on_stream_closed) if stream_handler is None: return real_self.__create_stream_handler(operation, on_stream_event, on_stream_error, on_stream_closed) return stream_handler def authorize_client_device_action(self, *, client_device_auth_token: typing.Optional[str] = None, operation: typing.Optional[str] = None, resource: typing.Optional[str] = None) -> model.AuthorizeClientDeviceActionResponse: """ Perform the AuthorizeClientDeviceAction operation synchronously. Args: client_device_auth_token: operation: resource: """ return self.authorize_client_device_action_async(client_device_auth_token=client_device_auth_token, operation=operation, resource=resource).result() def authorize_client_device_action_async(self, *, client_device_auth_token: typing.Optional[str] = None, operation: typing.Optional[str] = None, resource: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.AuthorizeClientDeviceActionResponse] """ Perform the AuthorizeClientDeviceAction operation asynchronously. Args: client_device_auth_token: operation: resource: """ request = model.AuthorizeClientDeviceActionRequest(client_device_auth_token=client_device_auth_token, operation=operation, resource=resource) operation = self.client.new_authorize_client_device_action() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def cancel_local_deployment(self, *, deployment_id: typing.Optional[str] = None) -> model.CancelLocalDeploymentResponse: """ Perform the CancelLocalDeployment operation synchronously. Args: deployment_id: """ return self.cancel_local_deployment_async(deployment_id=deployment_id).result() def cancel_local_deployment_async(self, *, deployment_id: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.CancelLocalDeploymentResponse] """ Perform the CancelLocalDeployment operation asynchronously. Args: deployment_id: """ request = model.CancelLocalDeploymentRequest(deployment_id=deployment_id) operation = self.client.new_cancel_local_deployment() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def create_debug_password(self) -> model.CreateDebugPasswordResponse: """ Perform the CreateDebugPassword operation synchronously. """ return self.create_debug_password_async().result() def create_debug_password_async(self): # type: (...) -> concurrent.futures.Future[model.CreateDebugPasswordResponse] """ Perform the CreateDebugPassword operation asynchronously. """ request = model.CreateDebugPasswordRequest() operation = self.client.new_create_debug_password() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def create_local_deployment(self, *, group_name: typing.Optional[str] = None, root_component_versions_to_add: typing.Optional[typing.Dict[str, str]] = None, root_components_to_remove: typing.Optional[typing.List[str]] = None, component_to_configuration: typing.Optional[typing.Dict[str, typing.Dict[str, typing.Any]]] = None, component_to_run_with_info: typing.Optional[typing.Dict[str, model.RunWithInfo]] = None, recipe_directory_path: typing.Optional[str] = None, artifacts_directory_path: typing.Optional[str] = None, failure_handling_policy: typing.Optional[str] = None) -> model.CreateLocalDeploymentResponse: """ Perform the CreateLocalDeployment operation synchronously. Args: group_name: root_component_versions_to_add: root_components_to_remove: component_to_configuration: component_to_run_with_info: recipe_directory_path: artifacts_directory_path: failure_handling_policy: FailureHandlingPolicy enum value """ return self.create_local_deployment_async(group_name=group_name, root_component_versions_to_add=root_component_versions_to_add, root_components_to_remove=root_components_to_remove, component_to_configuration=component_to_configuration, component_to_run_with_info=component_to_run_with_info, recipe_directory_path=recipe_directory_path, artifacts_directory_path=artifacts_directory_path, failure_handling_policy=failure_handling_policy).result() def create_local_deployment_async(self, *, group_name: typing.Optional[str] = None, root_component_versions_to_add: typing.Optional[typing.Dict[str, str]] = None, root_components_to_remove: typing.Optional[typing.List[str]] = None, component_to_configuration: typing.Optional[typing.Dict[str, typing.Dict[str, typing.Any]]] = None, component_to_run_with_info: typing.Optional[typing.Dict[str, model.RunWithInfo]] = None, recipe_directory_path: typing.Optional[str] = None, artifacts_directory_path: typing.Optional[str] = None, failure_handling_policy: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.CreateLocalDeploymentResponse] """ Perform the CreateLocalDeployment operation asynchronously. Args: group_name: root_component_versions_to_add: root_components_to_remove: component_to_configuration: component_to_run_with_info: recipe_directory_path: artifacts_directory_path: failure_handling_policy: FailureHandlingPolicy enum value """ request = model.CreateLocalDeploymentRequest(group_name=group_name, root_component_versions_to_add=root_component_versions_to_add, root_components_to_remove=root_components_to_remove, component_to_configuration=component_to_configuration, component_to_run_with_info=component_to_run_with_info, recipe_directory_path=recipe_directory_path, artifacts_directory_path=artifacts_directory_path, failure_handling_policy=failure_handling_policy) operation = self.client.new_create_local_deployment() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def defer_component_update(self, *, deployment_id: typing.Optional[str] = None, message: typing.Optional[str] = None, recheck_after_ms: typing.Optional[int] = None) -> model.DeferComponentUpdateResponse: """ Perform the DeferComponentUpdate operation synchronously. Args: deployment_id: message: recheck_after_ms: """ return self.defer_component_update_async(deployment_id=deployment_id, message=message, recheck_after_ms=recheck_after_ms).result() def defer_component_update_async(self, *, deployment_id: typing.Optional[str] = None, message: typing.Optional[str] = None, recheck_after_ms: typing.Optional[int] = None): # type: (...) -> concurrent.futures.Future[model.DeferComponentUpdateResponse] """ Perform the DeferComponentUpdate operation asynchronously. Args: deployment_id: message: recheck_after_ms: """ request = model.DeferComponentUpdateRequest(deployment_id=deployment_id, message=message, recheck_after_ms=recheck_after_ms) operation = self.client.new_defer_component_update() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def delete_thing_shadow(self, *, thing_name: typing.Optional[str] = None, shadow_name: typing.Optional[str] = None) -> model.DeleteThingShadowResponse: """ Perform the DeleteThingShadow operation synchronously. Args: thing_name: shadow_name: """ return self.delete_thing_shadow_async(thing_name=thing_name, shadow_name=shadow_name).result() def delete_thing_shadow_async(self, *, thing_name: typing.Optional[str] = None, shadow_name: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.DeleteThingShadowResponse] """ Perform the DeleteThingShadow operation asynchronously. Args: thing_name: shadow_name: """ request = model.DeleteThingShadowRequest(thing_name=thing_name, shadow_name=shadow_name) operation = self.client.new_delete_thing_shadow() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def get_client_device_auth_token(self, *, credential: typing.Optional[model.CredentialDocument] = None) -> model.GetClientDeviceAuthTokenResponse: """ Perform the GetClientDeviceAuthToken operation synchronously. Args: credential: """ return self.get_client_device_auth_token_async(credential=credential).result() def get_client_device_auth_token_async(self, *, credential: typing.Optional[model.CredentialDocument] = None): # type: (...) -> concurrent.futures.Future[model.GetClientDeviceAuthTokenResponse] """ Perform the GetClientDeviceAuthToken operation asynchronously. Args: credential: """ request = model.GetClientDeviceAuthTokenRequest(credential=credential) operation = self.client.new_get_client_device_auth_token() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def get_component_details(self, *, component_name: typing.Optional[str] = None) -> model.GetComponentDetailsResponse: """ Perform the GetComponentDetails operation synchronously. Args: component_name: """ return self.get_component_details_async(component_name=component_name).result() def get_component_details_async(self, *, component_name: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.GetComponentDetailsResponse] """ Perform the GetComponentDetails operation asynchronously. Args: component_name: """ request = model.GetComponentDetailsRequest(component_name=component_name) operation = self.client.new_get_component_details() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def get_configuration(self, *, component_name: typing.Optional[str] = None, key_path: typing.Optional[typing.List[str]] = None) -> model.GetConfigurationResponse: """ Perform the GetConfiguration operation synchronously. Args: component_name: key_path: """ return self.get_configuration_async(component_name=component_name, key_path=key_path).result() def get_configuration_async(self, *, component_name: typing.Optional[str] = None, key_path: typing.Optional[typing.List[str]] = None): # type: (...) -> concurrent.futures.Future[model.GetConfigurationResponse] """ Perform the GetConfiguration operation asynchronously. Args: component_name: key_path: """ request = model.GetConfigurationRequest(component_name=component_name, key_path=key_path) operation = self.client.new_get_configuration() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def get_local_deployment_status(self, *, deployment_id: typing.Optional[str] = None) -> model.GetLocalDeploymentStatusResponse: """ Perform the GetLocalDeploymentStatus operation synchronously. Args: deployment_id: """ return self.get_local_deployment_status_async(deployment_id=deployment_id).result() def get_local_deployment_status_async(self, *, deployment_id: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.GetLocalDeploymentStatusResponse] """ Perform the GetLocalDeploymentStatus operation asynchronously. Args: deployment_id: """ request = model.GetLocalDeploymentStatusRequest(deployment_id=deployment_id) operation = self.client.new_get_local_deployment_status() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def get_secret_value(self, *, secret_id: typing.Optional[str] = None, version_id: typing.Optional[str] = None, version_stage: typing.Optional[str] = None) -> model.GetSecretValueResponse: """ Perform the GetSecretValue operation synchronously. Args: secret_id: version_id: version_stage: """ return self.get_secret_value_async(secret_id=secret_id, version_id=version_id, version_stage=version_stage).result() def get_secret_value_async(self, *, secret_id: typing.Optional[str] = None, version_id: typing.Optional[str] = None, version_stage: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.GetSecretValueResponse] """ Perform the GetSecretValue operation asynchronously. Args: secret_id: version_id: version_stage: """ request = model.GetSecretValueRequest(secret_id=secret_id, version_id=version_id, version_stage=version_stage) operation = self.client.new_get_secret_value() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def get_thing_shadow(self, *, thing_name: typing.Optional[str] = None, shadow_name: typing.Optional[str] = None) -> model.GetThingShadowResponse: """ Perform the GetThingShadow operation synchronously. Args: thing_name: shadow_name: """ return self.get_thing_shadow_async(thing_name=thing_name, shadow_name=shadow_name).result() def get_thing_shadow_async(self, *, thing_name: typing.Optional[str] = None, shadow_name: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.GetThingShadowResponse] """ Perform the GetThingShadow operation asynchronously. Args: thing_name: shadow_name: """ request = model.GetThingShadowRequest(thing_name=thing_name, shadow_name=shadow_name) operation = self.client.new_get_thing_shadow() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def list_components(self) -> model.ListComponentsResponse: """ Perform the ListComponents operation synchronously. """ return self.list_components_async().result() def list_components_async(self): # type: (...) -> concurrent.futures.Future[model.ListComponentsResponse] """ Perform the ListComponents operation asynchronously. """ request = model.ListComponentsRequest() operation = self.client.new_list_components() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def list_local_deployments(self) -> model.ListLocalDeploymentsResponse: """ Perform the ListLocalDeployments operation synchronously. """ return self.list_local_deployments_async().result() def list_local_deployments_async(self): # type: (...) -> concurrent.futures.Future[model.ListLocalDeploymentsResponse] """ Perform the ListLocalDeployments operation asynchronously. """ request = model.ListLocalDeploymentsRequest() operation = self.client.new_list_local_deployments() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def list_named_shadows_for_thing(self, *, thing_name: typing.Optional[str] = None, next_token: typing.Optional[str] = None, page_size: typing.Optional[int] = None) -> model.ListNamedShadowsForThingResponse: """ Perform the ListNamedShadowsForThing operation synchronously. Args: thing_name: next_token: page_size: """ return self.list_named_shadows_for_thing_async(thing_name=thing_name, next_token=next_token, page_size=page_size).result() def list_named_shadows_for_thing_async(self, *, thing_name: typing.Optional[str] = None, next_token: typing.Optional[str] = None, page_size: typing.Optional[int] = None): # type: (...) -> concurrent.futures.Future[model.ListNamedShadowsForThingResponse] """ Perform the ListNamedShadowsForThing operation asynchronously. Args: thing_name: next_token: page_size: """ request = model.ListNamedShadowsForThingRequest(thing_name=thing_name, next_token=next_token, page_size=page_size) operation = self.client.new_list_named_shadows_for_thing() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def pause_component(self, *, component_name: typing.Optional[str] = None) -> model.PauseComponentResponse: """ Perform the PauseComponent operation synchronously. Args: component_name: """ return self.pause_component_async(component_name=component_name).result() def pause_component_async(self, *, component_name: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.PauseComponentResponse] """ Perform the PauseComponent operation asynchronously. Args: component_name: """ request = model.PauseComponentRequest(component_name=component_name) operation = self.client.new_pause_component() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def publish_to_iot_core(self, *, topic_name: typing.Optional[str] = None, qos: typing.Optional[str] = None, payload: typing.Optional[typing.Union[bytes, str]] = None, retain: typing.Optional[bool] = None, user_properties: typing.Optional[typing.List[model.UserProperty]] = None, message_expiry_interval_seconds: typing.Optional[int] = None, correlation_data: typing.Optional[typing.Union[bytes, str]] = None, response_topic: typing.Optional[str] = None, payload_format: typing.Optional[str] = None, content_type: typing.Optional[str] = None) -> model.PublishToIoTCoreResponse: """ Perform the PublishToIoTCore operation synchronously. Args: topic_name: qos: QOS enum value payload: retain: user_properties: message_expiry_interval_seconds: correlation_data: response_topic: payload_format: PayloadFormat enum value content_type: """ return self.publish_to_iot_core_async(topic_name=topic_name, qos=qos, payload=payload, retain=retain, user_properties=user_properties, message_expiry_interval_seconds=message_expiry_interval_seconds, correlation_data=correlation_data, response_topic=response_topic, payload_format=payload_format, content_type=content_type).result() def publish_to_iot_core_async(self, *, topic_name: typing.Optional[str] = None, qos: typing.Optional[str] = None, payload: typing.Optional[typing.Union[bytes, str]] = None, retain: typing.Optional[bool] = None, user_properties: typing.Optional[typing.List[model.UserProperty]] = None, message_expiry_interval_seconds: typing.Optional[int] = None, correlation_data: typing.Optional[typing.Union[bytes, str]] = None, response_topic: typing.Optional[str] = None, payload_format: typing.Optional[str] = None, content_type: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.PublishToIoTCoreResponse] """ Perform the PublishToIoTCore operation asynchronously. Args: topic_name: qos: QOS enum value payload: retain: user_properties: message_expiry_interval_seconds: correlation_data: response_topic: payload_format: PayloadFormat enum value content_type: """ request = model.PublishToIoTCoreRequest(topic_name=topic_name, qos=qos, payload=payload, retain=retain, user_properties=user_properties, message_expiry_interval_seconds=message_expiry_interval_seconds, correlation_data=correlation_data, response_topic=response_topic, payload_format=payload_format, content_type=content_type) operation = self.client.new_publish_to_iot_core() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def publish_to_topic(self, *, topic: typing.Optional[str] = None, publish_message: typing.Optional[model.PublishMessage] = None) -> model.PublishToTopicResponse: """ Perform the PublishToTopic operation synchronously. Args: topic: publish_message: """ return self.publish_to_topic_async(topic=topic, publish_message=publish_message).result() def publish_to_topic_async(self, *, topic: typing.Optional[str] = None, publish_message: typing.Optional[model.PublishMessage] = None): # type: (...) -> concurrent.futures.Future[model.PublishToTopicResponse] """ Perform the PublishToTopic operation asynchronously. Args: topic: publish_message: """ request = model.PublishToTopicRequest(topic=topic, publish_message=publish_message) operation = self.client.new_publish_to_topic() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def put_component_metric(self, *, metrics: typing.Optional[typing.List[model.Metric]] = None) -> model.PutComponentMetricResponse: """ Perform the PutComponentMetric operation synchronously. Args: metrics: """ return self.put_component_metric_async(metrics=metrics).result() def put_component_metric_async(self, *, metrics: typing.Optional[typing.List[model.Metric]] = None): # type: (...) -> concurrent.futures.Future[model.PutComponentMetricResponse] """ Perform the PutComponentMetric operation asynchronously. Args: metrics: """ request = model.PutComponentMetricRequest(metrics=metrics) operation = self.client.new_put_component_metric() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def restart_component(self, *, component_name: typing.Optional[str] = None) -> model.RestartComponentResponse: """ Perform the RestartComponent operation synchronously. Args: component_name: """ return self.restart_component_async(component_name=component_name).result() def restart_component_async(self, *, component_name: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.RestartComponentResponse] """ Perform the RestartComponent operation asynchronously. Args: component_name: """ request = model.RestartComponentRequest(component_name=component_name) operation = self.client.new_restart_component() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def resume_component(self, *, component_name: typing.Optional[str] = None) -> model.ResumeComponentResponse: """ Perform the ResumeComponent operation synchronously. Args: component_name: """ return self.resume_component_async(component_name=component_name).result() def resume_component_async(self, *, component_name: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.ResumeComponentResponse] """ Perform the ResumeComponent operation asynchronously. Args: component_name: """ request = model.ResumeComponentRequest(component_name=component_name) operation = self.client.new_resume_component() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def send_configuration_validity_report(self, *, configuration_validity_report: typing.Optional[model.ConfigurationValidityReport] = None) -> model.SendConfigurationValidityReportResponse: """ Perform the SendConfigurationValidityReport operation synchronously. Args: configuration_validity_report: """ return self.send_configuration_validity_report_async(configuration_validity_report=configuration_validity_report).result() def send_configuration_validity_report_async(self, *, configuration_validity_report: typing.Optional[model.ConfigurationValidityReport] = None): # type: (...) -> concurrent.futures.Future[model.SendConfigurationValidityReportResponse] """ Perform the SendConfigurationValidityReport operation asynchronously. Args: configuration_validity_report: """ request = model.SendConfigurationValidityReportRequest(configuration_validity_report=configuration_validity_report) operation = self.client.new_send_configuration_validity_report() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def stop_component(self, *, component_name: typing.Optional[str] = None) -> model.StopComponentResponse: """ Perform the StopComponent operation synchronously. Args: component_name: """ return self.stop_component_async(component_name=component_name).result() def stop_component_async(self, *, component_name: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.StopComponentResponse] """ Perform the StopComponent operation asynchronously. Args: component_name: """ request = model.StopComponentRequest(component_name=component_name) operation = self.client.new_stop_component() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def subscribe_to_certificate_updates(self, *, certificate_options: typing.Optional[model.CertificateOptions] = None, stream_handler: typing.Optional[client.SubscribeToCertificateUpdatesStreamHandler] = None, on_stream_event: typing.Optional[typing.Callable[[model.CertificateUpdateEvent], None]] = None, on_stream_error: typing.Optional[typing.Callable[[Exception], bool]] = None, on_stream_closed: typing.Optional[typing.Callable[[], None]] = None ) -> typing.Tuple[model.SubscribeToCertificateUpdatesResponse, client.SubscribeToCertificateUpdatesOperation]: """ Perform the SubscribeToCertificateUpdates operation synchronously. The initial response or error will be returned synchronously, further events will arrive via the streaming callbacks Args: certificate_options: stream_handler: Methods on this object will be called as stream events happen on this operation. If an executor is provided, the on_stream_event and on_stream_closed methods will run in the executor. on_stream_event: Callback for stream events. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. on_stream_error: Callback for stream errors. Return true to close the stream, return false to keep the stream open. Mutually exclusive with stream_handler. Even if an executor is provided, this method will not run in the executor. on_stream_closed: Callback for when the stream closes. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. """ (fut, op) = self.subscribe_to_certificate_updates_async(certificate_options=certificate_options, stream_handler=stream_handler, on_stream_event=on_stream_event, on_stream_error=on_stream_error, on_stream_closed=on_stream_closed) return fut.result(), op def subscribe_to_certificate_updates_async(self, *, certificate_options: typing.Optional[model.CertificateOptions] = None, stream_handler: client.SubscribeToCertificateUpdatesStreamHandler = None, on_stream_event: typing.Optional[typing.Callable[[model.CertificateUpdateEvent], None]] = None, on_stream_error: typing.Optional[typing.Callable[[Exception], bool]] = None, on_stream_closed: typing.Optional[typing.Callable[[], None]] = None ): # type: (...) -> typing.Tuple[concurrent.futures.Future[model.SubscribeToCertificateUpdatesResponse], client.SubscribeToCertificateUpdatesOperation] """ Perform the SubscribeToCertificateUpdates operation asynchronously. The initial response or error will be returned as the result of the asynchronous future, further events will arrive via the streaming callbacks Args: certificate_options: stream_handler: Methods on this object will be called as stream events happen on this operation. If an executor is provided, the on_stream_event and on_stream_closed methods will run in the executor. on_stream_event: Callback for stream events. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. on_stream_error: Callback for stream errors. Return true to close the stream, return false to keep the stream open. Mutually exclusive with stream_handler. Even if an executor is provided, this method will not run in the executor. on_stream_closed: Callback for when the stream closes. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. """ stream_handler = self.__handle_stream_handler("SubscribeToCertificateUpdates", stream_handler, on_stream_event, on_stream_error, on_stream_closed) request = model.SubscribeToCertificateUpdatesRequest(certificate_options=certificate_options) operation = self.client.new_subscribe_to_certificate_updates(stream_handler) write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()), operation def subscribe_to_component_updates(self, *, stream_handler: typing.Optional[client.SubscribeToComponentUpdatesStreamHandler] = None, on_stream_event: typing.Optional[typing.Callable[[model.ComponentUpdatePolicyEvents], None]] = None, on_stream_error: typing.Optional[typing.Callable[[Exception], bool]] = None, on_stream_closed: typing.Optional[typing.Callable[[], None]] = None ) -> typing.Tuple[model.SubscribeToComponentUpdatesResponse, client.SubscribeToComponentUpdatesOperation]: """ Perform the SubscribeToComponentUpdates operation synchronously. The initial response or error will be returned synchronously, further events will arrive via the streaming callbacks Args: stream_handler: Methods on this object will be called as stream events happen on this operation. If an executor is provided, the on_stream_event and on_stream_closed methods will run in the executor. on_stream_event: Callback for stream events. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. on_stream_error: Callback for stream errors. Return true to close the stream, return false to keep the stream open. Mutually exclusive with stream_handler. Even if an executor is provided, this method will not run in the executor. on_stream_closed: Callback for when the stream closes. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. """ (fut, op) = self.subscribe_to_component_updates_async( stream_handler=stream_handler, on_stream_event=on_stream_event, on_stream_error=on_stream_error, on_stream_closed=on_stream_closed) return fut.result(), op def subscribe_to_component_updates_async(self, *, stream_handler: client.SubscribeToComponentUpdatesStreamHandler = None, on_stream_event: typing.Optional[typing.Callable[[model.ComponentUpdatePolicyEvents], None]] = None, on_stream_error: typing.Optional[typing.Callable[[Exception], bool]] = None, on_stream_closed: typing.Optional[typing.Callable[[], None]] = None ): # type: (...) -> typing.Tuple[concurrent.futures.Future[model.SubscribeToComponentUpdatesResponse], client.SubscribeToComponentUpdatesOperation] """ Perform the SubscribeToComponentUpdates operation asynchronously. The initial response or error will be returned as the result of the asynchronous future, further events will arrive via the streaming callbacks Args: stream_handler: Methods on this object will be called as stream events happen on this operation. If an executor is provided, the on_stream_event and on_stream_closed methods will run in the executor. on_stream_event: Callback for stream events. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. on_stream_error: Callback for stream errors. Return true to close the stream, return false to keep the stream open. Mutually exclusive with stream_handler. Even if an executor is provided, this method will not run in the executor. on_stream_closed: Callback for when the stream closes. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. """ stream_handler = self.__handle_stream_handler("SubscribeToComponentUpdates", stream_handler, on_stream_event, on_stream_error, on_stream_closed) request = model.SubscribeToComponentUpdatesRequest() operation = self.client.new_subscribe_to_component_updates(stream_handler) write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()), operation def subscribe_to_configuration_update(self, *, component_name: typing.Optional[str] = None, key_path: typing.Optional[typing.List[str]] = None, stream_handler: typing.Optional[client.SubscribeToConfigurationUpdateStreamHandler] = None, on_stream_event: typing.Optional[typing.Callable[[model.ConfigurationUpdateEvents], None]] = None, on_stream_error: typing.Optional[typing.Callable[[Exception], bool]] = None, on_stream_closed: typing.Optional[typing.Callable[[], None]] = None ) -> typing.Tuple[model.SubscribeToConfigurationUpdateResponse, client.SubscribeToConfigurationUpdateOperation]: """ Perform the SubscribeToConfigurationUpdate operation synchronously. The initial response or error will be returned synchronously, further events will arrive via the streaming callbacks Args: component_name: key_path: stream_handler: Methods on this object will be called as stream events happen on this operation. If an executor is provided, the on_stream_event and on_stream_closed methods will run in the executor. on_stream_event: Callback for stream events. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. on_stream_error: Callback for stream errors. Return true to close the stream, return false to keep the stream open. Mutually exclusive with stream_handler. Even if an executor is provided, this method will not run in the executor. on_stream_closed: Callback for when the stream closes. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. """ (fut, op) = self.subscribe_to_configuration_update_async(component_name=component_name, key_path=key_path, stream_handler=stream_handler, on_stream_event=on_stream_event, on_stream_error=on_stream_error, on_stream_closed=on_stream_closed) return fut.result(), op def subscribe_to_configuration_update_async(self, *, component_name: typing.Optional[str] = None, key_path: typing.Optional[typing.List[str]] = None, stream_handler: client.SubscribeToConfigurationUpdateStreamHandler = None, on_stream_event: typing.Optional[typing.Callable[[model.ConfigurationUpdateEvents], None]] = None, on_stream_error: typing.Optional[typing.Callable[[Exception], bool]] = None, on_stream_closed: typing.Optional[typing.Callable[[], None]] = None ): # type: (...) -> typing.Tuple[concurrent.futures.Future[model.SubscribeToConfigurationUpdateResponse], client.SubscribeToConfigurationUpdateOperation] """ Perform the SubscribeToConfigurationUpdate operation asynchronously. The initial response or error will be returned as the result of the asynchronous future, further events will arrive via the streaming callbacks Args: component_name: key_path: stream_handler: Methods on this object will be called as stream events happen on this operation. If an executor is provided, the on_stream_event and on_stream_closed methods will run in the executor. on_stream_event: Callback for stream events. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. on_stream_error: Callback for stream errors. Return true to close the stream, return false to keep the stream open. Mutually exclusive with stream_handler. Even if an executor is provided, this method will not run in the executor. on_stream_closed: Callback for when the stream closes. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. """ stream_handler = self.__handle_stream_handler("SubscribeToConfigurationUpdate", stream_handler, on_stream_event, on_stream_error, on_stream_closed) request = model.SubscribeToConfigurationUpdateRequest(component_name=component_name, key_path=key_path) operation = self.client.new_subscribe_to_configuration_update(stream_handler) write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()), operation def subscribe_to_iot_core(self, *, topic_name: typing.Optional[str] = None, qos: typing.Optional[str] = None, stream_handler: typing.Optional[client.SubscribeToIoTCoreStreamHandler] = None, on_stream_event: typing.Optional[typing.Callable[[model.IoTCoreMessage], None]] = None, on_stream_error: typing.Optional[typing.Callable[[Exception], bool]] = None, on_stream_closed: typing.Optional[typing.Callable[[], None]] = None ) -> typing.Tuple[model.SubscribeToIoTCoreResponse, client.SubscribeToIoTCoreOperation]: """ Perform the SubscribeToIoTCore operation synchronously. The initial response or error will be returned synchronously, further events will arrive via the streaming callbacks Args: topic_name: qos: QOS enum value stream_handler: Methods on this object will be called as stream events happen on this operation. If an executor is provided, the on_stream_event and on_stream_closed methods will run in the executor. on_stream_event: Callback for stream events. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. on_stream_error: Callback for stream errors. Return true to close the stream, return false to keep the stream open. Mutually exclusive with stream_handler. Even if an executor is provided, this method will not run in the executor. on_stream_closed: Callback for when the stream closes. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. """ (fut, op) = self.subscribe_to_iot_core_async(topic_name=topic_name, qos=qos, stream_handler=stream_handler, on_stream_event=on_stream_event, on_stream_error=on_stream_error, on_stream_closed=on_stream_closed) return fut.result(), op def subscribe_to_iot_core_async(self, *, topic_name: typing.Optional[str] = None, qos: typing.Optional[str] = None, stream_handler: client.SubscribeToIoTCoreStreamHandler = None, on_stream_event: typing.Optional[typing.Callable[[model.IoTCoreMessage], None]] = None, on_stream_error: typing.Optional[typing.Callable[[Exception], bool]] = None, on_stream_closed: typing.Optional[typing.Callable[[], None]] = None ): # type: (...) -> typing.Tuple[concurrent.futures.Future[model.SubscribeToIoTCoreResponse], client.SubscribeToIoTCoreOperation] """ Perform the SubscribeToIoTCore operation asynchronously. The initial response or error will be returned as the result of the asynchronous future, further events will arrive via the streaming callbacks Args: topic_name: qos: QOS enum value stream_handler: Methods on this object will be called as stream events happen on this operation. If an executor is provided, the on_stream_event and on_stream_closed methods will run in the executor. on_stream_event: Callback for stream events. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. on_stream_error: Callback for stream errors. Return true to close the stream, return false to keep the stream open. Mutually exclusive with stream_handler. Even if an executor is provided, this method will not run in the executor. on_stream_closed: Callback for when the stream closes. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. """ stream_handler = self.__handle_stream_handler("SubscribeToIoTCore", stream_handler, on_stream_event, on_stream_error, on_stream_closed) request = model.SubscribeToIoTCoreRequest(topic_name=topic_name, qos=qos) operation = self.client.new_subscribe_to_iot_core(stream_handler) write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()), operation def subscribe_to_topic(self, *, topic: typing.Optional[str] = None, receive_mode: typing.Optional[str] = None, stream_handler: typing.Optional[client.SubscribeToTopicStreamHandler] = None, on_stream_event: typing.Optional[typing.Callable[[model.SubscriptionResponseMessage], None]] = None, on_stream_error: typing.Optional[typing.Callable[[Exception], bool]] = None, on_stream_closed: typing.Optional[typing.Callable[[], None]] = None ) -> typing.Tuple[model.SubscribeToTopicResponse, client.SubscribeToTopicOperation]: """ Perform the SubscribeToTopic operation synchronously. The initial response or error will be returned synchronously, further events will arrive via the streaming callbacks Args: topic: receive_mode: ReceiveMode enum value stream_handler: Methods on this object will be called as stream events happen on this operation. If an executor is provided, the on_stream_event and on_stream_closed methods will run in the executor. on_stream_event: Callback for stream events. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. on_stream_error: Callback for stream errors. Return true to close the stream, return false to keep the stream open. Mutually exclusive with stream_handler. Even if an executor is provided, this method will not run in the executor. on_stream_closed: Callback for when the stream closes. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. """ (fut, op) = self.subscribe_to_topic_async(topic=topic, receive_mode=receive_mode, stream_handler=stream_handler, on_stream_event=on_stream_event, on_stream_error=on_stream_error, on_stream_closed=on_stream_closed) return fut.result(), op def subscribe_to_topic_async(self, *, topic: typing.Optional[str] = None, receive_mode: typing.Optional[str] = None, stream_handler: client.SubscribeToTopicStreamHandler = None, on_stream_event: typing.Optional[typing.Callable[[model.SubscriptionResponseMessage], None]] = None, on_stream_error: typing.Optional[typing.Callable[[Exception], bool]] = None, on_stream_closed: typing.Optional[typing.Callable[[], None]] = None ): # type: (...) -> typing.Tuple[concurrent.futures.Future[model.SubscribeToTopicResponse], client.SubscribeToTopicOperation] """ Perform the SubscribeToTopic operation asynchronously. The initial response or error will be returned as the result of the asynchronous future, further events will arrive via the streaming callbacks Args: topic: receive_mode: ReceiveMode enum value stream_handler: Methods on this object will be called as stream events happen on this operation. If an executor is provided, the on_stream_event and on_stream_closed methods will run in the executor. on_stream_event: Callback for stream events. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. on_stream_error: Callback for stream errors. Return true to close the stream, return false to keep the stream open. Mutually exclusive with stream_handler. Even if an executor is provided, this method will not run in the executor. on_stream_closed: Callback for when the stream closes. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. """ stream_handler = self.__handle_stream_handler("SubscribeToTopic", stream_handler, on_stream_event, on_stream_error, on_stream_closed) request = model.SubscribeToTopicRequest(topic=topic, receive_mode=receive_mode) operation = self.client.new_subscribe_to_topic(stream_handler) write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()), operation def subscribe_to_validate_configuration_updates(self, *, stream_handler: typing.Optional[client.SubscribeToValidateConfigurationUpdatesStreamHandler] = None, on_stream_event: typing.Optional[typing.Callable[[model.ValidateConfigurationUpdateEvents], None]] = None, on_stream_error: typing.Optional[typing.Callable[[Exception], bool]] = None, on_stream_closed: typing.Optional[typing.Callable[[], None]] = None ) -> typing.Tuple[model.SubscribeToValidateConfigurationUpdatesResponse, client.SubscribeToValidateConfigurationUpdatesOperation]: """ Perform the SubscribeToValidateConfigurationUpdates operation synchronously. The initial response or error will be returned synchronously, further events will arrive via the streaming callbacks Args: stream_handler: Methods on this object will be called as stream events happen on this operation. If an executor is provided, the on_stream_event and on_stream_closed methods will run in the executor. on_stream_event: Callback for stream events. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. on_stream_error: Callback for stream errors. Return true to close the stream, return false to keep the stream open. Mutually exclusive with stream_handler. Even if an executor is provided, this method will not run in the executor. on_stream_closed: Callback for when the stream closes. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. """ (fut, op) = self.subscribe_to_validate_configuration_updates_async( stream_handler=stream_handler, on_stream_event=on_stream_event, on_stream_error=on_stream_error, on_stream_closed=on_stream_closed) return fut.result(), op def subscribe_to_validate_configuration_updates_async(self, *, stream_handler: client.SubscribeToValidateConfigurationUpdatesStreamHandler = None, on_stream_event: typing.Optional[typing.Callable[[model.ValidateConfigurationUpdateEvents], None]] = None, on_stream_error: typing.Optional[typing.Callable[[Exception], bool]] = None, on_stream_closed: typing.Optional[typing.Callable[[], None]] = None ): # type: (...) -> typing.Tuple[concurrent.futures.Future[model.SubscribeToValidateConfigurationUpdatesResponse], client.SubscribeToValidateConfigurationUpdatesOperation] """ Perform the SubscribeToValidateConfigurationUpdates operation asynchronously. The initial response or error will be returned as the result of the asynchronous future, further events will arrive via the streaming callbacks Args: stream_handler: Methods on this object will be called as stream events happen on this operation. If an executor is provided, the on_stream_event and on_stream_closed methods will run in the executor. on_stream_event: Callback for stream events. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. on_stream_error: Callback for stream errors. Return true to close the stream, return false to keep the stream open. Mutually exclusive with stream_handler. Even if an executor is provided, this method will not run in the executor. on_stream_closed: Callback for when the stream closes. Mutually exclusive with stream_handler. If an executor is provided, this method will run in the executor. """ stream_handler = self.__handle_stream_handler("SubscribeToValidateConfigurationUpdates", stream_handler, on_stream_event, on_stream_error, on_stream_closed) request = model.SubscribeToValidateConfigurationUpdatesRequest() operation = self.client.new_subscribe_to_validate_configuration_updates(stream_handler) write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()), operation def update_configuration(self, *, key_path: typing.Optional[typing.List[str]] = None, timestamp: typing.Optional[datetime.datetime] = None, value_to_merge: typing.Optional[typing.Dict[str, typing.Any]] = None) -> model.UpdateConfigurationResponse: """ Perform the UpdateConfiguration operation synchronously. Args: key_path: timestamp: value_to_merge: """ return self.update_configuration_async(key_path=key_path, timestamp=timestamp, value_to_merge=value_to_merge).result() def update_configuration_async(self, *, key_path: typing.Optional[typing.List[str]] = None, timestamp: typing.Optional[datetime.datetime] = None, value_to_merge: typing.Optional[typing.Dict[str, typing.Any]] = None): # type: (...) -> concurrent.futures.Future[model.UpdateConfigurationResponse] """ Perform the UpdateConfiguration operation asynchronously. Args: key_path: timestamp: value_to_merge: """ request = model.UpdateConfigurationRequest(key_path=key_path, timestamp=timestamp, value_to_merge=value_to_merge) operation = self.client.new_update_configuration() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def update_state(self, *, state: typing.Optional[str] = None) -> model.UpdateStateResponse: """ Perform the UpdateState operation synchronously. Args: state: ReportedLifecycleState enum value """ return self.update_state_async(state=state).result() def update_state_async(self, *, state: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.UpdateStateResponse] """ Perform the UpdateState operation asynchronously. Args: state: ReportedLifecycleState enum value """ request = model.UpdateStateRequest(state=state) operation = self.client.new_update_state() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def update_thing_shadow(self, *, thing_name: typing.Optional[str] = None, shadow_name: typing.Optional[str] = None, payload: typing.Optional[typing.Union[bytes, str]] = None) -> model.UpdateThingShadowResponse: """ Perform the UpdateThingShadow operation synchronously. Args: thing_name: shadow_name: payload: """ return self.update_thing_shadow_async(thing_name=thing_name, shadow_name=shadow_name, payload=payload).result() def update_thing_shadow_async(self, *, thing_name: typing.Optional[str] = None, shadow_name: typing.Optional[str] = None, payload: typing.Optional[typing.Union[bytes, str]] = None): # type: (...) -> concurrent.futures.Future[model.UpdateThingShadowResponse] """ Perform the UpdateThingShadow operation asynchronously. Args: thing_name: shadow_name: payload: """ request = model.UpdateThingShadowRequest(thing_name=thing_name, shadow_name=shadow_name, payload=payload) operation = self.client.new_update_thing_shadow() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def validate_authorization_token(self, *, token: typing.Optional[str] = None) -> model.ValidateAuthorizationTokenResponse: """ Perform the ValidateAuthorizationToken operation synchronously. Args: token: """ return self.validate_authorization_token_async(token=token).result() def validate_authorization_token_async(self, *, token: typing.Optional[str] = None): # type: (...) -> concurrent.futures.Future[model.ValidateAuthorizationTokenResponse] """ Perform the ValidateAuthorizationToken operation asynchronously. Args: token: """ request = model.ValidateAuthorizationTokenRequest(token=token) operation = self.client.new_validate_authorization_token() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response()) def verify_client_device_identity(self, *, credential: typing.Optional[model.ClientDeviceCredential] = None) -> model.VerifyClientDeviceIdentityResponse: """ Perform the VerifyClientDeviceIdentity operation synchronously. Args: credential: """ return self.verify_client_device_identity_async(credential=credential).result() def verify_client_device_identity_async(self, *, credential: typing.Optional[model.ClientDeviceCredential] = None): # type: (...) -> concurrent.futures.Future[model.VerifyClientDeviceIdentityResponse] """ Perform the VerifyClientDeviceIdentity operation asynchronously. Args: credential: """ request = model.VerifyClientDeviceIdentityRequest(credential=credential) operation = self.client.new_verify_client_device_identity() write_future = operation.activate(request) return self.__combine_futures(write_future, operation.get_response())