|
@@ -4,6 +4,8 @@ import (
|
|
"fmt"
|
|
"fmt"
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm"
|
|
|
|
+ "gorm.io/gorm/logger"
|
|
|
|
+ "time"
|
|
)
|
|
)
|
|
|
|
|
|
// 定义 User 模型
|
|
// 定义 User 模型
|
|
@@ -11,11 +13,24 @@ type User struct {
|
|
gorm.Model
|
|
gorm.Model
|
|
Name string
|
|
Name string
|
|
Email string
|
|
Email string
|
|
|
|
+ Test Test
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+type Test struct {
|
|
|
|
+ gorm.Model
|
|
|
|
+ Name string
|
|
|
|
+ UserID *uint
|
|
}
|
|
}
|
|
|
|
|
|
func main() {
|
|
func main() {
|
|
|
|
|
|
- user := User{Name: "John Doe", Email: "john.doe@example.com"}
|
|
|
|
|
|
+ user := User{
|
|
|
|
+ Name: "John Doe",
|
|
|
|
+ Email: "john.doe@example.com",
|
|
|
|
+ Test: Test{
|
|
|
|
+ Name: "test",
|
|
|
|
+ },
|
|
|
|
+ }
|
|
Created(&user)
|
|
Created(&user)
|
|
// 打印成功创建的消息
|
|
// 打印成功创建的消息
|
|
fmt.Printf("User created with ID: %d\n", user.ID)
|
|
fmt.Printf("User created with ID: %d\n", user.ID)
|
|
@@ -23,35 +38,89 @@ func main() {
|
|
}
|
|
}
|
|
|
|
|
|
func Created(u *User) {
|
|
func Created(u *User) {
|
|
- dsn := "root:lxz664278@tcp(106.54.33.152:33369)/gorm?charset=utf8mb4&parseTime=True&loc=Local"
|
|
|
|
- db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
|
|
|
|
|
|
+ dsn := "root:lxz664278@tcp(106.54.33.152:33369)/hstack?charset=utf8mb4&parseTime=True&loc=Local"
|
|
|
|
+ db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
|
|
|
|
+ Logger: logger.Default.LogMode(logger.Info),
|
|
|
|
+ })
|
|
if err != nil {
|
|
if err != nil {
|
|
panic("failed to connect database")
|
|
panic("failed to connect database")
|
|
}
|
|
}
|
|
|
|
+ info, _ := GetNodePartInfo(&Node{Model: Model{ID: 2}}, *db)
|
|
|
|
+ fmt.Println(info)
|
|
|
|
+}
|
|
|
|
|
|
- // 创建记录
|
|
|
|
- result := db.Create(u)
|
|
|
|
|
|
+func GetNodePartInfo(node *Node, DBConn gorm.DB) (*Node, error) {
|
|
|
|
+ var result = new(Node)
|
|
|
|
|
|
- if result.Error != nil {
|
|
|
|
- fmt.Println("Error creating user:", result.Error)
|
|
|
|
- return
|
|
|
|
|
|
+ tx := DBConn.Model(Node{}).Select([]string{
|
|
|
|
+ "id", "node_tag",
|
|
|
|
+ "max_v_cpu", "use_v_cpu",
|
|
|
|
+ "max_mem", "use_mem",
|
|
|
|
+ "max_gpu", "use_gpu",
|
|
|
|
+ "max_vpc", "use_vpc",
|
|
|
|
+ "stat"}).Where("id=?", node.ID).Find(result)
|
|
|
|
+ if tx.Error != nil {
|
|
|
|
+ return nil, tx.Error
|
|
}
|
|
}
|
|
-
|
|
|
|
- // 更新记录
|
|
|
|
- var t = &User{
|
|
|
|
- Model: gorm.Model{
|
|
|
|
- ID: u.ID,
|
|
|
|
- },
|
|
|
|
- Name: "John Doe Updated",
|
|
|
|
- Email: "",
|
|
|
|
|
|
+ if result.ID <= 0 {
|
|
|
|
+ result = nil
|
|
}
|
|
}
|
|
- db.Updates(t)
|
|
|
|
|
|
+ return result, nil
|
|
|
|
+}
|
|
|
|
|
|
- var user User
|
|
|
|
- re := db.Model(&User{}).First(&user, u.ID)
|
|
|
|
- if re.Error != nil {
|
|
|
|
- fmt.Println("Error getting user:", re.Error)
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- fmt.Println("User:", user)
|
|
|
|
|
|
+// Node 节点信息
|
|
|
|
+type Node struct {
|
|
|
|
+ Model
|
|
|
|
+ NodeName string `json:"node_name" gorm:"node_name" ` // 节点名称
|
|
|
|
+ ZoneId int `json:"zone_id" gorm:"zone_id" ` // 所属资源区ID
|
|
|
|
+ ZoneName string `json:"zone_name" gorm:"zone_name" ` // 所属资源区名
|
|
|
|
+ BmcIP string `json:"bmc_ip" gorm:"bmc_ip" ` // BMC IP
|
|
|
|
+ BmcUser string `json:"bmc_user" gorm:"bmc_user" ` // BMC 用户名
|
|
|
|
+ BmcPass string `json:"bmc_pass" gorm:"bmc_pass" ` // BMC 密码
|
|
|
|
+ MgrIp string `json:"mgr_ip" gorm:"mgr_ip" ` // 管理IP
|
|
|
|
+ NodeIp string `json:"node_ip" gorm:"node_ip" ` // 节点IP
|
|
|
|
+ ListenPort int `json:"listen_port" gorm:"listen_port" ` // 监听端口
|
|
|
|
+ SSHPort int `json:"ssh_port" gorm:"ssh_port" ` // SSH端口号
|
|
|
|
+ RootUser string `json:"root_user" gorm:"root_user" ` // root用户
|
|
|
|
+ RootPass string `json:"root_pass" gorm:"root_pass" ` // root密码
|
|
|
|
+ RootSecretKey string `json:"root_secret_key" gorm:"root_secret_key" ` // Root账号密钥
|
|
|
|
+ SecretKeyPass string `json:"secret_key_pass" gorm:"secret_key_pass" ` // 密钥密码
|
|
|
|
+ NodeMode int `json:"node_mode" gorm:"node_mode" ` // 节点模式
|
|
|
|
+ NodeTag string `json:"node_tag" gorm:"node_tag" ` // 节点标记
|
|
|
|
+ MaxVCpu int `json:"max_v_cpu" gorm:"max_v_cpu" ` // 最大可虚拟化CPU数量
|
|
|
|
+ UseVCpu int `json:"use_v_cpu" gorm:"use_v_cpu" ` // 已使用虚拟化CPU数量
|
|
|
|
+ Cpu int `json:"cpu" gorm:"cpu" ` // CPU数量
|
|
|
|
+ CpuType int `json:"cpu_type" gorm:"cpu_type" ` // CPU类型 (x86_64:1;amd64:2;arm:3;other:4)
|
|
|
|
+ MaxMem int64 `json:"max_mem" gorm:"max_mem" ` // 最大内存
|
|
|
|
+ UseMem int64 `json:"use_mem" gorm:"use_mem" ` // 已使用内存
|
|
|
|
+ MaxGpu int `json:"max_gpu" gorm:"max_gpu" ` // 最大GPU数
|
|
|
|
+ UseGpu int `json:"use_gpu" gorm:"use_gpu" ` // 已使用GPU数
|
|
|
|
+ NodeWidget int `json:"node_widget" gorm:"node_widget" ` // 节点权重
|
|
|
|
+ NodeLoadStat int `json:"node_load_stat" gorm:"node_load_stat" ` // 节点负载状态
|
|
|
|
+ MaxVPC int `json:"max_vpc" gorm:"column:max_vpc;default:5" ` // 节点创建的最大VPC数量
|
|
|
|
+ UseVPC int `json:"use_vpc" gorm:"column:use_vpc;default:0" ` // 节点已创建的VPC
|
|
|
|
+ RunStat int `json:"run_stat" gorm:"run_stat" ` // 节点运行状态
|
|
|
|
+ AutoSyncNodeStat int `json:"auto_sync_node_stat" gorm:"auto_sync_node_stat" ` // 自动同步节点状态
|
|
|
|
+ PcieIdList []int `json:"pcie_id_list" gorm:"-" ` // PCIE设备ID列表
|
|
|
|
+ HPCInitCommandIdList []int `json:"hpc_init_command_id_list" gorm:"-" ` // hpc命令ID数组
|
|
|
|
+ CloudInitCommandIdList []int `json:"cloud_init_command_id_list" gorm:"-" ` // 云命令ID数组
|
|
|
|
+}
|
|
|
|
+type Model struct {
|
|
|
|
+ ID int `json:"id" gorm:"column:id;primarykey" ` // 主键ID
|
|
|
|
+ CreatedAt *time.Time `json:"created_at" gorm:"column:created_at;autoCreateTime:nano" swaggerignore:"true" ` // 创建时间
|
|
|
|
+ UpdatedAt *time.Time `json:"updated_at" gorm:"column:updated_at;autoUpdateTime:nano" swaggerignore:"true"` // 更新时间
|
|
|
|
+ DeletedAt gorm.DeletedAt `json:"deleted_at" gorm:"column:deleted_at;index" swaggerignore:"true"` // 删除时间
|
|
|
|
+ CreateUser string `json:"create_user" gorm:"create_user" swaggerignore:"true"` // 创建用户
|
|
|
|
+ CreateUserId int `json:"create_user_id" gorm:"create_user_id" swaggerignore:"true"` // 创建用户ID
|
|
|
|
+ UpdateUser string `json:"update_user" gorm:"update_user" swaggerignore:"true"` // 更新用户
|
|
|
|
+ UpdateUserId int `json:"update_user_id" gorm:"update_user_id" swaggerignore:"true"` // 更新用户ID
|
|
|
|
+ DeleteUser string `json:"delete_user" gorm:"delete_user" swaggerignore:"true" ` // 删除用户
|
|
|
|
+ DeleteUserId int `json:"delete_user_id" gorm:"delete_user_id" swaggerignore:"true"` // 删除用户ID
|
|
|
|
+ Remark string `json:"remark" gorm:"remark" swaggerignore:"true"` // 备注
|
|
|
|
+ Stat int `json:"stat" gorm:"stat" swaggerignore:"true"` // 状态
|
|
|
|
+ ExpireAt *time.Time `json:"expire_at" gorm:"expire_at" swaggerignore:"true"` // 过期时间
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func (Node) TableName() string {
|
|
|
|
+ return "node"
|
|
}
|
|
}
|