twindb_backup.destination package

Submodules

twindb_backup.destination.base_destination module

Module defines Base destination class and destination exception(s).

class twindb_backup.destination.base_destination.BaseDestination(remote_path)[source]

Bases: object

Base destination class.

Parameters

remote_path (str) – Common path where all backups are stored. The remote path is specific to the actual destination class. For example, for Amazon S3 it will be something like s3://bucket_with_backups

abstract delete(path)[source]

Delete object from the destination

Parameters

path – Relative path to the file to delete

abstract get_stream(copy)[source]

Get a PIPE handler with content of the backup copy streamed from the destination.

Parameters

copy (BaseCopy) – Backup copy

Returns

Standard output.

list_files(prefix=None, recursive=False, pattern=None, files_only=False)[source]

Get list of file by prefix.

Parameters
  • prefix (str) – Path

  • recursive (bool) – Recursive return list of files

  • pattern (str) – files must match with this regexp if specified

  • files_only (bool) – If True don’t list directories

Returns

List of files

Return type

list

abstract read(filepath)[source]

Read content of a file path from destination.

Parameters

filepath (str) – Relative path to file.

Returns

Content of the file.

Return type

str

abstract save(handler, filepath)[source]

Save a stream given as handler to filepath.

Parameters
  • handler (file) – Incoming stream.

  • filepath (str) – Save stream as this name.

abstract write(content, filepath)[source]

Write content to a file.

Parameters
  • content (str) – Content to write to the file.

  • filepath (str) – Relative path to file.

twindb_backup.destination.exceptions module

Module for destination exceptions.

exception twindb_backup.destination.exceptions.DestinationError[source]

Bases: twindb_backup.exceptions.TwinDBBackupError

General destination error

exception twindb_backup.destination.exceptions.FileNotFound[source]

Bases: twindb_backup.destination.exceptions.DestinationError

File doesn’t exist on destination

exception twindb_backup.destination.exceptions.GCSDestinationError[source]

Bases: twindb_backup.destination.exceptions.DestinationError

GCS destination errors

exception twindb_backup.destination.exceptions.S3DestinationError[source]

Bases: twindb_backup.destination.exceptions.DestinationError

S3 destination errors

exception twindb_backup.destination.exceptions.SshDestinationError[source]

Bases: twindb_backup.destination.exceptions.DestinationError

SSH destination errors

twindb_backup.destination.local module

Module defines Local destination.

class twindb_backup.destination.local.Local(path=None)[source]

Bases: twindb_backup.destination.base_destination.BaseDestination

Local destination class.

delete(path)[source]

Delete object from the destination

Parameters

path – Relative path to the file to delete

get_stream(copy)[source]

Get a PIPE handler with content of the backup copy streamed from the destination

Parameters

copy (BaseCopy) – Backup copy

Returns

property path

Root path on local file system where local backup copies are stored.

read(filepath)[source]

Read content of a file path from destination.

Parameters

filepath (str) – Relative path to file.

Returns

Content of the file.

Return type

str

save(handler, filepath)[source]

Read from handler and save it on local storage

Parameters
  • filepath – store backup copy as this name

  • handler – Input stream

write(content, filepath)[source]

Write content to a file.

Parameters
  • content (str) – Content to write to the file.

  • filepath (str) – Relative path to file.

twindb_backup.destination.s3 module

Module for S3 destination.

class twindb_backup.destination.s3.S3(**kwargs)[source]

Bases: twindb_backup.destination.base_destination.BaseDestination

S3 destination class.

Parameters

kwargs – Keyword arguments.

  • bucket - S3 bucket name.

  • aws_access_key_id - AWS key id.

  • aws_secret_access_key - AWS secret key.

  • aws_default_region - AWS default region.

  • hostname - Hostname of a host where a backup is taken from.

property bucket

S3 bucket name.

create_bucket()[source]

Creates the bucket in s3 that will store the backups.

Raises

S3DestinationError – if failed to create the bucket.

delete(path)[source]

Deletes an S3 object.

Parameters

path (str) – Key of S3 object.

Raises

S3DestinationError – if failed to delete object.

delete_all_objects()[source]

Delete all objects from S3 bucket.

Raises

S3DestinationError – if failed to delete objects from the bucket.

delete_bucket(force=False)[source]

Delete the bucket in s3 that was storing the backups.

Parameters

force (bool) – If the bucket is non-empty then delete the objects before deleting the bucket.

Raises

S3DestinationError – if failed to delete the bucket.

get_stream(copy)[source]

Get a PIPE handler with content of the backup copy streamed from the destination.

Parameters

copy (BaseCopy) – Backup copy

Returns

Stream with backup copy

Return type

generator

Raises

S3DestinationError – if failed to stream a backup copy.

static get_transfer_config()[source]

Build Transfer config

Returns

Transfer config

Return type

boto3.s3.transfer.TransferConfig

list_files(prefix=None, recursive=False, pattern=None, files_only=False)[source]

List files in the destination that have common prefix.

Parameters
  • prefix (str) – Common prefix. May include the bucket name. (e.g. s3://my_bucket/foo/) or simply a prefix in the bucket (e.g. foo/).

  • recursive – Does nothing for this class.

  • pattern (str) – files must match with this regexp if specified.

  • files_only – Does nothing for this class.

Returns

sorted list of file names.

Returns

Full S3 url in form s3://bucket/path/to/file.

Return type

list(str)

Raises

S3DestinationError – if failed to list files.

read(filepath)[source]

Read content of filepath and return it as a string.

Parameters

filepath – Path in S3 bucket.

Returns

Content of the file.

Return type

str

Raises

FileNotFound – If filepath doesn’t exist.

save(handler, filepath)[source]

Read from handler and save it to Amazon S3

Parameters
  • filepath – save backup copy in a file with this name

  • handler – stdout handler from backup source

static setup_s3_client()[source]

Creates an authenticated s3 client.

Returns

S3 client instance.

Return type

botocore.client.BaseClient

share(s3_url)[source]

Share S3 file and return public link

Parameters

s3_url (str) – S3 url

Returns

Public url

Return type

str

Raises

S3DestinationError – if failed to share object.

static validate_client_response(response)[source]
Validates the response returned by the client. Raises an exception

if the response code is not 200 or 204

Parameters

response (dict) – The response that needs to be validated.

Raises

S3DestinationError – if response from S3 is invalid.

write(content, filepath)[source]

Write content to a file.

Parameters
  • content (str) – Content to write to the file.

  • filepath (str) – Relative path to file.

class twindb_backup.destination.s3.S3FileAccess[source]

Bases: object

Access modes for S3 files

private = 'private'
public_read = 'public-read'

twindb_backup.destination.ssh module

Module for SSH destination.

class twindb_backup.destination.ssh.Ssh(remote_path, **kwargs)[source]

Bases: twindb_backup.destination.base_destination.BaseDestination

The SSH destination class represents a destination backup storage with running SSH demon.

Parameters
  • remote_path (str) – Path to store backups.

  • kwargs (dict) – Keyword arguments. See below.

  • hostname (str): Hostname of the host where backup is taken from.

  • ssh_host (str): Hostname for SSH connection. Default 127.0.0.1.

  • ssh_user (str): Username for SSH connection. Default root.

  • ssh_port (int): TCP port for SSH connection. Default 22.

  • ssh_key (str): File with an rsa/dsa key for SSH authentication.

    Default /root/.ssh/id_rsa.

property client
Returns

SSH client.

Return type

SshClient

delete(path)[source]

Delete file by path. The path is a relative to the self.remote_path.

Parameters

path (str) – Path to a remote file.

ensure_tcp_port_listening(port, wait_timeout=10)[source]

Check that tcp port is open and ready to accept connections. Keep checking up to wait_timeout seconds.

Parameters
  • port (int) – TCP port that is supposed to be listening.

  • wait_timeout (int) – Wait this many seconds until the port is ready.

Returns

True if the TCP port is listening.

Return type

bool

execute_command(cmd, quiet=False, background=False)[source]

Execute ssh command on the remote destination.

Parameters
  • cmd (str) – Command to execute.

  • quiet (bool) – If True don’t print errors.

  • background (bool) – If True don’t wait until the command exits.

Returns

stdin, stdout and stderr handlers.

Return type

tuple

get_stream(copy)[source]

Get a PIPE handler with content of the backup copy streamed from the destination.

Parameters

copy (BaseCopy) – Backup copy.

Returns

Standard output.

Return type

file

property host
Returns

IP address of the destination.

Return type

str

netcat(command, port=9990)[source]

Run netcat on the destination pipe it to a given command:

ncat -l <port> --recv-only | <command>
Parameters
  • command (str) – Command that would accept netcat’s output.

  • port (int) – TCP port to run netcat on. Default 9999.

property port
Returns

TCP port of the destination.

Return type

int

read(filepath)[source]

Read content of a file path from destination.

Parameters

filepath (str) – Relative path to file.

Returns

Content of the file.

Return type

str

save(handler, filepath)[source]

Read from the handler and save it on the remote ssh server in a file filepath.

Parameters
  • filepath (str) – Relative path to a file to store the backup copy.

  • handler (file) – Stream with content of the backup.

property user
Returns

SSH user.

Return type

str

write(content, filepath)[source]

Write content to a file.

Parameters
  • content (str) – Content to write to the file.

  • filepath (str) – Relative path to file.

Module contents