autotest: Delete job reporter
This is only used for autotest scheduled jobs to support lucifer
Bug: 1033823
Change-Id: I7866aad869b21e49676977ede5f6b8e6272a57ab
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/1966834
Reviewed-by: Prathmesh Prabhu <pprabhu@chromium.org>
Tested-by: Allen Li <ayatane@chromium.org>
Commit-Queue: Allen Li <ayatane@chromium.org>
diff --git a/bin/job_reporter b/bin/job_reporter
deleted file mode 100755
index 96b6f42..0000000
--- a/bin/job_reporter
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-#
-# Run a test job, reporting changes to AFE and TKO.
-set -eu
-readonly bin_dir="$(readlink -e -- "$(dirname -- "$0")")"
-exec "${bin_dir}/python_venv" -m lucifer.cmd.job_reporter "$@"
diff --git a/venv/lucifer/cmd/__init__.py b/venv/lucifer/cmd/__init__.py
deleted file mode 100644
index b746f6c..0000000
--- a/venv/lucifer/cmd/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# Copyright 2017 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
diff --git a/venv/lucifer/cmd/job_reporter.py b/venv/lucifer/cmd/job_reporter.py
deleted file mode 100644
index 8001ca7..0000000
--- a/venv/lucifer/cmd/job_reporter.py
+++ /dev/null
@@ -1,209 +0,0 @@
-# Copyright 2017 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Run a job against Autotest.
-
-See http://goto.google.com/monitor_db_per_job_refactor
-
-See also https://chromium.googlesource.com/chromiumos/infra/lucifer
-
-job_reporter is a thin wrapper around lucifer and only updates the
-Autotest database according to status events.
-"""
-
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-
-import atexit
-import argparse
-import logging
-import os
-import sys
-
-from lucifer import autotest
-from lucifer import eventlib
-from lucifer import handlers
-from lucifer import jobx
-from lucifer import leasing
-from lucifer import loglib
-
-logger = logging.getLogger(__name__)
-
-
-def main(argv):
- """Main function
-
- @param argv: command line args
- """
- print('job_reporter: Running with argv: %r' % argv, file=sys.stderr)
- args = _parse_args_and_configure_logging(argv[1:])
- logger.info('Running with parsed args: %r', args)
- with leasing.obtain_lease(_lease_path(args.jobdir, args.job_id)):
- autotest.monkeypatch()
- ret = _main(args)
- logger.info('Exiting normally with: %r', ret)
- return ret
-
-
-def _parse_args_and_configure_logging(args):
- parser = argparse.ArgumentParser(prog='job_reporter', description=__doc__)
- loglib.add_logging_options(parser)
-
- # General configuration
- parser.add_argument('--jobdir', default='/usr/local/autotest/leases',
- help='Path to job leases directory.')
- parser.add_argument('--lucifer-path', default='/usr/bin/lucifer',
- help='Path to lucifer binary')
-
- # Job specific
-
- # General
- parser.add_argument('--lucifer-level', required=True,
- help='Lucifer level', choices=['STARTING'])
- parser.add_argument('--job-id', type=int, required=True,
- help='Autotest Job ID')
- parser.add_argument('--results-dir', required=True,
- help='Path to job results directory.')
-
- # STARTING flags
- parser.add_argument('--execution-tag', default=None,
- help='Autotest execution tag.')
- parser.add_argument('--parsing-only', action='store_true',
- help='Whether to only do parsing'
- ' (only with --lucifer-level STARTING)')
-
- args = parser.parse_args(args)
- loglib.configure_logging_with_args(parser, args)
- return args
-
-
-def _main(args):
- """Main program body, running under a lease file.
-
- @param args: Namespace object containing parsed arguments
- """
- ts_mon_config = autotest.chromite_load('ts_mon_config')
- metrics = autotest.chromite_load('metrics')
- with ts_mon_config.SetupTsMonGlobalState(
- 'job_reporter', short_lived=True):
- atexit.register(metrics.Flush)
- return _run_autotest_job(args)
-
-
-def _run_autotest_job(args):
- """Run a job as seen from Autotest.
-
- This include some Autotest setup and cleanup around lucifer starting
- proper.
- """
- models = autotest.load('frontend.afe.models')
- job = models.Job.objects.get(id=args.job_id)
- _prepare_autotest_job_files(args, job)
- handler = _make_handler(args, job)
- ret = _run_lucifer_job(handler, args, job)
- if handler.completed:
- _mark_handoff_completed(args.job_id)
- return ret
-
-
-def _prepare_autotest_job_files(args, job):
- jobx.prepare_control_file(job, args.results_dir)
- jobx.prepare_keyvals_files(job, args.results_dir)
-
-
-def _make_handler(args, job):
- """Make event handler for lucifer."""
- return handlers.EventHandler(
- metrics=handlers.Metrics(),
- job=job,
- autoserv_exit=None,
- results_dir=args.results_dir,
- )
-
-
-def _run_lucifer_job(event_handler, args, job):
- """Run lucifer test.
-
- Issued events will be handled by event_handler.
-
- @param event_handler: callable that takes an Event
- @param args: parsed arguments
- @returns: exit status of lucifer
- """
- command_args = [args.lucifer_path]
- command_args.extend([
- 'test',
- '-autotestdir', '/usr/local/autotest',
-
- '-abortsock', _abort_sock_path(args.jobdir, args.job_id),
- '-hosts', ','.join(jobx.hostnames(job)),
-
- '-x-level', args.lucifer_level,
- '-resultsdir', args.results_dir,
- ])
- _add_level_specific_args(command_args, args, job)
- return eventlib.run_event_command(
- event_handler=event_handler, args=command_args)
-
-
-def _add_level_specific_args(command_args, args, job):
- """Add level specific arguments for lucifer test.
-
- command_args is modified in place.
- """
- if args.lucifer_level == 'STARTING':
- _add_starting_args(command_args, args, job)
- else:
- raise Exception('Invalid lucifer level %s' % args.lucifer_level)
-
-
-def _add_starting_args(command_args, args, job):
- """Add STARTING level arguments for lucifer test.
-
- command_args is modified in place.
- """
- RebootAfter = autotest.load('frontend.afe.model_attributes').RebootAfter
- command_args.extend([
- '-x-control-file', jobx.control_file_path(args.results_dir),
- ])
- if args.execution_tag is not None:
- command_args.extend(['-x-execution-tag', args.execution_tag])
- command_args.extend(['-x-job-owner', job.owner])
- command_args.extend(['-x-job-name', job.name])
- command_args.extend(
- ['-x-reboot-after',
- RebootAfter.get_string(job.reboot_after).lower()])
- if args.parsing_only:
- command_args.append('-x-parse-only')
- if job.run_reset:
- command_args.append('-x-run-reset')
- if jobx.is_client_job(job):
- command_args.append('-x-client-test')
- if jobx.needs_ssp(job):
- command_args.append('-x-require-ssp')
- test_source_build = job.keyval_dict().get('test_source_build', None)
- if test_source_build:
- command_args.extend(['-x-test-source-build', test_source_build])
- if job.parent_job_id:
- command_args.extend(['-x-parent-job-id', str(job.parent_job_id)])
-
-
-def _mark_handoff_completed(job_id):
- models = autotest.load('frontend.afe.models')
- handoff = models.JobHandoff.objects.get(job_id=job_id)
- handoff.completed = True
- handoff.save()
-
-
-def _abort_sock_path(jobdir, job_id):
- return _lease_path(jobdir, job_id) + '.sock'
-
-
-def _lease_path(jobdir, job_id):
- return os.path.join(jobdir, str(job_id))
-
-
-if __name__ == '__main__':
- sys.exit(main(sys.argv))