Files
EdgeAPI/internal/db/models/node_model_ext.go

69 lines
1.7 KiB
Go
Raw Normal View History

2020-07-22 22:17:53 +08:00
package models
2020-09-13 20:37:28 +08:00
import (
"encoding/json"
2020-10-25 18:26:46 +08:00
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
2020-09-13 20:37:28 +08:00
"time"
)
// 安装状态
func (this *Node) DecodeInstallStatus() (*NodeInstallStatus, error) {
if len(this.InstallStatus) == 0 || this.InstallStatus == "null" {
return NewNodeInstallStatus(), nil
}
status := &NodeInstallStatus{}
err := json.Unmarshal([]byte(this.InstallStatus), status)
if err != nil {
return NewNodeInstallStatus(), err
}
// 如果N秒钟没有更新状态则认为不在运行
if status.IsRunning && status.UpdatedAt < time.Now().Unix()-10 {
status.IsRunning = false
status.IsFinished = true
status.Error = "timeout"
}
return status, nil
}
2020-10-25 18:26:46 +08:00
// 节点状态
func (this *Node) DecodeStatus() (*nodeconfigs.NodeStatus, error) {
if len(this.Status) == 0 || this.Status == "null" {
return nil, nil
}
status := &nodeconfigs.NodeStatus{}
err := json.Unmarshal([]byte(this.Status), status)
if err != nil {
return nil, err
}
return status, nil
}
2020-11-14 09:41:58 +08:00
// 所有的DNS线路
2020-11-16 13:03:20 +08:00
func (this *Node) DNSRouteCodes() (map[int64][]string, error) {
routes := map[int64][]string{} // domainId => routes
2020-11-14 09:41:58 +08:00
if len(this.DnsRoutes) == 0 || this.DnsRoutes == "null" {
return routes, nil
}
err := json.Unmarshal([]byte(this.DnsRoutes), &routes)
if err != nil {
2020-11-16 13:03:20 +08:00
return map[int64][]string{}, err
2020-11-14 09:41:58 +08:00
}
return routes, nil
}
// DNS线路
2020-11-16 13:03:20 +08:00
func (this *Node) DNSRouteCodesForDomainId(dnsDomainId int64) ([]string, error) {
routes := map[int64][]string{} // domainId => routes
if len(this.DnsRoutes) == 0 || this.DnsRoutes == "null" {
2020-11-16 13:03:20 +08:00
return nil, nil
}
err := json.Unmarshal([]byte(this.DnsRoutes), &routes)
if err != nil {
2020-11-16 13:03:20 +08:00
return nil, err
}
2020-11-16 13:03:20 +08:00
domainRoutes, _ := routes[dnsDomainId]
return domainRoutes, nil
}