Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix status calc on non phase output #201

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 24 additions & 3 deletions embark/embark/helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,24 @@ def cleanup_charfield(charfield) -> str:
return charfield


def count_emba_modules(emba_dir_path):
s_module_cnt, p_module_cnt, q_module_cnt, l_module_cnt, f_module_cnt, d_module_cnt = 0, 0, 0, 0, 0, 0
for mod_file_ in os.listdir(f"{emba_dir_path}/modules"):
if mod_file_.startswith('S'):
s_module_cnt += 1
elif mod_file_.startswith('P'):
p_module_cnt += 1
elif mod_file_.startswith('F'):
f_module_cnt += 1
elif mod_file_.startswith('L'):
l_module_cnt += 1
elif mod_file_.startswith('Q'):
q_module_cnt += 1
elif mod_file_.startswith('D'):
d_module_cnt += 1
return s_module_cnt, p_module_cnt, q_module_cnt, l_module_cnt, f_module_cnt, d_module_cnt


def get_version_strings():
# gets us the currently installed version
if Path(settings.EMBA_ROOT + "/external/onlinechecker").exists():
Expand All @@ -87,8 +105,11 @@ def get_version_strings():
else:
emba_version = ""

if Path("./VERSION.txt").exists():
with open(Path("./VERSION.txt"), 'r', encoding='UTF-8') as embark_version_file:
if Path(f"{settings.BASE_DIR}/VERSION.txt").exists():
with open(Path(f"{settings.BASE_DIR}/VERSION.txt"), 'r', encoding='UTF-8') as embark_version_file:
embark_version = embark_version_file.read().splitlines()[0]
elif Path(f"{settings.BASE_DIR.parent}/VERSION.txt").exists():
with open(Path(f"{settings.BASE_DIR.parent}/VERSION.txt"), 'r', encoding='UTF-8') as embark_version_file:
embark_version = embark_version_file.read().splitlines()[0]
else:
embark_version = ""
Expand All @@ -100,4 +121,4 @@ def get_version_strings():
TEST_STRING = 'Linux / v2.6.33.2'
print(cleanup_charfield(TEST_STRING))

print(get_version_strings())
print(count_emba_modules(emba_dir_path="/home/cylox/embark/emba"))
19 changes: 14 additions & 5 deletions embark/embark/logreader.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,8 @@ def phase_identify(status_message):
failed_pattern = "EMBA failed in docker mode!"

# calculate percentage
max_module = -1
phase_nmbr = -1
max_module = -2
phase_nmbr = -2
if re.search(pattern=re.escape(pre_checker_phase_pattern), string=status_message["phase"]):
max_module = EMBA_P_MOD_CNT
phase_nmbr = EMBA_P_PHASE
Expand All @@ -130,8 +130,11 @@ def phase_identify(status_message):
max_module = 0
phase_nmbr = EMBA_PHASE_CNT
elif re.search(pattern=re.escape(failed_pattern), string=status_message["phase"]):
max_module = -2
max_module = -1
phase_nmbr = EMBA_PHASE_CNT
else:
logger.info("Undefined pattern in logreader %s ", status_message["phase"])
logger.info("Not updating status percentage")
return max_module, phase_nmbr

# update our dict whenever a new module is being processed
Expand All @@ -144,14 +147,20 @@ def update_status(self, stream_item_list):
elif max_module > 0:
self.module_cnt += 1
self.module_cnt = self.module_cnt % max_module # make sure it's in range
percentage = phase_nmbr * (100 / EMBA_PHASE_CNT) + ((100 / EMBA_PHASE_CNT) / max_module) * self.module_cnt # increments: F=6.25, S=0.65, L=3.57, P=1.25
percentage = phase_nmbr * (100 / EMBA_PHASE_CNT) + ((100 / EMBA_PHASE_CNT) / max_module) * self.module_cnt
elif max_module == -1:
percentage = 100
self.finish = True
logger.error("EMBA failed with %s ", self.status_msg)
else:
logger.debug("Undefined state in logreader %s ", self.status_msg)
logger.error("Undefined state in logreader %s ", self.status_msg)
percentage = self.status_msg["percentage"] # stays the same

logger.debug("Status is %d, in phase %d, with modules %d", percentage, phase_nmbr, max_module)

# set attributes of current message
self.status_msg["module"] = stream_item_list[0]

# ignore all Q-modules for percentage calc
if not re.match(".*Q[0-9][0-9]", stream_item_list[0]):
self.status_msg["percentage"] = percentage
Expand Down
27 changes: 3 additions & 24 deletions embark/embark/settings/deploy.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

from dotenv import load_dotenv

from embark.helper import get_version_strings
from embark.helper import count_emba_modules, get_version_strings

# load .env file
load_dotenv()
Expand Down Expand Up @@ -307,30 +307,9 @@
SECURE_HSTS_SECONDS = 0
SECURE_SSL_REDIRECT = False


def count_emba_modules(emba_dir_path):
s_module_cnt, p_module_cnt, q_module_cnt, l_module_cnt, f_module_cnt = 0, 0, 0, 0, 0
for mod_file_ in os.listdir(f"{emba_dir_path}/modules"):
if mod_file_.startswith('S'):
s_module_cnt += 1
elif mod_file_.startswith('P'):
p_module_cnt += 1
elif mod_file_.startswith('F'):
f_module_cnt += 1
elif mod_file_.startswith('L'):
l_module_cnt += 1
elif mod_file_.startswith('Q'):
q_module_cnt += 1
return s_module_cnt, p_module_cnt, f_module_cnt, l_module_cnt, q_module_cnt


try:
EMBA_S_MOD_CNT, EMBA_P_MOD_CNT, EMBA_F_MOD_CNT, EMBA_L_MOD_CNT, EMBA_Q_MOD_CNT = count_emba_modules(EMBA_ROOT)
EMBA_S_MOD_CNT, EMBA_P_MOD_CNT, EMBA_Q_MOD_CNT, EMBA_L_MOD_CNT, EMBA_F_MOD_CNT, EMBA_D_MOD_CNT = count_emba_modules(EMBA_ROOT)
except FileNotFoundError as file_error:
print("[Warning] Installation is missing the EMBA submodule")
EMBA_S_MOD_CNT = 44
EMBA_P_MOD_CNT = 18
EMBA_F_MOD_CNT = 4
EMBA_L_MOD_CNT = 8
EMBA_S_MOD_CNT, EMBA_P_MOD_CNT, EMBA_Q_MOD_CNT, EMBA_L_MOD_CNT, EMBA_F_MOD_CNT, EMBA_D_MOD_CNT = 46, 20, 1, 10, 6, 3

VERSION = get_version_strings()
26 changes: 3 additions & 23 deletions embark/embark/settings/dev.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

from dotenv import load_dotenv

from embark.helper import get_version_strings
from embark.helper import count_emba_modules, get_version_strings

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent.parent
Expand Down Expand Up @@ -271,29 +271,9 @@
}
TEMP_DIR = Path("/tmp/")


def count_emba_modules(emba_dir_path):
s_module_cnt, p_module_cnt, q_module_cnt, l_module_cnt, f_module_cnt = 0, 0, 0, 0, 0
for mod_file_ in os.listdir(f"{emba_dir_path}/modules"):
if mod_file_.startswith('S'):
s_module_cnt += 1
elif mod_file_.startswith('P'):
p_module_cnt += 1
elif mod_file_.startswith('F'):
f_module_cnt += 1
elif mod_file_.startswith('L'):
l_module_cnt += 1
elif mod_file_.startswith('Q'):
q_module_cnt += 1
return s_module_cnt, p_module_cnt, f_module_cnt, l_module_cnt, q_module_cnt


try:
EMBA_S_MOD_CNT, EMBA_P_MOD_CNT, EMBA_F_MOD_CNT, EMBA_L_MOD_CNT, EMBA_Q_MOD_CNT = count_emba_modules(EMBA_ROOT)
EMBA_S_MOD_CNT, EMBA_P_MOD_CNT, EMBA_Q_MOD_CNT, EMBA_L_MOD_CNT, EMBA_F_MOD_CNT, EMBA_D_MOD_CNT = count_emba_modules(EMBA_ROOT)
except FileNotFoundError as file_error:
EMBA_S_MOD_CNT = 44
EMBA_P_MOD_CNT = 18
EMBA_F_MOD_CNT = 4
EMBA_L_MOD_CNT = 8
EMBA_S_MOD_CNT, EMBA_P_MOD_CNT, EMBA_Q_MOD_CNT, EMBA_L_MOD_CNT, EMBA_F_MOD_CNT, EMBA_D_MOD_CNT = 46, 20, 1, 10, 6, 3

VERSION = get_version_strings()
4 changes: 3 additions & 1 deletion run-server.sh
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,10 @@ copy_file "${PWD}"/cert/embark.local.key /var/www/conf/cert
copy_file "${PWD}"/cert/embark-ws.local.key /var/www/conf/cert
copy_file "${PWD}"/cert/embark-ws.local.crt /var/www/conf/cert

# cp .env

# cp .env and version
copy_file ./.env /var/www/embark/embark/settings/
copy_file ./VERSION.txt /var/www/embark/

# !DIRECTORY-CHANGE!
cd /var/www/embark/ || exit 1
Expand Down
Loading