Skip to content

Commit 6ad3afd

Browse files
committed
minimal impl
1 parent bce122b commit 6ad3afd

54 files changed

Lines changed: 1646 additions & 274 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

it/xds-client/src/test/java/com/linecorp/armeria/xds/it/CredentialInjectorFilterTest.java

Lines changed: 567 additions & 0 deletions
Large diffs are not rendered by default.

it/xds-istio/src/test/java/com/linecorp/armeria/it/xds/filter/IstioFilterFactories.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
import com.linecorp.armeria.client.HttpPreprocessor;
2323
import com.linecorp.armeria.common.annotation.Nullable;
24-
import com.linecorp.armeria.xds.XdsResourceValidator;
24+
import com.linecorp.armeria.xds.filter.FactoryContext;
2525
import com.linecorp.armeria.xds.filter.HttpFilterFactory;
2626
import com.linecorp.armeria.xds.filter.XdsHttpFilter;
2727
import com.linecorp.armeria.xds.internal.XdsCommonUtil;
@@ -40,7 +40,7 @@ public final class IstioFilterFactories {
4040
public abstract static class Base implements HttpFilterFactory {
4141
@Override
4242
@Nullable
43-
public XdsHttpFilter create(HttpFilter httpFilter, Any config, XdsResourceValidator validator) {
43+
public XdsHttpFilter create(HttpFilter httpFilter, Any config, FactoryContext context) {
4444
return null;
4545
}
4646
}
@@ -62,7 +62,7 @@ public String name() {
6262
}
6363

6464
@Override
65-
public XdsHttpFilter create(HttpFilter httpFilter, Any config, XdsResourceValidator validator) {
65+
public XdsHttpFilter create(HttpFilter httpFilter, Any config, FactoryContext context) {
6666
// we need to also generate istio proto configs to actually dynamically decide alpn
6767
// based on filter config, but for testing purposes we just assume h2 is always used
6868
return ALPN_FILTER;

xds-api/src/main/proto/envoy/config/core/v3/extension.proto

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package envoy.config.core.v3;
44

55
import "google/protobuf/any.proto";
66

7+
import "armeria/xds/supported.proto";
78
import "udpa/annotations/status.proto";
89
import "validate/validate.proto";
910

@@ -20,6 +21,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
2021
message TypedExtensionConfig {
2122
// The name of an extension. This is not used to select the extension, instead
2223
// it serves the role of an opaque identifier.
24+
option (armeria.xds.supported.field) = 1;
2325
string name = 1 [(validate.rules).string = {min_len: 1}];
2426

2527
// The typed config for the extension. The type URL will be used to identify
@@ -28,5 +30,6 @@ message TypedExtensionConfig {
2830
// URL of ``TypedStruct`` will be utilized. See the
2931
// :ref:`extension configuration overview
3032
// <config_overview_extension_configuration>` for further details.
33+
option (armeria.xds.supported.field) = 2;
3134
google.protobuf.Any typed_config = 2 [(validate.rules).any = {required: true}];
3235
}

xds-api/src/main/proto/envoy/extensions/filters/http/credential_injector/v3/credential_injector.proto

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package envoy.extensions.filters.http.credential_injector.v3;
44

55
import "envoy/config/core/v3/extension.proto";
66

7+
import "armeria/xds/supported.proto";
78
import "udpa/annotations/status.proto";
89
import "validate/validate.proto";
910

@@ -71,6 +72,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
7172
message CredentialInjector {
7273
// Whether to overwrite the value or not if the injected headers already exist.
7374
// Value defaults to false.
75+
option (armeria.xds.supported.field) = 1;
7476
bool overwrite = 1;
7577

7678
// Whether to send the request to upstream if the credential is not present or if the credential injection
@@ -79,9 +81,11 @@ message CredentialInjector {
7981
// By default, a request will fail with ``401 Unauthorized`` if the
8082
// credential is not present or the injection of the credential to the request fails.
8183
// If set to true, the request will be sent to upstream without the credential.
84+
option (armeria.xds.supported.field) = 2;
8285
bool allow_request_without_credential = 2;
8386

8487
// The credential to inject into the proxied requests
8588
// [#extension-category: envoy.http.injected_credentials]
89+
option (armeria.xds.supported.field) = 3;
8690
config.core.v3.TypedExtensionConfig credential = 3 [(validate.rules).message = {required: true}];
8791
}

xds-api/src/main/proto/envoy/extensions/http/injected_credentials/generic/v3/generic.proto

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package envoy.extensions.http.injected_credentials.generic.v3;
44

55
import "envoy/extensions/transport_sockets/tls/v3/secret.proto";
66

7+
import "armeria/xds/supported.proto";
78
import "udpa/annotations/status.proto";
89
import "validate/validate.proto";
910

@@ -24,11 +25,13 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
2425
message Generic {
2526
// The SDS configuration for the credential that will be injected to the specified HTTP request header.
2627
// It must be a generic secret.
28+
option (armeria.xds.supported.field) = 1;
2729
transport_sockets.tls.v3.SdsSecretConfig credential = 1
2830
[(validate.rules).message = {required: true}];
2931

3032
// The header that will be injected to the HTTP request with the provided credential.
3133
// If not set, filter will default to: ``Authorization``
34+
option (armeria.xds.supported.field) = 2;
3235
string header = 2
3336
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
3437
}

xds-api/src/main/proto/envoy/extensions/transport_sockets/tls/v3/secret.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ message GenericSecret {
2626

2727
// Secret of generic type and is available to filters. It is expected
2828
// that only only one of secret and secrets is set.
29+
option (armeria.xds.supported.field) = 1;
2930
config.core.v3.DataSource secret = 1 [(udpa.annotations.sensitive) = true];
3031

3132
// For cases where multiple associated secrets need to be distributed together. It is expected
@@ -63,6 +64,7 @@ message Secret {
6364
option (armeria.xds.supported.oneof_field) = 4;
6465
CertificateValidationContext validation_context = 4;
6566

67+
option (armeria.xds.supported.oneof_field) = 5;
6668
GenericSecret generic_secret = 5;
6769
}
6870
}

xds/src/main/java/com/linecorp/armeria/xds/CertificateValidationContextStream.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424

2525
import com.linecorp.armeria.common.util.Exceptions;
2626
import com.linecorp.armeria.internal.common.util.CertificateUtil;
27+
import com.linecorp.armeria.xds.stream.RefCountedStream;
28+
import com.linecorp.armeria.xds.stream.SnapshotStream;
29+
import com.linecorp.armeria.xds.stream.Subscription;
2730

2831
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CertificateValidationContext;
2932

xds/src/main/java/com/linecorp/armeria/xds/ClusterRoot.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import com.linecorp.armeria.common.annotation.Nullable;
2020
import com.linecorp.armeria.common.annotation.UnstableApi;
21-
import com.linecorp.armeria.xds.SnapshotStream.Subscription;
21+
import com.linecorp.armeria.xds.stream.Subscription;
2222

2323
import io.envoyproxy.envoy.config.cluster.v3.Cluster;
2424

xds/src/main/java/com/linecorp/armeria/xds/ClusterStream.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
import com.linecorp.armeria.common.annotation.Nullable;
2828
import com.linecorp.armeria.xds.client.endpoint.XdsLoadBalancer;
2929
import com.linecorp.armeria.xds.client.endpoint.XdsLoadBalancerFactory;
30+
import com.linecorp.armeria.xds.stream.RefCountedStream;
31+
import com.linecorp.armeria.xds.stream.SnapshotStream;
32+
import com.linecorp.armeria.xds.stream.Subscription;
3033

3134
import io.envoyproxy.envoy.config.cluster.v3.Cluster;
3235
import io.envoyproxy.envoy.config.cluster.v3.Cluster.EdsClusterConfig;

xds/src/main/java/com/linecorp/armeria/xds/DataSourceStream.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030
import com.linecorp.armeria.common.Cancellable;
3131
import com.linecorp.armeria.common.CommonPools;
3232
import com.linecorp.armeria.common.file.PathWatcher;
33+
import com.linecorp.armeria.xds.stream.RefCountedStream;
34+
import com.linecorp.armeria.xds.stream.SnapshotStream;
35+
import com.linecorp.armeria.xds.stream.Subscription;
3336

3437
import io.envoyproxy.envoy.config.core.v3.DataSource;
3538
import io.envoyproxy.envoy.config.core.v3.DataSource.SpecifierCase;

0 commit comments

Comments
 (0)