1syntax = "proto3";
2
3package envoy.admin.v3;
4
5import "google/protobuf/any.proto";
6import "google/protobuf/timestamp.proto";
7
8import "udpa/annotations/status.proto";
9import "udpa/annotations/versioning.proto";
10
11option java_package = "io.envoyproxy.envoy.admin.v3";
12option java_outer_classname = "ConfigDumpSharedProto";
13option java_multiple_files = true;
14option go_package = "github.com/envoyproxy/go-control-plane/envoy/admin/v3;adminv3";
15option (udpa.annotations.file_status).package_version_status = ACTIVE;
16
17// [#protodoc-title: ConfigDump]
18
19// Resource status from the view of a xDS client, which tells the synchronization
20// status between the xDS client and the xDS server.
21enum ClientResourceStatus {
22  // Resource status is not available/unknown.
23  UNKNOWN = 0;
24
25  // Client requested this resource but hasn't received any update from management
26  // server. The client will not fail requests, but will queue them until update
27  // arrives or the client times out waiting for the resource.
28  REQUESTED = 1;
29
30  // This resource has been requested by the client but has either not been
31  // delivered by the server or was previously delivered by the server and then
32  // subsequently removed from resources provided by the server. For more
33  // information, please refer to the :ref:`"Knowing When a Requested Resource
34  // Does Not Exist" <xds_protocol_resource_not_existed>` section.
35  DOES_NOT_EXIST = 2;
36
37  // Client received this resource and replied with ACK.
38  ACKED = 3;
39
40  // Client received this resource and replied with NACK.
41  NACKED = 4;
42}
43
44message UpdateFailureState {
45  option (udpa.annotations.versioning).previous_message_type =
46      "envoy.admin.v2alpha.UpdateFailureState";
47
48  // What the component configuration would have been if the update had succeeded.
49  // This field may not be populated by xDS clients due to storage overhead.
50  google.protobuf.Any failed_configuration = 1;
51
52  // Time of the latest failed update attempt.
53  google.protobuf.Timestamp last_update_attempt = 2;
54
55  // Details about the last failed update attempt.
56  string details = 3;
57
58  // This is the version of the rejected resource.
59  // [#not-implemented-hide:]
60  string version_info = 4;
61}
62
63// Envoy's listener manager fills this message with all currently known listeners. Listener
64// configuration information can be used to recreate an Envoy configuration by populating all
65// listeners as static listeners or by returning them in a LDS response.
66message ListenersConfigDump {
67  option (udpa.annotations.versioning).previous_message_type =
68      "envoy.admin.v2alpha.ListenersConfigDump";
69
70  // Describes a statically loaded listener.
71  message StaticListener {
72    option (udpa.annotations.versioning).previous_message_type =
73        "envoy.admin.v2alpha.ListenersConfigDump.StaticListener";
74
75    // The listener config.
76    google.protobuf.Any listener = 1;
77
78    // The timestamp when the Listener was last successfully updated.
79    google.protobuf.Timestamp last_updated = 2;
80  }
81
82  message DynamicListenerState {
83    option (udpa.annotations.versioning).previous_message_type =
84        "envoy.admin.v2alpha.ListenersConfigDump.DynamicListenerState";
85
86    // This is the per-resource version information. This version is currently taken from the
87    // :ref:`version_info <envoy_v3_api_field_service.discovery.v3.DiscoveryResponse.version_info>` field at the time
88    // that the listener was loaded. In the future, discrete per-listener versions may be supported
89    // by the API.
90    string version_info = 1;
91
92    // The listener config.
93    google.protobuf.Any listener = 2;
94
95    // The timestamp when the Listener was last successfully updated.
96    google.protobuf.Timestamp last_updated = 3;
97  }
98
99  // Describes a dynamically loaded listener via the LDS API.
100  // [#next-free-field: 7]
101  message DynamicListener {
102    option (udpa.annotations.versioning).previous_message_type =
103        "envoy.admin.v2alpha.ListenersConfigDump.DynamicListener";
104
105    // The name or unique id of this listener, pulled from the DynamicListenerState config.
106    string name = 1;
107
108    // The listener state for any active listener by this name.
109    // These are listeners that are available to service data plane traffic.
110    DynamicListenerState active_state = 2;
111
112    // The listener state for any warming listener by this name.
113    // These are listeners that are currently undergoing warming in preparation to service data
114    // plane traffic. Note that if attempting to recreate an Envoy configuration from a
115    // configuration dump, the warming listeners should generally be discarded.
116    DynamicListenerState warming_state = 3;
117
118    // The listener state for any draining listener by this name.
119    // These are listeners that are currently undergoing draining in preparation to stop servicing
120    // data plane traffic. Note that if attempting to recreate an Envoy configuration from a
121    // configuration dump, the draining listeners should generally be discarded.
122    DynamicListenerState draining_state = 4;
123
124    // Set if the last update failed, cleared after the next successful update.
125    // The ``error_state`` field contains the rejected version of this particular
126    // resource along with the reason and timestamp. For successfully updated or
127    // acknowledged resource, this field should be empty.
128    UpdateFailureState error_state = 5;
129
130    // The client status of this resource.
131    // [#not-implemented-hide:]
132    ClientResourceStatus client_status = 6;
133  }
134
135  // This is the :ref:`version_info <envoy_v3_api_field_service.discovery.v3.DiscoveryResponse.version_info>` in the
136  // last processed LDS discovery response. If there are only static bootstrap listeners, this field
137  // will be "".
138  string version_info = 1;
139
140  // The statically loaded listener configs.
141  repeated StaticListener static_listeners = 2;
142
143  // State for any warming, active, or draining listeners.
144  repeated DynamicListener dynamic_listeners = 3;
145}
146
147// Envoy's cluster manager fills this message with all currently known clusters. Cluster
148// configuration information can be used to recreate an Envoy configuration by populating all
149// clusters as static clusters or by returning them in a CDS response.
150message ClustersConfigDump {
151  option (udpa.annotations.versioning).previous_message_type =
152      "envoy.admin.v2alpha.ClustersConfigDump";
153
154  // Describes a statically loaded cluster.
155  message StaticCluster {
156    option (udpa.annotations.versioning).previous_message_type =
157        "envoy.admin.v2alpha.ClustersConfigDump.StaticCluster";
158
159    // The cluster config.
160    google.protobuf.Any cluster = 1;
161
162    // The timestamp when the Cluster was last updated.
163    google.protobuf.Timestamp last_updated = 2;
164  }
165
166  // Describes a dynamically loaded cluster via the CDS API.
167  // [#next-free-field: 6]
168  message DynamicCluster {
169    option (udpa.annotations.versioning).previous_message_type =
170        "envoy.admin.v2alpha.ClustersConfigDump.DynamicCluster";
171
172    // This is the per-resource version information. This version is currently taken from the
173    // :ref:`version_info <envoy_v3_api_field_service.discovery.v3.DiscoveryResponse.version_info>` field at the time
174    // that the cluster was loaded. In the future, discrete per-cluster versions may be supported by
175    // the API.
176    string version_info = 1;
177
178    // The cluster config.
179    google.protobuf.Any cluster = 2;
180
181    // The timestamp when the Cluster was last updated.
182    google.protobuf.Timestamp last_updated = 3;
183
184    // Set if the last update failed, cleared after the next successful update.
185    // The ``error_state`` field contains the rejected version of this particular
186    // resource along with the reason and timestamp. For successfully updated or
187    // acknowledged resource, this field should be empty.
188    // [#not-implemented-hide:]
189    UpdateFailureState error_state = 4;
190
191    // The client status of this resource.
192    // [#not-implemented-hide:]
193    ClientResourceStatus client_status = 5;
194  }
195
196  // This is the :ref:`version_info <envoy_v3_api_field_service.discovery.v3.DiscoveryResponse.version_info>` in the
197  // last processed CDS discovery response. If there are only static bootstrap clusters, this field
198  // will be "".
199  string version_info = 1;
200
201  // The statically loaded cluster configs.
202  repeated StaticCluster static_clusters = 2;
203
204  // The dynamically loaded active clusters. These are clusters that are available to service
205  // data plane traffic.
206  repeated DynamicCluster dynamic_active_clusters = 3;
207
208  // The dynamically loaded warming clusters. These are clusters that are currently undergoing
209  // warming in preparation to service data plane traffic. Note that if attempting to recreate an
210  // Envoy configuration from a configuration dump, the warming clusters should generally be
211  // discarded.
212  repeated DynamicCluster dynamic_warming_clusters = 4;
213}
214
215// Envoy's RDS implementation fills this message with all currently loaded routes, as described by
216// their RouteConfiguration objects. Static routes that are either defined in the bootstrap configuration
217// or defined inline while configuring listeners are separated from those configured dynamically via RDS.
218// Route configuration information can be used to recreate an Envoy configuration by populating all routes
219// as static routes or by returning them in RDS responses.
220message RoutesConfigDump {
221  option (udpa.annotations.versioning).previous_message_type =
222      "envoy.admin.v2alpha.RoutesConfigDump";
223
224  message StaticRouteConfig {
225    option (udpa.annotations.versioning).previous_message_type =
226        "envoy.admin.v2alpha.RoutesConfigDump.StaticRouteConfig";
227
228    // The route config.
229    google.protobuf.Any route_config = 1;
230
231    // The timestamp when the Route was last updated.
232    google.protobuf.Timestamp last_updated = 2;
233  }
234
235  // [#next-free-field: 6]
236  message DynamicRouteConfig {
237    option (udpa.annotations.versioning).previous_message_type =
238        "envoy.admin.v2alpha.RoutesConfigDump.DynamicRouteConfig";
239
240    // This is the per-resource version information. This version is currently taken from the
241    // :ref:`version_info <envoy_v3_api_field_service.discovery.v3.DiscoveryResponse.version_info>` field at the time that
242    // the route configuration was loaded.
243    string version_info = 1;
244
245    // The route config.
246    google.protobuf.Any route_config = 2;
247
248    // The timestamp when the Route was last updated.
249    google.protobuf.Timestamp last_updated = 3;
250
251    // Set if the last update failed, cleared after the next successful update.
252    // The ``error_state`` field contains the rejected version of this particular
253    // resource along with the reason and timestamp. For successfully updated or
254    // acknowledged resource, this field should be empty.
255    // [#not-implemented-hide:]
256    UpdateFailureState error_state = 4;
257
258    // The client status of this resource.
259    // [#not-implemented-hide:]
260    ClientResourceStatus client_status = 5;
261  }
262
263  // The statically loaded route configs.
264  repeated StaticRouteConfig static_route_configs = 2;
265
266  // The dynamically loaded route configs.
267  repeated DynamicRouteConfig dynamic_route_configs = 3;
268}
269
270// Envoy's scoped RDS implementation fills this message with all currently loaded route
271// configuration scopes (defined via ScopedRouteConfigurationsSet protos). This message lists both
272// the scopes defined inline with the higher order object (i.e., the HttpConnectionManager) and the
273// dynamically obtained scopes via the SRDS API.
274message ScopedRoutesConfigDump {
275  option (udpa.annotations.versioning).previous_message_type =
276      "envoy.admin.v2alpha.ScopedRoutesConfigDump";
277
278  message InlineScopedRouteConfigs {
279    option (udpa.annotations.versioning).previous_message_type =
280        "envoy.admin.v2alpha.ScopedRoutesConfigDump.InlineScopedRouteConfigs";
281
282    // The name assigned to the scoped route configurations.
283    string name = 1;
284
285    // The scoped route configurations.
286    repeated google.protobuf.Any scoped_route_configs = 2;
287
288    // The timestamp when the scoped route config set was last updated.
289    google.protobuf.Timestamp last_updated = 3;
290  }
291
292  // [#next-free-field: 7]
293  message DynamicScopedRouteConfigs {
294    option (udpa.annotations.versioning).previous_message_type =
295        "envoy.admin.v2alpha.ScopedRoutesConfigDump.DynamicScopedRouteConfigs";
296
297    // The name assigned to the scoped route configurations.
298    string name = 1;
299
300    // This is the per-resource version information. This version is currently taken from the
301    // :ref:`version_info <envoy_v3_api_field_service.discovery.v3.DiscoveryResponse.version_info>` field at the time that
302    // the scoped routes configuration was loaded.
303    string version_info = 2;
304
305    // The scoped route configurations.
306    repeated google.protobuf.Any scoped_route_configs = 3;
307
308    // The timestamp when the scoped route config set was last updated.
309    google.protobuf.Timestamp last_updated = 4;
310
311    // Set if the last update failed, cleared after the next successful update.
312    // The ``error_state`` field contains the rejected version of this particular
313    // resource along with the reason and timestamp. For successfully updated or
314    // acknowledged resource, this field should be empty.
315    // [#not-implemented-hide:]
316    UpdateFailureState error_state = 5;
317
318    // The client status of this resource.
319    // [#not-implemented-hide:]
320    ClientResourceStatus client_status = 6;
321  }
322
323  // The statically loaded scoped route configs.
324  repeated InlineScopedRouteConfigs inline_scoped_route_configs = 1;
325
326  // The dynamically loaded scoped route configs.
327  repeated DynamicScopedRouteConfigs dynamic_scoped_route_configs = 2;
328}
329
330// Envoy's admin fill this message with all currently known endpoints. Endpoint
331// configuration information can be used to recreate an Envoy configuration by populating all
332// endpoints as static endpoints or by returning them in an EDS response.
333message EndpointsConfigDump {
334  message StaticEndpointConfig {
335    // The endpoint config.
336    google.protobuf.Any endpoint_config = 1;
337
338    // [#not-implemented-hide:] The timestamp when the Endpoint was last updated.
339    google.protobuf.Timestamp last_updated = 2;
340  }
341
342  // [#next-free-field: 6]
343  message DynamicEndpointConfig {
344    // [#not-implemented-hide:] This is the per-resource version information. This version is currently taken from the
345    // :ref:`version_info <envoy_v3_api_field_service.discovery.v3.DiscoveryResponse.version_info>` field at the time that
346    // the endpoint configuration was loaded.
347    string version_info = 1;
348
349    // The endpoint config.
350    google.protobuf.Any endpoint_config = 2;
351
352    // [#not-implemented-hide:] The timestamp when the Endpoint was last updated.
353    google.protobuf.Timestamp last_updated = 3;
354
355    // Set if the last update failed, cleared after the next successful update.
356    // The ``error_state`` field contains the rejected version of this particular
357    // resource along with the reason and timestamp. For successfully updated or
358    // acknowledged resource, this field should be empty.
359    // [#not-implemented-hide:]
360    UpdateFailureState error_state = 4;
361
362    // The client status of this resource.
363    // [#not-implemented-hide:]
364    ClientResourceStatus client_status = 5;
365  }
366
367  // The statically loaded endpoint configs.
368  repeated StaticEndpointConfig static_endpoint_configs = 2;
369
370  // The dynamically loaded endpoint configs.
371  repeated DynamicEndpointConfig dynamic_endpoint_configs = 3;
372}
373
374// Envoy's ECDS service fills this message with all currently extension
375// configuration. Extension configuration information can be used to recreate
376// an Envoy ECDS listener and HTTP filters as static filters or by returning
377// them in ECDS response.
378message EcdsConfigDump {
379  option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v2alpha.EcdsConfigDump";
380
381  // [#next-free-field: 6]
382  message EcdsFilterConfig {
383    option (udpa.annotations.versioning).previous_message_type =
384        "envoy.admin.v2alpha.EcdsConfigDump.EcdsFilterConfig";
385
386    // This is the per-resource version information. This version is currently
387    // taken from the :ref:`version_info
388    // <envoy_v3_api_field_service.discovery.v3.DiscoveryResponse.version_info>`
389    // field at the time that the ECDS filter was loaded.
390    string version_info = 1;
391
392    // The ECDS filter config.
393    google.protobuf.Any ecds_filter = 2;
394
395    // The timestamp when the ECDS filter was last updated.
396    google.protobuf.Timestamp last_updated = 3;
397
398    // Set if the last update failed, cleared after the next successful update.
399    // The ``error_state`` field contains the rejected version of this
400    // particular resource along with the reason and timestamp. For successfully
401    // updated or acknowledged resource, this field should be empty.
402    // [#not-implemented-hide:]
403    UpdateFailureState error_state = 4;
404
405    // The client status of this resource.
406    // [#not-implemented-hide:]
407    ClientResourceStatus client_status = 5;
408  }
409
410  // The ECDS filter configs.
411  repeated EcdsFilterConfig ecds_filters = 1;
412}
413