| | |
| | | package models |
| | | |
| | | import ( |
| | | "basic.com/valib/logger.git" |
| | | ) |
| | | |
| | | const ( |
| | | IsAlive_StatusNone = 0 |
| | | IsAlive_StatusAlive = 1 |
| | | IsAlive_StatusLeaving = 2 |
| | | IsAlive_StatusLeft = 3 |
| | | IsAlive_StatusFailed = 4 |
| | | ) |
| | | |
| | | type Node struct { |
| | | Id string `gorm:"primary_key;column:id" json:"id"` |
| | | ClusterId string `gorm:"column:cluster_id" json:"cluster_id"` |
| | | NodeName string `gorm:"column:node_name" json:"node_name"` |
| | | NodeId string `gorm:"column:node_id" json:"node_id"` |
| | | NodeIp string `gorm:"column:node_ip" json:"node_ip"` |
| | | CreateTime string `gorm:"column:create_time" json:"create_time"` |
| | | IsDelete bool `gorm:"column:isDelete;default:0" json:"isDelete"` |
| | | DeviceType string `gorm:"column:device_type" json:"device_type"` //设备型号` |
| | | DriftState string `gorm:"column:drift_state" json:"drift_state"` //漂移状态, master,backup |
| | | } |
| | | |
| | | func (Node) TableName() string { |
| | | return "cluster_node" |
| | | } |
| | | |
| | | func (n *Node) FindIpByNode(nodeId string) (string, error) { |
| | | node := Node{} |
| | | if err := db.Raw("select id, node_ip from cluster_node where isDelete=0 and id = '" + nodeId + "'").First(&node).Error; err != nil { |
| | | return "", err |
| | | } |
| | | return node.NodeIp, nil |
| | | } |
| | | |
| | | func (n *Node) FindNodesByClusterId(clusterId string) (nodes []Node, err error) { |
| | | if err = db.Raw("select * from cluster_node where isDelete=0 and cluster_id=?", clusterId).Scan(&nodes).Error; err != nil { |
| | | return nil, err |
| | | } |
| | | return nodes, nil |
| | | } |
| | | |
| | | func (n *Node) UpdateDriftStateByNodeId(driftState string, nodeId string) bool { |
| | | var err error |
| | | tx := GetDB().Begin() |
| | | defer func() { |
| | | if err != nil && tx != nil { |
| | | logger.Error("updateDriftState err:", err) |
| | | tx.Rollback() |
| | | } |
| | | }() |
| | | if driftState == "master" { |
| | | if err = tx.Exec("update "+n.TableName()+" set drift_state=? where id=?", driftState, nodeId).Error; err != nil { |
| | | return false |
| | | } |
| | | if err = tx.Exec("update "+n.TableName()+" set drift_state='backup' where id !=?", nodeId).Error; err != nil { |
| | | return false |
| | | } |
| | | } else { |
| | | if err = tx.Exec("update "+n.TableName()+" set drift_state=? where id=?", driftState, nodeId).Error; err != nil { |
| | | return false |
| | | } |
| | | } |
| | | |
| | | tx.Commit() |
| | | return true |
| | | } |
| | | package models
|
| | |
|
| | | import (
|
| | | "basic.com/valib/logger.git"
|
| | | )
|
| | |
|
| | | const (
|
| | | IsAlive_StatusNone = 0
|
| | | IsAlive_StatusAlive = 1
|
| | | IsAlive_StatusLeaving = 2
|
| | | IsAlive_StatusLeft = 3
|
| | | IsAlive_StatusFailed = 4
|
| | | )
|
| | |
|
| | | type Node struct {
|
| | | Id string `gorm:"primary_key;column:id" json:"id"`
|
| | | ClusterId string `gorm:"column:cluster_id" json:"cluster_id"`
|
| | | NodeName string `gorm:"column:node_name" json:"node_name"`
|
| | | NodeId string `gorm:"column:node_id" json:"node_id"`
|
| | | NodeIp string `gorm:"column:node_ip" json:"node_ip"`
|
| | | CreateTime string `gorm:"column:create_time" json:"create_time"`
|
| | | IsDelete bool `gorm:"column:isDelete;default:0" json:"isDelete"`
|
| | | DeviceType string `gorm:"column:device_type" json:"device_type"` //设备型号`
|
| | | DriftState string `gorm:"column:drift_state" json:"drift_state"` //漂移状态, master,backup
|
| | | }
|
| | |
|
| | | func (Node) TableName() string {
|
| | | return "cluster_node"
|
| | | }
|
| | |
|
| | | func (n *Node) FindIpByNode(nodeId string) (string, error) {
|
| | | node := Node{}
|
| | | if err := db.Raw("select id, node_ip from cluster_node where isDelete=0 and id = '" + nodeId + "'").First(&node).Error; err != nil {
|
| | | return "", err
|
| | | }
|
| | | return node.NodeIp, nil
|
| | | }
|
| | |
|
| | | func (n *Node) FindNodesByClusterId(clusterId string) (nodes []Node, err error) {
|
| | | if err = db.Raw("select * from cluster_node where isDelete=0 and cluster_id=?", clusterId).Scan(&nodes).Error; err != nil {
|
| | | return nil, err
|
| | | }
|
| | | return nodes, nil
|
| | | }
|
| | |
|
| | | func (n *Node) UpdateDriftStateByNodeId(driftState string, nodeId string) bool {
|
| | | var err error
|
| | | tx := GetDB().Begin()
|
| | | defer func() {
|
| | | if err != nil && tx != nil {
|
| | | logger.Error("updateDriftState err:", err)
|
| | | tx.Rollback()
|
| | | }
|
| | | }()
|
| | | if driftState == "master" {
|
| | | if err = tx.Exec("update "+n.TableName()+" set drift_state=? where id=?", driftState, nodeId).Error; err != nil {
|
| | | return false
|
| | | }
|
| | | if err = tx.Exec("update "+n.TableName()+" set drift_state='backup' where id !=?", nodeId).Error; err != nil {
|
| | | return false
|
| | | }
|
| | | } else {
|
| | | if err = tx.Exec("update "+n.TableName()+" set drift_state=? where id=?", driftState, nodeId).Error; err != nil {
|
| | | return false
|
| | | }
|
| | | }
|
| | |
|
| | | tx.Commit()
|
| | | return true
|
| | | }
|