Add worker tagging (#862)

This allows workers to have tags assigned to them, which can then be filtered to control which targets they are allowed to serve.
This commit is contained in:
Jeff Mitchell authored and GitHub committed 2021-01-21 16:27:20 -05:00
1 parent 595a86508e
commit 717a3b52ee
54 files changed
+2150 -666

No files matched your search

@@ -8,12 +8,11 @@ import (
"github.com/hashicorp/boundary/internal/servers/controller"
"github.com/hashicorp/boundary/internal/servers/worker"
"github.com/hashicorp/go-hclog"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestMultiControllerMultiWorkerConnections(t *testing.T) {
assert, require := assert.New(t), require.New(t)
require := require.New(t)
amId := "ampw_1234567890"
user := "user"
password := "passpass"
@@ -38,29 +37,8 @@ func TestMultiControllerMultiWorkerConnections(t *testing.T) {
})
defer c2.Shutdown()
expectWorkers := func(c *controller.TestController, workers ...*worker.TestWorker) {
updateTimes := c.Controller().WorkerStatusUpdateTimes()
workerMap := map[string]*worker.TestWorker{}
for _, w := range workers {
workerMap[w.Name()] = w
}
updateTimes.Range(func(k, v interface{}) bool {
require.NotNil(k)
require.NotNil(v)
if workerMap[k.(string)] == nil {
// We don't remove from updateTimes currently so if we're not
// expecting it we'll see an out-of-date entry
return true
}
assert.WithinDuration(time.Now(), v.(time.Time), 30*time.Second)
delete(workerMap, k.(string))
return true
})
assert.Empty(workerMap)
}
expectWorkers(c1)
expectWorkers(c2)
expectWorkers(t, c1)
expectWorkers(t, c2)
w1 := worker.NewTestWorker(t, &worker.TestWorkerOpts{
WorkerAuthKms: c1.Config().WorkerAuthKms,
@@ -70,8 +48,8 @@ func TestMultiControllerMultiWorkerConnections(t *testing.T) {
defer w1.Shutdown()
time.Sleep(10 * time.Second)
expectWorkers(c1, w1)
expectWorkers(c2, w1)
expectWorkers(t, c1, w1)
expectWorkers(t, c2, w1)
w2 := w1.AddClusterWorkerMember(t, &worker.TestWorkerOpts{
Logger: logger.Named("w2"),
@@ -79,25 +57,25 @@ func TestMultiControllerMultiWorkerConnections(t *testing.T) {
defer w2.Shutdown()
time.Sleep(10 * time.Second)
expectWorkers(c1, w1, w2)
expectWorkers(c2, w1, w2)
expectWorkers(t, c1, w1, w2)
expectWorkers(t, c2, w1, w2)
require.NoError(w1.Worker().Shutdown(true))
time.Sleep(10 * time.Second)
expectWorkers(c1, w2)
expectWorkers(c2, w2)
expectWorkers(t, c1, w2)
expectWorkers(t, c2, w2)
require.NoError(w1.Worker().Start())
time.Sleep(10 * time.Second)
expectWorkers(c1, w1, w2)
expectWorkers(c2, w1, w2)
expectWorkers(t, c1, w1, w2)
expectWorkers(t, c2, w1, w2)
require.NoError(c1.Controller().Shutdown(true))
time.Sleep(10 * time.Second)
expectWorkers(c2, w1, w2)
expectWorkers(t, c2, w1, w2)
require.NoError(c1.Controller().Start())
time.Sleep(10 * time.Second)
expectWorkers(c1, w1, w2)
expectWorkers(c2, w1, w2)
expectWorkers(t, c1, w1, w2)
expectWorkers(t, c2, w1, w2)
}