blob: 6099fe24fe8557d0a73ca1aa294f1b3c68034e4c [file] [log] [blame]
# 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.
import json
from google.appengine.ext import ndb
from google.appengine.ext.ndb import msgprop
from protorpc import messages
from libs import time_util
class SwarmingTaskQueuePriority():
# Forced a rerun of a failure or flake.
FORCE = 100
FAILURE = 50
FLAKE = 25
# A request made through findit api.
API_CALL = 10
class SwarmingTaskQueueState(messages.Enum):
# Task has been sent to taskqueue, but not to swarming.
SCHEDULED = 250
# Task has been sent to swarming, but it hasn't completed.
PENDING = 500
# Task has been complete, but results haven't been requested.
COMPLETED = 750
# Task is complete, and results have been requested and recieved.
READY = 1000
class SwarmingTaskQueueRequest(ndb.Model):
# State of the request, see SwarmingTaskQueueState for details.
taskqueue_state = msgprop.EnumProperty(SwarmingTaskQueueState, indexed=True)
# Priority of the request, see SwarmingTaskQueuePriority for details.
taskqueue_priority = ndb.IntegerProperty()
# Timestamp to order things in the Taskqueue.
taskqueue_request_time = ndb.DateTimeProperty()
# Used to uniquely identify the machine this request needs.
taskqueue_dimensions = ndb.StringProperty()
# The actual request from waterfall/swarming_task_request's Serialize method.
swarming_task_request = ndb.TextProperty()
@staticmethod
def Create(taskqueue_state=SwarmingTaskQueueState.SCHEDULED,
taskqueue_priority=SwarmingTaskQueuePriority.FORCE,
taskqueue_request_time=time_util.GetUTCNow(),
taskqueue_dimensions=None,
swarming_task_request=None):
swarming_task_queue_request = SwarmingTaskQueueRequest()
swarming_task_queue_request.taskqueue_state = taskqueue_state
swarming_task_queue_request.taskqueue_priority = taskqueue_priority
swarming_task_queue_request.taskqueue_request_time = taskqueue_request_time
swarming_task_queue_request.taskqueue_dimensions = taskqueue_dimensions
swarming_task_queue_request.swarming_task_request = swarming_task_request
return swarming_task_queue_request