21121: Don't require prometheus to run cost report
authorPeter Amstutz <peter.amstutz@curii.com>
Tue, 26 Mar 2024 20:47:10 +0000 (16:47 -0400)
committerPeter Amstutz <peter.amstutz@curii.com>
Tue, 26 Mar 2024 20:47:10 +0000 (16:47 -0400)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>

tools/cluster-activity/arvados_cluster_activity/main.py
tools/cluster-activity/setup.py

index 1e4c94f6b8be6e43c62eb0451f217142b445e32a..5447f74904fcb787b15c65cf0d4a06b2cfa5ff7b 100755 (executable)
@@ -12,12 +12,10 @@ import datetime
 import ciso8601
 import csv
 import os
-from prometheus_api_client.utils import parse_datetime
+
 from datetime import timedelta
-import pandas
 import base64
 
-from prometheus_api_client import PrometheusConnect, MetricsList, Metric
 
 def parse_arguments(arguments):
     arg_parser = argparse.ArgumentParser()
@@ -111,6 +109,10 @@ def data_usage(prom, timestamp, cluster, label):
 
 
 def container_usage(prom, start_time, end_time, metric, label, fn=None):
+    from prometheus_api_client.utils import parse_datetime
+    from prometheus_api_client import PrometheusConnect, MetricsList, Metric
+    import pandas
+
     start = start_time
     chunk_size = timedelta(days=1)
     cumulative = 0
@@ -151,6 +153,8 @@ def container_usage(prom, start_time, end_time, metric, label, fn=None):
     print(label % cumulative)
 
 def report_from_prometheus(cluster, since, to):
+    from prometheus_api_client import PrometheusConnect
+
     prom_host = os.environ.get("PROMETHEUS_HOST")
     prom_token = os.environ.get("PROMETHEUS_APIKEY")
     prom_user = os.environ.get("PROMETHEUS_USER")
index 4f77f4d37b11ac91f34a1b0be61a4dc97887d6dc..efd5641b5c7b0cb581d3546067f21b02097b19ab 100755 (executable)
@@ -32,7 +32,7 @@ setup(name='arvados-user-activity',
       ],
       install_requires=[
           'arvados-python-client >= 2.2.0.dev20201118185221',
-          'prometheus-api-client',
       ],
+      extras_require={"prometheus": ["prometheus-api-client"]}
       zip_safe=True,
 )