37 lines
797 B
Go
37 lines
797 B
Go
|
package consul
|
||
|
|
||
|
import (
|
||
|
"github.com/hashicorp/consul/agent/consul/state"
|
||
|
"github.com/hashicorp/consul/agent/structs"
|
||
|
"github.com/hashicorp/go-memdb"
|
||
|
)
|
||
|
|
||
|
// Intention manages the Connect intentions.
|
||
|
type Intention struct {
|
||
|
// srv is a pointer back to the server.
|
||
|
srv *Server
|
||
|
}
|
||
|
|
||
|
func (s *Intention) List(
|
||
|
args *structs.DCSpecificRequest,
|
||
|
reply *structs.IndexedIntentions) error {
|
||
|
// Forward if necessary
|
||
|
if done, err := s.srv.forward("Intention.List", args, args, reply); done {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return s.srv.blockingQuery(
|
||
|
&args.QueryOptions, &reply.QueryMeta,
|
||
|
func(ws memdb.WatchSet, state *state.Store) error {
|
||
|
index, ixns, err := state.Intentions(ws)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
reply.Index, reply.Intentions = index, ixns
|
||
|
// filterACL
|
||
|
return nil
|
||
|
},
|
||
|
)
|
||
|
}
|