mirror of
https://github.com/kairos-io/kairos-agent.git
synced 2025-09-20 01:42:20 +00:00
bug: Make bus Initialize idempotent, add Reload
This commit is contained in:
committed by
Itxaka
parent
1254c09745
commit
6b5c4d416c
@@ -68,7 +68,7 @@ func Run(opts ...Option) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Re-load providers
|
// Re-load providers
|
||||||
bus.Manager.LoadProviders()
|
bus.Reload()
|
||||||
err = machine.CreateSentinel("bundles")
|
err = machine.CreateSentinel("bundles")
|
||||||
if !c.IgnoreBundleErrors && err != nil {
|
if !c.IgnoreBundleErrors && err != nil {
|
||||||
return err
|
return err
|
||||||
|
@@ -10,14 +10,24 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// Manager is the bus instance manager, which subscribes plugins to events emitted.
|
// Manager is the bus instance manager, which subscribes plugins to events emitted.
|
||||||
var Manager = &Bus{
|
var Manager = NewBus()
|
||||||
Manager: pluggable.NewManager(
|
|
||||||
bus.AllEvents,
|
func NewBus() *Bus {
|
||||||
),
|
return &Bus{
|
||||||
|
Manager: pluggable.NewManager(
|
||||||
|
bus.AllEvents,
|
||||||
|
),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Reload() {
|
||||||
|
Manager = NewBus()
|
||||||
|
Manager.Initialize()
|
||||||
}
|
}
|
||||||
|
|
||||||
type Bus struct {
|
type Bus struct {
|
||||||
*pluggable.Manager
|
*pluggable.Manager
|
||||||
|
registered bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Bus) LoadProviders() {
|
func (b *Bus) LoadProviders() {
|
||||||
@@ -26,29 +36,32 @@ func (b *Bus) LoadProviders() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (b *Bus) Initialize() {
|
func (b *Bus) Initialize() {
|
||||||
b.LoadProviders()
|
if !b.registered {
|
||||||
for i := range b.Manager.Events {
|
b.LoadProviders()
|
||||||
e := b.Manager.Events[i]
|
for i := range b.Manager.Events {
|
||||||
b.Manager.Response(e, func(p *pluggable.Plugin, r *pluggable.EventResponse) {
|
e := b.Manager.Events[i]
|
||||||
if os.Getenv("BUS_DEBUG") == "true" {
|
b.Manager.Response(e, func(p *pluggable.Plugin, r *pluggable.EventResponse) {
|
||||||
fmt.Println(
|
if os.Getenv("BUS_DEBUG") == "true" {
|
||||||
fmt.Sprintf("[provider event: %s]", e),
|
fmt.Println(
|
||||||
"received from",
|
fmt.Sprintf("[provider event: %s]", e),
|
||||||
p.Name,
|
"received from",
|
||||||
"at",
|
p.Name,
|
||||||
p.Executable,
|
"at",
|
||||||
r,
|
p.Executable,
|
||||||
)
|
r,
|
||||||
}
|
)
|
||||||
if r.Errored() {
|
|
||||||
err := fmt.Sprintf("Provider %s at %s had an error: %s", p.Name, p.Executable, r.Error)
|
|
||||||
fmt.Println(err)
|
|
||||||
os.Exit(1)
|
|
||||||
} else {
|
|
||||||
if r.State != "" {
|
|
||||||
fmt.Println(fmt.Sprintf("[provider event: %s]", e), r.State)
|
|
||||||
}
|
}
|
||||||
}
|
if r.Errored() {
|
||||||
})
|
err := fmt.Sprintf("Provider %s at %s had an error: %s", p.Name, p.Executable, r.Error)
|
||||||
|
fmt.Println(err)
|
||||||
|
os.Exit(1)
|
||||||
|
} else {
|
||||||
|
if r.State != "" {
|
||||||
|
fmt.Println(fmt.Sprintf("[provider event: %s]", e), r.State)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
b.registered = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user