diff --git a/Makefile b/Makefile index a74a1d6faa..5d804e31ac 100644 --- a/Makefile +++ b/Makefile @@ -351,6 +351,9 @@ clean-envoy: proto-commit: @$(docker_lock) commit +proto-commit-force: + @$(docker_lock) commit --force + ##################### # Lint ##################### diff --git a/mesh/v1alpha1/config.pb.go b/mesh/v1alpha1/config.pb.go index 2e3ffac974..4552e43de2 100644 --- a/mesh/v1alpha1/config.pb.go +++ b/mesh/v1alpha1/config.pb.go @@ -23,7 +23,7 @@ import proto "github.com/gogo/protobuf/proto" import fmt "fmt" import math "math" import google_protobuf "github.com/gogo/protobuf/types" -import istio_networking_v1alpha31 "istio.io/api/networking/v1alpha3" +import istio_networking_v1alpha32 "istio.io/api/networking/v1alpha3" import io "io" @@ -152,6 +152,34 @@ func (MeshConfig_OutboundTrafficPolicy_Mode) EnumDescriptor() ([]byte, []int) { return fileDescriptorConfig, []int{0, 0, 0} } +type MeshConfig_DefaultServiceDependency_Mode int32 + +const ( + // Configure routes to services in all namespaces, i.e. import + // services from all namespaces. + MeshConfig_DefaultServiceDependency_ALL_NAMESPACES MeshConfig_DefaultServiceDependency_Mode = 0 + // Only configure routes to services that are in the same namespace + // as the workload as well as services in namespaces specified in + // importNamespaces. + MeshConfig_DefaultServiceDependency_SAME_NAMESPACE MeshConfig_DefaultServiceDependency_Mode = 1 +) + +var MeshConfig_DefaultServiceDependency_Mode_name = map[int32]string{ + 0: "ALL_NAMESPACES", + 1: "SAME_NAMESPACE", +} +var MeshConfig_DefaultServiceDependency_Mode_value = map[string]int32{ + "ALL_NAMESPACES": 0, + "SAME_NAMESPACE": 1, +} + +func (x MeshConfig_DefaultServiceDependency_Mode) String() string { + return proto.EnumName(MeshConfig_DefaultServiceDependency_Mode_name, int32(x)) +} +func (MeshConfig_DefaultServiceDependency_Mode) EnumDescriptor() ([]byte, []int) { + return fileDescriptorConfig, []int{0, 1, 0} +} + // MeshConfig defines mesh-wide variables shared by all Envoy instances in the // Istio service mesh. // @@ -188,6 +216,8 @@ type MeshConfig struct { ProxyHttpPort int32 `protobuf:"varint,5,opt,name=proxy_http_port,json=proxyHttpPort,proto3" json:"proxy_http_port,omitempty"` // Connection timeout used by Envoy. (MUST BE >=1ms) ConnectTimeout *google_protobuf.Duration `protobuf:"bytes,6,opt,name=connect_timeout,json=connectTimeout" json:"connect_timeout,omitempty"` + // If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives. + TcpKeepalive *istio_networking_v1alpha32.ConnectionPoolSettings_TCPSettings_TcpKeepalive `protobuf:"bytes,28,opt,name=tcp_keepalive,json=tcpKeepalive" json:"tcp_keepalive,omitempty"` // Class of ingress resources to be processed by Istio ingress // controller. This corresponds to the value of // "kubernetes.io/ingress.class" annotation. @@ -248,6 +278,12 @@ type MeshConfig struct { // Refer to https://github.com/spiffe/spiffe/blob/master/standards/SPIFFE-ID.md#21-trust-domain // Fallback to old identity format(without trust domain) if not set. TrustDomain string `protobuf:"bytes,26,opt,name=trust_domain,json=trustDomain,proto3" json:"trust_domain,omitempty"` + // The default service dependency setting associated with every workload + // in the mesh. Pilot will program the routes in the sidecars and + // gateways accordingly. If omitted, sidecars will be configured to reach + // every service in the mesh. The default scope can be overriden by + // supplying a ServiceDependency resource per namespace. + DefaultServiceDependency *MeshConfig_DefaultServiceDependency `protobuf:"bytes,29,opt,name=default_service_dependency,json=defaultServiceDependency" json:"default_service_dependency,omitempty"` } func (m *MeshConfig) Reset() { *m = MeshConfig{} } @@ -304,6 +340,13 @@ func (m *MeshConfig) GetConnectTimeout() *google_protobuf.Duration { return nil } +func (m *MeshConfig) GetTcpKeepalive() *istio_networking_v1alpha32.ConnectionPoolSettings_TCPSettings_TcpKeepalive { + if m != nil { + return m.TcpKeepalive + } + return nil +} + func (m *MeshConfig) GetIngressClass() string { if m != nil { return m.IngressClass @@ -430,6 +473,13 @@ func (m *MeshConfig) GetTrustDomain() string { return "" } +func (m *MeshConfig) GetDefaultServiceDependency() *MeshConfig_DefaultServiceDependency { + if m != nil { + return m.DefaultServiceDependency + } + return nil +} + type MeshConfig_OutboundTrafficPolicy struct { Mode MeshConfig_OutboundTrafficPolicy_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=istio.mesh.v1alpha1.MeshConfig_OutboundTrafficPolicy_Mode" json:"mode,omitempty"` } @@ -448,6 +498,41 @@ func (m *MeshConfig_OutboundTrafficPolicy) GetMode() MeshConfig_OutboundTrafficP return MeshConfig_OutboundTrafficPolicy_REGISTRY_ONLY } +// Default service dependency settings for each workload in the +// mesh. ServiceDependencycontrols the reachability of workloads to other +// services in the mesh. +type MeshConfig_DefaultServiceDependency struct { + // REQUIRED: The default import setting for every workload in the mesh. + ImportMode MeshConfig_DefaultServiceDependency_Mode `protobuf:"varint,1,opt,name=import_mode,json=importMode,proto3,enum=istio.mesh.v1alpha1.MeshConfig_DefaultServiceDependency_Mode" json:"import_mode,omitempty"` + // Specifies one or more namespaces that should be imported by default + // in all user defined ServiceDependency resources in addition to the + // namespaces explicitly specified by the end user. Use this setting to + // automatically import services/resources from namespaces such as + // istio-system that all workloads in the mesh depend upon. + ImportNamespaces []string `protobuf:"bytes,2,rep,name=import_namespaces,json=importNamespaces" json:"import_namespaces,omitempty"` +} + +func (m *MeshConfig_DefaultServiceDependency) Reset() { *m = MeshConfig_DefaultServiceDependency{} } +func (m *MeshConfig_DefaultServiceDependency) String() string { return proto.CompactTextString(m) } +func (*MeshConfig_DefaultServiceDependency) ProtoMessage() {} +func (*MeshConfig_DefaultServiceDependency) Descriptor() ([]byte, []int) { + return fileDescriptorConfig, []int{0, 1} +} + +func (m *MeshConfig_DefaultServiceDependency) GetImportMode() MeshConfig_DefaultServiceDependency_Mode { + if m != nil { + return m.ImportMode + } + return MeshConfig_DefaultServiceDependency_ALL_NAMESPACES +} + +func (m *MeshConfig_DefaultServiceDependency) GetImportNamespaces() []string { + if m != nil { + return m.ImportNamespaces + } + return nil +} + // ConfigSource describes information about a configuration store inside a // mesh. A single control plane instance can interact with one or more data // sources. @@ -459,7 +544,7 @@ type ConfigSource struct { // Use the tls_settings to specify the tls mode to use. If the MCP server // uses Istio MTLS and shares the root CA with Pilot, specify the TLS // mode as ISTIO_MUTUAL. - TlsSettings *istio_networking_v1alpha31.TLSSettings `protobuf:"bytes,2,opt,name=tls_settings,json=tlsSettings" json:"tls_settings,omitempty"` + TlsSettings *istio_networking_v1alpha32.TLSSettings `protobuf:"bytes,2,opt,name=tls_settings,json=tlsSettings" json:"tls_settings,omitempty"` } func (m *ConfigSource) Reset() { *m = ConfigSource{} } @@ -474,7 +559,7 @@ func (m *ConfigSource) GetAddress() string { return "" } -func (m *ConfigSource) GetTlsSettings() *istio_networking_v1alpha31.TLSSettings { +func (m *ConfigSource) GetTlsSettings() *istio_networking_v1alpha32.TLSSettings { if m != nil { return m.TlsSettings } @@ -484,11 +569,13 @@ func (m *ConfigSource) GetTlsSettings() *istio_networking_v1alpha31.TLSSettings func init() { proto.RegisterType((*MeshConfig)(nil), "istio.mesh.v1alpha1.MeshConfig") proto.RegisterType((*MeshConfig_OutboundTrafficPolicy)(nil), "istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy") + proto.RegisterType((*MeshConfig_DefaultServiceDependency)(nil), "istio.mesh.v1alpha1.MeshConfig.DefaultServiceDependency") proto.RegisterType((*ConfigSource)(nil), "istio.mesh.v1alpha1.ConfigSource") proto.RegisterEnum("istio.mesh.v1alpha1.MeshConfig_IngressControllerMode", MeshConfig_IngressControllerMode_name, MeshConfig_IngressControllerMode_value) proto.RegisterEnum("istio.mesh.v1alpha1.MeshConfig_AuthPolicy", MeshConfig_AuthPolicy_name, MeshConfig_AuthPolicy_value) proto.RegisterEnum("istio.mesh.v1alpha1.MeshConfig_AccessLogEncoding", MeshConfig_AccessLogEncoding_name, MeshConfig_AccessLogEncoding_value) proto.RegisterEnum("istio.mesh.v1alpha1.MeshConfig_OutboundTrafficPolicy_Mode", MeshConfig_OutboundTrafficPolicy_Mode_name, MeshConfig_OutboundTrafficPolicy_Mode_value) + proto.RegisterEnum("istio.mesh.v1alpha1.MeshConfig_DefaultServiceDependency_Mode", MeshConfig_DefaultServiceDependency_Mode_name, MeshConfig_DefaultServiceDependency_Mode_value) } func (m *MeshConfig) Marshal() (dAtA []byte, err error) { size := m.Size() @@ -718,6 +805,30 @@ func (m *MeshConfig) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintConfig(dAtA, i, uint64(m.AccessLogEncoding)) } + if m.TcpKeepalive != nil { + dAtA[i] = 0xe2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintConfig(dAtA, i, uint64(m.TcpKeepalive.Size())) + n6, err := m.TcpKeepalive.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + if m.DefaultServiceDependency != nil { + dAtA[i] = 0xea + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintConfig(dAtA, i, uint64(m.DefaultServiceDependency.Size())) + n7, err := m.DefaultServiceDependency.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } return i, nil } @@ -744,6 +855,44 @@ func (m *MeshConfig_OutboundTrafficPolicy) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *MeshConfig_DefaultServiceDependency) 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 *MeshConfig_DefaultServiceDependency) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ImportMode != 0 { + dAtA[i] = 0x8 + i++ + i = encodeVarintConfig(dAtA, i, uint64(m.ImportMode)) + } + if len(m.ImportNamespaces) > 0 { + for _, s := range m.ImportNamespaces { + dAtA[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + func (m *ConfigSource) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -769,11 +918,11 @@ func (m *ConfigSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintConfig(dAtA, i, uint64(m.TlsSettings.Size())) - n6, err := m.TlsSettings.MarshalTo(dAtA[i:]) + n8, err := m.TlsSettings.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n6 + i += n8 } return i, nil } @@ -882,6 +1031,14 @@ func (m *MeshConfig) Size() (n int) { if m.AccessLogEncoding != 0 { n += 2 + sovConfig(uint64(m.AccessLogEncoding)) } + if m.TcpKeepalive != nil { + l = m.TcpKeepalive.Size() + n += 2 + l + sovConfig(uint64(l)) + } + if m.DefaultServiceDependency != nil { + l = m.DefaultServiceDependency.Size() + n += 2 + l + sovConfig(uint64(l)) + } return n } @@ -894,6 +1051,21 @@ func (m *MeshConfig_OutboundTrafficPolicy) Size() (n int) { return n } +func (m *MeshConfig_DefaultServiceDependency) Size() (n int) { + var l int + _ = l + if m.ImportMode != 0 { + n += 1 + sovConfig(uint64(m.ImportMode)) + } + if len(m.ImportNamespaces) > 0 { + for _, s := range m.ImportNamespaces { + l = len(s) + n += 1 + l + sovConfig(uint64(l)) + } + } + return n +} + func (m *ConfigSource) Size() (n int) { var l int _ = l @@ -1602,6 +1774,72 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error { break } } + case 28: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TcpKeepalive", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfig + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfig + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TcpKeepalive == nil { + m.TcpKeepalive = &istio_networking_v1alpha32.ConnectionPoolSettings_TCPSettings_TcpKeepalive{} + } + if err := m.TcpKeepalive.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 29: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultServiceDependency", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfig + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfig + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DefaultServiceDependency == nil { + m.DefaultServiceDependency = &MeshConfig_DefaultServiceDependency{} + } + if err := m.DefaultServiceDependency.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipConfig(dAtA[iNdEx:]) @@ -1692,6 +1930,104 @@ func (m *MeshConfig_OutboundTrafficPolicy) Unmarshal(dAtA []byte) error { } return nil } +func (m *MeshConfig_DefaultServiceDependency) 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 ErrIntOverflowConfig + } + 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: DefaultServiceDependency: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DefaultServiceDependency: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ImportMode", wireType) + } + m.ImportMode = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfig + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ImportMode |= (MeshConfig_DefaultServiceDependency_Mode(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ImportNamespaces", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfig + } + 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 ErrInvalidLengthConfig + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ImportNamespaces = append(m.ImportNamespaces, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConfig(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConfig + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *ConfigSource) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -1777,7 +2113,7 @@ func (m *ConfigSource) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.TlsSettings == nil { - m.TlsSettings = &istio_networking_v1alpha31.TLSSettings{} + m.TlsSettings = &istio_networking_v1alpha32.TLSSettings{} } if err := m.TlsSettings.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1912,72 +2248,83 @@ var ( func init() { proto.RegisterFile("mesh/v1alpha1/config.proto", fileDescriptorConfig) } var fileDescriptorConfig = []byte{ - // 1071 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xdf, 0x4e, 0xe3, 0xc6, - 0x17, 0xc6, 0x90, 0x85, 0x30, 0xf9, 0xe7, 0x4c, 0x36, 0xcb, 0x90, 0xfd, 0x89, 0x5f, 0x36, 0x55, - 0x21, 0x42, 0x95, 0x23, 0x40, 0xbd, 0x68, 0xef, 0x42, 0x08, 0xbb, 0x41, 0x21, 0x41, 0xb6, 0xd9, - 0x96, 0xde, 0x8c, 0x8c, 0x3d, 0x49, 0x46, 0x38, 0x1e, 0xd7, 0x33, 0xde, 0x2e, 0xaf, 0xd5, 0xdb, - 0xbe, 0x40, 0x2f, 0xfb, 0x08, 0x15, 0x4f, 0x52, 0xcd, 0x8c, 0x03, 0x61, 0x37, 0x12, 0x55, 0xef, - 0xe2, 0xef, 0x7c, 0xe7, 0x9c, 0x39, 0xdf, 0x39, 0x73, 0x26, 0xa0, 0x31, 0x27, 0x7c, 0xd6, 0xf9, - 0x74, 0xe4, 0x85, 0xf1, 0xcc, 0x3b, 0xea, 0xf8, 0x2c, 0x9a, 0xd0, 0xa9, 0x15, 0x27, 0x4c, 0x30, - 0x58, 0xa3, 0x5c, 0x50, 0x66, 0x49, 0x86, 0xb5, 0x60, 0x34, 0xf6, 0xa6, 0x8c, 0x4d, 0x43, 0xd2, - 0x51, 0x94, 0xdb, 0x74, 0xd2, 0x09, 0xd2, 0xc4, 0x13, 0x94, 0x45, 0xda, 0xa9, 0xb1, 0xfb, 0x3c, - 0x60, 0x9c, 0xb0, 0xcf, 0xf7, 0x99, 0xe9, 0x30, 0x22, 0xe2, 0x37, 0x96, 0xdc, 0xd1, 0x68, 0xba, - 0x20, 0x9c, 0x74, 0x02, 0xc2, 0x05, 0x8d, 0x54, 0x04, 0x9c, 0xa4, 0x21, 0xd1, 0xdc, 0xd6, 0xef, - 0x65, 0x00, 0x2e, 0x09, 0x9f, 0xf5, 0xd4, 0x81, 0xe0, 0x77, 0x00, 0xce, 0xe9, 0x67, 0x92, 0x60, - 0x7f, 0x46, 0xfc, 0x3b, 0xcc, 0x49, 0xf2, 0x89, 0x24, 0xc8, 0x68, 0x1a, 0xed, 0x6d, 0xdb, 0x54, - 0x96, 0x9e, 0x34, 0x38, 0x0a, 0x87, 0x16, 0xa8, 0x69, 0x76, 0x42, 0x62, 0x96, 0x88, 0x05, 0x7d, - 0x5d, 0xd1, 0xab, 0xca, 0x64, 0x2b, 0x4b, 0xc6, 0x3f, 0x06, 0xf5, 0x80, 0x72, 0xef, 0x36, 0x24, - 0x38, 0x66, 0x21, 0xf5, 0xef, 0x75, 0x1a, 0x8e, 0x36, 0x9a, 0x46, 0x3b, 0x6f, 0xd7, 0x32, 0xe3, - 0x95, 0xb2, 0xa9, 0x44, 0x1c, 0x1e, 0x82, 0xaa, 0xaa, 0x0d, 0x87, 0x94, 0x0b, 0x12, 0x61, 0x19, - 0x0e, 0xe5, 0x9a, 0x46, 0xfb, 0x95, 0x5d, 0x51, 0x86, 0xa1, 0xc2, 0xaf, 0x58, 0x22, 0xe0, 0x3e, - 0xd0, 0x10, 0x9e, 0x09, 0x11, 0x6b, 0xe6, 0x2b, 0xc5, 0x2c, 0x29, 0xf8, 0x83, 0x10, 0xb1, 0xe2, - 0x9d, 0x82, 0x8a, 0xcf, 0xa2, 0x88, 0xf8, 0x02, 0x0b, 0x3a, 0x27, 0x2c, 0x15, 0x68, 0xb3, 0x69, - 0xb4, 0x0b, 0xc7, 0xbb, 0x96, 0x56, 0xdd, 0x5a, 0xa8, 0x6e, 0x9d, 0x65, 0xaa, 0xdb, 0xe5, 0xcc, - 0xc3, 0xd5, 0x0e, 0xf0, 0x1b, 0x50, 0xa2, 0xd1, 0x34, 0x21, 0x9c, 0x63, 0x3f, 0xf4, 0x38, 0x47, - 0x5b, 0xaa, 0xea, 0x62, 0x06, 0xf6, 0x24, 0x06, 0x0f, 0x40, 0x65, 0x41, 0x92, 0xda, 0x50, 0x9f, - 0xa0, 0xbc, 0xa2, 0x95, 0x33, 0xd8, 0xd1, 0x28, 0x9c, 0x83, 0x9d, 0xc7, 0x68, 0x2c, 0x12, 0x09, - 0x0b, 0x43, 0x92, 0xe0, 0x39, 0x0b, 0x08, 0xda, 0x6e, 0x1a, 0xed, 0xf2, 0xf1, 0xf7, 0xd6, 0x8a, - 0x21, 0xb1, 0x9e, 0x3a, 0x67, 0x0d, 0xb2, 0xbc, 0x8f, 0xde, 0x97, 0x2c, 0x20, 0x76, 0x9d, 0xae, - 0x82, 0xe1, 0x18, 0x14, 0xbc, 0x54, 0xcc, 0xb2, 0x2e, 0x20, 0xa0, 0x52, 0x1c, 0xbe, 0x94, 0xa2, - 0x9b, 0x8a, 0x99, 0xee, 0xcd, 0xe9, 0x3a, 0x32, 0x6c, 0xe0, 0x3d, 0x7e, 0xc3, 0x01, 0xa8, 0x26, - 0x01, 0xc7, 0x09, 0x99, 0x24, 0x84, 0xcf, 0x70, 0x40, 0x42, 0xef, 0x1e, 0x15, 0x5e, 0xd0, 0x54, - 0x45, 0xa9, 0x24, 0x01, 0xb7, 0xb5, 0xdb, 0x99, 0xf4, 0x82, 0xdf, 0x82, 0x32, 0x89, 0xd4, 0x8c, - 0x88, 0xc4, 0xf3, 0x69, 0x34, 0x45, 0x45, 0x35, 0x1d, 0x25, 0x8d, 0xba, 0x1a, 0x94, 0xbd, 0xf6, - 0x7c, 0x5f, 0x0a, 0x16, 0xb2, 0x29, 0x9e, 0xd0, 0x90, 0xa0, 0x92, 0x92, 0xb6, 0xa4, 0xe1, 0x21, - 0x9b, 0x9e, 0xd3, 0x90, 0xc0, 0xf7, 0xa0, 0x1c, 0x90, 0x89, 0x97, 0x86, 0x02, 0xeb, 0x4b, 0x87, - 0xca, 0xea, 0x58, 0xcd, 0x95, 0xd5, 0x5e, 0xc9, 0x39, 0xd1, 0xe5, 0xda, 0xa5, 0xcc, 0x2f, 0xbb, - 0x1a, 0x07, 0xa0, 0xa4, 0x87, 0xdd, 0x0b, 0x02, 0x29, 0x29, 0x32, 0x65, 0x3a, 0x55, 0x43, 0x51, - 0x19, 0xba, 0x1a, 0x87, 0xbf, 0x82, 0x1d, 0x96, 0x8a, 0x5b, 0x96, 0x46, 0x81, 0x2c, 0x61, 0x32, - 0xa1, 0xfe, 0x42, 0xe8, 0xaa, 0x4a, 0xfd, 0x62, 0x2f, 0xc7, 0x99, 0xbb, 0xab, 0xbd, 0x97, 0x34, - 0xaf, 0xb3, 0x55, 0x26, 0x78, 0x06, 0xfe, 0x9f, 0x69, 0xe6, 0x87, 0x94, 0x44, 0x02, 0x73, 0x1a, - 0x3c, 0xbf, 0x63, 0xa8, 0xa6, 0x44, 0x7c, 0xab, 0x69, 0x3d, 0xc5, 0x72, 0x68, 0xb0, 0x7c, 0xd7, - 0x60, 0x13, 0x14, 0x79, 0xc0, 0x71, 0x1a, 0x70, 0x1c, 0x7b, 0x62, 0x86, 0x5e, 0x2b, 0x3d, 0x01, - 0x0f, 0xf8, 0x75, 0xc0, 0xaf, 0x3c, 0x31, 0x93, 0x6d, 0xe6, 0x5f, 0xb5, 0xb9, 0xfe, 0xaf, 0xda, - 0xcc, 0xbf, 0x68, 0xf3, 0x07, 0x50, 0xd6, 0xfd, 0xc0, 0x9c, 0xa5, 0x89, 0x4f, 0x38, 0x7a, 0xd3, - 0xdc, 0x68, 0x17, 0x8e, 0xdf, 0xad, 0x14, 0x47, 0x0b, 0xe3, 0x28, 0xa6, 0x5d, 0xf2, 0x97, 0xbe, - 0x38, 0x3c, 0x01, 0x6f, 0xb2, 0xe2, 0xe5, 0xd9, 0x04, 0xbb, 0x23, 0x11, 0x9e, 0xb3, 0x34, 0x12, - 0x68, 0x47, 0xaf, 0x15, 0x6d, 0x75, 0x02, 0xee, 0x4a, 0xdb, 0xa5, 0x34, 0xc9, 0xb5, 0xb2, 0x3c, - 0x3e, 0x2c, 0x99, 0x7b, 0x02, 0x21, 0x55, 0x70, 0xe5, 0x69, 0x80, 0x14, 0x2c, 0x13, 0x2c, 0x4b, - 0x89, 0x27, 0x1e, 0x0d, 0x31, 0x8b, 0x49, 0x84, 0x76, 0x75, 0x82, 0xf8, 0x49, 0xc4, 0x73, 0x8f, - 0x86, 0xe3, 0x98, 0x44, 0xf0, 0x1d, 0x28, 0x8a, 0x24, 0xe5, 0x02, 0x07, 0x6c, 0xee, 0xd1, 0x08, - 0x35, 0x54, 0xec, 0x82, 0xc2, 0xce, 0x14, 0x04, 0x3d, 0x50, 0x5b, 0x3a, 0x03, 0x89, 0x7c, 0x16, - 0xc8, 0x71, 0x7f, 0xab, 0x6e, 0xe3, 0xd1, 0x8b, 0xb7, 0x71, 0x71, 0xca, 0x7e, 0xe6, 0x68, 0x57, - 0xbd, 0x2f, 0xa1, 0xc6, 0x1f, 0x06, 0xa8, 0xaf, 0x9c, 0x26, 0x68, 0x83, 0x9c, 0x5a, 0x2f, 0x86, - 0xca, 0xf6, 0xe3, 0x7f, 0x1a, 0x49, 0x4b, 0x2e, 0x13, 0xd5, 0x5e, 0x15, 0xab, 0x35, 0x02, 0x39, - 0xb5, 0x5e, 0xea, 0xa0, 0x64, 0xf7, 0xdf, 0x0f, 0x1c, 0xd7, 0xbe, 0xc1, 0xe3, 0xd1, 0xf0, 0xc6, - 0x5c, 0x6b, 0xac, 0xe7, 0x0d, 0x58, 0x05, 0xdb, 0xdd, 0xe1, 0x70, 0xfc, 0x13, 0xee, 0x8e, 0x6e, - 0x4c, 0x43, 0x41, 0xff, 0x03, 0xaf, 0x3f, 0x0e, 0x6c, 0xf7, 0xba, 0x3b, 0xc4, 0x4e, 0xdf, 0xfe, - 0x38, 0xe8, 0xf5, 0xb5, 0xc3, 0xba, 0xb4, 0xb6, 0x7e, 0x00, 0xf5, 0x95, 0x6b, 0x0d, 0x6e, 0x81, - 0x8d, 0xf1, 0xf9, 0xb9, 0xb9, 0x06, 0x0b, 0x60, 0xeb, 0xac, 0x7f, 0xde, 0xbd, 0x1e, 0xba, 0xa6, - 0x01, 0x01, 0xd8, 0x74, 0x5c, 0x7b, 0xd0, 0x73, 0xcd, 0xf5, 0xd6, 0x3e, 0x00, 0x4f, 0xeb, 0x0a, - 0xe6, 0x41, 0x6e, 0x34, 0x1e, 0xf5, 0xcd, 0x35, 0x28, 0x9f, 0xbb, 0x6b, 0x95, 0xcf, 0x1d, 0x3a, - 0xa6, 0xd1, 0x3a, 0x00, 0xd5, 0xaf, 0x84, 0x94, 0x74, 0xb7, 0xff, 0xb3, 0x6b, 0xae, 0xc9, 0x5f, - 0x17, 0xce, 0x78, 0x64, 0x1a, 0x17, 0xb9, 0x7c, 0xc5, 0x34, 0x2f, 0x72, 0x79, 0x68, 0xd6, 0x5a, - 0x1c, 0x14, 0x97, 0x07, 0x12, 0x22, 0xb0, 0xb5, 0x58, 0x0a, 0xfa, 0xa9, 0x5c, 0x7c, 0xc2, 0x01, - 0x28, 0x8a, 0x50, 0x2e, 0x7f, 0x21, 0x68, 0x34, 0xe5, 0xea, 0x69, 0x2c, 0x1c, 0xef, 0x67, 0x6a, - 0x3f, 0xbd, 0xd3, 0x0b, 0xcd, 0x4f, 0x2c, 0x77, 0xe8, 0x38, 0x19, 0xdb, 0x2e, 0x88, 0x90, 0x2f, - 0x3e, 0x4e, 0xdb, 0x7f, 0x3e, 0xec, 0x19, 0x7f, 0x3d, 0xec, 0x19, 0x7f, 0x3f, 0xec, 0x19, 0xbf, - 0x34, 0x74, 0x04, 0xca, 0x3a, 0x5e, 0x4c, 0x3b, 0xcf, 0xfe, 0x0b, 0xdc, 0x6e, 0xaa, 0x2b, 0x78, - 0xf2, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0a, 0x38, 0x8b, 0x61, 0x74, 0x08, 0x00, 0x00, + // 1235 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x5d, 0x6f, 0xdb, 0xb6, + 0x1a, 0x8e, 0x92, 0xb4, 0x49, 0x5f, 0x7f, 0x44, 0x66, 0x9a, 0x96, 0x75, 0x7b, 0x72, 0xdc, 0x1c, + 0x9c, 0xd6, 0xe8, 0x39, 0xb0, 0xd1, 0x04, 0x03, 0xb6, 0x01, 0xbb, 0x70, 0x6d, 0xa7, 0x75, 0xe6, + 0xd8, 0x86, 0xa4, 0x74, 0xeb, 0x2e, 0x46, 0x28, 0x12, 0x6d, 0x13, 0x91, 0x45, 0x4d, 0xa4, 0xb3, + 0xe6, 0xb7, 0xed, 0x0f, 0xec, 0x72, 0x77, 0xbb, 0x1d, 0xfa, 0x1f, 0x76, 0x3f, 0x90, 0x94, 0x62, + 0xb7, 0x75, 0x97, 0xa1, 0x77, 0xe2, 0xf3, 0x7e, 0xf1, 0x7d, 0xde, 0x0f, 0x0a, 0xaa, 0x33, 0x2a, + 0xa6, 0xcd, 0xcb, 0xe7, 0x7e, 0x94, 0x4c, 0xfd, 0xe7, 0xcd, 0x80, 0xc7, 0x63, 0x36, 0x69, 0x24, + 0x29, 0x97, 0x1c, 0xed, 0x32, 0x21, 0x19, 0x6f, 0x28, 0x8d, 0x46, 0xae, 0x51, 0xdd, 0x9f, 0x70, + 0x3e, 0x89, 0x68, 0x53, 0xab, 0x9c, 0xcf, 0xc7, 0xcd, 0x70, 0x9e, 0xfa, 0x92, 0xf1, 0xd8, 0x18, + 0x55, 0x1f, 0xbc, 0xef, 0x30, 0x49, 0xf9, 0xdb, 0xab, 0x4c, 0xf4, 0x2c, 0xa6, 0xf2, 0x67, 0x9e, + 0x5e, 0xb0, 0x78, 0x92, 0x2b, 0x1c, 0x35, 0x43, 0x2a, 0x24, 0x8b, 0xb5, 0x07, 0x92, 0xce, 0x23, + 0x6a, 0x74, 0x0f, 0xfe, 0xac, 0x00, 0x9c, 0x52, 0x31, 0x6d, 0xeb, 0x0b, 0xa1, 0xff, 0x03, 0x9a, + 0xb1, 0xb7, 0x34, 0x25, 0xc1, 0x94, 0x06, 0x17, 0x44, 0xd0, 0xf4, 0x92, 0xa6, 0xd8, 0xaa, 0x59, + 0xf5, 0x3b, 0x8e, 0xad, 0x25, 0x6d, 0x25, 0x70, 0x35, 0x8e, 0x1a, 0xb0, 0x6b, 0xb4, 0x53, 0x9a, + 0xf0, 0x54, 0xe6, 0xea, 0xeb, 0x5a, 0xbd, 0xa2, 0x45, 0x8e, 0x96, 0x64, 0xfa, 0x87, 0xb0, 0x17, + 0x32, 0xe1, 0x9f, 0x47, 0x94, 0x24, 0x3c, 0x62, 0xc1, 0x95, 0x09, 0x23, 0xf0, 0x46, 0xcd, 0xaa, + 0x6f, 0x3b, 0xbb, 0x99, 0x70, 0xa4, 0x65, 0x3a, 0x90, 0x40, 0xcf, 0xa0, 0xa2, 0x73, 0x23, 0x11, + 0x13, 0x92, 0xc6, 0x44, 0xb9, 0xc3, 0x9b, 0x35, 0xab, 0x7e, 0xcb, 0xd9, 0xd1, 0x82, 0xbe, 0xc6, + 0x47, 0x3c, 0x95, 0xe8, 0x09, 0x18, 0x88, 0x4c, 0xa5, 0x4c, 0x8c, 0xe6, 0x2d, 0xad, 0x59, 0xd2, + 0xf0, 0x2b, 0x29, 0x13, 0xad, 0xf7, 0x02, 0x76, 0x02, 0x1e, 0xc7, 0x34, 0x90, 0x44, 0xb2, 0x19, + 0xe5, 0x73, 0x89, 0x6f, 0xd7, 0xac, 0x7a, 0xe1, 0xf0, 0x41, 0xc3, 0xb0, 0xde, 0xc8, 0x59, 0x6f, + 0x74, 0x32, 0xd6, 0x9d, 0x72, 0x66, 0xe1, 0x19, 0x03, 0xf4, 0x1f, 0x28, 0xb1, 0x78, 0x92, 0x52, + 0x21, 0x48, 0x10, 0xf9, 0x42, 0xe0, 0x2d, 0x9d, 0x75, 0x31, 0x03, 0xdb, 0x0a, 0x43, 0x4f, 0x61, + 0x27, 0x57, 0x52, 0xdc, 0xb0, 0x80, 0xe2, 0x6d, 0xad, 0x56, 0xce, 0x60, 0xd7, 0xa0, 0x68, 0x06, + 0xf7, 0xaf, 0xbd, 0xf1, 0x58, 0xa6, 0x3c, 0x8a, 0x68, 0x4a, 0x66, 0x3c, 0xa4, 0xf8, 0x4e, 0xcd, + 0xaa, 0x97, 0x0f, 0xbf, 0x68, 0xac, 0x68, 0x92, 0xc6, 0xa2, 0x72, 0x8d, 0x5e, 0x16, 0xf7, 0xda, + 0xfa, 0x94, 0x87, 0xd4, 0xd9, 0x63, 0xab, 0x60, 0x34, 0x84, 0x82, 0x3f, 0x97, 0xd3, 0xac, 0x0a, + 0x18, 0x74, 0x88, 0x67, 0x37, 0x85, 0x68, 0xcd, 0xe5, 0xd4, 0xd4, 0xe6, 0xc5, 0x3a, 0xb6, 0x1c, + 0xf0, 0xaf, 0xcf, 0xa8, 0x07, 0x95, 0x34, 0x14, 0x24, 0xa5, 0xe3, 0x94, 0x8a, 0x29, 0x09, 0x69, + 0xe4, 0x5f, 0xe1, 0xc2, 0x0d, 0x9c, 0x6a, 0x2f, 0x3b, 0x69, 0x28, 0x1c, 0x63, 0xd6, 0x51, 0x56, + 0xe8, 0xbf, 0x50, 0xa6, 0xb1, 0xee, 0x11, 0x99, 0xfa, 0x01, 0x8b, 0x27, 0xb8, 0xa8, 0xbb, 0xa3, + 0x64, 0x50, 0xcf, 0x80, 0xaa, 0xd6, 0x7e, 0x10, 0x28, 0xc2, 0x22, 0x3e, 0x21, 0x63, 0x16, 0x51, + 0x5c, 0xd2, 0xd4, 0x96, 0x0c, 0xdc, 0xe7, 0x93, 0x63, 0x16, 0x51, 0xf4, 0x12, 0xca, 0x21, 0x1d, + 0xfb, 0xf3, 0x48, 0x12, 0x33, 0x74, 0xb8, 0xac, 0xaf, 0x55, 0x5b, 0x99, 0xed, 0x48, 0xf5, 0x89, + 0x49, 0xd7, 0x29, 0x65, 0x76, 0xd9, 0x68, 0x3c, 0x85, 0x92, 0x69, 0x76, 0x3f, 0x0c, 0x15, 0xa5, + 0xd8, 0x56, 0xe1, 0x74, 0x0e, 0x45, 0x2d, 0x68, 0x19, 0x1c, 0xfd, 0x04, 0xf7, 0xf9, 0x5c, 0x9e, + 0xf3, 0x79, 0x1c, 0xaa, 0x14, 0xc6, 0x63, 0x16, 0xe4, 0x44, 0x57, 0x74, 0xe8, 0x1b, 0x6b, 0x39, + 0xcc, 0xcc, 0x3d, 0x63, 0xbd, 0xc4, 0xf9, 0x1e, 0x5f, 0x25, 0x42, 0x1d, 0xf8, 0x77, 0xc6, 0x59, + 0x10, 0x31, 0x1a, 0x4b, 0x22, 0x58, 0xf8, 0xfe, 0x8c, 0xe1, 0x5d, 0x4d, 0xe2, 0x43, 0xa3, 0xd6, + 0xd6, 0x5a, 0x2e, 0x0b, 0x97, 0x67, 0x0d, 0xd5, 0xa0, 0x28, 0x42, 0x41, 0xe6, 0xa1, 0x20, 0x89, + 0x2f, 0xa7, 0xf8, 0xae, 0xe6, 0x13, 0x44, 0x28, 0xce, 0x42, 0x31, 0xf2, 0xe5, 0x54, 0x95, 0x59, + 0x7c, 0x54, 0xe6, 0xbd, 0x7f, 0x54, 0x66, 0xf1, 0x41, 0x99, 0x5f, 0x41, 0xd9, 0xd4, 0x83, 0x08, + 0x3e, 0x4f, 0x03, 0x2a, 0xf0, 0xbd, 0xda, 0x46, 0xbd, 0x70, 0xf8, 0x78, 0x25, 0x39, 0x86, 0x18, + 0x57, 0x6b, 0x3a, 0xa5, 0x60, 0xe9, 0x24, 0xd0, 0x11, 0xdc, 0xcb, 0x92, 0x57, 0x77, 0x93, 0xfc, + 0x82, 0xc6, 0x64, 0xc6, 0xe7, 0xb1, 0xc4, 0xf7, 0xcd, 0x5a, 0x31, 0x52, 0x37, 0x14, 0x9e, 0x92, + 0x9d, 0x2a, 0x91, 0x5a, 0x2b, 0xcb, 0xed, 0xc3, 0xd3, 0x99, 0x2f, 0x31, 0xd6, 0x09, 0xef, 0x2c, + 0x1a, 0x48, 0xc3, 0x2a, 0xc0, 0x32, 0x95, 0x64, 0xec, 0xb3, 0x88, 0xf0, 0x84, 0xc6, 0xf8, 0x81, + 0x09, 0x90, 0x2c, 0x48, 0x3c, 0xf6, 0x59, 0x34, 0x4c, 0x68, 0x8c, 0x1e, 0x43, 0x51, 0xa6, 0x73, + 0x21, 0x49, 0xc8, 0x67, 0x3e, 0x8b, 0x71, 0x55, 0xfb, 0x2e, 0x68, 0xac, 0xa3, 0x21, 0xe4, 0xc3, + 0xee, 0xd2, 0x1d, 0x68, 0x1c, 0xf0, 0x50, 0xb5, 0xfb, 0x43, 0x3d, 0x8d, 0xcf, 0x6f, 0x9c, 0xc6, + 0xfc, 0x96, 0xdd, 0xcc, 0xd0, 0xa9, 0xf8, 0x1f, 0x42, 0x88, 0x43, 0x49, 0x06, 0x09, 0xb9, 0xa0, + 0x34, 0xf1, 0x23, 0x76, 0x49, 0xf1, 0x23, 0x5d, 0xac, 0x93, 0xcc, 0xf9, 0xe2, 0xa1, 0xc8, 0x43, + 0x1c, 0x29, 0xaa, 0xd5, 0x9e, 0x63, 0x3c, 0x1e, 0x71, 0x1e, 0xb9, 0x54, 0x4a, 0x16, 0x4f, 0x44, + 0xc3, 0x6b, 0x8f, 0x16, 0xdf, 0x41, 0xf2, 0x6d, 0xee, 0xd1, 0x29, 0xca, 0xa5, 0x13, 0xba, 0x84, + 0x6a, 0x3e, 0x6e, 0xd9, 0xc6, 0x23, 0x21, 0x4d, 0x68, 0x1c, 0xd2, 0x38, 0xb8, 0xc2, 0xff, 0xd2, + 0xd1, 0xbf, 0xbc, 0x29, 0xb5, 0x8e, 0xf1, 0x90, 0x2d, 0xc7, 0xce, 0xb5, 0xbd, 0x83, 0xc3, 0x4f, + 0x48, 0xaa, 0xbf, 0x58, 0xb0, 0xb7, 0x72, 0x6c, 0x90, 0x03, 0x9b, 0x7a, 0x8f, 0x5a, 0x9a, 0xd6, + 0xaf, 0x3f, 0x6b, 0xf6, 0x1a, 0x6a, 0x6b, 0xea, 0x3e, 0xd6, 0xbe, 0x0e, 0x06, 0xb0, 0xa9, 0xf7, + 0xe8, 0x1e, 0x94, 0x9c, 0xee, 0xcb, 0x9e, 0xeb, 0x39, 0x6f, 0xc8, 0x70, 0xd0, 0x7f, 0x63, 0xaf, + 0x55, 0xd7, 0xb7, 0x2d, 0x54, 0x81, 0x3b, 0xad, 0x7e, 0x7f, 0xf8, 0x1d, 0x69, 0x0d, 0xde, 0xd8, + 0x96, 0x86, 0x1e, 0xc1, 0xdd, 0xd7, 0x3d, 0xc7, 0x3b, 0x6b, 0xf5, 0x89, 0xdb, 0x75, 0x5e, 0xf7, + 0xda, 0x5d, 0x63, 0xb0, 0xae, 0xa4, 0xd5, 0xdf, 0x2d, 0xc0, 0x9f, 0x4a, 0x1a, 0xfd, 0x08, 0x05, + 0x36, 0xd3, 0xef, 0xeb, 0x52, 0x1e, 0xdf, 0x7c, 0x2e, 0x87, 0x3a, 0x15, 0x07, 0x8c, 0x47, 0x9d, + 0xc4, 0xff, 0xa0, 0x92, 0xf9, 0x8f, 0xfd, 0x19, 0x15, 0x89, 0xaf, 0x86, 0x71, 0xbd, 0xb6, 0xa1, + 0x9e, 0x7c, 0x23, 0x18, 0x5c, 0xe3, 0x07, 0x8d, 0x2c, 0x73, 0x04, 0xe5, 0x56, 0xbf, 0x4f, 0x06, + 0xad, 0xd3, 0xae, 0x3b, 0x6a, 0xb5, 0xbb, 0xae, 0xbd, 0xa6, 0x30, 0xb7, 0x75, 0xda, 0x5d, 0x80, + 0xb6, 0x75, 0xf0, 0x15, 0xec, 0xad, 0x7c, 0x99, 0xd0, 0x16, 0x6c, 0x0c, 0x8f, 0x8f, 0xed, 0x35, + 0x54, 0x80, 0xad, 0x4e, 0xf7, 0xb8, 0x75, 0xd6, 0xf7, 0x6c, 0x0b, 0x01, 0xdc, 0x76, 0x3d, 0xa7, + 0xd7, 0xf6, 0xec, 0xf5, 0x83, 0x27, 0x00, 0x8b, 0x17, 0x07, 0x6d, 0xc3, 0xe6, 0x60, 0x38, 0xe8, + 0xda, 0x6b, 0xa8, 0x0c, 0x70, 0x7a, 0xa6, 0x99, 0xf4, 0xfa, 0xae, 0x6d, 0x1d, 0x3c, 0x85, 0xca, + 0x47, 0xb3, 0xa0, 0xd4, 0xbd, 0xee, 0xf7, 0x9e, 0xbd, 0xa6, 0xbe, 0x4e, 0xdc, 0xe1, 0xc0, 0xb6, + 0x4e, 0x36, 0xb7, 0x77, 0x6c, 0xfb, 0x64, 0x73, 0x1b, 0xd9, 0xbb, 0x07, 0x02, 0x8a, 0xcb, 0x3b, + 0x05, 0x61, 0xd8, 0xca, 0xf7, 0xba, 0xf9, 0xdb, 0xc9, 0x8f, 0xa8, 0x07, 0x45, 0x19, 0xa9, 0xf7, + 0xdb, 0x34, 0xbf, 0xfe, 0xbb, 0x29, 0x1c, 0x3e, 0xf9, 0x9b, 0x09, 0xf2, 0xfa, 0x6e, 0x3e, 0x2a, + 0x4e, 0x41, 0x46, 0x22, 0x3f, 0xbc, 0xa8, 0xff, 0xfa, 0x6e, 0xdf, 0xfa, 0xed, 0xdd, 0xbe, 0xf5, + 0xc7, 0xbb, 0x7d, 0xeb, 0x87, 0xaa, 0xf1, 0xc0, 0x78, 0xd3, 0x4f, 0x58, 0xf3, 0xbd, 0xdf, 0xb9, + 0xf3, 0xdb, 0x7a, 0x8b, 0x1e, 0xfd, 0x15, 0x00, 0x00, 0xff, 0xff, 0xa2, 0xcc, 0xca, 0xe8, 0x37, + 0x0a, 0x00, 0x00, } diff --git a/mesh/v1alpha1/config.proto b/mesh/v1alpha1/config.proto index 952501f6d5..b2bd4b9956 100644 --- a/mesh/v1alpha1/config.proto +++ b/mesh/v1alpha1/config.proto @@ -71,6 +71,9 @@ message MeshConfig { // Connection timeout used by Envoy. (MUST BE >=1ms) google.protobuf.Duration connect_timeout = 6; + // If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives. + istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive tcp_keepalive = 28; + // Class of ingress resources to be processed by Istio ingress // controller. This corresponds to the value of // "kubernetes.io/ingress.class" annotation. @@ -196,8 +199,41 @@ message MeshConfig { // Fallback to old identity format(without trust domain) if not set. string trust_domain = 26; + // Default service dependency settings for each workload in the + // mesh. ServiceDependencycontrols the reachability of workloads to other + // services in the mesh. + message DefaultServiceDependency { + enum Mode { + // Configure routes to services in all namespaces, i.e. import + // services from all namespaces. + ALL_NAMESPACES = 0; + + // Only configure routes to services that are in the same namespace + // as the workload as well as services in namespaces specified in + // importNamespaces. + SAME_NAMESPACE = 1; + } + + // REQUIRED: The default import setting for every workload in the mesh. + Mode import_mode = 1; + + // Specifies one or more namespaces that should be imported by default + // in all user defined ServiceDependency resources in addition to the + // namespaces explicitly specified by the end user. Use this setting to + // automatically import services/resources from namespaces such as + // istio-system that all workloads in the mesh depend upon. + repeated string import_namespaces = 2; + } + + // The default service dependency setting associated with every workload + // in the mesh. Pilot will program the routes in the sidecars and + // gateways accordingly. If omitted, sidecars will be configured to reach + // every service in the mesh. The default scope can be overriden by + // supplying a ServiceDependency resource per namespace. + DefaultServiceDependency default_service_dependency = 29; + // $hide_from_docs - // Next available field number: 28 + // Next available field number: 30 } // ConfigSource describes information about a configuration store inside a diff --git a/mesh/v1alpha1/istio.mesh.v1alpha1.pb.html b/mesh/v1alpha1/istio.mesh.v1alpha1.pb.html index 2e6b034417..c01ecef561 100644 --- a/mesh/v1alpha1/istio.mesh.v1alpha1.pb.html +++ b/mesh/v1alpha1/istio.mesh.v1alpha1.pb.html @@ -4,7 +4,7 @@ generator: protoc-gen-docs aliases: - /docs/reference/config/service-mesh.html -number_of_entries: 16 +number_of_entries: 18 ---

AuthenticationPolicy

@@ -171,6 +171,14 @@

MeshConfig

Connection timeout used by Envoy. (MUST BE >=1ms)

+ + + +tcpKeepalive +istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive + +

If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.

+ @@ -295,6 +303,18 @@

MeshConfig

Refer to https://github.com/spiffe/spiffe/blob/master/standards/SPIFFE-ID.md#21-trust-domain Fallback to old identity format(without trust domain) if not set.

+ + + +defaultServiceDependency +MeshConfig.DefaultServiceDependency + +

The default service dependency setting associated with every workload +in the mesh. Pilot will program the routes in the sidecars and +gateways accordingly. If omitted, sidecars will be configured to reach +every service in the mesh. The default scope can be overriden by +supplying a ServiceDependency resource per namespace.

+ @@ -318,6 +338,74 @@

MeshConfig.AccessLogEncoding

JSON + + + + +
+

MeshConfig.DefaultServiceDependency

+
+

Default service dependency settings for each workload in the +mesh. ServiceDependencycontrols the reachability of workloads to other +services in the mesh.

+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
importModeMeshConfig.DefaultServiceDependency.Mode +

REQUIRED: The default import setting for every workload in the mesh.

+ +
importNamespacesstring[] +

Specifies one or more namespaces that should be imported by default +in all user defined ServiceDependency resources in addition to the +namespaces explicitly specified by the end user. Use this setting to +automatically import services/resources from namespaces such as +istio-system that all workloads in the mesh depend upon.

+ +
+
+

MeshConfig.DefaultServiceDependency.Mode

+
+ + + + + + + + + + + + + + + diff --git a/networking/v1alpha3/destination_rule.pb.go b/networking/v1alpha3/destination_rule.pb.go index 5e36f5a482..434926b92d 100644 --- a/networking/v1alpha3/destination_rule.pb.go +++ b/networking/v1alpha3/destination_rule.pb.go @@ -8,6 +8,7 @@ networking/v1alpha3/destination_rule.proto networking/v1alpha3/envoy_filter.proto networking/v1alpha3/gateway.proto + networking/v1alpha3/service_dependency.proto networking/v1alpha3/service_entry.proto networking/v1alpha3/virtual_service.proto @@ -23,10 +24,12 @@ Gateway Server Port + ServiceDependency ServiceEntry VirtualService Destination HTTPRoute + Headers TLSRoute TCPRoute HTTPMatchRequest @@ -244,6 +247,11 @@ type DestinationRule struct { // One or more named sets that represent individual versions of a // service. Traffic policies can be overridden at subset level. Subsets []*Subset `protobuf:"bytes,3,rep,name=subsets" json:"subsets,omitempty"` + // The visibility setting associated with this DestinationRule. Set to + // PRIVATE if this destination rule should not be exported, i.e. restrict + // the applicability of this destination rule to only workloads in the same + // namespace as the destination rule. + ConfigScope ConfigScope `protobuf:"varint,4,opt,name=config_scope,json=configScope,proto3,enum=istio.networking.v1alpha3.ConfigScope" json:"config_scope,omitempty"` } func (m *DestinationRule) Reset() { *m = DestinationRule{} } @@ -272,6 +280,13 @@ func (m *DestinationRule) GetSubsets() []*Subset { return nil } +func (m *DestinationRule) GetConfigScope() ConfigScope { + if m != nil { + return m.ConfigScope + } + return ConfigScope_PUBLIC +} + // Traffic policies to apply for a specific destination, across all // destination ports. See DestinationRule for examples. type TrafficPolicy struct { @@ -869,6 +884,9 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) GetTtl() *time.Durati // tcp: // maxConnections: 100 // connectTimeout: 30ms +// tcpKeepalive: +// time: 7200s +// interval: 75s // ``` type ConnectionPoolSettings struct { // Settings common to both HTTP and TCP upstream connections. @@ -904,6 +922,8 @@ type ConnectionPoolSettings_TCPSettings struct { MaxConnections int32 `protobuf:"varint,1,opt,name=max_connections,json=maxConnections,proto3" json:"max_connections,omitempty"` // TCP connection timeout. ConnectTimeout *google_protobuf.Duration `protobuf:"bytes,2,opt,name=connect_timeout,json=connectTimeout" json:"connect_timeout,omitempty"` + // If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives. + TcpKeepalive *ConnectionPoolSettings_TCPSettings_TcpKeepalive `protobuf:"bytes,3,opt,name=tcp_keepalive,json=tcpKeepalive" json:"tcp_keepalive,omitempty"` } func (m *ConnectionPoolSettings_TCPSettings) Reset() { *m = ConnectionPoolSettings_TCPSettings{} } @@ -927,6 +947,61 @@ func (m *ConnectionPoolSettings_TCPSettings) GetConnectTimeout() *google_protobu return nil } +func (m *ConnectionPoolSettings_TCPSettings) GetTcpKeepalive() *ConnectionPoolSettings_TCPSettings_TcpKeepalive { + if m != nil { + return m.TcpKeepalive + } + return nil +} + +// TCP keepalive. +type ConnectionPoolSettings_TCPSettings_TcpKeepalive struct { + // Maximum number of keepalive probes to send without response before + // deciding the connection is dead. Default is to use the OS level configuration + // (unless overridden, Linux defaults to 9.) + Probes uint32 `protobuf:"varint,1,opt,name=probes,proto3" json:"probes,omitempty"` + // The time duration a connection needs to be idle before keep-alive + // probes start being sent. Default is to use the OS level configuration + // (unless overridden, Linux defaults to 7200s (ie 2 hours.) + Time *google_protobuf.Duration `protobuf:"bytes,2,opt,name=time" json:"time,omitempty"` + // The time duration between keep-alive probes. + // Default is to use the OS level configuration + // (unless overridden, Linux defaults to 75s.) + Interval *google_protobuf.Duration `protobuf:"bytes,3,opt,name=interval" json:"interval,omitempty"` +} + +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) Reset() { + *m = ConnectionPoolSettings_TCPSettings_TcpKeepalive{} +} +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) String() string { + return proto.CompactTextString(m) +} +func (*ConnectionPoolSettings_TCPSettings_TcpKeepalive) ProtoMessage() {} +func (*ConnectionPoolSettings_TCPSettings_TcpKeepalive) Descriptor() ([]byte, []int) { + return fileDescriptorDestinationRule, []int{4, 0, 0} +} + +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) GetProbes() uint32 { + if m != nil { + return m.Probes + } + return 0 +} + +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) GetTime() *google_protobuf.Duration { + if m != nil { + return m.Time + } + return nil +} + +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) GetInterval() *google_protobuf.Duration { + if m != nil { + return m.Interval + } + return nil +} + // Settings applicable to HTTP1.1/HTTP2/GRPC connections. type ConnectionPoolSettings_HTTPSettings struct { // Maximum number of pending HTTP requests to a destination. Default 1024. @@ -1211,6 +1286,7 @@ func init() { proto.RegisterType((*LoadBalancerSettings_ConsistentHashLB_HTTPCookie)(nil), "istio.networking.v1alpha3.LoadBalancerSettings.ConsistentHashLB.HTTPCookie") proto.RegisterType((*ConnectionPoolSettings)(nil), "istio.networking.v1alpha3.ConnectionPoolSettings") proto.RegisterType((*ConnectionPoolSettings_TCPSettings)(nil), "istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings") + proto.RegisterType((*ConnectionPoolSettings_TCPSettings_TcpKeepalive)(nil), "istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive") proto.RegisterType((*ConnectionPoolSettings_HTTPSettings)(nil), "istio.networking.v1alpha3.ConnectionPoolSettings.HTTPSettings") proto.RegisterType((*OutlierDetection)(nil), "istio.networking.v1alpha3.OutlierDetection") proto.RegisterType((*TLSSettings)(nil), "istio.networking.v1alpha3.TLSSettings") @@ -1260,6 +1336,11 @@ func (m *DestinationRule) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.ConfigScope != 0 { + dAtA[i] = 0x20 + i++ + i = encodeVarintDestinationRule(dAtA, i, uint64(m.ConfigScope)) + } return i, nil } @@ -1670,6 +1751,59 @@ func (m *ConnectionPoolSettings_TCPSettings) MarshalTo(dAtA []byte) (int, error) } i += n19 } + if m.TcpKeepalive != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintDestinationRule(dAtA, i, uint64(m.TcpKeepalive.Size())) + n20, err := m.TcpKeepalive.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n20 + } + return i, nil +} + +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) 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 *ConnectionPoolSettings_TCPSettings_TcpKeepalive) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Probes != 0 { + dAtA[i] = 0x8 + i++ + i = encodeVarintDestinationRule(dAtA, i, uint64(m.Probes)) + } + if m.Time != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintDestinationRule(dAtA, i, uint64(m.Time.Size())) + n21, err := m.Time.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n21 + } + if m.Interval != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintDestinationRule(dAtA, i, uint64(m.Interval.Size())) + n22, err := m.Interval.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n22 + } return i, nil } @@ -1735,21 +1869,21 @@ func (m *OutlierDetection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintDestinationRule(dAtA, i, uint64(m.Interval.Size())) - n20, err := m.Interval.MarshalTo(dAtA[i:]) + n23, err := m.Interval.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n20 + i += n23 } if m.BaseEjectionTime != nil { dAtA[i] = 0x1a i++ i = encodeVarintDestinationRule(dAtA, i, uint64(m.BaseEjectionTime.Size())) - n21, err := m.BaseEjectionTime.MarshalTo(dAtA[i:]) + n24, err := m.BaseEjectionTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n21 + i += n24 } if m.MaxEjectionPercent != 0 { dAtA[i] = 0x20 @@ -1852,6 +1986,9 @@ func (m *DestinationRule) Size() (n int) { n += 1 + l + sovDestinationRule(uint64(l)) } } + if m.ConfigScope != 0 { + n += 1 + sovDestinationRule(uint64(m.ConfigScope)) + } return n } @@ -2031,6 +2168,27 @@ func (m *ConnectionPoolSettings_TCPSettings) Size() (n int) { l = m.ConnectTimeout.Size() n += 1 + l + sovDestinationRule(uint64(l)) } + if m.TcpKeepalive != nil { + l = m.TcpKeepalive.Size() + n += 1 + l + sovDestinationRule(uint64(l)) + } + return n +} + +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) Size() (n int) { + var l int + _ = l + if m.Probes != 0 { + n += 1 + sovDestinationRule(uint64(m.Probes)) + } + if m.Time != nil { + l = m.Time.Size() + n += 1 + l + sovDestinationRule(uint64(l)) + } + if m.Interval != nil { + l = m.Interval.Size() + n += 1 + l + sovDestinationRule(uint64(l)) + } return n } @@ -2241,6 +2399,25 @@ func (m *DestinationRule) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigScope", wireType) + } + m.ConfigScope = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDestinationRule + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ConfigScope |= (ConfigScope(b) & 0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipDestinationRule(dAtA[iNdEx:]) @@ -3511,6 +3688,174 @@ func (m *ConnectionPoolSettings_TCPSettings) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TcpKeepalive", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDestinationRule + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDestinationRule + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TcpKeepalive == nil { + m.TcpKeepalive = &ConnectionPoolSettings_TCPSettings_TcpKeepalive{} + } + if err := m.TcpKeepalive.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipDestinationRule(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthDestinationRule + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) 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 ErrIntOverflowDestinationRule + } + 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: TcpKeepalive: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TcpKeepalive: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Probes", wireType) + } + m.Probes = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDestinationRule + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Probes |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Time", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDestinationRule + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDestinationRule + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Time == nil { + m.Time = &google_protobuf.Duration{} + } + if err := m.Time.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Interval", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDestinationRule + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDestinationRule + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Interval == nil { + m.Interval = &google_protobuf.Duration{} + } + if err := m.Interval.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipDestinationRule(dAtA[iNdEx:]) @@ -4155,87 +4500,94 @@ func init() { } var fileDescriptorDestinationRule = []byte{ - // 1312 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcf, 0x6e, 0x1b, 0x37, - 0x13, 0xb7, 0xfe, 0xc6, 0x1e, 0xc5, 0xb2, 0xcc, 0xcf, 0xf8, 0x3e, 0x45, 0x1f, 0xe0, 0xb8, 0x42, - 0xd1, 0xb8, 0x69, 0xb3, 0xaa, 0x1d, 0x14, 0x48, 0x13, 0xa4, 0x88, 0x65, 0x0b, 0x91, 0x11, 0xd9, - 0x12, 0xb8, 0x32, 0x50, 0xe4, 0xb2, 0xa0, 0x56, 0xb4, 0xc4, 0x78, 0x77, 0xb9, 0x25, 0xb9, 0xaa, - 0x9d, 0xf7, 0x68, 0xd1, 0x6b, 0x2f, 0x7d, 0x81, 0xbe, 0x44, 0xd1, 0x53, 0xaf, 0xed, 0xa5, 0x45, - 0x5e, 0xa0, 0xa7, 0xde, 0x0b, 0x72, 0x77, 0x25, 0x39, 0x71, 0x9c, 0x18, 0x69, 0x6e, 0x5c, 0xce, - 0xfc, 0x7e, 0x33, 0xe4, 0x0c, 0x7f, 0x23, 0xc1, 0xed, 0x80, 0xaa, 0x6f, 0xb8, 0x38, 0x61, 0xc1, - 0xa8, 0x31, 0xd9, 0x22, 0x5e, 0x38, 0x26, 0x77, 0x1b, 0x43, 0x2a, 0x15, 0x0b, 0x88, 0x62, 0x3c, - 0x70, 0x44, 0xe4, 0x51, 0x2b, 0x14, 0x5c, 0x71, 0x74, 0x83, 0x49, 0xc5, 0xb8, 0x35, 0x43, 0x58, - 0x29, 0xa2, 0xb6, 0x3e, 0xe2, 0x7c, 0xe4, 0xd1, 0x86, 0x71, 0x1c, 0x44, 0xc7, 0x8d, 0x61, 0x24, - 0x0c, 0x3e, 0x86, 0xd6, 0x3e, 0xbe, 0x28, 0xcc, 0x84, 0x09, 0x15, 0x11, 0xcf, 0x91, 0x54, 0x4c, - 0x98, 0x9b, 0x44, 0xa9, 0xad, 0x8d, 0xf8, 0x88, 0x9b, 0x65, 0x43, 0xaf, 0xe2, 0xdd, 0xfa, 0x4f, - 0x19, 0x58, 0xd9, 0x9b, 0xa5, 0x85, 0x23, 0x8f, 0x22, 0x04, 0xf9, 0x31, 0x97, 0xaa, 0x9a, 0xd9, - 0xc8, 0x6c, 0x2e, 0x61, 0xb3, 0x46, 0x5d, 0x28, 0x2b, 0x41, 0x8e, 0x8f, 0x99, 0xeb, 0x84, 0xdc, - 0x63, 0xee, 0x59, 0x35, 0xbb, 0x91, 0xd9, 0x2c, 0x6d, 0x6f, 0x5a, 0xaf, 0x4d, 0xde, 0xea, 0xc7, - 0x80, 0x9e, 0xf1, 0xc7, 0xcb, 0x6a, 0xfe, 0x13, 0x3d, 0x80, 0x6b, 0x32, 0x1a, 0x48, 0xaa, 0x64, - 0x35, 0xb7, 0x91, 0xdb, 0x2c, 0x6d, 0x7f, 0x70, 0x09, 0x93, 0x6d, 0x3c, 0x71, 0x8a, 0xa8, 0xff, - 0x5e, 0x84, 0xe5, 0x73, 0xec, 0xa8, 0x0f, 0xcb, 0x1e, 0x27, 0x43, 0x67, 0x40, 0x3c, 0x12, 0xb8, - 0x54, 0x98, 0xe4, 0x4b, 0xdb, 0x8d, 0x4b, 0x48, 0x3b, 0x9c, 0x0c, 0x9b, 0x89, 0xbb, 0x4d, 0x95, - 0x62, 0xc1, 0x48, 0xe2, 0xeb, 0xde, 0xdc, 0x2e, 0x7a, 0x0a, 0x2b, 0x2e, 0x0f, 0x02, 0xea, 0x9a, - 0x92, 0x85, 0x9c, 0x7b, 0xc9, 0xb1, 0xb7, 0x2e, 0xe1, 0xdd, 0x9d, 0x22, 0x7a, 0x9c, 0x7b, 0x53, - 0xe6, 0xb2, 0x7b, 0x6e, 0x1f, 0x7d, 0x05, 0xab, 0x3c, 0x52, 0x1e, 0xa3, 0xc2, 0x19, 0x52, 0x15, - 0x1b, 0xaa, 0x39, 0xc3, 0xfe, 0xc9, 0x25, 0xec, 0xdd, 0x18, 0xb3, 0x97, 0x42, 0x70, 0x85, 0xbf, - 0xb4, 0x83, 0xee, 0x41, 0x4e, 0x79, 0xb2, 0x9a, 0x37, 0x5c, 0x1f, 0x5d, 0x56, 0xa0, 0x8e, 0x3d, - 0x4d, 0x4f, 0x43, 0xd0, 0x33, 0xf8, 0x4f, 0xc8, 0x85, 0x72, 0x3c, 0x3a, 0xa1, 0xba, 0x7f, 0x62, - 0x5b, 0xb5, 0x60, 0x0a, 0x74, 0xff, 0x6d, 0x4b, 0x6d, 0xf5, 0xb8, 0x50, 0xe7, 0x8b, 0xbf, 0xaa, - 0x69, 0x3b, 0x9a, 0x35, 0x0d, 0x58, 0xfb, 0x2e, 0x07, 0xab, 0xaf, 0x38, 0xa2, 0x07, 0x90, 0xd7, - 0xae, 0x49, 0xf9, 0x6e, 0x5d, 0x12, 0x52, 0x63, 0x6d, 0xea, 0x51, 0x57, 0x71, 0x81, 0x0d, 0xe8, - 0xd5, 0x26, 0xc8, 0xbe, 0xa7, 0x26, 0xc8, 0xbd, 0xd7, 0x26, 0xc8, 0xff, 0x8b, 0x4d, 0x50, 0xb8, - 0x72, 0x13, 0xd4, 0xff, 0xca, 0x40, 0x31, 0x7e, 0x70, 0x5a, 0x09, 0x02, 0xe2, 0xd3, 0x54, 0x09, - 0xf4, 0x1a, 0xb5, 0xa0, 0xe8, 0x91, 0x01, 0xf5, 0x64, 0x35, 0x6b, 0xda, 0xe2, 0xce, 0x1b, 0xdf, - 0xad, 0xd5, 0x31, 0xfe, 0xad, 0x40, 0x89, 0x33, 0x9c, 0x80, 0x2f, 0x10, 0x94, 0xdc, 0x3b, 0x09, - 0x4a, 0xed, 0x0b, 0x28, 0xcd, 0xc5, 0x41, 0x15, 0xc8, 0x9d, 0xd0, 0xb3, 0x24, 0x73, 0xbd, 0x44, - 0x6b, 0x50, 0x98, 0x10, 0x2f, 0xa2, 0xa6, 0x2b, 0x96, 0x70, 0xfc, 0x71, 0x3f, 0x7b, 0x2f, 0x53, - 0xff, 0xb1, 0x00, 0x6b, 0x17, 0x35, 0x02, 0xc2, 0x50, 0x94, 0xcc, 0x0f, 0xbd, 0xf8, 0x06, 0xca, - 0xdb, 0xf7, 0xae, 0xd8, 0x49, 0x96, 0x6d, 0xd0, 0x9d, 0x66, 0x7b, 0x01, 0x27, 0x4c, 0xe8, 0xc4, - 0xb4, 0x93, 0x64, 0x52, 0xd1, 0x40, 0x39, 0x63, 0x22, 0xc7, 0x49, 0x9b, 0x3e, 0xba, 0x2a, 0xf9, - 0xee, 0x94, 0xa6, 0x4d, 0xe4, 0xd8, 0x04, 0x29, 0xbb, 0xe7, 0xf6, 0x6a, 0x7f, 0x67, 0xa1, 0xf2, - 0xb2, 0x1b, 0xba, 0x0d, 0x95, 0xb1, 0x52, 0xa1, 0x33, 0xa6, 0x64, 0x48, 0x85, 0x33, 0xab, 0xb0, - 0x26, 0xd0, 0x96, 0xb6, 0x31, 0x1c, 0xea, 0x6a, 0x07, 0x50, 0x32, 0xbe, 0x2e, 0xe7, 0x27, 0x8c, - 0x26, 0x99, 0x3e, 0x79, 0xd7, 0x4c, 0xad, 0x76, 0xbf, 0xdf, 0xdb, 0x35, 0x94, 0xed, 0x05, 0x0c, - 0x3a, 0x42, 0xfc, 0x85, 0x3e, 0x84, 0xe5, 0x48, 0x52, 0x47, 0xf2, 0x48, 0xb8, 0xd4, 0x61, 0xa1, - 0xe9, 0x8a, 0xc5, 0xf6, 0x02, 0x2e, 0x45, 0x92, 0xda, 0x66, 0x77, 0x3f, 0x44, 0xb7, 0x61, 0xd5, - 0x67, 0x01, 0xf3, 0x23, 0xdf, 0x11, 0x2c, 0x18, 0x39, 0x92, 0x3d, 0xa7, 0xe6, 0xd9, 0xe4, 0xf1, - 0x4a, 0x62, 0xc0, 0x2c, 0x18, 0xd9, 0xec, 0x39, 0xad, 0x8d, 0x00, 0x66, 0xd1, 0x2e, 0xec, 0x68, - 0x04, 0xf9, 0x90, 0xa8, 0x71, 0xd2, 0x17, 0x66, 0x8d, 0xb6, 0x20, 0xa7, 0x54, 0xfa, 0xd0, 0x6f, - 0x58, 0xf1, 0x18, 0xb6, 0xd2, 0x31, 0x6c, 0xed, 0x25, 0x63, 0xb8, 0x99, 0xff, 0xfe, 0x8f, 0x9b, - 0x19, 0xac, 0x7d, 0x9b, 0x00, 0x8b, 0xba, 0x9a, 0xce, 0x09, 0x3d, 0xab, 0xb7, 0x61, 0x31, 0x2d, - 0x3d, 0x5a, 0x81, 0x12, 0xee, 0x1e, 0x1d, 0xee, 0x39, 0xb8, 0xdb, 0xdc, 0x3f, 0xac, 0x2c, 0xa0, - 0x32, 0x40, 0xa7, 0xb5, 0x63, 0xf7, 0x9d, 0xdd, 0xee, 0xe1, 0x61, 0x25, 0x83, 0x00, 0x8a, 0x78, - 0xe7, 0x70, 0xaf, 0x7b, 0x50, 0xc9, 0x6a, 0xe7, 0xde, 0x8e, 0x6d, 0xf7, 0xdb, 0xb8, 0x7b, 0xf4, - 0xb8, 0x5d, 0xc9, 0x35, 0x4b, 0xb0, 0xe4, 0x0d, 0x92, 0x27, 0x52, 0xff, 0x36, 0x0f, 0xff, 0xbd, - 0x58, 0x59, 0x50, 0x17, 0x72, 0xca, 0x0d, 0x13, 0xdd, 0x7c, 0x78, 0x65, 0x65, 0xb2, 0xfa, 0xbb, - 0xbd, 0x39, 0x19, 0x70, 0x43, 0x84, 0x21, 0xaf, 0xeb, 0x92, 0x94, 0xfc, 0xcb, 0xab, 0x33, 0xea, - 0x5b, 0x9f, 0x52, 0x1a, 0xae, 0xda, 0x73, 0x28, 0xcd, 0xc5, 0x41, 0xb7, 0x60, 0xc5, 0x27, 0xa7, - 0xce, 0x4c, 0x13, 0xa5, 0xc9, 0xbf, 0x80, 0xcb, 0x3e, 0x39, 0x9d, 0xb1, 0x4a, 0xd4, 0x9c, 0x4a, - 0xb0, 0xa3, 0x98, 0x4f, 0x79, 0xa4, 0x92, 0xb4, 0x5e, 0x5f, 0x99, 0xa9, 0xd4, 0xf6, 0x63, 0x40, - 0xed, 0xb7, 0x0c, 0x5c, 0x9f, 0x4f, 0x09, 0x3d, 0x80, 0x9a, 0x4e, 0x6a, 0xcb, 0xd1, 0x39, 0x84, - 0x34, 0x18, 0xea, 0x4e, 0x12, 0xf4, 0xeb, 0x88, 0x4a, 0x95, 0x26, 0xf2, 0x3f, 0xe3, 0x71, 0x40, - 0x4e, 0x7b, 0xb1, 0x1d, 0x27, 0x66, 0xf4, 0x29, 0x20, 0x6d, 0xda, 0x36, 0xe0, 0x29, 0x28, 0x6b, - 0x40, 0xe6, 0x75, 0x6d, 0x1f, 0x90, 0xd3, 0xa9, 0xf7, 0x43, 0xf8, 0xff, 0xbc, 0x9f, 0x13, 0x52, - 0x31, 0x77, 0x6a, 0xd3, 0x65, 0x05, 0x5c, 0xf5, 0x67, 0x88, 0x1e, 0x15, 0xb3, 0xf3, 0xa3, 0x9b, - 0x50, 0x8a, 0xe1, 0x4a, 0x30, 0x1a, 0x0f, 0xf6, 0x02, 0x06, 0xe3, 0x6e, 0x76, 0xea, 0x3f, 0x64, - 0xa1, 0xf2, 0xf2, 0x4c, 0x40, 0x77, 0x00, 0x69, 0x35, 0xa0, 0x6e, 0xa4, 0xd8, 0x84, 0x3a, 0x54, - 0x08, 0x2e, 0xd2, 0x73, 0xad, 0xce, 0x59, 0x5a, 0xc6, 0x80, 0x3e, 0x87, 0x45, 0x16, 0x28, 0x2a, - 0x26, 0xc4, 0x7b, 0xf3, 0xe5, 0x4e, 0x5d, 0xd1, 0x63, 0x40, 0x03, 0x22, 0xa9, 0x43, 0x9f, 0x25, - 0x03, 0x52, 0x17, 0xe8, 0x8d, 0xef, 0x06, 0x57, 0x34, 0xa8, 0x95, 0x60, 0x74, 0x89, 0xd0, 0x67, - 0xb0, 0xa6, 0x0f, 0x39, 0xe5, 0x09, 0xa9, 0x70, 0x69, 0xa0, 0x92, 0xd3, 0x22, 0x9f, 0x9c, 0xa6, - 0xee, 0xbd, 0xd8, 0xa2, 0x6b, 0xe0, 0xb3, 0x40, 0xcb, 0x98, 0xa7, 0xc6, 0x53, 0xff, 0x42, 0x5c, - 0x03, 0x9f, 0x05, 0x6d, 0x63, 0x48, 0xbc, 0xeb, 0xbf, 0x64, 0xa1, 0x34, 0x37, 0xeb, 0x50, 0x13, - 0xf2, 0x3e, 0x1f, 0xa6, 0xca, 0x6e, 0xbd, 0xdd, 0x84, 0xd4, 0x6b, 0x8d, 0xc2, 0x06, 0x6b, 0xae, - 0xd8, 0x63, 0x5a, 0xc7, 0x5d, 0x2a, 0x14, 0x3b, 0x66, 0x2e, 0x51, 0xe9, 0x7c, 0x59, 0x8d, 0x2d, - 0xbb, 0x33, 0x83, 0xae, 0x63, 0x28, 0xd8, 0x84, 0x28, 0xaa, 0x45, 0xc2, 0x5c, 0xd2, 0x12, 0x86, - 0x64, 0xeb, 0x09, 0x3d, 0xd3, 0x0f, 0xc2, 0x25, 0xf3, 0x5c, 0x71, 0xb1, 0x97, 0x70, 0xd9, 0x25, - 0x73, 0x44, 0x52, 0x0b, 0xa0, 0x8c, 0x06, 0xfa, 0x3e, 0x1c, 0xe2, 0x29, 0x23, 0xe1, 0xf1, 0xcf, - 0xb4, 0x25, 0xbc, 0x92, 0x18, 0x76, 0x3c, 0xa5, 0x15, 0x5c, 0xea, 0x49, 0x28, 0x03, 0x56, 0x2d, - 0xc6, 0x93, 0x50, 0x06, 0xac, 0xfe, 0x08, 0xae, 0x25, 0xe7, 0x40, 0x25, 0xb8, 0xb6, 0xb7, 0x6f, - 0xef, 0x34, 0x3b, 0xad, 0xca, 0x82, 0x16, 0x22, 0x7b, 0xff, 0xa0, 0xd7, 0x69, 0xc5, 0xa2, 0x74, - 0x70, 0xd4, 0x3f, 0xda, 0xe9, 0x54, 0xb2, 0xa8, 0x02, 0xd7, 0xf7, 0xed, 0xfe, 0x7e, 0xd7, 0x49, - 0x76, 0x72, 0x4d, 0xeb, 0xe7, 0x17, 0xeb, 0x99, 0x5f, 0x5f, 0xac, 0x67, 0xfe, 0x7c, 0xb1, 0x9e, - 0x79, 0xba, 0x11, 0xdf, 0x1d, 0xe3, 0x0d, 0x12, 0xb2, 0xc6, 0x05, 0x7f, 0x49, 0x06, 0x45, 0xd3, - 0x01, 0x77, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0xb3, 0x95, 0xd0, 0xbb, 0x17, 0x0d, 0x00, 0x00, + // 1423 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcd, 0x6e, 0x1b, 0xb7, + 0x16, 0xb6, 0x7e, 0x63, 0x1f, 0xd9, 0xb2, 0xcc, 0x6b, 0xe4, 0x2a, 0xba, 0x80, 0xe3, 0x2b, 0x5c, + 0xdc, 0xb8, 0x69, 0x32, 0xaa, 0x1d, 0x14, 0x48, 0x13, 0xa4, 0x88, 0x65, 0x1b, 0x91, 0x1b, 0xd9, + 0x12, 0x28, 0x19, 0x28, 0xb2, 0x19, 0x50, 0x23, 0x5a, 0x62, 0x3c, 0x1a, 0x4e, 0x49, 0x8e, 0x6a, + 0xe7, 0x19, 0xba, 0x0e, 0xba, 0xed, 0xa6, 0xcf, 0x52, 0x74, 0xd5, 0x6d, 0xbb, 0x69, 0x91, 0x17, + 0xe8, 0xaa, 0x9b, 0x2e, 0x8a, 0x82, 0x1c, 0xea, 0xc7, 0x89, 0x23, 0xc7, 0x48, 0xb3, 0x23, 0x79, + 0xbe, 0xef, 0x90, 0x3c, 0xe7, 0x9b, 0x73, 0x38, 0x70, 0x3b, 0xa0, 0xea, 0x6b, 0x2e, 0x4e, 0x58, + 0xd0, 0xab, 0x0c, 0x37, 0x89, 0x1f, 0xf6, 0xc9, 0xbd, 0x4a, 0x97, 0x4a, 0xc5, 0x02, 0xa2, 0x18, + 0x0f, 0x5c, 0x11, 0xf9, 0xd4, 0x09, 0x05, 0x57, 0x1c, 0xdd, 0x60, 0x52, 0x31, 0xee, 0x4c, 0x18, + 0xce, 0x88, 0x51, 0x5a, 0xeb, 0x71, 0xde, 0xf3, 0x69, 0xc5, 0x00, 0x3b, 0xd1, 0x71, 0xa5, 0x1b, + 0x09, 0xc3, 0x8f, 0xa9, 0xa5, 0x8f, 0x2e, 0xda, 0x66, 0xc8, 0x84, 0x8a, 0x88, 0xef, 0x4a, 0x2a, + 0x86, 0xcc, 0xb3, 0xbb, 0x94, 0xee, 0x5c, 0x04, 0xb5, 0x10, 0xb7, 0x4b, 0x43, 0x1a, 0x74, 0x69, + 0xe0, 0x9d, 0x59, 0xf4, 0x6a, 0x8f, 0xf7, 0xb8, 0x19, 0x56, 0xf4, 0x28, 0x5e, 0x2d, 0xff, 0x95, + 0x80, 0xe5, 0xdd, 0xc9, 0x25, 0x70, 0xe4, 0x53, 0x84, 0x20, 0xdd, 0xe7, 0x52, 0x15, 0x13, 0xeb, + 0x89, 0x8d, 0x05, 0x6c, 0xc6, 0xa8, 0x01, 0x79, 0x25, 0xc8, 0xf1, 0x31, 0xf3, 0xdc, 0x90, 0xfb, + 0xcc, 0x3b, 0x2b, 0x26, 0xd7, 0x13, 0x1b, 0xb9, 0xad, 0x0d, 0xe7, 0xad, 0x57, 0x75, 0xda, 0x31, + 0xa1, 0x69, 0xf0, 0x78, 0x49, 0x4d, 0x4f, 0xd1, 0x43, 0xb8, 0x26, 0xa3, 0x8e, 0xa4, 0x4a, 0x16, + 0x53, 0xeb, 0xa9, 0x8d, 0xdc, 0xd6, 0x7f, 0x67, 0x78, 0x6a, 0x19, 0x24, 0x1e, 0x31, 0xd0, 0x3e, + 0x2c, 0x7a, 0x3c, 0x38, 0x66, 0x3d, 0x57, 0x7a, 0x3c, 0xa4, 0xc5, 0xf4, 0x7a, 0x62, 0x23, 0xbf, + 0xf5, 0xff, 0x19, 0x1e, 0x76, 0x0c, 0xbc, 0xa5, 0xd1, 0x38, 0xe7, 0x4d, 0x26, 0xe5, 0x5f, 0xb2, + 0xb0, 0x74, 0xee, 0xa0, 0xa8, 0x0d, 0x4b, 0x3e, 0x27, 0x5d, 0xb7, 0x43, 0x7c, 0x12, 0x78, 0x54, + 0x98, 0x38, 0xe4, 0xb6, 0x2a, 0x33, 0xbc, 0xd7, 0x39, 0xe9, 0x56, 0x2d, 0xbc, 0x45, 0x95, 0x62, + 0x41, 0x4f, 0xe2, 0x45, 0x7f, 0x6a, 0x15, 0x3d, 0x83, 0x65, 0x8f, 0x07, 0x01, 0xf5, 0x8c, 0x56, + 0x42, 0xce, 0x7d, 0x1b, 0xc1, 0xcd, 0xd9, 0xa7, 0xb6, 0x8c, 0x26, 0xe7, 0xfe, 0xd8, 0x73, 0xde, + 0x3b, 0xb7, 0x8e, 0xbe, 0x84, 0x15, 0x1e, 0x29, 0x9f, 0x51, 0xe1, 0x76, 0xa9, 0x8a, 0x0d, 0xc5, + 0x94, 0xf1, 0xfe, 0xf1, 0x0c, 0xef, 0x8d, 0x98, 0xb3, 0x3b, 0xa2, 0xe0, 0x02, 0x7f, 0x6d, 0x05, + 0xdd, 0x87, 0x94, 0xf2, 0xa5, 0x89, 0x6f, 0x6e, 0x66, 0x7c, 0xdb, 0xf5, 0xd6, 0xf8, 0x78, 0x9a, + 0x82, 0x9e, 0xc3, 0xbf, 0x42, 0x2e, 0x94, 0xeb, 0xd3, 0x21, 0xd5, 0xc2, 0x8d, 0x6d, 0xc5, 0x8c, + 0xc9, 0xf5, 0x83, 0x77, 0x55, 0x8d, 0xd3, 0xe4, 0x42, 0x9d, 0xd7, 0xd1, 0x8a, 0x76, 0x5b, 0xd7, + 0x5e, 0x47, 0x1b, 0x96, 0x5e, 0xa6, 0x60, 0xe5, 0x0d, 0x20, 0x7a, 0x08, 0x69, 0x0d, 0xb5, 0xe9, + 0xbb, 0x35, 0x63, 0x4b, 0xcd, 0x6d, 0x51, 0x9f, 0x7a, 0x8a, 0x0b, 0x6c, 0x48, 0x6f, 0x8a, 0x20, + 0xf9, 0x81, 0x44, 0x90, 0xfa, 0xa0, 0x22, 0x48, 0xff, 0x83, 0x22, 0xc8, 0x5c, 0x59, 0x04, 0xe5, + 0xdf, 0x13, 0x90, 0x8d, 0xbf, 0x5d, 0x5d, 0x54, 0x02, 0x32, 0xa0, 0xa3, 0xa2, 0xa2, 0xc7, 0x68, + 0x0f, 0xb2, 0x3e, 0xe9, 0x50, 0x5f, 0x16, 0x93, 0x46, 0x16, 0x77, 0x2f, 0x2d, 0x01, 0x4e, 0xdd, + 0xe0, 0xf7, 0x02, 0x25, 0xce, 0xb0, 0x25, 0x5f, 0x50, 0x9b, 0x52, 0xef, 0x55, 0x9b, 0x4a, 0x9f, + 0x41, 0x6e, 0x6a, 0x1f, 0x54, 0x80, 0xd4, 0x09, 0x3d, 0xb3, 0x27, 0xd7, 0x43, 0xb4, 0x0a, 0x99, + 0x21, 0xf1, 0x23, 0x6a, 0x54, 0xb1, 0x80, 0xe3, 0xc9, 0x83, 0xe4, 0xfd, 0x44, 0xf9, 0xfb, 0x0c, + 0xac, 0x5e, 0x24, 0x04, 0x84, 0x21, 0x2b, 0xd9, 0x20, 0xf4, 0xe3, 0x08, 0xe4, 0xb7, 0xee, 0x5f, + 0x51, 0x49, 0x4e, 0xcb, 0xb0, 0xeb, 0xd5, 0xda, 0x1c, 0xb6, 0x9e, 0xd0, 0x89, 0x91, 0x93, 0x64, + 0x52, 0xd1, 0x40, 0xb9, 0x7d, 0x22, 0xfb, 0x56, 0xa6, 0x8f, 0xaf, 0xea, 0x7c, 0x67, 0xec, 0xa6, + 0x46, 0x64, 0xdf, 0x6c, 0x92, 0xf7, 0xce, 0xad, 0x95, 0xfe, 0x48, 0x42, 0xe1, 0x75, 0x18, 0xba, + 0x0d, 0x85, 0xbe, 0x52, 0xa1, 0xdb, 0xa7, 0xa4, 0x4b, 0x85, 0x3b, 0xc9, 0xb0, 0x76, 0xa0, 0x2d, + 0x35, 0x63, 0x38, 0xd4, 0xd9, 0x0e, 0x20, 0x67, 0xb0, 0x1e, 0xe7, 0x27, 0x8c, 0xda, 0x93, 0x3e, + 0x7d, 0xdf, 0x93, 0x3a, 0xb5, 0x76, 0xbb, 0xb9, 0x63, 0x5c, 0xd6, 0xe6, 0x30, 0xe8, 0x1d, 0xe2, + 0x19, 0xfa, 0x1f, 0x2c, 0x45, 0x92, 0xba, 0x92, 0x47, 0xc2, 0xa3, 0x2e, 0x0b, 0x8d, 0x2a, 0xe6, + 0x6b, 0x73, 0x38, 0x17, 0x49, 0xda, 0x32, 0xab, 0xfb, 0x21, 0xba, 0x0d, 0x2b, 0x03, 0x16, 0xb0, + 0x41, 0x34, 0x70, 0x05, 0x0b, 0x7a, 0xae, 0x64, 0x2f, 0xe2, 0x7e, 0x92, 0xc6, 0xcb, 0xd6, 0x80, + 0x59, 0xd0, 0x6b, 0xb1, 0x17, 0xb4, 0xd4, 0x03, 0x98, 0xec, 0x76, 0xa1, 0xa2, 0x11, 0xa4, 0x43, + 0xa2, 0xfa, 0x56, 0x17, 0x66, 0x8c, 0x36, 0x21, 0xa5, 0xd4, 0xe8, 0x43, 0xbf, 0xe1, 0xc4, 0xfd, + 0xdf, 0x19, 0xf5, 0x7f, 0x67, 0xd7, 0xf6, 0xff, 0x6a, 0xfa, 0xdb, 0x5f, 0x6f, 0x26, 0xb0, 0xc6, + 0x56, 0x01, 0xe6, 0x75, 0x36, 0xdd, 0x13, 0x7a, 0x56, 0xae, 0xc1, 0xfc, 0x28, 0xf5, 0x68, 0x19, + 0x72, 0xb8, 0x71, 0x74, 0xb8, 0xeb, 0xe2, 0x46, 0x75, 0xff, 0xb0, 0x30, 0x87, 0xf2, 0x00, 0xf5, + 0xbd, 0xed, 0x56, 0xdb, 0xdd, 0x69, 0x1c, 0x1e, 0x16, 0x12, 0x08, 0x20, 0x8b, 0xb7, 0x0f, 0x77, + 0x1b, 0x07, 0x85, 0xa4, 0x06, 0x37, 0xb7, 0x5b, 0xad, 0x76, 0x0d, 0x37, 0x8e, 0x9e, 0xd4, 0x0a, + 0xa9, 0x6a, 0x0e, 0x16, 0xfc, 0x8e, 0xfd, 0x44, 0xca, 0x2f, 0xb3, 0x70, 0xfd, 0xe2, 0xca, 0x82, + 0x1a, 0x90, 0x52, 0x5e, 0x68, 0xeb, 0xe6, 0xa3, 0x2b, 0x57, 0x26, 0xa7, 0xbd, 0xd3, 0x9c, 0x2a, + 0x03, 0x5e, 0x88, 0x30, 0xa4, 0x75, 0x5e, 0x6c, 0xca, 0x3f, 0xbf, 0xba, 0x47, 0x1d, 0xf5, 0xb1, + 0x4b, 0xe3, 0xab, 0xf4, 0x67, 0x12, 0x72, 0x53, 0x1b, 0xa1, 0x5b, 0xb0, 0x3c, 0x20, 0xa7, 0xee, + 0xa4, 0x28, 0x4a, 0x73, 0x81, 0x0c, 0xce, 0x0f, 0xc8, 0xe9, 0xc4, 0xad, 0x44, 0xd5, 0x71, 0x0d, + 0x76, 0x15, 0x1b, 0x50, 0x1e, 0x29, 0x7b, 0xae, 0xb7, 0xa7, 0x66, 0x5c, 0x6b, 0xdb, 0x31, 0x01, + 0x71, 0x58, 0x52, 0x5e, 0xe8, 0x9e, 0x50, 0x1a, 0x12, 0x9f, 0x0d, 0xa9, 0x4d, 0xee, 0x17, 0xef, + 0x15, 0x2b, 0xa7, 0xed, 0x85, 0x4f, 0x47, 0x1e, 0xf1, 0xa2, 0x9a, 0x9a, 0x95, 0xbe, 0x49, 0xc0, + 0xe2, 0xb4, 0x19, 0x5d, 0x87, 0x6c, 0x28, 0x78, 0x87, 0xc6, 0xb7, 0x5c, 0xc2, 0x76, 0x86, 0xee, + 0x42, 0x5a, 0xdf, 0xea, 0xf2, 0x2b, 0x19, 0x18, 0xfa, 0x14, 0xe6, 0x59, 0xa0, 0xa8, 0x18, 0x92, + 0xcb, 0x05, 0x8a, 0xc7, 0xd0, 0xd2, 0xcf, 0x09, 0x58, 0x9c, 0xce, 0x09, 0x7a, 0x08, 0x25, 0x9d, + 0x95, 0x4d, 0x57, 0xe7, 0x40, 0x3f, 0x3c, 0xf5, 0xa7, 0x24, 0xe8, 0x57, 0x11, 0x95, 0x6a, 0x94, + 0x88, 0x7f, 0x1b, 0xc4, 0x01, 0x39, 0x6d, 0xc6, 0x76, 0x6c, 0xcd, 0xe8, 0x0e, 0x20, 0x6d, 0xda, + 0x32, 0xe4, 0x31, 0x29, 0x69, 0x48, 0xa6, 0xbc, 0x6c, 0x1d, 0x90, 0xd3, 0x31, 0xfa, 0x11, 0xfc, + 0x67, 0x1a, 0xe7, 0x86, 0x54, 0x4c, 0x65, 0xdd, 0xdc, 0x22, 0x83, 0x8b, 0x83, 0x09, 0xa3, 0x49, + 0xc5, 0x24, 0xf8, 0xe8, 0x26, 0xe4, 0x62, 0xba, 0x12, 0x8c, 0xc6, 0x2f, 0x9b, 0x0c, 0x06, 0x03, + 0x37, 0x2b, 0xe5, 0xef, 0x92, 0x50, 0x78, 0xbd, 0x29, 0xa2, 0xbb, 0x80, 0x74, 0x39, 0xa4, 0x5e, + 0xa4, 0xd8, 0x90, 0xba, 0x54, 0x08, 0x2e, 0x46, 0xf7, 0x5a, 0x99, 0xb2, 0xec, 0x19, 0xc3, 0xb9, + 0xb0, 0x26, 0xdf, 0x39, 0xac, 0xe8, 0x09, 0xa0, 0x0e, 0x91, 0xd4, 0xa5, 0xcf, 0xed, 0x0b, 0xc1, + 0xa4, 0xf2, 0xd2, 0xbc, 0x14, 0x34, 0x69, 0xcf, 0x72, 0xb4, 0x44, 0xd1, 0x27, 0xb0, 0xaa, 0x2f, + 0x39, 0xf6, 0x13, 0x52, 0xe1, 0xd1, 0x40, 0xd9, 0xdb, 0xa2, 0x01, 0x39, 0x1d, 0xc1, 0x9b, 0xb1, + 0x45, 0xe7, 0x60, 0xc0, 0x02, 0x5d, 0xc7, 0x7d, 0xd5, 0x1f, 0xe3, 0x33, 0x71, 0x0e, 0x06, 0x2c, + 0xa8, 0x19, 0x83, 0x45, 0x97, 0x7f, 0xd4, 0x1f, 0xdf, 0xa4, 0xd9, 0xa3, 0x2a, 0xa4, 0x07, 0xbc, + 0x3b, 0x6a, 0x6d, 0xce, 0xbb, 0x3d, 0x11, 0xf4, 0x58, 0xb3, 0xb0, 0xe1, 0x9a, 0x10, 0xfb, 0x4c, + 0x37, 0x32, 0x8f, 0x0a, 0xc5, 0x8e, 0x99, 0x47, 0xd4, 0xa8, 0xc1, 0xae, 0xc4, 0x96, 0x9d, 0x89, + 0x41, 0xe7, 0x31, 0x14, 0x6c, 0x48, 0x14, 0xd5, 0x55, 0xd2, 0x04, 0x69, 0x01, 0x83, 0x5d, 0x7a, + 0x4a, 0xcf, 0x74, 0x41, 0xf0, 0xc8, 0xb4, 0xaf, 0x38, 0xd9, 0x0b, 0x38, 0xef, 0x91, 0x29, 0x47, + 0x52, 0x77, 0x00, 0x19, 0x75, 0x74, 0x3c, 0x5c, 0xe2, 0x2b, 0xd3, 0xc3, 0xe2, 0x77, 0xea, 0x02, + 0x5e, 0xb6, 0x86, 0x6d, 0x5f, 0xe9, 0x16, 0x26, 0xf5, 0x53, 0x40, 0x06, 0xac, 0x98, 0x8d, 0x9f, + 0x02, 0x32, 0x60, 0xe5, 0xc7, 0x70, 0xcd, 0xde, 0x03, 0xe5, 0xe0, 0xda, 0xee, 0x7e, 0x6b, 0xbb, + 0x5a, 0xdf, 0x2b, 0xcc, 0xe9, 0x4a, 0xdc, 0xda, 0x3f, 0x68, 0xd6, 0xf7, 0xe2, 0xaa, 0x7c, 0x70, + 0xd4, 0x3e, 0xda, 0xae, 0x17, 0x92, 0xa8, 0x00, 0x8b, 0xfb, 0xad, 0xf6, 0x7e, 0xc3, 0xb5, 0x2b, + 0xa9, 0xaa, 0xf3, 0xc3, 0xab, 0xb5, 0xc4, 0x4f, 0xaf, 0xd6, 0x12, 0xbf, 0xbd, 0x5a, 0x4b, 0x3c, + 0x5b, 0x8f, 0x63, 0xc7, 0x78, 0x85, 0x84, 0xac, 0x72, 0xc1, 0x1f, 0x5e, 0x27, 0x6b, 0x14, 0x70, + 0xef, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x37, 0xf8, 0x6b, 0x20, 0x91, 0x0e, 0x00, 0x00, } diff --git a/networking/v1alpha3/destination_rule.proto b/networking/v1alpha3/destination_rule.proto index 188fdc6a1a..e48b93c055 100644 --- a/networking/v1alpha3/destination_rule.proto +++ b/networking/v1alpha3/destination_rule.proto @@ -15,6 +15,7 @@ syntax = "proto3"; import "google/protobuf/duration.proto"; import "networking/v1alpha3/virtual_service.proto"; +import "networking/v1alpha3/service_dependency.proto"; import "gogoproto/gogo.proto"; package istio.networking.v1alpha3; @@ -117,6 +118,12 @@ message DestinationRule { // One or more named sets that represent individual versions of a // service. Traffic policies can be overridden at subset level. repeated Subset subsets = 3; + + // The visibility setting associated with this DestinationRule. Set to + // PRIVATE if this destination rule should not be exported, i.e. restrict + // the applicability of this destination rule to only workloads in the same + // namespace as the destination rule. + ConfigScope config_scope = 4; } // Traffic policies to apply for a specific destination, across all @@ -351,15 +358,39 @@ message LoadBalancerSettings { // tcp: // maxConnections: 100 // connectTimeout: 30ms +// tcpKeepalive: +// time: 7200s +// interval: 75s // ``` message ConnectionPoolSettings { // Settings common to both HTTP and TCP upstream connections. message TCPSettings { + // TCP keepalive. + message TcpKeepalive { + // Maximum number of keepalive probes to send without response before + // deciding the connection is dead. Default is to use the OS level configuration + // (unless overridden, Linux defaults to 9.) + uint32 probes = 1; + + // The time duration a connection needs to be idle before keep-alive + // probes start being sent. Default is to use the OS level configuration + // (unless overridden, Linux defaults to 7200s (ie 2 hours.) + google.protobuf.Duration time = 2; + + // The time duration between keep-alive probes. + // Default is to use the OS level configuration + // (unless overridden, Linux defaults to 75s.) + google.protobuf.Duration interval = 3; + }; + // Maximum number of HTTP1 /TCP connections to a destination host. int32 max_connections = 1; // TCP connection timeout. google.protobuf.Duration connect_timeout = 2; + + // If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives. + TcpKeepalive tcp_keepalive = 3; }; // Settings applicable to HTTP1.1/HTTP2/GRPC connections. diff --git a/networking/v1alpha3/gateway.pb.go b/networking/v1alpha3/gateway.pb.go index cbab67e68e..2ae532566e 100644 --- a/networking/v1alpha3/gateway.pb.go +++ b/networking/v1alpha3/gateway.pb.go @@ -116,6 +116,7 @@ func (Server_TLSOptions_TLSProtocol) EnumDescriptor() ([]byte, []int) { // kind: Gateway // metadata: // name: my-gateway +// namespace: some-config-namespace // spec: // selector: // app: my-gateway-controller @@ -173,13 +174,14 @@ func (Server_TLSOptions_TLSProtocol) EnumDescriptor() ([]byte, []int) { // kind: VirtualService // metadata: // name: bookinfo-rule +// namespace: bookinfo-namespace // spec: // hosts: // - reviews.prod.svc.cluster.local // - uk.bookinfo.com // - eu.bookinfo.com // gateways: -// - my-gateway +// - some-config-namespace/my-gateway // - mesh # applies to all the sidecars in the mesh // http: // - match: @@ -215,11 +217,13 @@ func (Server_TLSOptions_TLSProtocol) EnumDescriptor() ([]byte, []int) { // kind: VirtualService // metadata: // name: bookinfo-Mongo +// namespace: bookinfo-namespace // spec: // hosts: // - mongosvr.prod.svc.cluster.local #name of internal Mongo service // gateways: -// - my-gateway +// - some-config-namespace/my-gateway # can omit the namespace if gateway is in same +// namespace as virtual service. // tcp: // - match: // - port: 27017 diff --git a/networking/v1alpha3/gateway.proto b/networking/v1alpha3/gateway.proto index e7a54a41af..4f857dd8d2 100644 --- a/networking/v1alpha3/gateway.proto +++ b/networking/v1alpha3/gateway.proto @@ -36,6 +36,7 @@ option go_package = "istio.io/api/networking/v1alpha3"; // kind: Gateway // metadata: // name: my-gateway +// namespace: some-config-namespace // spec: // selector: // app: my-gateway-controller @@ -93,13 +94,14 @@ option go_package = "istio.io/api/networking/v1alpha3"; // kind: VirtualService // metadata: // name: bookinfo-rule +// namespace: bookinfo-namespace // spec: // hosts: // - reviews.prod.svc.cluster.local // - uk.bookinfo.com // - eu.bookinfo.com // gateways: -// - my-gateway +// - some-config-namespace/my-gateway // - mesh # applies to all the sidecars in the mesh // http: // - match: @@ -135,11 +137,13 @@ option go_package = "istio.io/api/networking/v1alpha3"; // kind: VirtualService // metadata: // name: bookinfo-Mongo +// namespace: bookinfo-namespace // spec: // hosts: // - mongosvr.prod.svc.cluster.local #name of internal Mongo service // gateways: -// - my-gateway +// - some-config-namespace/my-gateway # can omit the namespace if gateway is in same +// namespace as virtual service. // tcp: // - match: // - port: 27017 diff --git a/networking/v1alpha3/istio.networking.v1alpha3.pb.html b/networking/v1alpha3/istio.networking.v1alpha3.pb.html index 69a40b7a19..1ec29f1a01 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: 52 +number_of_entries: 59 ---

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

@@ -37,6 +37,40 @@ application code to decouple itself from the evolution of dependent services.

+

ConfigScope

+
+

ConfigScope defines the visibility of an Istio configuration artifact in +a namespace when the namespace is imported. By default all +configuration artifacts are public. Configurations with private scope +will not be imported when the namespace containing the configuration is +imported in a ServiceDependency.

+ +
NameDescription
ALL_NAMESPACES +

Configure routes to services in all namespaces, i.e. import +services from all namespaces.

+ +
SAME_NAMESPACE +

Only configure routes to services that are in the same namespace +as the workload as well as services in namespaces specified in +importNamespaces.

+
+ + + + + + + + + + + + + + + + +
NameDescription
PUBLIC +

Config with this scope are visible to all workloads in the mesh

+ +
PRIVATE +

Configs with this scope are visible to only workloads in the same +namespace as the configuration resource.

+ +
+

ConnectionPoolSettings

Connection pool settings for an upstream host. The settings apply to @@ -59,6 +93,9 @@

ConnectionPoolSettings

tcp: maxConnections: 100 connectTimeout: 30ms + tcpKeepalive: + time: 7200s + interval: 75s @@ -166,6 +203,60 @@

ConnectionPoolSettings.TCPSettings

TCP connection timeout.

+ + +

+ + + + + +
tcpKeepaliveConnectionPoolSettings.TCPSettings.TcpKeepalive +

If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.

+ +
+
+

ConnectionPoolSettings.TCPSettings.TcpKeepalive

+
+

TCP keepalive.

+ + + + + + + + + + + + + + + + + + + + + + + + @@ -571,6 +662,17 @@

DestinationRule

One or more named sets that represent individual versions of a service. Traffic policies can be overridden at subset level.

+ + + + + + @@ -987,6 +1089,7 @@

Gateway

kind: Gateway metadata: name: my-gateway + namespace: some-config-namespace spec: selector: app: my-gateway-controller @@ -1044,13 +1147,14 @@

Gateway

kind: VirtualService metadata: name: bookinfo-rule + namespace: bookinfo-namespace spec: hosts: - reviews.prod.svc.cluster.local - uk.bookinfo.com - eu.bookinfo.com gateways: - - my-gateway + - some-config-namespace/my-gateway - mesh # applies to all the sidecars in the mesh http: - match: @@ -1085,11 +1189,13 @@

Gateway

kind: VirtualService metadata: name: bookinfo-Mongo + namespace: bookinfo-namespace spec: hosts: - mongosvr.prod.svc.cluster.local #name of internal Mongo service gateways: - - my-gateway + - some-config-namespace/my-gateway # can omit the namespace if gateway is in same + namespace as virtual service. tcp: - match: - port: 27017 @@ -1762,43 +1868,52 @@

HTTPRoute

- + - + - + - + + + + + + @@ -1900,38 +2015,122 @@

HTTPRouteDestination

- + - + - + - + + + + + + + + +
FieldTypeDescription
probesuint32 +

Maximum number of keepalive probes to send without response before +deciding the connection is dead. Default is to use the OS level configuration +(unless overridden, Linux defaults to 9.)

+ +
timegoogle.protobuf.Duration +

The time duration a connection needs to be idle before keep-alive +probes start being sent. Default is to use the OS level configuration +(unless overridden, Linux defaults to 7200s (ie 2 hours.)

+ +
intervalgoogle.protobuf.Duration +

The time duration between keep-alive probes. +Default is to use the OS level configuration +(unless overridden, Linux defaults to 75s.)

+
configScopeConfigScope +

The visibility setting associated with this DestinationRule. Set to +PRIVATE if this destination rule should not be exported, i.e. restrict +the applicability of this destination rule to only workloads in the same +namespace as the destination rule.

+
appendHeaders map<string, string> -

Use of append_headers is deprecated. Use the append_request_headers +

Use of append_headers is deprecated. Use the headers field instead.

removeResponseHeaders string[] -

HTTP headers to remove before returning a response to the caller.

+

Use of remove_response_header is deprecated. Use the headers +field instead.

appendResponseHeaders map<string, string> -

Additional HTTP headers to add before returning a response to the -caller.

+

Use of append_response_headers is deprecated. Use the headers +field instead.

removeRequestHeaders string[] -

HTTP headers to remove before forwarding a request to the -destination service.

+

Use of remove_request_headers is deprecated. Use the headers +field instead.

appendRequestHeaders map<string, string> -

Additional HTTP headers to add before forwarding a request to the -destination service.

+

Use of append_request_headers is deprecated. Use the headers +field instead.

+ +
headersHeaders +

Header manipulation rules

removeResponseHeaders string[] -

HTTP headers to remove before returning a response to the caller.

+

Use of remove_response_header is deprecated. Use the headers +field instead.

appendResponseHeaders map<string, string> -

Additional HTTP headers to add before returning a response to the -caller.

+

Use of append_response_headers is deprecated. Use the headers +field instead.

removeRequestHeaders string[] -

HTTP headers to remove before forwarding a request to the -destination service.

+

Use of remove_request_headers is deprecated. Use the headers +field instead.

appendRequestHeaders map<string, string> -

Additional HTTP headers to add before forwarding a request to the -destination service.

+

Use of append_request_headers is deprecated. Use the headers +field instead.

+ +
headersHeaders +

Header manipulation rules

+ +
+
+

Headers

+
+

Header manipulation rules

+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
requestHeaders.HeaderOperations +

Header manipulation rules to apply before forwarding a request +to the destination service

+ +
responseHeaders.HeaderOperations +

Header manipulation rules to apply before returning a response +to the caller

+ +
+
+

Headers.HeaderOperations

+
+

HeaderOperations Describes the header manipulations to apply

+ + + + + + + + + + + + + + + + + + + + + + + + @@ -2744,6 +2943,186 @@

Server.TLSOptions.TLSmode

their respective endpoints. Use of this mode assumes that both the source and the destination are using Istio mTLS to secure traffic.

+ + + +
FieldTypeDescription
setmap<string, string> +

Overwrite the headers specified by key with the given values

+ +
addmap<string, string> +

Apppend the given values to the the headers specified by keys +(will create a comma seperated list of values)

+ +
removestring[] +

Remove a the specified headers

+
+

ServiceDependency

+
+

ServiceDependency describes the set of services that a workload depends on +for its operation. In other words, it describes the properties of +outgoing traffic from a given workload. By default, the service mesh +established by Istio will have a full mesh connectivity - i.e. every +workload will have proxy configuration required to reach every other +workload in the mesh. However most connectivity graphs are sparse in +practice. The ServiceDependency provides a way to declare the service +dependencies associated with each workload such that the amount of +configuration sent to the sidecars can be scoped to the requisite +dependencies.

+ +

Services and configuration in a mesh are organized into one or more +namespaces (e.g., a Kubernetes namespace or a CF org/space). Workloads +in a namespace have an implicit dependency on other workloads in the +same namespace. In addition, to declare dependencies on workloads in +other namespaces, a ServiceDependency resource has to be specified in the +current namespace. Each namespace MUST have only one ServiceDependency +resource named “default”. The behavior of the system is undefined if +more than one ServiceDependency resource exists in a given namespace. The set +of dependencies specified in a ServiceDependency resource will be used to +compute the sidecar configuration for every workload in the namespace.

+ +

NOTE 1: If workloads in the mesh depend only on other workloads in the +same namespace, set defaultServiceDependency.importMode to SAME_NAMESPACE +in the mesh global config map (in values.yaml).

+ +

NOTE 2: To facilitate incremental pruning of the the sidecar +configuration, the default import mode for the mesh is set to +ALL_NAMESPACES. In other words, every workload will be able to reach +every other workload. Adding a ServiceDependency resource in a namespace will +automatically prune the configuration for the workloads in that +namespace.

+ +

The following examples illustrate a few specific use cases of ServiceDependency.

+ +

The example below delcares a ServiceDependency resource in the prod-us1 +namespace that specifies that workloads in the namespace will be able to +reach the services in the prod-apis namespace only.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: ServiceDependency
+metadata:
+  name: default
+  namespace: prod-us1
+spec:
+  dependencies:
+  - imports:
+    - namespace: prod-apis
+
+ +

In a mesh where the default service dependency is set to SAME_NAMESPACE +only, if one or more workloads need to be able to reach every other +service in the mesh (e.g., metrics collection server), the following +ServiceDependency resource can be used to specify such a dependency:

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: ServiceDependency
+metadata:
+  name: default
+  namespace: metrics-collection
+spec:
+  dependencies:
+  - imports:
+    - namespace: '*'
+
+ +

The configuration above will allow workloads in the metrics-collection +namespace to access service in any namespace while workloads in other +namespaces will be configured for namespace local access as per the +global default service dependency (SAME_NAMESPACE).

+ + + + + + + + + + + + + + + + +
FieldTypeDescription
dependenciesServiceDependency.Dependency[] +

REQUIRED. The set of services that workloads in this namespace are +expected to talk to, in addition to other workloads in the same +namespace. Dependencies describe the properties of outbound traffic from +a given workload.

+ +
+
+

ServiceDependency.Dependency

+
+

Dependency describes a workload and the set of service dependencies +for the workload.

+ + + + + + + + + + + + + + + + +
FieldTypeDescription
importsServiceDependency.Import[] +

REQUIRED: Import describes the set of namespaces whose exported +services will be accessed by the workloads selected by the +sourceWorkloadLabels. The sidecars attached to the workloads will be +configured with information required to reach other services in the +same namespace and the imported services. In addition to the +explicitly specified namespaces, namespaces specified in the global +mesh config (through defaultServiceDependency.importNamespaces) will also be +imported.

+ +
+
+

ServiceDependency.Import

+
+

Import describes the set of namespaces whose exported services +(real/virtual) will be accessed by workloads in a given namespace. The +sidecars attached to the workloads will be configured with information +required to reach the imported services only. The gateways in the +current namespace will only honor imported VirtualServices instead of +every VirtualService that binds itself to the gateway.

+ +

Importing a service from a namespace will automatically import the +exported configuration artifacts associated with the service, such as +VirtualService, DestinationRule, etc. The service in a namespace can be +a service in the service registry (e.g., a kubernetes or cloud foundry +service) or a service specified via ServiceEntry configuration.

+ +

NOTE: Only exported services and configuration artifacts from a +namespace can be imported. Private services/configuration will not be +imported. See the scope setting associated with VirtualService, +DestinationRule, ServiceEntry, etc.

+ + + + + + + + + + + + + + + + + + + @@ -3084,6 +3463,18 @@

ServiceEntry

+ + + + + @@ -3887,7 +4278,7 @@

VirtualService

The following example on Kubernetes, routes all HTTP traffic by default to pods of the reviews service with label “version: v1”. In addition, -HTTP requests containing /wpcatalog/, /consumercatalog/ url prefixes will +HTTP requests with path starting with /wpcatalog/ or /consumercatalog/ will be rewritten to /newcatalog and sent to pods with label “version: v2”.

apiVersion: networking.istio.io/v1alpha3
@@ -4026,6 +4417,17 @@ 

VirtualService

be applied to any port that is not a HTTP or TLS port. The first rule matching an incoming request is used.

+ + +
+ + + diff --git a/networking/v1alpha3/service_dependency.pb.go b/networking/v1alpha3/service_dependency.pb.go new file mode 100644 index 0000000000..ff233c696c --- /dev/null +++ b/networking/v1alpha3/service_dependency.pb.go @@ -0,0 +1,938 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: networking/v1alpha3/service_dependency.proto + +package v1alpha3 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// ConfigScope defines the visibility of an Istio configuration artifact in +// a namespace when the namespace is imported. By default all +// configuration artifacts are public. Configurations with private scope +// will not be imported when the namespace containing the configuration is +// imported in a ServiceDependency. +type ConfigScope int32 + +const ( + // Config with this scope are visible to all workloads in the mesh + ConfigScope_PUBLIC ConfigScope = 0 + // Configs with this scope are visible to only workloads in the same + // namespace as the configuration resource. + ConfigScope_PRIVATE ConfigScope = 1 +) + +var ConfigScope_name = map[int32]string{ + 0: "PUBLIC", + 1: "PRIVATE", +} +var ConfigScope_value = map[string]int32{ + "PUBLIC": 0, + "PRIVATE": 1, +} + +func (x ConfigScope) String() string { + return proto.EnumName(ConfigScope_name, int32(x)) +} +func (ConfigScope) EnumDescriptor() ([]byte, []int) { return fileDescriptorServiceDependency, []int{0} } + +// `ServiceDependency` describes the set of services that a workload depends on +// for its operation. In other words, it describes the properties of +// outgoing traffic from a given workload. By default, the service mesh +// established by Istio will have a full mesh connectivity - i.e. every +// workload will have proxy configuration required to reach every other +// workload in the mesh. However most connectivity graphs are sparse in +// practice. The ServiceDependency provides a way to declare the service +// dependencies associated with each workload such that the amount of +// configuration sent to the sidecars can be scoped to the requisite +// dependencies. +// +// Services and configuration in a mesh are organized into one or more +// namespaces (e.g., a Kubernetes namespace or a CF org/space). Workloads +// in a namespace have an implicit dependency on other workloads in the +// same namespace. In addition, to declare dependencies on workloads in +// other namespaces, a ServiceDependency resource has to be specified in the +// current namespace. *_Each namespace MUST have only one ServiceDependency +// resource named "default"_*. The behavior of the system is undefined if +// more than one ServiceDependency resource exists in a given namespace. The set +// of dependencies specified in a ServiceDependency resource will be used to +// compute the sidecar configuration for every workload in the namespace. +// +// NOTE 1: If workloads in the mesh depend only on other workloads in the +// same namespace, set defaultServiceDependency.importMode to SAME_NAMESPACE +// in the mesh global config map (in values.yaml). +// +// NOTE 2: To facilitate incremental pruning of the the sidecar +// configuration, the default import mode for the mesh is set to +// ALL_NAMESPACES. In other words, every workload will be able to reach +// every other workload. Adding a ServiceDependency resource in a namespace will +// automatically prune the configuration for the workloads in that +// namespace. +// +// The following examples illustrate a few specific use cases of ServiceDependency. +// +// The example below delcares a ServiceDependency resource in the prod-us1 +// namespace that specifies that workloads in the namespace will be able to +// reach the services in the prod-apis namespace only. +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: ServiceDependency +// metadata: +// name: default +// namespace: prod-us1 +// spec: +// dependencies: +// - imports: +// - namespace: prod-apis +// ``` +// +// In a mesh where the default service dependency is set to SAME_NAMESPACE +// only, if one or more workloads need to be able to reach every other +// service in the mesh (e.g., metrics collection server), the following +// ServiceDependency resource can be used to specify such a dependency: +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: ServiceDependency +// metadata: +// name: default +// namespace: metrics-collection +// spec: +// dependencies: +// - imports: +// - namespace: '*' +// ``` +// +// The configuration above will allow workloads in the metrics-collection +// namespace to access service in any namespace while workloads in other +// namespaces will be configured for namespace local access as per the +// global default service dependency (SAME_NAMESPACE). +// +type ServiceDependency struct { + // REQUIRED. The set of services that workloads in this namespace are + // expected to talk to, in addition to other workloads in the same + // namespace. Dependencies describe the properties of outbound traffic from + // a given workload. + Dependencies []*ServiceDependency_Dependency `protobuf:"bytes,1,rep,name=dependencies" json:"dependencies,omitempty"` +} + +func (m *ServiceDependency) Reset() { *m = ServiceDependency{} } +func (m *ServiceDependency) String() string { return proto.CompactTextString(m) } +func (*ServiceDependency) ProtoMessage() {} +func (*ServiceDependency) Descriptor() ([]byte, []int) { + return fileDescriptorServiceDependency, []int{0} +} + +func (m *ServiceDependency) GetDependencies() []*ServiceDependency_Dependency { + if m != nil { + return m.Dependencies + } + return nil +} + +// Import describes the set of namespaces whose exported services +// (real/virtual) will be accessed by workloads in a given namespace. The +// sidecars attached to the workloads will be configured with information +// required to reach the imported services only. The gateways in the +// current namespace will only honor imported VirtualServices instead of +// every VirtualService that binds itself to the gateway. +// +// Importing a service from a namespace will automatically import the +// exported configuration artifacts associated with the service, such as +// VirtualService, DestinationRule, etc. The service in a namespace can be +// a service in the service registry (e.g., a kubernetes or cloud foundry +// service) or a service specified via ServiceEntry configuration. +// +// NOTE: Only exported services and configuration artifacts from a +// namespace can be imported. Private services/configuration will not be +// imported. See the scope setting associated with VirtualService, +// DestinationRule, ServiceEntry, etc. +type ServiceDependency_Import struct { + // The configuration namespace whose services need to be imported. + // Specify * to import all namespaces. The import can be scoped further + // by specifying individual hosts. + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + // A FQDN or wildcard prefixed DNS name of the host to import from the + // specified namespace. The hostnames include names of services from the + // service registry as well as those specified in a VirtualService. + Host string `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"` +} + +func (m *ServiceDependency_Import) Reset() { *m = ServiceDependency_Import{} } +func (m *ServiceDependency_Import) String() string { return proto.CompactTextString(m) } +func (*ServiceDependency_Import) ProtoMessage() {} +func (*ServiceDependency_Import) Descriptor() ([]byte, []int) { + return fileDescriptorServiceDependency, []int{0, 0} +} + +func (m *ServiceDependency_Import) GetNamespace() string { + if m != nil { + return m.Namespace + } + return "" +} + +func (m *ServiceDependency_Import) GetHost() string { + if m != nil { + return m.Host + } + return "" +} + +// Dependency describes a workload and the set of service dependencies +// for the workload. +type ServiceDependency_Dependency struct { + // [#not-implemented-hide:] + // One or more labels that indicate a specific set of pods/VMs on which + // this dependency configuration should be applied. The scope of label + // search is platform dependent. On Kubernetes, for example, the scope + // includes pods running in the namespace in which the ServiceDependency + // resource is present. If the sourceWorkloadLabels are omitted, the + // imports specified will be applicable to all workloads in the current + // configuration namespace. + // NOTE: source_workload_labels are currently not supported. + SourceWorkloadLabels map[string]string `protobuf:"bytes,1,rep,name=source_workload_labels,json=sourceWorkloadLabels" json:"source_workload_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // REQUIRED: Import describes the set of namespaces whose exported + // services will be accessed by the workloads selected by the + // sourceWorkloadLabels. The sidecars attached to the workloads will be + // configured with information required to reach other services in the + // same namespace and the imported services. In addition to the + // explicitly specified namespaces, namespaces specified in the global + // mesh config (through defaultServiceDependency.importNamespaces) will also be + // imported. + Imports []*ServiceDependency_Import `protobuf:"bytes,2,rep,name=imports" json:"imports,omitempty"` +} + +func (m *ServiceDependency_Dependency) Reset() { *m = ServiceDependency_Dependency{} } +func (m *ServiceDependency_Dependency) String() string { return proto.CompactTextString(m) } +func (*ServiceDependency_Dependency) ProtoMessage() {} +func (*ServiceDependency_Dependency) Descriptor() ([]byte, []int) { + return fileDescriptorServiceDependency, []int{0, 1} +} + +func (m *ServiceDependency_Dependency) GetSourceWorkloadLabels() map[string]string { + if m != nil { + return m.SourceWorkloadLabels + } + return nil +} + +func (m *ServiceDependency_Dependency) GetImports() []*ServiceDependency_Import { + if m != nil { + return m.Imports + } + return nil +} + +func init() { + proto.RegisterType((*ServiceDependency)(nil), "istio.networking.v1alpha3.ServiceDependency") + proto.RegisterType((*ServiceDependency_Import)(nil), "istio.networking.v1alpha3.ServiceDependency.Import") + proto.RegisterType((*ServiceDependency_Dependency)(nil), "istio.networking.v1alpha3.ServiceDependency.Dependency") + proto.RegisterEnum("istio.networking.v1alpha3.ConfigScope", ConfigScope_name, ConfigScope_value) +} +func (m *ServiceDependency) 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 *ServiceDependency) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Dependencies) > 0 { + for _, msg := range m.Dependencies { + dAtA[i] = 0xa + i++ + i = encodeVarintServiceDependency(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ServiceDependency_Import) 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 *ServiceDependency_Import) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Namespace) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintServiceDependency(dAtA, i, uint64(len(m.Namespace))) + i += copy(dAtA[i:], m.Namespace) + } + if len(m.Host) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintServiceDependency(dAtA, i, uint64(len(m.Host))) + i += copy(dAtA[i:], m.Host) + } + return i, nil +} + +func (m *ServiceDependency_Dependency) 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 *ServiceDependency_Dependency) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.SourceWorkloadLabels) > 0 { + for k, _ := range m.SourceWorkloadLabels { + dAtA[i] = 0xa + i++ + v := m.SourceWorkloadLabels[k] + mapSize := 1 + len(k) + sovServiceDependency(uint64(len(k))) + 1 + len(v) + sovServiceDependency(uint64(len(v))) + i = encodeVarintServiceDependency(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintServiceDependency(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintServiceDependency(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + if len(m.Imports) > 0 { + for _, msg := range m.Imports { + dAtA[i] = 0x12 + i++ + i = encodeVarintServiceDependency(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func encodeVarintServiceDependency(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *ServiceDependency) Size() (n int) { + var l int + _ = l + if len(m.Dependencies) > 0 { + for _, e := range m.Dependencies { + l = e.Size() + n += 1 + l + sovServiceDependency(uint64(l)) + } + } + return n +} + +func (m *ServiceDependency_Import) Size() (n int) { + var l int + _ = l + l = len(m.Namespace) + if l > 0 { + n += 1 + l + sovServiceDependency(uint64(l)) + } + l = len(m.Host) + if l > 0 { + n += 1 + l + sovServiceDependency(uint64(l)) + } + return n +} + +func (m *ServiceDependency_Dependency) Size() (n int) { + var l int + _ = l + if len(m.SourceWorkloadLabels) > 0 { + for k, v := range m.SourceWorkloadLabels { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovServiceDependency(uint64(len(k))) + 1 + len(v) + sovServiceDependency(uint64(len(v))) + n += mapEntrySize + 1 + sovServiceDependency(uint64(mapEntrySize)) + } + } + if len(m.Imports) > 0 { + for _, e := range m.Imports { + l = e.Size() + n += 1 + l + sovServiceDependency(uint64(l)) + } + } + return n +} + +func sovServiceDependency(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozServiceDependency(x uint64) (n int) { + return sovServiceDependency(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *ServiceDependency) 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 ErrIntOverflowServiceDependency + } + 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: ServiceDependency: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceDependency: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Dependencies", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowServiceDependency + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthServiceDependency + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Dependencies = append(m.Dependencies, &ServiceDependency_Dependency{}) + if err := m.Dependencies[len(m.Dependencies)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipServiceDependency(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthServiceDependency + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceDependency_Import) 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 ErrIntOverflowServiceDependency + } + 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: Import: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Import: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowServiceDependency + } + 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 ErrInvalidLengthServiceDependency + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowServiceDependency + } + 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 ErrInvalidLengthServiceDependency + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Host = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipServiceDependency(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthServiceDependency + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceDependency_Dependency) 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 ErrIntOverflowServiceDependency + } + 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: Dependency: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Dependency: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SourceWorkloadLabels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowServiceDependency + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthServiceDependency + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SourceWorkloadLabels == nil { + m.SourceWorkloadLabels = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowServiceDependency + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowServiceDependency + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthServiceDependency + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowServiceDependency + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthServiceDependency + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipServiceDependency(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthServiceDependency + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.SourceWorkloadLabels[mapkey] = mapvalue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Imports", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowServiceDependency + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthServiceDependency + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Imports = append(m.Imports, &ServiceDependency_Import{}) + if err := m.Imports[len(m.Imports)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipServiceDependency(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthServiceDependency + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipServiceDependency(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowServiceDependency + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowServiceDependency + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowServiceDependency + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthServiceDependency + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowServiceDependency + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipServiceDependency(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthServiceDependency = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowServiceDependency = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("networking/v1alpha3/service_dependency.proto", fileDescriptorServiceDependency) +} + +var fileDescriptorServiceDependency = []byte{ + // 357 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0xc9, 0x4b, 0x2d, 0x29, + 0xcf, 0x2f, 0xca, 0xce, 0xcc, 0x4b, 0xd7, 0x2f, 0x33, 0x4c, 0xcc, 0x29, 0xc8, 0x48, 0x34, 0xd6, + 0x2f, 0x4e, 0x2d, 0x2a, 0xcb, 0x4c, 0x4e, 0x8d, 0x4f, 0x49, 0x2d, 0x48, 0xcd, 0x4b, 0x49, 0xcd, + 0x4b, 0xae, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x92, 0xcc, 0x2c, 0x2e, 0xc9, 0xcc, 0xd7, + 0x43, 0xe8, 0xd1, 0x83, 0xe9, 0x51, 0xba, 0xcb, 0xcc, 0x25, 0x18, 0x0c, 0xd1, 0xe7, 0x02, 0xd7, + 0x26, 0x14, 0xcd, 0xc5, 0x03, 0x37, 0x24, 0x33, 0xb5, 0x58, 0x82, 0x51, 0x81, 0x59, 0x83, 0xdb, + 0xc8, 0x5c, 0x0f, 0xa7, 0x39, 0x7a, 0x18, 0x66, 0xe8, 0x21, 0x98, 0x41, 0x28, 0x86, 0x49, 0x59, + 0x71, 0xb1, 0x79, 0xe6, 0x16, 0xe4, 0x17, 0x95, 0x08, 0xc9, 0x70, 0x71, 0xe6, 0x25, 0xe6, 0xa6, + 0x16, 0x17, 0x24, 0x26, 0xa7, 0x4a, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x06, 0x21, 0x04, 0x84, 0x84, + 0xb8, 0x58, 0x32, 0xf2, 0x8b, 0x4b, 0x24, 0x98, 0xc0, 0x12, 0x60, 0xb6, 0xd4, 0x3a, 0x26, 0x2e, + 0x2e, 0x24, 0x77, 0xb6, 0x33, 0x72, 0x89, 0x15, 0xe7, 0x97, 0x16, 0x25, 0xa7, 0xc6, 0x83, 0x5c, + 0x94, 0x93, 0x9f, 0x98, 0x12, 0x9f, 0x93, 0x98, 0x94, 0x9a, 0x03, 0x73, 0x72, 0x20, 0x99, 0x4e, + 0xd6, 0x0b, 0x06, 0x9b, 0x1a, 0x0e, 0x35, 0xd4, 0x07, 0x6c, 0xa6, 0x6b, 0x5e, 0x49, 0x51, 0x65, + 0x90, 0x48, 0x31, 0x16, 0x29, 0x21, 0x5f, 0x2e, 0xf6, 0x4c, 0xb0, 0xa7, 0x8a, 0x25, 0x98, 0xc0, + 0x36, 0x1b, 0x93, 0x64, 0x33, 0x24, 0x40, 0x82, 0x60, 0x66, 0x48, 0xb9, 0x73, 0x49, 0xe2, 0x74, + 0x81, 0x90, 0x00, 0x17, 0x73, 0x76, 0x6a, 0x25, 0x34, 0xc0, 0x40, 0x4c, 0x21, 0x11, 0x2e, 0xd6, + 0xb2, 0xc4, 0x9c, 0xd2, 0x54, 0x68, 0x58, 0x41, 0x38, 0x56, 0x4c, 0x16, 0x8c, 0x5a, 0x6a, 0x5c, + 0xdc, 0xce, 0xf9, 0x79, 0x69, 0x99, 0xe9, 0xc1, 0xc9, 0xf9, 0x05, 0xa9, 0x42, 0x5c, 0x5c, 0x6c, + 0x01, 0xa1, 0x4e, 0x3e, 0x9e, 0xce, 0x02, 0x0c, 0x42, 0xdc, 0x5c, 0xec, 0x01, 0x41, 0x9e, 0x61, + 0x8e, 0x21, 0xae, 0x02, 0x8c, 0x4e, 0x7a, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, + 0xe0, 0x91, 0x1c, 0x63, 0x94, 0x02, 0xc4, 0xed, 0x99, 0xf9, 0xfa, 0x89, 0x05, 0x99, 0xfa, 0x58, + 0xd2, 0x5a, 0x12, 0x1b, 0x38, 0x65, 0x19, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x1e, 0x25, 0xbe, + 0xb4, 0x89, 0x02, 0x00, 0x00, +} diff --git a/networking/v1alpha3/service_dependency.proto b/networking/v1alpha3/service_dependency.proto new file mode 100644 index 0000000000..f6c54c71a3 --- /dev/null +++ b/networking/v1alpha3/service_dependency.proto @@ -0,0 +1,168 @@ +// Copyright 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. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package istio.networking.v1alpha3; + +option go_package = "istio.io/api/networking/v1alpha3"; + +// `ServiceDependency` describes the set of services that a workload depends on +// for its operation. In other words, it describes the properties of +// outgoing traffic from a given workload. By default, the service mesh +// established by Istio will have a full mesh connectivity - i.e. every +// workload will have proxy configuration required to reach every other +// workload in the mesh. However most connectivity graphs are sparse in +// practice. The ServiceDependency provides a way to declare the service +// dependencies associated with each workload such that the amount of +// configuration sent to the sidecars can be scoped to the requisite +// dependencies. +// +// Services and configuration in a mesh are organized into one or more +// namespaces (e.g., a Kubernetes namespace or a CF org/space). Workloads +// in a namespace have an implicit dependency on other workloads in the +// same namespace. In addition, to declare dependencies on workloads in +// other namespaces, a ServiceDependency resource has to be specified in the +// current namespace. *_Each namespace MUST have only one ServiceDependency +// resource named "default"_*. The behavior of the system is undefined if +// more than one ServiceDependency resource exists in a given namespace. The set +// of dependencies specified in a ServiceDependency resource will be used to +// compute the sidecar configuration for every workload in the namespace. +// +// NOTE 1: If workloads in the mesh depend only on other workloads in the +// same namespace, set defaultServiceDependency.importMode to SAME_NAMESPACE +// in the mesh global config map (in values.yaml). +// +// NOTE 2: To facilitate incremental pruning of the the sidecar +// configuration, the default import mode for the mesh is set to +// ALL_NAMESPACES. In other words, every workload will be able to reach +// every other workload. Adding a ServiceDependency resource in a namespace will +// automatically prune the configuration for the workloads in that +// namespace. +// +// The following examples illustrate a few specific use cases of ServiceDependency. +// +// The example below delcares a ServiceDependency resource in the prod-us1 +// namespace that specifies that workloads in the namespace will be able to +// reach the services in the prod-apis namespace only. +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: ServiceDependency +// metadata: +// name: default +// namespace: prod-us1 +// spec: +// dependencies: +// - imports: +// - namespace: prod-apis +// ``` +// +// In a mesh where the default service dependency is set to SAME_NAMESPACE +// only, if one or more workloads need to be able to reach every other +// service in the mesh (e.g., metrics collection server), the following +// ServiceDependency resource can be used to specify such a dependency: +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: ServiceDependency +// metadata: +// name: default +// namespace: metrics-collection +// spec: +// dependencies: +// - imports: +// - namespace: '*' +// ``` +// +// The configuration above will allow workloads in the metrics-collection +// namespace to access service in any namespace while workloads in other +// namespaces will be configured for namespace local access as per the +// global default service dependency (SAME_NAMESPACE). +// +message ServiceDependency { + // Import describes the set of namespaces whose exported services + // (real/virtual) will be accessed by workloads in a given namespace. The + // sidecars attached to the workloads will be configured with information + // required to reach the imported services only. The gateways in the + // current namespace will only honor imported VirtualServices instead of + // every VirtualService that binds itself to the gateway. + // + // Importing a service from a namespace will automatically import the + // exported configuration artifacts associated with the service, such as + // VirtualService, DestinationRule, etc. The service in a namespace can be + // a service in the service registry (e.g., a kubernetes or cloud foundry + // service) or a service specified via ServiceEntry configuration. + // + // NOTE: Only exported services and configuration artifacts from a + // namespace can be imported. Private services/configuration will not be + // imported. See the scope setting associated with VirtualService, + // DestinationRule, ServiceEntry, etc. + message Import { + // The configuration namespace whose services need to be imported. + // Specify * to import all namespaces. The import can be scoped further + // by specifying individual hosts. + string namespace = 1; + + // A FQDN or wildcard prefixed DNS name of the host to import from the + // specified namespace. The hostnames include names of services from the + // service registry as well as those specified in a VirtualService. + string host = 2; + }; + + // Dependency describes a workload and the set of service dependencies + // for the workload. + message Dependency { + // [#not-implemented-hide:] + // One or more labels that indicate a specific set of pods/VMs on which + // this dependency configuration should be applied. The scope of label + // search is platform dependent. On Kubernetes, for example, the scope + // includes pods running in the namespace in which the ServiceDependency + // resource is present. If the sourceWorkloadLabels are omitted, the + // imports specified will be applicable to all workloads in the current + // configuration namespace. + // NOTE: source_workload_labels are currently not supported. + map source_workload_labels = 1; + + // REQUIRED: Import describes the set of namespaces whose exported + // services will be accessed by the workloads selected by the + // sourceWorkloadLabels. The sidecars attached to the workloads will be + // configured with information required to reach other services in the + // same namespace and the imported services. In addition to the + // explicitly specified namespaces, namespaces specified in the global + // mesh config (through defaultServiceDependency.importNamespaces) will also be + // imported. + repeated Import imports = 2; + }; + + // REQUIRED. The set of services that workloads in this namespace are + // expected to talk to, in addition to other workloads in the same + // namespace. Dependencies describe the properties of outbound traffic from + // a given workload. + repeated Dependency dependencies = 1; +} + +// ConfigScope defines the visibility of an Istio configuration artifact in +// a namespace when the namespace is imported. By default all +// configuration artifacts are public. Configurations with private scope +// will not be imported when the namespace containing the configuration is +// imported in a ServiceDependency. +enum ConfigScope { + // Config with this scope are visible to all workloads in the mesh + PUBLIC = 0; + + // Configs with this scope are visible to only workloads in the same + // namespace as the configuration resource. + PRIVATE = 1; +} diff --git a/networking/v1alpha3/service_entry.pb.go b/networking/v1alpha3/service_entry.pb.go index faa5471fde..ba15812abd 100644 --- a/networking/v1alpha3/service_entry.pb.go +++ b/networking/v1alpha3/service_entry.pb.go @@ -400,6 +400,12 @@ type ServiceEntry struct { Resolution ServiceEntry_Resolution `protobuf:"varint,5,opt,name=resolution,proto3,enum=istio.networking.v1alpha3.ServiceEntry_Resolution" json:"resolution,omitempty"` // One or more endpoints associated with the service. Endpoints []*ServiceEntry_Endpoint `protobuf:"bytes,6,rep,name=endpoints" json:"endpoints,omitempty"` + // The visibility setting associated with this service entry. Set to + // PRIVATE if this service should not be visible outside the namespace + // where the service entry was added. The default scope is public, + // i.e. the service added by the service entry will be visible to + // workloads in the entire mesh. + ConfigScope ConfigScope `protobuf:"varint,7,opt,name=config_scope,json=configScope,proto3,enum=istio.networking.v1alpha3.ConfigScope" json:"config_scope,omitempty"` } func (m *ServiceEntry) Reset() { *m = ServiceEntry{} } @@ -449,6 +455,13 @@ func (m *ServiceEntry) GetEndpoints() []*ServiceEntry_Endpoint { return nil } +func (m *ServiceEntry) GetConfigScope() ConfigScope { + if m != nil { + return m.ConfigScope + } + return ConfigScope_PUBLIC +} + // Endpoint defines a network address (IP or hostname) associated with // the mesh service. type ServiceEntry_Endpoint struct { @@ -629,6 +642,11 @@ func (m *ServiceEntry) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.ConfigScope != 0 { + dAtA[i] = 0x38 + i++ + i = encodeVarintServiceEntry(dAtA, i, uint64(m.ConfigScope)) + } return i, nil } @@ -748,6 +766,9 @@ func (m *ServiceEntry) Size() (n int) { n += 1 + l + sovServiceEntry(uint64(l)) } } + if m.ConfigScope != 0 { + n += 1 + sovServiceEntry(uint64(m.ConfigScope)) + } return n } @@ -988,6 +1009,25 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigScope", wireType) + } + m.ConfigScope = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowServiceEntry + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ConfigScope |= (ConfigScope(b) & 0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipServiceEntry(dAtA[iNdEx:]) @@ -1498,36 +1538,38 @@ var ( func init() { proto.RegisterFile("networking/v1alpha3/service_entry.proto", fileDescriptorServiceEntry) } var fileDescriptorServiceEntry = []byte{ - // 481 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xdf, 0x6e, 0xd3, 0x30, - 0x14, 0xc6, 0xe7, 0x66, 0xcd, 0x9a, 0x33, 0x86, 0x82, 0x85, 0x90, 0x89, 0x50, 0x09, 0xbd, 0x21, - 0x12, 0x52, 0x3a, 0x3a, 0x21, 0x8d, 0x3f, 0x37, 0x03, 0x22, 0x31, 0xa9, 0x04, 0x70, 0x7b, 0x81, - 0xb8, 0x99, 0xbc, 0xd5, 0x6a, 0xad, 0x45, 0x71, 0x14, 0x7b, 0xad, 0xfa, 0x16, 0x3c, 0x16, 0x97, - 0xbc, 0x00, 0x12, 0xea, 0x93, 0xa0, 0x3a, 0x4e, 0xd3, 0x8b, 0x01, 0xdb, 0x5d, 0xbe, 0x13, 0x7f, - 0x3f, 0x1f, 0x7f, 0xc7, 0x86, 0xa7, 0x39, 0xd7, 0x0b, 0x59, 0x5e, 0x8a, 0x7c, 0xda, 0x9f, 0x3f, - 0x67, 0x59, 0x31, 0x63, 0x47, 0x7d, 0xc5, 0xcb, 0xb9, 0xb8, 0xe0, 0x67, 0x3c, 0xd7, 0xe5, 0x32, - 0x2e, 0x4a, 0xa9, 0x25, 0x7e, 0x28, 0x94, 0x16, 0x32, 0x6e, 0x96, 0xc7, 0xf5, 0xf2, 0xe0, 0xc9, - 0x75, 0x8c, 0x29, 0xd3, 0x7c, 0xc1, 0xac, 0xbb, 0xf7, 0xcb, 0x85, 0x3b, 0xa3, 0x8a, 0x9a, 0xac, - 0xa1, 0xf8, 0x3e, 0xb4, 0x67, 0x52, 0x69, 0x45, 0x50, 0xe8, 0x44, 0x1e, 0xad, 0x04, 0x7e, 0x04, - 0x1e, 0x9b, 0x4c, 0x4a, 0xae, 0x14, 0x57, 0xa4, 0x65, 0xfe, 0x34, 0x05, 0xfc, 0x02, 0xda, 0x85, - 0x2c, 0xb5, 0x22, 0x4e, 0xe8, 0x44, 0xfb, 0x83, 0xc7, 0xf1, 0x5f, 0x5b, 0x8a, 0x3f, 0xcb, 0x52, - 0xd3, 0x6a, 0x35, 0x1e, 0x42, 0x27, 0x93, 0x17, 0x4c, 0x0b, 0x99, 0x93, 0xdd, 0x10, 0x45, 0x77, - 0x07, 0x87, 0xff, 0x70, 0x6e, 0x77, 0x19, 0x0f, 0xad, 0x8f, 0x6e, 0x08, 0x98, 0x02, 0x94, 0x5c, - 0xc9, 0xec, 0xca, 0xf0, 0xda, 0x86, 0x37, 0xb8, 0x29, 0x8f, 0x6e, 0x9c, 0x74, 0x8b, 0x82, 0x53, - 0xf0, 0x78, 0x3e, 0x29, 0xa4, 0xc8, 0xb5, 0x22, 0xae, 0x39, 0xdc, 0x8d, 0x5b, 0x4c, 0xac, 0x91, - 0x36, 0x88, 0xe0, 0xbb, 0x03, 0x9d, 0xba, 0x8e, 0x09, 0xec, 0xd9, 0x08, 0x09, 0x0a, 0x51, 0xe4, - 0xd1, 0x5a, 0xe2, 0x2f, 0x75, 0x9e, 0x2d, 0xb3, 0xe5, 0xeb, 0xdb, 0x6e, 0x69, 0x52, 0x56, 0xa6, - 0x56, 0x67, 0x3d, 0x06, 0x37, 0x63, 0xe7, 0x3c, 0xab, 0x67, 0xf4, 0xe6, 0xd6, 0xcc, 0xa1, 0xb1, - 0x57, 0x50, 0xcb, 0x5a, 0x1f, 0xc1, 0x02, 0xcc, 0x00, 0x3d, 0x5a, 0x4b, 0x1c, 0x54, 0xb3, 0xcd, - 0x84, 0x5e, 0x9a, 0x59, 0x78, 0x74, 0xa3, 0xf1, 0x03, 0x70, 0x17, 0x5c, 0x4c, 0x67, 0x9a, 0xb8, - 0x21, 0x8a, 0x0e, 0xa8, 0x55, 0xc1, 0x31, 0x40, 0xd3, 0x38, 0xf6, 0xc1, 0xb9, 0xe4, 0x4b, 0x1b, - 0xcd, 0xfa, 0x73, 0x7d, 0x35, 0xe7, 0x2c, 0xbb, 0xe2, 0xa4, 0x65, 0x6c, 0x95, 0x78, 0xd5, 0x3a, - 0x46, 0xc1, 0x4b, 0xd8, 0xdf, 0x6a, 0xef, 0x7f, 0x56, 0x6f, 0xcb, 0xda, 0x3b, 0x84, 0x4e, 0x7d, - 0x99, 0xf0, 0x3d, 0x38, 0xf8, 0x98, 0x8c, 0x3e, 0x9c, 0x25, 0x5f, 0xc7, 0x09, 0x4d, 0x4f, 0x86, - 0xfe, 0xce, 0xa6, 0x74, 0x9a, 0xda, 0x12, 0xea, 0x3d, 0x03, 0x68, 0xae, 0x0b, 0xee, 0xc0, 0x6e, - 0xfa, 0x29, 0x4d, 0xfc, 0x1d, 0x0c, 0xe0, 0x8e, 0xc6, 0x27, 0xe3, 0xd3, 0x77, 0x3e, 0xc2, 0x7b, - 0xe0, 0xbc, 0x4f, 0x47, 0x7e, 0xeb, 0x6d, 0xfc, 0x63, 0xd5, 0x45, 0x3f, 0x57, 0x5d, 0xf4, 0x7b, - 0xd5, 0x45, 0xdf, 0xc2, 0x2a, 0x74, 0x21, 0xfb, 0xac, 0x10, 0xfd, 0x6b, 0x5e, 0xe7, 0xb9, 0x6b, - 0x9e, 0xe5, 0xd1, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe5, 0xb0, 0x1f, 0xc6, 0xff, 0x03, 0x00, - 0x00, + // 524 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0xdd, 0x6e, 0xd3, 0x30, + 0x14, 0x9e, 0x9b, 0x2d, 0x6d, 0x4e, 0x37, 0x54, 0x2c, 0x84, 0x42, 0x84, 0x4a, 0xe8, 0x05, 0x54, + 0x02, 0xa5, 0xa3, 0x13, 0xd2, 0xf8, 0xb9, 0x19, 0x23, 0x12, 0x95, 0x4a, 0x00, 0xb7, 0x17, 0x88, + 0x9b, 0x2a, 0x4b, 0x4d, 0x6b, 0x2d, 0x8a, 0xa3, 0xd8, 0x6b, 0xd5, 0xb7, 0xe0, 0x31, 0x78, 0x14, + 0x2e, 0x79, 0x04, 0xd4, 0x27, 0x41, 0x71, 0x9c, 0xa6, 0x17, 0xa3, 0x6c, 0x77, 0xf9, 0x4e, 0xce, + 0xf7, 0xf9, 0x3b, 0xfe, 0x8e, 0xe1, 0x69, 0x42, 0xe5, 0x92, 0x67, 0x97, 0x2c, 0x99, 0xf5, 0x16, + 0x2f, 0xc2, 0x38, 0x9d, 0x87, 0x27, 0x3d, 0x41, 0xb3, 0x05, 0x8b, 0xe8, 0x84, 0x26, 0x32, 0x5b, + 0x79, 0x69, 0xc6, 0x25, 0xc7, 0x0f, 0x98, 0x90, 0x8c, 0x7b, 0x55, 0xbb, 0x57, 0xb6, 0x3b, 0x8f, + 0xaf, 0xd3, 0x98, 0x85, 0x92, 0x2e, 0x43, 0xcd, 0x76, 0x9e, 0xef, 0x3a, 0x66, 0x4a, 0x53, 0x9a, + 0x4c, 0x69, 0x12, 0xe9, 0xee, 0xce, 0xcf, 0x3a, 0x1c, 0x8e, 0x8a, 0x9f, 0x7e, 0x6e, 0x01, 0xdf, + 0x83, 0x83, 0x39, 0x17, 0x52, 0xd8, 0xc8, 0x35, 0xba, 0x16, 0x29, 0x00, 0x7e, 0x08, 0x56, 0x38, + 0x9d, 0x66, 0x54, 0x08, 0x2a, 0xec, 0x9a, 0xfa, 0x53, 0x15, 0xf0, 0x4b, 0x38, 0x48, 0x79, 0x26, + 0x85, 0x6d, 0xb8, 0x46, 0xb7, 0xd9, 0x7f, 0xe4, 0xfd, 0x73, 0x00, 0xef, 0x33, 0xcf, 0x24, 0x29, + 0xba, 0xf1, 0x10, 0x1a, 0x31, 0x8f, 0x42, 0xc9, 0x78, 0x62, 0xef, 0xbb, 0xa8, 0x7b, 0xa7, 0x7f, + 0xbc, 0x83, 0xb9, 0xed, 0xd2, 0x1b, 0x6a, 0x1e, 0xd9, 0x28, 0x60, 0x02, 0x90, 0x51, 0xc1, 0xe3, + 0x2b, 0xa5, 0x77, 0xa0, 0xf4, 0xfa, 0x37, 0xd5, 0x23, 0x1b, 0x26, 0xd9, 0x52, 0xc1, 0x01, 0x58, + 0x34, 0x99, 0xa6, 0x9c, 0x25, 0x52, 0xd8, 0xa6, 0x1a, 0xee, 0xc6, 0x16, 0x7d, 0x4d, 0x24, 0x95, + 0x04, 0x1e, 0xc0, 0x61, 0xc4, 0x93, 0xef, 0x6c, 0x36, 0x11, 0x11, 0x4f, 0xa9, 0x5d, 0x57, 0x2e, + 0x9f, 0xec, 0x90, 0x3c, 0x57, 0xed, 0xa3, 0xbc, 0x9b, 0x34, 0xa3, 0x0a, 0x38, 0x3f, 0x0c, 0x68, + 0x94, 0x47, 0x60, 0x1b, 0xea, 0x3a, 0x0d, 0x1b, 0xb9, 0xa8, 0x6b, 0x91, 0x12, 0xe2, 0x2f, 0x65, + 0x34, 0x35, 0xe5, 0xfe, 0xcd, 0x6d, 0xdd, 0xab, 0xc0, 0x84, 0xaa, 0x95, 0xb1, 0x8d, 0xc1, 0x8c, + 0xc3, 0x0b, 0x1a, 0x97, 0x71, 0xbf, 0xbd, 0xb5, 0xe6, 0x50, 0xd1, 0x0b, 0x51, 0xad, 0x95, 0x8f, + 0xa0, 0x05, 0xd4, 0x2e, 0x58, 0xa4, 0x84, 0xd8, 0x29, 0xd6, 0x24, 0x66, 0x72, 0xa5, 0x62, 0xb5, + 0xc8, 0x06, 0xe3, 0xfb, 0x60, 0x2e, 0x29, 0x9b, 0xcd, 0xa5, 0x6d, 0xba, 0xa8, 0x7b, 0x44, 0x34, + 0x72, 0x4e, 0x01, 0x2a, 0xe3, 0xb8, 0x05, 0xc6, 0x25, 0x5d, 0xe9, 0xab, 0xc9, 0x3f, 0xf3, 0x2d, + 0x5f, 0x84, 0xf1, 0x15, 0xb5, 0x6b, 0x8a, 0x56, 0x80, 0xd7, 0xb5, 0x53, 0xe4, 0xbc, 0x82, 0xe6, + 0x96, 0xbd, 0xff, 0x51, 0xad, 0x2d, 0x6a, 0xe7, 0x18, 0x1a, 0xe5, 0x5e, 0xe2, 0xbb, 0x70, 0xf4, + 0xd1, 0x1f, 0x7d, 0x98, 0xf8, 0x5f, 0xc7, 0x3e, 0x09, 0xce, 0x86, 0xad, 0xbd, 0x4d, 0x69, 0x10, + 0xe8, 0x12, 0xea, 0x3c, 0x03, 0xa8, 0x36, 0x0f, 0x37, 0x60, 0x3f, 0xf8, 0x14, 0xf8, 0xad, 0x3d, + 0x0c, 0x60, 0x8e, 0xc6, 0x67, 0xe3, 0xc1, 0x79, 0x0b, 0xe1, 0x3a, 0x18, 0xef, 0x83, 0x51, 0xab, + 0xf6, 0xce, 0xfb, 0xb5, 0x6e, 0xa3, 0xdf, 0xeb, 0x36, 0xfa, 0xb3, 0x6e, 0xa3, 0x6f, 0x6e, 0x71, + 0xe9, 0x8c, 0xf7, 0xc2, 0x94, 0xf5, 0xae, 0x79, 0xf3, 0x17, 0xa6, 0x7a, 0xe1, 0x27, 0x7f, 0x03, + 0x00, 0x00, 0xff, 0xff, 0xe4, 0x0f, 0x29, 0x22, 0x78, 0x04, 0x00, 0x00, } diff --git a/networking/v1alpha3/service_entry.proto b/networking/v1alpha3/service_entry.proto index 69bc993da0..c1f233f260 100644 --- a/networking/v1alpha3/service_entry.proto +++ b/networking/v1alpha3/service_entry.proto @@ -15,6 +15,7 @@ syntax = "proto3"; import "networking/v1alpha3/gateway.proto"; +import "networking/v1alpha3/service_dependency.proto"; package istio.networking.v1alpha3; @@ -427,4 +428,11 @@ message ServiceEntry { // One or more endpoints associated with the service. repeated Endpoint endpoints = 6; + + // The visibility setting associated with this service entry. Set to + // PRIVATE if this service should not be visible outside the namespace + // where the service entry was added. The default scope is public, + // i.e. the service added by the service entry will be visible to + // workloads in the entire mesh. + ConfigScope config_scope = 7; } diff --git a/networking/v1alpha3/virtual_service.pb.go b/networking/v1alpha3/virtual_service.pb.go index 19abdd4626..6d51ac6049 100644 --- a/networking/v1alpha3/virtual_service.pb.go +++ b/networking/v1alpha3/virtual_service.pb.go @@ -28,7 +28,7 @@ var _ = math.Inf // // The following example on Kubernetes, routes all HTTP traffic by default to // pods of the reviews service with label "version: v1". In addition, -// HTTP requests containing /wpcatalog/, /consumercatalog/ url prefixes will +// HTTP requests with path starting with /wpcatalog/ or /consumercatalog/ will // be rewritten to /newcatalog and sent to pods with label "version: v2". // // @@ -134,6 +134,11 @@ type VirtualService struct { // be applied to any port that is not a HTTP or TLS port. The first rule // matching an incoming request is used. Tcp []*TCPRoute `protobuf:"bytes,4,rep,name=tcp" json:"tcp,omitempty"` + // The visibility setting associated with this VirtualService. Set to + // PRIVATE if this virtual service should not be exported, i.e. restrict + // the applicability of this virtual service to only workloads in the same + // namespace as the virtual service. + ConfigScope ConfigScope `protobuf:"varint,6,opt,name=config_scope,json=configScope,proto3,enum=istio.networking.v1alpha3.ConfigScope" json:"config_scope,omitempty"` } func (m *VirtualService) Reset() { *m = VirtualService{} } @@ -176,6 +181,13 @@ func (m *VirtualService) GetTcp() []*TCPRoute { return nil } +func (m *VirtualService) GetConfigScope() ConfigScope { + if m != nil { + return m.ConfigScope + } + return ConfigScope_PUBLIC +} + // Destination indicates the network addressable service to which the // request/connection will be sent after processing a routing rule. The // destination.host should unambiguously refer to a service in the service @@ -398,20 +410,23 @@ type HTTPRoute struct { // https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS // for further details about cross origin resource sharing. CorsPolicy *CorsPolicy `protobuf:"bytes,10,opt,name=cors_policy,json=corsPolicy" json:"cors_policy,omitempty"` - // Use of `append_headers` is deprecated. Use the `append_request_headers` + // Use of `append_headers` is deprecated. Use the `headers` // field instead. AppendHeaders map[string]string `protobuf:"bytes,11,rep,name=append_headers,json=appendHeaders" json:"append_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // HTTP headers to remove before returning a response to the caller. + // Use of `remove_response_header` is deprecated. Use the `headers` + // field instead. RemoveResponseHeaders []string `protobuf:"bytes,12,rep,name=remove_response_headers,json=removeResponseHeaders" json:"remove_response_headers,omitempty"` - // Additional HTTP headers to add before returning a response to the - // caller. + // Use of `append_response_headers` is deprecated. Use the `headers` + // field instead. AppendResponseHeaders map[string]string `protobuf:"bytes,13,rep,name=append_response_headers,json=appendResponseHeaders" json:"append_response_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // HTTP headers to remove before forwarding a request to the - // destination service. + // Use of `remove_request_headers` is deprecated. Use the `headers` + // field instead. RemoveRequestHeaders []string `protobuf:"bytes,14,rep,name=remove_request_headers,json=removeRequestHeaders" json:"remove_request_headers,omitempty"` - // Additional HTTP headers to add before forwarding a request to the - // destination service. + // Use of `append_request_headers` is deprecated. Use the `headers` + // field instead. AppendRequestHeaders map[string]string `protobuf:"bytes,15,rep,name=append_request_headers,json=appendRequestHeaders" json:"append_request_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Header manipulation rules + Headers *Headers `protobuf:"bytes,16,opt,name=headers" json:"headers,omitempty"` } func (m *HTTPRoute) Reset() { *m = HTTPRoute{} } @@ -524,6 +539,81 @@ func (m *HTTPRoute) GetAppendRequestHeaders() map[string]string { return nil } +func (m *HTTPRoute) GetHeaders() *Headers { + if m != nil { + return m.Headers + } + return nil +} + +// Header manipulation rules +type Headers struct { + // Header manipulation rules to apply before forwarding a request + // to the destination service + Request *Headers_HeaderOperations `protobuf:"bytes,1,opt,name=request" json:"request,omitempty"` + // Header manipulation rules to apply before returning a response + // to the caller + Response *Headers_HeaderOperations `protobuf:"bytes,2,opt,name=response" json:"response,omitempty"` +} + +func (m *Headers) Reset() { *m = Headers{} } +func (m *Headers) String() string { return proto.CompactTextString(m) } +func (*Headers) ProtoMessage() {} +func (*Headers) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{3} } + +func (m *Headers) GetRequest() *Headers_HeaderOperations { + if m != nil { + return m.Request + } + return nil +} + +func (m *Headers) GetResponse() *Headers_HeaderOperations { + if m != nil { + return m.Response + } + return nil +} + +// HeaderOperations Describes the header manipulations to apply +type Headers_HeaderOperations struct { + // Overwrite the headers specified by key with the given values + Set map[string]string `protobuf:"bytes,1,rep,name=set" json:"set,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Apppend the given values to the the headers specified by keys + // (will create a comma seperated list of values) + Add map[string]string `protobuf:"bytes,2,rep,name=add" json:"add,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Remove a the specified headers + Remove []string `protobuf:"bytes,3,rep,name=remove" json:"remove,omitempty"` +} + +func (m *Headers_HeaderOperations) Reset() { *m = Headers_HeaderOperations{} } +func (m *Headers_HeaderOperations) String() string { return proto.CompactTextString(m) } +func (*Headers_HeaderOperations) ProtoMessage() {} +func (*Headers_HeaderOperations) Descriptor() ([]byte, []int) { + return fileDescriptorVirtualService, []int{3, 0} +} + +func (m *Headers_HeaderOperations) GetSet() map[string]string { + if m != nil { + return m.Set + } + return nil +} + +func (m *Headers_HeaderOperations) GetAdd() map[string]string { + if m != nil { + return m.Add + } + return nil +} + +func (m *Headers_HeaderOperations) GetRemove() []string { + if m != nil { + return m.Remove + } + return nil +} + // Describes match conditions and actions for routing unterminated TLS // traffic (TLS/HTTPS) The following routing rule forwards unterminated TLS // traffic arriving at port 443 of gateway called "mygateway" to internal @@ -568,7 +658,7 @@ type TLSRoute struct { func (m *TLSRoute) Reset() { *m = TLSRoute{} } func (m *TLSRoute) String() string { return proto.CompactTextString(m) } func (*TLSRoute) ProtoMessage() {} -func (*TLSRoute) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{3} } +func (*TLSRoute) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{4} } func (m *TLSRoute) GetMatch() []*TLSMatchAttributes { if m != nil { @@ -618,7 +708,7 @@ type TCPRoute struct { func (m *TCPRoute) Reset() { *m = TCPRoute{} } func (m *TCPRoute) String() string { return proto.CompactTextString(m) } func (*TCPRoute) ProtoMessage() {} -func (*TCPRoute) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{4} } +func (*TCPRoute) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{5} } func (m *TCPRoute) GetMatch() []*L4MatchAttributes { if m != nil { @@ -733,7 +823,7 @@ type HTTPMatchRequest struct { func (m *HTTPMatchRequest) Reset() { *m = HTTPMatchRequest{} } func (m *HTTPMatchRequest) String() string { return proto.CompactTextString(m) } func (*HTTPMatchRequest) ProtoMessage() {} -func (*HTTPMatchRequest) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{5} } +func (*HTTPMatchRequest) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{6} } func (m *HTTPMatchRequest) GetUri() *StringMatch { if m != nil { @@ -866,24 +956,27 @@ type HTTPRouteDestination struct { // If there is only one destination in a rule, the weight value is assumed to // be 100. Weight int32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"` - // HTTP headers to remove before returning a response to the caller. + // Use of `remove_response_header` is deprecated. Use the `headers` + // field instead. RemoveResponseHeaders []string `protobuf:"bytes,3,rep,name=remove_response_headers,json=removeResponseHeaders" json:"remove_response_headers,omitempty"` - // Additional HTTP headers to add before returning a response to the - // caller. + // Use of `append_response_headers` is deprecated. Use the `headers` + // field instead. AppendResponseHeaders map[string]string `protobuf:"bytes,4,rep,name=append_response_headers,json=appendResponseHeaders" json:"append_response_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // HTTP headers to remove before forwarding a request to the - // destination service. + // Use of `remove_request_headers` is deprecated. Use the `headers` + // field instead. RemoveRequestHeaders []string `protobuf:"bytes,5,rep,name=remove_request_headers,json=removeRequestHeaders" json:"remove_request_headers,omitempty"` - // Additional HTTP headers to add before forwarding a request to the - // destination service. + // Use of `append_request_headers` is deprecated. Use the `headers` + // field instead. AppendRequestHeaders map[string]string `protobuf:"bytes,6,rep,name=append_request_headers,json=appendRequestHeaders" json:"append_request_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Header manipulation rules + Headers *Headers `protobuf:"bytes,7,opt,name=headers" json:"headers,omitempty"` } func (m *HTTPRouteDestination) Reset() { *m = HTTPRouteDestination{} } func (m *HTTPRouteDestination) String() string { return proto.CompactTextString(m) } func (*HTTPRouteDestination) ProtoMessage() {} func (*HTTPRouteDestination) Descriptor() ([]byte, []int) { - return fileDescriptorVirtualService, []int{6} + return fileDescriptorVirtualService, []int{7} } func (m *HTTPRouteDestination) GetDestination() *Destination { @@ -928,6 +1021,13 @@ func (m *HTTPRouteDestination) GetAppendRequestHeaders() map[string]string { return nil } +func (m *HTTPRouteDestination) GetHeaders() *Headers { + if m != nil { + return m.Headers + } + return nil +} + // L4 routing rule weighted destination. type RouteDestination struct { // REQUIRED. Destination uniquely identifies the instances of a service @@ -942,7 +1042,7 @@ type RouteDestination struct { func (m *RouteDestination) Reset() { *m = RouteDestination{} } func (m *RouteDestination) String() string { return proto.CompactTextString(m) } func (*RouteDestination) ProtoMessage() {} -func (*RouteDestination) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{7} } +func (*RouteDestination) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{8} } func (m *RouteDestination) GetDestination() *Destination { if m != nil { @@ -986,7 +1086,7 @@ type L4MatchAttributes struct { func (m *L4MatchAttributes) Reset() { *m = L4MatchAttributes{} } func (m *L4MatchAttributes) String() string { return proto.CompactTextString(m) } func (*L4MatchAttributes) ProtoMessage() {} -func (*L4MatchAttributes) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{8} } +func (*L4MatchAttributes) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{9} } func (m *L4MatchAttributes) GetDestinationSubnets() []string { if m != nil { @@ -1053,10 +1153,12 @@ type TLSMatchAttributes struct { Gateways []string `protobuf:"bytes,6,rep,name=gateways" json:"gateways,omitempty"` } -func (m *TLSMatchAttributes) Reset() { *m = TLSMatchAttributes{} } -func (m *TLSMatchAttributes) String() string { return proto.CompactTextString(m) } -func (*TLSMatchAttributes) ProtoMessage() {} -func (*TLSMatchAttributes) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{9} } +func (m *TLSMatchAttributes) Reset() { *m = TLSMatchAttributes{} } +func (m *TLSMatchAttributes) String() string { return proto.CompactTextString(m) } +func (*TLSMatchAttributes) ProtoMessage() {} +func (*TLSMatchAttributes) Descriptor() ([]byte, []int) { + return fileDescriptorVirtualService, []int{10} +} func (m *TLSMatchAttributes) GetSniHosts() []string { if m != nil { @@ -1136,7 +1238,7 @@ type HTTPRedirect struct { func (m *HTTPRedirect) Reset() { *m = HTTPRedirect{} } func (m *HTTPRedirect) String() string { return proto.CompactTextString(m) } func (*HTTPRedirect) ProtoMessage() {} -func (*HTTPRedirect) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{10} } +func (*HTTPRedirect) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{11} } func (m *HTTPRedirect) GetUri() string { if m != nil { @@ -1190,7 +1292,7 @@ type HTTPRewrite struct { func (m *HTTPRewrite) Reset() { *m = HTTPRewrite{} } func (m *HTTPRewrite) String() string { return proto.CompactTextString(m) } func (*HTTPRewrite) ProtoMessage() {} -func (*HTTPRewrite) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{11} } +func (*HTTPRewrite) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{12} } func (m *HTTPRewrite) GetUri() string { if m != nil { @@ -1219,7 +1321,7 @@ type StringMatch struct { func (m *StringMatch) Reset() { *m = StringMatch{} } func (m *StringMatch) String() string { return proto.CompactTextString(m) } func (*StringMatch) ProtoMessage() {} -func (*StringMatch) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{12} } +func (*StringMatch) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{13} } type isStringMatch_MatchType interface { isStringMatch_MatchType() @@ -1391,7 +1493,7 @@ type HTTPRetry struct { func (m *HTTPRetry) Reset() { *m = HTTPRetry{} } func (m *HTTPRetry) String() string { return proto.CompactTextString(m) } func (*HTTPRetry) ProtoMessage() {} -func (*HTTPRetry) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{13} } +func (*HTTPRetry) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{14} } func (m *HTTPRetry) GetAttempts() int32 { if m != nil { @@ -1474,7 +1576,7 @@ type CorsPolicy struct { func (m *CorsPolicy) Reset() { *m = CorsPolicy{} } func (m *CorsPolicy) String() string { return proto.CompactTextString(m) } func (*CorsPolicy) ProtoMessage() {} -func (*CorsPolicy) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{14} } +func (*CorsPolicy) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{15} } func (m *CorsPolicy) GetAllowOrigin() []string { if m != nil { @@ -1539,7 +1641,7 @@ func (m *HTTPFaultInjection) Reset() { *m = HTTPFaultInjection{} } func (m *HTTPFaultInjection) String() string { return proto.CompactTextString(m) } func (*HTTPFaultInjection) ProtoMessage() {} func (*HTTPFaultInjection) Descriptor() ([]byte, []int) { - return fileDescriptorVirtualService, []int{15} + return fileDescriptorVirtualService, []int{16} } func (m *HTTPFaultInjection) GetDelay() *HTTPFaultInjection_Delay { @@ -1604,7 +1706,7 @@ func (m *HTTPFaultInjection_Delay) Reset() { *m = HTTPFaultInjection_Del func (m *HTTPFaultInjection_Delay) String() string { return proto.CompactTextString(m) } func (*HTTPFaultInjection_Delay) ProtoMessage() {} func (*HTTPFaultInjection_Delay) Descriptor() ([]byte, []int) { - return fileDescriptorVirtualService, []int{15, 0} + return fileDescriptorVirtualService, []int{16, 0} } type isHTTPFaultInjection_Delay_HttpDelayType interface { @@ -1778,7 +1880,7 @@ func (m *HTTPFaultInjection_Abort) Reset() { *m = HTTPFaultInjection_Abo func (m *HTTPFaultInjection_Abort) String() string { return proto.CompactTextString(m) } func (*HTTPFaultInjection_Abort) ProtoMessage() {} func (*HTTPFaultInjection_Abort) Descriptor() ([]byte, []int) { - return fileDescriptorVirtualService, []int{15, 1} + return fileDescriptorVirtualService, []int{16, 1} } type isHTTPFaultInjection_Abort_ErrorType interface { @@ -1935,7 +2037,7 @@ type PortSelector struct { func (m *PortSelector) Reset() { *m = PortSelector{} } func (m *PortSelector) String() string { return proto.CompactTextString(m) } func (*PortSelector) ProtoMessage() {} -func (*PortSelector) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{16} } +func (*PortSelector) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{17} } type isPortSelector_Port interface { isPortSelector_Port() @@ -2047,7 +2149,7 @@ type Percent struct { 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{17} } +func (*Percent) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{18} } func (m *Percent) GetValue() float64 { if m != nil { @@ -2060,6 +2162,8 @@ func init() { proto.RegisterType((*VirtualService)(nil), "istio.networking.v1alpha3.VirtualService") proto.RegisterType((*Destination)(nil), "istio.networking.v1alpha3.Destination") proto.RegisterType((*HTTPRoute)(nil), "istio.networking.v1alpha3.HTTPRoute") + proto.RegisterType((*Headers)(nil), "istio.networking.v1alpha3.Headers") + proto.RegisterType((*Headers_HeaderOperations)(nil), "istio.networking.v1alpha3.Headers.HeaderOperations") proto.RegisterType((*TLSRoute)(nil), "istio.networking.v1alpha3.TLSRoute") proto.RegisterType((*TCPRoute)(nil), "istio.networking.v1alpha3.TCPRoute") proto.RegisterType((*HTTPMatchRequest)(nil), "istio.networking.v1alpha3.HTTPMatchRequest") @@ -2159,6 +2263,11 @@ func (m *VirtualService) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.ConfigScope != 0 { + dAtA[i] = 0x30 + i++ + i = encodeVarintVirtualService(dAtA, i, uint64(m.ConfigScope)) + } return i, nil } @@ -2402,6 +2511,123 @@ func (m *HTTPRoute) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], v) } } + if m.Headers != nil { + dAtA[i] = 0x82 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintVirtualService(dAtA, i, uint64(m.Headers.Size())) + n9, err := m.Headers.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + } + return i, nil +} + +func (m *Headers) 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 *Headers) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Request != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintVirtualService(dAtA, i, uint64(m.Request.Size())) + n10, err := m.Request.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + } + if m.Response != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintVirtualService(dAtA, i, uint64(m.Response.Size())) + n11, err := m.Response.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + } + return i, nil +} + +func (m *Headers_HeaderOperations) 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 *Headers_HeaderOperations) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Set) > 0 { + for k, _ := range m.Set { + dAtA[i] = 0xa + i++ + v := m.Set[k] + mapSize := 1 + len(k) + sovVirtualService(uint64(len(k))) + 1 + len(v) + sovVirtualService(uint64(len(v))) + i = encodeVarintVirtualService(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintVirtualService(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintVirtualService(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + if len(m.Add) > 0 { + for k, _ := range m.Add { + dAtA[i] = 0x12 + i++ + v := m.Add[k] + mapSize := 1 + len(k) + sovVirtualService(uint64(len(k))) + 1 + len(v) + sovVirtualService(uint64(len(v))) + i = encodeVarintVirtualService(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintVirtualService(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintVirtualService(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + if len(m.Remove) > 0 { + for _, s := range m.Remove { + dAtA[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } return i, nil } @@ -2508,41 +2734,41 @@ func (m *HTTPMatchRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.Uri.Size())) - n9, err := m.Uri.MarshalTo(dAtA[i:]) + n12, err := m.Uri.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n9 + i += n12 } if m.Scheme != nil { dAtA[i] = 0x12 i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.Scheme.Size())) - n10, err := m.Scheme.MarshalTo(dAtA[i:]) + n13, err := m.Scheme.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n10 + i += n13 } if m.Method != nil { dAtA[i] = 0x1a i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.Method.Size())) - n11, err := m.Method.MarshalTo(dAtA[i:]) + n14, err := m.Method.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n11 + i += n14 } if m.Authority != nil { dAtA[i] = 0x22 i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.Authority.Size())) - n12, err := m.Authority.MarshalTo(dAtA[i:]) + n15, err := m.Authority.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n12 + i += n15 } if len(m.Headers) > 0 { for k, _ := range m.Headers { @@ -2564,11 +2790,11 @@ func (m *HTTPMatchRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintVirtualService(dAtA, i, uint64(v.Size())) - n13, err := v.MarshalTo(dAtA[i:]) + n16, err := v.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n13 + i += n16 } } } @@ -2631,11 +2857,11 @@ func (m *HTTPRouteDestination) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.Destination.Size())) - n14, err := m.Destination.MarshalTo(dAtA[i:]) + n17, err := m.Destination.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n14 + i += n17 } if m.Weight != 0 { dAtA[i] = 0x10 @@ -2706,6 +2932,16 @@ func (m *HTTPRouteDestination) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], v) } } + if m.Headers != nil { + dAtA[i] = 0x3a + i++ + i = encodeVarintVirtualService(dAtA, i, uint64(m.Headers.Size())) + n18, err := m.Headers.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n18 + } return i, nil } @@ -2728,11 +2964,11 @@ func (m *RouteDestination) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.Destination.Size())) - n15, err := m.Destination.MarshalTo(dAtA[i:]) + n19, err := m.Destination.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n15 + i += n19 } if m.Weight != 0 { dAtA[i] = 0x10 @@ -2985,11 +3221,11 @@ func (m *StringMatch) MarshalTo(dAtA []byte) (int, error) { var l int _ = l if m.MatchType != nil { - nn16, err := m.MatchType.MarshalTo(dAtA[i:]) + nn20, err := m.MatchType.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn16 + i += nn20 } return i, nil } @@ -3042,11 +3278,11 @@ func (m *HTTPRetry) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.PerTryTimeout.Size())) - n17, err := m.PerTryTimeout.MarshalTo(dAtA[i:]) + n21, err := m.PerTryTimeout.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n17 + i += n21 } if len(m.RetryOn) > 0 { dAtA[i] = 0x1a @@ -3136,21 +3372,21 @@ func (m *CorsPolicy) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.MaxAge.Size())) - n18, err := m.MaxAge.MarshalTo(dAtA[i:]) + n22, err := m.MaxAge.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n18 + i += n22 } if m.AllowCredentials != nil { dAtA[i] = 0x32 i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.AllowCredentials.Size())) - n19, err := m.AllowCredentials.MarshalTo(dAtA[i:]) + n23, err := m.AllowCredentials.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n19 + i += n23 } return i, nil } @@ -3174,21 +3410,21 @@ func (m *HTTPFaultInjection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.Delay.Size())) - n20, err := m.Delay.MarshalTo(dAtA[i:]) + n24, err := m.Delay.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n20 + i += n24 } if m.Abort != nil { dAtA[i] = 0x12 i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.Abort.Size())) - n21, err := m.Abort.MarshalTo(dAtA[i:]) + n25, err := m.Abort.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n21 + i += n25 } return i, nil } @@ -3214,21 +3450,21 @@ func (m *HTTPFaultInjection_Delay) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintVirtualService(dAtA, i, uint64(m.Percent)) } if m.HttpDelayType != nil { - nn22, err := m.HttpDelayType.MarshalTo(dAtA[i:]) + nn26, err := m.HttpDelayType.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn22 + i += nn26 } if m.Percentage != nil { dAtA[i] = 0x2a i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.Percentage.Size())) - n23, err := m.Percentage.MarshalTo(dAtA[i:]) + n27, err := m.Percentage.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n23 + i += n27 } return i, nil } @@ -3239,11 +3475,11 @@ func (m *HTTPFaultInjection_Delay_FixedDelay) MarshalTo(dAtA []byte) (int, error dAtA[i] = 0x12 i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.FixedDelay.Size())) - n24, err := m.FixedDelay.MarshalTo(dAtA[i:]) + n28, err := m.FixedDelay.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n24 + i += n28 } return i, nil } @@ -3253,11 +3489,11 @@ func (m *HTTPFaultInjection_Delay_ExponentialDelay) MarshalTo(dAtA []byte) (int, dAtA[i] = 0x1a i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.ExponentialDelay.Size())) - n25, err := m.ExponentialDelay.MarshalTo(dAtA[i:]) + n29, err := m.ExponentialDelay.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n25 + i += n29 } return i, nil } @@ -3282,21 +3518,21 @@ func (m *HTTPFaultInjection_Abort) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintVirtualService(dAtA, i, uint64(m.Percent)) } if m.ErrorType != nil { - nn26, err := m.ErrorType.MarshalTo(dAtA[i:]) + nn30, err := m.ErrorType.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn26 + i += nn30 } if m.Percentage != nil { dAtA[i] = 0x2a i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.Percentage.Size())) - n27, err := m.Percentage.MarshalTo(dAtA[i:]) + n31, err := m.Percentage.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n27 + i += n31 } return i, nil } @@ -3340,11 +3576,11 @@ func (m *PortSelector) MarshalTo(dAtA []byte) (int, error) { var l int _ = l if m.Port != nil { - nn28, err := m.Port.MarshalTo(dAtA[i:]) + nn32, err := m.Port.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn28 + i += nn32 } return i, nil } @@ -3430,6 +3666,9 @@ func (m *VirtualService) Size() (n int) { n += 1 + l + sovVirtualService(uint64(l)) } } + if m.ConfigScope != 0 { + n += 1 + sovVirtualService(uint64(m.ConfigScope)) + } return n } @@ -3533,6 +3772,52 @@ func (m *HTTPRoute) Size() (n int) { n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize)) } } + if m.Headers != nil { + l = m.Headers.Size() + n += 2 + l + sovVirtualService(uint64(l)) + } + return n +} + +func (m *Headers) Size() (n int) { + var l int + _ = l + if m.Request != nil { + l = m.Request.Size() + n += 1 + l + sovVirtualService(uint64(l)) + } + if m.Response != nil { + l = m.Response.Size() + n += 1 + l + sovVirtualService(uint64(l)) + } + return n +} + +func (m *Headers_HeaderOperations) Size() (n int) { + var l int + _ = l + if len(m.Set) > 0 { + for k, v := range m.Set { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + 1 + len(v) + sovVirtualService(uint64(len(v))) + n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize)) + } + } + if len(m.Add) > 0 { + for k, v := range m.Add { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + 1 + len(v) + sovVirtualService(uint64(len(v))) + n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize)) + } + } + if len(m.Remove) > 0 { + for _, s := range m.Remove { + l = len(s) + n += 1 + l + sovVirtualService(uint64(l)) + } + } return n } @@ -3662,6 +3947,10 @@ func (m *HTTPRouteDestination) Size() (n int) { n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize)) } } + if m.Headers != nil { + l = m.Headers.Size() + n += 1 + l + sovVirtualService(uint64(l)) + } return n } @@ -4171,6 +4460,25 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigScope", wireType) + } + m.ConfigScope = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVirtualService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ConfigScope |= (ConfigScope(b) & 0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipVirtualService(dAtA[iNdEx:]) @@ -5087,22 +5395,486 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } m.AppendRequestHeaders[mapkey] = mapvalue iNdEx = postIndex - 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 + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Headers", wireType) } - iNdEx += skippy - } - } - + 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.Headers == nil { + m.Headers = &Headers{} + } + if err := m.Headers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + 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 (m *Headers) 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: Headers: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Headers: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Request", 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.Request == nil { + m.Request = &Headers_HeaderOperations{} + } + if err := m.Request.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Response", 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.Response == nil { + m.Response = &Headers_HeaderOperations{} + } + if err := m.Response.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + 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 (m *Headers_HeaderOperations) 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: HeaderOperations: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HeaderOperations: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Set", 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.Set == nil { + m.Set = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := 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) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVirtualService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthVirtualService + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVirtualService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthVirtualService + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipVirtualService(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthVirtualService + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Set[mapkey] = mapvalue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Add", 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.Add == nil { + m.Add = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := 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) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVirtualService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthVirtualService + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVirtualService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthVirtualService + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipVirtualService(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthVirtualService + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Add[mapkey] = mapvalue + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Remove", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVirtualService + } + 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 ErrInvalidLengthVirtualService + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Remove = append(m.Remove, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + 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 } @@ -6178,6 +6950,39 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } m.AppendRequestHeaders[mapkey] = mapvalue iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Headers", 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.Headers == nil { + m.Headers = &Headers{} + } + if err := m.Headers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipVirtualService(dAtA[iNdEx:]) @@ -8326,107 +9131,119 @@ func init() { } var fileDescriptorVirtualService = []byte{ - // 1631 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xdf, 0x6f, 0x1b, 0xc5, - 0x13, 0xef, 0xd9, 0x3e, 0x27, 0x1e, 0x3b, 0x69, 0xb2, 0xdf, 0x34, 0xbd, 0xf8, 0x5b, 0x85, 0xd4, - 0xa5, 0x10, 0x54, 0x6a, 0x8b, 0xa4, 0x40, 0x04, 0x6d, 0xda, 0x38, 0x69, 0xeb, 0xa2, 0x56, 0xad, - 0x2e, 0xa1, 0x0f, 0xbc, 0x58, 0xe7, 0xf3, 0xc6, 0x3e, 0x7a, 0xbe, 0x3d, 0xf6, 0xf6, 0xe2, 0xf8, - 0x09, 0x09, 0xc1, 0x1f, 0x00, 0xe2, 0x15, 0x21, 0xfe, 0x12, 0x5e, 0x79, 0xe4, 0x2f, 0x40, 0x55, - 0x1f, 0xf9, 0x27, 0x40, 0x3b, 0x7b, 0x67, 0x5f, 0xe2, 0xc4, 0x3f, 0xa0, 0x20, 0xde, 0x6e, 0x77, - 0xe7, 0x33, 0x3b, 0x3b, 0x3b, 0xfb, 0x99, 0x99, 0x83, 0x77, 0x3c, 0x2a, 0xba, 0x8c, 0xbf, 0x70, - 0xbc, 0x56, 0xe5, 0xe8, 0x3d, 0xcb, 0xf5, 0xdb, 0xd6, 0x66, 0xe5, 0xc8, 0xe1, 0x22, 0xb4, 0xdc, - 0x7a, 0x40, 0xf9, 0x91, 0x63, 0xd3, 0xb2, 0xcf, 0x99, 0x60, 0x64, 0xc5, 0x09, 0x84, 0xc3, 0xca, - 0x03, 0x40, 0x39, 0x06, 0x14, 0x57, 0x5b, 0x8c, 0xb5, 0x5c, 0x5a, 0x41, 0xc1, 0x46, 0x78, 0x58, - 0x69, 0x86, 0xdc, 0x12, 0x0e, 0xf3, 0x14, 0x74, 0x78, 0xbd, 0xcb, 0x2d, 0xdf, 0xa7, 0x3c, 0x50, - 0xeb, 0xa5, 0xdf, 0x35, 0x98, 0x7f, 0xae, 0x36, 0xdd, 0x57, 0x7b, 0x92, 0x25, 0xd0, 0xdb, 0x2c, - 0x10, 0x81, 0xa1, 0xad, 0xa5, 0xd7, 0x73, 0xa6, 0x1a, 0x90, 0x22, 0xcc, 0xb6, 0x2c, 0x41, 0xbb, - 0x56, 0x2f, 0x30, 0x52, 0xb8, 0xd0, 0x1f, 0x93, 0x2d, 0xc8, 0xb4, 0x85, 0xf0, 0x8d, 0xf4, 0x5a, - 0x7a, 0x3d, 0xbf, 0xf1, 0x66, 0xf9, 0x5c, 0x73, 0xcb, 0xb5, 0x83, 0x83, 0x67, 0x26, 0x0b, 0x05, - 0x35, 0x11, 0x41, 0xde, 0x87, 0xb4, 0xb0, 0x7d, 0x23, 0x83, 0xc0, 0x6b, 0x23, 0x80, 0x07, 0xbb, - 0x11, 0x4e, 0xca, 0x23, 0xcc, 0x0d, 0x0c, 0x7d, 0x3c, 0xec, 0xf1, 0x7e, 0x0c, 0x73, 0x83, 0xd2, - 0x11, 0xe4, 0xf7, 0x68, 0x20, 0x1c, 0x0f, 0x3d, 0x44, 0x08, 0x64, 0xe4, 0xd9, 0x0c, 0x6d, 0x4d, - 0x5b, 0xcf, 0x99, 0xf8, 0x4d, 0x96, 0x21, 0x1b, 0x84, 0x8d, 0x80, 0x0a, 0x23, 0x85, 0xb3, 0xd1, - 0x88, 0x7c, 0x0c, 0x19, 0x9f, 0x71, 0x61, 0xa4, 0xd7, 0xb4, 0xf5, 0xfc, 0xc6, 0xdb, 0x23, 0xb6, - 0x7c, 0xc6, 0xb8, 0xd8, 0xa7, 0x2e, 0xb5, 0x05, 0xe3, 0x26, 0x82, 0x4a, 0x3f, 0x01, 0xe4, 0xfa, - 0x27, 0x27, 0x3b, 0xa0, 0x77, 0x2c, 0x61, 0xb7, 0xd1, 0xbf, 0xf9, 0x8d, 0x1b, 0x63, 0xdc, 0xf5, - 0x44, 0xca, 0x9a, 0xf4, 0x8b, 0x90, 0x06, 0xc2, 0x54, 0x48, 0x72, 0x1f, 0x74, 0x2e, 0x75, 0xe1, - 0x4d, 0xe4, 0x37, 0x2a, 0x93, 0x78, 0x3c, 0x71, 0x72, 0x53, 0xa1, 0xc9, 0x2e, 0xcc, 0x72, 0xda, - 0x74, 0x38, 0xb5, 0x27, 0x39, 0x18, 0x6a, 0x8a, 0xc4, 0xcd, 0x3e, 0x90, 0xdc, 0x83, 0x19, 0x4e, - 0xbb, 0xdc, 0x11, 0xd4, 0xc8, 0xa0, 0x8e, 0xb7, 0xc6, 0xea, 0x40, 0x69, 0x33, 0x86, 0x91, 0x1b, - 0xb0, 0xd8, 0xa5, 0x8d, 0x80, 0xd9, 0x2f, 0xa8, 0xa8, 0x87, 0x7e, 0x8b, 0x5b, 0x4d, 0x6a, 0xe8, - 0x6b, 0xda, 0xfa, 0xac, 0xb9, 0xd0, 0x5f, 0xf8, 0x54, 0xcd, 0x93, 0x4d, 0x98, 0x11, 0x4e, 0x87, - 0xb2, 0x50, 0x18, 0x59, 0xdc, 0x6e, 0xa5, 0xac, 0x42, 0xbc, 0x1c, 0x87, 0x78, 0x79, 0x2f, 0x7a, - 0x02, 0x66, 0x2c, 0x49, 0xb6, 0xa5, 0x8d, 0x82, 0x3b, 0x34, 0x30, 0x66, 0x10, 0x34, 0x36, 0x46, - 0xa9, 0xe0, 0x3d, 0x33, 0x06, 0x91, 0x5d, 0xd0, 0x0f, 0xad, 0xd0, 0x15, 0xc6, 0x2c, 0xa2, 0x6f, - 0x8e, 0x41, 0x3f, 0x90, 0xb2, 0x8f, 0xbc, 0xcf, 0xa9, 0xad, 0xbc, 0x8d, 0x58, 0xb2, 0x0d, 0xd9, - 0x8e, 0xc3, 0x39, 0xe3, 0x46, 0x6e, 0xac, 0x9f, 0x92, 0x97, 0x15, 0xa1, 0xc8, 0x03, 0xc8, 0xdb, - 0x8c, 0x07, 0x75, 0x9f, 0xb9, 0x8e, 0xdd, 0x33, 0x00, 0x95, 0x5c, 0x1f, 0xa1, 0x64, 0x97, 0xf1, - 0xe0, 0x19, 0x0a, 0x9b, 0x60, 0xf7, 0xbf, 0x49, 0x03, 0xe6, 0x25, 0x05, 0x78, 0xcd, 0x7a, 0x9b, - 0x5a, 0x4d, 0xca, 0x03, 0x23, 0x8f, 0x51, 0xf4, 0xe1, 0x24, 0x51, 0x54, 0xde, 0x41, 0x68, 0x4d, - 0x21, 0xef, 0x7b, 0x82, 0xf7, 0xaa, 0x29, 0x43, 0x33, 0xe7, 0xac, 0xe4, 0x3c, 0xf9, 0x00, 0x2e, - 0x73, 0xda, 0x61, 0x47, 0xb4, 0xce, 0x69, 0xe0, 0x33, 0x2f, 0xa0, 0xfd, 0xcd, 0x0a, 0x48, 0x1e, - 0x97, 0xd4, 0xb2, 0x19, 0xad, 0xc6, 0xb8, 0x2e, 0x5c, 0x8e, 0x6c, 0x1b, 0xc2, 0xcd, 0xa1, 0x91, - 0x77, 0xa7, 0x30, 0xf2, 0x94, 0x72, 0x34, 0xd6, 0xbc, 0x64, 0x9d, 0xb5, 0x46, 0x6e, 0xc1, 0x72, - 0xdf, 0x60, 0x7c, 0x6a, 0xfd, 0x7d, 0xe7, 0xd1, 0xde, 0xa5, 0xd8, 0x5e, 0x5c, 0x8c, 0x51, 0x02, - 0x96, 0xfb, 0xe6, 0x9e, 0x44, 0x5d, 0x44, 0x6b, 0xb7, 0xa7, 0xb2, 0x36, 0xa9, 0x5a, 0x19, 0xbb, - 0x64, 0x9d, 0xb1, 0x54, 0xbc, 0x07, 0x64, 0xf8, 0x16, 0xc8, 0x02, 0xa4, 0x5f, 0xd0, 0x5e, 0x44, - 0x66, 0xf2, 0x53, 0x12, 0xf9, 0x91, 0xe5, 0x86, 0x34, 0xa2, 0x32, 0x35, 0xf8, 0x28, 0xb5, 0xa5, - 0x15, 0x6b, 0x50, 0x3c, 0xdf, 0x45, 0x53, 0x69, 0x7a, 0x08, 0x2b, 0xe7, 0x9a, 0x3f, 0x8d, 0xa2, - 0xd2, 0x77, 0x1a, 0xcc, 0xc6, 0x6c, 0x2d, 0xdf, 0x5b, 0x92, 0x22, 0x6f, 0x8e, 0x66, 0x78, 0x64, - 0xc8, 0x1d, 0x21, 0xb8, 0xd3, 0x08, 0x05, 0x0d, 0x62, 0x92, 0xdc, 0x39, 0x49, 0x92, 0xa3, 0x78, - 0xf6, 0x1c, 0x82, 0x2c, 0x7d, 0x2b, 0x8d, 0x8a, 0x32, 0x0f, 0xa9, 0x9e, 0x34, 0xea, 0xdd, 0x11, - 0xfa, 0x1e, 0xdf, 0xfa, 0xe7, 0x6c, 0xfa, 0x51, 0x87, 0x85, 0xd3, 0x79, 0x81, 0x6c, 0x41, 0x3a, - 0xe4, 0x0e, 0x7a, 0x7a, 0x34, 0xb1, 0xec, 0x0b, 0xee, 0x78, 0x2d, 0x85, 0x95, 0x10, 0xc9, 0x4a, - 0x81, 0xdd, 0xa6, 0x1d, 0x75, 0x25, 0x93, 0x83, 0x23, 0x14, 0xb2, 0x1a, 0x15, 0x6d, 0xd6, 0x8c, - 0x32, 0xc8, 0xc4, 0x78, 0x85, 0x22, 0x7b, 0x90, 0xb3, 0x42, 0xd1, 0x66, 0xdc, 0x11, 0xbd, 0x09, - 0x12, 0x48, 0x52, 0xc5, 0x00, 0x48, 0x4c, 0x98, 0x89, 0x5f, 0x9e, 0x2a, 0x0a, 0xb6, 0xa6, 0xc8, - 0xaa, 0xe5, 0x13, 0x6f, 0x2e, 0x56, 0x24, 0xcb, 0x03, 0x4c, 0xf9, 0x32, 0xcd, 0xcc, 0xa9, 0x4c, - 0x4e, 0x1a, 0x30, 0x17, 0xb0, 0x90, 0xdb, 0xb4, 0xee, 0x5a, 0x0d, 0xea, 0xca, 0x74, 0x22, 0x77, - 0xbb, 0x33, 0xcd, 0x6e, 0xfb, 0xa8, 0xe0, 0x31, 0xe2, 0xd5, 0x96, 0x85, 0x20, 0x31, 0x75, 0xa2, - 0xd2, 0x9a, 0x3d, 0x59, 0x69, 0x15, 0x1b, 0x50, 0x18, 0xf3, 0xc2, 0x6e, 0x27, 0x5f, 0xd8, 0xe4, - 0xbe, 0x4c, 0x3c, 0xe9, 0xbb, 0xb0, 0x38, 0x64, 0xe2, 0x54, 0x4f, 0xf9, 0x8f, 0x0c, 0x2c, 0x9d, - 0x55, 0x76, 0x90, 0x1a, 0xe4, 0x9b, 0x83, 0xe1, 0x04, 0xd1, 0x9a, 0x0c, 0xff, 0x24, 0x54, 0x96, - 0x69, 0x5d, 0xea, 0xb4, 0xda, 0xaa, 0x4c, 0xd3, 0xcd, 0x68, 0x34, 0x2a, 0xef, 0xa4, 0x47, 0xe5, - 0x9d, 0xaf, 0xb4, 0xf3, 0x13, 0x8f, 0x2a, 0x4e, 0x3f, 0x99, 0xb2, 0xc6, 0x7a, 0xad, 0x39, 0x48, - 0x1f, 0x91, 0x83, 0xbe, 0x3c, 0x37, 0x07, 0x65, 0xd1, 0xf0, 0x47, 0x7f, 0xd5, 0xf0, 0x49, 0xd3, - 0xd1, 0x7f, 0x30, 0x99, 0x08, 0x58, 0xf8, 0xf7, 0x83, 0xaf, 0xf4, 0x73, 0x0a, 0x16, 0x87, 0x98, - 0x9f, 0x54, 0xe0, 0x7f, 0x09, 0x70, 0x3d, 0x08, 0x1b, 0x1e, 0xed, 0x37, 0x57, 0x24, 0xb1, 0xb4, - 0xaf, 0x56, 0xfa, 0xbc, 0x93, 0x4a, 0xf0, 0xce, 0xb5, 0x3e, 0xef, 0x28, 0x3c, 0x92, 0x6d, 0x2e, - 0x26, 0x0e, 0x85, 0x24, 0xf6, 0x69, 0x72, 0xca, 0x8c, 0x2d, 0x42, 0x86, 0xcc, 0x9d, 0x8a, 0x9d, - 0xf4, 0x53, 0xec, 0xf4, 0xb7, 0x99, 0xe3, 0xb7, 0x14, 0x90, 0xe1, 0x84, 0x4e, 0xfe, 0x0f, 0xb9, - 0xc0, 0x73, 0xea, 0xc9, 0xae, 0x74, 0x36, 0xf0, 0x9c, 0x1a, 0x36, 0xa6, 0xe7, 0xf8, 0x37, 0x35, - 0xd6, 0xbf, 0xe9, 0x51, 0xfe, 0xcd, 0x9c, 0xe1, 0xdf, 0xe6, 0x69, 0xff, 0xea, 0x63, 0x4b, 0xd2, - 0xe1, 0xc3, 0x4c, 0xe5, 0xe0, 0xec, 0xeb, 0x76, 0xf0, 0x36, 0x14, 0x92, 0x6d, 0x9c, 0xc4, 0xc6, - 0x75, 0x43, 0x4e, 0xd5, 0x03, 0x57, 0x92, 0xf9, 0x58, 0xe1, 0x07, 0x13, 0xa5, 0x3b, 0x90, 0x4f, - 0xb4, 0x70, 0x53, 0xc3, 0x29, 0xe4, 0x13, 0x49, 0x87, 0x2c, 0x83, 0x4e, 0x8f, 0x2d, 0x3b, 0xea, - 0xc0, 0x6b, 0x17, 0x4c, 0x35, 0x24, 0x06, 0x64, 0x7d, 0x4e, 0x0f, 0x9d, 0x63, 0xa5, 0xa1, 0x76, - 0xc1, 0x8c, 0xc6, 0x12, 0xc1, 0x69, 0x8b, 0x1e, 0xab, 0xf8, 0x97, 0x08, 0x1c, 0x56, 0x0b, 0x00, - 0x58, 0x60, 0xd5, 0x45, 0xcf, 0xa7, 0xa5, 0x6f, 0xb4, 0xa8, 0xdf, 0x96, 0x5d, 0x9c, 0x74, 0xa8, - 0x25, 0x04, 0xed, 0xf8, 0x18, 0x3c, 0xf2, 0xc1, 0xf6, 0xc7, 0x64, 0x07, 0x2e, 0xfa, 0x94, 0xd7, - 0x05, 0xef, 0xd5, 0xe3, 0xae, 0x32, 0x35, 0xae, 0xab, 0x9c, 0xf3, 0x29, 0x3f, 0xe0, 0xbd, 0x83, - 0xa8, 0xb7, 0x5c, 0x91, 0x4d, 0xb4, 0x54, 0xc0, 0xbc, 0xe8, 0x55, 0x62, 0xdb, 0xd8, 0x7b, 0xea, - 0x95, 0x7e, 0x48, 0x01, 0x0c, 0x9a, 0x30, 0x72, 0x15, 0x0a, 0x96, 0xeb, 0xb2, 0x6e, 0x9d, 0x71, - 0xa7, 0xe5, 0x78, 0x51, 0x24, 0xe7, 0x71, 0xee, 0x29, 0x4e, 0xc9, 0x38, 0x54, 0x22, 0xaa, 0x3a, - 0x8a, 0xc3, 0x58, 0xe1, 0x9e, 0xa8, 0xb9, 0x81, 0xd0, 0xc9, 0xd4, 0xa6, 0x84, 0xe2, 0xb4, 0x70, - 0x1d, 0xe6, 0xe9, 0xb1, 0xcf, 0x4e, 0xe5, 0xb1, 0x9c, 0x39, 0xa7, 0x66, 0x63, 0xb1, 0x0d, 0x98, - 0xe9, 0x58, 0xc7, 0x75, 0xab, 0xa5, 0x3a, 0xee, 0x91, 0x07, 0xcf, 0x76, 0xac, 0xe3, 0x9d, 0x16, - 0x25, 0x0f, 0x61, 0x51, 0xed, 0x6f, 0x73, 0xda, 0xa4, 0x9e, 0x70, 0x2c, 0x37, 0x88, 0x9a, 0xf1, - 0xe2, 0x10, 0xba, 0xca, 0x98, 0xfb, 0x5c, 0xc6, 0x9f, 0xb9, 0x80, 0xa0, 0xdd, 0x01, 0xa6, 0xf4, - 0xbd, 0x0e, 0x64, 0xb8, 0x5f, 0x26, 0x8f, 0x40, 0x6f, 0x52, 0xd7, 0xea, 0x45, 0x1c, 0xbd, 0x39, - 0x55, 0xb7, 0x5d, 0xde, 0x93, 0x50, 0x53, 0x69, 0x90, 0xaa, 0xac, 0x46, 0x4c, 0xa6, 0x53, 0xab, - 0xda, 0x91, 0x50, 0x53, 0x69, 0x28, 0x7e, 0x9d, 0x02, 0x1d, 0x75, 0x93, 0x2b, 0x30, 0xe3, 0x53, - 0x6e, 0x53, 0x4f, 0x05, 0xae, 0x8e, 0x0d, 0x70, 0x3c, 0x45, 0x6e, 0x43, 0xfe, 0xd0, 0x39, 0xa6, - 0xcd, 0xba, 0x3a, 0xc3, 0xb8, 0x70, 0xaa, 0x5d, 0x30, 0x01, 0xe5, 0x95, 0xee, 0x1a, 0x2c, 0xca, - 0x0b, 0xf2, 0x94, 0x8b, 0x22, 0x1d, 0xe9, 0xf1, 0x3a, 0x16, 0x12, 0x28, 0xa5, 0xa9, 0x0a, 0x10, - 0x99, 0x34, 0xb8, 0xdc, 0xd2, 0xa8, 0xff, 0x56, 0x4a, 0xd8, 0x4c, 0xa0, 0xaa, 0x8b, 0x70, 0xb1, - 0x2d, 0x84, 0xaf, 0xcc, 0xc0, 0xb7, 0x55, 0x7c, 0xa9, 0x81, 0x8e, 0x7e, 0x19, 0xe3, 0x86, 0xab, - 0x90, 0x47, 0x68, 0x20, 0x2c, 0x11, 0x06, 0x2a, 0x53, 0xca, 0xb3, 0xca, 0xc9, 0x7d, 0x9c, 0x93, - 0x22, 0x2d, 0xee, 0xdb, 0xb1, 0x48, 0xfc, 0xa4, 0x41, 0x4e, 0x0e, 0x44, 0x24, 0x60, 0xa3, 0x4e, - 0xf1, 0xc7, 0x49, 0x26, 0x16, 0xc1, 0xc9, 0xfb, 0xf8, 0x5b, 0xe4, 0x75, 0x9c, 0xb3, 0x00, 0x80, - 0x1b, 0x28, 0xfa, 0x78, 0x00, 0x85, 0xe4, 0x4f, 0x3c, 0x49, 0x47, 0x5e, 0xd8, 0x69, 0x50, 0x8e, - 0xe7, 0x9c, 0x93, 0x74, 0xa4, 0xc6, 0x64, 0x09, 0x32, 0x9e, 0x15, 0xb5, 0x4e, 0xd2, 0x2e, 0x1c, - 0x55, 0xb3, 0x2a, 0xc1, 0x94, 0xde, 0x80, 0x99, 0x68, 0xb3, 0x01, 0x23, 0x4b, 0x0d, 0x5a, 0xc4, - 0xc8, 0xd5, 0xf2, 0x2f, 0xaf, 0x56, 0xb5, 0x5f, 0x5f, 0xad, 0x6a, 0x2f, 0x5f, 0xad, 0x6a, 0x9f, - 0xad, 0x29, 0x9b, 0x1d, 0x56, 0xb1, 0x7c, 0xa7, 0x72, 0xc6, 0xdf, 0xe1, 0x46, 0x16, 0x6f, 0x7e, - 0xf3, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x77, 0x6d, 0xd7, 0xd3, 0x3b, 0x16, 0x00, 0x00, + // 1818 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4f, 0x73, 0xe3, 0x48, + 0x15, 0x1f, 0xd9, 0x96, 0xff, 0x3c, 0x3b, 0x99, 0xa4, 0xc9, 0xce, 0x6a, 0xcc, 0xd6, 0x90, 0xf5, + 0xb2, 0x4b, 0xa8, 0xdd, 0x75, 0x0a, 0x0f, 0x2c, 0xa9, 0x65, 0x76, 0x76, 0x93, 0xcc, 0xcc, 0x7a, + 0xa8, 0x19, 0x26, 0x25, 0x87, 0x3d, 0x70, 0x51, 0xc9, 0xd2, 0x8b, 0x2d, 0x46, 0x96, 0x44, 0xab, + 0x95, 0xc4, 0xc5, 0x91, 0x3f, 0x77, 0x28, 0xae, 0x14, 0x9f, 0x82, 0x0b, 0x17, 0xae, 0x9c, 0x28, + 0x3e, 0x01, 0x35, 0x35, 0x07, 0xae, 0x7c, 0x05, 0xaa, 0xff, 0x48, 0x56, 0xe2, 0xc4, 0xb2, 0xc3, + 0x40, 0xed, 0x29, 0xee, 0xee, 0xf7, 0x7b, 0xfd, 0xfa, 0x75, 0xbf, 0xf7, 0x7e, 0x7a, 0x81, 0xef, + 0x06, 0xc8, 0xce, 0x42, 0xfa, 0xd2, 0x0b, 0x46, 0xbb, 0xa7, 0xdf, 0xb3, 0xfd, 0x68, 0x6c, 0xdf, + 0xdf, 0x3d, 0xf5, 0x28, 0x4b, 0x6c, 0xdf, 0x8a, 0x91, 0x9e, 0x7a, 0x0e, 0x76, 0x23, 0x1a, 0xb2, + 0x90, 0xdc, 0xf5, 0x62, 0xe6, 0x85, 0xdd, 0x19, 0xa0, 0x9b, 0x02, 0xda, 0xf7, 0x46, 0x61, 0x38, + 0xf2, 0x71, 0x57, 0x08, 0x0e, 0x93, 0x93, 0x5d, 0x37, 0xa1, 0x36, 0xf3, 0xc2, 0x40, 0x42, 0xe7, + 0xd7, 0xcf, 0xa8, 0x1d, 0x45, 0x48, 0x63, 0xb5, 0xfe, 0xd1, 0x55, 0x56, 0xa8, 0xdd, 0x2d, 0x17, + 0x23, 0x0c, 0x5c, 0x0c, 0x9c, 0xa9, 0x94, 0xee, 0xfc, 0xb9, 0x04, 0xeb, 0x5f, 0x49, 0x13, 0x07, + 0x52, 0x86, 0x6c, 0x81, 0x3e, 0x0e, 0x63, 0x16, 0x1b, 0xda, 0x76, 0x79, 0xa7, 0x61, 0xca, 0x01, + 0x69, 0x43, 0x7d, 0x64, 0x33, 0x3c, 0xb3, 0xa7, 0xb1, 0x51, 0x12, 0x0b, 0xd9, 0x98, 0xec, 0x41, + 0x65, 0xcc, 0x58, 0x64, 0x94, 0xb7, 0xcb, 0x3b, 0xcd, 0xde, 0xb7, 0xbb, 0xd7, 0x1e, 0xae, 0xdb, + 0x3f, 0x3e, 0x3e, 0x32, 0xc3, 0x84, 0xa1, 0x29, 0x10, 0xe4, 0x07, 0x50, 0x66, 0x4e, 0x64, 0x54, + 0x04, 0xf0, 0xbd, 0x05, 0xc0, 0xe3, 0x43, 0x85, 0xe3, 0xf2, 0x02, 0xe6, 0xc7, 0x86, 0x5e, 0x0c, + 0x7b, 0x36, 0x48, 0x61, 0x7e, 0x4c, 0x9e, 0x42, 0xcb, 0x09, 0x83, 0x13, 0x6f, 0x64, 0xc5, 0x4e, + 0x18, 0xa1, 0x51, 0xdd, 0xd6, 0x76, 0xd6, 0x7b, 0x1f, 0x2c, 0xc0, 0x1f, 0x0a, 0xf1, 0x01, 0x97, + 0x36, 0x9b, 0xce, 0x6c, 0xd0, 0x39, 0x85, 0xe6, 0x23, 0x8c, 0x99, 0x17, 0x88, 0xab, 0x21, 0x04, + 0x2a, 0xdc, 0x4d, 0x86, 0xb6, 0xad, 0xed, 0x34, 0x4c, 0xf1, 0x9b, 0xdc, 0x81, 0x6a, 0x9c, 0x0c, + 0x63, 0x64, 0x46, 0x49, 0xcc, 0xaa, 0x11, 0xf9, 0x11, 0x54, 0xa2, 0x90, 0x32, 0xa3, 0xbc, 0xad, + 0xed, 0x34, 0x7b, 0xdf, 0x59, 0xb0, 0xfb, 0x51, 0x48, 0xd9, 0x00, 0x7d, 0x74, 0x58, 0x48, 0x4d, + 0x01, 0xea, 0xfc, 0x1b, 0xa0, 0x91, 0x39, 0x91, 0xec, 0x83, 0x3e, 0xb1, 0x99, 0x33, 0x16, 0x57, + 0xd5, 0xec, 0x7d, 0x58, 0xe0, 0xf9, 0xe7, 0x5c, 0xd6, 0xc4, 0x5f, 0x24, 0x18, 0x33, 0x53, 0x22, + 0xc9, 0x63, 0xd0, 0x29, 0xd7, 0x25, 0x2e, 0xb5, 0xd9, 0xdb, 0x5d, 0xe6, 0xf2, 0x72, 0x27, 0x37, + 0x25, 0x9a, 0x1c, 0x42, 0x9d, 0xa2, 0xeb, 0x51, 0x74, 0x96, 0x39, 0x98, 0xd0, 0xa4, 0xc4, 0xcd, + 0x0c, 0x48, 0xbe, 0x80, 0x1a, 0xc5, 0x33, 0xea, 0x31, 0x34, 0x2a, 0x42, 0xc7, 0x07, 0x85, 0x3a, + 0x84, 0xb4, 0x99, 0xc2, 0xc8, 0x87, 0xb0, 0x79, 0x86, 0xc3, 0x38, 0x74, 0x5e, 0x22, 0xb3, 0x92, + 0x68, 0x44, 0x6d, 0x17, 0x0d, 0x7d, 0x5b, 0xdb, 0xa9, 0x9b, 0x1b, 0xd9, 0xc2, 0x4f, 0xe5, 0x3c, + 0xb9, 0x0f, 0x35, 0xe6, 0x4d, 0x30, 0x4c, 0x98, 0x78, 0x09, 0xcd, 0xde, 0xdd, 0xae, 0x8c, 0xad, + 0x6e, 0x1a, 0x5b, 0xdd, 0x47, 0x2a, 0xf6, 0xcc, 0x54, 0x92, 0x3c, 0xe4, 0x36, 0x32, 0xea, 0x61, + 0x6c, 0xd4, 0x04, 0xa8, 0xf0, 0xb9, 0x23, 0xa3, 0x53, 0x33, 0x05, 0x91, 0x43, 0xd0, 0x4f, 0xec, + 0xc4, 0x67, 0x46, 0x5d, 0xa0, 0x3f, 0x2e, 0x40, 0x3f, 0xe1, 0xb2, 0x4f, 0x83, 0x9f, 0xa3, 0x23, + 0xbd, 0x2d, 0xb0, 0xe4, 0x21, 0x54, 0x27, 0x1e, 0xa5, 0x21, 0x35, 0x1a, 0x85, 0x7e, 0xca, 0x5f, + 0x96, 0x42, 0x91, 0x27, 0xd0, 0x74, 0x42, 0x1a, 0x5b, 0x51, 0xe8, 0x7b, 0xce, 0xd4, 0x00, 0xa1, + 0xe4, 0xfd, 0x85, 0x71, 0x40, 0xe3, 0x23, 0x21, 0x6c, 0x82, 0x93, 0xfd, 0x26, 0x43, 0x58, 0xe7, + 0xb9, 0x27, 0x70, 0xad, 0x31, 0xda, 0x2e, 0xd2, 0xd8, 0x68, 0x8a, 0x57, 0xf4, 0xc3, 0x65, 0x5e, + 0x51, 0x77, 0x5f, 0x40, 0xfb, 0x12, 0xf9, 0x38, 0x60, 0x74, 0x7a, 0x50, 0x32, 0x34, 0x73, 0xcd, + 0xce, 0xcf, 0x93, 0x4f, 0xe1, 0x6d, 0x8a, 0x93, 0xf0, 0x14, 0x2d, 0x8a, 0x71, 0x14, 0x06, 0x31, + 0x66, 0x9b, 0xb5, 0x78, 0x1e, 0x12, 0x98, 0xb7, 0xa4, 0x88, 0xa9, 0x24, 0x52, 0xec, 0x2f, 0xe1, + 0x6d, 0x65, 0xdf, 0x1c, 0x76, 0x4d, 0x18, 0xfa, 0xf9, 0x0a, 0x86, 0x5e, 0x52, 0x3e, 0x33, 0xf8, + 0x2d, 0xfb, 0xaa, 0x75, 0xb2, 0x07, 0x77, 0x32, 0xc3, 0x45, 0xc8, 0x65, 0x7b, 0xaf, 0x67, 0x76, + 0x6f, 0xa5, 0x76, 0x0b, 0x81, 0x14, 0x79, 0x0e, 0x77, 0x32, 0xb3, 0x2f, 0x22, 0x6f, 0x0b, 0xab, + 0x1f, 0xae, 0x64, 0x75, 0x5e, 0xf5, 0xcc, 0xe8, 0x2d, 0xfb, 0x8a, 0x65, 0xf2, 0x00, 0x6a, 0xe9, + 0x56, 0x1b, 0xe2, 0x51, 0x74, 0x16, 0x6d, 0x25, 0x25, 0xcd, 0x14, 0xd2, 0xfe, 0x02, 0xc8, 0xfc, + 0x9d, 0x92, 0x0d, 0x28, 0xbf, 0xc4, 0xa9, 0x4a, 0x8d, 0xfc, 0x27, 0xaf, 0x30, 0xa7, 0xb6, 0x9f, + 0xa0, 0x4a, 0x8c, 0x72, 0xf0, 0x69, 0x69, 0x4f, 0x6b, 0xf7, 0xa1, 0x7d, 0xbd, 0xb3, 0x57, 0xd2, + 0xf4, 0x25, 0xdc, 0xbd, 0xd6, 0x01, 0xab, 0x28, 0xea, 0xfc, 0xab, 0x0c, 0xb5, 0xd4, 0x3d, 0xcf, + 0x79, 0xf0, 0x0b, 0x75, 0x02, 0xdb, 0xec, 0xdd, 0x2f, 0x76, 0x8f, 0xfa, 0xfb, 0x22, 0x42, 0x99, + 0x4a, 0x62, 0x33, 0xd5, 0x41, 0x5e, 0xf0, 0xa4, 0x29, 0xcf, 0x29, 0xf6, 0xbd, 0xa1, 0xbe, 0x4c, + 0x49, 0xfb, 0x2f, 0x25, 0xd8, 0xb8, 0xbc, 0x4c, 0x7e, 0x02, 0x65, 0x5e, 0x84, 0x64, 0x89, 0x78, + 0x70, 0x83, 0x0d, 0xba, 0x03, 0x64, 0xc2, 0x6f, 0x26, 0x57, 0xc4, 0xf5, 0xd9, 0xae, 0xab, 0xea, + 0xc5, 0x8d, 0xf4, 0xed, 0xbb, 0xae, 0xd2, 0x67, 0xbb, 0x2e, 0xaf, 0x93, 0x32, 0x0a, 0x04, 0x7f, + 0x68, 0x98, 0x6a, 0xd4, 0xfe, 0x04, 0xea, 0xe9, 0xc6, 0x2b, 0xdd, 0xfc, 0x27, 0x50, 0x4f, 0x37, + 0x58, 0xe9, 0xa2, 0x7f, 0xaf, 0x41, 0x3d, 0xe5, 0x0b, 0x3c, 0x4d, 0xe7, 0x2b, 0xeb, 0xc7, 0x8b, + 0x39, 0x86, 0x28, 0xac, 0xfb, 0x8c, 0x51, 0x6f, 0x98, 0x30, 0x8c, 0xd3, 0xda, 0xba, 0x7f, 0xb1, + 0xb6, 0x2e, 0x2a, 0xcf, 0xd7, 0xd4, 0xd5, 0xce, 0xef, 0xb8, 0x51, 0x8a, 0xfb, 0x90, 0x83, 0x8b, + 0x46, 0x7d, 0xb4, 0x40, 0xdf, 0xb3, 0xef, 0xff, 0xef, 0x6c, 0xfa, 0x93, 0x0e, 0x1b, 0x97, 0xe9, + 0x04, 0xd9, 0x83, 0x72, 0x42, 0x3d, 0x15, 0x16, 0x8b, 0xea, 0xd1, 0x80, 0x51, 0x2f, 0x18, 0x49, + 0x2c, 0x87, 0xf0, 0x62, 0x16, 0x3b, 0x63, 0x9c, 0xa4, 0x31, 0xb0, 0x2c, 0x58, 0xa1, 0x44, 0x31, + 0x44, 0x36, 0x0e, 0x5d, 0x45, 0x3c, 0x96, 0xc6, 0x4b, 0x14, 0x79, 0x04, 0x0d, 0x3b, 0x61, 0xe3, + 0x90, 0x7a, 0x6c, 0xba, 0x04, 0xef, 0xc8, 0xab, 0x98, 0x01, 0x89, 0x39, 0xcb, 0x9c, 0x92, 0x96, + 0xee, 0xad, 0x40, 0xc6, 0xba, 0xf9, 0xec, 0x94, 0xe5, 0x53, 0xce, 0x2a, 0x05, 0x53, 0xe4, 0xec, + 0x64, 0x4d, 0x12, 0x40, 0x32, 0x84, 0xb5, 0x38, 0x4c, 0xa8, 0x83, 0x96, 0x6f, 0x0f, 0xd1, 0xe7, + 0x2c, 0x84, 0xef, 0xf6, 0xd9, 0x2a, 0xbb, 0x0d, 0x84, 0x82, 0x67, 0x02, 0x2f, 0xb7, 0x6c, 0xc5, + 0xb9, 0xa9, 0x0b, 0x5c, 0xbf, 0x7e, 0x91, 0xeb, 0xb7, 0x87, 0xd0, 0x2a, 0x48, 0xa5, 0x0f, 0xf2, + 0x11, 0xb6, 0xbc, 0x2f, 0x73, 0x11, 0xfc, 0x39, 0x6c, 0xce, 0x99, 0xb8, 0x52, 0x28, 0xff, 0x5d, + 0x87, 0xad, 0xab, 0xd8, 0x2a, 0xe9, 0x43, 0xd3, 0x9d, 0x0d, 0x97, 0x78, 0xad, 0xf9, 0xe7, 0x9f, + 0x87, 0xf2, 0xac, 0x75, 0x86, 0xde, 0x68, 0x2c, 0xd9, 0xbd, 0x6e, 0xaa, 0xd1, 0x22, 0xba, 0x52, + 0x2e, 0xa2, 0x2b, 0xbf, 0xd5, 0xae, 0xe7, 0x2b, 0xf2, 0x13, 0xe9, 0xc7, 0x2b, 0xd2, 0xf3, 0x37, + 0x4e, 0x5d, 0xf4, 0x02, 0xea, 0xf2, 0x2b, 0xed, 0x5a, 0xee, 0x52, 0x15, 0x27, 0x78, 0x7a, 0xd3, + 0x13, 0xdc, 0x90, 0xc6, 0xd4, 0x56, 0xa7, 0x31, 0x5f, 0x43, 0x12, 0xc2, 0x60, 0xe3, 0xff, 0xff, + 0x96, 0x3b, 0x7f, 0x2d, 0xc1, 0xe6, 0x5c, 0x21, 0x21, 0xbb, 0xf0, 0x8d, 0x1c, 0xd8, 0x8a, 0x93, + 0x61, 0x80, 0x59, 0xb7, 0x80, 0xe4, 0x96, 0x06, 0x72, 0x25, 0x4b, 0x63, 0xa5, 0x5c, 0x1a, 0x7b, + 0x2f, 0x4b, 0x63, 0x12, 0x2f, 0x72, 0x77, 0x23, 0xcd, 0x43, 0x12, 0x49, 0x9c, 0xcb, 0xb9, 0xae, + 0x52, 0x48, 0x7f, 0xe7, 0xcc, 0x5d, 0x29, 0xd9, 0xe9, 0x97, 0x92, 0xdd, 0x7f, 0x9d, 0x88, 0xfe, + 0x59, 0x02, 0x32, 0xcf, 0x0f, 0xc8, 0x37, 0xa1, 0x11, 0x07, 0x9e, 0x95, 0x6f, 0xb3, 0xd4, 0xe3, + 0xc0, 0xeb, 0x8b, 0x4e, 0xcb, 0x35, 0xfe, 0x2d, 0x15, 0xfa, 0xb7, 0xbc, 0xc8, 0xbf, 0x95, 0x2b, + 0xfc, 0xeb, 0x5e, 0xf6, 0xaf, 0x5e, 0xf8, 0x51, 0x34, 0x7f, 0x98, 0x95, 0x1c, 0x5c, 0x7d, 0xd3, + 0x0e, 0x7e, 0x08, 0xad, 0x7c, 0x33, 0x81, 0x63, 0x53, 0x1a, 0xd2, 0x90, 0xf4, 0xe2, 0x9d, 0x7c, + 0x79, 0x97, 0xf8, 0xd9, 0x44, 0xe7, 0x33, 0x68, 0xe6, 0x1a, 0x09, 0x2b, 0xc3, 0x11, 0x9a, 0xb9, + 0x1a, 0x46, 0xee, 0x80, 0x8e, 0xe7, 0xb6, 0xa3, 0xfa, 0x40, 0xfd, 0x5b, 0xa6, 0x1c, 0x12, 0x03, + 0xaa, 0x11, 0xc5, 0x13, 0xef, 0x5c, 0x6a, 0xe8, 0xdf, 0x32, 0xd5, 0x98, 0x23, 0x28, 0x8e, 0xf0, + 0x5c, 0xbe, 0x7f, 0x8e, 0x10, 0xc3, 0x83, 0x16, 0x80, 0xe0, 0x6b, 0x16, 0x9b, 0x46, 0xd8, 0xf9, + 0x8d, 0xa6, 0xba, 0x3e, 0xc8, 0xfd, 0xd3, 0x86, 0xba, 0xcd, 0x18, 0x4e, 0x22, 0xf1, 0x78, 0x78, + 0xc0, 0x66, 0x63, 0xb2, 0x0f, 0xb7, 0x23, 0xa4, 0x16, 0xa3, 0x53, 0x2b, 0xed, 0x6d, 0x94, 0x8a, + 0x7a, 0x1b, 0x6b, 0x11, 0xd2, 0x63, 0x3a, 0x3d, 0x56, 0x1d, 0x8e, 0xbb, 0xfc, 0xab, 0x84, 0x2b, + 0x08, 0x03, 0x15, 0x95, 0xa2, 0x79, 0x31, 0x7d, 0x11, 0x74, 0xfe, 0x58, 0x02, 0x98, 0xb5, 0x02, + 0xc8, 0xbb, 0xd0, 0xb2, 0x7d, 0x3f, 0x3c, 0xb3, 0x42, 0xea, 0x8d, 0xbc, 0x40, 0xbd, 0xe4, 0xa6, + 0x98, 0x7b, 0x21, 0xa6, 0xf8, 0x3b, 0x94, 0x22, 0x92, 0x6c, 0xa5, 0xcf, 0x58, 0xe2, 0x9e, 0xcb, + 0xb9, 0x99, 0xd0, 0x85, 0x4a, 0xa9, 0x84, 0xd2, 0x9c, 0xfe, 0x3e, 0xac, 0xe3, 0x79, 0x14, 0x5e, + 0x2a, 0x89, 0x0d, 0x73, 0x4d, 0xce, 0xa6, 0x62, 0x3d, 0xa8, 0x4d, 0xec, 0x73, 0xcb, 0x1e, 0xc9, + 0xbe, 0xcf, 0xc2, 0x83, 0x57, 0x27, 0xf6, 0xf9, 0xfe, 0x08, 0xc9, 0x97, 0xb0, 0x29, 0xf7, 0x77, + 0x28, 0xba, 0x18, 0x30, 0xcf, 0xf6, 0x63, 0xd5, 0x12, 0x6a, 0xcf, 0xa1, 0x0f, 0xc2, 0xd0, 0xff, + 0x8a, 0xbf, 0x3f, 0x73, 0x43, 0x80, 0x0e, 0x67, 0x98, 0xce, 0x1f, 0x74, 0x20, 0xf3, 0x5d, 0x1b, + 0xf2, 0x14, 0x74, 0x17, 0x7d, 0x7b, 0xba, 0xcc, 0x47, 0xe3, 0x1c, 0xba, 0xfb, 0x88, 0x43, 0x4d, + 0xa9, 0x81, 0xab, 0xb2, 0x87, 0x69, 0x32, 0x5d, 0x59, 0xd5, 0x3e, 0x87, 0x9a, 0x52, 0x43, 0xfb, + 0xd7, 0x25, 0xd0, 0x85, 0x6e, 0xf2, 0x0e, 0xd4, 0x22, 0xa4, 0x0e, 0x06, 0xf2, 0xe1, 0xea, 0xa2, + 0xb2, 0xa6, 0x53, 0xe4, 0x01, 0x34, 0x4f, 0xbc, 0x73, 0x74, 0x2d, 0x79, 0x86, 0xa2, 0xe7, 0xd4, + 0xbf, 0x65, 0x82, 0x90, 0x97, 0xba, 0xfb, 0xb0, 0xc9, 0x2f, 0x28, 0x90, 0x2e, 0x52, 0x3a, 0xca, + 0xc5, 0x3a, 0x36, 0x72, 0x28, 0xa9, 0xe9, 0x00, 0x40, 0x99, 0x34, 0xbb, 0xdc, 0x45, 0x75, 0xfd, + 0x48, 0x0a, 0x9b, 0x39, 0xd4, 0xc1, 0x26, 0xdc, 0x1e, 0x33, 0x16, 0x49, 0x33, 0x44, 0x6c, 0xb5, + 0x5f, 0x69, 0xa0, 0x0b, 0xbf, 0x14, 0xb8, 0xe1, 0x5d, 0x68, 0x0a, 0x68, 0xcc, 0x6c, 0x96, 0xc4, + 0xb2, 0x52, 0xf2, 0xb3, 0xf2, 0xc9, 0x81, 0x98, 0xe3, 0x22, 0x23, 0x1a, 0x39, 0xa9, 0x48, 0x1a, + 0xd2, 0xc0, 0x27, 0x67, 0x22, 0x1c, 0xd0, 0xb3, 0x50, 0xb4, 0xef, 0x2a, 0xa9, 0x88, 0x98, 0x7c, + 0x2c, 0x9a, 0x73, 0x6f, 0xe2, 0x9c, 0x2d, 0x00, 0xb1, 0x81, 0x4c, 0x1f, 0x4f, 0xa0, 0x95, 0x6f, + 0x25, 0xf3, 0x74, 0x14, 0x24, 0x93, 0x21, 0x52, 0x71, 0xce, 0x35, 0x9e, 0x8e, 0xe4, 0x98, 0x6c, + 0x41, 0x25, 0xb0, 0xd5, 0x97, 0x18, 0xb7, 0x4b, 0x8c, 0x0e, 0xaa, 0xb2, 0xc0, 0x74, 0xbe, 0x05, + 0x35, 0xb5, 0xd9, 0x2c, 0x23, 0x73, 0x0d, 0x9a, 0xca, 0xc8, 0x07, 0xdd, 0xbf, 0xbd, 0xbe, 0xa7, + 0xfd, 0xe3, 0xf5, 0x3d, 0xed, 0xd5, 0xeb, 0x7b, 0xda, 0xcf, 0xb6, 0xa5, 0xcd, 0x5e, 0xb8, 0x6b, + 0x47, 0xde, 0xee, 0x15, 0xff, 0x96, 0x18, 0x56, 0xc5, 0xcd, 0xdf, 0xff, 0x4f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x0d, 0x63, 0x49, 0x86, 0x3a, 0x19, 0x00, 0x00, } diff --git a/networking/v1alpha3/virtual_service.proto b/networking/v1alpha3/virtual_service.proto index a86c295033..c97b67b3e8 100644 --- a/networking/v1alpha3/virtual_service.proto +++ b/networking/v1alpha3/virtual_service.proto @@ -16,6 +16,7 @@ syntax = "proto3"; import "google/protobuf/duration.proto"; import "google/protobuf/wrappers.proto"; +import "networking/v1alpha3/service_dependency.proto"; // $title: Traffic Routing // $description: Configuration affecting traffic routing. @@ -65,7 +66,7 @@ option go_package = "istio.io/api/networking/v1alpha3"; // // The following example on Kubernetes, routes all HTTP traffic by default to // pods of the reviews service with label "version: v1". In addition, -// HTTP requests containing /wpcatalog/, /consumercatalog/ url prefixes will +// HTTP requests with path starting with /wpcatalog/ or /consumercatalog/ will // be rewritten to /newcatalog and sent to pods with label "version: v2". // // @@ -175,6 +176,12 @@ message VirtualService { // be applied to any port that is not a HTTP or TLS port. The first rule // matching an incoming request is used. repeated TCPRoute tcp = 4; + + // The visibility setting associated with this VirtualService. Set to + // PRIVATE if this virtual service should not be exported, i.e. restrict + // the applicability of this virtual service to only workloads in the same + // namespace as the virtual service. + ConfigScope config_scope = 6; } // Destination indicates the network addressable service to which the @@ -385,24 +392,49 @@ message HTTPRoute { // for further details about cross origin resource sharing. CorsPolicy cors_policy = 10; - // Use of `append_headers` is deprecated. Use the `append_request_headers` + // Use of `append_headers` is deprecated. Use the `headers` // field instead. map append_headers = 11 [deprecated=true]; - // HTTP headers to remove before returning a response to the caller. - repeated string remove_response_headers = 12; + // Use of `remove_response_header` is deprecated. Use the `headers` + // field instead. + repeated string remove_response_headers = 12 [deprecated=true]; + + // Use of `append_response_headers` is deprecated. Use the `headers` + // field instead. + map append_response_headers = 13 [deprecated=true]; - // Additional HTTP headers to add before returning a response to the - // caller. - map append_response_headers = 13; + // Use of `remove_request_headers` is deprecated. Use the `headers` + // field instead. + repeated string remove_request_headers = 14 [deprecated=true]; + + // Use of `append_request_headers` is deprecated. Use the `headers` + // field instead. + map append_request_headers = 15 [deprecated=true]; - // HTTP headers to remove before forwarding a request to the - // destination service. - repeated string remove_request_headers = 14; + // Header manipulation rules + Headers headers = 16; +} - // Additional HTTP headers to add before forwarding a request to the - // destination service. - map append_request_headers = 15; +// Header manipulation rules +message Headers { + // Header manipulation rules to apply before forwarding a request + // to the destination service + HeaderOperations request = 1; + // Header manipulation rules to apply before returning a response + // to the caller + HeaderOperations response = 2; + + // HeaderOperations Describes the header manipulations to apply + message HeaderOperations { + // Overwrite the headers specified by key with the given values + map set = 1; + // Apppend the given values to the the headers specified by keys + // (will create a comma seperated list of values) + map add = 2; + // Remove a the specified headers + repeated string remove = 3; + } } // Describes match conditions and actions for routing unterminated TLS @@ -659,20 +691,24 @@ message HTTPRouteDestination { // be 100. int32 weight = 2; - // HTTP headers to remove before returning a response to the caller. - repeated string remove_response_headers = 3; + // Use of `remove_response_header` is deprecated. Use the `headers` + // field instead. + repeated string remove_response_headers = 3 [deprecated=true]; - // Additional HTTP headers to add before returning a response to the - // caller. - map append_response_headers = 4; + // Use of `append_response_headers` is deprecated. Use the `headers` + // field instead. + map append_response_headers = 4 [deprecated=true]; - // HTTP headers to remove before forwarding a request to the - // destination service. - repeated string remove_request_headers = 5; + // Use of `remove_request_headers` is deprecated. Use the `headers` + // field instead. + repeated string remove_request_headers = 5 [deprecated=true]; + + // Use of `append_request_headers` is deprecated. Use the `headers` + // field instead. + map append_request_headers = 6 [deprecated=true]; - // Additional HTTP headers to add before forwarding a request to the - // destination service. - map append_request_headers = 6; + // Header manipulation rules + Headers headers = 7; } // L4 routing rule weighted destination. diff --git a/proto.lock b/proto.lock index 3e8c8b2154..c1288ae658 100644 --- a/proto.lock +++ b/proto.lock @@ -690,6 +690,19 @@ "integer": 2 } ] + }, + { + "name": "DefaultServiceDependency.Mode", + "enum_fields": [ + { + "name": "ALL_NAMESPACES", + "integer": 0 + }, + { + "name": "SAME_NAMESPACE", + "integer": 1 + } + ] } ], "messages": [ @@ -731,6 +744,11 @@ "name": "connect_timeout", "type": "google.protobuf.Duration" }, + { + "id": 28, + "name": "tcp_keepalive", + "type": "istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive" + }, { "id": 7, "name": "ingress_class", @@ -821,6 +839,11 @@ "id": 26, "name": "trust_domain", "type": "string" + }, + { + "id": 29, + "name": "default_service_dependency", + "type": "DefaultServiceDependency" } ], "reserved_ids": [ @@ -837,6 +860,22 @@ "type": "Mode" } ] + }, + { + "name": "DefaultServiceDependency", + "fields": [ + { + "id": 1, + "name": "import_mode", + "type": "Mode" + }, + { + "id": 2, + "name": "import_namespaces", + "type": "string", + "is_repeated": true + } + ] } ] }, @@ -2442,6 +2481,11 @@ "name": "subsets", "type": "Subset", "is_repeated": true + }, + { + "id": 4, + "name": "config_scope", + "type": "ConfigScope" } ] }, @@ -2624,6 +2668,33 @@ "id": 2, "name": "connect_timeout", "type": "google.protobuf.Duration" + }, + { + "id": 3, + "name": "tcp_keepalive", + "type": "TcpKeepalive" + } + ], + "messages": [ + { + "name": "TcpKeepalive", + "fields": [ + { + "id": 1, + "name": "probes", + "type": "uint32" + }, + { + "id": 2, + "name": "time", + "type": "google.protobuf.Duration" + }, + { + "id": 3, + "name": "interval", + "type": "google.protobuf.Duration" + } + ] } ] }, @@ -3078,6 +3149,77 @@ ] } }, + { + "protopath": "networking:/:v1alpha3:/:service_dependency.proto", + "def": { + "enums": [ + { + "name": "ConfigScope", + "enum_fields": [ + { + "name": "PUBLIC", + "integer": 0 + }, + { + "name": "PRIVATE", + "integer": 1 + } + ] + } + ], + "messages": [ + { + "name": "ServiceDependency", + "fields": [ + { + "id": 1, + "name": "dependencies", + "type": "Dependency", + "is_repeated": true + } + ], + "messages": [ + { + "name": "Import", + "fields": [ + { + "id": 1, + "name": "namespace", + "type": "string" + }, + { + "id": 2, + "name": "host", + "type": "string" + } + ] + }, + { + "name": "Dependency", + "fields": [ + { + "id": 2, + "name": "imports", + "type": "Import", + "is_repeated": true + } + ], + "maps": [ + { + "key_type": "string", + "field": { + "id": 1, + "name": "source_workload_labels", + "type": "string" + } + } + ] + } + ] + } + ] + } + }, { "protopath": "networking:/:v1alpha3:/:service_entry.proto", "def": { @@ -3150,6 +3292,11 @@ "name": "endpoints", "type": "Endpoint", "is_repeated": true + }, + { + "id": 7, + "name": "config_scope", + "type": "ConfigScope" } ], "messages": [ @@ -3237,6 +3384,11 @@ "name": "tcp", "type": "TCPRoute", "is_repeated": true + }, + { + "id": 6, + "name": "config_scope", + "type": "ConfigScope" } ] }, @@ -3326,6 +3478,11 @@ "name": "remove_request_headers", "type": "string", "is_repeated": true + }, + { + "id": 16, + "name": "headers", + "type": "Headers" } ], "maps": [ @@ -3355,6 +3512,52 @@ } ] }, + { + "name": "Headers", + "fields": [ + { + "id": 1, + "name": "request", + "type": "HeaderOperations" + }, + { + "id": 2, + "name": "response", + "type": "HeaderOperations" + } + ], + "messages": [ + { + "name": "HeaderOperations", + "fields": [ + { + "id": 3, + "name": "remove", + "type": "string", + "is_repeated": true + } + ], + "maps": [ + { + "key_type": "string", + "field": { + "id": 1, + "name": "set", + "type": "string" + } + }, + { + "key_type": "string", + "field": { + "id": 2, + "name": "add", + "type": "string" + } + } + ] + } + ] + }, { "name": "TLSRoute", "fields": [ @@ -3467,6 +3670,11 @@ "name": "remove_request_headers", "type": "string", "is_repeated": true + }, + { + "id": 7, + "name": "headers", + "type": "Headers" } ], "maps": [ diff --git a/python/istio_api/mesh/v1alpha1/config_pb2.py b/python/istio_api/mesh/v1alpha1/config_pb2.py index 28143969be..5c7f884e8f 100644 --- a/python/istio_api/mesh/v1alpha1/config_pb2.py +++ b/python/istio_api/mesh/v1alpha1/config_pb2.py @@ -22,7 +22,7 @@ name='mesh/v1alpha1/config.proto', package='istio.mesh.v1alpha1', syntax='proto3', - serialized_pb=_b('\n\x1amesh/v1alpha1/config.proto\x12\x13istio.mesh.v1alpha1\x1a\x1egoogle/protobuf/duration.proto\x1a\x19mesh/v1alpha1/proxy.proto\x1a*networking/v1alpha3/destination_rule.proto\"\xfa\n\n\nMeshConfig\x12\x1a\n\x12mixer_check_server\x18\x01 \x01(\t\x12\x1b\n\x13mixer_report_server\x18\x02 \x01(\t\x12\x1d\n\x15\x64isable_policy_checks\x18\x03 \x01(\x08\x12\x1e\n\x16policy_check_fail_open\x18\x19 \x01(\x08\x12\x19\n\x11proxy_listen_port\x18\x04 \x01(\x05\x12\x17\n\x0fproxy_http_port\x18\x05 \x01(\x05\x12\x32\n\x0f\x63onnect_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x15\n\ringress_class\x18\x07 \x01(\t\x12\x17\n\x0fingress_service\x18\x08 \x01(\t\x12V\n\x17ingress_controller_mode\x18\t \x01(\x0e\x32\x35.istio.mesh.v1alpha1.MeshConfig.IngressControllerMode\x12\x43\n\x0b\x61uth_policy\x18\n \x01(\x0e\x32*.istio.mesh.v1alpha1.MeshConfig.AuthPolicyB\x02\x18\x01\x12\x38\n\x11rds_refresh_delay\x18\x0b \x01(\x0b\x32\x19.google.protobuf.DurationB\x02\x18\x01\x12\x16\n\x0e\x65nable_tracing\x18\x0c \x01(\x08\x12\x17\n\x0f\x61\x63\x63\x65ss_log_file\x18\r \x01(\t\x12\x19\n\x11\x61\x63\x63\x65ss_log_format\x18\x18 \x01(\t\x12N\n\x13\x61\x63\x63\x65ss_log_encoding\x18\x1b \x01(\x0e\x32\x31.istio.mesh.v1alpha1.MeshConfig.AccessLogEncoding\x12\x38\n\x0e\x64\x65\x66\x61ult_config\x18\x0e \x01(\x0b\x32 .istio.mesh.v1alpha1.ProxyConfig\x12\x19\n\rmixer_address\x18\x10 \x01(\tB\x02\x18\x01\x12Z\n\x17outbound_traffic_policy\x18\x11 \x01(\x0b\x32\x35.istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicyB\x02\x18\x01\x12\'\n\x1f\x65nable_client_side_policy_check\x18\x13 \x01(\x08\x12\x14\n\x0csds_uds_path\x18\x14 \x01(\t\x12\x38\n\x11sds_refresh_delay\x18\x15 \x01(\x0b\x32\x19.google.protobuf.DurationB\x02\x18\x01\x12\x39\n\x0e\x63onfig_sources\x18\x16 \x03(\x0b\x32!.istio.mesh.v1alpha1.ConfigSource\x12\x1e\n\x16\x65nable_sds_token_mount\x18\x17 \x01(\x08\x12\x14\n\x0ctrust_domain\x18\x1a \x01(\t\x1a\xb5\x01\n\x15OutboundTrafficPolicy\x12L\n\x04mode\x18\x01 \x01(\x0e\x32:.istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy.ModeB\x02\x18\x01\"N\n\x04Mode\x12\x15\n\rREGISTRY_ONLY\x10\x00\x1a\x02\x08\x01\x12\x11\n\tALLOW_ANY\x10\x01\x1a\x02\x08\x01\x12\x1c\n\x14VIRTUAL_SERVICE_ONLY\x10\x02\x1a\x02\x08\x01\"9\n\x15IngressControllerMode\x12\x07\n\x03OFF\x10\x00\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x01\x12\n\n\x06STRICT\x10\x02\"&\n\nAuthPolicy\x12\x08\n\x04NONE\x10\x00\x12\x0e\n\nMUTUAL_TLS\x10\x01\"\'\n\x11\x41\x63\x63\x65ssLogEncoding\x12\x08\n\x04TEXT\x10\x00\x12\x08\n\x04JSON\x10\x01J\x04\x08\x0f\x10\x10J\x04\x08\x12\x10\x13\"]\n\x0c\x43onfigSource\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12<\n\x0ctls_settings\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.TLSSettingsB\x1cZ\x1aistio.io/api/mesh/v1alpha1b\x06proto3') + serialized_pb=_b('\n\x1amesh/v1alpha1/config.proto\x12\x13istio.mesh.v1alpha1\x1a\x1egoogle/protobuf/duration.proto\x1a\x19mesh/v1alpha1/proxy.proto\x1a*networking/v1alpha3/destination_rule.proto\"\xf7\r\n\nMeshConfig\x12\x1a\n\x12mixer_check_server\x18\x01 \x01(\t\x12\x1b\n\x13mixer_report_server\x18\x02 \x01(\t\x12\x1d\n\x15\x64isable_policy_checks\x18\x03 \x01(\x08\x12\x1e\n\x16policy_check_fail_open\x18\x19 \x01(\x08\x12\x19\n\x11proxy_listen_port\x18\x04 \x01(\x05\x12\x17\n\x0fproxy_http_port\x18\x05 \x01(\x05\x12\x32\n\x0f\x63onnect_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x61\n\rtcp_keepalive\x18\x1c \x01(\x0b\x32J.istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive\x12\x15\n\ringress_class\x18\x07 \x01(\t\x12\x17\n\x0fingress_service\x18\x08 \x01(\t\x12V\n\x17ingress_controller_mode\x18\t \x01(\x0e\x32\x35.istio.mesh.v1alpha1.MeshConfig.IngressControllerMode\x12\x43\n\x0b\x61uth_policy\x18\n \x01(\x0e\x32*.istio.mesh.v1alpha1.MeshConfig.AuthPolicyB\x02\x18\x01\x12\x38\n\x11rds_refresh_delay\x18\x0b \x01(\x0b\x32\x19.google.protobuf.DurationB\x02\x18\x01\x12\x16\n\x0e\x65nable_tracing\x18\x0c \x01(\x08\x12\x17\n\x0f\x61\x63\x63\x65ss_log_file\x18\r \x01(\t\x12\x19\n\x11\x61\x63\x63\x65ss_log_format\x18\x18 \x01(\t\x12N\n\x13\x61\x63\x63\x65ss_log_encoding\x18\x1b \x01(\x0e\x32\x31.istio.mesh.v1alpha1.MeshConfig.AccessLogEncoding\x12\x38\n\x0e\x64\x65\x66\x61ult_config\x18\x0e \x01(\x0b\x32 .istio.mesh.v1alpha1.ProxyConfig\x12\x19\n\rmixer_address\x18\x10 \x01(\tB\x02\x18\x01\x12Z\n\x17outbound_traffic_policy\x18\x11 \x01(\x0b\x32\x35.istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicyB\x02\x18\x01\x12\'\n\x1f\x65nable_client_side_policy_check\x18\x13 \x01(\x08\x12\x14\n\x0csds_uds_path\x18\x14 \x01(\t\x12\x38\n\x11sds_refresh_delay\x18\x15 \x01(\x0b\x32\x19.google.protobuf.DurationB\x02\x18\x01\x12\x39\n\x0e\x63onfig_sources\x18\x16 \x03(\x0b\x32!.istio.mesh.v1alpha1.ConfigSource\x12\x1e\n\x16\x65nable_sds_token_mount\x18\x17 \x01(\x08\x12\x14\n\x0ctrust_domain\x18\x1a \x01(\t\x12\\\n\x1a\x64\x65\x66\x61ult_service_dependency\x18\x1d \x01(\x0b\x32\x38.istio.mesh.v1alpha1.MeshConfig.DefaultServiceDependency\x1a\xb5\x01\n\x15OutboundTrafficPolicy\x12L\n\x04mode\x18\x01 \x01(\x0e\x32:.istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy.ModeB\x02\x18\x01\"N\n\x04Mode\x12\x15\n\rREGISTRY_ONLY\x10\x00\x1a\x02\x08\x01\x12\x11\n\tALLOW_ANY\x10\x01\x1a\x02\x08\x01\x12\x1c\n\x14VIRTUAL_SERVICE_ONLY\x10\x02\x1a\x02\x08\x01\x1a\xb9\x01\n\x18\x44\x65\x66\x61ultServiceDependency\x12R\n\x0bimport_mode\x18\x01 \x01(\x0e\x32=.istio.mesh.v1alpha1.MeshConfig.DefaultServiceDependency.Mode\x12\x19\n\x11import_namespaces\x18\x02 \x03(\t\".\n\x04Mode\x12\x12\n\x0e\x41LL_NAMESPACES\x10\x00\x12\x12\n\x0eSAME_NAMESPACE\x10\x01\"9\n\x15IngressControllerMode\x12\x07\n\x03OFF\x10\x00\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x01\x12\n\n\x06STRICT\x10\x02\"&\n\nAuthPolicy\x12\x08\n\x04NONE\x10\x00\x12\x0e\n\nMUTUAL_TLS\x10\x01\"\'\n\x11\x41\x63\x63\x65ssLogEncoding\x12\x08\n\x04TEXT\x10\x00\x12\x08\n\x04JSON\x10\x01J\x04\x08\x0f\x10\x10J\x04\x08\x12\x10\x13\"]\n\x0c\x43onfigSource\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12<\n\x0ctls_settings\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.TLSSettingsB\x1cZ\x1aistio.io/api/mesh/v1alpha1b\x06proto3') , dependencies=[google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,mesh_dot_v1alpha1_dot_proxy__pb2.DESCRIPTOR,networking_dot_v1alpha3_dot_destination__rule__pb2.DESCRIPTOR,]) @@ -49,11 +49,33 @@ ], containing_type=None, options=None, - serialized_start=1327, - serialized_end=1405, + serialized_start=1520, + serialized_end=1598, ) _sym_db.RegisterEnumDescriptor(_MESHCONFIG_OUTBOUNDTRAFFICPOLICY_MODE) +_MESHCONFIG_DEFAULTSERVICEDEPENDENCY_MODE = _descriptor.EnumDescriptor( + name='Mode', + full_name='istio.mesh.v1alpha1.MeshConfig.DefaultServiceDependency.Mode', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='ALL_NAMESPACES', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='SAME_NAMESPACE', index=1, number=1, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1740, + serialized_end=1786, +) +_sym_db.RegisterEnumDescriptor(_MESHCONFIG_DEFAULTSERVICEDEPENDENCY_MODE) + _MESHCONFIG_INGRESSCONTROLLERMODE = _descriptor.EnumDescriptor( name='IngressControllerMode', full_name='istio.mesh.v1alpha1.MeshConfig.IngressControllerMode', @@ -75,8 +97,8 @@ ], containing_type=None, options=None, - serialized_start=1407, - serialized_end=1464, + serialized_start=1788, + serialized_end=1845, ) _sym_db.RegisterEnumDescriptor(_MESHCONFIG_INGRESSCONTROLLERMODE) @@ -97,8 +119,8 @@ ], containing_type=None, options=None, - serialized_start=1466, - serialized_end=1504, + serialized_start=1847, + serialized_end=1885, ) _sym_db.RegisterEnumDescriptor(_MESHCONFIG_AUTHPOLICY) @@ -119,8 +141,8 @@ ], containing_type=None, options=None, - serialized_start=1506, - serialized_end=1545, + serialized_start=1887, + serialized_end=1926, ) _sym_db.RegisterEnumDescriptor(_MESHCONFIG_ACCESSLOGENCODING) @@ -152,8 +174,46 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1224, - serialized_end=1405, + serialized_start=1417, + serialized_end=1598, +) + +_MESHCONFIG_DEFAULTSERVICEDEPENDENCY = _descriptor.Descriptor( + name='DefaultServiceDependency', + full_name='istio.mesh.v1alpha1.MeshConfig.DefaultServiceDependency', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='import_mode', full_name='istio.mesh.v1alpha1.MeshConfig.DefaultServiceDependency.import_mode', index=0, + number=1, type=14, cpp_type=8, label=1, + 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), + _descriptor.FieldDescriptor( + name='import_namespaces', full_name='istio.mesh.v1alpha1.MeshConfig.DefaultServiceDependency.import_namespaces', index=1, + number=2, 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), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _MESHCONFIG_DEFAULTSERVICEDEPENDENCY_MODE, + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1601, + serialized_end=1786, ) _MESHCONFIG = _descriptor.Descriptor( @@ -213,135 +273,149 @@ is_extension=False, extension_scope=None, options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='ingress_class', full_name='istio.mesh.v1alpha1.MeshConfig.ingress_class', index=7, + name='tcp_keepalive', full_name='istio.mesh.v1alpha1.MeshConfig.tcp_keepalive', index=7, + number=28, 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='ingress_class', full_name='istio.mesh.v1alpha1.MeshConfig.ingress_class', index=8, number=7, 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='ingress_service', full_name='istio.mesh.v1alpha1.MeshConfig.ingress_service', index=8, + name='ingress_service', full_name='istio.mesh.v1alpha1.MeshConfig.ingress_service', index=9, number=8, 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='ingress_controller_mode', full_name='istio.mesh.v1alpha1.MeshConfig.ingress_controller_mode', index=9, + name='ingress_controller_mode', full_name='istio.mesh.v1alpha1.MeshConfig.ingress_controller_mode', index=10, number=9, type=14, cpp_type=8, label=1, 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), _descriptor.FieldDescriptor( - name='auth_policy', full_name='istio.mesh.v1alpha1.MeshConfig.auth_policy', index=10, + name='auth_policy', full_name='istio.mesh.v1alpha1.MeshConfig.auth_policy', index=11, number=10, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')), file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='rds_refresh_delay', full_name='istio.mesh.v1alpha1.MeshConfig.rds_refresh_delay', index=11, + name='rds_refresh_delay', full_name='istio.mesh.v1alpha1.MeshConfig.rds_refresh_delay', index=12, number=11, 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=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')), file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='enable_tracing', full_name='istio.mesh.v1alpha1.MeshConfig.enable_tracing', index=12, + name='enable_tracing', full_name='istio.mesh.v1alpha1.MeshConfig.enable_tracing', index=13, number=12, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='access_log_file', full_name='istio.mesh.v1alpha1.MeshConfig.access_log_file', index=13, + name='access_log_file', full_name='istio.mesh.v1alpha1.MeshConfig.access_log_file', index=14, number=13, 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='access_log_format', full_name='istio.mesh.v1alpha1.MeshConfig.access_log_format', index=14, + name='access_log_format', full_name='istio.mesh.v1alpha1.MeshConfig.access_log_format', index=15, number=24, 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='access_log_encoding', full_name='istio.mesh.v1alpha1.MeshConfig.access_log_encoding', index=15, + name='access_log_encoding', full_name='istio.mesh.v1alpha1.MeshConfig.access_log_encoding', index=16, number=27, type=14, cpp_type=8, label=1, 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), _descriptor.FieldDescriptor( - name='default_config', full_name='istio.mesh.v1alpha1.MeshConfig.default_config', index=16, + name='default_config', full_name='istio.mesh.v1alpha1.MeshConfig.default_config', index=17, number=14, 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='mixer_address', full_name='istio.mesh.v1alpha1.MeshConfig.mixer_address', index=17, + name='mixer_address', full_name='istio.mesh.v1alpha1.MeshConfig.mixer_address', index=18, number=16, 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=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')), file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='outbound_traffic_policy', full_name='istio.mesh.v1alpha1.MeshConfig.outbound_traffic_policy', index=18, + name='outbound_traffic_policy', full_name='istio.mesh.v1alpha1.MeshConfig.outbound_traffic_policy', index=19, number=17, 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=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')), file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='enable_client_side_policy_check', full_name='istio.mesh.v1alpha1.MeshConfig.enable_client_side_policy_check', index=19, + name='enable_client_side_policy_check', full_name='istio.mesh.v1alpha1.MeshConfig.enable_client_side_policy_check', index=20, number=19, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='sds_uds_path', full_name='istio.mesh.v1alpha1.MeshConfig.sds_uds_path', index=20, + name='sds_uds_path', full_name='istio.mesh.v1alpha1.MeshConfig.sds_uds_path', index=21, number=20, 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='sds_refresh_delay', full_name='istio.mesh.v1alpha1.MeshConfig.sds_refresh_delay', index=21, + name='sds_refresh_delay', full_name='istio.mesh.v1alpha1.MeshConfig.sds_refresh_delay', index=22, number=21, 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=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')), file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='config_sources', full_name='istio.mesh.v1alpha1.MeshConfig.config_sources', index=22, + name='config_sources', full_name='istio.mesh.v1alpha1.MeshConfig.config_sources', index=23, number=22, 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='enable_sds_token_mount', full_name='istio.mesh.v1alpha1.MeshConfig.enable_sds_token_mount', index=23, + name='enable_sds_token_mount', full_name='istio.mesh.v1alpha1.MeshConfig.enable_sds_token_mount', index=24, number=23, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='trust_domain', full_name='istio.mesh.v1alpha1.MeshConfig.trust_domain', index=24, + name='trust_domain', full_name='istio.mesh.v1alpha1.MeshConfig.trust_domain', index=25, number=26, 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='default_service_dependency', full_name='istio.mesh.v1alpha1.MeshConfig.default_service_dependency', index=26, + number=29, 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=[_MESHCONFIG_OUTBOUNDTRAFFICPOLICY, ], + nested_types=[_MESHCONFIG_OUTBOUNDTRAFFICPOLICY, _MESHCONFIG_DEFAULTSERVICEDEPENDENCY, ], enum_types=[ _MESHCONFIG_INGRESSCONTROLLERMODE, _MESHCONFIG_AUTHPOLICY, @@ -354,7 +428,7 @@ oneofs=[ ], serialized_start=155, - serialized_end=1557, + serialized_end=1938, ) @@ -391,14 +465,18 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1559, - serialized_end=1652, + serialized_start=1940, + serialized_end=2033, ) _MESHCONFIG_OUTBOUNDTRAFFICPOLICY.fields_by_name['mode'].enum_type = _MESHCONFIG_OUTBOUNDTRAFFICPOLICY_MODE _MESHCONFIG_OUTBOUNDTRAFFICPOLICY.containing_type = _MESHCONFIG _MESHCONFIG_OUTBOUNDTRAFFICPOLICY_MODE.containing_type = _MESHCONFIG_OUTBOUNDTRAFFICPOLICY +_MESHCONFIG_DEFAULTSERVICEDEPENDENCY.fields_by_name['import_mode'].enum_type = _MESHCONFIG_DEFAULTSERVICEDEPENDENCY_MODE +_MESHCONFIG_DEFAULTSERVICEDEPENDENCY.containing_type = _MESHCONFIG +_MESHCONFIG_DEFAULTSERVICEDEPENDENCY_MODE.containing_type = _MESHCONFIG_DEFAULTSERVICEDEPENDENCY _MESHCONFIG.fields_by_name['connect_timeout'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION +_MESHCONFIG.fields_by_name['tcp_keepalive'].message_type = networking_dot_v1alpha3_dot_destination__rule__pb2._CONNECTIONPOOLSETTINGS_TCPSETTINGS_TCPKEEPALIVE _MESHCONFIG.fields_by_name['ingress_controller_mode'].enum_type = _MESHCONFIG_INGRESSCONTROLLERMODE _MESHCONFIG.fields_by_name['auth_policy'].enum_type = _MESHCONFIG_AUTHPOLICY _MESHCONFIG.fields_by_name['rds_refresh_delay'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION @@ -407,6 +485,7 @@ _MESHCONFIG.fields_by_name['outbound_traffic_policy'].message_type = _MESHCONFIG_OUTBOUNDTRAFFICPOLICY _MESHCONFIG.fields_by_name['sds_refresh_delay'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION _MESHCONFIG.fields_by_name['config_sources'].message_type = _CONFIGSOURCE +_MESHCONFIG.fields_by_name['default_service_dependency'].message_type = _MESHCONFIG_DEFAULTSERVICEDEPENDENCY _MESHCONFIG_INGRESSCONTROLLERMODE.containing_type = _MESHCONFIG _MESHCONFIG_AUTHPOLICY.containing_type = _MESHCONFIG _MESHCONFIG_ACCESSLOGENCODING.containing_type = _MESHCONFIG @@ -423,12 +502,20 @@ # @@protoc_insertion_point(class_scope:istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy) )) , + + DefaultServiceDependency = _reflection.GeneratedProtocolMessageType('DefaultServiceDependency', (_message.Message,), dict( + DESCRIPTOR = _MESHCONFIG_DEFAULTSERVICEDEPENDENCY, + __module__ = 'mesh.v1alpha1.config_pb2' + # @@protoc_insertion_point(class_scope:istio.mesh.v1alpha1.MeshConfig.DefaultServiceDependency) + )) + , DESCRIPTOR = _MESHCONFIG, __module__ = 'mesh.v1alpha1.config_pb2' # @@protoc_insertion_point(class_scope:istio.mesh.v1alpha1.MeshConfig) )) _sym_db.RegisterMessage(MeshConfig) _sym_db.RegisterMessage(MeshConfig.OutboundTrafficPolicy) +_sym_db.RegisterMessage(MeshConfig.DefaultServiceDependency) ConfigSource = _reflection.GeneratedProtocolMessageType('ConfigSource', (_message.Message,), dict( DESCRIPTOR = _CONFIGSOURCE, diff --git a/python/istio_api/networking/v1alpha3/destination_rule_pb2.py b/python/istio_api/networking/v1alpha3/destination_rule_pb2.py index 36effb9013..a3bc60696a 100644 --- a/python/istio_api/networking/v1alpha3/destination_rule_pb2.py +++ b/python/istio_api/networking/v1alpha3/destination_rule_pb2.py @@ -15,6 +15,7 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from networking.v1alpha3 import virtual_service_pb2 as networking_dot_v1alpha3_dot_virtual__service__pb2 +from networking.v1alpha3 import service_dependency_pb2 as networking_dot_v1alpha3_dot_service__dependency__pb2 from gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 @@ -22,9 +23,9 @@ name='networking/v1alpha3/destination_rule.proto', package='istio.networking.v1alpha3', syntax='proto3', - serialized_pb=_b('\n*networking/v1alpha3/destination_rule.proto\x12\x19istio.networking.v1alpha3\x1a\x1egoogle/protobuf/duration.proto\x1a)networking/v1alpha3/virtual_service.proto\x1a\x14gogoproto/gogo.proto\"\x95\x01\n\x0f\x44\x65stinationRule\x12\x0c\n\x04host\x18\x01 \x01(\t\x12@\n\x0etraffic_policy\x18\x02 \x01(\x0b\x32(.istio.networking.v1alpha3.TrafficPolicy\x12\x32\n\x07subsets\x18\x03 \x03(\x0b\x32!.istio.networking.v1alpha3.Subset\"\xd7\x05\n\rTrafficPolicy\x12\x46\n\rload_balancer\x18\x01 \x01(\x0b\x32/.istio.networking.v1alpha3.LoadBalancerSettings\x12J\n\x0f\x63onnection_pool\x18\x02 \x01(\x0b\x32\x31.istio.networking.v1alpha3.ConnectionPoolSettings\x12\x46\n\x11outlier_detection\x18\x03 \x01(\x0b\x32+.istio.networking.v1alpha3.OutlierDetection\x12\x33\n\x03tls\x18\x04 \x01(\x0b\x32&.istio.networking.v1alpha3.TLSSettings\x12W\n\x13port_level_settings\x18\x05 \x03(\x0b\x32:.istio.networking.v1alpha3.TrafficPolicy.PortTrafficPolicy\x1a\xdb\x02\n\x11PortTrafficPolicy\x12\x35\n\x04port\x18\x01 \x01(\x0b\x32\'.istio.networking.v1alpha3.PortSelector\x12\x46\n\rload_balancer\x18\x02 \x01(\x0b\x32/.istio.networking.v1alpha3.LoadBalancerSettings\x12J\n\x0f\x63onnection_pool\x18\x03 \x01(\x0b\x32\x31.istio.networking.v1alpha3.ConnectionPoolSettings\x12\x46\n\x11outlier_detection\x18\x04 \x01(\x0b\x32+.istio.networking.v1alpha3.OutlierDetection\x12\x33\n\x03tls\x18\x05 \x01(\x0b\x32&.istio.networking.v1alpha3.TLSSettings\"\xc6\x01\n\x06Subset\x12\x0c\n\x04name\x18\x01 \x01(\t\x12=\n\x06labels\x18\x02 \x03(\x0b\x32-.istio.networking.v1alpha3.Subset.LabelsEntry\x12@\n\x0etraffic_policy\x18\x03 \x01(\x0b\x32(.istio.networking.v1alpha3.TrafficPolicy\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xc3\x04\n\x14LoadBalancerSettings\x12J\n\x06simple\x18\x01 \x01(\x0e\x32\x38.istio.networking.v1alpha3.LoadBalancerSettings.SimpleLBH\x00\x12[\n\x0f\x63onsistent_hash\x18\x02 \x01(\x0b\x32@.istio.networking.v1alpha3.LoadBalancerSettings.ConsistentHashLBH\x00\x1a\xaa\x02\n\x10\x43onsistentHashLB\x12\x1a\n\x10http_header_name\x18\x01 \x01(\tH\x00\x12\x62\n\x0bhttp_cookie\x18\x02 \x01(\x0b\x32K.istio.networking.v1alpha3.LoadBalancerSettings.ConsistentHashLB.HTTPCookieH\x00\x12\x17\n\ruse_source_ip\x18\x03 \x01(\x08H\x00\x12\x19\n\x11minimum_ring_size\x18\x04 \x01(\x04\x1aV\n\nHTTPCookie\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12,\n\x03ttl\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x04\x98\xdf\x1f\x01\x42\n\n\x08hash_key\"H\n\x08SimpleLB\x12\x0f\n\x0bROUND_ROBIN\x10\x00\x12\x0e\n\nLEAST_CONN\x10\x01\x12\n\n\x06RANDOM\x10\x02\x12\x0f\n\x0bPASSTHROUGH\x10\x03\x42\x0b\n\tlb_policy\"\x99\x03\n\x16\x43onnectionPoolSettings\x12J\n\x03tcp\x18\x01 \x01(\x0b\x32=.istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings\x12L\n\x04http\x18\x02 \x01(\x0b\x32>.istio.networking.v1alpha3.ConnectionPoolSettings.HTTPSettings\x1aZ\n\x0bTCPSettings\x12\x17\n\x0fmax_connections\x18\x01 \x01(\x05\x12\x32\n\x0f\x63onnect_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x88\x01\n\x0cHTTPSettings\x12\"\n\x1ahttp1_max_pending_requests\x18\x01 \x01(\x05\x12\x1a\n\x12http2_max_requests\x18\x02 \x01(\x05\x12#\n\x1bmax_requests_per_connection\x18\x03 \x01(\x05\x12\x13\n\x0bmax_retries\x18\x04 \x01(\x05\"\xcc\x01\n\x10OutlierDetection\x12\x1a\n\x12\x63onsecutive_errors\x18\x01 \x01(\x05\x12+\n\x08interval\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x35\n\x12\x62\x61se_ejection_time\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1c\n\x14max_ejection_percent\x18\x04 \x01(\x05\x12\x1a\n\x12min_health_percent\x18\x05 \x01(\x05\"\xff\x01\n\x0bTLSSettings\x12<\n\x04mode\x18\x01 \x01(\x0e\x32..istio.networking.v1alpha3.TLSSettings.TLSmode\x12\x1a\n\x12\x63lient_certificate\x18\x02 \x01(\t\x12\x13\n\x0bprivate_key\x18\x03 \x01(\t\x12\x17\n\x0f\x63\x61_certificates\x18\x04 \x01(\t\x12\x19\n\x11subject_alt_names\x18\x05 \x03(\t\x12\x0b\n\x03sni\x18\x06 \x01(\t\"@\n\x07TLSmode\x12\x0b\n\x07\x44ISABLE\x10\x00\x12\n\n\x06SIMPLE\x10\x01\x12\n\n\x06MUTUAL\x10\x02\x12\x10\n\x0cISTIO_MUTUAL\x10\x03\x42\"Z istio.io/api/networking/v1alpha3b\x06proto3') + serialized_pb=_b('\n*networking/v1alpha3/destination_rule.proto\x12\x19istio.networking.v1alpha3\x1a\x1egoogle/protobuf/duration.proto\x1a)networking/v1alpha3/virtual_service.proto\x1a,networking/v1alpha3/service_dependency.proto\x1a\x14gogoproto/gogo.proto\"\xd3\x01\n\x0f\x44\x65stinationRule\x12\x0c\n\x04host\x18\x01 \x01(\t\x12@\n\x0etraffic_policy\x18\x02 \x01(\x0b\x32(.istio.networking.v1alpha3.TrafficPolicy\x12\x32\n\x07subsets\x18\x03 \x03(\x0b\x32!.istio.networking.v1alpha3.Subset\x12<\n\x0c\x63onfig_scope\x18\x04 \x01(\x0e\x32&.istio.networking.v1alpha3.ConfigScope\"\xd7\x05\n\rTrafficPolicy\x12\x46\n\rload_balancer\x18\x01 \x01(\x0b\x32/.istio.networking.v1alpha3.LoadBalancerSettings\x12J\n\x0f\x63onnection_pool\x18\x02 \x01(\x0b\x32\x31.istio.networking.v1alpha3.ConnectionPoolSettings\x12\x46\n\x11outlier_detection\x18\x03 \x01(\x0b\x32+.istio.networking.v1alpha3.OutlierDetection\x12\x33\n\x03tls\x18\x04 \x01(\x0b\x32&.istio.networking.v1alpha3.TLSSettings\x12W\n\x13port_level_settings\x18\x05 \x03(\x0b\x32:.istio.networking.v1alpha3.TrafficPolicy.PortTrafficPolicy\x1a\xdb\x02\n\x11PortTrafficPolicy\x12\x35\n\x04port\x18\x01 \x01(\x0b\x32\'.istio.networking.v1alpha3.PortSelector\x12\x46\n\rload_balancer\x18\x02 \x01(\x0b\x32/.istio.networking.v1alpha3.LoadBalancerSettings\x12J\n\x0f\x63onnection_pool\x18\x03 \x01(\x0b\x32\x31.istio.networking.v1alpha3.ConnectionPoolSettings\x12\x46\n\x11outlier_detection\x18\x04 \x01(\x0b\x32+.istio.networking.v1alpha3.OutlierDetection\x12\x33\n\x03tls\x18\x05 \x01(\x0b\x32&.istio.networking.v1alpha3.TLSSettings\"\xc6\x01\n\x06Subset\x12\x0c\n\x04name\x18\x01 \x01(\t\x12=\n\x06labels\x18\x02 \x03(\x0b\x32-.istio.networking.v1alpha3.Subset.LabelsEntry\x12@\n\x0etraffic_policy\x18\x03 \x01(\x0b\x32(.istio.networking.v1alpha3.TrafficPolicy\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xc3\x04\n\x14LoadBalancerSettings\x12J\n\x06simple\x18\x01 \x01(\x0e\x32\x38.istio.networking.v1alpha3.LoadBalancerSettings.SimpleLBH\x00\x12[\n\x0f\x63onsistent_hash\x18\x02 \x01(\x0b\x32@.istio.networking.v1alpha3.LoadBalancerSettings.ConsistentHashLBH\x00\x1a\xaa\x02\n\x10\x43onsistentHashLB\x12\x1a\n\x10http_header_name\x18\x01 \x01(\tH\x00\x12\x62\n\x0bhttp_cookie\x18\x02 \x01(\x0b\x32K.istio.networking.v1alpha3.LoadBalancerSettings.ConsistentHashLB.HTTPCookieH\x00\x12\x17\n\ruse_source_ip\x18\x03 \x01(\x08H\x00\x12\x19\n\x11minimum_ring_size\x18\x04 \x01(\x04\x1aV\n\nHTTPCookie\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12,\n\x03ttl\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x04\x98\xdf\x1f\x01\x42\n\n\x08hash_key\"H\n\x08SimpleLB\x12\x0f\n\x0bROUND_ROBIN\x10\x00\x12\x0e\n\nLEAST_CONN\x10\x01\x12\n\n\x06RANDOM\x10\x02\x12\x0f\n\x0bPASSTHROUGH\x10\x03\x42\x0b\n\tlb_policy\"\xf3\x04\n\x16\x43onnectionPoolSettings\x12J\n\x03tcp\x18\x01 \x01(\x0b\x32=.istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings\x12L\n\x04http\x18\x02 \x01(\x0b\x32>.istio.networking.v1alpha3.ConnectionPoolSettings.HTTPSettings\x1a\xb3\x02\n\x0bTCPSettings\x12\x17\n\x0fmax_connections\x18\x01 \x01(\x05\x12\x32\n\x0f\x63onnect_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x61\n\rtcp_keepalive\x18\x03 \x01(\x0b\x32J.istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive\x1at\n\x0cTcpKeepalive\x12\x0e\n\x06probes\x18\x01 \x01(\r\x12\'\n\x04time\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12+\n\x08interval\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x88\x01\n\x0cHTTPSettings\x12\"\n\x1ahttp1_max_pending_requests\x18\x01 \x01(\x05\x12\x1a\n\x12http2_max_requests\x18\x02 \x01(\x05\x12#\n\x1bmax_requests_per_connection\x18\x03 \x01(\x05\x12\x13\n\x0bmax_retries\x18\x04 \x01(\x05\"\xcc\x01\n\x10OutlierDetection\x12\x1a\n\x12\x63onsecutive_errors\x18\x01 \x01(\x05\x12+\n\x08interval\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x35\n\x12\x62\x61se_ejection_time\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1c\n\x14max_ejection_percent\x18\x04 \x01(\x05\x12\x1a\n\x12min_health_percent\x18\x05 \x01(\x05\"\xff\x01\n\x0bTLSSettings\x12<\n\x04mode\x18\x01 \x01(\x0e\x32..istio.networking.v1alpha3.TLSSettings.TLSmode\x12\x1a\n\x12\x63lient_certificate\x18\x02 \x01(\t\x12\x13\n\x0bprivate_key\x18\x03 \x01(\t\x12\x17\n\x0f\x63\x61_certificates\x18\x04 \x01(\t\x12\x19\n\x11subject_alt_names\x18\x05 \x03(\t\x12\x0b\n\x03sni\x18\x06 \x01(\t\"@\n\x07TLSmode\x12\x0b\n\x07\x44ISABLE\x10\x00\x12\n\n\x06SIMPLE\x10\x01\x12\n\n\x06MUTUAL\x10\x02\x12\x10\n\x0cISTIO_MUTUAL\x10\x03\x42\"Z istio.io/api/networking/v1alpha3b\x06proto3') , - dependencies=[google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,networking_dot_v1alpha3_dot_virtual__service__pb2.DESCRIPTOR,gogoproto_dot_gogo__pb2.DESCRIPTOR,]) + dependencies=[google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,networking_dot_v1alpha3_dot_virtual__service__pb2.DESCRIPTOR,networking_dot_v1alpha3_dot_service__dependency__pb2.DESCRIPTOR,gogoproto_dot_gogo__pb2.DESCRIPTOR,]) @@ -53,8 +54,8 @@ ], containing_type=None, options=None, - serialized_start=1748, - serialized_end=1820, + serialized_start=1856, + serialized_end=1928, ) _sym_db.RegisterEnumDescriptor(_LOADBALANCERSETTINGS_SIMPLELB) @@ -83,8 +84,8 @@ ], containing_type=None, options=None, - serialized_start=2646, - serialized_end=2710, + serialized_start=2972, + serialized_end=3036, ) _sym_db.RegisterEnumDescriptor(_TLSSETTINGS_TLSMODE) @@ -117,6 +118,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='config_scope', full_name='istio.networking.v1alpha3.DestinationRule.config_scope', index=3, + number=4, type=14, cpp_type=8, label=1, + 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), ], extensions=[ ], @@ -129,8 +137,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=171, - serialized_end=320, + serialized_start=217, + serialized_end=428, ) @@ -188,8 +196,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=703, - serialized_end=1050, + serialized_start=811, + serialized_end=1158, ) _TRAFFICPOLICY = _descriptor.Descriptor( @@ -246,8 +254,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=323, - serialized_end=1050, + serialized_start=431, + serialized_end=1158, ) @@ -284,8 +292,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1206, - serialized_end=1251, + serialized_start=1314, + serialized_end=1359, ) _SUBSET = _descriptor.Descriptor( @@ -328,8 +336,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1053, - serialized_end=1251, + serialized_start=1161, + serialized_end=1359, ) @@ -373,8 +381,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1648, - serialized_end=1734, + serialized_start=1756, + serialized_end=1842, ) _LOADBALANCERSETTINGS_CONSISTENTHASHLB = _descriptor.Descriptor( @@ -427,8 +435,8 @@ name='hash_key', full_name='istio.networking.v1alpha3.LoadBalancerSettings.ConsistentHashLB.hash_key', index=0, containing_type=None, fields=[]), ], - serialized_start=1448, - serialized_end=1746, + serialized_start=1556, + serialized_end=1854, ) _LOADBALANCERSETTINGS = _descriptor.Descriptor( @@ -468,11 +476,55 @@ name='lb_policy', full_name='istio.networking.v1alpha3.LoadBalancerSettings.lb_policy', index=0, containing_type=None, fields=[]), ], - serialized_start=1254, - serialized_end=1833, + serialized_start=1362, + serialized_end=1941, ) +_CONNECTIONPOOLSETTINGS_TCPSETTINGS_TCPKEEPALIVE = _descriptor.Descriptor( + name='TcpKeepalive', + full_name='istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='probes', full_name='istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive.probes', index=0, + number=1, type=13, cpp_type=3, label=1, + 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), + _descriptor.FieldDescriptor( + name='time', full_name='istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive.time', index=1, + number=2, 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='interval', full_name='istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive.interval', index=2, + number=3, 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=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2316, + serialized_end=2432, +) + _CONNECTIONPOOLSETTINGS_TCPSETTINGS = _descriptor.Descriptor( name='TCPSettings', full_name='istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings', @@ -494,10 +546,17 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='tcp_keepalive', full_name='istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.tcp_keepalive', index=2, + number=3, 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=[], + nested_types=[_CONNECTIONPOOLSETTINGS_TCPSETTINGS_TCPKEEPALIVE, ], enum_types=[ ], options=None, @@ -506,8 +565,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2016, - serialized_end=2106, + serialized_start=2125, + serialized_end=2432, ) _CONNECTIONPOOLSETTINGS_HTTPSETTINGS = _descriptor.Descriptor( @@ -557,8 +616,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2109, - serialized_end=2245, + serialized_start=2435, + serialized_end=2571, ) _CONNECTIONPOOLSETTINGS = _descriptor.Descriptor( @@ -594,8 +653,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1836, - serialized_end=2245, + serialized_start=1944, + serialized_end=2571, ) @@ -653,8 +712,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2248, - serialized_end=2452, + serialized_start=2574, + serialized_end=2778, ) @@ -720,12 +779,13 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2455, - serialized_end=2710, + serialized_start=2781, + serialized_end=3036, ) _DESTINATIONRULE.fields_by_name['traffic_policy'].message_type = _TRAFFICPOLICY _DESTINATIONRULE.fields_by_name['subsets'].message_type = _SUBSET +_DESTINATIONRULE.fields_by_name['config_scope'].enum_type = networking_dot_v1alpha3_dot_service__dependency__pb2._CONFIGSCOPE _TRAFFICPOLICY_PORTTRAFFICPOLICY.fields_by_name['port'].message_type = networking_dot_v1alpha3_dot_virtual__service__pb2._PORTSELECTOR _TRAFFICPOLICY_PORTTRAFFICPOLICY.fields_by_name['load_balancer'].message_type = _LOADBALANCERSETTINGS _TRAFFICPOLICY_PORTTRAFFICPOLICY.fields_by_name['connection_pool'].message_type = _CONNECTIONPOOLSETTINGS @@ -762,7 +822,11 @@ _LOADBALANCERSETTINGS.oneofs_by_name['lb_policy'].fields.append( _LOADBALANCERSETTINGS.fields_by_name['consistent_hash']) _LOADBALANCERSETTINGS.fields_by_name['consistent_hash'].containing_oneof = _LOADBALANCERSETTINGS.oneofs_by_name['lb_policy'] +_CONNECTIONPOOLSETTINGS_TCPSETTINGS_TCPKEEPALIVE.fields_by_name['time'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION +_CONNECTIONPOOLSETTINGS_TCPSETTINGS_TCPKEEPALIVE.fields_by_name['interval'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION +_CONNECTIONPOOLSETTINGS_TCPSETTINGS_TCPKEEPALIVE.containing_type = _CONNECTIONPOOLSETTINGS_TCPSETTINGS _CONNECTIONPOOLSETTINGS_TCPSETTINGS.fields_by_name['connect_timeout'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION +_CONNECTIONPOOLSETTINGS_TCPSETTINGS.fields_by_name['tcp_keepalive'].message_type = _CONNECTIONPOOLSETTINGS_TCPSETTINGS_TCPKEEPALIVE _CONNECTIONPOOLSETTINGS_TCPSETTINGS.containing_type = _CONNECTIONPOOLSETTINGS _CONNECTIONPOOLSETTINGS_HTTPSETTINGS.containing_type = _CONNECTIONPOOLSETTINGS _CONNECTIONPOOLSETTINGS.fields_by_name['tcp'].message_type = _CONNECTIONPOOLSETTINGS_TCPSETTINGS @@ -843,6 +907,13 @@ ConnectionPoolSettings = _reflection.GeneratedProtocolMessageType('ConnectionPoolSettings', (_message.Message,), dict( TCPSettings = _reflection.GeneratedProtocolMessageType('TCPSettings', (_message.Message,), dict( + + TcpKeepalive = _reflection.GeneratedProtocolMessageType('TcpKeepalive', (_message.Message,), dict( + DESCRIPTOR = _CONNECTIONPOOLSETTINGS_TCPSETTINGS_TCPKEEPALIVE, + __module__ = 'networking.v1alpha3.destination_rule_pb2' + # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive) + )) + , DESCRIPTOR = _CONNECTIONPOOLSETTINGS_TCPSETTINGS, __module__ = 'networking.v1alpha3.destination_rule_pb2' # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings) @@ -861,6 +932,7 @@ )) _sym_db.RegisterMessage(ConnectionPoolSettings) _sym_db.RegisterMessage(ConnectionPoolSettings.TCPSettings) +_sym_db.RegisterMessage(ConnectionPoolSettings.TCPSettings.TcpKeepalive) _sym_db.RegisterMessage(ConnectionPoolSettings.HTTPSettings) OutlierDetection = _reflection.GeneratedProtocolMessageType('OutlierDetection', (_message.Message,), dict( diff --git a/python/istio_api/networking/v1alpha3/service_dependency_pb2.py b/python/istio_api/networking/v1alpha3/service_dependency_pb2.py new file mode 100644 index 0000000000..995a079b31 --- /dev/null +++ b/python/istio_api/networking/v1alpha3/service_dependency_pb2.py @@ -0,0 +1,241 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: networking/v1alpha3/service_dependency.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='networking/v1alpha3/service_dependency.proto', + package='istio.networking.v1alpha3', + syntax='proto3', + serialized_pb=_b('\n,networking/v1alpha3/service_dependency.proto\x12\x19istio.networking.v1alpha3\"\x92\x03\n\x11ServiceDependency\x12M\n\x0c\x64\x65pendencies\x18\x01 \x03(\x0b\x32\x37.istio.networking.v1alpha3.ServiceDependency.Dependency\x1a)\n\x06Import\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x0c\n\x04host\x18\x02 \x01(\t\x1a\x82\x02\n\nDependency\x12q\n\x16source_workload_labels\x18\x01 \x03(\x0b\x32Q.istio.networking.v1alpha3.ServiceDependency.Dependency.SourceWorkloadLabelsEntry\x12\x44\n\x07imports\x18\x02 \x03(\x0b\x32\x33.istio.networking.v1alpha3.ServiceDependency.Import\x1a;\n\x19SourceWorkloadLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01*&\n\x0b\x43onfigScope\x12\n\n\x06PUBLIC\x10\x00\x12\x0b\n\x07PRIVATE\x10\x01\x42\"Z istio.io/api/networking/v1alpha3b\x06proto3') +) + +_CONFIGSCOPE = _descriptor.EnumDescriptor( + name='ConfigScope', + full_name='istio.networking.v1alpha3.ConfigScope', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='PUBLIC', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PRIVATE', index=1, number=1, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=480, + serialized_end=518, +) +_sym_db.RegisterEnumDescriptor(_CONFIGSCOPE) + +ConfigScope = enum_type_wrapper.EnumTypeWrapper(_CONFIGSCOPE) +PUBLIC = 0 +PRIVATE = 1 + + + +_SERVICEDEPENDENCY_IMPORT = _descriptor.Descriptor( + name='Import', + full_name='istio.networking.v1alpha3.ServiceDependency.Import', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='namespace', full_name='istio.networking.v1alpha3.ServiceDependency.Import.namespace', 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='host', full_name='istio.networking.v1alpha3.ServiceDependency.Import.host', 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=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=176, + serialized_end=217, +) + +_SERVICEDEPENDENCY_DEPENDENCY_SOURCEWORKLOADLABELSENTRY = _descriptor.Descriptor( + name='SourceWorkloadLabelsEntry', + full_name='istio.networking.v1alpha3.ServiceDependency.Dependency.SourceWorkloadLabelsEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='istio.networking.v1alpha3.ServiceDependency.Dependency.SourceWorkloadLabelsEntry.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.networking.v1alpha3.ServiceDependency.Dependency.SourceWorkloadLabelsEntry.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=419, + serialized_end=478, +) + +_SERVICEDEPENDENCY_DEPENDENCY = _descriptor.Descriptor( + name='Dependency', + full_name='istio.networking.v1alpha3.ServiceDependency.Dependency', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='source_workload_labels', full_name='istio.networking.v1alpha3.ServiceDependency.Dependency.source_workload_labels', index=0, + number=1, 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='imports', full_name='istio.networking.v1alpha3.ServiceDependency.Dependency.imports', 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=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[_SERVICEDEPENDENCY_DEPENDENCY_SOURCEWORKLOADLABELSENTRY, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=220, + serialized_end=478, +) + +_SERVICEDEPENDENCY = _descriptor.Descriptor( + name='ServiceDependency', + full_name='istio.networking.v1alpha3.ServiceDependency', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='dependencies', full_name='istio.networking.v1alpha3.ServiceDependency.dependencies', index=0, + number=1, 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), + ], + extensions=[ + ], + nested_types=[_SERVICEDEPENDENCY_IMPORT, _SERVICEDEPENDENCY_DEPENDENCY, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=76, + serialized_end=478, +) + +_SERVICEDEPENDENCY_IMPORT.containing_type = _SERVICEDEPENDENCY +_SERVICEDEPENDENCY_DEPENDENCY_SOURCEWORKLOADLABELSENTRY.containing_type = _SERVICEDEPENDENCY_DEPENDENCY +_SERVICEDEPENDENCY_DEPENDENCY.fields_by_name['source_workload_labels'].message_type = _SERVICEDEPENDENCY_DEPENDENCY_SOURCEWORKLOADLABELSENTRY +_SERVICEDEPENDENCY_DEPENDENCY.fields_by_name['imports'].message_type = _SERVICEDEPENDENCY_IMPORT +_SERVICEDEPENDENCY_DEPENDENCY.containing_type = _SERVICEDEPENDENCY +_SERVICEDEPENDENCY.fields_by_name['dependencies'].message_type = _SERVICEDEPENDENCY_DEPENDENCY +DESCRIPTOR.message_types_by_name['ServiceDependency'] = _SERVICEDEPENDENCY +DESCRIPTOR.enum_types_by_name['ConfigScope'] = _CONFIGSCOPE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +ServiceDependency = _reflection.GeneratedProtocolMessageType('ServiceDependency', (_message.Message,), dict( + + Import = _reflection.GeneratedProtocolMessageType('Import', (_message.Message,), dict( + DESCRIPTOR = _SERVICEDEPENDENCY_IMPORT, + __module__ = 'networking.v1alpha3.service_dependency_pb2' + # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.ServiceDependency.Import) + )) + , + + Dependency = _reflection.GeneratedProtocolMessageType('Dependency', (_message.Message,), dict( + + SourceWorkloadLabelsEntry = _reflection.GeneratedProtocolMessageType('SourceWorkloadLabelsEntry', (_message.Message,), dict( + DESCRIPTOR = _SERVICEDEPENDENCY_DEPENDENCY_SOURCEWORKLOADLABELSENTRY, + __module__ = 'networking.v1alpha3.service_dependency_pb2' + # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.ServiceDependency.Dependency.SourceWorkloadLabelsEntry) + )) + , + DESCRIPTOR = _SERVICEDEPENDENCY_DEPENDENCY, + __module__ = 'networking.v1alpha3.service_dependency_pb2' + # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.ServiceDependency.Dependency) + )) + , + DESCRIPTOR = _SERVICEDEPENDENCY, + __module__ = 'networking.v1alpha3.service_dependency_pb2' + # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.ServiceDependency) + )) +_sym_db.RegisterMessage(ServiceDependency) +_sym_db.RegisterMessage(ServiceDependency.Import) +_sym_db.RegisterMessage(ServiceDependency.Dependency) +_sym_db.RegisterMessage(ServiceDependency.Dependency.SourceWorkloadLabelsEntry) + + +DESCRIPTOR.has_options = True +DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('Z istio.io/api/networking/v1alpha3')) +_SERVICEDEPENDENCY_DEPENDENCY_SOURCEWORKLOADLABELSENTRY.has_options = True +_SERVICEDEPENDENCY_DEPENDENCY_SOURCEWORKLOADLABELSENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')) +# @@protoc_insertion_point(module_scope) diff --git a/python/istio_api/networking/v1alpha3/service_entry_pb2.py b/python/istio_api/networking/v1alpha3/service_entry_pb2.py index 09d81c603a..c3c269209f 100644 --- a/python/istio_api/networking/v1alpha3/service_entry_pb2.py +++ b/python/istio_api/networking/v1alpha3/service_entry_pb2.py @@ -14,15 +14,16 @@ from networking.v1alpha3 import gateway_pb2 as networking_dot_v1alpha3_dot_gateway__pb2 +from networking.v1alpha3 import service_dependency_pb2 as networking_dot_v1alpha3_dot_service__dependency__pb2 DESCRIPTOR = _descriptor.FileDescriptor( name='networking/v1alpha3/service_entry.proto', package='istio.networking.v1alpha3', syntax='proto3', - serialized_pb=_b('\n\'networking/v1alpha3/service_entry.proto\x12\x19istio.networking.v1alpha3\x1a!networking/v1alpha3/gateway.proto\"\xd8\x05\n\x0cServiceEntry\x12\r\n\x05hosts\x18\x01 \x03(\t\x12\x11\n\taddresses\x18\x02 \x03(\t\x12.\n\x05ports\x18\x03 \x03(\x0b\x32\x1f.istio.networking.v1alpha3.Port\x12\x42\n\x08location\x18\x04 \x01(\x0e\x32\x30.istio.networking.v1alpha3.ServiceEntry.Location\x12\x46\n\nresolution\x18\x05 \x01(\x0e\x32\x32.istio.networking.v1alpha3.ServiceEntry.Resolution\x12\x43\n\tendpoints\x18\x06 \x03(\x0b\x32\x30.istio.networking.v1alpha3.ServiceEntry.Endpoint\x1a\xc5\x02\n\x08\x45ndpoint\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12J\n\x05ports\x18\x02 \x03(\x0b\x32;.istio.networking.v1alpha3.ServiceEntry.Endpoint.PortsEntry\x12L\n\x06labels\x18\x03 \x03(\x0b\x32<.istio.networking.v1alpha3.ServiceEntry.Endpoint.LabelsEntry\x12\x0f\n\x07network\x18\x04 \x01(\t\x12\x10\n\x08locality\x18\x05 \x01(\t\x12\x0e\n\x06weight\x18\x06 \x01(\r\x1a,\n\nPortsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"0\n\x08Location\x12\x11\n\rMESH_EXTERNAL\x10\x00\x12\x11\n\rMESH_INTERNAL\x10\x01\"+\n\nResolution\x12\x08\n\x04NONE\x10\x00\x12\n\n\x06STATIC\x10\x01\x12\x07\n\x03\x44NS\x10\x02\x42\"Z istio.io/api/networking/v1alpha3b\x06proto3') + serialized_pb=_b('\n\'networking/v1alpha3/service_entry.proto\x12\x19istio.networking.v1alpha3\x1a!networking/v1alpha3/gateway.proto\x1a,networking/v1alpha3/service_dependency.proto\"\x96\x06\n\x0cServiceEntry\x12\r\n\x05hosts\x18\x01 \x03(\t\x12\x11\n\taddresses\x18\x02 \x03(\t\x12.\n\x05ports\x18\x03 \x03(\x0b\x32\x1f.istio.networking.v1alpha3.Port\x12\x42\n\x08location\x18\x04 \x01(\x0e\x32\x30.istio.networking.v1alpha3.ServiceEntry.Location\x12\x46\n\nresolution\x18\x05 \x01(\x0e\x32\x32.istio.networking.v1alpha3.ServiceEntry.Resolution\x12\x43\n\tendpoints\x18\x06 \x03(\x0b\x32\x30.istio.networking.v1alpha3.ServiceEntry.Endpoint\x12<\n\x0c\x63onfig_scope\x18\x07 \x01(\x0e\x32&.istio.networking.v1alpha3.ConfigScope\x1a\xc5\x02\n\x08\x45ndpoint\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12J\n\x05ports\x18\x02 \x03(\x0b\x32;.istio.networking.v1alpha3.ServiceEntry.Endpoint.PortsEntry\x12L\n\x06labels\x18\x03 \x03(\x0b\x32<.istio.networking.v1alpha3.ServiceEntry.Endpoint.LabelsEntry\x12\x0f\n\x07network\x18\x04 \x01(\t\x12\x10\n\x08locality\x18\x05 \x01(\t\x12\x0e\n\x06weight\x18\x06 \x01(\r\x1a,\n\nPortsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"0\n\x08Location\x12\x11\n\rMESH_EXTERNAL\x10\x00\x12\x11\n\rMESH_INTERNAL\x10\x01\"+\n\nResolution\x12\x08\n\x04NONE\x10\x00\x12\n\n\x06STATIC\x10\x01\x12\x07\n\x03\x44NS\x10\x02\x42\"Z istio.io/api/networking/v1alpha3b\x06proto3') , - dependencies=[networking_dot_v1alpha3_dot_gateway__pb2.DESCRIPTOR,]) + dependencies=[networking_dot_v1alpha3_dot_gateway__pb2.DESCRIPTOR,networking_dot_v1alpha3_dot_service__dependency__pb2.DESCRIPTOR,]) @@ -43,8 +44,8 @@ ], containing_type=None, options=None, - serialized_start=741, - serialized_end=789, + serialized_start=849, + serialized_end=897, ) _sym_db.RegisterEnumDescriptor(_SERVICEENTRY_LOCATION) @@ -69,8 +70,8 @@ ], containing_type=None, options=None, - serialized_start=791, - serialized_end=834, + serialized_start=899, + serialized_end=942, ) _sym_db.RegisterEnumDescriptor(_SERVICEENTRY_RESOLUTION) @@ -108,8 +109,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=648, - serialized_end=692, + serialized_start=756, + serialized_end=800, ) _SERVICEENTRY_ENDPOINT_LABELSENTRY = _descriptor.Descriptor( @@ -145,8 +146,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=694, - serialized_end=739, + serialized_start=802, + serialized_end=847, ) _SERVICEENTRY_ENDPOINT = _descriptor.Descriptor( @@ -210,8 +211,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=414, - serialized_end=739, + serialized_start=522, + serialized_end=847, ) _SERVICEENTRY = _descriptor.Descriptor( @@ -263,6 +264,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='config_scope', full_name='istio.networking.v1alpha3.ServiceEntry.config_scope', index=6, + number=7, type=14, cpp_type=8, label=1, + 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), ], extensions=[ ], @@ -277,8 +285,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=106, - serialized_end=834, + serialized_start=152, + serialized_end=942, ) _SERVICEENTRY_ENDPOINT_PORTSENTRY.containing_type = _SERVICEENTRY_ENDPOINT @@ -290,6 +298,7 @@ _SERVICEENTRY.fields_by_name['location'].enum_type = _SERVICEENTRY_LOCATION _SERVICEENTRY.fields_by_name['resolution'].enum_type = _SERVICEENTRY_RESOLUTION _SERVICEENTRY.fields_by_name['endpoints'].message_type = _SERVICEENTRY_ENDPOINT +_SERVICEENTRY.fields_by_name['config_scope'].enum_type = networking_dot_v1alpha3_dot_service__dependency__pb2._CONFIGSCOPE _SERVICEENTRY_LOCATION.containing_type = _SERVICEENTRY _SERVICEENTRY_RESOLUTION.containing_type = _SERVICEENTRY DESCRIPTOR.message_types_by_name['ServiceEntry'] = _SERVICEENTRY diff --git a/python/istio_api/networking/v1alpha3/virtual_service_pb2.py b/python/istio_api/networking/v1alpha3/virtual_service_pb2.py index 4588a89298..7df90ca370 100644 --- a/python/istio_api/networking/v1alpha3/virtual_service_pb2.py +++ b/python/istio_api/networking/v1alpha3/virtual_service_pb2.py @@ -15,15 +15,16 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 +from networking.v1alpha3 import service_dependency_pb2 as networking_dot_v1alpha3_dot_service__dependency__pb2 DESCRIPTOR = _descriptor.FileDescriptor( 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\"\xb4\x08\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.HTTPRouteDestination\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\x12S\n\x0e\x61ppend_headers\x18\x0b \x03(\x0b\x32\x37.istio.networking.v1alpha3.HTTPRoute.AppendHeadersEntryB\x02\x18\x01\x12\x1f\n\x17remove_response_headers\x18\x0c \x03(\t\x12`\n\x17\x61ppend_response_headers\x18\r \x03(\x0b\x32?.istio.networking.v1alpha3.HTTPRoute.AppendResponseHeadersEntry\x12\x1e\n\x16remove_request_headers\x18\x0e \x03(\t\x12^\n\x16\x61ppend_request_headers\x18\x0f \x03(\x0b\x32>.istio.networking.v1alpha3.HTTPRoute.AppendRequestHeadersEntry\x1a\x34\n\x12\x41ppendHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a<\n\x1a\x41ppendResponseHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x41ppendRequestHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x84\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.RouteDestination\"\x83\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.RouteDestination\"\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\"\xf7\x03\n\x14HTTPRouteDestination\x12;\n\x0b\x64\x65stination\x18\x01 \x01(\x0b\x32&.istio.networking.v1alpha3.Destination\x12\x0e\n\x06weight\x18\x02 \x01(\x05\x12\x1f\n\x17remove_response_headers\x18\x03 \x03(\t\x12k\n\x17\x61ppend_response_headers\x18\x04 \x03(\x0b\x32J.istio.networking.v1alpha3.HTTPRouteDestination.AppendResponseHeadersEntry\x12\x1e\n\x16remove_request_headers\x18\x05 \x03(\t\x12i\n\x16\x61ppend_request_headers\x18\x06 \x03(\x0b\x32I.istio.networking.v1alpha3.HTTPRouteDestination.AppendRequestHeadersEntry\x1a<\n\x1a\x41ppendResponseHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x41ppendRequestHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"_\n\x10RouteDestination\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\"c\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\x12\x10\n\x08retry_on\x18\x03 \x01(\t\"\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') + serialized_pb=_b('\n)networking/v1alpha3/virtual_service.proto\x12\x19istio.networking.v1alpha3\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a,networking/v1alpha3/service_dependency.proto\"\x87\x02\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\x12<\n\x0c\x63onfig_scope\x18\x06 \x01(\x0e\x32&.istio.networking.v1alpha3.ConfigScope\"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\"\xf9\x08\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.HTTPRouteDestination\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\x12S\n\x0e\x61ppend_headers\x18\x0b \x03(\x0b\x32\x37.istio.networking.v1alpha3.HTTPRoute.AppendHeadersEntryB\x02\x18\x01\x12#\n\x17remove_response_headers\x18\x0c \x03(\tB\x02\x18\x01\x12\x64\n\x17\x61ppend_response_headers\x18\r \x03(\x0b\x32?.istio.networking.v1alpha3.HTTPRoute.AppendResponseHeadersEntryB\x02\x18\x01\x12\"\n\x16remove_request_headers\x18\x0e \x03(\tB\x02\x18\x01\x12\x62\n\x16\x61ppend_request_headers\x18\x0f \x03(\x0b\x32>.istio.networking.v1alpha3.HTTPRoute.AppendRequestHeadersEntryB\x02\x18\x01\x12\x33\n\x07headers\x18\x10 \x01(\x0b\x32\".istio.networking.v1alpha3.Headers\x1a\x34\n\x12\x41ppendHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a<\n\x1a\x41ppendResponseHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x41ppendRequestHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa9\x03\n\x07Headers\x12\x44\n\x07request\x18\x01 \x01(\x0b\x32\x33.istio.networking.v1alpha3.Headers.HeaderOperations\x12\x45\n\x08response\x18\x02 \x01(\x0b\x32\x33.istio.networking.v1alpha3.Headers.HeaderOperations\x1a\x90\x02\n\x10HeaderOperations\x12I\n\x03set\x18\x01 \x03(\x0b\x32<.istio.networking.v1alpha3.Headers.HeaderOperations.SetEntry\x12I\n\x03\x61\x64\x64\x18\x02 \x03(\x0b\x32<.istio.networking.v1alpha3.Headers.HeaderOperations.AddEntry\x12\x0e\n\x06remove\x18\x03 \x03(\t\x1a*\n\x08SetEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a*\n\x08\x41\x64\x64\x45ntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x84\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.RouteDestination\"\x83\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.RouteDestination\"\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\"\xbc\x04\n\x14HTTPRouteDestination\x12;\n\x0b\x64\x65stination\x18\x01 \x01(\x0b\x32&.istio.networking.v1alpha3.Destination\x12\x0e\n\x06weight\x18\x02 \x01(\x05\x12#\n\x17remove_response_headers\x18\x03 \x03(\tB\x02\x18\x01\x12o\n\x17\x61ppend_response_headers\x18\x04 \x03(\x0b\x32J.istio.networking.v1alpha3.HTTPRouteDestination.AppendResponseHeadersEntryB\x02\x18\x01\x12\"\n\x16remove_request_headers\x18\x05 \x03(\tB\x02\x18\x01\x12m\n\x16\x61ppend_request_headers\x18\x06 \x03(\x0b\x32I.istio.networking.v1alpha3.HTTPRouteDestination.AppendRequestHeadersEntryB\x02\x18\x01\x12\x33\n\x07headers\x18\x07 \x01(\x0b\x32\".istio.networking.v1alpha3.Headers\x1a<\n\x1a\x41ppendResponseHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x41ppendRequestHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"_\n\x10RouteDestination\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\"c\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\x12\x10\n\x08retry_on\x18\x03 \x01(\t\"\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,]) + dependencies=[google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,networking_dot_v1alpha3_dot_service__dependency__pb2.DESCRIPTOR,]) @@ -70,6 +71,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='config_scope', full_name='istio.networking.v1alpha3.VirtualService.config_scope', index=5, + number=6, type=14, cpp_type=8, label=1, + 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), ], extensions=[ ], @@ -82,8 +90,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=137, - serialized_end=338, + serialized_start=183, + serialized_end=446, ) @@ -127,8 +135,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=340, - serialized_end=438, + serialized_start=448, + serialized_end=546, ) @@ -165,8 +173,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1342, - serialized_end=1394, + serialized_start=1519, + serialized_end=1571, ) _HTTPROUTE_APPENDRESPONSEHEADERSENTRY = _descriptor.Descriptor( @@ -202,8 +210,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1396, - serialized_end=1456, + serialized_start=1573, + serialized_end=1633, ) _HTTPROUTE_APPENDREQUESTHEADERSENTRY = _descriptor.Descriptor( @@ -239,8 +247,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1458, - serialized_end=1517, + serialized_start=1635, + serialized_end=1694, ) _HTTPROUTE = _descriptor.Descriptor( @@ -333,27 +341,34 @@ 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), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')), file=DESCRIPTOR), _descriptor.FieldDescriptor( name='append_response_headers', full_name='istio.networking.v1alpha3.HTTPRoute.append_response_headers', index=12, number=13, 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), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')), file=DESCRIPTOR), _descriptor.FieldDescriptor( name='remove_request_headers', full_name='istio.networking.v1alpha3.HTTPRoute.remove_request_headers', index=13, number=14, 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), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')), file=DESCRIPTOR), _descriptor.FieldDescriptor( name='append_request_headers', full_name='istio.networking.v1alpha3.HTTPRoute.append_request_headers', index=14, number=15, 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('\030\001')), file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='headers', full_name='istio.networking.v1alpha3.HTTPRoute.headers', index=15, + number=16, 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=[ @@ -367,8 +382,164 @@ extension_ranges=[], oneofs=[ ], - serialized_start=441, - serialized_end=1517, + serialized_start=549, + serialized_end=1694, +) + + +_HEADERS_HEADEROPERATIONS_SETENTRY = _descriptor.Descriptor( + name='SetEntry', + full_name='istio.networking.v1alpha3.Headers.HeaderOperations.SetEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='istio.networking.v1alpha3.Headers.HeaderOperations.SetEntry.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.networking.v1alpha3.Headers.HeaderOperations.SetEntry.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=2036, + serialized_end=2078, +) + +_HEADERS_HEADEROPERATIONS_ADDENTRY = _descriptor.Descriptor( + name='AddEntry', + full_name='istio.networking.v1alpha3.Headers.HeaderOperations.AddEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='istio.networking.v1alpha3.Headers.HeaderOperations.AddEntry.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.networking.v1alpha3.Headers.HeaderOperations.AddEntry.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=2080, + serialized_end=2122, +) + +_HEADERS_HEADEROPERATIONS = _descriptor.Descriptor( + name='HeaderOperations', + full_name='istio.networking.v1alpha3.Headers.HeaderOperations', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='set', full_name='istio.networking.v1alpha3.Headers.HeaderOperations.set', index=0, + number=1, 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='add', full_name='istio.networking.v1alpha3.Headers.HeaderOperations.add', 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=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='remove', full_name='istio.networking.v1alpha3.Headers.HeaderOperations.remove', 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), + ], + extensions=[ + ], + nested_types=[_HEADERS_HEADEROPERATIONS_SETENTRY, _HEADERS_HEADEROPERATIONS_ADDENTRY, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1850, + serialized_end=2122, +) + +_HEADERS = _descriptor.Descriptor( + name='Headers', + full_name='istio.networking.v1alpha3.Headers', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='request', full_name='istio.networking.v1alpha3.Headers.request', 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='response', full_name='istio.networking.v1alpha3.Headers.response', index=1, + number=2, 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=[_HEADERS_HEADEROPERATIONS, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1697, + serialized_end=2122, ) @@ -405,8 +576,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1520, - serialized_end=1652, + serialized_start=2125, + serialized_end=2257, ) @@ -443,8 +614,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1655, - serialized_end=1786, + serialized_start=2260, + serialized_end=2391, ) @@ -481,8 +652,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2226, - serialized_end=2312, + serialized_start=2831, + serialized_end=2917, ) _HTTPMATCHREQUEST_SOURCELABELSENTRY = _descriptor.Descriptor( @@ -518,8 +689,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2314, - serialized_end=2365, + serialized_start=2919, + serialized_end=2970, ) _HTTPMATCHREQUEST = _descriptor.Descriptor( @@ -597,8 +768,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1789, - serialized_end=2365, + serialized_start=2394, + serialized_end=2970, ) @@ -635,8 +806,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1396, - serialized_end=1456, + serialized_start=1573, + serialized_end=1633, ) _HTTPROUTEDESTINATION_APPENDREQUESTHEADERSENTRY = _descriptor.Descriptor( @@ -672,8 +843,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1458, - serialized_end=1517, + serialized_start=1635, + serialized_end=1694, ) _HTTPROUTEDESTINATION = _descriptor.Descriptor( @@ -703,27 +874,34 @@ 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), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')), file=DESCRIPTOR), _descriptor.FieldDescriptor( name='append_response_headers', full_name='istio.networking.v1alpha3.HTTPRouteDestination.append_response_headers', index=3, number=4, 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), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')), file=DESCRIPTOR), _descriptor.FieldDescriptor( name='remove_request_headers', full_name='istio.networking.v1alpha3.HTTPRouteDestination.remove_request_headers', index=4, number=5, 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), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')), file=DESCRIPTOR), _descriptor.FieldDescriptor( name='append_request_headers', full_name='istio.networking.v1alpha3.HTTPRouteDestination.append_request_headers', index=5, number=6, 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('\030\001')), file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='headers', full_name='istio.networking.v1alpha3.HTTPRouteDestination.headers', index=6, + number=7, 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=[ @@ -737,8 +915,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2368, - serialized_end=2871, + serialized_start=2973, + serialized_end=3545, ) @@ -775,8 +953,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2873, - serialized_end=2968, + serialized_start=3547, + serialized_end=3642, ) @@ -813,8 +991,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2314, - serialized_end=2365, + serialized_start=2919, + serialized_end=2970, ) _L4MATCHATTRIBUTES = _descriptor.Descriptor( @@ -871,8 +1049,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2971, - serialized_end=3214, + serialized_start=3645, + serialized_end=3888, ) @@ -909,8 +1087,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2314, - serialized_end=2365, + serialized_start=2919, + serialized_end=2970, ) _TLSMATCHATTRIBUTES = _descriptor.Descriptor( @@ -974,8 +1152,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3217, - serialized_end=3481, + serialized_start=3891, + serialized_end=4155, ) @@ -1012,8 +1190,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3483, - serialized_end=3529, + serialized_start=4157, + serialized_end=4203, ) @@ -1050,8 +1228,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3531, - serialized_end=3576, + serialized_start=4205, + serialized_end=4250, ) @@ -1098,8 +1276,8 @@ name='match_type', full_name='istio.networking.v1alpha3.StringMatch.match_type', index=0, containing_type=None, fields=[]), ], - serialized_start=3578, - serialized_end=3657, + serialized_start=4252, + serialized_end=4331, ) @@ -1143,8 +1321,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3659, - serialized_end=3758, + serialized_start=4333, + serialized_end=4432, ) @@ -1209,8 +1387,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3761, - serialized_end=3964, + serialized_start=4435, + serialized_end=4638, ) @@ -1264,8 +1442,8 @@ name='http_delay_type', full_name='istio.networking.v1alpha3.HTTPFaultInjection.Delay.http_delay_type', index=0, containing_type=None, fields=[]), ], - serialized_start=4126, - serialized_end=4335, + serialized_start=4800, + serialized_end=5009, ) _HTTPFAULTINJECTION_ABORT = _descriptor.Descriptor( @@ -1325,8 +1503,8 @@ name='error_type', full_name='istio.networking.v1alpha3.HTTPFaultInjection.Abort.error_type', index=0, containing_type=None, fields=[]), ], - serialized_start=4338, - serialized_end=4505, + serialized_start=5012, + serialized_end=5179, ) _HTTPFAULTINJECTION = _descriptor.Descriptor( @@ -1362,8 +1540,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3967, - serialized_end=4505, + serialized_start=4641, + serialized_end=5179, ) @@ -1403,8 +1581,8 @@ name='port', full_name='istio.networking.v1alpha3.PortSelector.port', index=0, containing_type=None, fields=[]), ], - serialized_start=4507, - serialized_end=4563, + serialized_start=5181, + serialized_end=5237, ) @@ -1434,13 +1612,14 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4565, - serialized_end=4589, + serialized_start=5239, + serialized_end=5263, ) _VIRTUALSERVICE.fields_by_name['http'].message_type = _HTTPROUTE _VIRTUALSERVICE.fields_by_name['tls'].message_type = _TLSROUTE _VIRTUALSERVICE.fields_by_name['tcp'].message_type = _TCPROUTE +_VIRTUALSERVICE.fields_by_name['config_scope'].enum_type = networking_dot_v1alpha3_dot_service__dependency__pb2._CONFIGSCOPE _DESTINATION.fields_by_name['port'].message_type = _PORTSELECTOR _HTTPROUTE_APPENDHEADERSENTRY.containing_type = _HTTPROUTE _HTTPROUTE_APPENDRESPONSEHEADERSENTRY.containing_type = _HTTPROUTE @@ -1457,6 +1636,14 @@ _HTTPROUTE.fields_by_name['append_headers'].message_type = _HTTPROUTE_APPENDHEADERSENTRY _HTTPROUTE.fields_by_name['append_response_headers'].message_type = _HTTPROUTE_APPENDRESPONSEHEADERSENTRY _HTTPROUTE.fields_by_name['append_request_headers'].message_type = _HTTPROUTE_APPENDREQUESTHEADERSENTRY +_HTTPROUTE.fields_by_name['headers'].message_type = _HEADERS +_HEADERS_HEADEROPERATIONS_SETENTRY.containing_type = _HEADERS_HEADEROPERATIONS +_HEADERS_HEADEROPERATIONS_ADDENTRY.containing_type = _HEADERS_HEADEROPERATIONS +_HEADERS_HEADEROPERATIONS.fields_by_name['set'].message_type = _HEADERS_HEADEROPERATIONS_SETENTRY +_HEADERS_HEADEROPERATIONS.fields_by_name['add'].message_type = _HEADERS_HEADEROPERATIONS_ADDENTRY +_HEADERS_HEADEROPERATIONS.containing_type = _HEADERS +_HEADERS.fields_by_name['request'].message_type = _HEADERS_HEADEROPERATIONS +_HEADERS.fields_by_name['response'].message_type = _HEADERS_HEADEROPERATIONS _TLSROUTE.fields_by_name['match'].message_type = _TLSMATCHATTRIBUTES _TLSROUTE.fields_by_name['route'].message_type = _ROUTEDESTINATION _TCPROUTE.fields_by_name['match'].message_type = _L4MATCHATTRIBUTES @@ -1475,6 +1662,7 @@ _HTTPROUTEDESTINATION.fields_by_name['destination'].message_type = _DESTINATION _HTTPROUTEDESTINATION.fields_by_name['append_response_headers'].message_type = _HTTPROUTEDESTINATION_APPENDRESPONSEHEADERSENTRY _HTTPROUTEDESTINATION.fields_by_name['append_request_headers'].message_type = _HTTPROUTEDESTINATION_APPENDREQUESTHEADERSENTRY +_HTTPROUTEDESTINATION.fields_by_name['headers'].message_type = _HEADERS _ROUTEDESTINATION.fields_by_name['destination'].message_type = _DESTINATION _L4MATCHATTRIBUTES_SOURCELABELSENTRY.containing_type = _L4MATCHATTRIBUTES _L4MATCHATTRIBUTES.fields_by_name['source_labels'].message_type = _L4MATCHATTRIBUTES_SOURCELABELSENTRY @@ -1524,6 +1712,7 @@ DESCRIPTOR.message_types_by_name['VirtualService'] = _VIRTUALSERVICE DESCRIPTOR.message_types_by_name['Destination'] = _DESTINATION DESCRIPTOR.message_types_by_name['HTTPRoute'] = _HTTPROUTE +DESCRIPTOR.message_types_by_name['Headers'] = _HEADERS DESCRIPTOR.message_types_by_name['TLSRoute'] = _TLSROUTE DESCRIPTOR.message_types_by_name['TCPRoute'] = _TCPROUTE DESCRIPTOR.message_types_by_name['HTTPMatchRequest'] = _HTTPMATCHREQUEST @@ -1586,6 +1775,37 @@ _sym_db.RegisterMessage(HTTPRoute.AppendResponseHeadersEntry) _sym_db.RegisterMessage(HTTPRoute.AppendRequestHeadersEntry) +Headers = _reflection.GeneratedProtocolMessageType('Headers', (_message.Message,), dict( + + HeaderOperations = _reflection.GeneratedProtocolMessageType('HeaderOperations', (_message.Message,), dict( + + SetEntry = _reflection.GeneratedProtocolMessageType('SetEntry', (_message.Message,), dict( + DESCRIPTOR = _HEADERS_HEADEROPERATIONS_SETENTRY, + __module__ = 'networking.v1alpha3.virtual_service_pb2' + # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.Headers.HeaderOperations.SetEntry) + )) + , + + AddEntry = _reflection.GeneratedProtocolMessageType('AddEntry', (_message.Message,), dict( + DESCRIPTOR = _HEADERS_HEADEROPERATIONS_ADDENTRY, + __module__ = 'networking.v1alpha3.virtual_service_pb2' + # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.Headers.HeaderOperations.AddEntry) + )) + , + DESCRIPTOR = _HEADERS_HEADEROPERATIONS, + __module__ = 'networking.v1alpha3.virtual_service_pb2' + # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.Headers.HeaderOperations) + )) + , + DESCRIPTOR = _HEADERS, + __module__ = 'networking.v1alpha3.virtual_service_pb2' + # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.Headers) + )) +_sym_db.RegisterMessage(Headers) +_sym_db.RegisterMessage(Headers.HeaderOperations) +_sym_db.RegisterMessage(Headers.HeaderOperations.SetEntry) +_sym_db.RegisterMessage(Headers.HeaderOperations.AddEntry) + TLSRoute = _reflection.GeneratedProtocolMessageType('TLSRoute', (_message.Message,), dict( DESCRIPTOR = _TLSROUTE, __module__ = 'networking.v1alpha3.virtual_service_pb2' @@ -1766,6 +1986,18 @@ _HTTPROUTE_APPENDREQUESTHEADERSENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')) _HTTPROUTE.fields_by_name['append_headers'].has_options = True _HTTPROUTE.fields_by_name['append_headers']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_HTTPROUTE.fields_by_name['remove_response_headers'].has_options = True +_HTTPROUTE.fields_by_name['remove_response_headers']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_HTTPROUTE.fields_by_name['append_response_headers'].has_options = True +_HTTPROUTE.fields_by_name['append_response_headers']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_HTTPROUTE.fields_by_name['remove_request_headers'].has_options = True +_HTTPROUTE.fields_by_name['remove_request_headers']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_HTTPROUTE.fields_by_name['append_request_headers'].has_options = True +_HTTPROUTE.fields_by_name['append_request_headers']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_HEADERS_HEADEROPERATIONS_SETENTRY.has_options = True +_HEADERS_HEADEROPERATIONS_SETENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')) +_HEADERS_HEADEROPERATIONS_ADDENTRY.has_options = True +_HEADERS_HEADEROPERATIONS_ADDENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')) _HTTPMATCHREQUEST_HEADERSENTRY.has_options = True _HTTPMATCHREQUEST_HEADERSENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')) _HTTPMATCHREQUEST_SOURCELABELSENTRY.has_options = True @@ -1774,6 +2006,14 @@ _HTTPROUTEDESTINATION_APPENDRESPONSEHEADERSENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')) _HTTPROUTEDESTINATION_APPENDREQUESTHEADERSENTRY.has_options = True _HTTPROUTEDESTINATION_APPENDREQUESTHEADERSENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')) +_HTTPROUTEDESTINATION.fields_by_name['remove_response_headers'].has_options = True +_HTTPROUTEDESTINATION.fields_by_name['remove_response_headers']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_HTTPROUTEDESTINATION.fields_by_name['append_response_headers'].has_options = True +_HTTPROUTEDESTINATION.fields_by_name['append_response_headers']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_HTTPROUTEDESTINATION.fields_by_name['remove_request_headers'].has_options = True +_HTTPROUTEDESTINATION.fields_by_name['remove_request_headers']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_HTTPROUTEDESTINATION.fields_by_name['append_request_headers'].has_options = True +_HTTPROUTEDESTINATION.fields_by_name['append_request_headers']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) _L4MATCHATTRIBUTES_SOURCELABELSENTRY.has_options = True _L4MATCHATTRIBUTES_SOURCELABELSENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')) _TLSMATCHATTRIBUTES_SOURCELABELSENTRY.has_options = True
FieldTypeDescription
namespacestring +

The configuration namespace whose services need to be imported. +Specify * to import all namespaces. The import can be scoped further +by specifying individual hosts.

+ +
hoststring +

A FQDN or wildcard prefixed DNS name of the host to import from the +specified namespace. The hostnames include names of services from the +service registry as well as those specified in a VirtualService.

+

One or more endpoints associated with the service.

+
configScopeConfigScope +

The visibility setting associated with this service entry. Set to +PRIVATE if this service should not be visible outside the namespace +where the service entry was added. The default scope is public, +i.e. the service added by the service entry will be visible to +workloads in the entire mesh.

+
configScopeConfigScope +

The visibility setting associated with this VirtualService. Set to +PRIVATE if this virtual service should not be exported, i.e. restrict +the applicability of this virtual service to only workloads in the same +namespace as the virtual service.

+