blob: 2613c3c37eb34ceceeb2948edd3c2cf013984db4 [file] [log] [blame]
# Copyright 2018 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 google.appengine.ext import ndb
from common import constants
from gae_libs import appengine_util
from libs import analysis_status
from pipelines.flake_failure.analyze_recent_flakiness_pipeline import (
AnalyzeRecentFlakinessInput)
from pipelines.flake_failure.analyze_recent_flakiness_pipeline import (
AnalyzeRecentFlakinessPipeline)
def AnalyzeRecentCommitPosition(analysis_urlsafe_key):
"""Schedules an analysis of a recent commit for a MasterFlakeAnalysis.
Args:
analysis_urlsafe_key (str): The url-safe key to the analysis for which to
analyze a recent commit position for.
"""
analysis = ndb.Key(urlsafe=analysis_urlsafe_key).get()
assert analysis, 'Analysis missing unexpectedly!'
analyze_recent_flakiness_input = AnalyzeRecentFlakinessInput(
analysis_urlsafe_key=analysis_urlsafe_key)
if (analysis.status in [analysis_status.RUNNING, analysis_status.PENDING] or
analysis.analyze_recent_flakiness_status == analysis_status.RUNNING):
# Bail out if the analysis is still in progress.
return
pipeline_job = AnalyzeRecentFlakinessPipeline(analyze_recent_flakiness_input)
pipeline_job.target = appengine_util.GetTargetNameForModule(
constants.WATERFALL_BACKEND)
pipeline_job.start(queue_name=constants.DEFAULT_QUEUE)
analysis.Update(
analyze_recent_flakiness_status=analysis_status.RUNNING,
analyze_recent_flakiness_pipeline_status_path=(
pipeline_job.pipeline_status_path))
analysis.LogInfo(
'An analysis of recent flakiness was scheduled with path {}'.format(
pipeline_job.pipeline_status_path))