Skip to content

Commit

Permalink
Merge branch 'main' into NET-2029/update-status-condition-for-listeners
Browse files Browse the repository at this point in the history
  • Loading branch information
jm96441n authored Apr 25, 2023
2 parents 538d8fc + 9e35c47 commit 91bfab3
Show file tree
Hide file tree
Showing 22 changed files with 550 additions and 65 deletions.
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3321,12 +3321,12 @@ BUG FIXES:
* snapshot: Fixed a bug where node metadata wasn't being included in or restored from the snapshots. [[GH-4524](https://github.com/hashicorp/consul/issues/4524)]
* connect: Fixed a bug where managed proxy instances registered for instances with different name and ID and with restrictive ACL would not be allowed. [[GH-4619](https://github.com/hashicorp/consul/issues/4619)]
* connect: Fixed a bug where built-in CA state was not correctly restored from a snapshot [[GH-4535](https://github.com/hashicorp/consul/pull/4535)]
* connect: Fixed a bug where Checks with `deregister_critical_service_after` would deregister the service but not remove the managed proxy [[GH-4649](github.com/hashicorp/consul/pull/4649)]
* connect: Fixed a bug where Checks with `deregister_critical_service_after` would deregister the service but not remove the managed proxy [[GH-4649](https://github.com/hashicorp/consul/issues/4649)]
* connect: Fixed a bug that would output an error about pruning CAs every hour on the leader and might cause some CA configurations not to be pruned correctly [[GH-4669](https://github.com/hashicorp/consul/pull/4669)]
* raft: Update raft vendoring to pull in a fix for a potential memory leak. [[GH-4539](https://github.com/hashicorp/consul/pull/4539)]
* license: (Consul Enterprise) Fix an issue with the license not being reloaded from snapshots.
* license: (Consul Enterprise) Fix an issue with encoding/decoding of the license package type from the /v1/operator/license endpoint.
* cli: Correctly exit with error code 1 when failing to list DCs with the catalog command [[GH-4583]]
* cli: Correctly exit with error code 1 when failing to list DCs with the catalog command [[GH-4583]](https://github.com/hashicorp/consul/pull/4583)
* ui: Improve layout on screens of a large portrait orientation [[GH-4564]](https://github.com/hashicorp/consul/pull/4564)
* ui: Various browser layout bugs for various vendors/setups [[GH-4608]](https://github.com/hashicorp/consul/pull/4608) [[GH-4613]](https://github.com/hashicorp/consul/pull/4613) [[GH-4615]](https://github.com/hashicorp/consul/pull/4615)

Expand Down
11 changes: 10 additions & 1 deletion agent/consul/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ import (
"github.com/hashicorp/consul/agent/rpc/peering"
"github.com/hashicorp/consul/agent/structs"
"github.com/hashicorp/consul/agent/token"
"github.com/hashicorp/consul/internal/controller"
"github.com/hashicorp/consul/internal/resource"
"github.com/hashicorp/consul/internal/resource/demo"
raftstorage "github.com/hashicorp/consul/internal/storage/raft"
Expand Down Expand Up @@ -435,6 +436,10 @@ type Server struct {
// with the Resource Service in-process (i.e. not via the network) without auth.
// It should only be used for purely-internal workloads, such as controllers.
internalResourceServiceClient pbresource.ResourceServiceClient

// controllerManager schedules the execution of controllers.
controllerManager *controller.Manager

// handles metrics reporting to HashiCorp
reportingManager *reporting.ReportingManager
}
Expand Down Expand Up @@ -500,6 +505,7 @@ func NewServer(config *Config, flat Deps, externalGRPCServer *grpc.Server, incom
incomingRPCLimiter: incomingRPCLimiter,
routineManager: routine.NewManager(logger.Named(logging.ConsulServer)),
typeRegistry: resource.NewRegistry(),
controllerManager: controller.NewManager(logger.Named(logging.ControllerRuntime)),
}
incomingRPCLimiter.Register(s)

Expand Down Expand Up @@ -824,8 +830,10 @@ func NewServer(config *Config, flat Deps, externalGRPCServer *grpc.Server, incom
}

if s.config.DevMode {
demo.Register(s.typeRegistry)
demo.RegisterTypes(s.typeRegistry)
demo.RegisterControllers(s.controllerManager)
}
go s.controllerManager.Run(&lib.StopChannelContext{StopCh: shutdownCh})

return s, nil
}
Expand Down Expand Up @@ -1951,6 +1959,7 @@ func (s *Server) trackLeaderChanges() {
s.grpcLeaderForwarder.UpdateLeaderAddr(s.config.Datacenter, string(leaderObs.LeaderAddr))
s.peeringBackend.SetLeaderAddress(string(leaderObs.LeaderAddr))
s.raftStorageBackend.LeaderChanged()
s.controllerManager.SetRaftLeader(s.IsLeader())

// Trigger sending an update to HCP status
s.hcpManager.SendUpdate()
Expand Down
11 changes: 5 additions & 6 deletions agent/grpc-external/services/resource/delete_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func TestDelete_InputValidation(t *testing.T) {
server := testServer(t)
client := testClient(t, server)

demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)

testCases := map[string]func(*pbresource.DeleteRequest){
"no id": func(req *pbresource.DeleteRequest) { req.Id = nil },
Expand Down Expand Up @@ -101,7 +101,7 @@ func TestDelete_ACLs(t *testing.T) {
mockACLResolver.On("ResolveTokenAndDefaultMeta", mock.Anything, mock.Anything, mock.Anything).
Return(tc.authz, nil)
server.ACLResolver = mockACLResolver
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)

artist, err := demo.GenerateV2Artist()
require.NoError(t, err)
Expand All @@ -122,8 +122,7 @@ func TestDelete_Success(t *testing.T) {
for desc, tc := range deleteTestCases() {
t.Run(desc, func(t *testing.T) {
server, client, ctx := testDeps(t)
demo.Register(server.Registry)

demo.RegisterTypes(server.Registry)
artist, err := demo.GenerateV2Artist()
require.NoError(t, err)

Expand All @@ -150,7 +149,7 @@ func TestDelete_NotFound(t *testing.T) {
for desc, tc := range deleteTestCases() {
t.Run(desc, func(t *testing.T) {
server, client, ctx := testDeps(t)
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)
artist, err := demo.GenerateV2Artist()
require.NoError(t, err)

Expand All @@ -165,7 +164,7 @@ func TestDelete_VersionMismatch(t *testing.T) {
t.Parallel()

server, client, ctx := testDeps(t)
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)
artist, err := demo.GenerateV2Artist()
require.NoError(t, err)
rsp, err := client.Write(ctx, &pbresource.WriteRequest{Resource: artist})
Expand Down
16 changes: 8 additions & 8 deletions agent/grpc-external/services/resource/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func TestList_Empty(t *testing.T) {
for desc, tc := range listTestCases() {
t.Run(desc, func(t *testing.T) {
server := testServer(t)
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)
client := testClient(t, server)

rsp, err := client.List(tc.ctx, &pbresource.ListRequest{
Expand All @@ -58,7 +58,7 @@ func TestList_Many(t *testing.T) {
for desc, tc := range listTestCases() {
t.Run(desc, func(t *testing.T) {
server := testServer(t)
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)
client := testClient(t, server)

resources := make([]*pbresource.Resource, 10)
Expand Down Expand Up @@ -89,7 +89,7 @@ func TestList_GroupVersionMismatch(t *testing.T) {
for desc, tc := range listTestCases() {
t.Run(desc, func(t *testing.T) {
server := testServer(t)
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)
client := testClient(t, server)

artist, err := demo.GenerateV2Artist()
Expand All @@ -116,7 +116,7 @@ func TestList_VerifyReadConsistencyArg(t *testing.T) {
mockBackend := NewMockBackend(t)
server := testServer(t)
server.Backend = mockBackend
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)

artist, err := demo.GenerateV2Artist()
require.NoError(t, err)
Expand All @@ -133,7 +133,7 @@ func TestList_VerifyReadConsistencyArg(t *testing.T) {
}
}

// N.B. Uses key ACLs for now. See demo.Register()
// N.B. Uses key ACLs for now. See demo.RegisterTypes()
func TestList_ACL_ListDenied(t *testing.T) {
t.Parallel()

Expand All @@ -146,7 +146,7 @@ func TestList_ACL_ListDenied(t *testing.T) {
require.Contains(t, err.Error(), "lacks permission 'key:list'")
}

// N.B. Uses key ACLs for now. See demo.Register()
// N.B. Uses key ACLs for now. See demo.RegisterTypes()
func TestList_ACL_ListAllowed_ReadDenied(t *testing.T) {
t.Parallel()

Expand All @@ -160,7 +160,7 @@ func TestList_ACL_ListAllowed_ReadDenied(t *testing.T) {
require.Empty(t, rsp.Resources)
}

// N.B. Uses key ACLs for now. See demo.Register()
// N.B. Uses key ACLs for now. See demo.RegisterTypes()
func TestList_ACL_ListAllowed_ReadAllowed(t *testing.T) {
t.Parallel()

Expand All @@ -184,7 +184,7 @@ func roundTripList(t *testing.T, authz acl.Authorizer) (*pbresource.Resource, *p
mockACLResolver.On("ResolveTokenAndDefaultMeta", mock.Anything, mock.Anything, mock.Anything).
Return(authz, nil)
server.ACLResolver = mockACLResolver
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)

artist, err := demo.GenerateV2Artist()
require.NoError(t, err)
Expand Down
14 changes: 7 additions & 7 deletions agent/grpc-external/services/resource/read_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ func TestRead_InputValidation(t *testing.T) {
server := testServer(t)
client := testClient(t, server)

demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)

testCases := map[string]func(*pbresource.ReadRequest){
"no id": func(req *pbresource.ReadRequest) { req.Id = nil },
Expand Down Expand Up @@ -79,7 +79,7 @@ func TestRead_ResourceNotFound(t *testing.T) {
t.Run(desc, func(t *testing.T) {
server := testServer(t)

demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)
client := testClient(t, server)

artist, err := demo.GenerateV2Artist()
Expand All @@ -98,7 +98,7 @@ func TestRead_GroupVersionMismatch(t *testing.T) {
t.Run(desc, func(t *testing.T) {
server := testServer(t)

demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)
client := testClient(t, server)

artist, err := demo.GenerateV2Artist()
Expand All @@ -123,7 +123,7 @@ func TestRead_Success(t *testing.T) {
t.Run(desc, func(t *testing.T) {
server := testServer(t)

demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)
client := testClient(t, server)

artist, err := demo.GenerateV2Artist()
Expand All @@ -146,7 +146,7 @@ func TestRead_VerifyReadConsistencyArg(t *testing.T) {
server := testServer(t)
mockBackend := NewMockBackend(t)
server.Backend = mockBackend
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)

artist, err := demo.GenerateV2Artist()
require.NoError(t, err)
Expand All @@ -162,7 +162,7 @@ func TestRead_VerifyReadConsistencyArg(t *testing.T) {
}
}

// N.B. Uses key ACLs for now. See demo.Register()
// N.B. Uses key ACLs for now. See demo.RegisterTypes()
func TestRead_ACLs(t *testing.T) {
type testCase struct {
authz resolver.Result
Expand All @@ -188,7 +188,7 @@ func TestRead_ACLs(t *testing.T) {
mockACLResolver.On("ResolveTokenAndDefaultMeta", mock.Anything, mock.Anything, mock.Anything).
Return(tc.authz, nil)
server.ACLResolver = mockACLResolver
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)

artist, err := demo.GenerateV2Artist()
require.NoError(t, err)
Expand Down
12 changes: 6 additions & 6 deletions agent/grpc-external/services/resource/watch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func TestWatchList_GroupVersionMatches(t *testing.T) {

server := testServer(t)
client := testClient(t, server)
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)
ctx := context.Background()

// create a watch
Expand Down Expand Up @@ -90,7 +90,7 @@ func TestWatchList_GroupVersionMismatch(t *testing.T) {
t.Parallel()

server := testServer(t)
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)
client := testClient(t, server)
ctx := context.Background()

Expand Down Expand Up @@ -123,7 +123,7 @@ func TestWatchList_GroupVersionMismatch(t *testing.T) {
mustGetNoResource(t, rspCh)
}

// N.B. Uses key ACLs for now. See demo.Register()
// N.B. Uses key ACLs for now. See demo.RegisterTypes()
func TestWatchList_ACL_ListDenied(t *testing.T) {
t.Parallel()

Expand All @@ -137,7 +137,7 @@ func TestWatchList_ACL_ListDenied(t *testing.T) {
require.Contains(t, err.Error(), "lacks permission 'key:list'")
}

// N.B. Uses key ACLs for now. See demo.Register()
// N.B. Uses key ACLs for now. See demo.RegisterTypes()
func TestWatchList_ACL_ListAllowed_ReadDenied(t *testing.T) {
t.Parallel()

Expand All @@ -152,7 +152,7 @@ func TestWatchList_ACL_ListAllowed_ReadDenied(t *testing.T) {
mustGetNoResource(t, rspCh)
}

// N.B. Uses key ACLs for now. See demo.Register()
// N.B. Uses key ACLs for now. See demo.RegisterTypes()
func TestWatchList_ACL_ListAllowed_ReadAllowed(t *testing.T) {
t.Parallel()

Expand All @@ -177,7 +177,7 @@ func roundTripACL(t *testing.T, authz acl.Authorizer) (<-chan resourceOrError, *
mockACLResolver.On("ResolveTokenAndDefaultMeta", mock.Anything, mock.Anything, mock.Anything).
Return(authz, nil)
server.ACLResolver = mockACLResolver
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)

artist, err := demo.GenerateV2Artist()
require.NoError(t, err)
Expand Down
12 changes: 6 additions & 6 deletions agent/grpc-external/services/resource/write_status_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ func TestWriteStatus_InputValidation(t *testing.T) {
server := testServer(t)
client := testClient(t, server)

demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)

testCases := map[string]func(*pbresource.WriteStatusRequest){
"no id": func(req *pbresource.WriteStatusRequest) { req.Id = nil },
Expand Down Expand Up @@ -113,7 +113,7 @@ func TestWriteStatus_Success(t *testing.T) {
server := testServer(t)
client := testClient(t, server)

demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)

res, err := demo.GenerateV2Artist()
require.NoError(t, err)
Expand Down Expand Up @@ -148,7 +148,7 @@ func TestWriteStatus_CASFailure(t *testing.T) {
server := testServer(t)
client := testClient(t, server)

demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)

res, err := demo.GenerateV2Artist()
require.NoError(t, err)
Expand Down Expand Up @@ -183,7 +183,7 @@ func TestWriteStatus_TypeNotFound(t *testing.T) {
func TestWriteStatus_ResourceNotFound(t *testing.T) {
server := testServer(t)
client := testClient(t, server)
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)

res, err := demo.GenerateV2Artist()
require.NoError(t, err)
Expand All @@ -198,7 +198,7 @@ func TestWriteStatus_ResourceNotFound(t *testing.T) {
func TestWriteStatus_WrongUid(t *testing.T) {
server := testServer(t)
client := testClient(t, server)
demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)

res, err := demo.GenerateV2Artist()
require.NoError(t, err)
Expand All @@ -219,7 +219,7 @@ func TestWriteStatus_NonCASUpdate_Retry(t *testing.T) {
server := testServer(t)
client := testClient(t, server)

demo.Register(server.Registry)
demo.RegisterTypes(server.Registry)

res, err := demo.GenerateV2Artist()
require.NoError(t, err)
Expand Down
Loading

0 comments on commit 91bfab3

Please sign in to comment.