1 | import os |
---|
2 | import sys |
---|
3 | import time |
---|
4 | |
---|
5 | #!/usr/bin/env python3 |
---|
6 | |
---|
7 | def main(): |
---|
8 | PROG = os.path.basename(__file__) |
---|
9 | if len(sys.argv) < 5: |
---|
10 | 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] ]") |
---|
11 | sys.exit(1) |
---|
12 | |
---|
13 | TIME1 = time.time() |
---|
14 | REPO = sys.argv[1].upper() or "REPO" |
---|
15 | IMGNAME = sys.argv[2] |
---|
16 | DISK = sys.argv[3] |
---|
17 | PART = sys.argv[4] |
---|
18 | PROTO = (sys.argv[5].upper() if len(sys.argv) > 5 else "UNICAST") |
---|
19 | PROTOOPT = sys.argv[6] if len(sys.argv) > 6 else "" |
---|
20 | OGUNIT = os.getenv("ogunit", "") |
---|
21 | |
---|
22 | if not OGENGINECONFIGURATE: |
---|
23 | exec(open("/opt/opengnsys/etc/engine.cfg").read()) |
---|
24 | |
---|
25 | with open(OGLOGCOMMAND, 'w') as f: |
---|
26 | f.write(" ") |
---|
27 | if ogGetCaller() != "EjecutarScript": |
---|
28 | with open(OGLOGSESSION, 'w') as f: |
---|
29 | f.write("") |
---|
30 | |
---|
31 | ogEcho("log", "session", f"[1] {MSG_SCRIPTS_START} {PROG} {' '.join(sys.argv)}") |
---|
32 | |
---|
33 | if ogIsLocked(DISK, PART): |
---|
34 | sys.exit(ogRaiseError("session", OG_ERR_LOCKED, f"{MSG_PARTITION}, {DISK} {PART}")) |
---|
35 | |
---|
36 | ogEcho("log", "session", f"{MSG_HELP_ogUnmount} {DISK} {PART}") |
---|
37 | ogUnmount(DISK, PART) |
---|
38 | |
---|
39 | if REPO == ogGetIpAddress() or REPO == "CACHE": |
---|
40 | MODE = "CACHE" |
---|
41 | else: |
---|
42 | if ogCheckIpAddress(REPO) == 0 or REPO == "REPO": |
---|
43 | if not ogChangeRepo(REPO, OGUNIT): |
---|
44 | sys.exit(ogRaiseError(OG_ERR_NOTFOUND, f"{REPO} {OGUNIT}")) |
---|
45 | MODE = "REPO" |
---|
46 | |
---|
47 | IMGOS = ogGetImageInfo(ogGetPath(MODE, f"{IMGNAME}.img")) |
---|
48 | if IMGOS == 1: |
---|
49 | sys.exit(ogRaiseError("session", OG_ERR_NOTFOUND, f"{REPO} {IMGNAME}")) |
---|
50 | elif IMGOS == 5: |
---|
51 | sys.exit(ogRaiseError("session", OG_ERR_IMAGEFILE, f"{REPO} {IMGNAME}")) |
---|
52 | elif IMGOS != 0: |
---|
53 | sys.exit(ogRaiseError("session", OG_ERR_GENERIC)) |
---|
54 | |
---|
55 | IMGSIZE = os.path.getsize(ogGetPath(MODE, f"{IMGNAME}.img")) // 1024 |
---|
56 | ogEcho("log", "session", f"[1] REPO={REPO} IMG-FILE={IMGNAME}.img SIZE={IMGSIZE} (KB) METADATA={IMGOS}") |
---|
57 | |
---|
58 | if MODE == "CACHE": |
---|
59 | NEXTOPERATION = "CACHE" |
---|
60 | elif MODE == "REPO": |
---|
61 | if PROTO in ["MULTICAST-DIRECT", "UNICAST-DIRECT"]: |
---|
62 | NEXTOPERATION = PROTO.split('-')[0] |
---|
63 | elif PROTO in ["TORRENT", "TORRENT-CACHE", "MULTICAST", "MULTICAST-CACHE", "UNICAST", "UNICAST-CACHE"]: |
---|
64 | PROTO = PROTO.split('-')[0] |
---|
65 | ogEcho("log", "session", f"[2] updateCache {REPO} /{IMGNAME}.img {PROTO} {PROTOOPT}") |
---|
66 | TIME2 = time.time() |
---|
67 | RETVAL = updateCache(REPO, f"/{IMGNAME}.img", PROTO, PROTOOPT) |
---|
68 | TIME2 = time.time() - TIME2 |
---|
69 | ogEcho("log", "session", f" [ ] {MSG_SCRIPTS_TIME_PARTIAL} updateCache {TIME2 // 60}m {TIME2 % 60}s") |
---|
70 | if RETVAL == 0: |
---|
71 | ogEcho("log", "session", "[50] updateCache (OK)") |
---|
72 | NEXTOPERATION = "CACHE" |
---|
73 | elif RETVAL in [15, 16]: |
---|
74 | ogEcho("log", "session", f"[50] {MSG_ERR_NOTCACHE} ; {MSG_ERR_CACHESIZE}") |
---|
75 | ogEcho("log", "session", f"[50] {MSG_SCRIPTS_CHECK_ENGINE}: RESTOREPROTOCOLNOTCACHE={RESTOREPROTOCOLNOTCACHE}") |
---|
76 | if RESTOREPROTOCOLNOTCACHE == "MULTICAST": |
---|
77 | NEXTOPERATION = "MULTICAST" if PROTO == "MULTICAST" else "UNICAST" |
---|
78 | elif RESTOREPROTOCOLNOTCACHE == "UNICAST": |
---|
79 | NEXTOPERATION = "UNICAST" |
---|
80 | elif RESTOREPROTOCOLNOTCACHE == "NONE": |
---|
81 | if RETVAL == 15: |
---|
82 | ogEcho("log", "session", f"[100] {MSG_ERR_NOTCACHE}") |
---|
83 | sys.exit(ogRaiseError("session", OG_ERR_NOTCACHE, "NOT CACHE")) |
---|
84 | elif RETVAL == 16: |
---|
85 | ogEcho("log", "session", f"[100] {MSG_ERR_CACHESIZE}") |
---|
86 | sys.exit(ogRaiseError("session", OG_ERR_CACHESIZE, "CACHE FULL")) |
---|
87 | elif RETVAL in [57, 60]: |
---|
88 | sys.exit(RETVAL) |
---|
89 | else: |
---|
90 | sys.exit(RETVAL) |
---|
91 | else: |
---|
92 | sys.exit(ogRaiseError("session", OG_ERR_FORMAT, f"{MSG_ERR_FORMAT}, {PROTO}")) |
---|
93 | else: |
---|
94 | sys.exit(ogRaiseError("session", OG_ERR_FORMAT, f"{MSG_ERR_FORMAT}, {REPO}")) |
---|
95 | |
---|
96 | TIME3 = time.time() |
---|
97 | |
---|
98 | if NEXTOPERATION == "CACHE": |
---|
99 | PARAMS = f"CACHE {IMGNAME} {DISK} {PART}" |
---|
100 | elif NEXTOPERATION == "UNICAST": |
---|
101 | PARAMS = f"{REPO} {IMGNAME} {DISK} {PART}" |
---|
102 | elif NEXTOPERATION == "MULTICAST": |
---|
103 | PARAMS = f"{REPO} {IMGNAME} {DISK} {PART} {PROTO} {PROTOOPT}" |
---|
104 | |
---|
105 | if os.system("which restoreImageCustom") == 0: |
---|
106 | ogEcho("log", "session", f"[55] {MSG_HELP_ogRestoreImage}: restoreImageCustom {PARAMS}") |
---|
107 | os.system(f"restoreImageCustom {PARAMS}") |
---|
108 | else: |
---|
109 | ogEcho("log", "session", f"[55] {MSG_HELP_ogRestoreImage}: restoreImage {PARAMS}") |
---|
110 | os.system(f"restoreImage {PARAMS}") |
---|
111 | RETVAL = os.system(f"restoreImage {PARAMS}") |
---|
112 | |
---|
113 | RESUMERESTOREIMAGE = os.popen(f"grep -m 1 'Total Time:' {OGLOGCOMMAND}").read() |
---|
114 | ogEcho("log", "session", f" [ ] {RESUMERESTOREIMAGE}") |
---|
115 | if RETVAL != 0: |
---|
116 | ogRaiseError("session", OG_ERR_IMAGE, f"{REPO} {IMGNAME}") |
---|
117 | if ogGetCaller() != "EjecutarScript": |
---|
118 | ogEcho("log", "session", f"{MSG_INTERFACE_END} {OG_ERR_IMAGE}") |
---|
119 | sys.exit(OG_ERR_IMAGE) |
---|
120 | |
---|
121 | TIME3 = time.time() - TIME3 |
---|
122 | ogEcho("log", "session", f" [ ] {MSG_SCRIPTS_TIME_PARTIAL} : {TIME3 // 60}m {TIME3 % 60}s") |
---|
123 | |
---|
124 | if os.system("which configureOsCustom") == 0: |
---|
125 | ogEcho("log", "session", "[90] configureOsCustom") |
---|
126 | os.system(f"configureOsCustom {DISK} {PART} {REPO} {IMGNAME}") |
---|
127 | else: |
---|
128 | ogEcho("log", "session", f"[90] {MSG_SCRIPTS_OS_CONFIGURE}") |
---|
129 | os.system(f"configureOs {DISK} {PART}") |
---|
130 | |
---|
131 | TIME = time.time() - TIME1 |
---|
132 | ogEcho("log", "session", f"[100] {MSG_SCRIPTS_TIME_TOTAL} {TIME // 60}m {TIME % 60}s") |
---|
133 | |
---|
134 | if ogGetCaller() != "EjecutarScript": |
---|
135 | ogEcho("log", "session", f"{MSG_INTERFACE_END} {RETVAL}") |
---|
136 | sys.exit(RETVAL) |
---|
137 | |
---|
138 | if __name__ == "__main__": |
---|
139 | main() |
---|