---
title: Charmhub | Deploy Trino Server using Charmhub - The Open Operator Collection
description: Deploy the latest version of Trino Server as a Kubernetes Operator on
  any cloud.
url: https://charmhub.io/trino-k8s/libraries/trino_catalog
---

# Trino Server

[Business Data](https://charmhub.io/publisher/businessdata "View all packages from Business Data")

* [Business Data](https://charmhub.io/publisher/businessdata "View all packages from Business Data")

Platform:

stable 39

```
juju deploy trino-k8s
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

[Toggle side navigation](https://charmhub.io/trino-k8s/libraries/trino_catalog#drawer)

## charms.trino\_k8s.v0.trino\_catalog

* [*Docstrings*Docstrings](https://charmhub.io/trino-k8s/libraries/trino_catalog)
  [*Code*Source code](https://charmhub.io/trino-k8s/libraries/trino_catalog/source-code)
* + Download

    Fetch library

    ```
    charmcraft fetch-lib charms.trino_k8s.v0.trino_catalog
    ```

    [Download trino\_catalog.py](https://charmhub.io/trino-k8s/libraries/trino_catalog/download)
  + *Last updated* 12 Oct 2026
  + *Revision* Library version 0.6

Library for the trino\_catalog relation.

This library provides the TrinoCatalogProvider and TrinoCatalogRequirer classes that
handle the provider and the requirer sides of the trino\_catalog interface.

A requirer can be related to several Trino applications. `get_trino_info()` and
`get_credentials()` without arguments read the first relation only. To read
every relation, use the per-relation accessors, which skip (and log) relations
that are incomplete, malformed or whose secret cannot be read:

```
requirer = TrinoCatalogRequirer(self, relation_name="trino-catalog")

info_by_relation = requirer.get_all_trino_info()
credentials_by_relation = requirer.get_all_credentials()
for relation_id, info in info_by_relation.items():
    credentials = credentials_by_relation.get(relation_id)
    if not credentials:
        continue
    username, password = credentials
    connect(info["remote_app"], info["trino_url"], username, password)
```

---

Index

* [class TrinoCatalog](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalog)
* + [def \_\_init\_\_(
    self,
    name,
    connector,
    description)](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalog-__init__)
* + [def to\_dict(
    self)](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalog-to_dict)
* + [def from\_dict(
    cls,
    data)](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalog-from_dict)
* + [def \_\_repr\_\_(
    self)](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalog-__repr__)
* + [def \_\_eq\_\_(
    self,
    other)](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalog-__eq__)
* [class TrinoCatalogProvider](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalogprovider)
* + [def \_\_init\_\_(
    self,
    charm,
    relation\_name)](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalogprovider-__init__)
* + [def update\_relation\_data(
    self,
    relation,
    trino\_url,
    trino\_catalogs,
    trino\_credentials\_secret\_id)](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalogprovider-update_relation_data)
* [class TrinoCatalogRequirer](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalogrequirer)
* + [def \_\_init\_\_(
    self,
    charm,
    relation\_name)](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalogrequirer-__init__)
* + [def get\_trino\_info(
    self,
    relation)](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalogrequirer-get_trino_info)
* + [def get\_all\_trino\_info(
    self)](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalogrequirer-get_all_trino_info)
* + [def get\_credentials(
    self,
    relation)](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalogrequirer-get_credentials)
* + [def get\_all\_credentials(
    self)](https://charmhub.io/trino-k8s/libraries/trino_catalog#trinocatalogrequirer-get_all_credentials)

#### class TrinoCatalog

Description

Represents a Trino catalog. None

Methods

TrinoCatalog.
\_\_init\_\_(

*self*

,
name: str

,
connector: str

,
description: str
)

Initialize a TrinoCatalog.

Arguments

name

Catalog name (e.g., "marketing", "sales")

connector

Optional connector type (e.g., "postgresql", "mysql", "bigquery")

description

Optional description of the catalog

TrinoCatalog.
to\_dict(

*self*
)

Convert to dictionary for serialization.

Returns

Dictionary with name, connector, and description keys

TrinoCatalog.
from\_dict(

cls

,
data: dict
)

Create TrinoCatalog from dictionary.

Arguments

data

Dictionary with name, optional connector, and optional description

Returns

TrinoCatalog instance

TrinoCatalog.
\_\_repr\_\_(

*self*
)

Return a string representation for debugging.

Returns

String representation of the TrinoCatalog object.

TrinoCatalog.
\_\_eq\_\_(

*self*

,
other
)

Compare two catalogs for equality.

Arguments

other

Object to compare with.

Returns

True if catalogs are equal, False otherwise.

#### class TrinoCatalogProvider

Provider side of the trino\_catalog relation.

Description

This library handles the relation lifecycle and data updates.
The charm is responsible for providing the actual data (url, catalogs, secret).

Methods

TrinoCatalogProvider.
\_\_init\_\_(

*self*

,
charm: CharmBase

,
relation\_name: str
)

Initialize the TrinoCatalogProvider.

Arguments

charm

The charm instance.

relation\_name

Name of the relation.

TrinoCatalogProvider.
update\_relation\_data(

*self*

,
relation

,
trino\_url: str

,
trino\_catalogs

,
trino\_credentials\_secret\_id: str
)

Update relation data for a specific relation.

Arguments

relation

The relation to update

trino\_url

Trino URL (e.g., "trino.example.com:443")

trino\_catalogs

List of TrinoCatalog objects

trino\_credentials\_secret\_id

Juju secret ID containing Trino users

Returns

True if successful, False otherwise

#### class TrinoCatalogRequirer

Description

Requirer side of the trino\_catalog relation. None

Methods

TrinoCatalogRequirer.
\_\_init\_\_(

*self*

,
charm: CharmBase

,
relation\_name: str
)

Initialize the TrinoCatalogRequirer.

Arguments

charm

The charm instance.

relation\_name

Name of the relation.

TrinoCatalogRequirer.
get\_trino\_info(

*self*

,
relation
)

Get current Trino connection information.

Arguments

relation

The relation to read. Defaults to the first relation, in
which case the result only has the three keys below. When a
relation is given, the result also has relation\_id and
remote\_app.

Returns

Dictionary with trino\_url, trino\_catalogs (List[TrinoCatalog]),
and trino\_credentials\_secret\_id, or None if not available.

TrinoCatalogRequirer.
get\_all\_trino\_info(

*self*
)

Get Trino connection information for every complete relation.

Returns

Mapping of relation ID to a dictionary with trino\_url,
trino\_catalogs (List[TrinoCatalog]), trino\_credentials\_secret\_id,
relation\_id and remote\_app. Incomplete or malformed relations are
left out.

TrinoCatalogRequirer.
get\_credentials(

*self*

,
relation
)

Get Trino credentials from the per-relation secret.

Arguments

relation

The relation to read. Defaults to the first relation.

Returns

Tuple of (username, password) or None if not available.

TrinoCatalogRequirer.
get\_all\_credentials(

*self*
)

Get Trino credentials for every relation that has readable ones.

Returns

Mapping of relation ID to (username, password).

Description

Relations with incomplete data, an unreadable secret or missing
credential fields are logged and left out.
