43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
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)))
|
|
}
|
|
}
|