96 lines
2.7 KiB
Go
96 lines
2.7 KiB
Go
package service
|
||
|
||
import (
|
||
"encoding/json"
|
||
"fmt"
|
||
"strings"
|
||
"time"
|
||
|
||
"be.ems/src/framework/logger"
|
||
"be.ems/src/framework/utils/fetch"
|
||
"be.ems/src/modules/network_element/model"
|
||
)
|
||
|
||
// NeState 获取网元端服务状态
|
||
func NeState(neInfo model.NeInfo) (map[string]any, error) {
|
||
// 网元状态
|
||
neUrl := fmt.Sprintf("http://%s:%d/api/rest/systemManagement/v1/elementType/%s/objectType/systemState", neInfo.IP, neInfo.Port, strings.ToLower(neInfo.NeType))
|
||
resBytes, err := fetch.Get(neUrl, nil, 1000)
|
||
if err != nil {
|
||
logger.Warnf("NeState %s", err.Error())
|
||
return nil, err
|
||
}
|
||
|
||
// 序列化结果
|
||
var resData map[string]any
|
||
err = json.Unmarshal(resBytes, &resData)
|
||
if err != nil {
|
||
logger.Warnf("NeState Unmarshal %s", err.Error())
|
||
return nil, err
|
||
}
|
||
|
||
// 检查是否有许可时间
|
||
if v, ok := resData["expiryDate"]; ok && v != nil {
|
||
expiryDate := v.(string)
|
||
// UPF存在2000的许可时间,MME会有空字符
|
||
if strings.HasPrefix(expiryDate, "2000") || expiryDate == "" {
|
||
logger.Warnf("NeState %s License Expiration Aanomaly. Get \"%s\"", neInfo.NeType, neUrl)
|
||
return nil, fmt.Errorf("%s License Expiration Aanomaly", neInfo.NeType)
|
||
}
|
||
}
|
||
|
||
return map[string]any{
|
||
"neType": neInfo.NeType,
|
||
"neId": neInfo.NeId,
|
||
"neName": neInfo.NeName,
|
||
"neIP": neInfo.IP,
|
||
"refreshTime": time.Now().UnixMilli(), // 获取时间
|
||
"version": resData["version"],
|
||
"capability": resData["capability"],
|
||
"sn": resData["serialNum"],
|
||
"expire": resData["expiryDate"],
|
||
"cpu": resData["cpuUsage"],
|
||
"mem": resData["memUsage"],
|
||
"disk": resData["diskSpace"],
|
||
}, nil
|
||
}
|
||
|
||
// NeConfigOMC 网元配置对端网管信息
|
||
func NeConfigOMC(neInfo model.NeInfo) (map[string]any, error) {
|
||
// 网元配置对端网管信息
|
||
neUrl := fmt.Sprintf("http://%s:%d/api/rest/systemManagement/v1/elementType/%s/objectType/config/omcNeConfig", neInfo.IP, neInfo.Port, strings.ToLower(neInfo.NeType))
|
||
resBytes, err := fetch.PutJSON(neUrl, map[string]any{
|
||
"neId": neInfo.NeId,
|
||
"neName": neInfo.NeName,
|
||
"port": neInfo.Port,
|
||
"province": neInfo.Province,
|
||
"pvFlag": neInfo.PvFlag,
|
||
"rmUID": neInfo.RmUID,
|
||
"vendorName": neInfo.VendorName,
|
||
"dn": neInfo.Dn,
|
||
}, nil)
|
||
var resData map[string]any
|
||
if err != nil {
|
||
status := err.Error()
|
||
logger.Warnf("NeConfigOMC %s Put \"%s\"", status, neUrl)
|
||
if strings.HasPrefix(status, "201") || strings.HasPrefix(status, "204") {
|
||
return resData, nil
|
||
}
|
||
return nil, err
|
||
}
|
||
|
||
// 200 成功无数据时
|
||
if len(resBytes) == 0 {
|
||
return resData, nil
|
||
}
|
||
|
||
// 序列化结果
|
||
err = json.Unmarshal(resBytes, &resData)
|
||
if err != nil {
|
||
logger.Warnf("NeConfigOMC Unmarshal %s", err.Error())
|
||
return nil, err
|
||
}
|
||
|
||
return resData, nil
|
||
}
|