context_dir="$(mktemp --directory --tmpdir dev-jobs.XXXXXXXX)"
trap 'rm -rf "$context_dir"' EXIT INT TERM QUIT
-for src_dir in "$WORKSPACE/sdk/python" "${CWLTOOL:-}" "${CWL_UTILS:-}" "${SALAD:-}" "$WORKSPACE/sdk/cwl"; do
+for src_dir in "$WORKSPACE/sdk/python" "${CWLTOOL:-}" "${CWL_UTILS:-}" "${SALAD:-}" "$WORKSPACE/tools/crunchstat-summary" "$WORKSPACE/sdk/cwl"; do
if [[ -z "$src_dir" ]]; then
continue
fi
import arvados.collection
+import crunchstat_summary.summarizer
+
from .arvdocker import arv_docker_get_image
from . import done
from .runner import Runner, arvados_jobs_image, packed_workflow, trim_anonymous_location, remove_redundant_fields, make_builder
else:
processStatus = "permanentFail"
- if processStatus == "permanentFail" and record["log_uuid"]:
- logc = arvados.collection.CollectionReader(record["log_uuid"],
- api_client=self.arvrunner.api,
- keep_client=self.arvrunner.keep_client,
- num_retries=self.arvrunner.num_retries)
+ logc = None
+ if record["log_uuid"]:
+ logc = arvados.collection.Collection(record["log_uuid"],
+ api_client=self.arvrunner.api,
+ keep_client=self.arvrunner.keep_client,
+ num_retries=self.arvrunner.num_retries)
+
+ if processStatus == "permanentFail" and logc is not None:
label = self.arvrunner.label(self)
done.logtail(
logc, logger.error,
uuid=self.uuid,
body={"container_request": {"properties": properties}}
).execute(num_retries=self.arvrunner.num_retries)
+
+ if logc is not None:
+ summerizer = crunchstat_summary.summarizer.NewSummarizer(self.uuid)
+ summerizer.run()
+ with logc.open("metrics_report.txt", "wt") as mr:
+ mr.write(summerizer.text_report())
+ with logc.open("metrics_report.html", "wt") as mr:
+ mr.write(summerizer.html_report())
+ logc.save()
+
except WorkflowException as e:
# Only include a stack trace if in debug mode.
# A stack trace may obfuscate more useful output about the workflow.
'cwltool==3.1.20230601100705',
'schema-salad==8.4.20230601112322',
'arvados-python-client{}'.format(pysdk_dep),
+ 'crunchstat-summary{}'.format(pysdk_dep),
'ciso8601 >= 2.0.0',
'networkx < 2.6',
'msgpack==1.0.3',
# packages to install.
COPY . /usr/local/src/
# Run a-c-r afterward to check for a successful install.
-RUN python3 -m pip install --no-cache-dir /usr/local/src/* && arvados-cwl-runner --version
+RUN python3 -m pip install --no-cache-dir /usr/local/src/* && arvados-cwl-runner --version && crunchstat-summary --version
RUN /usr/sbin/adduser --disabled-password \
--gecos 'Crunch execution user' crunch && \
import sys
from crunchstat_summary import logger, summarizer
+from crunchstat_summary._version import __version__
class ArgumentParser(argparse.ArgumentParser):
self.add_argument(
'--verbose', '-v', action='count', default=0,
help='Log more information (once for progress, twice for debug)')
+ self.add_argument('--version', action='version',
+ version="%s %s" % (sys.argv[0], __version__),
+ help='Print version and exit.')
class UTF8Decode(object):