83 lines
2.3 KiB
Python
83 lines
2.3 KiB
Python
import os
|
|
import sys
|
|
import subprocess
|
|
import time
|
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
# Error codes
|
|
OG_ERR_NOTEXEC = 1
|
|
OG_ERR_LOCKED = 4
|
|
OG_ERR_FORMAT = 1
|
|
OG_ERR_PARTITION = 3
|
|
OG_ERR_IMAGE = 5
|
|
OG_ERR_NOTWRITE = 14
|
|
OG_ERR_NOTCACHE = 15
|
|
OG_ERR_CACHESIZE = 16
|
|
OG_ERR_REDUCEFS = 17
|
|
OG_ERR_EXTENDFS = 18
|
|
|
|
def main():
|
|
if len(sys.argv) != 5:
|
|
og_raise_error(OG_ERR_FORMAT, "Incorrect number of arguments")
|
|
|
|
disk_num = sys.argv[1]
|
|
partition_num = sys.argv[2]
|
|
image_name = sys.argv[3]
|
|
repo = sys.argv[4] if sys.argv[4] else "REPO"
|
|
|
|
start_time = time.time()
|
|
|
|
# Load engine configurator
|
|
og_engine_configurate = os.getenv('OGENGINECONFIGURATE')
|
|
if not og_engine_configurate:
|
|
exec(open("/opt/opengnsys/etc/engine.cfg").read())
|
|
|
|
# Clear temporary log files
|
|
with open(os.getenv('OGLOGSESSION'), 'w') as f:
|
|
f.write(" ")
|
|
with open(os.getenv('OGLOGCOMMAND'), 'w') as f:
|
|
f.write(" ")
|
|
with open(f"{os.getenv('OGLOGCOMMAND')}.tmp", 'w') as f:
|
|
f.write(" ")
|
|
|
|
# Log start of execution
|
|
og_echo("log session", f"Start {sys.argv[0]} {' '.join(sys.argv)}")
|
|
|
|
# Check if called by OpenGnsys Client
|
|
caller = og_get_caller()
|
|
if caller != "ogAdmClient":
|
|
og_raise_error(OG_ERR_NOTEXEC, f"{caller} -> {sys.argv[0]}")
|
|
|
|
# Default repository value
|
|
if repo == og_get_ip_address():
|
|
repo = "CACHE"
|
|
|
|
if og_check_ip_address(repo) or repo == "REPO":
|
|
og_unit = os.getenv('ogunit')
|
|
if og_unit:
|
|
og_unit = og_unit
|
|
if not og_change_repo(repo, og_unit):
|
|
og_raise_error(OG_ERR_NOTFOUND, f"{repo}")
|
|
|
|
if repo == "REPO" and os.getenv('boot') != "admin":
|
|
if cambiar_acceso("admin") > 0:
|
|
sys.exit(1)
|
|
|
|
og_echo("createImage", f"{disk_num} {partition_num} {repo} /{image_name}")
|
|
if subprocess.call(["which", "createImageCustom"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) == 0:
|
|
retval = create_image_custom(disk_num, partition_num, repo, image_name)
|
|
else:
|
|
retval = create_image(disk_num, partition_num, repo, image_name)
|
|
|
|
if repo == "REPO" and os.getenv('boot') != "admin":
|
|
cambiar_acceso("user")
|
|
|
|
# Log end of execution
|
|
og_echo("log session", f"End {retval}")
|
|
|
|
sys.exit(retval)
|
|
|
|
if __name__ == "__main__":
|
|
main() |