Temporal Server

Platform:

Channel Revision Published Runs on
1.23/stable 96 19 Oct 2026
Ubuntu 24.04 Ubuntu 22.04
1.23/stable 60 30 Apr 2026
Ubuntu 24.04 Ubuntu 22.04
1.23/edge 96 19 Oct 2026
Ubuntu 24.04 Ubuntu 22.04
1.23/edge 60 09 Dec 2025
Ubuntu 24.04 Ubuntu 22.04
1.31/stable 95 19 Oct 2026
Ubuntu 26.04
1.31/edge 95 19 Oct 2026
Ubuntu 26.04 Ubuntu 24.04
1.31/edge 75 04 Aug 2026
Ubuntu 26.04 Ubuntu 24.04
1.30/edge 90 16 Oct 2026
Ubuntu 24.04
1.29/edge 88 16 Oct 2026
Ubuntu 24.04
1.28/edge 87 16 Oct 2026
Ubuntu 24.04
1.27/edge 86 16 Oct 2026
Ubuntu 24.04
1.26/edge 83 15 Oct 2026
Ubuntu 24.04
1.25/edge 91 16 Oct 2026
Ubuntu 24.04
1.24/edge 84 16 Oct 2026
Ubuntu 24.04
juju deploy temporal-k8s --channel 1.23/stable

charms.temporal_k8s.v0.temporal_host_info

Charm library for the temporal-host-info relation interface.

This library provides the TemporalHostInfoProvider and TemporalHostInfoRequirer classes for charms that need to share Temporal server connection details (host, port and whether the frontend serves gRPC over TLS) over a Juju relation.

The tls field tells requirers which wire protocol the frontend speaks. It is derived by the provider from whether frontend TLS is configured, and requirers MUST honour it: dialling plaintext against a TLS frontend fails with "error reading server preface: EOF", and the reverse fails the TLS handshake.

When tls is true, the requirer also needs the CA that issued the frontend certificate in order to verify it. That CA is NOT carried on this relation; it is distributed over the certificate_transfer interface, so that CA rotation is handled by that library rather than reimplemented here.


class TemporalHostInfoProvider

Description

A class for managing the temporal-host-info interface provider. None

Methods

TemporalHostInfoProvider. __init__( self , charm: CharmBase , port: int , tls , host )

Create a new instance of the TemporalHostInfoProvider class.

Description

:param: charm: The charm that is using this interface. :type charm: CharmBase :param: port: The port number to provide to requirers. This is typically the 'frontend' service port. :type port: int :param: tls: Whether the frontend serves gRPC over TLS, or a callable returning it. Pass a callable when the value is not known at charm initialisation, which is the usual case since it depends on a certificates relation. :type tls: Union[Callable[[], bool], bool] :param: host: The host requirers should dial, or a callable returning it. Typically the frontend's in-cluster service FQDN, which the frontend certificate can name. When omitted, the relation binding address is published. :type host: Union[Callable[[], str], str, None]

TemporalHostInfoProvider. publish( self , relation )

Write the connection details to the relation databag(s).

Description

Call this whenever something the published data depends on changes -- in particular when the frontend's TLS state changes -- since those events are not observed by this library.

:param: relation: A single relation to update. All relations are updated when omitted. :type relation: Relation | None

class TemporalHostInfoChangedEvent

Description

Event emitted when temporal-host-info relation data changes. None

Methods

TemporalHostInfoChangedEvent. __init__( self , handle: Handle , host: str , port: int , tls: bool )

TemporalHostInfoChangedEvent. snapshot( self )

Description

Return a snapshot of the event. None

TemporalHostInfoChangedEvent. restore( self , snapshot )

Description

Restore the event from a snapshot. None

class TemporalHostInfoRequirerCharmEvents

Description

List of events that the requirer charm can leverage. None

class TemporalHostInfoRequirer

A class for managing the temporal-host-info interface requirer.

Description

Track this relation in your charm with:

.. code-block:: python

self.host_info = TemporalHostInfoRequirer(self)
# update container with new host info
framework.observe(self.host_info.on.temporal_host_info_changed, self._on_host_info_changed)

def _on_host_info_changed(self, event):
    host = self.host_info.host
    port = self.host_info.port
    tls = self.host_info.tls

When tls is true the frontend speaks gRPC over TLS and the requirer must dial accordingly, verifying the server certificate against the CA received over the certificate_transfer interface.

Methods

TemporalHostInfoRequirer. __init__( self , charm: CharmBase )

Create a new instance of the TemporalHostInfoRequirer class.

Description

:param: charm: The charm that is using this interface. :type charm: CharmBase

TemporalHostInfoRequirer. relation( self )

Description

Return the relation for this interface, if any. None

TemporalHostInfoRequirer. host( self )

Description

Return the host from the relation data. None

TemporalHostInfoRequirer. port( self )

Description

Return the port from the relation data. None

TemporalHostInfoRequirer. tls( self )

Return whether the frontend serves gRPC over TLS.

Description

Defaults to False when the field is absent, which is the case against providers older than LIBPATCH 2. That matches their behaviour: those versions never served the frontend over TLS.