From c2efc26eb0a06633218df97ae8328cdea65de855 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 2 Jul 2024 18:54:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BD=91=E5=85=83=E7=9B=B4=E8=BF=9E?= =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=8F=82=E6=95=B0=E9=85=8D=E7=BD=AE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../network_element/fetch_link/ne_config.go | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/src/modules/network_element/fetch_link/ne_config.go b/src/modules/network_element/fetch_link/ne_config.go index bb55e204..09dfb1a7 100644 --- a/src/modules/network_element/fetch_link/ne_config.go +++ b/src/modules/network_element/fetch_link/ne_config.go @@ -68,3 +68,99 @@ func NeConfigInfo(neInfo model.NeInfo, paramName string) (map[string]any, error) } return resData, nil } + +// NeConfigInfoEdit 网元配置更新 +func NeConfigInfoEdit(neInfo model.NeInfo, paramName string, data map[string]any) (map[string]any, error) { + // array需要层级 + loc := "" + if v, ok := data["index"]; ok { + loc = fmt.Sprintf("?loc=%v", v) + } + // 网元参数配置新增(array) + neUrl := fmt.Sprintf("http://%s:%d/api/rest/systemManagement/v1/elementType/%s/objectType/config/%s%s", neInfo.IP, neInfo.Port, strings.ToLower(neInfo.NeType), paramName, loc) + resBytes, err := fetch.PutJSON(neUrl, data, nil) + var resData map[string]any + if err != nil { + status := err.Error() + logger.Warnf("NeConfigInfoEdit %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("NeConfigInfoEdit Unmarshal %s", err.Error()) + return nil, err + } + return resData, nil +} + +// NeConfigInfoAdd 网元配置新增 array +func NeConfigInfoAdd(neInfo model.NeInfo, paramName string, data map[string]any) (map[string]any, error) { + loc, locOk := data["index"] // 层级 index + if !locOk { + return nil, fmt.Errorf("data not index") + } + // 网元参数配置新增(array) + neUrl := fmt.Sprintf("http://%s:%d/api/rest/systemManagement/v1/elementType/%s/objectType/config/%s?loc=%v", neInfo.IP, neInfo.Port, strings.ToLower(neInfo.NeType), paramName, loc) + resBytes, err := fetch.PostJSON(neUrl, data, nil) + var resData map[string]any + if err != nil { + status := err.Error() + logger.Warnf("NeConfigInfoAdd %s Post \"%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("NeConfigInfoAdd Unmarshal %s", err.Error()) + return nil, err + } + return resData, nil +} + +// NeConfigInfoDel 网元配置删除 array +func NeConfigInfoDel(neInfo model.NeInfo, paramName, index string) (map[string]any, error) { + // 网元参数配置删除(array) + neUrl := fmt.Sprintf("http://%s:%d/api/rest/systemManagement/v1/elementType/%s/objectType/config/%s?loc=%v", neInfo.IP, neInfo.Port, strings.ToLower(neInfo.NeType), paramName, index) + resBytes, err := fetch.Delete(neUrl, nil) + var resData map[string]any + if err != nil { + status := err.Error() + logger.Warnf("NeConfigInfoDel %s Delete \"%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("NeConfigInfoDel Unmarshal %s", err.Error()) + return nil, err + } + return resData, nil +}