mirror of https://github.com/status-im/consul.git
api: add `CheckRegisterOpts` method to Agent API (#18943)
Ongoing work to support Nomad Workload Identity for authenticating with Consul will mean that Nomad's service registration sync with Consul will want to use Consul tokens scoped to individual workloads for registering services and checks. The `CheckRegister` method in the API doesn't have an option to pass the token in, which prevent us from sharing the same Consul connection for all workloads. Add a `CheckRegisterOpts` to match the behavior of `ServiceRegisterOpts`.
This commit is contained in:
parent
aedc03b7ae
commit
e5f5fc9301
|
@ -0,0 +1,3 @@
|
||||||
|
```release-note:improvement
|
||||||
|
api: added `CheckRegisterOpts` to Agent API
|
||||||
|
```
|
|
@ -998,7 +998,14 @@ func (a *Agent) UpdateTTLOpts(checkID, output, status string, q *QueryOptions) e
|
||||||
// CheckRegister is used to register a new check with
|
// CheckRegister is used to register a new check with
|
||||||
// the local agent
|
// the local agent
|
||||||
func (a *Agent) CheckRegister(check *AgentCheckRegistration) error {
|
func (a *Agent) CheckRegister(check *AgentCheckRegistration) error {
|
||||||
|
return a.CheckRegisterOpts(check, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckRegisterOpts is used to register a new check with
|
||||||
|
// the local agent using query options
|
||||||
|
func (a *Agent) CheckRegisterOpts(check *AgentCheckRegistration, q *QueryOptions) error {
|
||||||
r := a.c.newRequest("PUT", "/v1/agent/check/register")
|
r := a.c.newRequest("PUT", "/v1/agent/check/register")
|
||||||
|
r.setQueryOptions(q)
|
||||||
r.obj = check
|
r.obj = check
|
||||||
_, resp, err := a.c.doRequest(r)
|
_, resp, err := a.c.doRequest(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -1073,7 +1073,7 @@ func TestAPI_AgentChecks(t *testing.T) {
|
||||||
Name: "foo",
|
Name: "foo",
|
||||||
}
|
}
|
||||||
reg.TTL = "15s"
|
reg.TTL = "15s"
|
||||||
if err := agent.CheckRegister(reg); err != nil {
|
if err := agent.CheckRegisterOpts(reg, nil); err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1097,6 +1097,19 @@ func TestAPI_AgentChecks(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAgent_AgentChecksRegisterOpts_WithContextTimeout(t *testing.T) {
|
||||||
|
c, err := NewClient(DefaultConfig())
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), time.Nanosecond)
|
||||||
|
t.Cleanup(cancel)
|
||||||
|
|
||||||
|
opts := &QueryOptions{}
|
||||||
|
opts = opts.WithContext(ctx)
|
||||||
|
err = c.Agent().CheckRegisterOpts(&AgentCheckRegistration{}, opts)
|
||||||
|
require.True(t, errors.Is(err, context.DeadlineExceeded), "expected timeout")
|
||||||
|
}
|
||||||
|
|
||||||
func TestAPI_AgentChecksWithFilterOpts(t *testing.T) {
|
func TestAPI_AgentChecksWithFilterOpts(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
c, s := makeClient(t)
|
c, s := makeClient(t)
|
||||||
|
|
Loading…
Reference in New Issue