|
|
|
|
@@ -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
|
|
|
|
|
}
|
|
|
|
|
|