EspHome
This commit is contained in:
185
synology_api/core_active_backup.py
Normal file
185
synology_api/core_active_backup.py
Normal file
@@ -0,0 +1,185 @@
|
||||
from __future__ import annotations
|
||||
from typing import Optional
|
||||
from . import base_api
|
||||
|
||||
import time
|
||||
import json
|
||||
|
||||
|
||||
class ActiveBackupBusiness(base_api.BaseApi):
|
||||
|
||||
def list_vm_hypervisor(self) -> dict[str, object] | str:
|
||||
'''
|
||||
This function returns a list of list of all configured hypervisors present in ABB.
|
||||
'''
|
||||
api_name = 'SYNO.ActiveBackup.Inventory'
|
||||
info = self.gen_list[api_name]
|
||||
api_path = info['path']
|
||||
|
||||
req_param = {'version': '1',
|
||||
'method': 'list'}
|
||||
|
||||
return self.request_data(api_name, api_path, req_param)
|
||||
|
||||
def list_device_transfer_size(self,
|
||||
time_start: int = int(time.time() - 86400),
|
||||
time_end: int = int(time.time())) -> dict[str, object] | str:
|
||||
'''
|
||||
This function returns a list of all devices and their respective transfer size for the given time frame. Default value is 24 hours.
|
||||
'''
|
||||
api_name = 'SYNO.ActiveBackup.Overview'
|
||||
info = self.gen_list[api_name]
|
||||
api_path = info['path']
|
||||
|
||||
req_param = {'version': '1',
|
||||
'method': 'list_device_transfer_size',
|
||||
'time_start': time_start,
|
||||
'time_end': time_end}
|
||||
|
||||
return self.request_data(api_name, api_path, req_param)
|
||||
|
||||
def backup_task_list(self, load_versions: bool = False, filter: dict[str, any] = {}) -> dict[str, object] | str:
|
||||
'''
|
||||
This function returns a list of all tasks. Can also retrieve versions corresponding to each task with the `load_versions` parameter.
|
||||
|
||||
`filter` can be used to retrieve only specific information:
|
||||
|
||||
filter: dict[str, any] = {}
|
||||
"task_id": int,
|
||||
"backup_type": int,
|
||||
"load_available": bool,
|
||||
"limit": int,
|
||||
"is_snapshot": bool,
|
||||
etc..
|
||||
|
||||
'''
|
||||
api_name = 'SYNO.ActiveBackup.Task'
|
||||
info = self.gen_list[api_name]
|
||||
api_path = info['path']
|
||||
|
||||
req_param = {'version': '1',
|
||||
'method': 'list',
|
||||
'load_status': 'true',
|
||||
'load_result': 'true',
|
||||
'load_versions': load_versions,
|
||||
'filter': json.dumps(filter)}
|
||||
|
||||
return self.request_data(api_name, api_path, req_param)
|
||||
|
||||
def backup_task_run(self, task_ids: list[int]) -> dict[str, object] | str:
|
||||
'''
|
||||
This function will trigger a backup event for the given tasks. Even if only one task is specified, a list has to be passed as argument.
|
||||
'''
|
||||
api_name = 'SYNO.ActiveBackup.Task'
|
||||
info = self.gen_list[api_name]
|
||||
api_path = info['path']
|
||||
|
||||
req_param = {'version': '1',
|
||||
'method': 'backup',
|
||||
'task_ids': str(task_ids),
|
||||
'trigger_type': '1'}
|
||||
|
||||
return self.request_data(api_name, api_path, req_param)
|
||||
|
||||
def backup_task_cancel(self, task_ids: list[int]) -> dict[str, object] | str:
|
||||
'''
|
||||
This function will trigger a cancel backup event for the given tasks. Even if only one task is specified, a list has to be passed as argument.
|
||||
'''
|
||||
api_name = 'SYNO.ActiveBackup.Task'
|
||||
info = self.gen_list[api_name]
|
||||
api_path = info['path']
|
||||
|
||||
req_param = {'version': '1',
|
||||
'method': 'cancel',
|
||||
'task_ids': str(task_ids)}
|
||||
|
||||
return self.request_data(api_name, api_path, req_param)
|
||||
|
||||
def backup_task_remove(self, task_ids: list[int]) -> dict[str, object] | str:
|
||||
'''
|
||||
This function will trigger a task deletion event for the given tasks. Even if only one task is specified, a list has to be passed as argument.
|
||||
'''
|
||||
api_name = 'SYNO.ActiveBackup.Task'
|
||||
info = self.gen_list[api_name]
|
||||
api_path = info['path']
|
||||
|
||||
req_param = {'version': '1',
|
||||
'method': 'remove',
|
||||
'task_ids': str(task_ids)}
|
||||
|
||||
return self.request_data(api_name, api_path, req_param)
|
||||
|
||||
def backup_task_delete_versions(self, task_id: int, versions_ids: list[int]) -> dict[str, object] | str:
|
||||
'''
|
||||
This function will trigger a version deletion event for the given version. Even if only one version is specified, a list has to be passed as argument.
|
||||
'''
|
||||
api_name = 'SYNO.ActiveBackup.Version'
|
||||
info = self.gen_list[api_name]
|
||||
api_path = info['path']
|
||||
|
||||
req_param = {'version': '1',
|
||||
'method': 'delete',
|
||||
'task_id': task_id,
|
||||
'version_ids': str(versions_ids)}
|
||||
|
||||
return self.request_data(api_name, api_path, req_param)
|
||||
|
||||
def list_logs(self, filter: dict[str, any] = {}) -> dict[str, object] | str:
|
||||
'''
|
||||
This function returns a dictionary of the logs of all tasks.
|
||||
|
||||
`filter` can be used to retrieve only specific information:
|
||||
|
||||
filter: dict[str, any] = {}
|
||||
"task_id": int,
|
||||
"backup_type": int,
|
||||
"load_available": bool,
|
||||
"limit": int,
|
||||
"is_snapshot": bool,
|
||||
etc..
|
||||
|
||||
'''
|
||||
api_name = 'SYNO.ActiveBackup.Log'
|
||||
info = self.gen_list[api_name]
|
||||
api_path = info['path']
|
||||
|
||||
req_param = {'version': '1',
|
||||
'method': 'list_result',
|
||||
'filter': json.dumps(filter)}
|
||||
|
||||
return self.request_data(api_name, api_path, req_param)
|
||||
|
||||
def list_logs_details(self,
|
||||
result_id: int,
|
||||
limit: int = 500,
|
||||
order_by: str = "log_level",
|
||||
direction: str = "ASC") -> dict[str, object] | str:
|
||||
'''
|
||||
This function returns a dictionary of the logs of a given task event. `result_id` can be retrieved from `list_logs()` function.
|
||||
'''
|
||||
api_name = 'SYNO.ActiveBackup.Log'
|
||||
info = self.gen_list[api_name]
|
||||
api_path = info['path']
|
||||
|
||||
req_param = {'version': '1',
|
||||
'method': 'list_result_detail',
|
||||
'result_id': result_id,
|
||||
'limit': limit,
|
||||
'order_by': order_by,
|
||||
'direction': direction}
|
||||
|
||||
return self.request_data(api_name, api_path, req_param)
|
||||
|
||||
def list_storage(self) -> dict[str, object] | str:
|
||||
'''
|
||||
This function returns a dictionary of the current storages being used by ABB.
|
||||
'''
|
||||
api_name = 'SYNO.ActiveBackup.Share'
|
||||
info = self.gen_list[api_name]
|
||||
api_path = info['path']
|
||||
|
||||
req_param = {'version': '1',
|
||||
'method': 'list_storage'}
|
||||
|
||||
return self.request_data(api_name, api_path, req_param)
|
||||
|
||||
Reference in New Issue
Block a user