package seed import ( "ezops/model" snmppkg "ezops/pkg/snmp" "go.uber.org/zap" "gorm.io/gorm" ) // SeedSNMPTemplates 种子 H3C/华为等内置 OID 模板 // Logan.Li func SeedSNMPTemplates(db *gorm.DB) { for _, bt := range snmppkg.BuiltinTemplates() { var exist model.SNMPTemplate db.Where("name = ? AND is_system = ?", bt.Name, true).First(&exist) if exist.ID > 0 { continue } tpl := model.SNMPTemplate{ Name: bt.Name, Description: bt.Description, DeviceType: bt.DeviceType, Vendor: bt.Vendor, IsDefault: bt.Vendor == "H3C" && bt.DeviceType == "switch", IsSystem: true, Status: 1, } if err := db.Create(&tpl).Error; err != nil { zap.L().Warn("seed snmp template failed", zap.String("name", bt.Name), zap.Error(err)) continue } for _, o := range bt.OIDs { oid := model.SNMPTemplateOID{ TemplateID: tpl.ID, Name: o.Name, OID: o.OID, Description: o.Description, DataType: o.DataType, Unit: o.Unit, SortOrder: o.SortOrder, } if o.IsTable { oid.Conversion = "table" } db.Create(&oid) } zap.L().Info("seeded snmp template", zap.String("name", bt.Name), zap.Int("oids", len(bt.OIDs))) } }