feat: 中国星网网络创新研究院-北向模块

This commit is contained in:
TsMask
2024-03-18 16:08:15 +08:00
parent 2d7999c31c
commit 15396e27c4
24 changed files with 127 additions and 55 deletions

View File

@@ -2,7 +2,9 @@
网络管理系统-北向接口
中国星网网络创新研究院-北向模块 `src\modules\api_rest_cxy`, 注入路径:`/nms-cxy/api/rest`,其余功能以网管程序为基础包
功能以网管程序为基础包
- 中国星网网络创新研究院-北向模块 `src\modules\nms_cxy`
## redis 配置文件相关

View File

@@ -3,7 +3,7 @@
# duration: rotation time with xx hours, example: 1/12/24 hours
# count: rotation count of log, default is 30 rotation
logger:
file: d:/local.git/be.ems/restagent/log/restagent.log
file: d:/local.git/nms_nbi/restagent/log/restagent.log
level: trace
duration: 24
count: 2
@@ -26,7 +26,7 @@ rest:
keyFile: ./etc/certs/omc-server.key
webServer:
enabled: true
enabled: false
rootDir: d:/local.git/fe.ems.vue3/dist
listen:
- addr: :80
@@ -178,7 +178,9 @@ testConfig:
file: ./etc/testconfig.yaml
# NMS-中国星网研究院
cxy:
nmsCXY:
# 注入路由组
routerGroup: "/nms-cxy/api/rest"
# 专业编码2位 核心网HX 无线网WX
professionCode: "HX"
# 厂商编码2位 中信科ZX

View File

@@ -8,13 +8,13 @@ import (
"nms_nbi/src/framework/errorcatch"
"nms_nbi/src/framework/middleware"
"nms_nbi/src/framework/middleware/security"
apirestcxy "nms_nbi/src/modules/api_rest_cxy"
"nms_nbi/src/modules/chart"
"nms_nbi/src/modules/common"
"nms_nbi/src/modules/crontask"
"nms_nbi/src/modules/monitor"
networkdata "nms_nbi/src/modules/network_data"
networkelement "nms_nbi/src/modules/network_element"
nmscxy "nms_nbi/src/modules/nms_cxy"
"nms_nbi/src/modules/system"
"nms_nbi/src/modules/trace"
"nms_nbi/src/modules/ws"
@@ -135,5 +135,5 @@ func initModulesRoute(app *gin.Engine) {
// 监控模块 - 含调度处理加入队列,放最后
monitor.Setup(app)
// 北向模块 - 中国星网
apirestcxy.Setup(app)
nmscxy.Setup(app)
}

View File

@@ -1,7 +0,0 @@
package service
// 资源数据处理服务 服务层接口
type IResource interface {
// ResourceDataToFile 资源数据写入文件
ResourceDataToFile(requestId, neType, rmUID, startTime, endTime string) (int64, string)
}

View File

@@ -1,13 +0,0 @@
package service
// 实例化数据层 ResourceImpl 结构体
var NewResourceImpl = &ResourceImpl{}
// 资源数据处理服务 服务层处理
type ResourceImpl struct{}
// ResourceDataToFile 资源数据写入文件
func (s *ResourceImpl) ResourceDataToFile(requestId, neType, rmUID, startTime, endTime string) (int64, string) {
return 0, ""
}

View File

@@ -0,0 +1,35 @@
## 北向模块 - 中国星网网络创新研究院
以网管代码为基础,模块相关配置内部处理
### 模块配置拓展
注册该模块时将以下配置复制到配置文件中,独立层级
```yaml
# NMS-中国星网研究院
nmsCXY:
# 注入路由组
routerGroup: "/nms-cxy/api/rest"
# 专业编码2位 核心网HX 无线网WX
professionCode: "HX"
# 厂商编码2位 中信科ZX
vendorCode: "AG"
# OMC编号3位
omcCode: "001"
# 设备序列号
serialNumber: "1153492"
# Kafka配置
kafka:
addrs:
- "192.168.5.59:19092"
- "192.168.5.59:29092"
- "192.168.5.59:39092"
# OSS配置
oss:
bucketname: "omc-bucket"
endpoint: "192.168.5.59:9000"
useSSL: false
accessKeyID: "aOW0r1gfw74G88Z3XZJ6"
secretAccessKey: "9tDErvtCEuVox6LoQu5BOVtycQKcQjlXOGvjl1eD"
```

View File

@@ -9,9 +9,9 @@ import (
"nms_nbi/src/framework/utils/date"
"nms_nbi/src/framework/utils/ping"
"nms_nbi/src/framework/vo/result"
"nms_nbi/src/modules/api_rest_cxy/service"
"nms_nbi/src/modules/api_rest_cxy/utils/common"
neService "nms_nbi/src/modules/network_element/service"
"nms_nbi/src/modules/nms_cxy/service"
"nms_nbi/src/modules/nms_cxy/utils/common"
"time"

View File

@@ -5,11 +5,11 @@ import (
"nms_nbi/src/framework/i18n"
"nms_nbi/src/framework/utils/ctx"
"nms_nbi/src/framework/vo/result"
"nms_nbi/src/modules/api_rest_cxy/service"
"nms_nbi/src/modules/api_rest_cxy/utils/kafka"
"nms_nbi/src/modules/api_rest_cxy/utils/oss"
neDataModel "nms_nbi/src/modules/network_data/model"
neService "nms_nbi/src/modules/network_element/service"
"nms_nbi/src/modules/nms_cxy/service"
"nms_nbi/src/modules/nms_cxy/utils/kafka"
"nms_nbi/src/modules/nms_cxy/utils/oss"
"github.com/gin-gonic/gin"
)
@@ -20,6 +20,7 @@ var NewTest = &TestController{
alarmService: service.NewAlarmImpl,
configService: service.NewConfigImpl,
performanceService: service.NewPerformanceImpl,
resourceService: service.NewResourceImpl,
}
// 测试接口
@@ -34,6 +35,8 @@ type TestController struct {
configService service.IConfig
// 性能数据处理服务
performanceService service.IPerformance
// 资源数据处理服务
resourceService service.IResource
}
// kafka发送消息
@@ -215,6 +218,15 @@ func (s *TestController) OssTestUp(c *gin.Context) {
})
return
}
if body.OperType == "resource" {
err := s.resourceService.ResourceeUploadOSS("AMF")
c.JSON(200, map[string]any{
"requestId": body.RequestId,
"operType": body.OperType,
"err": err,
})
return
}
c.JSON(200, map[string]any{
"requestId": body.RequestId,

View File

@@ -1,11 +1,12 @@
package apirestcxy
package nmscxy
import (
"nms_nbi/src/framework/config"
"nms_nbi/src/framework/logger"
"nms_nbi/src/framework/middleware"
"nms_nbi/src/modules/api_rest_cxy/controller"
"nms_nbi/src/modules/api_rest_cxy/utils/kafka"
"nms_nbi/src/modules/api_rest_cxy/utils/oss"
"nms_nbi/src/modules/nms_cxy/controller"
"nms_nbi/src/modules/nms_cxy/utils/kafka"
"nms_nbi/src/modules/nms_cxy/utils/oss"
"github.com/gin-gonic/gin"
)
@@ -14,7 +15,8 @@ import (
func Setup(router *gin.Engine) {
logger.Infof("开始加载 ====> NMS-CXY 北向模块路由")
apiRest := router.Group("nms-cxy/api/rest")
routerGroup := config.Get("nmsCXY.routerGroup")
apiRest := router.Group(routerGroup.(string))
// 启动时需要的初始参数
InitLoad()

View File

@@ -1,8 +1,8 @@
package service
import (
"nms_nbi/src/modules/api_rest_cxy/model"
neDataModel "nms_nbi/src/modules/network_data/model"
"nms_nbi/src/modules/nms_cxy/model"
)
// 告警数据处理服务 服务层接口

View File

@@ -8,11 +8,11 @@ import (
"nms_nbi/src/framework/utils/date"
"nms_nbi/src/framework/utils/file"
"nms_nbi/src/framework/utils/parse"
"nms_nbi/src/modules/api_rest_cxy/model"
"nms_nbi/src/modules/api_rest_cxy/utils/common"
"nms_nbi/src/modules/api_rest_cxy/utils/kafka"
neDataModel "nms_nbi/src/modules/network_data/model"
neDataService "nms_nbi/src/modules/network_data/service"
"nms_nbi/src/modules/nms_cxy/model"
"nms_nbi/src/modules/nms_cxy/utils/common"
"nms_nbi/src/modules/nms_cxy/utils/kafka"
)
// 实例化数据层 AlarmImpl 结构体

View File

@@ -4,7 +4,7 @@ import (
"fmt"
"nms_nbi/src/framework/constants/uploadsubpath"
"nms_nbi/src/framework/utils/file"
"nms_nbi/src/modules/api_rest_cxy/utils/common"
"nms_nbi/src/modules/nms_cxy/utils/common"
)
// 实例化数据层 ConfigImpl 结构体

View File

@@ -6,7 +6,7 @@ import (
"nms_nbi/src/framework/i18n"
"nms_nbi/src/framework/utils/file"
"nms_nbi/src/framework/utils/parse"
"nms_nbi/src/modules/api_rest_cxy/utils/common"
"nms_nbi/src/modules/nms_cxy/utils/common"
systemModel "nms_nbi/src/modules/system/model"
systemService "nms_nbi/src/modules/system/service"
)

View File

@@ -4,9 +4,9 @@ import (
"fmt"
"nms_nbi/src/framework/constants/uploadsubpath"
"nms_nbi/src/framework/utils/file"
"nms_nbi/src/modules/api_rest_cxy/utils/common"
neDataModel "nms_nbi/src/modules/network_data/model"
neDataService "nms_nbi/src/modules/network_data/service"
"nms_nbi/src/modules/nms_cxy/utils/common"
)
// 实例化数据层 PerformanceImpl 结构体

View File

@@ -0,0 +1,7 @@
package service
// 资源数据处理服务 服务层接口
type IResource interface {
// ResourceeUploadOSS 资源数据上报
ResourceeUploadOSS(neType string) error
}

View File

@@ -0,0 +1,32 @@
package service
import (
"fmt"
"nms_nbi/src/framework/constants/uploadsubpath"
"nms_nbi/src/framework/utils/file"
"nms_nbi/src/modules/nms_cxy/utils/common"
)
// 实例化数据层 ResourceImpl 结构体
var NewResourceImpl = &ResourceImpl{}
// 资源数据处理服务 服务层处理
type ResourceImpl struct{}
// ResourceeUploadOSS 资源数据上报
func (s *ResourceImpl) ResourceeUploadOSS(neType string) error {
// 配置文件目录
dir := "C:\\usr\\local\\omc\\upload\\export\\2023\\12"
// 文件名
dataSaveFileName := common.DataSaveFileName{}
fileName := dataSaveFileName.ZIP()
filePath := fmt.Sprintf("%s/%s", file.ParseUploadFileDir(uploadsubpath.EXPORT), fileName)
err := file.CompressZipByDir(filePath, dir)
if err != nil {
return err
}
return common.UploadOSSByZip(filePath, neType, "CM")
}

View File

@@ -5,7 +5,7 @@ import (
"nms_nbi/src/framework/config"
"nms_nbi/src/framework/utils/date"
"nms_nbi/src/framework/utils/file"
"nms_nbi/src/modules/api_rest_cxy/utils/oss"
"nms_nbi/src/modules/nms_cxy/utils/oss"
"path/filepath"
"strings"
"time"
@@ -50,7 +50,7 @@ func (s *DataSaveFileName) join() string {
if s.ResCode != "" {
nameArr = append(nameArr, s.ResCode)
} else {
serialNumber := config.Get("cxy.serialNumber").(string)
serialNumber := config.Get("nmsCXY.serialNumber").(string)
serialNumber = fmt.Sprintf("%0*s", 16, serialNumber)
nameArr = append(nameArr, serialNumber)
}
@@ -120,9 +120,9 @@ func DataSaveFilePath(neType, dataType string) string {
//
// 专业编码{separator}OMC厂商编码{separator}OMC编号
func BasePath(separator string) string {
professionCode := config.Get("cxy.professionCode").(string)
vendorCode := config.Get("cxy.vendorCode").(string)
omcCode := config.Get("cxy.omcCode").(string)
professionCode := config.Get("nmsCXY.professionCode").(string)
vendorCode := config.Get("nmsCXY.vendorCode").(string)
omcCode := config.Get("nmsCXY.omcCode").(string)
return fmt.Sprintf("%s%s%s%s%s", professionCode, separator, vendorCode, separator, omcCode)
}

View File

@@ -16,7 +16,7 @@ var KInitConm Kafka
func InitConfig() {
// 服务地址
addrs := []string{}
addrsArr := config.Get("cxy.kafka.addrs").([]any)
addrsArr := config.Get("nmsCXY.kafka.addrs").([]any)
for _, v := range addrsArr {
addrs = append(addrs, v.(string))
}

View File

@@ -15,11 +15,11 @@ var OInitConm *minio.Client
// InitConfig 连接OSS实例
func InitConfig() {
// 读取数据源配置
bucketname := config.Get("cxy.oss.bucketname").(string)
endpoint := config.Get("cxy.oss.endpoint").(string)
useSSL := config.Get("cxy.oss.useSSL").(bool)
accessKeyID := config.Get("cxy.oss.accessKeyID").(string)
secretAccessKey := config.Get("cxy.oss.secretAccessKey").(string)
bucketname := config.Get("nmsCXY.oss.bucketname").(string)
endpoint := config.Get("nmsCXY.oss.endpoint").(string)
useSSL := config.Get("nmsCXY.oss.useSSL").(bool)
accessKeyID := config.Get("nmsCXY.oss.accessKeyID").(string)
secretAccessKey := config.Get("nmsCXY.oss.secretAccessKey").(string)
// 初始minio客户端对象
minioClient, err := minio.New(endpoint, &minio.Options{
@@ -44,7 +44,7 @@ func InitConfig() {
// FileUploadFileByFilePath 文件上传-文件绝对路径
func FileUploadFileByFilePath(filePath, newFileName string) (minio.UploadInfo, error) {
bucketname := config.Get("cxy.oss.bucketname").(string)
bucketname := config.Get("nmsCXY.oss.bucketname").(string)
contentType := "application/octet-stream"
// Upload the test file with FPutObject
ctx := context.Background()