44 lines
980 B
Go
44 lines
980 B
Go
package consul
|
|
|
|
import (
|
|
"github.com/hashicorp/consul/agent/structs"
|
|
)
|
|
|
|
// Test is an RPC endpoint that is only available during `go test` when
|
|
// `TestEndpoint` is called. This is not and must not ever be available
|
|
// during a real running Consul agent, since it this endpoint bypasses
|
|
// critical ACL checks.
|
|
type Test struct {
|
|
// srv is a pointer back to the server.
|
|
srv *Server
|
|
}
|
|
|
|
// ConnectCASetRoots sets the current CA roots state.
|
|
func (s *Test) ConnectCASetRoots(
|
|
args []*structs.CARoot,
|
|
reply *interface{}) error {
|
|
|
|
// Get the highest index
|
|
state := s.srv.fsm.State()
|
|
idx, _, err := state.CARoots(nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Commit
|
|
resp, err := s.srv.raftApply(structs.ConnectCARequestType, &structs.CARequest{
|
|
Op: structs.CAOpSetRoots,
|
|
Index: idx,
|
|
Roots: args,
|
|
})
|
|
if err != nil {
|
|
s.srv.logger.Printf("[ERR] consul.test: Apply failed %v", err)
|
|
return err
|
|
}
|
|
if respErr, ok := resp.(error); ok {
|
|
return respErr
|
|
}
|
|
|
|
return nil
|
|
}
|