syntax = "proto3";
package cloud.agent.api;
option go_package = "source.monogon.dev/cloud/agent/api";

// TakeoverInit is the message sent to the takeover process over an SSH session
// during initialization.
message TakeoverInit {
  // Machine ID of this machine to be taken over as assigned by the BMaaS
  // service.
  string machine_id = 1;
  // bmaas_endpoint is an address of the BMaaS service the agent should call
  // back to.
  string bmaas_endpoint = 2;
}

message TakeoverSuccess {
  // init_message is the exact init message the agent received.
  TakeoverInit init_message = 1;
  // key is the agent's public key.
  bytes key = 2;
  // warnings contains a list of non-critical errors which occurred during the
  // takeover preparation.
  repeated string warning = 3;
}

message TakeoverError {
  // Error message
  string message = 1;
}

// TakeoverResponse is the message the takeover process sends back after
// receiving an TakeoverInit message.
message TakeoverResponse {
  oneof result {
    TakeoverSuccess success = 1;
    TakeoverError error = 2;
  }
}
