reimplement synchronization for sync methods
This commit is contained in:
61
app/app.go
61
app/app.go
@@ -25,7 +25,7 @@ func Run() {
|
||||
flag.Parse()
|
||||
|
||||
config := GetConfig(*configPath)
|
||||
log.Printf("[INF] initialized config from %s", *configPath)
|
||||
log.Printf("[INFO] initialized config from %s", *configPath)
|
||||
|
||||
token := fmt.Sprintf(`%s@%s!%s`, config.PVE.Token.USER, config.PVE.Token.REALM, config.PVE.Token.ID)
|
||||
client = NewClient(config.PVE.URL, token, config.PVE.Token.Secret)
|
||||
@@ -35,13 +35,13 @@ func Run() {
|
||||
cluster := Cluster{}
|
||||
cluster.Init(client)
|
||||
start := time.Now()
|
||||
log.Printf("[INF] starting cluster sync\n")
|
||||
log.Printf("[INFO] starting cluster sync\n")
|
||||
cluster.Sync()
|
||||
log.Printf("[INF] synced cluster in %fs\n", time.Since(start).Seconds())
|
||||
log.Printf("[INFO] synced cluster in %fs\n", time.Since(start).Seconds())
|
||||
|
||||
// set repeating update for full rebuilds
|
||||
ticker := time.NewTicker(time.Duration(config.ReloadInterval) * time.Second)
|
||||
log.Printf("[INF] initialized cluster sync interval of %ds", config.ReloadInterval)
|
||||
log.Printf("[INFO] initialized cluster sync interval of %ds", config.ReloadInterval)
|
||||
channel := make(chan bool)
|
||||
go func() {
|
||||
for {
|
||||
@@ -50,9 +50,9 @@ func Run() {
|
||||
return
|
||||
case <-ticker.C:
|
||||
start := time.Now()
|
||||
log.Printf("[INF] starting cluster sync\n")
|
||||
log.Printf("[INFO] starting cluster sync\n")
|
||||
cluster.Sync()
|
||||
log.Printf("[INF] synced cluster in %fs\n", time.Since(start).Seconds())
|
||||
log.Printf("[INFO] synced cluster in %fs\n", time.Since(start).Seconds())
|
||||
}
|
||||
}
|
||||
}()
|
||||
@@ -66,6 +66,17 @@ func Run() {
|
||||
}
|
||||
})
|
||||
|
||||
router.GET("/", func(c *gin.Context) {
|
||||
v, err := cluster.Get()
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
} else {
|
||||
c.JSON(http.StatusOK, gin.H{"cluster": v})
|
||||
return
|
||||
}
|
||||
})
|
||||
|
||||
router.GET("/nodes/:node", func(c *gin.Context) {
|
||||
nodeid := c.Param("node")
|
||||
|
||||
@@ -80,20 +91,6 @@ func Run() {
|
||||
}
|
||||
})
|
||||
|
||||
router.GET("/nodes/:node/devices", func(c *gin.Context) {
|
||||
nodeid := c.Param("node")
|
||||
|
||||
node, err := cluster.GetNode(nodeid)
|
||||
|
||||
if err != nil {
|
||||
c.JSON(http.StatusNotFound, gin.H{"error": err.Error()})
|
||||
return
|
||||
} else {
|
||||
c.JSON(http.StatusOK, gin.H{"devices": node.Devices})
|
||||
return
|
||||
}
|
||||
})
|
||||
|
||||
router.GET("/nodes/:node/instances/:vmid", func(c *gin.Context) {
|
||||
nodeid := c.Param("node")
|
||||
vmid, err := strconv.ParseUint(c.Param("vmid"), 10, 64)
|
||||
@@ -122,14 +119,14 @@ func Run() {
|
||||
router.POST("/sync", func(c *gin.Context) {
|
||||
//go func() {
|
||||
start := time.Now()
|
||||
log.Printf("[INF] starting cluster sync\n")
|
||||
log.Printf("[INFO] starting cluster sync\n")
|
||||
err := cluster.Sync()
|
||||
if err != nil {
|
||||
log.Printf("[ERR] failed to sync cluster: %s", err)
|
||||
log.Printf("[ERR ] failed to sync cluster: %s", err)
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
} else {
|
||||
log.Printf("[INF] synced cluster in %fs\n", time.Since(start).Seconds())
|
||||
log.Printf("[INFO] synced cluster in %fs\n", time.Since(start).Seconds())
|
||||
return
|
||||
}
|
||||
//}()
|
||||
@@ -139,14 +136,14 @@ func Run() {
|
||||
nodeid := c.Param("node")
|
||||
//go func() {
|
||||
start := time.Now()
|
||||
log.Printf("[INF] starting %s sync\n", nodeid)
|
||||
log.Printf("[INFO] starting %s sync\n", nodeid)
|
||||
err := cluster.RebuildNode(nodeid)
|
||||
if err != nil {
|
||||
log.Printf("[ERR] failed to sync %s: %s", nodeid, err.Error())
|
||||
log.Printf("[ERR ] failed to sync %s: %s", nodeid, err.Error())
|
||||
c.JSON(http.StatusNotFound, gin.H{"error": err.Error()})
|
||||
return
|
||||
} else {
|
||||
log.Printf("[INF] synced %s in %fs\n", nodeid, time.Since(start).Seconds())
|
||||
log.Printf("[INFO] synced %s in %fs\n", nodeid, time.Since(start).Seconds())
|
||||
return
|
||||
}
|
||||
//}()
|
||||
@@ -162,34 +159,34 @@ func Run() {
|
||||
|
||||
//go func() {
|
||||
start := time.Now()
|
||||
log.Printf("[INF] starting %s.%d sync\n", nodeid, vmid)
|
||||
log.Printf("[INFO] starting %s.%d sync\n", nodeid, vmid)
|
||||
|
||||
node, err := cluster.GetNode(nodeid)
|
||||
if err != nil {
|
||||
log.Printf("[ERR] failed to sync %s.%d: %s", nodeid, vmid, err.Error())
|
||||
log.Printf("[ERR ] failed to sync %s.%d: %s", nodeid, vmid, err.Error())
|
||||
c.JSON(http.StatusNotFound, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
instance, err := node.GetInstance(uint(vmid))
|
||||
if err != nil {
|
||||
log.Printf("[ERR] failed to sync %s.%d: %s", nodeid, vmid, err.Error())
|
||||
log.Printf("[ERR ] failed to sync %s.%d: %s", nodeid, vmid, err.Error())
|
||||
c.JSON(http.StatusNotFound, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
err = node.RebuildInstance(instance.Type, uint(vmid))
|
||||
if err != nil {
|
||||
log.Printf("[ERR] failed to sync %s.%d: %s", nodeid, vmid, err.Error())
|
||||
log.Printf("[ERR ] failed to sync %s.%d: %s", nodeid, vmid, err.Error())
|
||||
c.JSON(http.StatusNotFound, gin.H{"error": err.Error()})
|
||||
return
|
||||
} else {
|
||||
log.Printf("[INF] synced %s.%d in %fs\n", nodeid, vmid, time.Since(start).Seconds())
|
||||
log.Printf("[INFO] synced %s.%d in %fs\n", nodeid, vmid, time.Since(start).Seconds())
|
||||
return
|
||||
}
|
||||
//}()
|
||||
})
|
||||
|
||||
log.Printf("[INF] starting API listening on 0.0.0.0:%d", config.ListenPort)
|
||||
log.Printf("[INFO] starting API listening on 0.0.0.0:%d", config.ListenPort)
|
||||
router.Run("0.0.0.0:" + strconv.Itoa(config.ListenPort))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user