98 lines
2.9 KiB
Python
98 lines
2.9 KiB
Python
#!/usr/bin/env python3
|
|
import sys
|
|
import resource
|
|
import logging
|
|
|
|
import NetLib
|
|
import ogGlobals
|
|
import SystemLib
|
|
import DiskLib
|
|
|
|
from GitLib import OpengnsysGitLibrary, NTFSImplementation, OgProgressPrinterWeb
|
|
|
|
import argparse
|
|
|
|
|
|
|
|
class OgLogger(logging.StreamHandler):
|
|
def emit(self, record):
|
|
log_types = ["command"]
|
|
log_level = "info"
|
|
|
|
match(record.levelno):
|
|
case logging.DEBUG:
|
|
log_level = None
|
|
case logging.WARNING:
|
|
log_level = "warning"
|
|
case logging.INFO:
|
|
log_level = "info"
|
|
case logging.ERROR:
|
|
log_level = "error"
|
|
case logging.CRITICAL:
|
|
SystemLib.ogRaiseError()
|
|
|
|
SystemLib.ogEcho(log_types, log_level, record.getMessage())
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
|
|
try:
|
|
# Usamos el mínimo entre 65536 y el límite hard disponible
|
|
new_limit = min(65536, hard)
|
|
resource.setrlimit(resource.RLIMIT_NOFILE, (new_limit, hard))
|
|
print(f"RLIMIT_NOFILE establecido a: {resource.getrlimit(resource.RLIMIT_NOFILE)}")
|
|
except ValueError as e:
|
|
print(f"No se pudo aumentar el límite de archivos abiertos: {e}")
|
|
|
|
|
|
|
|
parser = argparse.ArgumentParser(
|
|
prog = "OpenGnsys Git Image Restore",
|
|
description = "Restores an image from Git"
|
|
)
|
|
|
|
parser.add_argument("--disk", type=int, metavar="DISK", required=True, help="Disk ID")
|
|
parser.add_argument("--partition", type=int, metavar="PART", required=True, help="Disk partition")
|
|
parser.add_argument("--repository", type=str, metavar="REPO", required=True, help="Address of the Git repository to clone")
|
|
parser.add_argument("--branch", type=str, metavar="BRANCH", required=True, help="Branch to check out")
|
|
parser.add_argument("--commit", type=str, metavar="COMMIT_ID", required=True, help="Commit to check out")
|
|
parser.add_help = True
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
logFilePath = "/var/log/opengnsys.RestaurarImagenGit.log"
|
|
ogLog = OgLogger()
|
|
ogLog.setLevel(logging.DEBUG)
|
|
|
|
|
|
fileLog = logging.FileHandler(logFilePath)
|
|
fileLog.setLevel(logging.DEBUG)
|
|
|
|
formatter = logging.Formatter('%(asctime)s - %(name)24s - [%(levelname)5s] - %(message)s')
|
|
|
|
fileLog.setFormatter(formatter)
|
|
|
|
logger = logging.getLogger(__package__)
|
|
logger.setLevel(logging.DEBUG)
|
|
logger.addHandler(fileLog)
|
|
logger.addHandler(ogLog)
|
|
|
|
logger.info("Starting RestaurarImagenGit")
|
|
|
|
|
|
|
|
|
|
ntfs_impl = NTFSImplementation.NTFS3G
|
|
og_git = OpengnsysGitLibrary(ntfs_implementation = ntfs_impl)
|
|
og_git.progress_callback = OgProgressPrinterWeb()
|
|
|
|
device = DiskLib.ogDiskToDev(args.disk, args.partition)
|
|
|
|
og_git.cloneRepo(args.repo, destination = device, boot_device = device, ref = args.commit, branch = args.branch)
|
|
|
|
logger.info("RestaurarImagenGit Finished.")
|
|
|
|
|