// Copyright 2020 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.

syntax = "proto3";

package chromiumos;

option go_package = "go.chromium.org/chromiumos/infra/proto/go/chromiumos";

// Defines a type of bot associated with a bot group.
message BotType {
  // The string bot "shirt size" to be requested for the group.
  string bot_size = 1;
  // The number of cores per bot. Will be used to limit quota usage.
  float cores_per_bot = 2;
  // Estimated hourly cost.
  float hourly_cost = 3;
  // Amount of memory in GB allocated to bot.
  float memory_gb = 4;
}

// Defines Swarming dimensions associated with a bot group.
message SwarmingDimension {
  // Dimesion name
  string name = 1;
  // Dimension value
  string value = 2;
  // Dimension multiple values
  repeated string values = 3;
}

// Bot Policy to apply to a bot group.
message BotPolicy {
  // Bot group controlled by this policy, like, 'cq', 'postsubmit',...
  string bot_group = 1;
  // The type of bot to be requested.
  BotType bot_type = 2;
  // Scaling restriction specifies the limits on how the group can be
  // expanded or reduced.
  message ScalingRestriction {
    // Hard limit on the maximum number of bots to request.
    int32 bot_ceiling = 1;
    // Hard limit on the minimum number of bots to request.
    int32 bot_floor = 2;
    // Soft limit on the number of idle bots to maintain.
    int32 min_idle = 3;
    // Hard minimum limit on the absolute delta between request amount and
    // existing bot count.
    int32 step_size = 4;
    // Static number to request when demand is not accessible.
    int32 bot_fallback = 5;
  }
  ScalingRestriction scaling_restriction = 3;

  // A set of restrictions on the regions and how to distribute bots
  // between them.
  message RegionRestriction {
    // Region of the bot sub-group.
    string region = 1;
    // Specific prefix of the bot sub-group.
    string prefix = 2;
    // Weight to be applied to this sub-group. The number of bots requested
    // from each region will be proportional to the weight unless a
    // quota limit is violated.
    float weight = 3;
  }
  repeated RegionRestriction region_restrictions = 4;
  // A set of dimensions used to validate current Swarming allocations.
  repeated SwarmingDimension swarming_dimensions = 5;

  // Specifies mode for a bot policy
  enum Mode {
    UNKNOWN_MODE = 0;
    // Collect stats only for a bot group.
    MONITORED = 1;
    // Generate configuration updates for bot group.
    CONFIGURED = 2;
  }
  // Set whether a bot group should be configured or only monitored.
  Mode policy_mode = 6;
  // Number of hours to lookback for Swarming stats.
  sint32 lookback_hours = 7;
  // Specifies mode for a bot scaling
  enum BotScalingMode {
    UNKNOWN_SCALING_MODE = 0;
    // Scale up or down bots by the step size associated with bot group..
    STEPPED = 1;
    // Scale up or down bots by the demand on the bot group.
    // For use on smaller bot groups that are susceptible to smaller increases.
    DEMAND = 2;
    // Scale down bots by the step size associated with bot group.
    // Scale up bots by the demand on the bot group.
    STEPPED_DECREASE = 3;
  }
  // Set the scaling approach for the bot group being monitored.
  BotScalingMode scaling_mode = 8;
  // Swarming instance name:  chromeos-swarming.appspot.com
  string swarming_instance = 9;
  // Application namespace within Swarming instance.
  string application = 10;
}

// Configures the root message.
message BotPolicyCfg {
  // All bot policies.
  repeated BotPolicy bot_policies = 1;
}

// Reduced version of BotPolicy meant for output properties
message ReducedBotPolicy {
  // Bot group controlled by this policy, like, 'cq', 'postsubmit',...
  string bot_group = 1;
  // The type of bot to be requested.
  BotType bot_type = 2;
  // Set whether a bot group should be configured or only monitored.
  BotPolicy.Mode policy_mode = 3;
}

// Configures the root message.
message ReducedBotPolicyCfg {
  // All bot policies in reduced form.
  repeated ReducedBotPolicy bot_policies = 1;
}

// Scaling Action that resulted because of bot demand.
message ScalingAction {
  // Bot group modified by the action. Should be the same as BotPolicy.
  string bot_group = 1;
  // The type of bot requested. Should be the same as BotPolicy.
  BotType bot_type = 2;
  // Specifies if there has been a change since the last iteration.
  enum Actionable {
    UNSPECIFIED = 0;
    // There is a change since last time.
    YES = 1;
    // There is no change since last time.
    NO = 2;
  }
  // Whether there has been a change in the number of bots requested
  // for this bot group. See step_size for more info.
  Actionable actionable = 3;
  // Total number of bots requested for the group.
  int32 bots_requested = 4;
  // How the bot requests are distributed between regions & prefixes.
  message RegionalAction {
    // Region of the bot sub-group.
    string region = 1;
    // Specific prefix of the bot sub-group.
    string prefix = 2;
    // Number of bots requested from the sub-group.
    int32 bots_requested = 3;
  }
  repeated RegionalAction regional_actions = 5;
  // Estimated savings based on current run.
  // Based on current number of bots compared against the max.
  float estimated_savings = 6;
  // Minimum number of bots to keep alive for bot group.
  // Repeated for display/reporting purposes
  int32 bot_min = 7;
  // Hard limit on the maximum number of bots that can be requested.
  // Repeated for display/reporting purposes
  int32 bot_max = 8;
  // Application namespace within Swarming instance.
  string application = 9;
}

// Resource utilization based on regional assignment.
message ResourceUtilization {
  // Region of the bot sub-group.
  string region = 1;
  // Number of VMs allocated across all bot groups.
  int32 vms = 2;
  // Number of CPUs allocated across all bot groups.
  float cpus = 3;
  // Amount of memory in GB allocated across all bot groups.
  float memory_gb = 4;
  // Amount of disk in GB allocated across all bot groups.
  float disk_gb = 5;
  // NUmber of CPUs that could be allocated based on max values.
  float max_cpus = 6;
}

// Application utilization, per application at a
// regional assignment.
message ApplicationUtilization {
  // Application namespace to associate resources.
  string application = 1;
  repeated ResourceUtilization resource_utilization = 2;
}

// All the actions that will be executed by RoboCrop.
message RoboCropAction {
  // List of an action per bot group scaled by RoboCrop.
  repeated ScalingAction scaling_actions = 1;
  repeated ResourceUtilization resource_utilization = 2;
  repeated ApplicationUtilization appl_resource_utilization = 3;
}