From 00a95bdb61aae943c670eed6fd59185546adc777 Mon Sep 17 00:00:00 2001 From: "Jose M. Guisado" Date: Tue, 30 Aug 2022 17:04:41 +0200 Subject: live: rewrite image_restore Integrates image restore command into native ogClient code. Further reduces the need for external Bash scripts. After a succesful image restore, OS configuration is still using external Bash script "osConfigure/osConfigureCustom". --- src/utils/legacy.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ src/utils/tiptorrent.py | 9 +++------ 2 files changed, 49 insertions(+), 6 deletions(-) (limited to 'src/utils') diff --git a/src/utils/legacy.py b/src/utils/legacy.py index 8f39fe2..aca8abe 100644 --- a/src/utils/legacy.py +++ b/src/utils/legacy.py @@ -3,6 +3,7 @@ import logging import os import subprocess import shlex +import shutil from subprocess import PIPE @@ -56,6 +57,51 @@ def ogChangeRepo(ip): shell=True) +def restoreImageCustom(repo_ip, image_name, disk, partition, method): + """ + """ + if not shutil.which('restoreImageCustom'): + logging.error('Invalid restoreImageCustom invocation') + raise ValueError('Error: restoreImageCustom not found') + + if ogChangeRepo(repo).returncode != 0: + logging.error('ogChangeRepo could not change repository to %s', repo) + raise ValueError(f'Error: Cannot change repository to {repo}') + + cmd = f'restoreImageCustom {repo_ip} {image_name} {disk} {partition} {method}' + with open('/tmp/command.log', 'wb', 0) as logfile: + try: + proc = subprocess.run(cmd, + stdout=logfile, + encoding='utf-8', + shell=True) + except: + logging.error('Exception when running restoreImageCustom subprocess') + raise ValueError('Error: Incorrect command value') + return proc.returncode + + +def configureOs(disk, partition): + """ + """ + if shutil.which('configureOsCustom'): + cmd_configure = f"configureOsCustom {disk} {partition}" + else: + cmd_configure = f"configureOs {disk} {partition}" + + try: + proc = subprocess.run(cmd_configure, + stdout=PIPE, + encoding='utf-8', + shell=True) + out = proc.stdout + except: + logging.error('Exception when running configureOs subprocess') + raise ValueError('Error: Incorrect command value') + + return out + + def ogCopyEfiBootLoader(disk, partition): cmd = f'ogCopyEfiBootLoader {disk} {partition}' try: diff --git a/src/utils/tiptorrent.py b/src/utils/tiptorrent.py index 796a665..62feb43 100644 --- a/src/utils/tiptorrent.py +++ b/src/utils/tiptorrent.py @@ -71,16 +71,13 @@ def tip_client_get(tip_addr, image_name): try: proc = subprocess.Popen(shlex.split(cmd), - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, + stdout=logfile, cwd='/opt/opengnsys/cache/opt/opengnsys/images/') - out, err = proc.communicate() + proc.communicate() except: - logging.error('Exception when running software inventory subprocess') + logging.error('Exception when running tiptorrent client GET subprocess') raise ValueError('Error: Incorrect command value') finally: - logging.debug(f'tip_client_get out: {out}') - logging.debug(f'tip_client_get err: {err}') logfile.close() if proc.returncode != 0: -- cgit v1.2.3-18-g5258