144 lines
6.3 KiB
Python
144 lines
6.3 KiB
Python
import os
|
|
import sys
|
|
import time
|
|
import SystemLib
|
|
import DiskLib
|
|
import NetLib
|
|
import ImageLib
|
|
|
|
#!/usr/bin/env python3
|
|
|
|
def main():
|
|
PROG = os.path.basename(__file__)
|
|
if len(sys.argv) < 5:
|
|
SystemLib.ogRaiseError("session", OG_ERR_FORMAT, f"{MSG_FORMAT}: {PROG} REPO imagen ndisco nparticion [ UNICAST-DIRECT|UNICAST|UNICAST-CACHE|MULTICAST-DIRECT|MULTICAST|MULTICAST-CACHE|TORRENT [opciones protocolo] ]")
|
|
sys.exit(1)
|
|
|
|
TIME1 = time.time()
|
|
REPO = sys.argv[1].upper() or "REPO"
|
|
IMGNAME = sys.argv[2]
|
|
DISK = sys.argv[3]
|
|
PART = sys.argv[4]
|
|
PROTO = (sys.argv[5].upper() if len(sys.argv) > 5 else "UNICAST")
|
|
PROTOOPT = sys.argv[6] if len(sys.argv) > 6 else ""
|
|
OGUNIT = os.getenv("ogunit", "")
|
|
|
|
if not OGENGINECONFIGURATE:
|
|
exec(open("/opt/opengnsys/etc/engine.cfg").read())
|
|
|
|
with open(OGLOGCOMMAND, 'w') as f:
|
|
f.write(" ")
|
|
if SystemLib.ogGetCaller() != "EjecutarScript":
|
|
with open(OGLOGSESSION, 'w') as f:
|
|
f.write("")
|
|
|
|
SystemLib.ogEcho("log", "session", f"[1] {MSG_SCRIPTS_START} {PROG} {' '.join(sys.argv)}")
|
|
|
|
if FileSystemLib.ogIsLocked(DISK, PART):
|
|
sys.exit(SystemLib.ogRaiseError("session", OG_ERR_LOCKED, f"{MSG_PARTITION}, {DISK} {PART}"))
|
|
|
|
SystemLib.ogEcho("log", "session", f"{MSG_HELP_FileSystemLib.ogUnmount} {DISK} {PART}")
|
|
FileSystemLib.ogUnmount(DISK, PART)
|
|
|
|
if REPO == NetLib.ogGetIpAddress() or REPO == "CACHE":
|
|
MODE = "CACHE"
|
|
else:
|
|
if DiskLib.ogCheckIpAddress(REPO) == 0 or REPO == "REPO":
|
|
if not NetLib.ogChangeRepo(REPO, OGUNIT):
|
|
sys.exit(SystemLib.ogRaiseError(OG_ERR_NOTFOUND, f"{REPO} {OGUNIT}"))
|
|
MODE = "REPO"
|
|
|
|
IMGOS = ImageLib.ogGetImageInfo(ogGetPath(MODE, f"{IMGNAME}.img"))
|
|
if IMGOS == 1:
|
|
sys.exit(SystemLib.ogRaiseError("session", OG_ERR_NOTFOUND, f"{REPO} {IMGNAME}"))
|
|
elif IMGOS == 5:
|
|
sys.exit(SystemLib.ogRaiseError("session", OG_ERR_IMAGEFILE, f"{REPO} {IMGNAME}"))
|
|
elif IMGOS != 0:
|
|
sys.exit(SystemLib.ogRaiseError("session", OG_ERR_GENERIC))
|
|
|
|
IMGSIZE = os.path.getsize(ogGetPath(MODE, f"{IMGNAME}.img")) // 1024
|
|
SystemLib.ogEcho("log", "session", f"[1] REPO={REPO} IMG-FILE={IMGNAME}.img SIZE={IMGSIZE} (KB) METADATA={IMGOS}")
|
|
|
|
if MODE == "CACHE":
|
|
NEXTOPERATION = "CACHE"
|
|
elif MODE == "REPO":
|
|
if PROTO in ["MULTICAST-DIRECT", "UNICAST-DIRECT"]:
|
|
NEXTOPERATION = PROTO.split('-')[0]
|
|
elif PROTO in ["TORRENT", "TORRENT-CACHE", "MULTICAST", "MULTICAST-CACHE", "UNICAST", "UNICAST-CACHE"]:
|
|
PROTO = PROTO.split('-')[0]
|
|
SystemLib.ogEcho("log", "session", f"[2] updateCache {REPO} /{IMGNAME}.img {PROTO} {PROTOOPT}")
|
|
TIME2 = time.time()
|
|
RETVAL = updateCache(REPO, f"/{IMGNAME}.img", PROTO, PROTOOPT)
|
|
TIME2 = time.time() - TIME2
|
|
SystemLib.ogEcho("log", "session", f" [ ] {MSG_SCRIPTS_TIME_PARTIAL} updateCache {TIME2 // 60}m {TIME2 % 60}s")
|
|
if RETVAL == 0:
|
|
SystemLib.ogEcho("log", "session", "[50] updateCache (OK)")
|
|
NEXTOPERATION = "CACHE"
|
|
elif RETVAL in [15, 16]:
|
|
SystemLib.ogEcho("log", "session", f"[50] {MSG_ERR_NOTCACHE} ; {MSG_ERR_CACHESIZE}")
|
|
SystemLib.ogEcho("log", "session", f"[50] {MSG_SCRIPTS_CHECK_ENGINE}: RESTOREPROTOCOLNOTCACHE={RESTOREPROTOCOLNOTCACHE}")
|
|
if RESTOREPROTOCOLNOTCACHE == "MULTICAST":
|
|
NEXTOPERATION = "MULTICAST" if PROTO == "MULTICAST" else "UNICAST"
|
|
elif RESTOREPROTOCOLNOTCACHE == "UNICAST":
|
|
NEXTOPERATION = "UNICAST"
|
|
elif RESTOREPROTOCOLNOTCACHE == "NONE":
|
|
if RETVAL == 15:
|
|
SystemLib.ogEcho("log", "session", f"[100] {MSG_ERR_NOTCACHE}")
|
|
sys.exit(SystemLib.ogRaiseError("session", OG_ERR_NOTCACHE, "NOT CACHE"))
|
|
elif RETVAL == 16:
|
|
SystemLib.ogEcho("log", "session", f"[100] {MSG_ERR_CACHESIZE}")
|
|
sys.exit(SystemLib.ogRaiseError("session", OG_ERR_CACHESIZE, "CACHE FULL"))
|
|
elif RETVAL in [57, 60]:
|
|
sys.exit(RETVAL)
|
|
else:
|
|
sys.exit(RETVAL)
|
|
else:
|
|
sys.exit(SystemLib.ogRaiseError("session", OG_ERR_FORMAT, f"{MSG_ERR_FORMAT}, {PROTO}"))
|
|
else:
|
|
sys.exit(SystemLib.ogRaiseError("session", OG_ERR_FORMAT, f"{MSG_ERR_FORMAT}, {REPO}"))
|
|
|
|
TIME3 = time.time()
|
|
|
|
if NEXTOPERATION == "CACHE":
|
|
PARAMS = f"CACHE {IMGNAME} {DISK} {PART}"
|
|
elif NEXTOPERATION == "UNICAST":
|
|
PARAMS = f"{REPO} {IMGNAME} {DISK} {PART}"
|
|
elif NEXTOPERATION == "MULTICAST":
|
|
PARAMS = f"{REPO} {IMGNAME} {DISK} {PART} {PROTO} {PROTOOPT}"
|
|
|
|
if os.system("which restoreImageCustom") == 0:
|
|
SystemLib.ogEcho("log", "session", f"[55] {MSG_HELP_ogRestoreImage}: restoreImageCustom {PARAMS}")
|
|
os.system(f"restoreImageCustom {PARAMS}")
|
|
else:
|
|
SystemLib.ogEcho("log", "session", f"[55] {MSG_HELP_ogRestoreImage}: restoreImage {PARAMS}")
|
|
os.system(f"restoreImage {PARAMS}")
|
|
RETVAL = os.system(f"restoreImage {PARAMS}")
|
|
|
|
RESUMERESTOREIMAGE = os.popen(f"grep -m 1 'Total Time:' {OGLOGCOMMAND}").read()
|
|
SystemLib.ogEcho("log", "session", f" [ ] {RESUMERESTOREIMAGE}")
|
|
if RETVAL != 0:
|
|
SystemLib.ogRaiseError("session", OG_ERR_IMAGE, f"{REPO} {IMGNAME}")
|
|
if SystemLib.ogGetCaller() != "EjecutarScript":
|
|
SystemLib.ogEcho("log", "session", f"{MSG_INTERFACE_END} {OG_ERR_IMAGE}")
|
|
sys.exit(OG_ERR_IMAGE)
|
|
|
|
TIME3 = time.time() - TIME3
|
|
SystemLib.ogEcho("log", "session", f" [ ] {MSG_SCRIPTS_TIME_PARTIAL} : {TIME3 // 60}m {TIME3 % 60}s")
|
|
|
|
if os.system("which configureOsCustom") == 0:
|
|
SystemLib.ogEcho("log", "session", "[90] configureOsCustom")
|
|
os.system(f"configureOsCustom {DISK} {PART} {REPO} {IMGNAME}")
|
|
else:
|
|
SystemLib.ogEcho("log", "session", f"[90] {MSG_SCRIPTS_OS_CONFIGURE}")
|
|
os.system(f"configureOs {DISK} {PART}")
|
|
|
|
TIME = time.time() - TIME1
|
|
SystemLib.ogEcho("log", "session", f"[100] {MSG_SCRIPTS_TIME_TOTAL} {TIME // 60}m {TIME % 60}s")
|
|
|
|
if SystemLib.ogGetCaller() != "EjecutarScript":
|
|
SystemLib.ogEcho("log", "session", f"{MSG_INTERFACE_END} {RETVAL}")
|
|
sys.exit(RETVAL)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|