forked from vitessio/vitess
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com>
- Loading branch information
1 parent
80b472c
commit a4456a4
Showing
7 changed files
with
158 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
package eventer | ||
|
||
import ( | ||
"fmt" | ||
|
||
"github.com/spf13/pflag" | ||
|
||
"vitess.io/vitess/go/vt/events" | ||
"vitess.io/vitess/go/vt/log" | ||
"vitess.io/vitess/go/vt/servenv" | ||
) | ||
|
||
var eventerName string | ||
|
||
func RegisterFlags(fs *pflag.FlagSet) { | ||
fs.StringVar(&eventerName, "eventer", eventerName, "the eventer to be used to broadcast internal events") | ||
} | ||
|
||
type Eventer interface { | ||
DeleteTablet(ev *events.DeleteTabletEvent) | ||
EmergencyReparentShard(ev *events.EmergencyReparentShardEvent) | ||
PlannedReparentShard(ev *events.PlannedReparentShardEvent) | ||
} | ||
|
||
type NewEventer func() (Eventer, error) | ||
|
||
var eventers = make(map[string]NewEventer) | ||
|
||
func RegisterEventer(name string, eventerFunc NewEventer) { | ||
if eventers[name] != nil { | ||
log.Fatalf("eventer %v already registered", name) | ||
} | ||
eventers[name] = eventerFunc | ||
} | ||
|
||
func Get() (Eventer, error) { | ||
if eventerFunc, ok := eventers[eventerName]; ok { | ||
return eventerFunc() | ||
} | ||
return nil, fmt.Errorf("no eventer %v registered", eventerName) | ||
} | ||
|
||
func init() { | ||
servenv.OnParse(func(fs *pflag.FlagSet) { | ||
RegisterFlags(fs) | ||
}) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package eventer | ||
|
||
import ( | ||
"vitess.io/vitess/go/vt/events" | ||
"vitess.io/vitess/go/vt/log" | ||
) | ||
|
||
type LogEventer struct{} | ||
|
||
func NewLogEventer() (Eventer, error) { | ||
return &LogEventer{}, nil | ||
} | ||
|
||
func (le *LogEventer) DeleteTablet(ev *events.DeleteTabletEvent) { | ||
log.Infof("Received DeleteTabletEvent: %v", ev) | ||
} | ||
|
||
func (le *LogEventer) EmergencyReparentShard(ev *events.EmergencyReparentShardEvent) { | ||
log.Infof("Received EmergencyReparentShardEvent: %v", ev) | ||
} | ||
|
||
func (le *LogEventer) PlannedReparentShard(ev *events.PlannedReparentShardEvent) { | ||
log.Infof("Received PlannedReparentShardEvent: %v", ev) | ||
} | ||
|
||
func init() { | ||
RegisterEventer("log", NewLogEventer) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package events | ||
|
||
type SourceType string | ||
|
||
const ( | ||
SourceVtctld SourceType = "vtctld" | ||
SourceVtorc SourceType = "vtorc" | ||
) | ||
|
||
type Source struct { | ||
Type SourceType `json:"type"` | ||
Hostname string `json:"hostname"` | ||
} | ||
|
||
func NewSourceVtctld(hostname string) Source { | ||
return Source{ | ||
Type: SourceVtctld, | ||
Hostname: hostname, | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
package events | ||
|
||
import ( | ||
"time" | ||
|
||
topodatapb "vitess.io/vitess/go/vt/proto/topodata" | ||
"vitess.io/vitess/go/vt/topo" | ||
) | ||
|
||
type EmergencyReparentShardEvent struct { | ||
Source Source `json:"source"` | ||
Time time.Time `json:"time"` | ||
ShardInfo topo.ShardInfo `json:"shard_info"` | ||
OldPrimary *topodatapb.Tablet `json:"old_primary"` | ||
NewPrimary *topodatapb.Tablet `json:"new_primary"` | ||
Error error `json:"error"` | ||
} | ||
|
||
type PlannedReparentShardEvent struct { | ||
Source Source `json:"source"` | ||
Time time.Time `json:"time"` | ||
ShardInfo topo.ShardInfo `json:"shard_info"` | ||
OldPrimary *topodatapb.Tablet `json:"old_primary"` | ||
NewPrimary *topodatapb.Tablet `json:"new_primary"` | ||
Error error `json:"error"` | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package events | ||
|
||
import ( | ||
"time" | ||
|
||
topodatapb "vitess.io/vitess/go/vt/proto/topodata" | ||
) | ||
|
||
// DeleteTabletEvent represents a DeleteTablet event from vtctl. | ||
type DeleteTabletEvent struct { | ||
Source Source `json:"source"` | ||
Time time.Time `json:"time"` | ||
Tablet *topodatapb.Tablet `json:"tablet"` | ||
Error error `json:"error"` | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters