diff --git a/acl/acl_ce.go b/acl/acl_ce.go index 7d2b8513b8..0d207ad421 100644 --- a/acl/acl_ce.go +++ b/acl/acl_ce.go @@ -8,12 +8,25 @@ package acl const ( WildcardPartitionName = "" DefaultPartitionName = "" -) + // NonEmptyDefaultPartitionName is the name of the default partition that is + // not empty. An example of this being supplied is when a partition is specified + // in the request for DNS by consul-dataplane. This has been added to support + // DNS v1.5, which needs to be compatible with the original DNS subsystem which + // supports partition being "default" or empty. Otherwise, use DefaultPartitionName. + NonEmptyDefaultPartitionName = "default" -// Reviewer Note: This is a little bit strange; one might want it to be "" like partition name -// However in consul/structs/intention.go we define IntentionDefaultNamespace as 'default' and so -// we use the same here -const DefaultNamespaceName = "default" + // DefaultNamespaceName is used to mimic the behavior in consul/structs/intention.go, + // where we define IntentionDefaultNamespace as 'default' and so we use the same here. + // This is a little bit strange; one might want it to be "" like DefaultPartitionName. + DefaultNamespaceName = "default" + + // EmptyNamespaceName is the name of the default partition that is an empty string. + // An example of this being supplied is when a namespace is specifiedDNS v1. + // EmptyNamespaceName has been added to support DNS v1.5, which needs to be + // compatible with the original DNS subsystem which supports partition being "default" or empty. + // Otherwise, use DefaultNamespaceName. + EmptyNamespaceName = "" +) type EnterpriseConfig struct { // no fields in CE diff --git a/agent/discovery/query_fetcher_v1.go b/agent/discovery/query_fetcher_v1.go index 1b39f020b5..da76d744dd 100644 --- a/agent/discovery/query_fetcher_v1.go +++ b/agent/discovery/query_fetcher_v1.go @@ -424,7 +424,6 @@ RPC: } func (f *V1DataFetcher) ValidateRequest(_ Context, req *QueryPayload) error { - f.logger.Debug(fmt.Sprintf("req %+v", req)) if req.EnableFailover { return ErrNotSupported } diff --git a/agent/discovery/query_fetcher_v1_ce.go b/agent/discovery/query_fetcher_v1_ce.go index 9ba772216d..06299704bd 100644 --- a/agent/discovery/query_fetcher_v1_ce.go +++ b/agent/discovery/query_fetcher_v1_ce.go @@ -7,7 +7,6 @@ package discovery import ( "github.com/hashicorp/consul/acl" - "github.com/hashicorp/consul/api" ) func (f *V1DataFetcher) NormalizeRequest(req *QueryPayload) { @@ -15,8 +14,12 @@ func (f *V1DataFetcher) NormalizeRequest(req *QueryPayload) { return } +// validateEnterpriseTenancy validates the tenancy fields for an enterprise request to +// make sure that they are either set to an empty string or "default" to align with the behavior +// in CE. func validateEnterpriseTenancy(req QueryTenancy) error { - if !(req.Namespace == "" || req.Namespace == acl.DefaultNamespaceName) || !(req.Partition == "" || req.Partition == api.PartitionDefaultName) { + if !(req.Namespace == acl.EmptyNamespaceName || req.Namespace == acl.DefaultNamespaceName) || + !(req.Partition == acl.DefaultPartitionName || req.Partition == acl.NonEmptyDefaultPartitionName) { return ErrNotSupported } return nil