Implement entity change events. Fixes openziti/fabric#562

This commit is contained in:
Paul Lorenz
2023-04-06 23:43:33 -04:00
parent 9beb13c0e0
commit 23110fccb2
21 changed files with 637 additions and 60 deletions
+6 -4
View File
@@ -17,7 +17,6 @@
package handler_ctrl
import (
"fmt"
"github.com/openziti/channel/v2"
"github.com/openziti/fabric/controller/change"
"github.com/openziti/fabric/controller/network"
@@ -28,10 +27,13 @@ type baseHandler struct {
network *network.Network
}
func (self *baseHandler) newChangeContext(ch channel.Channel) *change.Context {
func (self *baseHandler) newChangeContext(ch channel.Channel, method string) *change.Context {
return change.New().
SetChangeAuthorId(self.router.Id).
SetChangeAuthorName(self.router.Name).
SetChangeAuthorType("router").
SetSource(fmt.Sprintf("ctrl[%v]", ch.Underlay().GetRemoteAddr().String()))
SetChangeAuthorType(change.AuthorTypeRouter).
SetSourceType(change.SourceTypeControlChannel).
SetSourceMethod(method).
SetSourceLocal(ch.Underlay().GetLocalAddr().String()).
SetSourceRemote(ch.Underlay().GetRemoteAddr().String())
}
+1 -1
View File
@@ -72,7 +72,7 @@ func (self *createTerminatorHandler) handleCreateTerminator(msg *channel.Message
Cost: uint16(request.Cost),
}
if err := self.network.Terminators.Create(terminator, self.newChangeContext(ch)); err == nil {
if err := self.network.Terminators.Create(terminator, self.newChangeContext(ch, "fabric.create.terminator")); err == nil {
pfxlog.Logger().Infof("created terminator [t/%s]", terminator.Id)
handler_common.SendSuccess(msg, ch, terminator.Id)
} else {
+1 -1
View File
@@ -63,7 +63,7 @@ func (self *removeTerminatorHandler) handleRemoveTerminator(msg *channel.Message
return
}
if err := self.network.Terminators.Delete(request.TerminatorId, self.newChangeContext(ch)); err == nil {
if err := self.network.Terminators.Delete(request.TerminatorId, self.newChangeContext(ch, "fabric.remove.terminator")); err == nil {
log.
WithField("routerId", ch.Id()).
WithField("serviceId", terminator.Service).
@@ -57,7 +57,7 @@ func (self *removeTerminatorsHandler) HandleReceive(msg *channel.Message, ch cha
func (self *removeTerminatorsHandler) handleRemoveTerminators(msg *channel.Message, ch channel.Channel, request *ctrl_pb.RemoveTerminatorsRequest) {
log := pfxlog.ContextLogger(ch.Label())
if err := self.network.Terminators.DeleteBatch(request.TerminatorIds, self.newChangeContext(ch)); err == nil {
if err := self.network.Terminators.DeleteBatch(request.TerminatorIds, self.newChangeContext(ch, "fabric.remove.terminators.batch")); err == nil {
log.
WithField("routerId", ch.Id()).
WithField("terminatorIds", request.TerminatorIds).
+1 -1
View File
@@ -97,7 +97,7 @@ func (self *updateTerminatorHandler) handleUpdateTerminator(msg *channel.Message
checker[db.FieldTerminatorPrecedence] = struct{}{}
}
if err := self.network.Terminators.Update(terminator, checker, self.newChangeContext(ch)); err != nil {
if err := self.network.Terminators.Update(terminator, checker, self.newChangeContext(ch, "fabric.update.terminator")); err != nil {
handler_common.SendFailure(msg, ch, err.Error())
return
}