main.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package main
  2. import (
  3. "fmt"
  4. "gorm.io/driver/mysql"
  5. "gorm.io/gorm"
  6. "gorm.io/gorm/logger"
  7. "time"
  8. )
  9. // 定义 User 模型
  10. type User struct {
  11. gorm.Model
  12. Name string
  13. Email string
  14. Test Test
  15. }
  16. type Test struct {
  17. gorm.Model
  18. Name string
  19. UserID *uint
  20. }
  21. func main() {
  22. user := User{
  23. Name: "John Doe",
  24. Email: "john.doe@example.com",
  25. Test: Test{
  26. Name: "test",
  27. },
  28. }
  29. Created(&user)
  30. // 打印成功创建的消息
  31. fmt.Printf("User created with ID: %d\n", user.ID)
  32. }
  33. func Created(u *User) {
  34. dsn := "root:lxz664278@tcp(106.54.33.152:33369)/hstack?charset=utf8mb4&parseTime=True&loc=Local"
  35. db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
  36. Logger: logger.Default.LogMode(logger.Info),
  37. })
  38. if err != nil {
  39. panic("failed to connect database")
  40. }
  41. info, _ := GetNodePartInfo(&Node{Model: Model{ID: 2}}, *db)
  42. fmt.Println(info)
  43. }
  44. func GetNodePartInfo(node *Node, DBConn gorm.DB) (*Node, error) {
  45. var result = new(Node)
  46. tx := DBConn.Model(Node{}).Select([]string{
  47. "id", "node_tag",
  48. "max_v_cpu", "use_v_cpu",
  49. "max_mem", "use_mem",
  50. "max_gpu", "use_gpu",
  51. "max_vpc", "use_vpc",
  52. "stat"}).Where("id=?", node.ID).Find(result)
  53. if tx.Error != nil {
  54. return nil, tx.Error
  55. }
  56. if result.ID <= 0 {
  57. result = nil
  58. }
  59. return result, nil
  60. }
  61. // Node 节点信息
  62. type Node struct {
  63. Model
  64. NodeName string `json:"node_name" gorm:"node_name" ` // 节点名称
  65. ZoneId int `json:"zone_id" gorm:"zone_id" ` // 所属资源区ID
  66. ZoneName string `json:"zone_name" gorm:"zone_name" ` // 所属资源区名
  67. BmcIP string `json:"bmc_ip" gorm:"bmc_ip" ` // BMC IP
  68. BmcUser string `json:"bmc_user" gorm:"bmc_user" ` // BMC 用户名
  69. BmcPass string `json:"bmc_pass" gorm:"bmc_pass" ` // BMC 密码
  70. MgrIp string `json:"mgr_ip" gorm:"mgr_ip" ` // 管理IP
  71. NodeIp string `json:"node_ip" gorm:"node_ip" ` // 节点IP
  72. ListenPort int `json:"listen_port" gorm:"listen_port" ` // 监听端口
  73. SSHPort int `json:"ssh_port" gorm:"ssh_port" ` // SSH端口号
  74. RootUser string `json:"root_user" gorm:"root_user" ` // root用户
  75. RootPass string `json:"root_pass" gorm:"root_pass" ` // root密码
  76. RootSecretKey string `json:"root_secret_key" gorm:"root_secret_key" ` // Root账号密钥
  77. SecretKeyPass string `json:"secret_key_pass" gorm:"secret_key_pass" ` // 密钥密码
  78. NodeMode int `json:"node_mode" gorm:"node_mode" ` // 节点模式
  79. NodeTag string `json:"node_tag" gorm:"node_tag" ` // 节点标记
  80. MaxVCpu int `json:"max_v_cpu" gorm:"max_v_cpu" ` // 最大可虚拟化CPU数量
  81. UseVCpu int `json:"use_v_cpu" gorm:"use_v_cpu" ` // 已使用虚拟化CPU数量
  82. Cpu int `json:"cpu" gorm:"cpu" ` // CPU数量
  83. CpuType int `json:"cpu_type" gorm:"cpu_type" ` // CPU类型 (x86_64:1;amd64:2;arm:3;other:4)
  84. MaxMem int64 `json:"max_mem" gorm:"max_mem" ` // 最大内存
  85. UseMem int64 `json:"use_mem" gorm:"use_mem" ` // 已使用内存
  86. MaxGpu int `json:"max_gpu" gorm:"max_gpu" ` // 最大GPU数
  87. UseGpu int `json:"use_gpu" gorm:"use_gpu" ` // 已使用GPU数
  88. NodeWidget int `json:"node_widget" gorm:"node_widget" ` // 节点权重
  89. NodeLoadStat int `json:"node_load_stat" gorm:"node_load_stat" ` // 节点负载状态
  90. MaxVPC int `json:"max_vpc" gorm:"column:max_vpc;default:5" ` // 节点创建的最大VPC数量
  91. UseVPC int `json:"use_vpc" gorm:"column:use_vpc;default:0" ` // 节点已创建的VPC
  92. RunStat int `json:"run_stat" gorm:"run_stat" ` // 节点运行状态
  93. AutoSyncNodeStat int `json:"auto_sync_node_stat" gorm:"auto_sync_node_stat" ` // 自动同步节点状态
  94. PcieIdList []int `json:"pcie_id_list" gorm:"-" ` // PCIE设备ID列表
  95. HPCInitCommandIdList []int `json:"hpc_init_command_id_list" gorm:"-" ` // hpc命令ID数组
  96. CloudInitCommandIdList []int `json:"cloud_init_command_id_list" gorm:"-" ` // 云命令ID数组
  97. }
  98. type Model struct {
  99. ID int `json:"id" gorm:"column:id;primarykey" ` // 主键ID
  100. CreatedAt *time.Time `json:"created_at" gorm:"column:created_at;autoCreateTime:nano" swaggerignore:"true" ` // 创建时间
  101. UpdatedAt *time.Time `json:"updated_at" gorm:"column:updated_at;autoUpdateTime:nano" swaggerignore:"true"` // 更新时间
  102. DeletedAt gorm.DeletedAt `json:"deleted_at" gorm:"column:deleted_at;index" swaggerignore:"true"` // 删除时间
  103. CreateUser string `json:"create_user" gorm:"create_user" swaggerignore:"true"` // 创建用户
  104. CreateUserId int `json:"create_user_id" gorm:"create_user_id" swaggerignore:"true"` // 创建用户ID
  105. UpdateUser string `json:"update_user" gorm:"update_user" swaggerignore:"true"` // 更新用户
  106. UpdateUserId int `json:"update_user_id" gorm:"update_user_id" swaggerignore:"true"` // 更新用户ID
  107. DeleteUser string `json:"delete_user" gorm:"delete_user" swaggerignore:"true" ` // 删除用户
  108. DeleteUserId int `json:"delete_user_id" gorm:"delete_user_id" swaggerignore:"true"` // 删除用户ID
  109. Remark string `json:"remark" gorm:"remark" swaggerignore:"true"` // 备注
  110. Stat int `json:"stat" gorm:"stat" swaggerignore:"true"` // 状态
  111. ExpireAt *time.Time `json:"expire_at" gorm:"expire_at" swaggerignore:"true"` // 过期时间
  112. }
  113. func (Node) TableName() string {
  114. return "node"
  115. }