Model

The model package contains various classes and functions for managing Firebolt engines and databases.

Database

class firebolt.model.database.Database(*, name: ConstrainedStrValue, compute_region_id: RegionKey, id: DatabaseKey | None = None, description: ConstrainedStrValue | None = None, emoji: ConstrainedStrValue | None = None, current_status: str | None = None, health_status: str | None = None, data_size_full: int | None = None, data_size_compressed: int | None = None, is_system_database: bool | None = None, storage_bucket_name: str | None = None, create_time: datetime | None = None, create_actor: str | None = None, last_update_time: datetime | None = None, last_update_actor: str | None = None, desired_status: str | None = None)

Bases: FireboltBaseModel

A Firebolt database.

Databases belong to a region and have a description, but otherwise are not configurable.

attach_to_engine(engine: Engine, is_default_engine: bool = False) Binding

Attach an engine to this database.

Parameters:
  • engine – The engine to attach.

  • is_default_engine – Whether this engine should be used as default for this database. Only one engine can be set as default for a single database. This will overwrite any existing default.

compute_region_key: RegionKey
create_actor: str | None
create_time: datetime | None
current_status: str | None
data_size_compressed: int | None
data_size_full: int | None
property database_id: str | None
database_key: DatabaseKey | None
delete() Database

Delete a database from Firebolt.

Raises an error if there are any attached engines.

description: str | None
desired_status: str | None
emoji: str | None
get_attached_engines() List[Engine]

Get a list of engines that are attached to this database.

get_default_engine() Engine | None

Returns: default engine of the database, or None if default engine is missing

health_status: str | None
is_system_database: bool | None
last_update_actor: str | None
last_update_time: datetime | None
name: str
classmethod parse_obj_with_service(obj: Any, database_service: DatabaseService) Database
storage_bucket_name: str | None
update(description: str) Database

Updates a database description.

Engine

class firebolt.model.engine.Engine(*, name: ConstrainedStrValue, compute_region_id: RegionKey, settings: EngineSettings, id: EngineKey | None = None, description: str | None = None, emoji: str | None = None, current_status: EngineStatus | None = None, current_status_summary: EngineStatusSummary | None = None, latest_revision_id: EngineRevisionKey | None = None, endpoint: str | None = None, endpoint_serving_revision_id: EngineRevisionKey | None = None, create_time: datetime | None = None, create_actor: str | None = None, last_update_time: datetime | None = None, last_update_actor: str | None = None, last_use_time: datetime | None = None, desired_status: str | None = None, health_status: str | None = None, endpoint_desired_revision_id: EngineRevisionKey | None = None)

Bases: FireboltBaseModel

A Firebolt engine. Responsible for performing work (queries, ingestion).

Engines are configured in Settings and in EngineRevisionSpecification.

attach_to_database(database: Database, is_default_engine: bool = False) Binding

Attach this engine to a database.

Parameters:
  • database – Database to which the engine will be attached

  • is_default_engine – Whether this engine should be used as default for this database. Only one engine can be set as default for a single database. This will overwrite any existing default.

compute_region_key: RegionKey
create_actor: str | None
create_time: datetime | None
current_status: EngineStatus | None
current_status_summary: EngineStatusSummary | None
property database: Database | None
delete() Engine

Delete an engine from Firebolt.

description: str | None
desired_status: str | None
emoji: str | None
endpoint: str | None
endpoint_desired_revision_key: EngineRevisionKey | None
endpoint_serving_revision_key: EngineRevisionKey | None
property engine_id: str
get_connection() Connection

Get a connection to the attached database for running queries.

Returns:

engine connection instance

Return type:

firebolt.db.connection.Connection

get_latest() Engine

Get an up-to-date instance of the engine from Firebolt.

health_status: str | None
key: EngineKey | None
last_update_actor: str | None
last_update_time: datetime | None
last_use_time: datetime | None
latest_revision_key: EngineRevisionKey | None
name: str
classmethod parse_obj_with_service(obj: Any, engine_service: EngineService) Engine
restart(wait_for_startup: bool = True, wait_timeout_seconds: int = 3600) Engine

Restart an engine.

Parameters:
  • wait_for_startup – If True, wait for startup to complete. If False, return immediately after requesting startup.

  • wait_timeout_seconds – Number of seconds to wait for startup to complete before raising a TimeoutError.

Returns:

The updated engine from Firebolt.

settings: EngineSettings
start(wait_for_startup: bool = True, wait_timeout_seconds: int = 3600, verbose: bool = False) Engine

Start an engine. If it’s already started, do nothing.

Parameters:
  • wait_for_startup – If True, wait for startup to complete. If False, return immediately after requesting startup.

  • wait_timeout_seconds – Number of seconds to wait for startup to complete before raising a TimeoutError

  • verbose – If True, print dots periodically while waiting for engine start. If False, do not print any dots.

Returns:

The updated engine from Firebolt.

stop(wait_for_stop: bool = False, wait_timeout_seconds: int = 3600) Engine

Stop an Engine running on Firebolt.

update(name: str | None = None, engine_type: EngineType | None = None, scale: int | None = None, spec: str | None = None, auto_stop: int | None = None, warmup: WarmupMethod | None = None, description: str | None = None, use_spot: bool | None = None) Engine

Updates the engine and returns an updated version of the engine. If all parameters are set to None, old engine parameter values remain.

class firebolt.model.engine.EngineSettings(*, preset: str, auto_stop_delay_duration: ConstrainedStrValue, minimum_logging_level: str, is_read_only: bool, warm_up: str)

Bases: FireboltBaseModel

Engine settings.

See also: EngineRevisionSpecification which also contains engine configuration.

auto_stop_delay_duration: str
classmethod default(engine_type: EngineType = EngineType.GENERAL_PURPOSE, auto_stop_delay_duration: str = '1200s', warm_up: WarmupMethod = WarmupMethod.PRELOAD_INDEXES, minimum_logging_level: str = 'ENGINE_SETTINGS_LOGGING_LEVEL_INFO') EngineSettings
is_read_only: bool
minimum_logging_level: str
preset: str
warm_up: str

Engine revision

class firebolt.model.engine_revision.EngineRevision(*, specification: EngineRevisionSpecification, id: EngineRevisionKey | None = None, current_status: str | None = None, create_time: datetime | None = None, create_actor: str | None = None, last_update_time: datetime | None = None, last_update_actor: str | None = None, desired_status: str | None = None, health_status: str | None = None)

Bases: FireboltBaseModel

A Firebolt engine revision, which contains a specification (instance types, counts).

As engines are updated with new settings, revisions are created.

create_actor: str | None
create_time: datetime | None
current_status: str | None
desired_status: str | None
health_status: str | None
key: EngineRevisionKey | None
last_update_actor: str | None
last_update_time: datetime | None
specification: EngineRevisionSpecification
class firebolt.model.engine_revision.EngineRevisionSpecification(*, db_compute_instances_type_id: InstanceTypeKey, db_compute_instances_count: PositiveInt, db_compute_instances_use_spot: bool = False, db_version: str = '', proxy_instances_type_id: InstanceTypeKey, proxy_instances_count: PositiveInt = 1, proxy_version: str = '')

Bases: FireboltBaseModel

An EngineRevision specification.

Determines which instance types and how many of them its engine gets.

See Also: Settings, which also contains engine configuration.

db_compute_instances_count: PositiveInt
db_compute_instances_type_key: InstanceTypeKey
db_compute_instances_use_spot: bool
db_version: str
proxy_instances_count: PositiveInt
proxy_instances_type_key: InstanceTypeKey
proxy_version: str

Instance type

class firebolt.model.instance_type.InstanceType(*, id: InstanceTypeKey, name: str, is_spot_available: bool | None = None, cpu_virtual_cores_count: int | None = None, memory_size_bytes: int | None = None, storage_size_bytes: int | None = None, price_per_hour_cents: float | None = None, create_time: datetime | None = None, last_update_time: datetime | None = None)

Bases: FireboltBaseModel

cpu_virtual_cores_count: int | None
create_time: datetime | None
is_spot_available: bool | None
key: InstanceTypeKey
last_update_time: datetime | None
memory_size_bytes: int | None
name: str
price_per_hour_cents: float | None
storage_size_bytes: int | None

Provider

class firebolt.model.provider.Provider(*, id: str, name: str, create_time: datetime | None = None, display_name: str | None = None, last_update_time: datetime | None = None)

Bases: FireboltBaseModel

create_time: datetime | None
display_name: str | None
last_update_time: datetime | None
name: str
provider_id: str

Region

class firebolt.model.region.Region(*, id: RegionKey, name: str, display_name: str | None = None, create_time: datetime | None = None, last_update_time: datetime | None = None)

Bases: FireboltBaseModel

create_time: datetime | None
display_name: str | None
key: RegionKey
last_update_time: datetime | None
name: str