syntax = "proto3";

package cycler;

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

import "cycler/effect.proto";


// Closure of all config for a single cycler run.
message RunConfig {

  // The runlog configuration.
  RunLogConfiguration run_log_configuration = 1;

  // The stats configuration for the prefix and the action statistics.
  StatsConfiguration stats_configuration = 2;

  // Policy effect configuration.
  PolicyEffectConfiguration policy_effect_configuration = 3;

  // Must match the command line argument and policy effect as well.
  bool mutation_allowed = 4;

  // The bucket to operate on (can be overridden on the command line).
  string bucket = 5;
}

// Options for the log generation during a cycler run.
message RunLogConfiguration {
  // The destination url 'directory' for the logs, can be file:// or gs://.
  string destination_url = 1;

  // The rough chunk size in bytes to deliver the logs in (before compression).
  int64 chunk_size_bytes = 2;

  // How many outstanding log messages can we have before blocking producers.
  int64 channel_size = 3;

  // How many retries we should make to persist logs.
  int64 persist_retries = 4;

  // How many logs we'll allow to fail persistence and still continue.
  // Since we do log shipping in goroutines this is also the cap on the number
  // of those.
  int64 max_unpersisted_logs = 5;
}

// Options provided to any run providing stats.
message StatsConfiguration {

  // When generating a report for a prefix, how deep should the breakdown be.
  int64 prefix_report_max_depth = 1;

  // Histogram options for the objects ages.
  HistogramOptions age_days_histogram_options = 2;

  // Histogram options for the objects sizes.
  HistogramOptions size_bytes_histogram_options = 3;
}

// Options for the Histogram generation during a cycler run.
// See definition in: "google.golang.org/grpc/benchmark/stats"
message HistogramOptions {

  // The number of unique buckets in the histrogram.
  int32 num_buckets = 1;

  // The growth factor of each bucket to the next.
  double growth_factor = 2;

  // The base bucket's size.
  double base_bucket_size = 3;

  // The minimum valued bucket's value.
  int64 min_value = 4;
}

// A policy effect configuration defines the policy and the resulting effect.
message PolicyEffectConfiguration {

  // The effect configuration must be one of the following configs.
oneof effect_configuration {
  // Do nothing, will still gather stats.
  NoopEffectConfiguration noop = 1;
  // Move the object to another location (same bucket or another).
  MoveEffectConfiguration move = 2;
  // Change the storage class of the objects.
  ChillEffectConfiguration chill = 3;
  // Duplicate the object to another location (same bucket or another).
  DuplicateEffectConfiguration duplicate = 4;
}

// Common configuration values.

// The policy document to be parsed by rego and executed to determine if an
// effect is going to be taken upon the object.
string policy_document_path = 5;
}
