New Addon

Google BK
This commit is contained in:
2023-04-23 18:17:03 +07:00
parent 1c7fd2b476
commit 702d080a1e
248 changed files with 72745 additions and 0 deletions
@@ -0,0 +1,129 @@
from .model import CreateOptions, BackupDestination
from .backups import Backup
from .dummybackupsource import DummyBackupSource
from typing import Dict
from io import IOBase
from ..ha import BackupName
from ..logger import getLogger
logger = getLogger(__name__)
class SimulatedSource(BackupDestination):
def __init__(self, name, is_destination=False):
self._name = name
self.current: Dict[str, DummyBackupSource] = {}
self.saved = []
self.deleted = []
self.created = []
self._enabled = True
self._upload = True
self.index = 0
self.max = 0
self.backup_name = BackupName()
self.host_info = {}
self.backup_type = "Full"
self.working = False
self.needConfig = None
self.is_destination = is_destination
def isDestination(self):
return self.is_destination
def setEnabled(self, value):
self._enabled = value
return self
def needsConfiguration(self) -> bool:
if self.needConfig is not None:
return self.needConfig
return super().needsConfiguration()
def setNeedsConfiguration(self, value: bool):
self.needConfig = value
def setUpload(self, value):
self._upload = value
return self
def upload(self):
return self._upload
def setMax(self, count):
self.max = count
return self
def isWorking(self):
return self.working
def setIsWorking(self, value):
self.working = value
def maxCount(self) -> None:
return self.max
def insert(self, name, date, slug=None, retain=False):
if slug is None:
slug = name
new_backup = DummyBackupSource(
name,
date,
self._name,
slug)
self.current[new_backup.slug()] = new_backup
return new_backup
def name(self) -> str:
return self._name
def enabled(self) -> bool:
return self._enabled
def nameSetup(self, type, host_info):
self.backup_type = type
self.host_info = host_info
async def create(self, options: CreateOptions) -> DummyBackupSource:
assert self.enabled
new_backup = DummyBackupSource(
self.backup_name.resolve(
self.backup_type, options.name_template, options.when, self.host_info),
options.when,
self._name,
"{0}slug{1}".format(self._name, self.index))
self.index += 1
self.current[new_backup.slug()] = new_backup
self.created.append(new_backup)
return new_backup
async def get(self) -> Dict[str, DummyBackupSource]:
assert self.enabled
return self.current
async def delete(self, backup: Backup):
assert self.enabled
assert backup.getSource(self._name) is not None
assert backup.getSource(self._name).source() is self._name
assert backup.slug() in self.current
slug = backup.slug()
self.deleted.append(backup.getSource(self._name))
backup.removeSource(self._name)
del self.current[slug]
async def save(self, backup: Backup, bytes: IOBase = None) -> DummyBackupSource:
assert self.enabled
assert backup.slug() not in self.current
new_backup = DummyBackupSource(
backup.name(), backup.date(), self._name, backup.slug())
backup.addSource(new_backup)
self.current[new_backup.slug()] = new_backup
self.saved.append(new_backup)
return new_backup
async def read(self, backup: DummyBackupSource) -> IOBase:
assert self.enabled
return None
async def retain(self, backup: DummyBackupSource, retain: bool) -> None:
assert self.enabled
backup.getSource(self.name()).setRetained(retain)