mirror of https://github.com/istio/api.git
add incremental mcp support (#620)
* add incremental mcp based on incremental xds Extend the MCP to include support for incremental configuration pushes. This is *heavily* derived from the new incremental xDS protocol. xref: https://github.com/envoyproxy/data-plane-api/blob/master/XDS_PROTOCOL.md#incremental-xds * document initial_resource_versions should only be included in first request * move resource version into metadata
This commit is contained in:
parent
fccf4189d6
commit
2198cccdc2
|
|
@ -16,6 +16,8 @@
|
|||
Client
|
||||
MeshConfigRequest
|
||||
MeshConfigResponse
|
||||
IncrementalMeshConfigRequest
|
||||
IncrementalMeshConfigResponse
|
||||
Metadata
|
||||
*/
|
||||
package v1alpha1
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ option (gogoproto.equal_all) = true;
|
|||
// Envelope for a configuration resource as transferred via the Mesh Configuration Protocol.
|
||||
// Each envelope is made up of common metadata, and a type-specific resource payload.
|
||||
message Envelope {
|
||||
|
||||
// Common metadata describing the resource.
|
||||
istio.mcp.v1alpha1.Metadata metadata = 1;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
title: istio.mcp.v1alpha1
|
||||
layout: protoc-gen-docs
|
||||
generator: protoc-gen-docs
|
||||
number_of_entries: 7
|
||||
number_of_entries: 9
|
||||
---
|
||||
<p>This package defines the common, core types used by the Mesh Configuration Protocol.</p>
|
||||
|
||||
|
|
@ -20,6 +20,12 @@ sequence updates across multiple resource types. A single stream
|
|||
is used with multiple independent MeshConfigRequest /
|
||||
MeshConfigResponses sequences multiplexed via the type URL.</p>
|
||||
|
||||
<pre id="AggregatedMeshConfigService-IncrementalAggregatedResources"><code class="language-proto">rpc IncrementalAggregatedResources(IncrementalMeshConfigRequest) returns (IncrementalMeshConfigResponse)
|
||||
</code></pre>
|
||||
<p>IncrementalAggregatedResources provides the ability to incrementally
|
||||
update the resources on the client. This supports the goal of
|
||||
scalability of MCP resources.</p>
|
||||
|
||||
</section>
|
||||
<h2 id="Types">Types</h2>
|
||||
<h3 id="Client">Client</h3>
|
||||
|
|
@ -86,6 +92,145 @@ Each envelope is made up of common metadata, and a type-specific resource payloa
|
|||
<td>
|
||||
<p>The resource itself.</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<h3 id="IncrementalMeshConfigRequest">IncrementalMeshConfigRequest</h3>
|
||||
<section>
|
||||
<p>IncrementalMeshConfigRequest are be sent in 2 situations:</p>
|
||||
|
||||
<ol>
|
||||
<li><p>Initial message in a MCP bidirectional gRPC stream.</p></li>
|
||||
|
||||
<li><p>As a ACK or NACK response to a previous IncrementalMeshConfigResponse.
|
||||
In this case the response<em>nonce is set to the nonce value in the Response.
|
||||
ACK or NACK is determined by the absence or presence of error</em>detail.</p></li>
|
||||
</ol>
|
||||
|
||||
<table class="message-fields">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Field</th>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr id="IncrementalMeshConfigRequest-client">
|
||||
<td><code>client</code></td>
|
||||
<td><code><a href="#Client">Client</a></code></td>
|
||||
<td>
|
||||
<p>The client making the request.</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="IncrementalMeshConfigRequest-type_url">
|
||||
<td><code>typeUrl</code></td>
|
||||
<td><code>string</code></td>
|
||||
<td>
|
||||
<p>Type of the resource that is being requested, e.g.
|
||||
“type.googleapis.com/istio.io.networking.v1alpha3.VirtualService”.</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="IncrementalMeshConfigRequest-initial_resource_versions">
|
||||
<td><code>initialResourceVersions</code></td>
|
||||
<td><code>map<string, string></code></td>
|
||||
<td>
|
||||
<p>When the IncrementalMeshConfigRequest is the first in a stream,
|
||||
the initial<em>resource</em>versions must be populated. Otherwise,
|
||||
initial<em>resource</em>versions must be omitted. The keys are the
|
||||
resources names of the MCP resources known to the MCP client. The
|
||||
values in the map are the associated resource level version info.</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="IncrementalMeshConfigRequest-response_nonce">
|
||||
<td><code>responseNonce</code></td>
|
||||
<td><code>string</code></td>
|
||||
<td>
|
||||
<p>When the IncrementalMeshConfigRequest is a ACK or NACK message in response
|
||||
to a previous IncrementalMeshConfigResponse, the response<em>nonce must be the
|
||||
nonce in the IncrementalMeshConfigResponse.
|
||||
Otherwise response</em>nonce must be omitted.</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="IncrementalMeshConfigRequest-error_detail">
|
||||
<td><code>errorDetail</code></td>
|
||||
<td><code><a href="#google-rpc-Status">google.rpc.Status</a></code></td>
|
||||
<td>
|
||||
<p>This is populated when the previous IncrementalMeshConfigResponses
|
||||
failed to update configuration. The <em>message</em> field in <em>error_details</em>
|
||||
provides the client internal exception related to the failure.</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<h3 id="IncrementalMeshConfigResponse">IncrementalMeshConfigResponse</h3>
|
||||
<section>
|
||||
<p>IncrementalMeshConfigResponses do not need to include a full
|
||||
snapshot of the tracked resources. Instead they are a diff to the
|
||||
state of a MCP client. Per resource versions allow servers and
|
||||
clients to track state at the resource granularity. An MCP
|
||||
incremental session is always in the context of a gRPC
|
||||
bidirectional stream. This allows the MCP server to keep track of
|
||||
the state of MCP clients connected to it.</p>
|
||||
|
||||
<p>In Incremental MCP the nonce field is required and used to pair
|
||||
IncrementalMeshConfigResponse to an IncrementalMeshConfigRequest
|
||||
ACK or NACK. Optionally, a response message level
|
||||
system<em>version</em>info is present for debugging purposes only.</p>
|
||||
|
||||
<table class="message-fields">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Field</th>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr id="IncrementalMeshConfigResponse-system_version_info">
|
||||
<td><code>systemVersionInfo</code></td>
|
||||
<td><code>string</code></td>
|
||||
<td>
|
||||
<p>The version of the response data (used for debugging).</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="IncrementalMeshConfigResponse-envelopes">
|
||||
<td><code>envelopes</code></td>
|
||||
<td><code><a href="#Envelope">Envelope[]</a></code></td>
|
||||
<td>
|
||||
<p>The response resources wrapped in the common MCP <em>Envelope</em>
|
||||
message. These are typed resources that match the type url in the
|
||||
IncrementalMeshConfigRequest.</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="IncrementalMeshConfigResponse-removed_resources">
|
||||
<td><code>removedResources</code></td>
|
||||
<td><code>string[]</code></td>
|
||||
<td>
|
||||
<p>Resources names of resources that have be deleted and to be
|
||||
removed from the MCP Client. Removed resources for missing
|
||||
resources can be ignored.</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="IncrementalMeshConfigResponse-nonce">
|
||||
<td><code>nonce</code></td>
|
||||
<td><code>string</code></td>
|
||||
<td>
|
||||
<p>The nonce provides a way for IncrementalMeshConfigRequests to
|
||||
uniquely reference an IncrementalMeshConfigResponse. The nonce is
|
||||
required.</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
@ -253,6 +398,15 @@ Envelope message.</p>
|
|||
<td>
|
||||
<p>The creation timestamp of the resource.</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="Metadata-version">
|
||||
<td><code>version</code></td>
|
||||
<td><code>string</code></td>
|
||||
<td>
|
||||
<p>The resource level version. It allows MCP to track the state of
|
||||
individual resources.</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -98,6 +98,73 @@ message MeshConfigResponse {
|
|||
string nonce = 4;
|
||||
}
|
||||
|
||||
// IncrementalMeshConfigRequest are be sent in 2 situations:
|
||||
//
|
||||
// 1. Initial message in a MCP bidirectional gRPC stream.
|
||||
//
|
||||
// 2. As a ACK or NACK response to a previous IncrementalMeshConfigResponse.
|
||||
// In this case the response_nonce is set to the nonce value in the Response.
|
||||
// ACK or NACK is determined by the absence or presence of error_detail.
|
||||
message IncrementalMeshConfigRequest {
|
||||
// The client making the request.
|
||||
Client client = 1;
|
||||
|
||||
// Type of the resource that is being requested, e.g.
|
||||
// "type.googleapis.com/istio.io.networking.v1alpha3.VirtualService".
|
||||
string type_url = 2;
|
||||
|
||||
|
||||
// When the IncrementalMeshConfigRequest is the first in a stream,
|
||||
// the initial_resource_versions must be populated. Otherwise,
|
||||
// initial_resource_versions must be omitted. The keys are the
|
||||
// resources names of the MCP resources known to the MCP client. The
|
||||
// values in the map are the associated resource level version info.
|
||||
map<string, string> initial_resource_versions = 3;
|
||||
|
||||
// When the IncrementalMeshConfigRequest is a ACK or NACK message in response
|
||||
// to a previous IncrementalMeshConfigResponse, the response_nonce must be the
|
||||
// nonce in the IncrementalMeshConfigResponse.
|
||||
// Otherwise response_nonce must be omitted.
|
||||
string response_nonce = 4;
|
||||
|
||||
// This is populated when the previous IncrementalMeshConfigResponses
|
||||
// failed to update configuration. The *message* field in *error_details*
|
||||
// provides the client internal exception related to the failure.
|
||||
google.rpc.Status error_detail = 5;
|
||||
}
|
||||
|
||||
// IncrementalMeshConfigResponses do not need to include a full
|
||||
// snapshot of the tracked resources. Instead they are a diff to the
|
||||
// state of a MCP client. Per resource versions allow servers and
|
||||
// clients to track state at the resource granularity. An MCP
|
||||
// incremental session is always in the context of a gRPC
|
||||
// bidirectional stream. This allows the MCP server to keep track of
|
||||
// the state of MCP clients connected to it.
|
||||
//
|
||||
// In Incremental MCP the nonce field is required and used to pair
|
||||
// IncrementalMeshConfigResponse to an IncrementalMeshConfigRequest
|
||||
// ACK or NACK. Optionally, a response message level
|
||||
// system_version_info is present for debugging purposes only.
|
||||
message IncrementalMeshConfigResponse {
|
||||
// The version of the response data (used for debugging).
|
||||
string system_version_info = 1;
|
||||
|
||||
// The response resources wrapped in the common MCP *Envelope*
|
||||
// message. These are typed resources that match the type url in the
|
||||
// IncrementalMeshConfigRequest.
|
||||
repeated Envelope envelopes = 2 [(gogoproto.nullable) = false];
|
||||
|
||||
// Resources names of resources that have be deleted and to be
|
||||
// removed from the MCP Client. Removed resources for missing
|
||||
// resources can be ignored.
|
||||
repeated string removed_resources = 3;
|
||||
|
||||
// The nonce provides a way for IncrementalMeshConfigRequests to
|
||||
// uniquely reference an IncrementalMeshConfigResponse. The nonce is
|
||||
// required.
|
||||
string nonce = 4;
|
||||
}
|
||||
|
||||
// The aggregated mesh configuration services allow a single
|
||||
// management server, via a single gRPC stream, to deliver all API
|
||||
// updates.
|
||||
|
|
@ -109,4 +176,11 @@ service AggregatedMeshConfigService {
|
|||
rpc StreamAggregatedResources(stream MeshConfigRequest)
|
||||
returns (stream MeshConfigResponse) {
|
||||
}
|
||||
|
||||
// IncrementalAggregatedResources provides the ability to incrementally
|
||||
// update the resources on the client. This supports the goal of
|
||||
// scalability of MCP resources.
|
||||
rpc IncrementalAggregatedResources(stream IncrementalMeshConfigRequest)
|
||||
returns (stream IncrementalMeshConfigResponse) {
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,9 @@ type Metadata struct {
|
|||
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
||||
// The creation timestamp of the resource.
|
||||
CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
|
||||
// The resource level version. It allows MCP to track the state of
|
||||
// individual resources.
|
||||
Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
|
||||
}
|
||||
|
||||
func (m *Metadata) Reset() { *m = Metadata{} }
|
||||
|
|
@ -46,6 +49,13 @@ func (m *Metadata) GetCreateTime() *google_protobuf2.Timestamp {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (m *Metadata) GetVersion() string {
|
||||
if m != nil {
|
||||
return m.Version
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*Metadata)(nil), "istio.mcp.v1alpha1.Metadata")
|
||||
}
|
||||
|
|
@ -74,6 +84,9 @@ func (this *Metadata) Equal(that interface{}) bool {
|
|||
if !this.CreateTime.Equal(that1.CreateTime) {
|
||||
return false
|
||||
}
|
||||
if this.Version != that1.Version {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
func (m *Metadata) Marshal() (dAtA []byte, err error) {
|
||||
|
|
@ -107,6 +120,12 @@ func (m *Metadata) MarshalTo(dAtA []byte) (int, error) {
|
|||
}
|
||||
i += n1
|
||||
}
|
||||
if len(m.Version) > 0 {
|
||||
dAtA[i] = 0x1a
|
||||
i++
|
||||
i = encodeVarintMetadata(dAtA, i, uint64(len(m.Version)))
|
||||
i += copy(dAtA[i:], m.Version)
|
||||
}
|
||||
return i, nil
|
||||
}
|
||||
|
||||
|
|
@ -130,6 +149,10 @@ func (m *Metadata) Size() (n int) {
|
|||
l = m.CreateTime.Size()
|
||||
n += 1 + l + sovMetadata(uint64(l))
|
||||
}
|
||||
l = len(m.Version)
|
||||
if l > 0 {
|
||||
n += 1 + l + sovMetadata(uint64(l))
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
|
|
@ -237,6 +260,35 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
|
|||
return err
|
||||
}
|
||||
iNdEx = postIndex
|
||||
case 3:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
|
||||
}
|
||||
var stringLen uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowMetadata
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
stringLen |= (uint64(b) & 0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
intStringLen := int(stringLen)
|
||||
if intStringLen < 0 {
|
||||
return ErrInvalidLengthMetadata
|
||||
}
|
||||
postIndex := iNdEx + intStringLen
|
||||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
m.Version = string(dAtA[iNdEx:postIndex])
|
||||
iNdEx = postIndex
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skipMetadata(dAtA[iNdEx:])
|
||||
|
|
@ -366,18 +418,19 @@ var (
|
|||
func init() { proto.RegisterFile("mcp/v1alpha1/metadata.proto", fileDescriptorMetadata) }
|
||||
|
||||
var fileDescriptorMetadata = []byte{
|
||||
// 204 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xce, 0x4d, 0x2e, 0xd0,
|
||||
0x2f, 0x33, 0x4c, 0xcc, 0x29, 0xc8, 0x48, 0x34, 0xd4, 0xcf, 0x4d, 0x2d, 0x49, 0x4c, 0x49, 0x2c,
|
||||
0x49, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0xca, 0x2c, 0x2e, 0xc9, 0xcc, 0xd7, 0xcb,
|
||||
0x4d, 0x2e, 0xd0, 0x83, 0x29, 0x91, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x4b, 0xeb, 0x83, 0x58,
|
||||
0x10, 0x95, 0x52, 0xf2, 0xe9, 0xf9, 0xf9, 0xe9, 0x39, 0xa9, 0xfa, 0x60, 0x5e, 0x52, 0x69, 0x9a,
|
||||
0x7e, 0x49, 0x66, 0x6e, 0x6a, 0x71, 0x49, 0x62, 0x6e, 0x01, 0x44, 0x81, 0x52, 0x34, 0x17, 0x87,
|
||||
0x2f, 0xd4, 0x70, 0x21, 0x21, 0x2e, 0x96, 0xbc, 0xc4, 0xdc, 0x54, 0x09, 0x46, 0x05, 0x46, 0x0d,
|
||||
0xce, 0x20, 0x30, 0x5b, 0xc8, 0x9a, 0x8b, 0x3b, 0xb9, 0x28, 0x35, 0xb1, 0x24, 0x35, 0x1e, 0xa4,
|
||||
0x53, 0x82, 0x49, 0x81, 0x51, 0x83, 0xdb, 0x48, 0x4a, 0x0f, 0x62, 0xac, 0x1e, 0xcc, 0x58, 0xbd,
|
||||
0x10, 0x98, 0xb1, 0x41, 0x5c, 0x10, 0xe5, 0x20, 0x01, 0x27, 0xed, 0x15, 0x8f, 0xe4, 0x18, 0x4f,
|
||||
0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x28, 0x49, 0x88, 0xcb,
|
||||
0x33, 0xf3, 0xf5, 0x13, 0x0b, 0x32, 0xf5, 0x91, 0xfd, 0x98, 0xc4, 0x06, 0x36, 0xcc, 0x18, 0x10,
|
||||
0x00, 0x00, 0xff, 0xff, 0x09, 0xde, 0xdc, 0x0e, 0xfa, 0x00, 0x00, 0x00,
|
||||
// 220 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x8f, 0xbf, 0x4e, 0xc5, 0x20,
|
||||
0x18, 0xc5, 0x83, 0x1a, 0xff, 0x70, 0x37, 0xe2, 0x80, 0x35, 0xc1, 0x1b, 0xa7, 0x26, 0x26, 0x90,
|
||||
0xea, 0xe8, 0xe6, 0xee, 0xd2, 0x38, 0xb9, 0x98, 0xaf, 0x15, 0x91, 0xa4, 0xf4, 0x23, 0x2d, 0xed,
|
||||
0x33, 0xf9, 0x28, 0x8e, 0x3e, 0x82, 0xe1, 0x49, 0x4c, 0x41, 0x92, 0xbb, 0x9d, 0x03, 0x3f, 0x7e,
|
||||
0xe4, 0xd0, 0x6b, 0xd7, 0x7b, 0xb5, 0x36, 0x30, 0xf8, 0x4f, 0x68, 0x94, 0xd3, 0x01, 0xde, 0x21,
|
||||
0x80, 0xf4, 0x13, 0x06, 0x64, 0xcc, 0xce, 0xc1, 0xa2, 0x74, 0xbd, 0x97, 0x05, 0xa9, 0x2e, 0x0d,
|
||||
0x1a, 0x4c, 0xd7, 0x6a, 0x4b, 0x99, 0xac, 0x6e, 0x0c, 0xa2, 0x19, 0xb4, 0x4a, 0xad, 0x5b, 0x3e,
|
||||
0x54, 0xb0, 0x4e, 0xcf, 0x01, 0x9c, 0xcf, 0xc0, 0xed, 0x42, 0xcf, 0x9f, 0xff, 0xe5, 0x8c, 0xd1,
|
||||
0x93, 0x11, 0x9c, 0xe6, 0x64, 0x4f, 0xea, 0x8b, 0x36, 0x65, 0xf6, 0x48, 0x77, 0xfd, 0xa4, 0x21,
|
||||
0xe8, 0xb7, 0xed, 0x25, 0x3f, 0xda, 0x93, 0x7a, 0x77, 0x5f, 0xc9, 0xac, 0x95, 0x45, 0x2b, 0x5f,
|
||||
0x8a, 0xb6, 0xa5, 0x19, 0xdf, 0x0e, 0x18, 0xa7, 0x67, 0xab, 0x9e, 0x66, 0x8b, 0x23, 0x3f, 0x4e,
|
||||
0xce, 0x52, 0x9f, 0xee, 0xbe, 0xa2, 0x20, 0xdf, 0x51, 0x90, 0x9f, 0x28, 0xc8, 0x6f, 0x14, 0xe4,
|
||||
0xf5, 0x2a, 0x6f, 0xb2, 0xa8, 0xc0, 0x5b, 0x75, 0xb8, 0xbe, 0x3b, 0x4d, 0xdf, 0x3c, 0xfc, 0x05,
|
||||
0x00, 0x00, 0xff, 0xff, 0x35, 0xb5, 0xd4, 0xb9, 0x14, 0x01, 0x00, 0x00,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,4 +32,8 @@ message Metadata {
|
|||
|
||||
// The creation timestamp of the resource.
|
||||
google.protobuf.Timestamp create_time = 2;
|
||||
|
||||
// The resource level version. It allows MCP to track the state of
|
||||
// individual resources.
|
||||
string version = 3;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
|||
name='mcp/v1alpha1/mcp.proto',
|
||||
package='istio.mcp.v1alpha1',
|
||||
syntax='proto3',
|
||||
serialized_pb=_b('\n\x16mcp/v1alpha1/mcp.proto\x12\x12istio.mcp.v1alpha1\x1a\x1cgoogle/protobuf/struct.proto\x1a\x17google/rpc/status.proto\x1a\x14gogoproto/gogo.proto\x1a\x1bmcp/v1alpha1/envelope.proto\"?\n\x06\x43lient\x12\n\n\x02id\x18\x01 \x01(\t\x12)\n\x08metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"\xa9\x01\n\x11MeshConfigRequest\x12\x14\n\x0cversion_info\x18\x01 \x01(\t\x12*\n\x06\x63lient\x18\x02 \x01(\x0b\x32\x1a.istio.mcp.v1alpha1.Client\x12\x10\n\x08type_url\x18\x03 \x01(\t\x12\x16\n\x0eresponse_nonce\x18\x04 \x01(\t\x12(\n\x0c\x65rror_detail\x18\x05 \x01(\x0b\x32\x12.google.rpc.Status\"\x82\x01\n\x12MeshConfigResponse\x12\x14\n\x0cversion_info\x18\x01 \x01(\t\x12\x35\n\tenvelopes\x18\x02 \x03(\x0b\x32\x1c.istio.mcp.v1alpha1.EnvelopeB\x04\xc8\xde\x1f\x00\x12\x10\n\x08type_url\x18\x03 \x01(\t\x12\r\n\x05nonce\x18\x04 \x01(\t2\x8f\x01\n\x1b\x41ggregatedMeshConfigService\x12p\n\x19StreamAggregatedResources\x12%.istio.mcp.v1alpha1.MeshConfigRequest\x1a&.istio.mcp.v1alpha1.MeshConfigResponse\"\x00(\x01\x30\x01\x42\x1fZ\x19istio.io/api/mcp/v1alpha1\xa8\xe2\x1e\x01\x62\x06proto3')
|
||||
serialized_pb=_b('\n\x16mcp/v1alpha1/mcp.proto\x12\x12istio.mcp.v1alpha1\x1a\x1cgoogle/protobuf/struct.proto\x1a\x17google/rpc/status.proto\x1a\x14gogoproto/gogo.proto\x1a\x1bmcp/v1alpha1/envelope.proto\"?\n\x06\x43lient\x12\n\n\x02id\x18\x01 \x01(\t\x12)\n\x08metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"\xa9\x01\n\x11MeshConfigRequest\x12\x14\n\x0cversion_info\x18\x01 \x01(\t\x12*\n\x06\x63lient\x18\x02 \x01(\x0b\x32\x1a.istio.mcp.v1alpha1.Client\x12\x10\n\x08type_url\x18\x03 \x01(\t\x12\x16\n\x0eresponse_nonce\x18\x04 \x01(\t\x12(\n\x0c\x65rror_detail\x18\x05 \x01(\x0b\x32\x12.google.rpc.Status\"\x82\x01\n\x12MeshConfigResponse\x12\x14\n\x0cversion_info\x18\x01 \x01(\t\x12\x35\n\tenvelopes\x18\x02 \x03(\x0b\x32\x1c.istio.mcp.v1alpha1.EnvelopeB\x04\xc8\xde\x1f\x00\x12\x10\n\x08type_url\x18\x03 \x01(\t\x12\r\n\x05nonce\x18\x04 \x01(\t\"\xd0\x02\n\x1cIncrementalMeshConfigRequest\x12*\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x1a.istio.mcp.v1alpha1.Client\x12\x10\n\x08type_url\x18\x02 \x01(\t\x12p\n\x19initial_resource_versions\x18\x03 \x03(\x0b\x32M.istio.mcp.v1alpha1.IncrementalMeshConfigRequest.InitialResourceVersionsEntry\x12\x16\n\x0eresponse_nonce\x18\x04 \x01(\t\x12(\n\x0c\x65rror_detail\x18\x05 \x01(\x0b\x32\x12.google.rpc.Status\x1a>\n\x1cInitialResourceVersionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x9d\x01\n\x1dIncrementalMeshConfigResponse\x12\x1b\n\x13system_version_info\x18\x01 \x01(\t\x12\x35\n\tenvelopes\x18\x02 \x03(\x0b\x32\x1c.istio.mcp.v1alpha1.EnvelopeB\x04\xc8\xde\x1f\x00\x12\x19\n\x11removed_resources\x18\x03 \x03(\t\x12\r\n\x05nonce\x18\x04 \x01(\t2\x9d\x02\n\x1b\x41ggregatedMeshConfigService\x12p\n\x19StreamAggregatedResources\x12%.istio.mcp.v1alpha1.MeshConfigRequest\x1a&.istio.mcp.v1alpha1.MeshConfigResponse\"\x00(\x01\x30\x01\x12\x8b\x01\n\x1eIncrementalAggregatedResources\x12\x30.istio.mcp.v1alpha1.IncrementalMeshConfigRequest\x1a\x31.istio.mcp.v1alpha1.IncrementalMeshConfigResponse\"\x00(\x01\x30\x01\x42\x1fZ\x19istio.io/api/mcp/v1alpha1\xa8\xe2\x1e\x01\x62\x06proto3')
|
||||
,
|
||||
dependencies=[google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,google_dot_rpc_dot_status__pb2.DESCRIPTOR,gogoproto_dot_gogo__pb2.DESCRIPTOR,mcp_dot_v1alpha1_dot_envelope__pb2.DESCRIPTOR,])
|
||||
|
||||
|
|
@ -178,13 +178,168 @@ _MESHCONFIGRESPONSE = _descriptor.Descriptor(
|
|||
serialized_end=520,
|
||||
)
|
||||
|
||||
|
||||
_INCREMENTALMESHCONFIGREQUEST_INITIALRESOURCEVERSIONSENTRY = _descriptor.Descriptor(
|
||||
name='InitialResourceVersionsEntry',
|
||||
full_name='istio.mcp.v1alpha1.IncrementalMeshConfigRequest.InitialResourceVersionsEntry',
|
||||
filename=None,
|
||||
file=DESCRIPTOR,
|
||||
containing_type=None,
|
||||
fields=[
|
||||
_descriptor.FieldDescriptor(
|
||||
name='key', full_name='istio.mcp.v1alpha1.IncrementalMeshConfigRequest.InitialResourceVersionsEntry.key', index=0,
|
||||
number=1, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='value', full_name='istio.mcp.v1alpha1.IncrementalMeshConfigRequest.InitialResourceVersionsEntry.value', index=1,
|
||||
number=2, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')),
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=797,
|
||||
serialized_end=859,
|
||||
)
|
||||
|
||||
_INCREMENTALMESHCONFIGREQUEST = _descriptor.Descriptor(
|
||||
name='IncrementalMeshConfigRequest',
|
||||
full_name='istio.mcp.v1alpha1.IncrementalMeshConfigRequest',
|
||||
filename=None,
|
||||
file=DESCRIPTOR,
|
||||
containing_type=None,
|
||||
fields=[
|
||||
_descriptor.FieldDescriptor(
|
||||
name='client', full_name='istio.mcp.v1alpha1.IncrementalMeshConfigRequest.client', index=0,
|
||||
number=1, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='type_url', full_name='istio.mcp.v1alpha1.IncrementalMeshConfigRequest.type_url', index=1,
|
||||
number=2, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='initial_resource_versions', full_name='istio.mcp.v1alpha1.IncrementalMeshConfigRequest.initial_resource_versions', index=2,
|
||||
number=3, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='response_nonce', full_name='istio.mcp.v1alpha1.IncrementalMeshConfigRequest.response_nonce', index=3,
|
||||
number=4, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='error_detail', full_name='istio.mcp.v1alpha1.IncrementalMeshConfigRequest.error_detail', index=4,
|
||||
number=5, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[_INCREMENTALMESHCONFIGREQUEST_INITIALRESOURCEVERSIONSENTRY, ],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=523,
|
||||
serialized_end=859,
|
||||
)
|
||||
|
||||
|
||||
_INCREMENTALMESHCONFIGRESPONSE = _descriptor.Descriptor(
|
||||
name='IncrementalMeshConfigResponse',
|
||||
full_name='istio.mcp.v1alpha1.IncrementalMeshConfigResponse',
|
||||
filename=None,
|
||||
file=DESCRIPTOR,
|
||||
containing_type=None,
|
||||
fields=[
|
||||
_descriptor.FieldDescriptor(
|
||||
name='system_version_info', full_name='istio.mcp.v1alpha1.IncrementalMeshConfigResponse.system_version_info', index=0,
|
||||
number=1, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='envelopes', full_name='istio.mcp.v1alpha1.IncrementalMeshConfigResponse.envelopes', index=1,
|
||||
number=2, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000')), file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='removed_resources', full_name='istio.mcp.v1alpha1.IncrementalMeshConfigResponse.removed_resources', index=2,
|
||||
number=3, type=9, cpp_type=9, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='nonce', full_name='istio.mcp.v1alpha1.IncrementalMeshConfigResponse.nonce', index=3,
|
||||
number=4, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=862,
|
||||
serialized_end=1019,
|
||||
)
|
||||
|
||||
_CLIENT.fields_by_name['metadata'].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT
|
||||
_MESHCONFIGREQUEST.fields_by_name['client'].message_type = _CLIENT
|
||||
_MESHCONFIGREQUEST.fields_by_name['error_detail'].message_type = google_dot_rpc_dot_status__pb2._STATUS
|
||||
_MESHCONFIGRESPONSE.fields_by_name['envelopes'].message_type = mcp_dot_v1alpha1_dot_envelope__pb2._ENVELOPE
|
||||
_INCREMENTALMESHCONFIGREQUEST_INITIALRESOURCEVERSIONSENTRY.containing_type = _INCREMENTALMESHCONFIGREQUEST
|
||||
_INCREMENTALMESHCONFIGREQUEST.fields_by_name['client'].message_type = _CLIENT
|
||||
_INCREMENTALMESHCONFIGREQUEST.fields_by_name['initial_resource_versions'].message_type = _INCREMENTALMESHCONFIGREQUEST_INITIALRESOURCEVERSIONSENTRY
|
||||
_INCREMENTALMESHCONFIGREQUEST.fields_by_name['error_detail'].message_type = google_dot_rpc_dot_status__pb2._STATUS
|
||||
_INCREMENTALMESHCONFIGRESPONSE.fields_by_name['envelopes'].message_type = mcp_dot_v1alpha1_dot_envelope__pb2._ENVELOPE
|
||||
DESCRIPTOR.message_types_by_name['Client'] = _CLIENT
|
||||
DESCRIPTOR.message_types_by_name['MeshConfigRequest'] = _MESHCONFIGREQUEST
|
||||
DESCRIPTOR.message_types_by_name['MeshConfigResponse'] = _MESHCONFIGRESPONSE
|
||||
DESCRIPTOR.message_types_by_name['IncrementalMeshConfigRequest'] = _INCREMENTALMESHCONFIGREQUEST
|
||||
DESCRIPTOR.message_types_by_name['IncrementalMeshConfigResponse'] = _INCREMENTALMESHCONFIGRESPONSE
|
||||
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
|
||||
|
||||
Client = _reflection.GeneratedProtocolMessageType('Client', (_message.Message,), dict(
|
||||
|
|
@ -208,11 +363,37 @@ MeshConfigResponse = _reflection.GeneratedProtocolMessageType('MeshConfigRespons
|
|||
))
|
||||
_sym_db.RegisterMessage(MeshConfigResponse)
|
||||
|
||||
IncrementalMeshConfigRequest = _reflection.GeneratedProtocolMessageType('IncrementalMeshConfigRequest', (_message.Message,), dict(
|
||||
|
||||
InitialResourceVersionsEntry = _reflection.GeneratedProtocolMessageType('InitialResourceVersionsEntry', (_message.Message,), dict(
|
||||
DESCRIPTOR = _INCREMENTALMESHCONFIGREQUEST_INITIALRESOURCEVERSIONSENTRY,
|
||||
__module__ = 'mcp.v1alpha1.mcp_pb2'
|
||||
# @@protoc_insertion_point(class_scope:istio.mcp.v1alpha1.IncrementalMeshConfigRequest.InitialResourceVersionsEntry)
|
||||
))
|
||||
,
|
||||
DESCRIPTOR = _INCREMENTALMESHCONFIGREQUEST,
|
||||
__module__ = 'mcp.v1alpha1.mcp_pb2'
|
||||
# @@protoc_insertion_point(class_scope:istio.mcp.v1alpha1.IncrementalMeshConfigRequest)
|
||||
))
|
||||
_sym_db.RegisterMessage(IncrementalMeshConfigRequest)
|
||||
_sym_db.RegisterMessage(IncrementalMeshConfigRequest.InitialResourceVersionsEntry)
|
||||
|
||||
IncrementalMeshConfigResponse = _reflection.GeneratedProtocolMessageType('IncrementalMeshConfigResponse', (_message.Message,), dict(
|
||||
DESCRIPTOR = _INCREMENTALMESHCONFIGRESPONSE,
|
||||
__module__ = 'mcp.v1alpha1.mcp_pb2'
|
||||
# @@protoc_insertion_point(class_scope:istio.mcp.v1alpha1.IncrementalMeshConfigResponse)
|
||||
))
|
||||
_sym_db.RegisterMessage(IncrementalMeshConfigResponse)
|
||||
|
||||
|
||||
DESCRIPTOR.has_options = True
|
||||
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('Z\031istio.io/api/mcp/v1alpha1\250\342\036\001'))
|
||||
_MESHCONFIGRESPONSE.fields_by_name['envelopes'].has_options = True
|
||||
_MESHCONFIGRESPONSE.fields_by_name['envelopes']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000'))
|
||||
_INCREMENTALMESHCONFIGREQUEST_INITIALRESOURCEVERSIONSENTRY.has_options = True
|
||||
_INCREMENTALMESHCONFIGREQUEST_INITIALRESOURCEVERSIONSENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001'))
|
||||
_INCREMENTALMESHCONFIGRESPONSE.fields_by_name['envelopes'].has_options = True
|
||||
_INCREMENTALMESHCONFIGRESPONSE.fields_by_name['envelopes']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000'))
|
||||
|
||||
_AGGREGATEDMESHCONFIGSERVICE = _descriptor.ServiceDescriptor(
|
||||
name='AggregatedMeshConfigService',
|
||||
|
|
@ -220,8 +401,8 @@ _AGGREGATEDMESHCONFIGSERVICE = _descriptor.ServiceDescriptor(
|
|||
file=DESCRIPTOR,
|
||||
index=0,
|
||||
options=None,
|
||||
serialized_start=523,
|
||||
serialized_end=666,
|
||||
serialized_start=1022,
|
||||
serialized_end=1307,
|
||||
methods=[
|
||||
_descriptor.MethodDescriptor(
|
||||
name='StreamAggregatedResources',
|
||||
|
|
@ -232,6 +413,15 @@ _AGGREGATEDMESHCONFIGSERVICE = _descriptor.ServiceDescriptor(
|
|||
output_type=_MESHCONFIGRESPONSE,
|
||||
options=None,
|
||||
),
|
||||
_descriptor.MethodDescriptor(
|
||||
name='IncrementalAggregatedResources',
|
||||
full_name='istio.mcp.v1alpha1.AggregatedMeshConfigService.IncrementalAggregatedResources',
|
||||
index=1,
|
||||
containing_service=None,
|
||||
input_type=_INCREMENTALMESHCONFIGREQUEST,
|
||||
output_type=_INCREMENTALMESHCONFIGRESPONSE,
|
||||
options=None,
|
||||
),
|
||||
])
|
||||
_sym_db.RegisterServiceDescriptor(_AGGREGATEDMESHCONFIGSERVICE)
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
|||
name='mcp/v1alpha1/metadata.proto',
|
||||
package='istio.mcp.v1alpha1',
|
||||
syntax='proto3',
|
||||
serialized_pb=_b('\n\x1bmcp/v1alpha1/metadata.proto\x12\x12istio.mcp.v1alpha1\x1a\x14gogoproto/gogo.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"I\n\x08Metadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12/\n\x0b\x63reate_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x1fZ\x19istio.io/api/mcp/v1alpha1\xa8\xe2\x1e\x01\x62\x06proto3')
|
||||
serialized_pb=_b('\n\x1bmcp/v1alpha1/metadata.proto\x12\x12istio.mcp.v1alpha1\x1a\x14gogoproto/gogo.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"Z\n\x08Metadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12/\n\x0b\x63reate_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07version\x18\x03 \x01(\tB\x1fZ\x19istio.io/api/mcp/v1alpha1\xa8\xe2\x1e\x01\x62\x06proto3')
|
||||
,
|
||||
dependencies=[gogoproto_dot_gogo__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,])
|
||||
|
||||
|
|
@ -49,6 +49,13 @@ _METADATA = _descriptor.Descriptor(
|
|||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='version', full_name='istio.mcp.v1alpha1.Metadata.version', index=2,
|
||||
number=3, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
|
|
@ -62,7 +69,7 @@ _METADATA = _descriptor.Descriptor(
|
|||
oneofs=[
|
||||
],
|
||||
serialized_start=106,
|
||||
serialized_end=179,
|
||||
serialized_end=196,
|
||||
)
|
||||
|
||||
_METADATA.fields_by_name['create_time'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
|
||||
|
|
|
|||
Loading…
Reference in New Issue