From 214c7598afb74f7f4dea49f77e45832c49382a15 Mon Sep 17 00:00:00 2001 From: Venil Noronha Date: Fri, 17 Aug 2018 12:27:45 -0700 Subject: [PATCH] Deprecate int percent in favor of double percentage (#609) * Deprecate int percent in favor of FractionalPercent This commit deprecates the integer percent field in Delay and Abort types in favor of the new FractionalPercent type which allows finer control. Signed-off-by: Venil Noronha * Remove FractionalPercent and use double for percentage Signed-off-by: Venil Noronha * Fix docs related to the percentage field Signed-off-by: Venil Noronha * Copy envoy.type.Percent proto definition * The "type" in envoy.type.Percent is renamed to "types" in istio.envoy.types.Percent to avoid a keyword conflict in Golang. * The Makefile splits the *.pb.go file generation for v2alpha1/*.proto and types/*.proto in order to avoid the "inconsistent package names" error in protoc-gen-go. Signed-off-by: Venil Noronha * Use istio.envoy.types.Percent for percentage Signed-off-by: Venil Noronha * Revert copy envoy.type.Percent and its usage Signed-off-by: Venil Noronha * Add and use Percent type in virtual_service.proto Signed-off-by: Venil Noronha --- networking/v1alpha3/destination_rule.pb.go | 1 + .../istio.networking.v1alpha3.pb.html | 77 ++- networking/v1alpha3/virtual_service.pb.go | 454 +++++++++++++----- networking/v1alpha3/virtual_service.proto | 46 +- .../v1alpha3/virtual_service_pb2.py | 77 ++- 5 files changed, 503 insertions(+), 152 deletions(-) diff --git a/networking/v1alpha3/destination_rule.pb.go b/networking/v1alpha3/destination_rule.pb.go index 695ac9bca83..31de697fd2b 100644 --- a/networking/v1alpha3/destination_rule.pb.go +++ b/networking/v1alpha3/destination_rule.pb.go @@ -40,6 +40,7 @@ CorsPolicy HTTPFaultInjection PortSelector + Percent */ package v1alpha3 diff --git a/networking/v1alpha3/istio.networking.v1alpha3.pb.html b/networking/v1alpha3/istio.networking.v1alpha3.pb.html index 7c0c4e57835..b560b0f37bc 100644 --- a/networking/v1alpha3/istio.networking.v1alpha3.pb.html +++ b/networking/v1alpha3/istio.networking.v1alpha3.pb.html @@ -6,7 +6,7 @@ generator: protoc-gen-docs aliases: - /docs/reference/config/istio.routing.v1alpha1/ -number_of_entries: 49 +number_of_entries: 50 ---

Configuration affecting traffic routing. Here are a few terms useful to define in the context of traffic routing.

@@ -1274,8 +1274,8 @@

HTTPFaultInjection

HTTPFaultInjection.Abort

Abort specification is used to prematurely abort a request with a -pre-specified error code. The following example will return an HTTP -400 error code for 10% of the requests to the “ratings” service “v1”.

+pre-specified error code. The following example will return an HTTP 400 +error code for 1 out of every 1000 requests to the “ratings” service “v1”.

apiVersion: networking.istio.io/v1alpha3
 kind: VirtualService
@@ -1291,14 +1291,15 @@ 

HTTPFaultInjection.Abort

subset: v1 fault: abort: - percent: 10 + percentage: + value: 0.001 httpStatus: 400

The httpStatus field is used to indicate the HTTP status code to -return to the caller. The optional percent field, a value between 0 -and 100, is used to only abort a certain percentage of requests. If -not specified, all requests are aborted.

+return to the caller. The optional percentage field can be used to only +abort a certain percentage of requests. If not specified, all requests are +aborted.

@@ -1309,11 +1310,13 @@

HTTPFaultInjection.Abort

- + @@ -1323,6 +1326,14 @@

HTTPFaultInjection.Abort

+ + + + + @@ -1332,7 +1343,7 @@

HTTPFaultInjection.Delay

Delay specification is used to inject latency into the request forwarding path. The following example will introduce a 5 second delay -in 10% of the requests to the “v1” version of the “reviews” +in 1 out of every 1000 requests to the “v1” version of the “reviews” service from all pods with label env: prod

apiVersion: networking.istio.io/v1alpha3
@@ -1352,14 +1363,14 @@ 

HTTPFaultInjection.Delay

subset: v1 fault: delay: - percent: 10 + percentage: + value: 0.001 fixedDelay: 5s
-

The fixedDelay field is used to indicate the amount of delay in -seconds. An optional percent field, a value between 0 and 100, can -be used to only delay a certain percentage of requests. If left -unspecified, all request will be delayed.

+

The fixedDelay field is used to indicate the amount of delay in seconds. +The optional percentage field can be used to only delay a certain +percentage of requests. If left unspecified, all request will be delayed.

percent int32 -

Percentage of requests to be aborted with the error code provided (0-100).

+

Percentage of requests to be aborted with the error code provided (0-100). +Use of integer percent value is deprecated. Use the double percentage +field instead.

REQUIRED. HTTP status code to use to abort the Http request.

+
percentagePercent +

Percentage of requests to be aborted with the error code provided.

+
@@ -1370,11 +1381,13 @@

HTTPFaultInjection.Delay

- + @@ -1385,6 +1398,14 @@

HTTPFaultInjection.Delay

REQUIRED. Add a fixed delay before forwarding the request. Format: 1h/1m/1s/1ms. MUST be >=1ms.

+ + + + + + @@ -2190,6 +2211,28 @@

OutlierDetection

Maximum % of hosts in the load balancing pool for the upstream service that can be ejected. Defaults to 10%.

+ + + +
percent int32 -

Percentage of requests on which the delay will be injected (0-100).

+

Percentage of requests on which the delay will be injected (0-100). +Use of integer percent value is deprecated. Use the double percentage +field instead.

percentagePercent +

Percentage of requests on which the delay will be injected.

+
+
+

Percent

+
+

Percent specifies a percentage in the range of [0.0, 100.0].

+ + + + + + + + + + + + + + diff --git a/networking/v1alpha3/virtual_service.pb.go b/networking/v1alpha3/virtual_service.pb.go index bdb95823607..8b1249347b8 100644 --- a/networking/v1alpha3/virtual_service.pb.go +++ b/networking/v1alpha3/virtual_service.pb.go @@ -9,6 +9,8 @@ import math "math" import google_protobuf "github.com/gogo/protobuf/types" import google_protobuf1 "github.com/gogo/protobuf/types" +import binary "encoding/binary" + import io "io" // Reference imports to suppress errors if they are not otherwise used. @@ -1447,7 +1449,7 @@ func (m *HTTPFaultInjection) GetAbort() *HTTPFaultInjection_Abort { // Delay specification is used to inject latency into the request // forwarding path. The following example will introduce a 5 second delay -// in 10% of the requests to the "v1" version of the "reviews" +// in 1 out of every 1000 requests to the "v1" version of the "reviews" // service from all pods with label env: prod // // ```yaml @@ -1468,21 +1470,25 @@ func (m *HTTPFaultInjection) GetAbort() *HTTPFaultInjection_Abort { // subset: v1 // fault: // delay: -// percent: 10 +// percentage: +// value: 0.001 // fixedDelay: 5s // ``` // -// The _fixedDelay_ field is used to indicate the amount of delay in -// seconds. An optional _percent_ field, a value between 0 and 100, can -// be used to only delay a certain percentage of requests. If left -// unspecified, all request will be delayed. +// The _fixedDelay_ field is used to indicate the amount of delay in seconds. +// The optional _percentage_ field can be used to only delay a certain +// percentage of requests. If left unspecified, all request will be delayed. type HTTPFaultInjection_Delay struct { // Percentage of requests on which the delay will be injected (0-100). + // Use of integer `percent` value is deprecated. Use the double `percentage` + // field instead. Percent int32 `protobuf:"varint,1,opt,name=percent,proto3" json:"percent,omitempty"` // Types that are valid to be assigned to HttpDelayType: // *HTTPFaultInjection_Delay_FixedDelay // *HTTPFaultInjection_Delay_ExponentialDelay HttpDelayType isHTTPFaultInjection_Delay_HttpDelayType `protobuf_oneof:"http_delay_type"` + // Percentage of requests on which the delay will be injected. + Percentage *Percent `protobuf:"bytes,5,opt,name=percentage" json:"percentage,omitempty"` } func (m *HTTPFaultInjection_Delay) Reset() { *m = HTTPFaultInjection_Delay{} } @@ -1536,6 +1542,13 @@ func (m *HTTPFaultInjection_Delay) GetExponentialDelay() *google_protobuf.Durati return nil } +func (m *HTTPFaultInjection_Delay) GetPercentage() *Percent { + if m != nil { + return m.Percentage + } + return nil +} + // XXX_OneofFuncs is for the internal use of the proto package. func (*HTTPFaultInjection_Delay) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { return _HTTPFaultInjection_Delay_OneofMarshaler, _HTTPFaultInjection_Delay_OneofUnmarshaler, _HTTPFaultInjection_Delay_OneofSizer, []interface{}{ @@ -1611,8 +1624,8 @@ func _HTTPFaultInjection_Delay_OneofSizer(msg proto.Message) (n int) { } // Abort specification is used to prematurely abort a request with a -// pre-specified error code. The following example will return an HTTP -// 400 error code for 10% of the requests to the "ratings" service "v1". +// pre-specified error code. The following example will return an HTTP 400 +// error code for 1 out of every 1000 requests to the "ratings" service "v1". // // ```yaml // apiVersion: networking.istio.io/v1alpha3 @@ -1629,22 +1642,27 @@ func _HTTPFaultInjection_Delay_OneofSizer(msg proto.Message) (n int) { // subset: v1 // fault: // abort: -// percent: 10 +// percentage: +// value: 0.001 // httpStatus: 400 // ``` // // The _httpStatus_ field is used to indicate the HTTP status code to -// return to the caller. The optional _percent_ field, a value between 0 -// and 100, is used to only abort a certain percentage of requests. If -// not specified, all requests are aborted. +// return to the caller. The optional _percentage_ field can be used to only +// abort a certain percentage of requests. If not specified, all requests are +// aborted. type HTTPFaultInjection_Abort struct { // Percentage of requests to be aborted with the error code provided (0-100). + // Use of integer `percent` value is deprecated. Use the double `percentage` + // field instead. Percent int32 `protobuf:"varint,1,opt,name=percent,proto3" json:"percent,omitempty"` // Types that are valid to be assigned to ErrorType: // *HTTPFaultInjection_Abort_HttpStatus // *HTTPFaultInjection_Abort_GrpcStatus // *HTTPFaultInjection_Abort_Http2Error ErrorType isHTTPFaultInjection_Abort_ErrorType `protobuf_oneof:"error_type"` + // Percentage of requests to be aborted with the error code provided. + Percentage *Percent `protobuf:"bytes,5,opt,name=percentage" json:"percentage,omitempty"` } func (m *HTTPFaultInjection_Abort) Reset() { *m = HTTPFaultInjection_Abort{} } @@ -1709,6 +1727,13 @@ func (m *HTTPFaultInjection_Abort) GetHttp2Error() string { return "" } +func (m *HTTPFaultInjection_Abort) GetPercentage() *Percent { + if m != nil { + return m.Percentage + } + return nil +} + // XXX_OneofFuncs is for the internal use of the proto package. func (*HTTPFaultInjection_Abort) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { return _HTTPFaultInjection_Abort_OneofMarshaler, _HTTPFaultInjection_Abort_OneofUnmarshaler, _HTTPFaultInjection_Abort_OneofSizer, []interface{}{ @@ -1905,6 +1930,23 @@ func _PortSelector_OneofSizer(msg proto.Message) (n int) { return n } +// Percent specifies a percentage in the range of [0.0, 100.0]. +type Percent struct { + Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *Percent) Reset() { *m = Percent{} } +func (m *Percent) String() string { return proto.CompactTextString(m) } +func (*Percent) ProtoMessage() {} +func (*Percent) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{16} } + +func (m *Percent) GetValue() float64 { + if m != nil { + return m.Value + } + return 0 +} + func init() { proto.RegisterType((*VirtualService)(nil), "istio.networking.v1alpha3.VirtualService") proto.RegisterType((*Destination)(nil), "istio.networking.v1alpha3.Destination") @@ -1924,6 +1966,7 @@ func init() { proto.RegisterType((*HTTPFaultInjection_Delay)(nil), "istio.networking.v1alpha3.HTTPFaultInjection.Delay") proto.RegisterType((*HTTPFaultInjection_Abort)(nil), "istio.networking.v1alpha3.HTTPFaultInjection.Abort") proto.RegisterType((*PortSelector)(nil), "istio.networking.v1alpha3.PortSelector") + proto.RegisterType((*Percent)(nil), "istio.networking.v1alpha3.Percent") } func (m *VirtualService) Marshal() (dAtA []byte, err error) { size := m.Size() @@ -2915,6 +2958,16 @@ func (m *HTTPFaultInjection_Delay) MarshalTo(dAtA []byte) (int, error) { } i += nn21 } + if m.Percentage != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintVirtualService(dAtA, i, uint64(m.Percentage.Size())) + n22, err := m.Percentage.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n22 + } return i, nil } @@ -2924,11 +2977,11 @@ func (m *HTTPFaultInjection_Delay_FixedDelay) MarshalTo(dAtA []byte) (int, error dAtA[i] = 0x12 i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.FixedDelay.Size())) - n22, err := m.FixedDelay.MarshalTo(dAtA[i:]) + n23, err := m.FixedDelay.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n22 + i += n23 } return i, nil } @@ -2938,11 +2991,11 @@ func (m *HTTPFaultInjection_Delay_ExponentialDelay) MarshalTo(dAtA []byte) (int, dAtA[i] = 0x1a i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.ExponentialDelay.Size())) - n23, err := m.ExponentialDelay.MarshalTo(dAtA[i:]) + n24, err := m.ExponentialDelay.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n23 + i += n24 } return i, nil } @@ -2967,11 +3020,21 @@ func (m *HTTPFaultInjection_Abort) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintVirtualService(dAtA, i, uint64(m.Percent)) } if m.ErrorType != nil { - nn24, err := m.ErrorType.MarshalTo(dAtA[i:]) + nn25, err := m.ErrorType.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += nn25 + } + if m.Percentage != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintVirtualService(dAtA, i, uint64(m.Percentage.Size())) + n26, err := m.Percentage.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn24 + i += n26 } return i, nil } @@ -3015,11 +3078,11 @@ func (m *PortSelector) MarshalTo(dAtA []byte) (int, error) { var l int _ = l if m.Port != nil { - nn25, err := m.Port.MarshalTo(dAtA[i:]) + nn27, err := m.Port.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn25 + i += nn27 } return i, nil } @@ -3039,6 +3102,30 @@ func (m *PortSelector_Name) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], m.Name) return i, nil } +func (m *Percent) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Percent) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Value != 0 { + dAtA[i] = 0x9 + i++ + binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Value)))) + i += 8 + } + return i, nil +} + func encodeVarintVirtualService(dAtA []byte, offset int, v uint64) int { for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) @@ -3470,6 +3557,10 @@ func (m *HTTPFaultInjection_Delay) Size() (n int) { if m.HttpDelayType != nil { n += m.HttpDelayType.Size() } + if m.Percentage != nil { + l = m.Percentage.Size() + n += 1 + l + sovVirtualService(uint64(l)) + } return n } @@ -3500,6 +3591,10 @@ func (m *HTTPFaultInjection_Abort) Size() (n int) { if m.ErrorType != nil { n += m.ErrorType.Size() } + if m.Percentage != nil { + l = m.Percentage.Size() + n += 1 + l + sovVirtualService(uint64(l)) + } return n } @@ -3545,6 +3640,14 @@ func (m *PortSelector_Name) Size() (n int) { n += 1 + l + sovVirtualService(uint64(l)) return n } +func (m *Percent) Size() (n int) { + var l int + _ = l + if m.Value != 0 { + n += 9 + } + return n +} func sovVirtualService(x uint64) (n int) { for { @@ -6700,6 +6803,39 @@ func (m *HTTPFaultInjection_Delay) Unmarshal(dAtA []byte) error { } m.HttpDelayType = &HTTPFaultInjection_Delay_ExponentialDelay{v} iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Percentage", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVirtualService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthVirtualService + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Percentage == nil { + m.Percentage = &Percent{} + } + if err := m.Percentage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipVirtualService(dAtA[iNdEx:]) @@ -6847,6 +6983,39 @@ func (m *HTTPFaultInjection_Abort) Unmarshal(dAtA []byte) error { } m.ErrorType = &HTTPFaultInjection_Abort_Http2Error{string(dAtA[iNdEx:postIndex])} iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Percentage", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVirtualService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthVirtualService + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Percentage == nil { + m.Percentage = &Percent{} + } + if err := m.Percentage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipVirtualService(dAtA[iNdEx:]) @@ -6967,6 +7136,67 @@ func (m *PortSelector) Unmarshal(dAtA []byte) error { } return nil } +func (m *Percent) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVirtualService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Percent: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Percent: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 1 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var v uint64 + if (iNdEx + 8) > l { + return io.ErrUnexpectedEOF + } + v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) + iNdEx += 8 + m.Value = float64(math.Float64frombits(v)) + default: + iNdEx = preIndex + skippy, err := skipVirtualService(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthVirtualService + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipVirtualService(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 @@ -7077,95 +7307,97 @@ func init() { } var fileDescriptorVirtualService = []byte{ - // 1433 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x98, 0x5f, 0x6f, 0x1b, 0x45, - 0x10, 0xc0, 0xeb, 0xbf, 0x89, 0xc7, 0x49, 0x9b, 0x2c, 0xa5, 0x5c, 0x0d, 0x8a, 0x52, 0x97, 0x42, - 0x50, 0xa9, 0x2d, 0x12, 0xfe, 0x44, 0xd0, 0xa6, 0xcd, 0x9f, 0x16, 0x57, 0x6a, 0x45, 0x75, 0x0e, - 0x45, 0xe2, 0x81, 0xd3, 0xf9, 0x3c, 0xb1, 0xb7, 0x3d, 0xdf, 0x1e, 0xbb, 0x7b, 0xb1, 0xfd, 0xce, - 0x27, 0x80, 0x17, 0x5e, 0x10, 0x5f, 0x04, 0x89, 0x57, 0x1e, 0xf9, 0x04, 0x08, 0xe5, 0x91, 0x4f, - 0x81, 0x76, 0xf7, 0xce, 0xbe, 0xc6, 0xad, 0xff, 0x88, 0xf2, 0xe6, 0x9d, 0x9d, 0xdf, 0xec, 0xee, - 0xec, 0xcc, 0xec, 0x9c, 0xe1, 0x83, 0x00, 0x65, 0x9f, 0xf1, 0xe7, 0x34, 0xe8, 0xd4, 0x4f, 0x3f, - 0x72, 0xfd, 0xb0, 0xeb, 0xee, 0xd4, 0x4f, 0x29, 0x97, 0x91, 0xeb, 0x3b, 0x02, 0xf9, 0x29, 0xf5, - 0xb0, 0x16, 0x72, 0x26, 0x19, 0xb9, 0x4a, 0x85, 0xa4, 0xac, 0x36, 0x06, 0x6a, 0x09, 0x50, 0xd9, - 0xe8, 0x30, 0xd6, 0xf1, 0xb1, 0xae, 0x15, 0x5b, 0xd1, 0x49, 0xbd, 0x1d, 0x71, 0x57, 0x52, 0x16, - 0x18, 0x74, 0x72, 0xbe, 0xcf, 0xdd, 0x30, 0x44, 0x2e, 0xcc, 0x7c, 0xf5, 0x9f, 0x0c, 0x5c, 0x7c, - 0x6a, 0x16, 0x6d, 0x9a, 0x35, 0xc9, 0x65, 0x28, 0x74, 0x99, 0x90, 0xc2, 0xca, 0x6c, 0xe6, 0xb6, - 0x4a, 0xb6, 0x19, 0x90, 0x0a, 0x2c, 0x77, 0x5c, 0x89, 0x7d, 0x77, 0x28, 0xac, 0xac, 0x9e, 0x18, - 0x8d, 0xc9, 0x2e, 0xe4, 0xbb, 0x52, 0x86, 0x56, 0x6e, 0x33, 0xb7, 0x55, 0xde, 0x7e, 0xb7, 0xf6, - 0xca, 0xed, 0xd6, 0x1a, 0xc7, 0xc7, 0x4f, 0x6c, 0x16, 0x49, 0xb4, 0x35, 0x41, 0x3e, 0x81, 0x9c, - 0xf4, 0x42, 0x2b, 0xaf, 0xc1, 0xeb, 0x53, 0xc0, 0xe3, 0xc3, 0x98, 0x53, 0xfa, 0x1a, 0xf3, 0x85, - 0x55, 0x98, 0x8d, 0x3d, 0x6a, 0x26, 0x98, 0x2f, 0xaa, 0xa7, 0x50, 0x3e, 0x42, 0x21, 0x69, 0xa0, - 0x3d, 0x44, 0x08, 0xe4, 0xd5, 0xd9, 0xac, 0xcc, 0x66, 0x66, 0xab, 0x64, 0xeb, 0xdf, 0xe4, 0x0a, - 0x14, 0x45, 0xd4, 0x12, 0x28, 0xad, 0xac, 0x96, 0xc6, 0x23, 0xf2, 0x05, 0xe4, 0x43, 0xc6, 0xa5, - 0x95, 0xdb, 0xcc, 0x6c, 0x95, 0xb7, 0xdf, 0x9f, 0xb2, 0xe4, 0x13, 0xc6, 0x65, 0x13, 0x7d, 0xf4, - 0x24, 0xe3, 0xb6, 0x86, 0xaa, 0x67, 0x45, 0x28, 0x8d, 0x4e, 0x4e, 0xf6, 0xa1, 0xd0, 0x73, 0xa5, - 0xd7, 0xd5, 0xfe, 0x2d, 0x6f, 0xdf, 0x9c, 0xe1, 0xae, 0xc7, 0x4a, 0xd7, 0xc6, 0xef, 0x23, 0x14, - 0xd2, 0x36, 0x24, 0x39, 0x80, 0x02, 0x57, 0xb6, 0xf4, 0x4d, 0x94, 0xb7, 0x3f, 0x9c, 0x62, 0x22, - 0x75, 0xe0, 0x6f, 0x90, 0x76, 0xba, 0xd2, 0x36, 0x28, 0x39, 0x84, 0x65, 0x8e, 0x6d, 0xca, 0xd1, - 0x9b, 0xe7, 0x54, 0x7a, 0xfb, 0xb1, 0xba, 0x3d, 0x02, 0xc9, 0x3d, 0x58, 0xe2, 0xd8, 0xe7, 0x54, - 0xa2, 0x95, 0xd7, 0x36, 0xde, 0x9b, 0x69, 0x43, 0x6b, 0xdb, 0x09, 0x46, 0x6e, 0xc2, 0x7a, 0x1f, - 0x5b, 0x82, 0x79, 0xcf, 0x51, 0x3a, 0x51, 0xd8, 0xe1, 0x6e, 0x1b, 0xad, 0xc2, 0x66, 0x66, 0x6b, - 0xd9, 0x5e, 0x1b, 0x4d, 0x7c, 0x6d, 0xe4, 0x64, 0x07, 0x96, 0x24, 0xed, 0x21, 0x8b, 0xa4, 0x55, - 0xd4, 0xcb, 0x5d, 0xad, 0x99, 0xf8, 0xae, 0x25, 0xf1, 0x5d, 0x3b, 0x8a, 0xe3, 0xdf, 0x4e, 0x34, - 0xc9, 0x9e, 0xda, 0xa3, 0xe4, 0x14, 0x85, 0xb5, 0xa4, 0xa1, 0x99, 0x01, 0x8a, 0x92, 0x0f, 0xed, - 0x04, 0x22, 0x87, 0x50, 0x38, 0x71, 0x23, 0x5f, 0x5a, 0xcb, 0x9a, 0xbe, 0x35, 0x83, 0x7e, 0xa0, - 0x74, 0x1f, 0x06, 0xcf, 0xd0, 0xd3, 0xdb, 0x30, 0x2c, 0xd9, 0x83, 0x62, 0x8f, 0x72, 0xce, 0xb8, - 0x55, 0x9a, 0xe9, 0xa7, 0xd4, 0x95, 0xd9, 0x31, 0x45, 0x1e, 0x40, 0xd9, 0x63, 0x5c, 0x38, 0x21, - 0xf3, 0xa9, 0x37, 0xb4, 0x40, 0x1b, 0xb9, 0x31, 0xc5, 0xc8, 0x21, 0xe3, 0xe2, 0x89, 0x56, 0xb6, - 0xc1, 0x1b, 0xfd, 0x26, 0xdf, 0xc1, 0x45, 0x95, 0xff, 0x41, 0xdb, 0xe9, 0xa2, 0xdb, 0x46, 0x2e, - 0xac, 0xb2, 0x0e, 0xa1, 0xcf, 0xe6, 0x49, 0xda, 0xda, 0xbe, 0x46, 0x1b, 0x86, 0xbc, 0x1f, 0x28, - 0x37, 0xad, 0xba, 0x69, 0x19, 0xf9, 0x14, 0xde, 0xe2, 0xd8, 0x63, 0xa7, 0xe8, 0x70, 0x14, 0x21, - 0x0b, 0x04, 0x8e, 0x16, 0x5a, 0xd1, 0x55, 0xe3, 0x4d, 0x33, 0x6d, 0xc7, 0xb3, 0x31, 0x57, 0xb9, - 0x07, 0x64, 0xd2, 0x38, 0x59, 0x83, 0xdc, 0x73, 0x1c, 0xc6, 0x09, 0xaa, 0x7e, 0xaa, 0xe2, 0x74, - 0xea, 0xfa, 0x11, 0xc6, 0xe9, 0x69, 0x06, 0x9f, 0x67, 0x77, 0x33, 0xd5, 0x9f, 0x32, 0xb0, 0x9c, - 0xa4, 0xbb, 0xba, 0xb3, 0x74, 0x8e, 0xdd, 0x9a, 0x5e, 0x22, 0x74, 0x8a, 0xed, 0x4b, 0xc9, 0x69, - 0x2b, 0x92, 0x28, 0x5e, 0x63, 0x96, 0x55, 0x7f, 0x54, 0xbb, 0x8a, 0x6b, 0x97, 0x32, 0x98, 0xde, - 0xd5, 0x34, 0x83, 0x8f, 0x3e, 0xfe, 0x1f, 0x37, 0xf5, 0x6b, 0x01, 0xd6, 0xce, 0x97, 0x16, 0xb2, - 0x0b, 0xb9, 0x88, 0x53, 0xed, 0xeb, 0xe9, 0xe1, 0xd9, 0x94, 0x9c, 0x06, 0x1d, 0xc3, 0x2a, 0x44, - 0xc5, 0xb6, 0xf0, 0xba, 0xd8, 0x33, 0x97, 0x32, 0x3f, 0x1c, 0x53, 0x3a, 0x37, 0x50, 0x76, 0x59, - 0x3b, 0xae, 0x43, 0x73, 0xf3, 0x86, 0x22, 0x47, 0x50, 0x72, 0x23, 0xd9, 0x65, 0x9c, 0xca, 0xe1, - 0x1c, 0x65, 0x28, 0x6d, 0x62, 0x0c, 0x12, 0x1b, 0x96, 0x92, 0x48, 0x35, 0xef, 0xca, 0xee, 0x02, - 0x85, 0xb9, 0xf6, 0x42, 0x4e, 0x24, 0x86, 0xd4, 0x0b, 0xa3, 0x5f, 0x0d, 0x55, 0xac, 0x56, 0xcd, - 0x63, 0x40, 0x5a, 0xb0, 0x2a, 0x58, 0xc4, 0x3d, 0x74, 0x7c, 0xb7, 0x85, 0xbe, 0x2a, 0x4a, 0x6a, - 0xb5, 0x3b, 0x8b, 0xac, 0xd6, 0xd4, 0x06, 0x1e, 0x69, 0xde, 0x2c, 0xb9, 0x22, 0x52, 0xa2, 0x17, - 0x1e, 0xeb, 0xe5, 0x17, 0x1f, 0xeb, 0x4a, 0x0b, 0x56, 0x66, 0xe4, 0xd8, 0xed, 0x74, 0x8e, 0xcd, - 0xef, 0xcb, 0x71, 0x2e, 0x56, 0xee, 0xc2, 0xfa, 0xc4, 0x16, 0x17, 0x4a, 0xe6, 0x08, 0xd6, 0x27, - 0xa2, 0x97, 0x34, 0xa0, 0xdc, 0x1e, 0x0b, 0xe7, 0x88, 0xd4, 0x74, 0x21, 0x4d, 0xa3, 0xea, 0x95, - 0xef, 0x6b, 0x9b, 0x7a, 0xe5, 0x82, 0x1d, 0x8f, 0xaa, 0xbf, 0x67, 0x61, 0x7d, 0x22, 0xf3, 0x48, - 0x1d, 0xde, 0x48, 0xc1, 0x8e, 0x88, 0x5a, 0x01, 0x8e, 0xda, 0x23, 0x92, 0x9a, 0x6a, 0x9a, 0x99, - 0xd1, 0xb5, 0x67, 0x53, 0xd7, 0x7e, 0x7d, 0x74, 0xed, 0x86, 0xd7, 0xb1, 0x5e, 0x4a, 0xee, 0xcd, - 0x90, 0xc4, 0x3b, 0x1f, 0x1b, 0xa6, 0x31, 0xda, 0x5b, 0xa4, 0x50, 0x2c, 0x14, 0x1c, 0x85, 0x73, - 0xc1, 0xf1, 0x9f, 0x2f, 0xee, 0xaf, 0x2c, 0x90, 0xc9, 0x8a, 0x4a, 0xde, 0x86, 0x92, 0x08, 0xa8, - 0x93, 0xee, 0x2b, 0x97, 0x45, 0x40, 0x1b, 0xba, 0xb5, 0x7c, 0x85, 0x7f, 0xb3, 0x33, 0xfd, 0x9b, - 0x9b, 0xe6, 0xdf, 0xfc, 0x4b, 0xfc, 0xdb, 0x3e, 0xef, 0x5f, 0x93, 0xe9, 0x77, 0x17, 0x7a, 0x1e, - 0x16, 0x72, 0x70, 0xf1, 0x75, 0x3b, 0x78, 0x0f, 0x56, 0xd2, 0xbd, 0x98, 0x62, 0x93, 0xb2, 0x5d, - 0x32, 0xe5, 0xf8, 0x9d, 0x74, 0x39, 0x34, 0xfc, 0x58, 0x50, 0xbd, 0x03, 0xe5, 0x54, 0x1f, 0xb6, - 0x30, 0x8e, 0x50, 0x4e, 0xe5, 0x3c, 0xb9, 0x02, 0x05, 0x1c, 0xb8, 0x5e, 0xdc, 0x43, 0x37, 0x2e, - 0xd8, 0x66, 0x48, 0x2c, 0x28, 0x86, 0x1c, 0x4f, 0xe8, 0xc0, 0x58, 0x68, 0x5c, 0xb0, 0xe3, 0xb1, - 0x22, 0x38, 0x76, 0x70, 0x60, 0xe2, 0x5f, 0x11, 0x7a, 0x78, 0xb0, 0x02, 0xa0, 0x1f, 0x38, 0x47, - 0x0e, 0x43, 0xac, 0x3e, 0x8b, 0x1b, 0x66, 0xd5, 0x89, 0x29, 0x7f, 0xba, 0x52, 0x62, 0x2f, 0xd4, - 0xb1, 0xa3, 0xf2, 0x75, 0x34, 0x26, 0xfb, 0x70, 0x29, 0x44, 0xee, 0x48, 0x3e, 0x74, 0x92, 0xce, - 0x30, 0x3b, 0xab, 0x33, 0x5c, 0x0d, 0x91, 0x1f, 0xf3, 0xe1, 0xb1, 0xd1, 0xaf, 0xfe, 0x92, 0x05, - 0x18, 0x77, 0x4b, 0xe4, 0x1a, 0xac, 0xb8, 0xbe, 0xcf, 0xfa, 0x0e, 0xe3, 0xb4, 0x43, 0x83, 0x38, - 0x5a, 0xcb, 0x5a, 0xf6, 0x95, 0x16, 0xa9, 0x58, 0x33, 0x2a, 0xe6, 0x01, 0x4a, 0x42, 0xd5, 0x70, - 0x8f, 0x8d, 0x6c, 0xac, 0x94, 0xbc, 0x2a, 0xb9, 0x94, 0x52, 0xd2, 0x2e, 0xdd, 0x80, 0x8b, 0x38, - 0x08, 0x59, 0xaa, 0x4b, 0xca, 0x6b, 0xad, 0x55, 0x23, 0x4d, 0xd4, 0xb6, 0x61, 0xa9, 0xe7, 0x0e, - 0x1c, 0xb7, 0x63, 0x5a, 0xe3, 0xa9, 0xa7, 0x2b, 0xf6, 0xdc, 0xc1, 0x7e, 0x07, 0xc9, 0x97, 0xb0, - 0x6e, 0xd6, 0xf7, 0x38, 0xb6, 0x31, 0x90, 0xd4, 0xf5, 0x45, 0xdc, 0x35, 0x57, 0x26, 0xe8, 0x03, - 0xc6, 0xfc, 0xa7, 0x2a, 0xc6, 0xec, 0x35, 0x0d, 0x1d, 0x8e, 0x99, 0xea, 0x0f, 0x79, 0x20, 0x93, - 0x8d, 0x2d, 0x79, 0x08, 0x85, 0x36, 0xfa, 0xee, 0x30, 0xae, 0xc3, 0x3b, 0x0b, 0xb5, 0xc5, 0xb5, - 0x23, 0x85, 0xda, 0xc6, 0x82, 0x32, 0xe5, 0xb6, 0x92, 0x82, 0xb9, 0xb0, 0xa9, 0x7d, 0x85, 0xda, - 0xc6, 0x42, 0xe5, 0xb7, 0x0c, 0x14, 0xb4, 0x6d, 0x62, 0xc1, 0x52, 0x88, 0xdc, 0xc3, 0x40, 0xc6, - 0x41, 0x93, 0x0c, 0xc9, 0x6d, 0x28, 0x9f, 0xd0, 0x01, 0xb6, 0x1d, 0xb3, 0xff, 0x59, 0xf1, 0xd2, - 0xb8, 0x60, 0x83, 0xd6, 0x37, 0x76, 0x1b, 0xb0, 0xae, 0x2e, 0x27, 0x30, 0xee, 0x89, 0x6d, 0xe4, - 0x66, 0xdb, 0x58, 0x4b, 0x51, 0xda, 0xd2, 0xc1, 0x3a, 0x5c, 0x52, 0x1f, 0xc1, 0xc6, 0x84, 0x8e, - 0xfb, 0xca, 0xcf, 0x19, 0x28, 0xe8, 0xf3, 0x4c, 0xd9, 0xfe, 0x35, 0x28, 0x6b, 0x4c, 0x48, 0x57, - 0x46, 0xc2, 0xbc, 0x60, 0x6a, 0x8f, 0x4a, 0xd8, 0xd4, 0x32, 0xa5, 0xd2, 0xe1, 0xa1, 0x97, 0xa8, - 0x24, 0xa9, 0x06, 0x4a, 0x38, 0x56, 0x51, 0xc0, 0xb6, 0x83, 0xfa, 0xab, 0x24, 0x9f, 0xa8, 0x68, - 0xe1, 0x7d, 0x25, 0x53, 0x29, 0xa9, 0x27, 0x4d, 0x4a, 0x3e, 0x80, 0x95, 0xf4, 0xa7, 0xad, 0x4a, - 0xf1, 0x20, 0xea, 0xb5, 0x90, 0xeb, 0xfd, 0xad, 0xaa, 0x14, 0x37, 0x63, 0x72, 0x19, 0xf2, 0x81, - 0x1b, 0x77, 0x83, 0xca, 0xa6, 0x1e, 0x1d, 0x14, 0x4d, 0xd1, 0x3e, 0xa8, 0xfd, 0x71, 0xb6, 0x91, - 0xf9, 0xf3, 0x6c, 0x23, 0xf3, 0xf7, 0xd9, 0x46, 0xe6, 0xdb, 0x4d, 0x73, 0xd5, 0x94, 0xd5, 0xdd, - 0x90, 0xd6, 0x5f, 0xf2, 0x97, 0x48, 0xab, 0xa8, 0x9d, 0xb9, 0xf3, 0x6f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xe1, 0xc6, 0x26, 0x27, 0x30, 0x11, 0x00, 0x00, + // 1471 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x98, 0xcf, 0x6e, 0xdb, 0x46, + 0x13, 0xc0, 0x43, 0x49, 0x94, 0xad, 0x91, 0x9c, 0xd8, 0xfb, 0xe5, 0xcb, 0xc7, 0xe8, 0x0b, 0x5c, + 0x47, 0x69, 0x5a, 0x17, 0x69, 0x64, 0xd4, 0xee, 0x1f, 0xa3, 0x4d, 0x9c, 0x58, 0x76, 0x52, 0x05, + 0x48, 0xd0, 0x80, 0x76, 0x53, 0xa0, 0x87, 0x12, 0x14, 0x35, 0x96, 0x98, 0x50, 0x5c, 0x76, 0x77, + 0x69, 0x49, 0xf7, 0x3e, 0x41, 0xdb, 0x6b, 0xd1, 0x47, 0xe9, 0xb5, 0xc7, 0x3e, 0x41, 0x11, 0xf8, + 0xd8, 0xa7, 0x28, 0x76, 0x97, 0x94, 0x18, 0x2b, 0xd1, 0x1f, 0x34, 0xbd, 0x69, 0x67, 0xe7, 0x37, + 0xbb, 0x3b, 0x3b, 0x33, 0x3b, 0x14, 0x7c, 0x10, 0xa2, 0xe8, 0x53, 0xf6, 0xc2, 0x0f, 0x3b, 0x5b, + 0xa7, 0x1f, 0xb9, 0x41, 0xd4, 0x75, 0x77, 0xb6, 0x4e, 0x7d, 0x26, 0x62, 0x37, 0x70, 0x38, 0xb2, + 0x53, 0xdf, 0xc3, 0x7a, 0xc4, 0xa8, 0xa0, 0xe4, 0xaa, 0xcf, 0x85, 0x4f, 0xeb, 0x63, 0xa0, 0x9e, + 0x02, 0xd5, 0xf5, 0x0e, 0xa5, 0x9d, 0x00, 0xb7, 0x94, 0x62, 0x2b, 0x3e, 0xd9, 0x6a, 0xc7, 0xcc, + 0x15, 0x3e, 0x0d, 0x35, 0x3a, 0x39, 0xdf, 0x67, 0x6e, 0x14, 0x21, 0xe3, 0x7a, 0xbe, 0xf6, 0x97, + 0x01, 0x17, 0x9f, 0xe9, 0x45, 0x8f, 0xf4, 0x9a, 0xe4, 0x32, 0x98, 0x5d, 0xca, 0x05, 0xb7, 0x8c, + 0x8d, 0xfc, 0x66, 0xc9, 0xd6, 0x03, 0x52, 0x85, 0xe5, 0x8e, 0x2b, 0xb0, 0xef, 0x0e, 0xb9, 0x95, + 0x53, 0x13, 0xa3, 0x31, 0xd9, 0x85, 0x42, 0x57, 0x88, 0xc8, 0xca, 0x6f, 0xe4, 0x37, 0xcb, 0xdb, + 0xef, 0xd6, 0xdf, 0xb8, 0xdd, 0x7a, 0xf3, 0xf8, 0xf8, 0xa9, 0x4d, 0x63, 0x81, 0xb6, 0x22, 0xc8, + 0x27, 0x90, 0x17, 0x5e, 0x64, 0x15, 0x14, 0x78, 0x63, 0x0a, 0x78, 0x7c, 0x90, 0x70, 0x52, 0x5f, + 0x61, 0x01, 0xb7, 0xcc, 0xd9, 0xd8, 0xe3, 0xa3, 0x14, 0x0b, 0x78, 0xed, 0x14, 0xca, 0x87, 0xc8, + 0x85, 0x1f, 0x2a, 0x0f, 0x11, 0x02, 0x05, 0x79, 0x36, 0xcb, 0xd8, 0x30, 0x36, 0x4b, 0xb6, 0xfa, + 0x4d, 0xae, 0x40, 0x91, 0xc7, 0x2d, 0x8e, 0xc2, 0xca, 0x29, 0x69, 0x32, 0x22, 0x5f, 0x40, 0x21, + 0xa2, 0x4c, 0x58, 0xf9, 0x0d, 0x63, 0xb3, 0xbc, 0xfd, 0xfe, 0x94, 0x25, 0x9f, 0x52, 0x26, 0x8e, + 0x30, 0x40, 0x4f, 0x50, 0x66, 0x2b, 0xa8, 0x76, 0x56, 0x84, 0xd2, 0xe8, 0xe4, 0x64, 0x1f, 0xcc, + 0x9e, 0x2b, 0xbc, 0xae, 0xf2, 0x6f, 0x79, 0xfb, 0xd6, 0x0c, 0x77, 0x3d, 0x91, 0xba, 0x36, 0x7e, + 0x1f, 0x23, 0x17, 0xb6, 0x26, 0x49, 0x03, 0x4c, 0x26, 0x6d, 0xa9, 0x9b, 0x28, 0x6f, 0x7f, 0x38, + 0xc5, 0x44, 0xe6, 0xc0, 0xdf, 0xa0, 0xdf, 0xe9, 0x0a, 0x5b, 0xa3, 0xe4, 0x00, 0x96, 0x19, 0xb6, + 0x7d, 0x86, 0xde, 0x3c, 0xa7, 0x52, 0xdb, 0x4f, 0xd4, 0xed, 0x11, 0x48, 0xee, 0xc3, 0x12, 0xc3, + 0x3e, 0xf3, 0x05, 0x5a, 0x05, 0x65, 0xe3, 0xbd, 0x99, 0x36, 0x94, 0xb6, 0x9d, 0x62, 0xe4, 0x16, + 0xac, 0xf5, 0xb1, 0xc5, 0xa9, 0xf7, 0x02, 0x85, 0x13, 0x47, 0x1d, 0xe6, 0xb6, 0xd1, 0x32, 0x37, + 0x8c, 0xcd, 0x65, 0x7b, 0x75, 0x34, 0xf1, 0xb5, 0x96, 0x93, 0x1d, 0x58, 0x12, 0x7e, 0x0f, 0x69, + 0x2c, 0xac, 0xa2, 0x5a, 0xee, 0x6a, 0x5d, 0xc7, 0x77, 0x3d, 0x8d, 0xef, 0xfa, 0x61, 0x12, 0xff, + 0x76, 0xaa, 0x49, 0xf6, 0xe4, 0x1e, 0x05, 0xf3, 0x91, 0x5b, 0x4b, 0x0a, 0x9a, 0x19, 0xa0, 0x28, + 0xd8, 0xd0, 0x4e, 0x21, 0x72, 0x00, 0xe6, 0x89, 0x1b, 0x07, 0xc2, 0x5a, 0x56, 0xf4, 0xed, 0x19, + 0xf4, 0x43, 0xa9, 0xfb, 0x28, 0x7c, 0x8e, 0x9e, 0xda, 0x86, 0x66, 0xc9, 0x1e, 0x14, 0x7b, 0x3e, + 0x63, 0x94, 0x59, 0xa5, 0x99, 0x7e, 0xca, 0x5c, 0x99, 0x9d, 0x50, 0xe4, 0x21, 0x94, 0x3d, 0xca, + 0xb8, 0x13, 0xd1, 0xc0, 0xf7, 0x86, 0x16, 0x28, 0x23, 0x37, 0xa7, 0x18, 0x39, 0xa0, 0x8c, 0x3f, + 0x55, 0xca, 0x36, 0x78, 0xa3, 0xdf, 0xe4, 0x3b, 0xb8, 0x28, 0xf3, 0x3f, 0x6c, 0x3b, 0x5d, 0x74, + 0xdb, 0xc8, 0xb8, 0x55, 0x56, 0x21, 0xf4, 0xd9, 0x3c, 0x49, 0x5b, 0xdf, 0x57, 0x68, 0x53, 0x93, + 0x0f, 0x42, 0xe9, 0xa6, 0x15, 0x37, 0x2b, 0x23, 0x9f, 0xc2, 0xff, 0x18, 0xf6, 0xe8, 0x29, 0x3a, + 0x0c, 0x79, 0x44, 0x43, 0x8e, 0xa3, 0x85, 0x2a, 0xaa, 0x6a, 0xfc, 0x57, 0x4f, 0xdb, 0xc9, 0x6c, + 0xc2, 0x55, 0xef, 0x03, 0x99, 0x34, 0x4e, 0x56, 0x21, 0xff, 0x02, 0x87, 0x49, 0x82, 0xca, 0x9f, + 0xb2, 0x38, 0x9d, 0xba, 0x41, 0x8c, 0x49, 0x7a, 0xea, 0xc1, 0xe7, 0xb9, 0x5d, 0xa3, 0xf6, 0x93, + 0x01, 0xcb, 0x69, 0xba, 0xcb, 0x3b, 0xcb, 0xe6, 0xd8, 0xed, 0xe9, 0x25, 0x42, 0xa5, 0xd8, 0xbe, + 0x10, 0xcc, 0x6f, 0xc5, 0x02, 0xf9, 0x5b, 0xcc, 0xb2, 0xda, 0x8f, 0x72, 0x57, 0x49, 0xed, 0x92, + 0x06, 0xb3, 0xbb, 0x9a, 0x66, 0xf0, 0xf1, 0xc7, 0xff, 0xe2, 0xa6, 0x7e, 0x35, 0x61, 0xf5, 0x7c, + 0x69, 0x21, 0xbb, 0x90, 0x8f, 0x99, 0xaf, 0x7c, 0x3d, 0x3d, 0x3c, 0x8f, 0x04, 0xf3, 0xc3, 0x8e, + 0x66, 0x25, 0x22, 0x63, 0x9b, 0x7b, 0x5d, 0xec, 0xe9, 0x4b, 0x99, 0x1f, 0x4e, 0x28, 0x95, 0x1b, + 0x28, 0xba, 0xb4, 0x9d, 0xd4, 0xa1, 0xb9, 0x79, 0x4d, 0x91, 0x43, 0x28, 0xb9, 0xb1, 0xe8, 0x52, + 0xe6, 0x8b, 0xe1, 0x1c, 0x65, 0x28, 0x6b, 0x62, 0x0c, 0x12, 0x1b, 0x96, 0xd2, 0x48, 0xd5, 0xef, + 0xca, 0xee, 0x02, 0x85, 0xb9, 0xfe, 0x4a, 0x4e, 0xa4, 0x86, 0xe4, 0x0b, 0xa3, 0x5e, 0x0d, 0x59, + 0xac, 0x56, 0xf4, 0x63, 0x40, 0x5a, 0xb0, 0xc2, 0x69, 0xcc, 0x3c, 0x74, 0x02, 0xb7, 0x85, 0x81, + 0x2c, 0x4a, 0x72, 0xb5, 0xbb, 0x8b, 0xac, 0x76, 0xa4, 0x0c, 0x3c, 0x56, 0xbc, 0x5e, 0xb2, 0xc2, + 0x33, 0xa2, 0x57, 0x1e, 0xeb, 0xe5, 0x57, 0x1f, 0xeb, 0x6a, 0x0b, 0x2a, 0x33, 0x72, 0xec, 0x4e, + 0x36, 0xc7, 0xe6, 0xf7, 0xe5, 0x38, 0x17, 0xab, 0xf7, 0x60, 0x6d, 0x62, 0x8b, 0x0b, 0x25, 0x73, + 0x0c, 0x6b, 0x13, 0xd1, 0x4b, 0x9a, 0x50, 0x6e, 0x8f, 0x85, 0x73, 0x44, 0x6a, 0xb6, 0x90, 0x66, + 0x51, 0xf9, 0xca, 0xf7, 0x95, 0x4d, 0xb5, 0xb2, 0x69, 0x27, 0xa3, 0xda, 0x6f, 0x39, 0x58, 0x9b, + 0xc8, 0x3c, 0xb2, 0x05, 0xff, 0xc9, 0xc0, 0x0e, 0x8f, 0x5b, 0x21, 0x8e, 0xda, 0x23, 0x92, 0x99, + 0x3a, 0xd2, 0x33, 0xa3, 0x6b, 0xcf, 0x65, 0xae, 0xfd, 0xc6, 0xe8, 0xda, 0x35, 0xaf, 0x62, 0xbd, + 0x94, 0xde, 0x9b, 0x26, 0x89, 0x77, 0x3e, 0x36, 0x74, 0x63, 0xb4, 0xb7, 0x48, 0xa1, 0x58, 0x28, + 0x38, 0xcc, 0x73, 0xc1, 0xf1, 0x8f, 0x2f, 0xee, 0xcf, 0x1c, 0x90, 0xc9, 0x8a, 0x4a, 0xfe, 0x0f, + 0x25, 0x1e, 0xfa, 0x4e, 0xb6, 0xaf, 0x5c, 0xe6, 0xa1, 0xdf, 0x54, 0xad, 0xe5, 0x1b, 0xfc, 0x9b, + 0x9b, 0xe9, 0xdf, 0xfc, 0x34, 0xff, 0x16, 0x5e, 0xe3, 0xdf, 0xf6, 0x79, 0xff, 0xea, 0x4c, 0xbf, + 0xb7, 0xd0, 0xf3, 0xb0, 0x90, 0x83, 0x8b, 0x6f, 0xdb, 0xc1, 0x7b, 0x50, 0xc9, 0xf6, 0x62, 0x92, + 0x4d, 0xcb, 0x76, 0x49, 0x97, 0xe3, 0x6b, 0xd9, 0x72, 0xa8, 0xf9, 0xb1, 0xa0, 0x76, 0x17, 0xca, + 0x99, 0x3e, 0x6c, 0x61, 0x1c, 0xa1, 0x9c, 0xc9, 0x79, 0x72, 0x05, 0x4c, 0x1c, 0xb8, 0x5e, 0xd2, + 0x43, 0x37, 0x2f, 0xd8, 0x7a, 0x48, 0x2c, 0x28, 0x46, 0x0c, 0x4f, 0xfc, 0x81, 0xb6, 0xd0, 0xbc, + 0x60, 0x27, 0x63, 0x49, 0x30, 0xec, 0xe0, 0x40, 0xc7, 0xbf, 0x24, 0xd4, 0xb0, 0x51, 0x01, 0x50, + 0x0f, 0x9c, 0x23, 0x86, 0x11, 0xd6, 0x9e, 0x27, 0x0d, 0xb3, 0xec, 0xc4, 0xa4, 0x3f, 0x5d, 0x21, + 0xb0, 0x17, 0xa9, 0xd8, 0x91, 0xf9, 0x3a, 0x1a, 0x93, 0x7d, 0xb8, 0x14, 0x21, 0x73, 0x04, 0x1b, + 0x3a, 0x69, 0x67, 0x98, 0x9b, 0xd5, 0x19, 0xae, 0x44, 0xc8, 0x8e, 0xd9, 0xf0, 0x58, 0xeb, 0xd7, + 0x7e, 0xc9, 0x01, 0x8c, 0xbb, 0x25, 0x72, 0x1d, 0x2a, 0x6e, 0x10, 0xd0, 0xbe, 0x43, 0x99, 0xdf, + 0xf1, 0xc3, 0x24, 0x5a, 0xcb, 0x4a, 0xf6, 0x95, 0x12, 0xc9, 0x58, 0xd3, 0x2a, 0xfa, 0x01, 0x4a, + 0x43, 0x55, 0x73, 0x4f, 0xb4, 0x6c, 0xac, 0x94, 0xbe, 0x2a, 0xf9, 0x8c, 0x52, 0xda, 0x2e, 0xdd, + 0x84, 0x8b, 0x38, 0x88, 0x68, 0xa6, 0x4b, 0x2a, 0x28, 0xad, 0x15, 0x2d, 0x4d, 0xd5, 0xb6, 0x61, + 0xa9, 0xe7, 0x0e, 0x1c, 0xb7, 0xa3, 0x5b, 0xe3, 0xa9, 0xa7, 0x2b, 0xf6, 0xdc, 0xc1, 0x7e, 0x07, + 0xc9, 0x97, 0xb0, 0xa6, 0xd7, 0xf7, 0x18, 0xb6, 0x31, 0x14, 0xbe, 0x1b, 0xf0, 0xa4, 0x6b, 0xae, + 0x4e, 0xd0, 0x0d, 0x4a, 0x83, 0x67, 0x32, 0xc6, 0xec, 0x55, 0x05, 0x1d, 0x8c, 0x99, 0xda, 0xcf, + 0x26, 0x90, 0xc9, 0xc6, 0x96, 0x3c, 0x02, 0xb3, 0x8d, 0x81, 0x3b, 0x4c, 0xea, 0xf0, 0xce, 0x42, + 0x6d, 0x71, 0xfd, 0x50, 0xa2, 0xb6, 0xb6, 0x20, 0x4d, 0xb9, 0xad, 0xb4, 0x60, 0x2e, 0x6c, 0x6a, + 0x5f, 0xa2, 0xb6, 0xb6, 0x50, 0xfd, 0x21, 0x07, 0xa6, 0xb2, 0x4d, 0xae, 0xc1, 0x52, 0x84, 0xcc, + 0xc3, 0x50, 0x07, 0xa7, 0xd9, 0xc8, 0x59, 0x86, 0x9d, 0x8a, 0xc8, 0x1d, 0x28, 0x9f, 0xf8, 0x03, + 0x6c, 0x3b, 0xfa, 0x0c, 0xb3, 0x62, 0xa6, 0x79, 0xc1, 0x06, 0xa5, 0xaf, 0x6d, 0x37, 0x61, 0x4d, + 0x5e, 0x50, 0xa8, 0x5d, 0x94, 0xd8, 0xc8, 0xcf, 0xb6, 0xb1, 0x9a, 0xa1, 0xb4, 0xa5, 0x06, 0x40, + 0xb2, 0xa5, 0xf1, 0xe5, 0xd6, 0xa6, 0x7d, 0x5d, 0x6a, 0x65, 0x3b, 0x43, 0x35, 0xd6, 0xe0, 0x92, + 0xfc, 0x98, 0xd6, 0xdb, 0x50, 0xf9, 0x53, 0x7d, 0x69, 0x80, 0xa9, 0xfc, 0x32, 0xc3, 0x0d, 0xd7, + 0xa1, 0xac, 0x50, 0x2e, 0x5c, 0x11, 0x73, 0xfd, 0x1a, 0xca, 0xb3, 0x4a, 0xe1, 0x91, 0x92, 0x49, + 0x95, 0x0e, 0x8b, 0xbc, 0x54, 0x25, 0x4d, 0x5b, 0x90, 0xc2, 0xb1, 0x8a, 0x04, 0xb6, 0x1d, 0x54, + 0x5f, 0x38, 0x85, 0x54, 0x45, 0x09, 0x1f, 0xa8, 0xef, 0x97, 0xb7, 0x71, 0xce, 0x0a, 0x80, 0x5a, + 0x40, 0x97, 0x88, 0x87, 0x50, 0xc9, 0x7e, 0x6a, 0xcb, 0x92, 0x13, 0xc6, 0xbd, 0x16, 0x32, 0x75, + 0xce, 0x15, 0x59, 0x72, 0xf4, 0x98, 0x5c, 0x86, 0x42, 0xe8, 0x26, 0xdd, 0xa9, 0xdc, 0x97, 0x1a, + 0x35, 0x8a, 0xfa, 0x11, 0xa9, 0xbd, 0x03, 0x4b, 0xc9, 0x62, 0xe3, 0xaa, 0x2b, 0x2d, 0x18, 0x49, + 0xd5, 0x6d, 0xd4, 0x7f, 0x3f, 0x5b, 0x37, 0xfe, 0x38, 0x5b, 0x37, 0x5e, 0x9e, 0xad, 0x1b, 0xdf, + 0x6e, 0xe8, 0x3d, 0xfb, 0x74, 0xcb, 0x8d, 0xfc, 0xad, 0xd7, 0xfc, 0x87, 0xd3, 0x2a, 0xaa, 0x9b, + 0xdf, 0xf9, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x7d, 0xc6, 0xf2, 0x43, 0xe1, 0x11, 0x00, 0x00, } diff --git a/networking/v1alpha3/virtual_service.proto b/networking/v1alpha3/virtual_service.proto index 59ef3dbabfb..a33b94f0eba 100644 --- a/networking/v1alpha3/virtual_service.proto +++ b/networking/v1alpha3/virtual_service.proto @@ -1,4 +1,4 @@ -// Copyright 2017 Istio Authors +// Copyright 2017-2018 Istio Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -917,7 +917,7 @@ message HTTPFaultInjection { // Delay specification is used to inject latency into the request // forwarding path. The following example will introduce a 5 second delay - // in 10% of the requests to the "v1" version of the "reviews" + // in 1 out of every 1000 requests to the "v1" version of the "reviews" // service from all pods with label env: prod // // ```yaml @@ -938,17 +938,19 @@ message HTTPFaultInjection { // subset: v1 // fault: // delay: - // percent: 10 + // percentage: + // value: 0.001 // fixedDelay: 5s // ``` // - // The _fixedDelay_ field is used to indicate the amount of delay in - // seconds. An optional _percent_ field, a value between 0 and 100, can - // be used to only delay a certain percentage of requests. If left - // unspecified, all request will be delayed. + // The _fixedDelay_ field is used to indicate the amount of delay in seconds. + // The optional _percentage_ field can be used to only delay a certain + // percentage of requests. If left unspecified, all request will be delayed. message Delay { // Percentage of requests on which the delay will be injected (0-100). - int32 percent = 1; + // Use of integer `percent` value is deprecated. Use the double `percentage` + // field instead. + int32 percent = 1 [deprecated=true]; oneof http_delay_type { // REQUIRED. Add a fixed delay before forwarding the request. Format: @@ -958,11 +960,14 @@ message HTTPFaultInjection { // $hide_from_docs google.protobuf.Duration exponential_delay = 3 ; } + + // Percentage of requests on which the delay will be injected. + Percent percentage = 5; } // Abort specification is used to prematurely abort a request with a - // pre-specified error code. The following example will return an HTTP - // 400 error code for 10% of the requests to the "ratings" service "v1". + // pre-specified error code. The following example will return an HTTP 400 + // error code for 1 out of every 1000 requests to the "ratings" service "v1". // // ```yaml // apiVersion: networking.istio.io/v1alpha3 @@ -979,17 +984,20 @@ message HTTPFaultInjection { // subset: v1 // fault: // abort: - // percent: 10 + // percentage: + // value: 0.001 // httpStatus: 400 // ``` // // The _httpStatus_ field is used to indicate the HTTP status code to - // return to the caller. The optional _percent_ field, a value between 0 - // and 100, is used to only abort a certain percentage of requests. If - // not specified, all requests are aborted. + // return to the caller. The optional _percentage_ field can be used to only + // abort a certain percentage of requests. If not specified, all requests are + // aborted. message Abort { // Percentage of requests to be aborted with the error code provided (0-100). - int32 percent = 1; + // Use of integer `percent` value is deprecated. Use the double `percentage` + // field instead. + int32 percent = 1 [deprecated=true]; oneof error_type { // REQUIRED. HTTP status code to use to abort the Http request. @@ -1001,6 +1009,9 @@ message HTTPFaultInjection { // $hide_from_docs string http2_error = 4; } + + // Percentage of requests to be aborted with the error code provided. + Percent percentage = 5; } } @@ -1014,3 +1025,8 @@ message PortSelector { string name = 2; } } + +// Percent specifies a percentage in the range of [0.0, 100.0]. +message Percent { + double value = 1; +} diff --git a/python/istio_api/networking/v1alpha3/virtual_service_pb2.py b/python/istio_api/networking/v1alpha3/virtual_service_pb2.py index a89e0ba2717..fb46ea269e4 100644 --- a/python/istio_api/networking/v1alpha3/virtual_service_pb2.py +++ b/python/istio_api/networking/v1alpha3/virtual_service_pb2.py @@ -21,7 +21,7 @@ name='networking/v1alpha3/virtual_service.proto', package='istio.networking.v1alpha3', syntax='proto3', - serialized_pb=_b('\n)networking/v1alpha3/virtual_service.proto\x12\x19istio.networking.v1alpha3\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\xc9\x01\n\x0eVirtualService\x12\r\n\x05hosts\x18\x01 \x03(\t\x12\x10\n\x08gateways\x18\x02 \x03(\t\x12\x32\n\x04http\x18\x03 \x03(\x0b\x32$.istio.networking.v1alpha3.HTTPRoute\x12\x30\n\x03tls\x18\x05 \x03(\x0b\x32#.istio.networking.v1alpha3.TLSRoute\x12\x30\n\x03tcp\x18\x04 \x03(\x0b\x32#.istio.networking.v1alpha3.TCPRoute\"b\n\x0b\x44\x65stination\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0e\n\x06subset\x18\x02 \x01(\t\x12\x35\n\x04port\x18\x03 \x01(\x0b\x32\'.istio.networking.v1alpha3.PortSelector\"\xd0\x05\n\tHTTPRoute\x12:\n\x05match\x18\x01 \x03(\x0b\x32+.istio.networking.v1alpha3.HTTPMatchRequest\x12;\n\x05route\x18\x02 \x03(\x0b\x32,.istio.networking.v1alpha3.DestinationWeight\x12\x39\n\x08redirect\x18\x03 \x01(\x0b\x32\'.istio.networking.v1alpha3.HTTPRedirect\x12\x37\n\x07rewrite\x18\x04 \x01(\x0b\x32&.istio.networking.v1alpha3.HTTPRewrite\x12\x19\n\x11websocket_upgrade\x18\x05 \x01(\x08\x12*\n\x07timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x35\n\x07retries\x18\x07 \x01(\x0b\x32$.istio.networking.v1alpha3.HTTPRetry\x12<\n\x05\x66\x61ult\x18\x08 \x01(\x0b\x32-.istio.networking.v1alpha3.HTTPFaultInjection\x12\x36\n\x06mirror\x18\t \x01(\x0b\x32&.istio.networking.v1alpha3.Destination\x12:\n\x0b\x63ors_policy\x18\n \x01(\x0b\x32%.istio.networking.v1alpha3.CorsPolicy\x12O\n\x0e\x61ppend_headers\x18\x0b \x03(\x0b\x32\x37.istio.networking.v1alpha3.HTTPRoute.AppendHeadersEntry\x12\x1f\n\x17remove_response_headers\x18\x0c \x03(\t\x1a\x34\n\x12\x41ppendHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x85\x01\n\x08TLSRoute\x12<\n\x05match\x18\x01 \x03(\x0b\x32-.istio.networking.v1alpha3.TLSMatchAttributes\x12;\n\x05route\x18\x02 \x03(\x0b\x32,.istio.networking.v1alpha3.DestinationWeight\"\x84\x01\n\x08TCPRoute\x12;\n\x05match\x18\x01 \x03(\x0b\x32,.istio.networking.v1alpha3.L4MatchAttributes\x12;\n\x05route\x18\x02 \x03(\x0b\x32,.istio.networking.v1alpha3.DestinationWeight\"\xc0\x04\n\x10HTTPMatchRequest\x12\x33\n\x03uri\x18\x01 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12\x36\n\x06scheme\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12\x36\n\x06method\x18\x03 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12\x39\n\tauthority\x18\x04 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12I\n\x07headers\x18\x05 \x03(\x0b\x32\x38.istio.networking.v1alpha3.HTTPMatchRequest.HeadersEntry\x12\x0c\n\x04port\x18\x06 \x01(\r\x12T\n\rsource_labels\x18\x07 \x03(\x0b\x32=.istio.networking.v1alpha3.HTTPMatchRequest.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x08 \x03(\t\x1aV\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch:\x02\x38\x01\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"`\n\x11\x44\x65stinationWeight\x12;\n\x0b\x64\x65stination\x18\x01 \x01(\x0b\x32&.istio.networking.v1alpha3.Destination\x12\x0e\n\x06weight\x18\x02 \x01(\x05\"\xf3\x01\n\x11L4MatchAttributes\x12\x1b\n\x13\x64\x65stination_subnets\x18\x01 \x03(\t\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x15\n\rsource_subnet\x18\x03 \x01(\t\x12U\n\rsource_labels\x18\x04 \x03(\x0b\x32>.istio.networking.v1alpha3.L4MatchAttributes.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x05 \x03(\t\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x88\x02\n\x12TLSMatchAttributes\x12\x11\n\tsni_hosts\x18\x01 \x03(\t\x12\x1b\n\x13\x64\x65stination_subnets\x18\x02 \x03(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\x12\x15\n\rsource_subnet\x18\x04 \x01(\t\x12V\n\rsource_labels\x18\x05 \x03(\x0b\x32?.istio.networking.v1alpha3.TLSMatchAttributes.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x06 \x03(\t\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\".\n\x0cHTTPRedirect\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\"-\n\x0bHTTPRewrite\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\"O\n\x0bStringMatch\x12\x0f\n\x05\x65xact\x18\x01 \x01(\tH\x00\x12\x10\n\x06prefix\x18\x02 \x01(\tH\x00\x12\x0f\n\x05regex\x18\x03 \x01(\tH\x00\x42\x0c\n\nmatch_type\"Q\n\tHTTPRetry\x12\x10\n\x08\x61ttempts\x18\x01 \x01(\x05\x12\x32\n\x0fper_try_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xcb\x01\n\nCorsPolicy\x12\x14\n\x0c\x61llow_origin\x18\x01 \x03(\t\x12\x15\n\rallow_methods\x18\x02 \x03(\t\x12\x15\n\rallow_headers\x18\x03 \x03(\t\x12\x16\n\x0e\x65xpose_headers\x18\x04 \x03(\t\x12*\n\x07max_age\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x35\n\x11\x61llow_credentials\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\xa1\x03\n\x12HTTPFaultInjection\x12\x42\n\x05\x64\x65lay\x18\x01 \x01(\x0b\x32\x33.istio.networking.v1alpha3.HTTPFaultInjection.Delay\x12\x42\n\x05\x61\x62ort\x18\x02 \x01(\x0b\x32\x33.istio.networking.v1alpha3.HTTPFaultInjection.Abort\x1a\x95\x01\n\x05\x44\x65lay\x12\x0f\n\x07percent\x18\x01 \x01(\x05\x12\x30\n\x0b\x66ixed_delay\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x12\x36\n\x11\x65xponential_delay\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x42\x11\n\x0fhttp_delay_type\x1ak\n\x05\x41\x62ort\x12\x0f\n\x07percent\x18\x01 \x01(\x05\x12\x15\n\x0bhttp_status\x18\x02 \x01(\x05H\x00\x12\x15\n\x0bgrpc_status\x18\x03 \x01(\tH\x00\x12\x15\n\x0bhttp2_error\x18\x04 \x01(\tH\x00\x42\x0c\n\nerror_type\"8\n\x0cPortSelector\x12\x10\n\x06number\x18\x01 \x01(\rH\x00\x12\x0e\n\x04name\x18\x02 \x01(\tH\x00\x42\x06\n\x04portB\"Z istio.io/api/networking/v1alpha3b\x06proto3') + serialized_pb=_b('\n)networking/v1alpha3/virtual_service.proto\x12\x19istio.networking.v1alpha3\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\xc9\x01\n\x0eVirtualService\x12\r\n\x05hosts\x18\x01 \x03(\t\x12\x10\n\x08gateways\x18\x02 \x03(\t\x12\x32\n\x04http\x18\x03 \x03(\x0b\x32$.istio.networking.v1alpha3.HTTPRoute\x12\x30\n\x03tls\x18\x05 \x03(\x0b\x32#.istio.networking.v1alpha3.TLSRoute\x12\x30\n\x03tcp\x18\x04 \x03(\x0b\x32#.istio.networking.v1alpha3.TCPRoute\"b\n\x0b\x44\x65stination\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0e\n\x06subset\x18\x02 \x01(\t\x12\x35\n\x04port\x18\x03 \x01(\x0b\x32\'.istio.networking.v1alpha3.PortSelector\"\xd0\x05\n\tHTTPRoute\x12:\n\x05match\x18\x01 \x03(\x0b\x32+.istio.networking.v1alpha3.HTTPMatchRequest\x12;\n\x05route\x18\x02 \x03(\x0b\x32,.istio.networking.v1alpha3.DestinationWeight\x12\x39\n\x08redirect\x18\x03 \x01(\x0b\x32\'.istio.networking.v1alpha3.HTTPRedirect\x12\x37\n\x07rewrite\x18\x04 \x01(\x0b\x32&.istio.networking.v1alpha3.HTTPRewrite\x12\x19\n\x11websocket_upgrade\x18\x05 \x01(\x08\x12*\n\x07timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x35\n\x07retries\x18\x07 \x01(\x0b\x32$.istio.networking.v1alpha3.HTTPRetry\x12<\n\x05\x66\x61ult\x18\x08 \x01(\x0b\x32-.istio.networking.v1alpha3.HTTPFaultInjection\x12\x36\n\x06mirror\x18\t \x01(\x0b\x32&.istio.networking.v1alpha3.Destination\x12:\n\x0b\x63ors_policy\x18\n \x01(\x0b\x32%.istio.networking.v1alpha3.CorsPolicy\x12O\n\x0e\x61ppend_headers\x18\x0b \x03(\x0b\x32\x37.istio.networking.v1alpha3.HTTPRoute.AppendHeadersEntry\x12\x1f\n\x17remove_response_headers\x18\x0c \x03(\t\x1a\x34\n\x12\x41ppendHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x85\x01\n\x08TLSRoute\x12<\n\x05match\x18\x01 \x03(\x0b\x32-.istio.networking.v1alpha3.TLSMatchAttributes\x12;\n\x05route\x18\x02 \x03(\x0b\x32,.istio.networking.v1alpha3.DestinationWeight\"\x84\x01\n\x08TCPRoute\x12;\n\x05match\x18\x01 \x03(\x0b\x32,.istio.networking.v1alpha3.L4MatchAttributes\x12;\n\x05route\x18\x02 \x03(\x0b\x32,.istio.networking.v1alpha3.DestinationWeight\"\xc0\x04\n\x10HTTPMatchRequest\x12\x33\n\x03uri\x18\x01 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12\x36\n\x06scheme\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12\x36\n\x06method\x18\x03 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12\x39\n\tauthority\x18\x04 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12I\n\x07headers\x18\x05 \x03(\x0b\x32\x38.istio.networking.v1alpha3.HTTPMatchRequest.HeadersEntry\x12\x0c\n\x04port\x18\x06 \x01(\r\x12T\n\rsource_labels\x18\x07 \x03(\x0b\x32=.istio.networking.v1alpha3.HTTPMatchRequest.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x08 \x03(\t\x1aV\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch:\x02\x38\x01\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"`\n\x11\x44\x65stinationWeight\x12;\n\x0b\x64\x65stination\x18\x01 \x01(\x0b\x32&.istio.networking.v1alpha3.Destination\x12\x0e\n\x06weight\x18\x02 \x01(\x05\"\xf3\x01\n\x11L4MatchAttributes\x12\x1b\n\x13\x64\x65stination_subnets\x18\x01 \x03(\t\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x15\n\rsource_subnet\x18\x03 \x01(\t\x12U\n\rsource_labels\x18\x04 \x03(\x0b\x32>.istio.networking.v1alpha3.L4MatchAttributes.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x05 \x03(\t\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x88\x02\n\x12TLSMatchAttributes\x12\x11\n\tsni_hosts\x18\x01 \x03(\t\x12\x1b\n\x13\x64\x65stination_subnets\x18\x02 \x03(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\x12\x15\n\rsource_subnet\x18\x04 \x01(\t\x12V\n\rsource_labels\x18\x05 \x03(\x0b\x32?.istio.networking.v1alpha3.TLSMatchAttributes.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x06 \x03(\t\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\".\n\x0cHTTPRedirect\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\"-\n\x0bHTTPRewrite\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\"O\n\x0bStringMatch\x12\x0f\n\x05\x65xact\x18\x01 \x01(\tH\x00\x12\x10\n\x06prefix\x18\x02 \x01(\tH\x00\x12\x0f\n\x05regex\x18\x03 \x01(\tH\x00\x42\x0c\n\nmatch_type\"Q\n\tHTTPRetry\x12\x10\n\x08\x61ttempts\x18\x01 \x01(\x05\x12\x32\n\x0fper_try_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xcb\x01\n\nCorsPolicy\x12\x14\n\x0c\x61llow_origin\x18\x01 \x03(\t\x12\x15\n\rallow_methods\x18\x02 \x03(\t\x12\x15\n\rallow_headers\x18\x03 \x03(\t\x12\x16\n\x0e\x65xpose_headers\x18\x04 \x03(\t\x12*\n\x07max_age\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x35\n\x11\x61llow_credentials\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\x9a\x04\n\x12HTTPFaultInjection\x12\x42\n\x05\x64\x65lay\x18\x01 \x01(\x0b\x32\x33.istio.networking.v1alpha3.HTTPFaultInjection.Delay\x12\x42\n\x05\x61\x62ort\x18\x02 \x01(\x0b\x32\x33.istio.networking.v1alpha3.HTTPFaultInjection.Abort\x1a\xd1\x01\n\x05\x44\x65lay\x12\x13\n\x07percent\x18\x01 \x01(\x05\x42\x02\x18\x01\x12\x30\n\x0b\x66ixed_delay\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x12\x36\n\x11\x65xponential_delay\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x12\x36\n\npercentage\x18\x05 \x01(\x0b\x32\".istio.networking.v1alpha3.PercentB\x11\n\x0fhttp_delay_type\x1a\xa7\x01\n\x05\x41\x62ort\x12\x13\n\x07percent\x18\x01 \x01(\x05\x42\x02\x18\x01\x12\x15\n\x0bhttp_status\x18\x02 \x01(\x05H\x00\x12\x15\n\x0bgrpc_status\x18\x03 \x01(\tH\x00\x12\x15\n\x0bhttp2_error\x18\x04 \x01(\tH\x00\x12\x36\n\npercentage\x18\x05 \x01(\x0b\x32\".istio.networking.v1alpha3.PercentB\x0c\n\nerror_type\"8\n\x0cPortSelector\x12\x10\n\x06number\x18\x01 \x01(\rH\x00\x12\x0e\n\x04name\x18\x02 \x01(\tH\x00\x42\x06\n\x04port\"\x18\n\x07Percent\x12\r\n\x05value\x18\x01 \x01(\x01\x42\"Z istio.io/api/networking/v1alpha3b\x06proto3') , dependencies=[google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,]) @@ -985,7 +985,7 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')), file=DESCRIPTOR), _descriptor.FieldDescriptor( name='fixed_delay', full_name='istio.networking.v1alpha3.HTTPFaultInjection.Delay.fixed_delay', index=1, number=2, type=11, cpp_type=10, label=1, @@ -1000,6 +1000,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='percentage', full_name='istio.networking.v1alpha3.HTTPFaultInjection.Delay.percentage', index=3, + 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=[ ], @@ -1016,7 +1023,7 @@ index=0, containing_type=None, fields=[]), ], serialized_start=3249, - serialized_end=3398, + serialized_end=3458, ) _HTTPFAULTINJECTION_ABORT = _descriptor.Descriptor( @@ -1032,7 +1039,7 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')), file=DESCRIPTOR), _descriptor.FieldDescriptor( name='http_status', full_name='istio.networking.v1alpha3.HTTPFaultInjection.Abort.http_status', index=1, number=2, type=5, cpp_type=1, label=1, @@ -1054,6 +1061,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='percentage', full_name='istio.networking.v1alpha3.HTTPFaultInjection.Abort.percentage', 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=[ ], @@ -1069,8 +1083,8 @@ name='error_type', full_name='istio.networking.v1alpha3.HTTPFaultInjection.Abort.error_type', index=0, containing_type=None, fields=[]), ], - serialized_start=3400, - serialized_end=3507, + serialized_start=3461, + serialized_end=3628, ) _HTTPFAULTINJECTION = _descriptor.Descriptor( @@ -1107,7 +1121,7 @@ oneofs=[ ], serialized_start=3090, - serialized_end=3507, + serialized_end=3628, ) @@ -1147,8 +1161,39 @@ name='port', full_name='istio.networking.v1alpha3.PortSelector.port', index=0, containing_type=None, fields=[]), ], - serialized_start=3509, - serialized_end=3565, + serialized_start=3630, + serialized_end=3686, +) + + +_PERCENT = _descriptor.Descriptor( + name='Percent', + full_name='istio.networking.v1alpha3.Percent', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='value', full_name='istio.networking.v1alpha3.Percent.value', index=0, + number=1, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + 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=3688, + serialized_end=3712, ) _VIRTUALSERVICE.fields_by_name['http'].message_type = _HTTPROUTE @@ -1198,6 +1243,7 @@ _CORSPOLICY.fields_by_name['allow_credentials'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE _HTTPFAULTINJECTION_DELAY.fields_by_name['fixed_delay'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION _HTTPFAULTINJECTION_DELAY.fields_by_name['exponential_delay'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION +_HTTPFAULTINJECTION_DELAY.fields_by_name['percentage'].message_type = _PERCENT _HTTPFAULTINJECTION_DELAY.containing_type = _HTTPFAULTINJECTION _HTTPFAULTINJECTION_DELAY.oneofs_by_name['http_delay_type'].fields.append( _HTTPFAULTINJECTION_DELAY.fields_by_name['fixed_delay']) @@ -1205,6 +1251,7 @@ _HTTPFAULTINJECTION_DELAY.oneofs_by_name['http_delay_type'].fields.append( _HTTPFAULTINJECTION_DELAY.fields_by_name['exponential_delay']) _HTTPFAULTINJECTION_DELAY.fields_by_name['exponential_delay'].containing_oneof = _HTTPFAULTINJECTION_DELAY.oneofs_by_name['http_delay_type'] +_HTTPFAULTINJECTION_ABORT.fields_by_name['percentage'].message_type = _PERCENT _HTTPFAULTINJECTION_ABORT.containing_type = _HTTPFAULTINJECTION _HTTPFAULTINJECTION_ABORT.oneofs_by_name['error_type'].fields.append( _HTTPFAULTINJECTION_ABORT.fields_by_name['http_status']) @@ -1239,6 +1286,7 @@ DESCRIPTOR.message_types_by_name['CorsPolicy'] = _CORSPOLICY DESCRIPTOR.message_types_by_name['HTTPFaultInjection'] = _HTTPFAULTINJECTION DESCRIPTOR.message_types_by_name['PortSelector'] = _PORTSELECTOR +DESCRIPTOR.message_types_by_name['Percent'] = _PERCENT _sym_db.RegisterFileDescriptor(DESCRIPTOR) VirtualService = _reflection.GeneratedProtocolMessageType('VirtualService', (_message.Message,), dict( @@ -1409,6 +1457,13 @@ )) _sym_db.RegisterMessage(PortSelector) +Percent = _reflection.GeneratedProtocolMessageType('Percent', (_message.Message,), dict( + DESCRIPTOR = _PERCENT, + __module__ = 'networking.v1alpha3.virtual_service_pb2' + # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.Percent) + )) +_sym_db.RegisterMessage(Percent) + DESCRIPTOR.has_options = True DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('Z istio.io/api/networking/v1alpha3')) @@ -1422,4 +1477,8 @@ _L4MATCHATTRIBUTES_SOURCELABELSENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')) _TLSMATCHATTRIBUTES_SOURCELABELSENTRY.has_options = True _TLSMATCHATTRIBUTES_SOURCELABELSENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')) +_HTTPFAULTINJECTION_DELAY.fields_by_name['percent'].has_options = True +_HTTPFAULTINJECTION_DELAY.fields_by_name['percent']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_HTTPFAULTINJECTION_ABORT.fields_by_name['percent'].has_options = True +_HTTPFAULTINJECTION_ABORT.fields_by_name['percent']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) # @@protoc_insertion_point(module_scope)
FieldTypeDescription
valuedouble