Reformat files with black

This commit is contained in:
Orsiris de Jong 2023-02-01 19:06:52 +01:00
parent 7f32359161
commit e23797f97d
7 changed files with 99 additions and 38 deletions

View file

@ -217,9 +217,13 @@ This is free software, and you are welcome to redistribute it under certain cond
parser.add_argument("--license", action="store_true", help="Show license") parser.add_argument("--license", action="store_true", help="Show license")
parser.add_argument( parser.add_argument(
"--auto-upgrade", action="store_true", help="Auto upgrade NPBackup") "--auto-upgrade", action="store_true", help="Auto upgrade NPBackup"
)
parser.add_argument( parser.add_argument(
"--upgrade-conf", action="store_true", help="Add new configuration elements after upgrade") "--upgrade-conf",
action="store_true",
help="Add new configuration elements after upgrade",
)
args = parser.parse_args() args = parser.parse_args()
if args.version: if args.version:

View file

@ -41,15 +41,19 @@ ENCRYPTED_OPTIONS = [
{"section": "options", "name": "server_password", "type": str}, {"section": "options", "name": "server_password", "type": str},
] ]
empty_config_dict = {"backup": { empty_config_dict = {
"compression": "auto", "backup": {
"use_fs_snapshot": True, "compression": "auto",
"ignore_cloud_files": True, "use_fs_snapshot": True,
"exclude_caches": True, "ignore_cloud_files": True,
"priority": "low", "exclude_caches": True,
}, "repo": { "priority": "low",
"minimum_backup_age": 86400 },
}, "prometheus": {}, "env": {}, "options": {}} "repo": {"minimum_backup_age": 86400},
"prometheus": {},
"env": {},
"options": {},
}
def decrypt_data(config_dict): def decrypt_data(config_dict):

View file

@ -255,7 +255,9 @@ class NPBackupRunner:
logger.warning("Bogus backup priority in config file.") logger.warning("Bogus backup priority in config file.")
try: try:
if self.config_dict["backup"]["ignore_cloud_files"]: if self.config_dict["backup"]["ignore_cloud_files"]:
self.restic_runner.ignore_cloud_files = self.config_dict["backup"]["ignore_cloud_files"] self.restic_runner.ignore_cloud_files = self.config_dict["backup"][
"ignore_cloud_files"
]
except KeyError: except KeyError:
pass pass
except ValueError: except ValueError:

View file

@ -20,12 +20,8 @@ logger = getLogger(__intname__)
def run_upgrade(config_dict): def run_upgrade(config_dict):
try: try:
auto_upgrade_upgrade_url = config_dict["options"]["server_url"] auto_upgrade_upgrade_url = config_dict["options"]["server_url"]
auto_upgrade_username = config_dict["options"][ auto_upgrade_username = config_dict["options"]["server_username"]
"server_username" auto_upgrade_password = config_dict["options"]["server_password"]
]
auto_upgrade_password = config_dict["options"][
"server_password"
]
except KeyError as exc: except KeyError as exc:
logger.error("Missing auto upgrade info: %s, cannot launch auto upgrade", exc) logger.error("Missing auto upgrade info: %s, cannot launch auto upgrade", exc)
return False return False
@ -35,4 +31,4 @@ def run_upgrade(config_dict):
username=auto_upgrade_username, username=auto_upgrade_username,
password=auto_upgrade_password, password=auto_upgrade_password,
) )
return result return result

View file

@ -324,11 +324,51 @@ def config_gui(config_dict: dict, config_file: str):
] ]
tab_group_layout = [ tab_group_layout = [
[sg.Tab(_t("config_gui.backup"), backup_col, font="helvetica 16", key="--tab-backup--", element_justification='C')], [
[sg.Tab(_t("config_gui.backup_destination"),repo_col, font="helvetica 16", key="--tab-repo--", element_justification='C')], sg.Tab(
[sg.Tab(_t("config_gui.prometheus_config"), prometheus_col, font="helvetica 16", key="--tab-prometheus--", element_justification='C')], _t("config_gui.backup"),
[sg.Tab(_t("config_gui.environment_variables"), env_col, font="helvetica 16", key="--tab-env--", element_justification='C')], backup_col,
[sg.Tab(_t("generic.options"), options_col, font="helvetica 16", key="--tab-options--", element_justification='C')], font="helvetica 16",
key="--tab-backup--",
element_justification="C",
)
],
[
sg.Tab(
_t("config_gui.backup_destination"),
repo_col,
font="helvetica 16",
key="--tab-repo--",
element_justification="C",
)
],
[
sg.Tab(
_t("config_gui.prometheus_config"),
prometheus_col,
font="helvetica 16",
key="--tab-prometheus--",
element_justification="C",
)
],
[
sg.Tab(
_t("config_gui.environment_variables"),
env_col,
font="helvetica 16",
key="--tab-env--",
element_justification="C",
)
],
[
sg.Tab(
_t("generic.options"),
options_col,
font="helvetica 16",
key="--tab-options--",
element_justification="C",
)
],
] ]
layout = [ layout = [
@ -336,7 +376,6 @@ def config_gui(config_dict: dict, config_file: str):
[sg.Column(buttons, element_justification="C")], [sg.Column(buttons, element_justification="C")],
] ]
window = sg.Window( window = sg.Window(
"Configuration", "Configuration",
layout, layout,

View file

@ -55,21 +55,27 @@ def _about_gui(version_string: str, config_dict: dict) -> None:
layout = [ layout = [
[sg.Text(version_string)], [sg.Text(version_string)],
[ [
sg.Button(_t("config_gui.auto_upgrade_launch"), key="autoupgrade", size=(12, 2)) sg.Button(
_t("config_gui.auto_upgrade_launch"), key="autoupgrade", size=(12, 2)
)
], ],
[sg.Text("License: GNU GPLv3")], [sg.Text("License: GNU GPLv3")],
[sg.Multiline(license_content, size=(65, 20))], [sg.Multiline(license_content, size=(65, 20))],
[sg.Button(_t("generic.accept"), key="exit")], [sg.Button(_t("generic.accept"), key="exit")],
] ]
window = sg.Window(_t("generic.about"), layout, keep_on_top=True, element_justification='C') window = sg.Window(
_t("generic.about"), layout, keep_on_top=True, element_justification="C"
)
while True: while True:
event, _ = window.read() event, _ = window.read()
if event in [sg.WIN_CLOSED, "exit"]: if event in [sg.WIN_CLOSED, "exit"]:
break break
elif event == "autoupgrade": elif event == "autoupgrade":
result = sg.PopupOKCancel(_t("config_gui.auto_ugprade_will_quit"), keep_on_top=True) result = sg.PopupOKCancel(
if result == 'OK': _t("config_gui.auto_ugprade_will_quit"), keep_on_top=True
)
if result == "OK":
logger.info("Running GUI initiated upgrade") logger.info("Running GUI initiated upgrade")
sub_result = run_upgrade(config_dict) sub_result = run_upgrade(config_dict)
if sub_result: if sub_result:

View file

@ -40,7 +40,7 @@ def sha256sum_data(data):
def need_upgrade(upgrade_interval: int) -> bool: def need_upgrade(upgrade_interval: int) -> bool:
""" """
Basic counter which allows an upgrade only every X times this is called so failed operations won't end in an endless upgrade loop Basic counter which allows an upgrade only every X times this is called so failed operations won't end in an endless upgrade loop
We need to make to select a write counter file that is writable We need to make to select a write counter file that is writable
So we actually test a local file and a temp file (less secure for obvious reasons) So we actually test a local file and a temp file (less secure for obvious reasons)
We just have to make sure that once we can write to one file, we stick to it unless proven otherwise We just have to make sure that once we can write to one file, we stick to it unless proven otherwise
@ -48,11 +48,11 @@ def need_upgrade(upgrade_interval: int) -> bool:
The for loop logic isn't straight simple, but allows file fallback The for loop logic isn't straight simple, but allows file fallback
""" """
# file counter, local, home, or temp if not available # file counter, local, home, or temp if not available
counter_file = 'npbackup.autoupgrade.log' counter_file = "npbackup.autoupgrade.log"
def _write_count(file: str, counter: int) -> bool: def _write_count(file: str, counter: int) -> bool:
try: try:
with open(file, 'w') as fpw: with open(file, "w") as fpw:
fpw.write(str(counter)) fpw.write(str(counter))
return True return True
except OSError: except OSError:
@ -61,7 +61,7 @@ def need_upgrade(upgrade_interval: int) -> bool:
def _get_count(file: str) -> Optional[int]: def _get_count(file: str) -> Optional[int]:
try: try:
with open(file, 'r') as fpr: with open(file, "r") as fpr:
count = int(fpr.read()) count = int(fpr.read())
return count return count
except OSError: except OSError:
@ -71,12 +71,13 @@ def need_upgrade(upgrade_interval: int) -> bool:
logger.error("Bogus upgrade counter in %s", file) logger.error("Bogus upgrade counter in %s", file)
return None return None
for file in [
os.path.join(CURRENT_DIR, counter_file),
for file in [os.path.join(CURRENT_DIR, counter_file), os.path.join(tempfile.gettempdir(), counter_file)]: os.path.join(tempfile.gettempdir(), counter_file),
]:
if not os.path.isfile(file): if not os.path.isfile(file):
if _write_count(file, 1): if _write_count(file, 1):
logger.debug('Initial upgrade counter written to %s', file) logger.debug("Initial upgrade counter written to %s", file)
else: else:
logger.debug("Cannot write to upgrade counter file %s", file) logger.debug("Cannot write to upgrade counter file %s", file)
continue continue
@ -175,7 +176,16 @@ def auto_upgrader(upgrade_url: str, username: str, password: str) -> bool:
# Actual upgrade process # Actual upgrade process
new_executable = os.path.join(CURRENT_DIR, os.path.basename(CURRENT_EXECUTABLE)) new_executable = os.path.join(CURRENT_DIR, os.path.basename(CURRENT_EXECUTABLE))
cmd = 'del "{}" > "{}" && move "{}" "{}" >> "{}" && del "{}" >> "{}" && "{}" --upgrade-conf >> "{}"'.format( cmd = 'del "{}" > "{}" && move "{}" "{}" >> "{}" && del "{}" >> "{}" && "{}" --upgrade-conf >> "{}"'.format(
CURRENT_EXECUTABLE, log_file, executable, log_file, new_executable, log_file, executable, log_file, new_executable, log_file CURRENT_EXECUTABLE,
log_file,
executable,
log_file,
new_executable,
log_file,
executable,
log_file,
new_executable,
log_file,
) )
logger.info( logger.info(
"Launching upgrade. Current process will quit. Upgrade starts in %s seconds. Upgrade is done by OS logged in %s", "Launching upgrade. Current process will quit. Upgrade starts in %s seconds. Upgrade is done by OS logged in %s",