This commit is contained in:
2023-08-24 21:23:55 +08:00
parent 8ac572b215
commit 486f1163e8
8 changed files with 266 additions and 77 deletions

View File

@@ -43,7 +43,7 @@ type FieldValue struct {
}
// Objects ...
type Objects struct {
type ObjectData struct {
ObjectType string `xml:"ObjectType"`
FieldName FieldName `xml:"FieldName"`
FieldValue FieldValue `xml:"FieldValue"`
@@ -52,7 +52,8 @@ type Objects struct {
// DataFile ...
type DataFile struct {
FileHeader FileHeader `xml:"FileHeader"`
Objects []Objects `xml:"Objects"`
//Objects []Objects `xml:"Objects"`
ObjectData ObjectData `xml:"objectData"`
XsiAttr string `xml:"xmlns:xsi,attr"`
XsiLoc string `xml:"xsi:noNamespaceSchemaLocation,attr"`
}

View File

@@ -24,7 +24,7 @@ database:
type: mysql
user: root
password: 1000omc@kp!
host: 127.0.0.1
host: 172.25.97.150
port: 33066
name: omc_db
backup: d:/local.git/ems.agt/restagent/database
@@ -35,10 +35,10 @@ nbi:
cm:
cfgfiledir: ./etc/cm
xmlfiledir: ./ftp/cm
version: V1.0.1
version: V2.5.0
duration: 30
pm:
cfgfiledir: ./etc/pm
xmlfiledir: ./ftp/pm
version: V1.0.1
version: V2.5.0
duration: 30

View File

@@ -97,7 +97,7 @@ tasks:
params:
interval: 1
unit: Day
at: 00:00,06:00,12:00,18:00
at: 00:00,06:00,12:00,18:00,20:43
do: GenCmXmlFile
- name: Task of Generate measure threshold alarm
status: Inactive

View File

@@ -1,6 +1,7 @@
package main
import (
"encoding/json"
"encoding/xml"
"fmt"
"os"
@@ -70,9 +71,6 @@ func (t *TaskFunc) GenNFXmlFile(neType string) error {
resultMap, _ := t.ReadCmYaml(cmfile)
var cmResults []dborm.NorthboundCm
err = dborm.XormGetNorthboundCm(neType, &cmResults)
ti := time.Now()
timestamp := ti.Format("2006-01-02 15:04:05")
timefile := ti.Format("20060102150405")
@@ -86,20 +84,24 @@ func (t *TaskFunc) GenNFXmlFile(neType string) error {
}
nrmFile := new(cmschema.DataFile)
//创建目录
path := fmt.Sprintf("%s/HX/%s/%s/CM/%s", yamlConfig.OMC.Province, yamlConfig.OMC.Vendor, yamlConfig.OMC.Name, date)
folderPath := global.CreateDir(path, yamlConfig.NBI.CM.XmlFileDir)
nrmFile.FileHeader = cmschema.FileHeader{
TimeStamp: timestamp,
TimeZone: tzOffset,
VendorName: "RJ",
VendorName: yamlConfig.OMC.Vendor,
ElementType: neType,
CmVersion: global.Version,
CmVersion: yamlConfig.NBI.CM.Version,
}
nrmFile.XsiAttr = "http://www.w3.org/2001/XMLSchema-instance"
nrmFile.XsiLoc = "file:///usr/loal/omc/etc/schema/cm-schema.xsd"
for k, e := range resultMap {
objects := cmschema.Objects{ObjectType: k}
for objectType, e := range resultMap {
//objects := cmschema.Objects{ObjectType: objectType}
objectData := cmschema.ObjectData{ObjectType: objectType}
sortResult := make(map[string]string)
keys := make([]string, 0)
@@ -109,61 +111,99 @@ func (t *TaskFunc) GenNFXmlFile(neType string) error {
}
sort.Strings(keys)
for s, ne := range nes {
rmUID := fmt.Sprintf("01000HX%sBJ0D0%d", neType, s+1)
vmId := fmt.Sprintf("kylin10.0-00%d-%s", s+1, neType)
vnfInstanceID := fmt.Sprintf("2%xd55b4-%d018-41f4-af%d5-28b%d828788", s+10, s+6, s+4, s+3)
object := cmschema.Object{RmUIDAttr: rmUID,
DnAttr: "DC=www.ruijie.com.cn,SubNetwork=10001,SubNetwork=114214,ManagedElement=325",
UserLabelAttr: ne.NeName, PVFlagAttr: ne.PvFlag, VMIDAttr: vmId, VNFInstanceIDAttr: vnfInstanceID}
cmResult, err := dborm.XormGetNorthboundCmLatestObject(neType, ne.NeId, objectType)
if err != nil {
log.Error("Failed to XormGetNorthboundCmLatestObject:", err)
continue
}
log.Trace("cmResult:", cmResult)
valueMap := make(map[string]interface{})
if cmResult.ValueJSON != "" {
err = json.Unmarshal([]byte(cmResult.ValueJSON), &valueMap)
if err != nil {
log.Error("Failed to json.Unmarshal:", err)
continue
}
}
log.Trace("valueMap:", valueMap)
rmUID := ne.RmUID
var object cmschema.Object
if ne.PvFlag == "VNF" {
vmId := fmt.Sprintf("kylin10.0-00%d-%s", s+1, neType)
vnfInstanceID := fmt.Sprintf("2%xd55b4-%d018-41f4-af%d5-28b%d828788", s+10, s+6, s+4, s+3)
object = cmschema.Object{RmUIDAttr: rmUID,
DnAttr: "DC=www.ruijie.com.cn,SubNetwork=10001,SubNetwork=114214,ManagedElement=325",
UserLabelAttr: ne.NeName, PVFlagAttr: ne.PvFlag, VMIDAttr: vmId, VNFInstanceIDAttr: vnfInstanceID}
} else {
object = cmschema.Object{RmUIDAttr: rmUID,
DnAttr: "DC=www.ruijie.com.cn,SubNetwork=10001,SubNetwork=114214,ManagedElement=325",
UserLabelAttr: ne.NeName, PVFlagAttr: ne.PvFlag}
}
i := 1
for _, p := range keys {
if s == 0 {
objects.FieldName.N = append(objects.FieldName.N, cmschema.N{IAttr: i, Value: p})
//objects.FieldName.N = append(objects.FieldName.N, cmschema.N{IAttr: i, Value: p})
objectData.FieldName.N = append(objectData.FieldName.N, cmschema.N{IAttr: i, Value: p})
}
var v string
switch p {
case "Id":
v = ne.NeId
case "UserLabel":
v = ne.NeName
case "VendorName":
v = "RJ"
case "SwVersion":
v = global.Version
case "PatchInfo":
v = "-"
case "AdministrativeState":
v = AdminStateUnlocked
case "OperationalState":
v = OperationStateEnabled
case "VnfInstanceId":
v = vnfInstanceID
default:
if sortResult[p] == "" {
v = "-"
} else {
v = fmt.Sprintf("%s", sortResult[p])
}
}
object.V = append(object.V, cmschema.V{IAttr: i, Value: v})
// var v string
// switch p {
// case "Id":
// v = ne.RmUID
// case "UserLabel":
// v = ne.NeName
// case "VendorName":
// v = ne.VendorName
// case "SwVersion":
// v = cmResult.CmVersion
// case "PatchInfo":
// v = "-"
// case "AdministrativeState":
// v = AdminStateUnlocked
// case "OperationalState":
// v = OperationStateEnabled
// case "VnfInstanceId":
// v = "" //vnfInstanceID
// default:
// if sortResult[p] == "" {
// v = "-"
// } else {
// v = fmt.Sprintf("%s", sortResult[p])
// }
// }
object.V = append(object.V, cmschema.V{IAttr: i, Value: fmt.Sprintf("%v", valueMap[p])})
i++
}
objects.FieldValue.Object = append(objects.FieldValue.Object, object)
//objects.FieldValue.Object = append(objects.FieldValue.Object, object)
objectData.FieldValue.Object = append(objectData.FieldValue.Object, object)
}
//nrmFile.Objects = append(nrmFile.Objects, objects)
nrmFile.ObjectData = objectData
x, _ := xml.MarshalIndent(nrmFile, "", " ")
x = append([]byte(xml.Header), x...)
xmlfile := fmt.Sprintf("%s/%s-CM-%s-%s-%s-%s-%s-001.xml",
folderPath, yamlConfig.OMC.Province, neType, objectType, yamlConfig.OMC.HostNo, yamlConfig.NBI.CM.Version, timefile)
tmpXmlfile := xmlfile + ".tmp"
err := os.WriteFile(tmpXmlfile, x, 0664)
if err != nil {
log.Error("Failed to WriteFile xml file:", err)
continue
}
// err := os.Create(tmpXmlfile)
// if err != nil {
// log.Error("Failed to WriteFile xml file:", err)
// continue
// }
err = os.Rename(tmpXmlfile, xmlfile)
if err != nil {
log.Error("Failed to Rename xml file:", err)
continue
}
nrmFile.Objects = append(nrmFile.Objects, objects)
}
folderPath := global.CreateDir(date, yamlConfig.NBI.CM.XmlFileDir)
x, _ := xml.MarshalIndent(nrmFile, "", " ")
x = append([]byte(xml.Header), x...)
xmlfile := fmt.Sprintf("%s/CM-HX-%s-%s-%s.xml", folderPath, neType, global.Version, timefile)
err = os.WriteFile(xmlfile, x, 0664)
if err != nil {
log.Error("Failed to write xml file:", err)
return err
}
return nil
}

View File

@@ -1375,7 +1375,7 @@ func (t *TaskFunc) TaskWriteSystemLog(uri, params, body string) {
}
sysLogs := &[]dborm.SystemLog{}
sysLog := &dborm.SystemLog{
User: userName,
UserName: userName,
ProcessName: newProcInfo.Name,
ProcessID: newProcInfo.Pid,
Operation: operation,