diff --git a/orion.py b/orion.py index f40b19a..765b6ad 100644 --- a/orion.py +++ b/orion.py @@ -52,54 +52,67 @@ def orion(config, debug, output): logger.error("An error occurred: %s", e) sys.exit(1) for test in data["tests"]: - metadata = get_metadata(test) + metadata = get_metadata(test, logger) logger.info("The test %s has started", test["name"]) match = Matcher(index="perf_scale_ci", level=level) uuids = match.get_uuid_by_metadata(metadata) if len(uuids) == 0: print("No UUID present for given metadata") sys.exit() - - runs = match.match_kube_burner(uuids) - ids = match.filter_runs(runs, runs) + metrics = test["metrics"] dataframe_list = [] + if metadata["benchmark"] == "k8s-netperf" : + index = "k8s-netperf" + ids = uuids + elif metadata["benchmark"] == "ingress-perf" : + index = "ingress-performance" + ids = uuids + else: + index = "ripsaw-kube-burner" + runs = match.match_kube_burner(uuids) + ids = match.filter_runs(runs, runs) for metric in metrics: logger.info("Collecting %s", metric["metric"]) - if metric["metricType"] == "latency": - if metric["metric"] == "podReadyLatency": - try: - podl = match.burner_results("", ids, "ripsaw-kube-burner*") - podl_df = match.convert_to_df( - podl, columns=["uuid", "timestamp", "P99"] - ) - dataframe_list.append(podl_df) - logger.debug(podl_df) - except Exception as e: # pylint: disable=broad-exception-caught - logger.error( - "The namespace %s does not exist, exception %s", - metric["namespace"], - e, - ) - - elif metric["metricType"] == "cpu": + metric_of_interest = metric['metric_of_interest'] + metric_name = metric['metric'] + metric.pop("metric") + if "agg" in metric.keys(): try: - cpu = match.burner_cpu_results( - ids, metric["namespace"], "ripsaw-kube-burner*" + cpu = match.get_agg_metric_query( + ids, index, metric ) - cpu_df = match.convert_to_df(cpu, columns=["uuid", "cpu_avg"]) + agg_value = metric['agg']['value'] + agg_type = metric['agg']['agg_type'] + agg_name = agg_value + "_" + agg_type + cpu_df = match.convert_to_df(cpu, columns=["uuid", agg_name]) cpu_df = cpu_df.rename( - columns={"cpu_avg": metric["metric"] + "_cpu_avg"} + columns={agg_name: metric_name+ "_" + agg_name} ) dataframe_list.append(cpu_df) logger.debug(cpu_df) + except Exception as e: # pylint: disable=broad-exception-caught logger.error( - "The namespace %s does not exist, exception %s", - metric["namespace"], + "Couldn't get agg metrics %s, exception %s", + metric_name, e, ) + else: + try: + podl = match.getResults("", ids, index, metric) + podl_df = match.convert_to_df( + podl, columns=["uuid", "timestamp", metric_of_interest] + ) + dataframe_list.append(podl_df) + logger.debug(podl_df) + except Exception as e: # pylint: disable=broad-exception-caught + logger.error( + "Couldn't get metrics %s, exception %s", + metric_name, + e, + ) merged_df = reduce( lambda left, right: pd.merge(left, right, on="uuid", how="inner"), @@ -108,7 +121,7 @@ def orion(config, debug, output): match.save_results(merged_df, csv_file_path=output) -def get_metadata(test): +def get_metadata(test,logger): """Gets metadata of the run from each test Args: @@ -117,21 +130,13 @@ def get_metadata(test): Returns: dict: dictionary of the metadata """ - metadata_columns = [ - "platform", - "masterNodesType", - "masterNodesCount", - "workerNodesType", - "workerNodesCount", - "benchmark", - "ocpVersion", - "networkType", - "encrypted", - "fips", - "ipsec", - ] - metadata = {key: test[key] for key in metadata_columns if key in test} + metadata = {} + for k,v in test.items(): + if k in ["metrics","name"]: + continue + metadata[k] = v metadata["ocpVersion"] = str(metadata["ocpVersion"]) + logger.debug('metadata' + str(metadata)) return metadata diff --git a/requirements.txt b/requirements.txt index b98bd22..e3f3ac3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ click==8.1.7 elastic-transport==8.11.0 elasticsearch==8.11.1 elasticsearch7==7.13.0 -fmatch==0.0.2 +fmatch==0.0.3 numpy==1.26.3 pandas==2.1.4 python-dateutil==2.8.2