48 lines
1.2 KiB
Go
48 lines
1.2 KiB
Go
package httpdns
|
|
|
|
import (
|
|
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
|
|
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
|
|
"github.com/iwind/TeaGo/dbs"
|
|
)
|
|
|
|
func notifyHTTPDNSClusterTask(tx *dbs.Tx, clusterId int64, taskType models.NodeTaskType) error {
|
|
if clusterId <= 0 {
|
|
return nil
|
|
}
|
|
return models.SharedNodeTaskDAO.CreateClusterTask(tx, nodeconfigs.NodeRoleHTTPDNS, clusterId, 0, 0, taskType)
|
|
}
|
|
|
|
func notifyHTTPDNSAppTasksByApp(tx *dbs.Tx, app *models.HTTPDNSApp, taskType models.NodeTaskType) error {
|
|
if app == nil {
|
|
return nil
|
|
}
|
|
|
|
clusterIds := models.SharedHTTPDNSAppDAO.ReadAppClusterIds(app)
|
|
notified := map[int64]bool{}
|
|
for _, clusterId := range clusterIds {
|
|
if clusterId <= 0 || notified[clusterId] {
|
|
continue
|
|
}
|
|
notified[clusterId] = true
|
|
err := notifyHTTPDNSClusterTask(tx, clusterId, taskType)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func notifyHTTPDNSAppTasksByAppDbId(tx *dbs.Tx, appDbId int64, taskType models.NodeTaskType) error {
|
|
if appDbId <= 0 {
|
|
return nil
|
|
}
|
|
|
|
app, err := models.SharedHTTPDNSAppDAO.FindEnabledApp(tx, appDbId)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return notifyHTTPDNSAppTasksByApp(tx, app, taskType)
|
|
}
|