cloud/shepherd/equinix: update provider extra data
This adds a new sub-component to the Equinix Shepherd, the Updater.
The Updater periodically scans all machines backed by the Equinix
provider in the BMDB and queries the Equinix API for their status. The
status then populates the new 'Provided' row data.
Change-Id: I99657545aabfb13d71e165d36ce549c852feaf49
Reviewed-on: https://review.monogon.dev/c/monogon/+/1578
Tested-by: Jenkins CI
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/cloud/shepherd/equinix/manager/server/main.go b/cloud/shepherd/equinix/manager/server/main.go
index 2a293dc..faf84f1 100644
--- a/cloud/shepherd/equinix/manager/server/main.go
+++ b/cloud/shepherd/equinix/manager/server/main.go
@@ -25,6 +25,7 @@
ProvisionerConfig manager.ProvisionerConfig
InitializerConfig manager.InitializerConfig
RecovererConfig manager.RecovererConfig
+ UpdaterConfig manager.UpdaterConfig
WebugConfig webug.Config
API wrapngo.Opts
}
@@ -48,6 +49,7 @@
c.ProvisionerConfig.RegisterFlags()
c.InitializerConfig.RegisterFlags()
c.RecovererConfig.RegisterFlags()
+ c.UpdaterConfig.RegisterFlags()
c.WebugConfig.RegisterFlags()
c.API.RegisterFlags()
}
@@ -94,6 +96,11 @@
klog.Exitf("%v", err)
}
+ updater, err := c.UpdaterConfig.New(api)
+ if err != nil {
+ klog.Exitf("%v", err)
+ }
+
conn, err := c.BMDB.Open(true)
if err != nil {
klog.Exitf("Failed to open BMDB connection: %v", err)
@@ -118,6 +125,12 @@
}
}()
go func() {
+ err = updater.Run(ctx, conn)
+ if err != nil {
+ klog.Exit(err)
+ }
+ }()
+ go func() {
if err := c.WebugConfig.Start(ctx, conn); err != nil && err != ctx.Err() {
klog.Exitf("Failed to start webug: %v", err)
}