All logging should use call new functions

Signed-off-by: colramos-amd <colramos@amd.com>


[ROCm/rocprofiler-compute commit: 5bf38a4fed]
This commit is contained in:
colramos-amd
2024-01-30 17:25:16 -06:00
committed by Karl W. Schulz
parent cfdf288cba
commit a1371462ba
26 changed files with 474 additions and 337 deletions
@@ -23,12 +23,11 @@
##############################################################################el
from abc import ABC, abstractmethod
from utils.utils import error, is_workload_empty, demarcate
from utils.utils import is_workload_empty, demarcate, console_error, console_log, console_warning, console_debug
from pymongo import MongoClient
from tqdm import tqdm
import os
import logging
import getpass
import pandas as pd
@@ -63,7 +62,7 @@ class DatabaseConnector:
soc = sys_info["name"][0]
name = sys_info["workload_name"][0]
else:
error("[database] Unable to parse SoC and/or workload name from sysinfo.csv")
console_error("[database] Unable to parse SoC and/or workload name from sysinfo.csv")
self.connection_info["db"] = (
"omniperf_" + str(self.args.team) + "_" + str(name) + "_" + str(soc)
@@ -76,10 +75,9 @@ class DatabaseConnector:
file = "blank"
for file in tqdm(os.listdir(self.connection_info["workload"])):
if file.endswith(".csv"):
logging.info(
"[database] Uploading: %s" % self.connection_info["workload"]
+ "/"
+ file
console_log(
"database",
"Uploading: %s" % self.connection_info["workload"] + "/" + file
)
try:
fileName = file[0 : file.find(".")]
@@ -97,15 +95,21 @@ class DatabaseConnector:
os.system(cmd)
i += 1
except pd.errors.EmptyDataError:
logging.info("[database] Skipping empty file: %s" % file)
console_warning("[database] Skipping empty file: %s" % file)
logging.info("[database] %s collections successfully added." % i)
console_log(
"database",
"%s collections successfully added." % i
)
mydb = self.client["workload_names"]
mycol = mydb["names"]
value = {"name": self.connection_info["db"]}
newValue = {"name": self.connection_info["db"]}
mycol.replace_one(value, newValue, upsert=True)
logging.info("[database] Workload name uploaded.")
console_log(
"database",
"Workload name uploaded."
)
@demarcate
def db_remove(self):
@@ -116,63 +120,60 @@ class DatabaseConnector:
self.client.drop_database(db_to_remove)
db = self.client["workload_names"]
col = db["names"]
col.delete_many({"name": self.connection_info["workload"]})
col.delete_many({"name": self.connection_info['workload']})
logging.info(
"[database] Successfully removed %s" % self.connection_info["workload"]
console_log(
"database",
"Successfully removed %s" % self.connection_info['workload']
)
@abstractmethod
def pre_processing(self):
"""Perform any pre-processing steps prior to database conncetion."""
logging.debug("[database] pre-processing database connection")
"""Perform any pre-processing steps prior to database conncetion.
"""
console_debug(
"database",
"pre-processing database connection"
)
if not self.args.remove and not self.args.upload:
error("Either -i/--import or -r/--remove is required in database mode")
self.interaction_type = "import" if self.args.upload else "remove"
console_error("Either -i/--import or -r/--remove is required in database mode")
self.interaction_type = 'import' if self.args.upload else 'remove'
# Detect interaction type
if self.interaction_type == "remove":
logging.debug("[database] validating arguments for --remove workflow")
if self.interaction_type == 'remove':
console_debug(
"database",
"validating arguments for --remove workflow"
)
is_full_workload_name = self.args.workload.count("_") >= 3
if not is_full_workload_name:
error(
"-w/--workload is not valid. Please use full workload name as seen in GUI when removing (i.e. omniperf_asw_vcopy_mi200)"
)
if (
self.connection_info["host"] == None
or self.connection_info["username"] == None
):
error(
"-H/--host and -u/--username are required when interaction type is set to %s"
% self.interaction_type
)
if (
self.connection_info["workload"] == "admin"
or self.connection_info["workload"] == "local"
):
error("Cannot remove %s. Try again." % self.connection_info["workload"])
console_error("-w/--workload is not valid. Please use full workload name as seen in GUI when removing (i.e. omniperf_asw_vcopy_mi200)")
if self.connection_info['host'] == None or self.connection_info['username'] == None:
console_error("-H/--host and -u/--username are required when interaction type is set to %s" % self.interaction_type)
if self.connection_info['workload'] == "admin" or self.connection_info['workload'] == "local":
console_error("Cannot remove %s. Try again." % self.connection_info['workload'])
else:
logging.debug("[database] validating arguments for --import workflow")
console_debug(
"database",
"validating arguments for --import workflow"
)
if (
self.connection_info["host"] == None
or self.connection_info["team"] == None
or self.connection_info["username"] == None
or self.connection_info["workload"] == None
):
error(
"-H/--host, -w/--workload, -u/--username, and -t/--team are all required when interaction type is set to %s"
% self.interaction_type
)
console_error("-H/--host, -w/--workload, -u/--username, and -t/--team are all required when interaction type is set to %s" % self.interaction_type)
if os.path.isdir(os.path.abspath(self.connection_info["workload"])):
is_workload_empty(self.connection_info["workload"])
else:
error("--workload is invalid. Please pass path to a valid directory.")
console_error("--workload is invalid. Please pass path to a valid directory.")
if len(self.args.team) > 13:
error("--team exceeds 13 character limit. Try again.")
console_error("--team exceeds 13 character limit. Try again.")
# format path properly
self.connection_info["workload"] = os.path.abspath(
self.connection_info["workload"]
@@ -183,9 +184,15 @@ class DatabaseConnector:
try:
self.connection_info["password"] = getpass.getpass()
except Exception as e:
error("[database] PASSWORD ERROR %s" % e)
console_error(
"database",
"PASSWORD ERROR %s" % e
)
else:
logging.info("[database] Password recieved")
console_log(
"database",
"Password recieved"
)
else:
password = self.connection_info["password"]
@@ -207,4 +214,10 @@ class DatabaseConnector:
try:
self.client.server_info()
except:
error("[database] Unable to connect to the DB server.")
console_error(
"database",
"Unable to connect to the DB server."
)