// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: BUSL-1.1 package dataplane import ( "github.com/hashicorp/consul/proto-public/pbresource" "google.golang.org/grpc" "github.com/hashicorp/go-hclog" "github.com/hashicorp/go-memdb" "github.com/hashicorp/consul/acl" "github.com/hashicorp/consul/acl/resolver" "github.com/hashicorp/consul/agent/configentry" "github.com/hashicorp/consul/agent/structs" "github.com/hashicorp/consul/proto-public/pbdataplane" ) type Server struct { Config } type Config struct { GetStore func() StateStore Logger hclog.Logger ACLResolver ACLResolver // Datacenter of the Consul server this gRPC server is hosted on Datacenter string // EnableV2 indicates whether a feature flag for v2 APIs is provided. EnableV2 bool ResourceAPIClient pbresource.ResourceServiceClient } type StateStore interface { ServiceNode(string, string, string, *acl.EnterpriseMeta, string) (uint64, *structs.ServiceNode, error) ReadResolvedServiceConfigEntries(memdb.WatchSet, string, *acl.EnterpriseMeta, []structs.ServiceID, structs.ProxyMode) (uint64, *configentry.ResolvedServiceConfigSet, error) } //go:generate mockery --name ACLResolver --inpackage type ACLResolver interface { ResolveTokenAndDefaultMeta(string, *acl.EnterpriseMeta, *acl.AuthorizerContext) (resolver.Result, error) } func NewServer(cfg Config) *Server { return &Server{cfg} } var _ pbdataplane.DataplaneServiceServer = (*Server)(nil) func (s *Server) Register(grpcServer *grpc.Server) { pbdataplane.RegisterDataplaneServiceServer(grpcServer, s) }