remove spaces in ensure_packages_installed, add xfs migration logging

This commit is contained in:
clore 2025-01-03 03:59:24 +00:00
parent 73cb1ca67e
commit 49f8d46b45
2 changed files with 27 additions and 9 deletions

View File

@ -6,6 +6,7 @@ from lib import networking
from lib import get_specs
from lib import utils
from datetime import datetime
import asyncio
import json
import os
@ -66,8 +67,10 @@ def get_to_use_storage_values(max_free_space):
def migrate():
docker_xfs_state = validate_docker_xfs()
if docker_xfs_state == "skip":
migrate_log("skipping migration")
return
elif docker_xfs_state == "valid":
migrate_log("migration succeeded")
return 'success'
packages_available = asyncio.run(ensure_packages_installed.ensure_packages_installed(
@ -75,15 +78,18 @@ def migrate():
))
if not packages_available:
migrate_log("packages missing")
return 'packages-missing'
root_device = get_specs.get_root_device()
if not root_device:
migrate_log("not supported boot device")
return "not-supported-boot-device"
device_name = os.path.basename(root_device).split('p')[0].rstrip('0123456789')
if get_specs.is_usb_device(device_name):
migrate_log("not supported boot device")
return "not-supported-boot-device"
log.info("Starting migration to xfs")
@ -93,17 +99,19 @@ def migrate():
try:
os.remove(DOCKER_DATA_IMG)
except Exception as e:
print(f"Error while trying to remove {DOCKER_DATA_IMG}: {e}")
migrate_log("Failed to remove DOCKER_DATA_IMG")
return "failure"
max_free_space = utils.get_free_space_mb('/') + utils.get_directory_size_mb(DOCKER_ROOT)
leave_free_space, min_xfs_size = get_to_use_storage_values(max_free_space)
if leave_free_space == None:
migrate_log("can't get free space")
return "failure"
data_img_size = int(max_free_space - leave_free_space)
if data_img_size < min_xfs_size:
migrate_log("not enought free space")
return 'not-enough-space'
docker_config_success = False
@ -126,6 +134,7 @@ def migrate():
if code==0:
return 'success'
else:
migrate_log("failed to migrate v1")
configure_docker_daemon(remove=True)
configure_fstab(remove=True)
return 'failure'
@ -138,8 +147,17 @@ def migrate():
os.remove(DOCKER_DATA_IMG)
except Exception as e:
pass
migrate_log("failed to migrate v2")
return 'failure'
def migrate_log(msg):
log_file_path = "/opt/clore-hosting/migrate-log.txt"
os.makedirs(os.path.dirname(log_file_path), exist_ok=True)
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
log_message = f"{current_time} | {msg}\n"
with open(log_file_path, "a") as log_file:
log_file.write(log_message)
def validate_docker_xfs():
code_root, stdout_root, stderr_root = utils.run_command("df -T /")
code, stdout, stderr = utils.run_command(f"df -T {DOCKER_ROOT}")