CE port of enterprise extension (#18572)

CE commit
This commit is contained in:
Chris S. Kim 2023-08-24 11:43:26 -04:00 committed by GitHub
parent 2cc2c6b88d
commit 82993fcc4f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 10 deletions

View File

@ -32,12 +32,14 @@ var extensionConstructors = map[string]extensionConstructor{
// given config. Returns an error if the extension does not exist, or if the extension fails
// to be constructed properly.
func ConstructExtension(ext api.EnvoyExtension) (extensioncommon.EnvoyExtender, error) {
constructor, ok := extensionConstructors[ext.Name]
if !ok {
return nil, fmt.Errorf("name %q is not a built-in extension", ext.Name)
}
if constructor, ok := extensionConstructors[ext.Name]; ok {
return constructor(ext)
}
if constructor, ok := enterpriseExtensionConstructors[ext.Name]; ok {
return constructor(ext)
}
return nil, fmt.Errorf("name %q is not a built-in extension", ext.Name)
}
// ValidateExtensions will attempt to construct each instance of the given envoy extension configurations
// and returns an error if any fail to build. Note that this step is separated from the xds package and

View File

@ -0,0 +1,8 @@
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
//go:build !consulent
package envoyextensions
var enterpriseExtensionConstructors = map[string]extensionConstructor{}

View File

@ -411,8 +411,8 @@ func getSNI(chain *envoy_listener_v3.FilterChain) string {
}
// GetHTTPConnectionManager returns the Envoy HttpConnectionManager filter from the list of network filters.
// It also returns the index within the list of filters where the connection manager was found in case the caller
// needs this information.
// It also returns the index within the list of filters where the connection manager was found in case the
// caller needs to overwrite the original filter.
// It returns a non-nil error if the HttpConnectionManager is not found.
func GetHTTPConnectionManager(filters ...*envoy_listener_v3.Filter) (*envoy_http_v3.HttpConnectionManager, int, error) {
for idx, filter := range filters {
@ -491,9 +491,11 @@ func InsertHTTPFilter(filters []*envoy_listener_v3.Filter, filter *envoy_http_v3
if err != nil {
return filters, errors.New("failed to insert new HTTP connection manager filter")
}
filters[idx] = newHttpConMan
filtersCopy := make([]*envoy_listener_v3.Filter, len(filters))
copy(filtersCopy, filters)
filtersCopy[idx] = newHttpConMan
return filters, nil
return filtersCopy, nil
}
// InsertNetworkFilter inserts the given network filter into the filter chain in the location

View File

@ -13,12 +13,12 @@ type TestingT interface {
Fatalf(string, ...any)
}
func AssertDeepEqual(t TestingT, x, y interface{}, opts ...cmp.Option) {
func AssertDeepEqual(t TestingT, exp, got interface{}, opts ...cmp.Option) {
t.Helper()
opts = append(opts, protocmp.Transform())
if diff := cmp.Diff(x, y, opts...); diff != "" {
if diff := cmp.Diff(exp, got, opts...); diff != "" {
t.Fatalf("assertion failed: values are not equal\n--- expected\n+++ actual\n%v", diff)
}
}