From c2a897841ae5e76b6320dce92a4ddba3ea5dbb60 Mon Sep 17 00:00:00 2001 From: jkerpe Date: Fri, 28 Jun 2024 09:41:36 +0200 Subject: [PATCH] check for missing installations --- src/pyMetricCli/__main__.py | 37 ++++++++++++++++++++++++------------- src/pyMetricCli/jira.py | 5 +++-- src/pyMetricCli/polarion.py | 4 ++-- src/pyMetricCli/ret.py | 3 +++ src/pyMetricCli/superset.py | 3 ++- 5 files changed, 34 insertions(+), 18 deletions(-) diff --git a/src/pyMetricCli/__main__.py b/src/pyMetricCli/__main__.py index 8be2dbb..9de2ee6 100644 --- a/src/pyMetricCli/__main__.py +++ b/src/pyMetricCli/__main__.py @@ -192,10 +192,13 @@ def _process_jira(adapter: AdapterInterface) -> Ret: adapter.jira_config["filter"]) jira_instance = Jira(adapter.jira_config) - jira_results = jira_instance.search() - - if adapter.handle_jira(jira_results) is False: - ret_status = Ret.ERROR_ADAPTER_HANDLER_JIRA + if jira_instance.is_installed is False: + LOG.error("pyJiraCli is not installed!") + ret_status = Ret.ERROR_NOT_INSTALLED_JIRA + else: + jira_results = jira_instance.search() + if adapter.handle_jira(jira_results) is False: + ret_status = Ret.ERROR_ADAPTER_HANDLER_JIRA return ret_status @@ -217,9 +220,13 @@ def _process_polarion(adapter: AdapterInterface) -> Ret: adapter.polarion_config["query"]) polarion_instance = Polarion(adapter.polarion_config) - polarion_results = polarion_instance.search() - if adapter.handle_polarion(polarion_results) is False: - ret_status = Ret.ERROR_ADAPTER_HANDLER_POLARION + if polarion_instance.is_installed is False: + LOG.error("pyPolarionCli is not installed!") + ret_status = Ret.ERROR_NOT_INSTALLED_POLARION + else: + polarion_results = polarion_instance.search() + if adapter.handle_polarion(polarion_results) is False: + ret_status = Ret.ERROR_ADAPTER_HANDLER_POLARION return ret_status @@ -258,13 +265,17 @@ def _process_superset(adapter: AdapterInterface) -> Ret: # Send the temporary file to the metric server using Superset. superset_instance = Superset(adapter.superset_config) - ret = superset_instance.upload(_TEMP_FILE_PATH) - - if 0 != ret: - ret_status = Ret.ERROR_SUPERSET_UPLOAD - LOG.error("Error while uploading to Superset!") + if superset_instance.is_installed is False: + LOG.error("pySupersetCli is not installed!") + ret_status = Ret.ERROR_NOT_INSTALLED_SUPERSET else: - LOG.info("Successfully uploaded to Superset!") + ret = superset_instance.upload(_TEMP_FILE_PATH) + + if 0 != ret: + ret_status = Ret.ERROR_SUPERSET_UPLOAD + LOG.error("Error while uploading to Superset!") + else: + LOG.info("Successfully uploaded to Superset!") return ret_status diff --git a/src/pyMetricCli/jira.py b/src/pyMetricCli/jira.py index 5aa3493..29ac60f 100644 --- a/src/pyMetricCli/jira.py +++ b/src/pyMetricCli/jira.py @@ -52,11 +52,12 @@ class Jira: # pylint: disable=too-few-public-methods """ - Wrapper for the pyPolarionCli Tool. + Wrapper for the pyJiraCli Tool. """ def __init__(self, jira_config: dict) -> None: self.config = jira_config + self.is_installed = self.__check_if_is_installed() def __run_pyjiracli(self, arguments) -> subprocess.CompletedProcess: """ @@ -69,6 +70,7 @@ def __run_pyjiracli(self, arguments) -> subprocess.CompletedProcess: subprocess.CompletedProcess[bytes]: The result of the command. Includes return code, stdout and stderr. """ + # pylint: disable=duplicate-code args = ["pyJiraCli"] # The executable to run. args.extend(arguments) # Add the arguments to the command. return subprocess.run(args, @@ -100,7 +102,6 @@ def search(self) -> dict: dict: Search results. """ output = {} - self.__check_if_is_installed() command_list: list = ["--server", self.config["server"], "--token", self.config["token"], "search", diff --git a/src/pyMetricCli/polarion.py b/src/pyMetricCli/polarion.py index 4d01fcf..f2447fa 100644 --- a/src/pyMetricCli/polarion.py +++ b/src/pyMetricCli/polarion.py @@ -58,7 +58,7 @@ class Polarion: # pylint: disable=too-few-public-methods def __init__(self, polarion_config: dict) -> None: self.config = polarion_config - print(self.config) + self.is_installed = self.__check_if_is_installed() def __run_pypolarioncli(self, arguments) -> subprocess.CompletedProcess: """ @@ -86,6 +86,7 @@ def __check_if_is_installed(self) -> bool: Returns: bool: True if pyPolarionCli is installed, False otherwise. """ + # pylint: disable=duplicate-code is_installed = True try: ret = self.__run_pypolarioncli(["--help"]) @@ -103,7 +104,6 @@ def search(self) -> dict: dict: Search results. """ output = {} - self.__check_if_is_installed() output_file_name = os.path.join(self.config['output'], f"{self.config['project']}_search_results.json") diff --git a/src/pyMetricCli/ret.py b/src/pyMetricCli/ret.py index ea4b529..4420158 100644 --- a/src/pyMetricCli/ret.py +++ b/src/pyMetricCli/ret.py @@ -54,6 +54,9 @@ class Ret(IntEnum): ERROR_ADAPTER_HANDLER_JIRA = 4 ERROR_ADAPTER_HANDLER_POLARION = 5 ERROR_SUPERSET_UPLOAD = 6 + ERROR_NOT_INSTALLED_JIRA = 7 + ERROR_NOT_INSTALLED_POLARION = 8 + ERROR_NOT_INSTALLED_SUPERSET = 9 ################################################################################ # Functions diff --git a/src/pyMetricCli/superset.py b/src/pyMetricCli/superset.py index 7cee013..690b86a 100644 --- a/src/pyMetricCli/superset.py +++ b/src/pyMetricCli/superset.py @@ -56,6 +56,7 @@ class Superset: # pylint: disable=too-few-public-methods def __init__(self, superset_config: dict) -> None: self.config = superset_config + self.is_installed = self.__check_if_is_installed() def __run_pysupersetcli(self, arguments) -> subprocess.CompletedProcess: """ @@ -68,6 +69,7 @@ def __run_pysupersetcli(self, arguments) -> subprocess.CompletedProcess: subprocess.CompletedProcess[bytes]: The result of the command. Includes return code, stdout and stderr. """ + # pylint: disable=duplicate-code args = ["pySupersetCli"] # The executable to run. args.extend(arguments) # Add the arguments to the command. return subprocess.run(args, @@ -101,7 +103,6 @@ def upload(self, input_file) -> int: Returns: int: Return Code of the command. """ - self.__check_if_is_installed() command_list: list = ["--verbose", "--server", self.config["server"], "--user", self.config["user"],