// Copyright IBM Corp. 2020, 2026
// SPDX-License-Identifier: BUSL-1.1

syntax = "proto3";

package controller.servers.v1;

import "plugin/v1/storage_plugin_service.proto";

option go_package = "github.com/hashicorp/boundary/internal/gen/controller/servers;servers";

// TagPair matches a key to a value.
message TagPair {
  string key = 1; // @gotags: `class:"public"`
  string value = 2; // @gotags: `class:"public"`
}

// ServerWorkerStatus is the new message used in place of Server to relay status request info.
message ServerWorkerStatus {
  // Id of the worker, used after the first request.
  string public_id = 10; // @gotags: `class:"public" eventstream:"observation"`

  // Name of the worker, used to identify workers in the KMS registration flow.
  string name = 20; // @gotags: `class:"public"`

  // Description of the worker (optional). Only used by KMS workers.
  string description = 25; // @gotags: `class:"public"`

  // Address for the worker.
  string address = 30; // @gotags: `class:"public"`

  // Tags for workers
  repeated TagPair tags = 40;

  // The key id of the worker, used to identify workers in the PKI registration flow.
  string key_id = 50; // @gotags: `class:"public"`

  // The version of Boundary the worker binary is running
  string release_version = 60 [json_name = "release_version"]; // @gotags: `class:"public" eventstream:"observation"`

  // The state of the worker, to indicate if the worker is active or in shutdown.
  string operational_state = 70 [json_name = "operational_state"]; // @gotags: `class:"public" eventstream:"observation"`

  // The local_storage_state indicates the state of the local disk space of the worker.
  // Possible values are:
  // - available: The worker local storage state is at an acceptable state
  // - low storage: The worker is below the minimum threshold for local storage
  // - critically low storage: The worker local storage state is below the critical minimum threshold for local storage
  // - out of storage: The worker is out of local disk space
  // - not configured: The worker does not have a local storage path configured
  // - unknown: The default local storage state of a worker. Used when the local storage state of a worker is not yet known
  string local_storage_state = 80 [json_name = "local_storage_state"]; // @gotags: `class:"public" eventstream:"observation"

  // StorageBucketCredentialStates is a map where the key is a storage bucket id
  // and the value contains the current state of the storage bucket.
  map<string, plugin.v1.StorageBucketCredentialState> storage_bucket_credential_states = 90; // @gotags: `class:"public" eventstream:"observation"`
}
