Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync Fork from Upstream Repo #20

Merged
merged 35 commits into from
Sep 20, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
5d59dd9
server: return processContext as optional reference (#8238)
eziskind Sep 16, 2019
d159697
Update envoy.yaml in Redis proxy example (#8220)
rklabs Sep 16, 2019
5fb7565
quiche: implement ActiveQuicListener (#7896)
danzh2010 Sep 16, 2019
c5738e1
srds: allow SRDS pass on scope-not-found queries to filter-chain (iss…
stevenzzzz Sep 16, 2019
6ec15ce
move common/crypto impl to extensions for openssl (#7344)
bdecoste Sep 16, 2019
11c5fa0
docs: Allow AWS IAM SigV4 for SDS AuthN (#8067)
bcelenza Sep 16, 2019
41932e9
External AuthZ C++ Data plane enablement (#7459)
nickrmc83 Sep 16, 2019
931f4bb
ci: Basic Windows setup (#8208)
lizan Sep 17, 2019
81460d8
Add retriable headers retry policy. (#8187)
olegshaldybin Sep 17, 2019
a381bc4
upstream: fix the header file path typo (#8266)
stevenzzzz Sep 17, 2019
8c28a4f
http inspector: rename h2 to h2c (#8227)
yxue Sep 17, 2019
616347f
route check tool: add support for outputting missing tests (#8240)
Sep 17, 2019
4d19eda
docs: minor deprecation note (#8207)
kyessenov Sep 17, 2019
fbd9aa5
bazel: Update protobuf and other needed dependencies (#8196)
vadorovsky Sep 17, 2019
99004b8
http inspector:inline the recv in the onAccept (#8111)
lambdai Sep 17, 2019
2f5f947
added tracing capability to ext-authz http client (#8142)
Sep 17, 2019
3351107
api: remove vNalphaM as style guide recommendation. (#8269)
htuch Sep 17, 2019
0bce3a1
build: Support tags[] arg for more specific build control (#8233)
achasveachas Sep 17, 2019
358793b
api: remove v2-api-diff annotation. (#8270)
htuch Sep 17, 2019
9041978
test: remove CONSTRUCT_ON_FIRST_USE from ads_integration_test (#8272)
fredlas Sep 18, 2019
c62625b
Upgrade opencensus-cpp to get Stackdriver exporter improvements. (#8277)
g-easy Sep 18, 2019
069f50c
tests: fix negative private key sync test. (#8264)
ipuustin Sep 18, 2019
166b0fa
http: only accept HTTP client magic at the start of buffer (#8232)
zuercher Sep 18, 2019
43c91d8
access_log: check for reopen flag on flush interval (#8261)
zuercher Sep 19, 2019
1f8c137
access log: add support downstream direct remote address (#8278)
lizan Sep 19, 2019
0e63f5a
make test/integration:http_subset_lb_integration_test IP version envi…
stevenzzzz Sep 19, 2019
272ee70
quiche: implement QUIC specific TransportSocketFactory for TLS contex…
danzh2010 Sep 19, 2019
d42e14e
xDS: gRPC connection failure shouldn't make Envoy continue startup (#…
l8huang Sep 19, 2019
32e6018
api: add go proto generation script (#8155)
kyessenov Sep 19, 2019
219e8b9
grpc-json: add option to convert gRPC status into JSON body (#3383) (…
ascheglov Sep 19, 2019
b7233cb
docs: fix email cc typo (#8296)
asraa Sep 19, 2019
3c4e5bf
add debug log (#8294)
ramaraochavali Sep 19, 2019
35b459f
doc: fix formatting of regexes, disconnected comment (#8285)
zuercher Sep 19, 2019
6e8b312
stats: In StatNameSet, differentiate between dynamic and builtin name…
jmarantz Sep 19, 2019
22712d2
api: some comment cleanups in preparation for v3 proto transforms. (#…
htuch Sep 20, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .azure-pipelines/windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Azure Pipelines
# TODO(lizan): Consider rolling all presubmit jobs into one file.
trigger:
- master

jobs:
- job: Windows
timeoutInMinutes: 360
pool:
vmImage: 'windows-latest'

steps:
- powershell: |
.\ci\windows_ci_setup.ps1
Write-Host "##vso[task.prependpath]$env:TOOLS_BIN_DIR"
displayName: 'Install dependencies'
env:
TOOLS_BIN_DIR: $(Pipeline.Workspace)\bin

- powershell: .\ci\windows_ci_steps.ps1
displayName: 'Run Windows CI'
1 change: 1 addition & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ jobs:
fingerprints:
- "fb:f3:fe:be:1c:b2:ec:b6:25:f9:7b:a6:87:54:02:8c"
- run: ci/api_mirror.sh
- run: ci/go_mirror.sh
- store_artifacts:
path: /build/envoy/generated
destination: /
Expand Down
2 changes: 2 additions & 0 deletions CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,5 @@ extensions/filters/common/original_src @snowp @klarose
/*/extensions/filters/common/expr @kyessenov @yangminzhu
# webassembly common extension
/*/extensions/common/wasm @jplevyak @PiotrSikora
# common crypto extension
/*/extensions/common/crypto @lizan @PiotrSikora @bdecoste
5 changes: 2 additions & 3 deletions api/STYLE.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,8 @@ In addition, the following conventions should be followed:

* Protos for configs and services that are not implemented immediately in
Envoy, or are under active design and development should be versioned
"v2alpha". If several iterations of the alpha API are expected, then versions
"v2alpha1", "v2alpha2", and so on are preferred. Alpha-versioned protos are
considered experimental and are not required to preserve compatibility.
"vNalpha". See the [stable API versioning
policy](https://github.com/envoyproxy/envoy/issues/6271).

* Every proto directory should have a `README.md` describing its content. See
for example [envoy.service](envoy/service/README.md).
Expand Down
46 changes: 36 additions & 10 deletions api/bazel/api_build_system.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ load("@com_google_protobuf//:protobuf.bzl", _py_proto_library = "py_proto_librar
load("@com_envoyproxy_protoc_gen_validate//bazel:pgv_proto_library.bzl", "pgv_cc_proto_library")
load("@io_bazel_rules_go//proto:def.bzl", "go_grpc_library", "go_proto_library")
load("@io_bazel_rules_go//go:def.bzl", "go_test")
load("@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library")

_PY_SUFFIX = "_py"
_CC_SUFFIX = "_cc"
_CC_GRPC_SUFFIX = "_cc_grpc"
_CC_EXPORT_SUFFIX = "_export_cc"
_GO_PROTO_SUFFIX = "_go_proto"
_GO_IMPORTPATH_PREFIX = "github.com/envoyproxy/data-plane-api/api/"
_GO_IMPORTPATH_PREFIX = "github.com/envoyproxy/go-control-plane/"

_COMMON_PROTO_DEPS = [
"@com_google_protobuf//:any_proto",
Expand All @@ -32,12 +34,10 @@ def _LibrarySuffix(library_name, suffix):
library_name += ":" + Label(library_name).name
return _Suffix(library_name, suffix)

# TODO(htuch): has_services is currently ignored but will in future support
# gRPC stub generation.
# TODO(htuch): Convert this to native py_proto_library once
# https://github.com/bazelbuild/bazel/issues/3935 and/or
# https://github.com/bazelbuild/bazel/issues/2626 are resolved.
def api_py_proto_library(name, srcs = [], deps = [], external_py_proto_deps = [], has_services = 0):
def api_py_proto_library(name, srcs = [], deps = [], external_py_proto_deps = []):
_py_proto_library(
name = _Suffix(name, _PY_SUFFIX),
srcs = srcs,
Expand Down Expand Up @@ -73,6 +73,23 @@ def py_proto_library(name, deps = []):
visibility = ["//visibility:public"],
)

def _api_cc_grpc_library(name, proto, deps = []):
cc_grpc_library(
name = name,
srcs = [proto],
deps = deps,
proto_only = False,
grpc_only = True,
visibility = ["//visibility:public"],
)

def _ToCanonicalLabel(label):
# //my/app and //my/app:app are the same label. In places we mutate the incoming label adding different suffixes
# in order to generate multiple targets in a single rule. //my/app:app_grpc_cc.
# Skylark formatters and linters prefer the shorthand label whilst we need the latter.
rel = Label("//" + native.package_name()).relative(label)
return "//" + rel.package + ":" + rel.name

# This is api_proto_library plus some logic internal to //envoy/api.
def api_proto_library_internal(visibility = ["//visibility:private"], **kwargs):
# //envoy/docs/build.sh needs visibility in order to generate documents.
Expand All @@ -83,41 +100,50 @@ def api_proto_library_internal(visibility = ["//visibility:private"], **kwargs):

api_proto_library(visibility = visibility, **kwargs)

# TODO(htuch): has_services is currently ignored but will in future support
# gRPC stub generation.
def api_proto_library(
name,
visibility = ["//visibility:private"],
srcs = [],
deps = [],
tags = [],
external_proto_deps = [],
external_cc_proto_deps = [],
external_py_proto_deps = [],
has_services = 0,
linkstatic = None,
require_py = 1):
relative_name = ":" + name
native.proto_library(
name = name,
srcs = srcs,
deps = deps + external_proto_deps + _COMMON_PROTO_DEPS,
tags = tags,
visibility = visibility,
)
cc_proto_library_name = _Suffix(name, _CC_SUFFIX)
pgv_cc_proto_library(
name = _Suffix(name, _CC_SUFFIX),
name = cc_proto_library_name,
linkstatic = linkstatic,
cc_deps = [_LibrarySuffix(d, _CC_SUFFIX) for d in deps] + external_cc_proto_deps + [
"@com_google_googleapis//google/api:http_cc_proto",
"@com_google_googleapis//google/api:annotations_cc_proto",
"@com_google_googleapis//google/rpc:status_cc_proto",
],
deps = [":" + name],
deps = [relative_name],
visibility = ["//visibility:public"],
)
py_export_suffixes = []
if (require_py == 1):
api_py_proto_library(name, srcs, deps, external_py_proto_deps, has_services)
if require_py:
api_py_proto_library(name, srcs, deps, external_py_proto_deps)
py_export_suffixes = ["_py", "_py_genproto"]

# Optionally define gRPC services
if has_services:
# TODO: when Python services are required, add to the below stub generations.
cc_grpc_name = _Suffix(name, _CC_GRPC_SUFFIX)
cc_proto_deps = [cc_proto_library_name] + [_Suffix(_ToCanonicalLabel(x), _CC_SUFFIX) for x in deps]
_api_cc_grpc_library(name = cc_grpc_name, proto = relative_name, deps = cc_proto_deps)

# Allow unlimited visibility for consumers
export_suffixes = ["", "_cc", "_cc_validate"] + py_export_suffixes
for s in export_suffixes:
Expand Down
1 change: 0 additions & 1 deletion api/bazel/envoy_http_archive.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ def envoy_http_archive(name, locations, **kwargs):
# This repository has already been defined, probably because the user
# wants to override the version. Do nothing.
return

loc_key = kwargs.pop("repository_key", name)
location = locations[loc_key]

Expand Down
2 changes: 1 addition & 1 deletion api/bazel/repositories.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ api_proto_library(

go_proto_library(
name = "client_model_go_proto",
importpath = "client_model",
importpath = "github.com/prometheus/client_model/go",
proto = ":client_model",
visibility = ["//visibility:public"],
)
Expand Down
1 change: 1 addition & 0 deletions api/envoy/api/v2/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ api_proto_package(
api_proto_library_internal(
name = "discovery",
srcs = ["discovery.proto"],
has_services = 1,
visibility = [":friends"],
deps = ["//envoy/api/v2/core:base"],
)
Expand Down
3 changes: 2 additions & 1 deletion api/envoy/api/v2/auth/cert.proto
Original file line number Diff line number Diff line change
Expand Up @@ -386,7 +386,8 @@ message DownstreamTlsContext {
message SdsSecretConfig {
// Name (FQDN, UUID, SPKI, SHA256, etc.) by which the secret can be uniquely referred to.
// When both name and config are specified, then secret can be fetched and/or reloaded via SDS.
// When only name is specified, then secret will be loaded from static resources [V2-API-DIFF].
// When only name is specified, then secret will be loaded from static
// resources.
string name = 1;
core.ConfigSource sds_config = 2;
}
Expand Down
1 change: 0 additions & 1 deletion api/envoy/api/v2/core/grpc_service.proto
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,6 @@ message GrpcService {
// request.
google.protobuf.Duration timeout = 3;

// Field 4 reserved due to moving credentials inside the GoogleGrpc message
reserved 4;

// Additional metadata to include in streams initiated to the GrpcService.
Expand Down
3 changes: 1 addition & 2 deletions api/envoy/api/v2/core/health_check.proto
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,7 @@ message HealthCheck {
CustomHealthCheck custom_health_check = 13;
}

reserved 10; // redis_health_check is deprecated by :ref:`custom_health_check
// <envoy_api_field_core.HealthCheck.custom_health_check>`
reserved 10;
reserved "redis_health_check";

// The "no traffic interval" is a special health check interval that is used when a cluster has
Expand Down
4 changes: 1 addition & 3 deletions api/envoy/api/v2/core/protocol.proto
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
// [#protodoc-title: Protocol options]

syntax = "proto3";

package envoy.api.v2.core;
Expand Down Expand Up @@ -67,7 +65,7 @@ message Http2ProtocolOptions {
//
// NOTE: 65535 is the initial window size from HTTP/2 spec. We only support increasing the default
// window size now, so it's also the minimum.

//
// This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the
// HTTP/2 codec buffers. Once the buffer reaches this pointer, watermark callbacks will fire to
// stop the flow of data to the codec buffers.
Expand Down
8 changes: 4 additions & 4 deletions api/envoy/api/v2/lds.proto
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,10 @@ message Listener {
// bind can only receive connections redirected from other listeners that
// set use_original_dst parameter to true. Default is true.
//
// [V2-API-DIFF] This is deprecated in v2, all Listeners will bind to their
// port. An additional filter chain must be created for every original
// destination port this listener may redirect to in v2, with the original
// port specified in the FilterChainMatch destination_port field.
// This is deprecated in v2, all Listeners will bind to their port. An
// additional filter chain must be created for every original destination
// port this listener may redirect to in v2, with the original port
// specified in the FilterChainMatch destination_port field.
//
// [#comment:TODO(PiotrSikora): Remove this once verified that we no longer need it.]
google.protobuf.BoolValue bind_to_port = 1;
Expand Down
6 changes: 6 additions & 0 deletions api/envoy/api/v2/listener/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,9 @@ api_proto_library_internal(
"//envoy/api/v2/core:base",
],
)

api_proto_library_internal(
name = "quic_config",
srcs = ["quic_config.proto"],
visibility = ["//envoy/api/v2:friends"],
)
28 changes: 28 additions & 0 deletions api/envoy/api/v2/listener/quic_config.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
syntax = "proto3";

package envoy.api.v2.listener;

option java_outer_classname = "ListenerProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.api.v2.listener";
option csharp_namespace = "Envoy.Api.V2.ListenerNS";
option ruby_package = "Envoy::Api::V2::ListenerNS";

import "google/protobuf/duration.proto";
import "google/protobuf/wrappers.proto";

// Configuration specific to the QUIC protocol.
// Next id: 4
message QuicProtocolOptions {
// Maximum number of streams that the client can negotiate per connection. 100
// if not specified.
google.protobuf.UInt32Value max_concurrent_streams = 1;

// Maximum number of milliseconds that connection will be alive when there is
// no network activity. 300000ms if not specified.
google.protobuf.Duration idle_timeout = 2;

// Connection timeout in milliseconds before the crypto handshake is finished.
// 20000ms if not specified.
google.protobuf.Duration crypto_handshake_timeout = 3;
}
38 changes: 20 additions & 18 deletions api/envoy/api/v2/route/route.proto
Original file line number Diff line number Diff line change
Expand Up @@ -342,10 +342,10 @@ message RouteMatch {
//
// Examples:
//
// * The regex */b[io]t* matches the path */bit*
// * The regex */b[io]t* matches the path */bot*
// * The regex */b[io]t* does not match the path */bite*
// * The regex */b[io]t* does not match the path */bit/bot*
// * The regex ``/b[io]t`` matches the path */bit*
// * The regex ``/b[io]t`` matches the path */bot*
// * The regex ``/b[io]t`` does not match the path */bite*
// * The regex ``/b[io]t`` does not match the path */bit/bot*
//
// .. attention::
// This field has been deprecated in favor of `safe_regex` as it is not safe for use with
Expand Down Expand Up @@ -848,7 +848,7 @@ message RouteAction {
}

// HTTP retry :ref:`architecture overview <arch_overview_http_routing_retry>`.
// [#comment:next free field: 9]
// [#comment:next free field: 10]
message RetryPolicy {
// Specifies the conditions under which retry takes place. These are the same
// conditions documented for :ref:`config_http_filters_router_x-envoy-retry-on` and
Expand Down Expand Up @@ -933,6 +933,11 @@ message RetryPolicy {
// the base interval. The documentation for :ref:`config_http_filters_router_x-envoy-max-retries`
// describes Envoy's back-off algorithm.
RetryBackOff retry_back_off = 8;

// HTTP headers that trigger a retry if present in the response. A retry will be
// triggered if any of the header matches match the upstream response headers.
// The field is only consulted if 'retriable-headers' retry policy is active.
repeated HeaderMatcher retriable_headers = 9;
}

// HTTP request hedging :ref:`architecture overview <arch_overview_http_routing_hedging>`.
Expand Down Expand Up @@ -1097,9 +1102,9 @@ message VirtualCluster {
//
// Examples:
//
// * The regex */rides/\d+* matches the path */rides/0*
// * The regex */rides/\d+* matches the path */rides/123*
// * The regex */rides/\d+* does not match the path */rides/123/456*
// * The regex ``/rides/\d+`` matches the path */rides/0*
// * The regex ``/rides/\d+`` matches the path */rides/123*
// * The regex ``/rides/\d+`` does not match the path */rides/123/456*
//
// .. attention::
// This field has been deprecated in favor of `headers` as it is not safe for use with
Expand Down Expand Up @@ -1286,11 +1291,8 @@ message HeaderMatcher {
// Specifies the name of the header in the request.
string name = 1 [(validate.rules).string.min_bytes = 1];

reserved 2; // value deprecated by :ref:`exact_match
// <envoy_api_field_route.HeaderMatcher.exact_match>`

reserved 3; // regex deprecated by :ref:`regex_match
// <envoy_api_field_route.HeaderMatcher.regex_match>`
reserved 2;
reserved 3;

// Specifies how the header match will be performed to route the request.
oneof header_match_specifier {
Expand All @@ -1304,9 +1306,9 @@ message HeaderMatcher {
//
// Examples:
//
// * The regex *\d{3}* matches the value *123*
// * The regex *\d{3}* does not match the value *1234*
// * The regex *\d{3}* does not match the value *123.456*
// * The regex ``\d{3}`` matches the value *123*
// * The regex ``\d{3}`` does not match the value *1234*
// * The regex ``\d{3}`` does not match the value *123.456*
//
// .. attention::
// This field has been deprecated in favor of `safe_regex_match` as it is not safe for use
Expand Down Expand Up @@ -1356,7 +1358,7 @@ message HeaderMatcher {
//
// Examples:
//
// * The regex *\d{3}* does not match the value *1234*, so it will match when inverted.
// * The regex ``\d{3}`` does not match the value *1234*, so it will match when inverted.
// * The range [-10,0) will match the value -1, so it will not match when inverted.
bool invert_match = 8;
}
Expand All @@ -1379,7 +1381,7 @@ message QueryParameterMatcher {
// Specifies whether the query parameter value is a regular expression.
// Defaults to false. The entire query parameter value (i.e., the part to
// the right of the equals sign in "key=value") must match the regex.
// E.g., the regex "\d+$" will match "123" but not "a123" or "123a".
// E.g., the regex ``\d+$`` will match *123* but not *a123* or *123a*.
//
// ..attention::
// This field is deprecated. Use a `safe_regex` match inside the `string_match` field.
Expand Down
2 changes: 1 addition & 1 deletion api/envoy/api/v3alpha/auth/cert.proto
Original file line number Diff line number Diff line change
Expand Up @@ -386,7 +386,7 @@ message DownstreamTlsContext {
message SdsSecretConfig {
// Name (FQDN, UUID, SPKI, SHA256, etc.) by which the secret can be uniquely referred to.
// When both name and config are specified, then secret can be fetched and/or reloaded via SDS.
// When only name is specified, then secret will be loaded from static resources [V2-API-DIFF].
// When only name is specified, then secret will be loaded from static resources.
string name = 1;
core.ConfigSource sds_config = 2;
}
Expand Down
2 changes: 1 addition & 1 deletion api/envoy/api/v3alpha/core/protocol.proto
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ message Http2ProtocolOptions {
//
// NOTE: 65535 is the initial window size from HTTP/2 spec. We only support increasing the default
// window size now, so it's also the minimum.

//
// This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the
// HTTP/2 codec buffers. Once the buffer reaches this pointer, watermark callbacks will fire to
// stop the flow of data to the codec buffers.
Expand Down
Loading