class ReplicationModel(sa.Model): __tablename__ = 'storage_replication' id = sa.Column(sa.Integer(), primary_key=True) repl_target_dataset = sa.Column(sa.String(120)) repl_recursive = sa.Column(sa.Boolean(), default=False) repl_compression = sa.Column(sa.String(120), nullable=True, default="LZ4") repl_speed_limit = sa.Column(sa.Integer(), nullable=True, default=None) repl_schedule_begin = sa.Column(sa.Time(), nullable=True, default=time(hour=0)) repl_schedule_end = sa.Column(sa.Time(), nullable=True, default=time(hour=23, minute=45)) repl_enabled = sa.Column(sa.Boolean(), default=True) repl_direction = sa.Column(sa.String(120), default="PUSH") repl_transport = sa.Column(sa.String(120), default="SSH") repl_ssh_credentials_id = sa.Column(sa.ForeignKey('system_keychaincredential.id'), index=True, nullable=True) repl_netcat_active_side = sa.Column(sa.String(120), nullable=True, default=None) repl_netcat_active_side_port_min = sa.Column(sa.Integer(), nullable=True) repl_netcat_active_side_port_max = sa.Column(sa.Integer(), nullable=True) repl_source_datasets = sa.Column(sa.JSON(type=list)) repl_exclude = sa.Column(sa.JSON(type=list)) repl_naming_schema = sa.Column(sa.JSON(type=list)) repl_auto = sa.Column(sa.Boolean(), default=True) repl_schedule_minute = sa.Column(sa.String(100), nullable=True, default="00") repl_schedule_hour = sa.Column(sa.String(100), nullable=True, default="*") repl_schedule_daymonth = sa.Column(sa.String(100), nullable=True, default="*") repl_schedule_month = sa.Column(sa.String(100), nullable=True, default='*') repl_schedule_dayweek = sa.Column(sa.String(100), nullable=True, default="*") repl_only_matching_schedule = sa.Column(sa.Boolean()) repl_readonly = sa.Column(sa.String(120)) repl_allow_from_scratch = sa.Column(sa.Boolean()) repl_hold_pending_snapshots = sa.Column(sa.Boolean()) repl_retention_policy = sa.Column(sa.String(120), default="NONE") repl_lifetime_unit = sa.Column(sa.String(120), nullable=True, default='WEEK') repl_lifetime_value = sa.Column(sa.Integer(), nullable=True, default=2) repl_large_block = sa.Column(sa.Boolean(), default=True) repl_embed = sa.Column(sa.Boolean(), default=False) repl_compressed = sa.Column(sa.Boolean(), default=True) repl_retries = sa.Column(sa.Integer(), default=5) repl_restrict_schedule_minute = sa.Column(sa.String(100), nullable=True, default="00") repl_restrict_schedule_hour = sa.Column(sa.String(100), nullable=True, default="*") repl_restrict_schedule_daymonth = sa.Column(sa.String(100), nullable=True, default="*") repl_restrict_schedule_month = sa.Column(sa.String(100), nullable=True, default='*') repl_restrict_schedule_dayweek = sa.Column(sa.String(100), nullable=True, default="*") repl_restrict_schedule_begin = sa.Column(sa.Time(), nullable=True, default=time(hour=0)) repl_restrict_schedule_end = sa.Column(sa.Time(), nullable=True, default=time(hour=23, minute=45)) repl_netcat_active_side_listen_address = sa.Column(sa.String(120), nullable=True, default=None) repl_netcat_passive_side_connect_address = sa.Column(sa.String(120), nullable=True, default=None) repl_logging_level = sa.Column(sa.String(120), nullable=True, default=None) repl_name = sa.Column(sa.String(120)) repl_state = sa.Column(sa.Text(), default="{}") repl_properties = sa.Column(sa.Boolean(), default=True) repl_properties_exclude = sa.Column(sa.JSON(type=list)) repl_properties_override = sa.Column(sa.JSON()) repl_replicate = sa.Column(sa.Boolean()) repl_encryption = sa.Column(sa.Boolean()) repl_encryption_key = sa.Column(sa.EncryptedText(), nullable=True) repl_encryption_key_format = sa.Column(sa.String(120), nullable=True) repl_encryption_key_location = sa.Column(sa.Text(), nullable=True) repl_periodic_snapshot_tasks = sa.relationship('PeriodicSnapshotTaskModel', secondary=lambda: ReplicationPeriodicSnapshotTaskModel.__table__)
class PeriodicSnapshotTaskModel(sa.Model): __tablename__ = 'storage_task' id = sa.Column(sa.Integer(), primary_key=True) task_dataset = sa.Column(sa.String(150)) task_recursive = sa.Column(sa.Boolean(), default=False) task_lifetime_value = sa.Column(sa.Integer(), default=2) task_lifetime_unit = sa.Column(sa.String(120), default='WEEK') task_begin = sa.Column(sa.Time(), default=time(hour=9)) task_end = sa.Column(sa.Time(), default=time(hour=18)) task_enabled = sa.Column(sa.Boolean(), default=True) task_exclude = sa.Column(sa.JSON(type=list)) task_naming_schema = sa.Column(sa.String(150), default='auto-%Y-%m-%d_%H-%M') task_minute = sa.Column(sa.String(100), default="00") task_hour = sa.Column(sa.String(100), default="*") task_daymonth = sa.Column(sa.String(100), default="*") task_month = sa.Column(sa.String(100), default='*') task_dayweek = sa.Column(sa.String(100), default="*") task_allow_empty = sa.Column(sa.Boolean(), default=True)