// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Protobuf definitions for reporting instance status.
syntax = "proto2";

package protos;
option go_package = "policy_manager/protos";

// ReleaseChannel specifies the Chrome OS release channel that the image is on.
enum ReleaseChannel {
  // Unknown release channel.
  RELEASE_CHANNEL_UNSPECIFIED = 0;

  // Stable channel.
  STABLE = 1;

  // Beta channel.
  BETA = 2;

  // Dev channel.
  DEV = 3;

  reserved 4;
}

// OSVersion contains all the fields identifying a particular version of the
// Chrome OS.
message OSVersion {
  // Release version string. For example: "16511.0.0"
  // Chrome OS uses the following version format:
  // <TIP_BUILD>.<BRANCH_BUILD>.<BRANCH_BRANCH_BUILD>
  optional string version_string = 1;

  // Milestone number for Chrome. For example: 89
  optional uint32 milestone = 2;

  // Release channel of the OS.
  optional ReleaseChannel channel = 3;

  // Next number: 4
}

// InstanceStatus contains all the fields related to the current status of the
// instance.
message InstanceStatus {
  // GCE instance ID.
  optional uint64 instance_id = 1;

  // Current version of the image.
  optional OSVersion os_version = 2;

  // The current update status as reported by the update_engine.
  optional string update_status = 3;

  // New version delivered by the update.
  optional OSVersion new_os_version = 4;

  // Unix timestamp of last reboot.
  optional int64 reboot_timestamp = 5;

  // Unix timestamp fo last update check.
  optional int64 update_check_timestamp = 6;

  // If an error occurred while collecting the instance status, this field will
  // be set with the error message and all other fields except the instance_id
  // are undefined.
  optional string error = 7;

  // Next number: 8
}
