Skip to content

Commit 4cc5c07

Browse files
authored
Migrate Controller Repo Usage From Store To Server (#5609)
* Create Server Domain Package For Controller * Resolve Comments
1 parent f43f6e2 commit 4cc5c07

File tree

10 files changed

+119
-187
lines changed

10 files changed

+119
-187
lines changed

internal/daemon/cluster/handlers/worker_service_status_test.go

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"github.com/hashicorp/boundary/internal/iam"
2323
"github.com/hashicorp/boundary/internal/kms"
2424
"github.com/hashicorp/boundary/internal/server"
25-
"github.com/hashicorp/boundary/internal/server/store"
2625
"github.com/hashicorp/boundary/internal/session"
2726
"github.com/hashicorp/boundary/internal/target"
2827
"github.com/hashicorp/boundary/internal/target/tcp"
@@ -49,10 +48,8 @@ func TestStatus(t *testing.T) {
4948

5049
serverRepo, err := server.NewRepository(ctx, rw, rw, kms)
5150
require.NoError(t, err)
52-
c := &store.Controller{
53-
PrivateId: "test_controller1",
54-
Address: "127.0.0.1",
55-
}
51+
52+
c := server.NewController("test_controller1", server.WithAddress("127.0.0.1"))
5653
_, err = serverRepo.UpsertController(ctx, c)
5754
require.NoError(t, err)
5855

@@ -483,10 +480,7 @@ func TestStatusSessionClosed(t *testing.T) {
483480

484481
serverRepo, err := server.NewRepository(ctx, rw, rw, kms)
485482
require.NoError(t, err)
486-
c := &store.Controller{
487-
PrivateId: "test_controller1",
488-
Address: "127.0.0.1",
489-
}
483+
c := server.NewController("test_controller1", server.WithAddress("127.0.0.1"))
490484
_, err = serverRepo.UpsertController(ctx, c)
491485
require.NoError(t, err)
492486

@@ -676,10 +670,7 @@ func TestStatusDeadConnection(t *testing.T) {
676670
serverRepo, err := server.NewRepository(ctx, rw, rw, kms)
677671
require.NoError(t, err)
678672

679-
c := &store.Controller{
680-
PrivateId: "test_controller1",
681-
Address: "127.0.0.1",
682-
}
673+
c := server.NewController("test_controller1", server.WithAddress("127.0.0.1"))
683674
_, err = serverRepo.UpsertController(ctx, c)
684675
require.NoError(t, err)
685676

@@ -831,10 +822,7 @@ func TestStatusWorkerWithKeyId(t *testing.T) {
831822
serverRepo, err := server.NewRepository(ctx, rw, rw, kms)
832823
require.NoError(t, err)
833824

834-
c := &store.Controller{
835-
PrivateId: "test_controller1",
836-
Address: "127.0.0.1",
837-
}
825+
c := server.NewController("test_controller1", server.WithAddress("127.0.0.1"))
838826
_, err = serverRepo.UpsertController(ctx, c)
839827
require.NoError(t, err)
840828

@@ -1034,10 +1022,7 @@ func TestStatusAuthorizedWorkers(t *testing.T) {
10341022
serverRepo, err := server.NewRepository(ctx, rw, rw, kmsCache)
10351023
require.NoError(t, err)
10361024

1037-
c := &store.Controller{
1038-
PrivateId: "test_controller1",
1039-
Address: "127.0.0.1",
1040-
}
1025+
c := server.NewController("test_controller1", server.WithAddress("127.0.0.1"))
10411026
_, err = serverRepo.UpsertController(ctx, c)
10421027
require.NoError(t, err)
10431028

@@ -1240,10 +1225,7 @@ func TestWorkerOperationalStatus(t *testing.T) {
12401225
serverRepo, err := server.NewRepository(ctx, rw, rw, kms)
12411226
require.NoError(t, err)
12421227

1243-
c := &store.Controller{
1244-
PrivateId: "test_controller1",
1245-
Address: "127.0.0.1",
1246-
}
1228+
c := server.NewController("test_controller1", server.WithAddress("127.0.0.1"))
12471229
_, err = serverRepo.UpsertController(ctx, c)
12481230
require.NoError(t, err)
12491231

@@ -1357,10 +1339,7 @@ func TestWorkerLocalStorageStateStatus(t *testing.T) {
13571339
serverRepo, err := server.NewRepository(ctx, rw, rw, kms)
13581340
require.NoError(t, err)
13591341

1360-
c := &store.Controller{
1361-
PrivateId: "test_controller1",
1362-
Address: "127.0.0.1",
1363-
}
1342+
c := server.NewController("test_controller1", server.WithAddress("127.0.0.1"))
13641343
_, err = serverRepo.UpsertController(ctx, c)
13651344
require.NoError(t, err)
13661345

internal/daemon/cluster/handlers/worker_service_test.go

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424
"github.com/hashicorp/boundary/internal/iam"
2525
"github.com/hashicorp/boundary/internal/kms"
2626
"github.com/hashicorp/boundary/internal/server"
27-
"github.com/hashicorp/boundary/internal/server/store"
2827
"github.com/hashicorp/boundary/internal/session"
2928
"github.com/hashicorp/boundary/internal/target"
3029
"github.com/hashicorp/boundary/internal/target/tcp"
@@ -1015,10 +1014,7 @@ func TestSessionInfo(t *testing.T) {
10151014

10161015
serverRepo, err := server.NewRepository(ctx, rw, rw, testKms)
10171016
require.NoError(err)
1018-
c := &store.Controller{
1019-
PrivateId: "test_controller1",
1020-
Address: "127.0.0.1",
1021-
}
1017+
c := server.NewController("test_controller1", server.WithAddress("127.0.0.1"))
10221018
_, err = serverRepo.UpsertController(ctx, c)
10231019
require.NoError(err)
10241020

@@ -1158,10 +1154,7 @@ func TestRoutingInfo(t *testing.T) {
11581154
_ = server.TestPkiWorker(t, conn, wrapper, server.WithTestPkiWorkerAuthorizedKeyId(&w2KeyId))
11591155
w3 := server.TestKmsWorker(t, conn, wrapper, server.WithName("testworker3"))
11601156

1161-
c := &store.Controller{
1162-
PrivateId: "test_controller1",
1163-
Address: "1.2.3.4",
1164-
}
1157+
c := server.NewController("test_controller1", server.WithAddress("1.2.3.4"))
11651158
_, err = serverRepo.UpsertController(ctx, c)
11661159
require.NoError(t, err)
11671160

internal/daemon/controller/tickers.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
"github.com/hashicorp/boundary/internal/daemon/cluster"
1313
"github.com/hashicorp/boundary/internal/errors"
1414
"github.com/hashicorp/boundary/internal/event"
15-
"github.com/hashicorp/boundary/internal/server/store"
15+
"github.com/hashicorp/boundary/internal/server"
1616
)
1717

1818
// In the future we could make this configurable
@@ -46,10 +46,15 @@ func (c *Controller) startStatusTicking(cancelCtx context.Context) {
4646

4747
func (c *Controller) upsertController(ctx context.Context) error {
4848
const op = "controller.(Controller).upsertController"
49-
controller := &store.Controller{
50-
PrivateId: c.conf.RawConfig.Controller.Name,
51-
Address: c.conf.RawConfig.Controller.PublicClusterAddr,
49+
var opts []server.Option
50+
if c.conf.RawConfig.Controller.Description != "" {
51+
opts = append(opts, server.WithDescription(c.conf.RawConfig.Controller.Description))
5252
}
53+
if c.conf.RawConfig.Controller.PublicClusterAddr != "" {
54+
opts = append(opts, server.WithAddress(c.conf.RawConfig.Controller.PublicClusterAddr))
55+
}
56+
57+
controller := server.NewController(c.conf.RawConfig.Controller.Name, opts...)
5358
repo, err := c.ServersRepoFn()
5459
if err != nil {
5560
return errors.Wrap(ctx, err, op, errors.WithMsg("error fetching repository for status upsert"))
@@ -65,10 +70,14 @@ func (c *Controller) upsertController(ctx context.Context) error {
6570

6671
func (c *Controller) updateController(ctx context.Context) error {
6772
const op = "controller.(Controller).updateController"
68-
controller := &store.Controller{
69-
PrivateId: c.conf.RawConfig.Controller.Name,
70-
Address: c.conf.RawConfig.Controller.PublicClusterAddr,
73+
var opts []server.Option
74+
if c.conf.RawConfig.Controller.Description != "" {
75+
opts = append(opts, server.WithDescription(c.conf.RawConfig.Controller.Description))
76+
}
77+
if c.conf.RawConfig.Controller.PublicClusterAddr != "" {
78+
opts = append(opts, server.WithAddress(c.conf.RawConfig.Controller.PublicClusterAddr))
7179
}
80+
controller := server.NewController(c.conf.RawConfig.Controller.Name, opts...)
7281
repo, err := c.ServersRepoFn()
7382
if err != nil {
7483
return errors.Wrap(ctx, err, op, errors.WithMsg("error fetching repository for status update"))

internal/scheduler/job/testing.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import (
99
"testing"
1010
"time"
1111

12-
"github.com/hashicorp/boundary/internal/server/store"
13-
1412
"github.com/hashicorp/boundary/internal/db"
1513
"github.com/hashicorp/boundary/internal/kms"
1614
"github.com/hashicorp/boundary/internal/server"
@@ -100,7 +98,7 @@ func testRunWithUpdateTime(conn *db.DB, pluginId, name, cId string, updateTime t
10098
return run, nil
10199
}
102100

103-
func testController(t *testing.T, conn *db.DB, wrapper wrapping.Wrapper, opt ...testOption) *store.Controller {
101+
func testController(t *testing.T, conn *db.DB, wrapper wrapping.Wrapper, opt ...testOption) *server.Controller {
104102
t.Helper()
105103
ctx := context.Background()
106104
rw := db.New(conn)
@@ -117,10 +115,7 @@ func testController(t *testing.T, conn *db.DB, wrapper wrapping.Wrapper, opt ...
117115
require.NoError(t, err)
118116
privateId = "test-job-server-" + id
119117
}
120-
controller := &store.Controller{
121-
PrivateId: privateId,
122-
Address: "127.0.0.1",
123-
}
118+
controller := server.NewController(privateId, server.WithAddress("127.0.0.1"))
124119
_, err = serversRepo.UpsertController(ctx, controller)
125120
require.NoError(t, err)
126121
return controller

internal/scheduler/testing.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@ package scheduler
55

66
import (
77
"context"
8+
"fmt"
89
"sync"
910
"testing"
1011
"time"
1112

12-
"github.com/hashicorp/boundary/internal/server/store"
13-
1413
"github.com/hashicorp/boundary/internal/db"
1514
"github.com/hashicorp/boundary/internal/iam"
1615
"github.com/hashicorp/boundary/internal/kms"
@@ -38,10 +37,8 @@ func TestScheduler(t testing.TB, conn *db.DB, wrapper wrapping.Wrapper, opt ...O
3837

3938
id, err := uuid.GenerateUUID()
4039
require.NoError(t, err)
41-
controller := &store.Controller{
42-
PrivateId: "test-job-server-" + id,
43-
Address: "127.0.0.1",
44-
}
40+
41+
controller := server.NewController(fmt.Sprintf("test-server-job%s", id), server.WithAddress("127.0.0.1"))
4542
_, err = serversRepo.UpsertController(ctx, controller)
4643
require.NoError(t, err)
4744

internal/server/controller.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Copyright (c) HashiCorp, Inc.
2+
// SPDX-License-Identifier: BUSL-1.1
3+
4+
package server
5+
6+
import "github.com/hashicorp/boundary/internal/server/store"
7+
8+
// Controller is a server that is responsible for understanding configuration,
9+
// authenticating and authorizing users, and serving user API requests (e.g. to
10+
// initiate a session). They also assign tasks to workers (session handling,
11+
// session recording parsing, etc.).
12+
type Controller struct {
13+
*store.Controller
14+
}
15+
16+
// NewController returns a new controller. Valid options are WithAddress and WithDescription.
17+
// All other options are ignored.
18+
func NewController(privateId string, opt ...Option) *Controller {
19+
opts := GetOpts(opt...)
20+
controller := &Controller{
21+
Controller: &store.Controller{
22+
PrivateId: privateId,
23+
Address: opts.withAddress,
24+
Description: opts.withDescription,
25+
},
26+
}
27+
28+
return controller
29+
}

internal/server/repository_controller.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,16 @@ import (
99

1010
"github.com/hashicorp/boundary/internal/db"
1111
"github.com/hashicorp/boundary/internal/errors"
12-
"github.com/hashicorp/boundary/internal/server/store"
1312
)
1413

15-
func (r *Repository) ListControllers(ctx context.Context, opt ...Option) ([]*store.Controller, error) {
14+
func (r *Repository) ListControllers(ctx context.Context, opt ...Option) ([]*Controller, error) {
1615
return r.listControllersWithReader(ctx, r.reader, opt...)
1716
}
1817

1918
// listControllersWithReader will return a listing of resources and honor the
2019
// WithLimit option or the repo defaultLimit. It accepts a reader, allowing it
2120
// to be used within a transaction or without.
22-
func (r *Repository) listControllersWithReader(ctx context.Context, reader db.Reader, opt ...Option) ([]*store.Controller, error) {
21+
func (r *Repository) listControllersWithReader(ctx context.Context, reader db.Reader, opt ...Option) ([]*Controller, error) {
2322
opts := GetOpts(opt...)
2423
liveness := opts.withLiveness
2524
if liveness == 0 {
@@ -31,7 +30,7 @@ func (r *Repository) listControllersWithReader(ctx context.Context, reader db.Re
3130
where = fmt.Sprintf("update_time > now() - interval '%d seconds'", uint32(liveness.Seconds()))
3231
}
3332

34-
var controllers []*store.Controller
33+
var controllers []*Controller
3534
if err := reader.SearchWhere(
3635
ctx,
3736
&controllers,
@@ -45,7 +44,7 @@ func (r *Repository) listControllersWithReader(ctx context.Context, reader db.Re
4544
return controllers, nil
4645
}
4746

48-
func (r *Repository) UpsertController(ctx context.Context, controller *store.Controller) (int, error) {
47+
func (r *Repository) UpsertController(ctx context.Context, controller *Controller) (int, error) {
4948
const op = "server.(Repository).UpsertController"
5049

5150
if controller == nil {
@@ -78,7 +77,7 @@ func (r *Repository) UpsertController(ctx context.Context, controller *store.Con
7877
return int(rowsUpdated), nil
7978
}
8079

81-
func (r *Repository) UpdateController(ctx context.Context, controller *store.Controller) (int, error) {
80+
func (r *Repository) UpdateController(ctx context.Context, controller *Controller) (int, error) {
8281
const op = "server.(Repository).UpdateController"
8382

8483
if controller == nil {

0 commit comments

Comments
 (0)