ferrosoft.ops package

Subpackages

Submodules

ferrosoft.ops.backup module

ferrosoft.ops.backup.backup_database(args, backup_date, master_database=None, tenant=None)[source]
Return type:

JournalEntry

ferrosoft.ops.backup.save_journal(journal, args)[source]

ferrosoft.ops.models module

class ferrosoft.ops.models.Journal(backup_date, entries=NOTHING)[source]

Bases: object

backup_date: datetime
entries: list[JournalEntry]
master_entry()[source]
Return type:

JournalEntry | None

tenant_entry(tenant_id)[source]
Return type:

JournalEntry | None

class ferrosoft.ops.models.JournalEntry(filename, pg_dump_args, db_name, tenant, filename_decompressed=None)[source]

Bases: object

db_name: str | None
filename: str
filename_decompressed: str | None
pg_dump_args: str
tenant: Tenant | None
class ferrosoft.ops.models.Tenant(id, name, db_name, db_hostname, db_port, db_username, db_password)[source]

Bases: object

db_hostname: str
db_name: str
db_password: str
db_port: str
db_username: str
id: str
name: str
ferrosoft.ops.models.get_databases(psql_executable)[source]
Return type:

list[str]

ferrosoft.ops.models.get_roles(psql_executable)[source]
Return type:

list[str]

ferrosoft.ops.models.get_session_user(psql_executable)[source]
Return type:

str

ferrosoft.ops.models.get_tenants(psql_executable)[source]

ferrosoft.ops.restore module

exception ferrosoft.ops.restore.LocalFileError[source]

Bases: RuntimeError

ferrosoft.ops.restore.assign_tenant_db_owner(tenant, psql_executable)[source]
ferrosoft.ops.restore.create_tenant_database(tenant, psql_executable)[source]
ferrosoft.ops.restore.create_tenant_role(tenant, psql_executable)[source]
ferrosoft.ops.restore.decompress_backups(journal, local_dir, decompress_executable='unzstd')[source]

Decompress backup files found in local directory. :type journal: Journal :param journal: :type local_dir: str :param local_dir: :type decompress_executable: str :param decompress_executable: A decompression executable file name which must support -c option.

Returns:

ferrosoft.ops.restore.fetch_backups(journal, local_dir, aws_executable='aws', bucket_name='backup', local_mode=False)[source]

Retrieve backup files from object storage and save them to a local directory.

ferrosoft.ops.restore.get_journal(*args, **kwargs)[source]
Return type:

Journal

ferrosoft.ops.restore.restore_database_entry(entry, psql_executable, local_mode=False, database_name=None)[source]
ferrosoft.ops.restore.restore_databases(journal, psql_executable, local_mode=False, master_db=None)[source]
ferrosoft.ops.restore.set_tenant_localhost(psql_executable, postgres_localhost)[source]

ferrosoft.ops.sql module

ferrosoft.ops.sql.create_tenant_database_command(database_name, owner_role)[source]
ferrosoft.ops.sql.create_tenant_role_command(role_name, password, member_role)[source]
Return type:

str

ferrosoft.ops.sql.reassign_owner(new_owner)[source]
ferrosoft.ops.sql.sql_select(query, psql_executable='psql')[source]

Executes a SQL query and yields the result rows.

This reads the whole result set into a string buffer, therefore should only be used for results expected to be small.

Parameters:
  • query (str) – SELECT string

  • psql_executable (str) – psql executable file name

ferrosoft.ops.sql.tenant_database_name(tenant_id)[source]
ferrosoft.ops.sql.tenant_host_update_command(hostname)[source]
Return type:

str