diff --git a/localstack-core/localstack/services/events/api_destination.py b/localstack-core/localstack/services/events/api_destination.py index a7fe116eaed21..0bb9f097ffb4b 100644 --- a/localstack-core/localstack/services/events/api_destination.py +++ b/localstack-core/localstack/services/events/api_destination.py @@ -64,6 +64,23 @@ def __init__( description, ) + @classmethod + def restore_from_api_destination_and_connection( + cls, api_destination: ApiDestination, connection: Connection + ): + api_destination_service = cls( + name=api_destination.name, + region=api_destination.region, + account_id=api_destination.account_id, + connection_arn=api_destination.connection_arn, + connection=connection, + invocation_endpoint=api_destination.invocation_endpoint, + http_method=api_destination.http_method, + invocation_rate_limit_per_second=api_destination.invocation_rate_limit_per_second, + ) + api_destination_service.api_destination = api_destination + return api_destination_service + @property def arn(self) -> Arn: return self.api_destination.arn diff --git a/localstack-core/localstack/services/events/connection.py b/localstack-core/localstack/services/events/connection.py index bb855c9203e0c..c2b72a2025328 100644 --- a/localstack-core/localstack/services/events/connection.py +++ b/localstack-core/localstack/services/events/connection.py @@ -32,12 +32,16 @@ def __init__( auth_parameters: CreateConnectionAuthRequestParameters, description: ConnectionDescription | None = None, invocation_connectivity_parameters: ConnectivityResourceParameters | None = None, + create_secret: bool = True, ): self._validate_input(name, authorization_type) state = self._get_initial_state(authorization_type) - secret_arn = self.create_connection_secret( - region, account_id, name, authorization_type, auth_parameters - ) + + secret_arn = None + if create_secret: + secret_arn = self.create_connection_secret( + region, account_id, name, authorization_type, auth_parameters + ) public_auth_parameters = self._get_public_parameters(authorization_type, auth_parameters) self.connection = Connection( @@ -52,6 +56,19 @@ def __init__( invocation_connectivity_parameters, ) + @classmethod + def restore_from_connection(cls, connection: Connection): + connection_service = cls( + connection.name, + connection.region, + connection.account_id, + connection.authorization_type, + connection.auth_parameters, + create_secret=False, + ) + connection_service.connection = connection + return connection_service + @property def arn(self) -> Arn: return self.connection.arn