go.etcd.io/etcd@v3.3.27+incompatible/etcdserver/api/v3election/v3electionpb/v3election.proto (about)

     1  syntax = "proto3";
     2  package v3electionpb;
     3  
     4  import "gogoproto/gogo.proto";
     5  import "etcd/etcdserver/etcdserverpb/rpc.proto";
     6  import "etcd/mvcc/mvccpb/kv.proto";
     7  
     8  // for grpc-gateway
     9  import "google/api/annotations.proto";
    10  
    11  option (gogoproto.marshaler_all) = true;
    12  option (gogoproto.unmarshaler_all) = true;
    13  
    14  // The election service exposes client-side election facilities as a gRPC interface.
    15  service Election {
    16    // Campaign waits to acquire leadership in an election, returning a LeaderKey
    17    // representing the leadership if successful. The LeaderKey can then be used
    18    // to issue new values on the election, transactionally guard API requests on
    19    // leadership still being held, and resign from the election.
    20    rpc Campaign(CampaignRequest) returns (CampaignResponse) {
    21        option (google.api.http) = {
    22          post: "/v3beta/election/campaign"
    23          body: "*"
    24      };
    25    }
    26    // Proclaim updates the leader's posted value with a new value.
    27    rpc Proclaim(ProclaimRequest) returns (ProclaimResponse) {
    28        option (google.api.http) = {
    29          post: "/v3beta/election/proclaim"
    30          body: "*"
    31      };
    32    }
    33    // Leader returns the current election proclamation, if any.
    34    rpc Leader(LeaderRequest) returns (LeaderResponse) {
    35        option (google.api.http) = {
    36          post: "/v3beta/election/leader"
    37          body: "*"
    38      };
    39    }
    40    // Observe streams election proclamations in-order as made by the election's
    41    // elected leaders.
    42    rpc Observe(LeaderRequest) returns (stream LeaderResponse) {
    43        option (google.api.http) = {
    44          post: "/v3beta/election/observe"
    45          body: "*"
    46      };
    47    }
    48    // Resign releases election leadership so other campaigners may acquire
    49    // leadership on the election.
    50    rpc Resign(ResignRequest) returns (ResignResponse) {
    51        option (google.api.http) = {
    52          post: "/v3beta/election/resign"
    53          body: "*"
    54      };
    55    }
    56  }
    57  
    58  message CampaignRequest {
    59    // name is the election's identifier for the campaign.
    60    bytes name = 1;
    61    // lease is the ID of the lease attached to leadership of the election. If the
    62    // lease expires or is revoked before resigning leadership, then the
    63    // leadership is transferred to the next campaigner, if any.
    64    int64 lease = 2;
    65    // value is the initial proclaimed value set when the campaigner wins the
    66    // election.
    67    bytes value = 3;
    68  }
    69  
    70  message CampaignResponse {
    71    etcdserverpb.ResponseHeader header = 1;
    72    // leader describes the resources used for holding leadereship of the election.
    73    LeaderKey leader = 2;
    74  }
    75  
    76  message LeaderKey {
    77    // name is the election identifier that correponds to the leadership key.
    78    bytes name = 1;
    79    // key is an opaque key representing the ownership of the election. If the key
    80    // is deleted, then leadership is lost.
    81    bytes key = 2;
    82    // rev is the creation revision of the key. It can be used to test for ownership
    83    // of an election during transactions by testing the key's creation revision
    84    // matches rev.
    85    int64 rev = 3;
    86    // lease is the lease ID of the election leader.
    87    int64 lease = 4;
    88  }
    89  
    90  message LeaderRequest {
    91    // name is the election identifier for the leadership information.
    92    bytes name = 1;
    93  }
    94  
    95  message LeaderResponse {
    96    etcdserverpb.ResponseHeader header = 1;
    97    // kv is the key-value pair representing the latest leader update.
    98    mvccpb.KeyValue kv = 2;
    99  }
   100  
   101  message ResignRequest {
   102    // leader is the leadership to relinquish by resignation.
   103    LeaderKey leader = 1;
   104  }
   105  
   106  message ResignResponse {
   107    etcdserverpb.ResponseHeader header = 1;
   108  }
   109  
   110  message ProclaimRequest {
   111    // leader is the leadership hold on the election.
   112    LeaderKey leader = 1;
   113    // value is an update meant to overwrite the leader's current value.
   114    bytes value = 2;
   115  }
   116  
   117  message ProclaimResponse {
   118    etcdserverpb.ResponseHeader header = 1;
   119  }