ne service and instance
This commit is contained in:
@@ -329,6 +329,20 @@ udm:
|
|||||||
filter: "{\"0\":\"IPV4\",\"1\":\"IPV6\",\"2\":\"IPV4V6\",\"3\":\"Ethernet\",\"4\":\"Unstruction\",\"5\":\"IPV4 & IPV6\",\"6\":\"IPV4 & IPV4V6\",\"7\":\"IPV6 & IPV4V6\",\"8\":\"IPV4 & IPV6 & IPV4V6\"}"
|
filter: "{\"0\":\"IPV4\",\"1\":\"IPV6\",\"2\":\"IPV4V6\",\"3\":\"Ethernet\",\"4\":\"Unstruction\",\"5\":\"IPV4 & IPV6\",\"6\":\"IPV4 & IPV4V6\",\"7\":\"IPV6 & IPV4V6\",\"8\":\"IPV4 & IPV6 & IPV4V6\"}"
|
||||||
display: "Allowed PDU Session Types"
|
display: "Allowed PDU Session Types"
|
||||||
comment: ""
|
comment: ""
|
||||||
|
- name: "5qi"
|
||||||
|
type: "int"
|
||||||
|
value: "9"
|
||||||
|
access: "read-write"
|
||||||
|
filter: "0~255"
|
||||||
|
display: "5qi"
|
||||||
|
comment: ""
|
||||||
|
- name: "priorityLevel"
|
||||||
|
type: "int"
|
||||||
|
value: "9"
|
||||||
|
access: "read-write"
|
||||||
|
filter: "1~127"
|
||||||
|
display: "Priority Level"
|
||||||
|
comment: ""
|
||||||
- name: "defaultSSCmode"
|
- name: "defaultSSCmode"
|
||||||
type: "enum"
|
type: "enum"
|
||||||
value: "0"
|
value: "0"
|
||||||
@@ -399,20 +413,6 @@ udm:
|
|||||||
filter: "{\"0\":\"Null\",\"1\":\"Required\",\"2\":\"Preferred\",\"3\":\"Not Needed\"}"
|
filter: "{\"0\":\"Null\",\"1\":\"Required\",\"2\":\"Preferred\",\"3\":\"Not Needed\"}"
|
||||||
display: "User Plane Confidentiality"
|
display: "User Plane Confidentiality"
|
||||||
comment: ""
|
comment: ""
|
||||||
- name: "5qi"
|
|
||||||
type: "int"
|
|
||||||
value: "9"
|
|
||||||
access: "read-write"
|
|
||||||
filter: "0~255"
|
|
||||||
display: "5qi"
|
|
||||||
comment: ""
|
|
||||||
- name: "priorityLevel"
|
|
||||||
type: "int"
|
|
||||||
value: "9"
|
|
||||||
access: "read-write"
|
|
||||||
filter: "1~127"
|
|
||||||
display: "Priority Level"
|
|
||||||
comment: ""
|
|
||||||
- name: "arpPriorityLevel"
|
- name: "arpPriorityLevel"
|
||||||
type: "int"
|
type: "int"
|
||||||
value: "6"
|
value: "6"
|
||||||
@@ -517,6 +517,34 @@ udm:
|
|||||||
filter: "{\"0\":\"IPV4\",\"1\":\"IPV6\",\"2\":\"IPV4V6\",\"3\":\"IPV4 or IPV6\"}"
|
filter: "{\"0\":\"IPV4\",\"1\":\"IPV6\",\"2\":\"IPV4V6\",\"3\":\"IPV4 or IPV6\"}"
|
||||||
display: "Pdn Type"
|
display: "Pdn Type"
|
||||||
comment: ""
|
comment: ""
|
||||||
|
- name: "qci"
|
||||||
|
type: "int"
|
||||||
|
value: '9'
|
||||||
|
access: "read-write"
|
||||||
|
filter: '1~255'
|
||||||
|
display: "qci"
|
||||||
|
comment: "1~255"
|
||||||
|
- name: "arpPriorityLevel"
|
||||||
|
type: "int"
|
||||||
|
value: '8'
|
||||||
|
access: "read-write"
|
||||||
|
filter: '1~127'
|
||||||
|
display: "ARP Priority"
|
||||||
|
comment: "1~127"
|
||||||
|
- name: "arpPreemptCap"
|
||||||
|
type: "enum"
|
||||||
|
value: '0'
|
||||||
|
access: "read-write"
|
||||||
|
filter: "{\"0\":\"Not Preempt\",\"1\":\"May Preempt\"}"
|
||||||
|
display: "ARP Preemption Capability"
|
||||||
|
comment: ""
|
||||||
|
- name: "arpPreemptVuln"
|
||||||
|
type: "enum"
|
||||||
|
value: '0'
|
||||||
|
access: "read-write"
|
||||||
|
filter: "{\"0\":\"Not Preemptable\",\"1\":\"Preemptable\"}"
|
||||||
|
display: "ARP Preemption Vulnerability"
|
||||||
|
comment: ""
|
||||||
- name: "contextIdentifier"
|
- name: "contextIdentifier"
|
||||||
type: "int"
|
type: "int"
|
||||||
value: '1'
|
value: '1'
|
||||||
@@ -559,34 +587,6 @@ udm:
|
|||||||
filter: '4~4'
|
filter: '4~4'
|
||||||
display: "Charging Characteristic"
|
display: "Charging Characteristic"
|
||||||
comment: "4~4"
|
comment: "4~4"
|
||||||
- name: "qci"
|
|
||||||
type: "int"
|
|
||||||
value: '9'
|
|
||||||
access: "read-write"
|
|
||||||
filter: '1~255'
|
|
||||||
display: "qci"
|
|
||||||
comment: "1~255"
|
|
||||||
- name: "arpPriorityLevel"
|
|
||||||
type: "int"
|
|
||||||
value: '8'
|
|
||||||
access: "read-write"
|
|
||||||
filter: '1~127'
|
|
||||||
display: "ARP Priority"
|
|
||||||
comment: "1~127"
|
|
||||||
- name: "arpPreemptCap"
|
|
||||||
type: "enum"
|
|
||||||
value: '0'
|
|
||||||
access: "read-write"
|
|
||||||
filter: "{\"0\":\"Not Preempt\",\"1\":\"May Preempt\"}"
|
|
||||||
display: "ARP Preemption Capability"
|
|
||||||
comment: ""
|
|
||||||
- name: "arpPreemptVuln"
|
|
||||||
type: "enum"
|
|
||||||
value: '0'
|
|
||||||
access: "read-write"
|
|
||||||
filter: "{\"0\":\"Not Preemptable\",\"1\":\"Preemptable\"}"
|
|
||||||
display: "ARP Preemption Vulnerability"
|
|
||||||
comment: ""
|
|
||||||
applicationServer:
|
applicationServer:
|
||||||
display: "Application Server"
|
display: "Application Server"
|
||||||
array:
|
array:
|
||||||
@@ -633,7 +633,7 @@ udm:
|
|||||||
display: "Rep Data Size Limit"
|
display: "Rep Data Size Limit"
|
||||||
comment: "0~65535"
|
comment: "0~65535"
|
||||||
- name: "includeRegisterRequest"
|
- name: "includeRegisterRequest"
|
||||||
type: "enum"
|
type: "bool"
|
||||||
value: 'false'
|
value: 'false'
|
||||||
access: "read-write"
|
access: "read-write"
|
||||||
filter: 'false;true;'
|
filter: 'false;true;'
|
||||||
|
|||||||
@@ -28,11 +28,19 @@ var (
|
|||||||
UriNeInfo = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/neInfo"
|
UriNeInfo = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/neInfo"
|
||||||
// NE backup file
|
// NE backup file
|
||||||
UriNeCmFile = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/{neType}/neBackup/{fileName}"
|
UriNeCmFile = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/{neType}/neBackup/{fileName}"
|
||||||
|
// service action uri, action: start/stop/restart
|
||||||
|
UriNeService = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/service/{action}"
|
||||||
|
// nf instance action uri, action: start/stop/restart
|
||||||
|
UriNeInstance = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/instance/{action}"
|
||||||
|
|
||||||
CustomUriParamOmcNeConfig = config.UriPrefix + "/systemManagement/v1/elementType/%s/objectType/config/omcNeConfig"
|
CustomUriParamOmcNeConfig = config.UriPrefix + "/systemManagement/v1/elementType/%s/objectType/config/omcNeConfig"
|
||||||
CustomNeCmUri = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/cm"
|
CustomNeCmUri = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/cm"
|
||||||
CustomUriNeInfo = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/neInfo"
|
CustomUriNeInfo = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/neInfo"
|
||||||
CustomUriNeCmFile = config.UriPrefix + "/systemManagement/{apiVersion}/{neType}/neBackup/{fileName}"
|
CustomUriNeCmFile = config.UriPrefix + "/systemManagement/{apiVersion}/{neType}/neBackup/{fileName}"
|
||||||
|
// service action uri, action: start/stop/restart
|
||||||
|
CustomUriNeService = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/service/{action}"
|
||||||
|
// nf instance action uri, action: start/stop/restart
|
||||||
|
CustomUriNeInstance = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/instance/{action}"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@@ -737,3 +745,144 @@ func DeleteNeBackupFile(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
services.ResponseStatusOK204NoContent(w)
|
services.ResponseStatusOK204NoContent(w)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func PostNeServiceAction(w http.ResponseWriter, r *http.Request) {
|
||||||
|
log.Debug("PostNeServiceAction processing... ")
|
||||||
|
|
||||||
|
_, err := services.CheckFrontValidRequest(w, r)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Request error:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
neType := vars["elementTypeValue"]
|
||||||
|
if neType == "" {
|
||||||
|
log.Error("elementTypeValue is empty")
|
||||||
|
services.ResponseNotFound404UriNotExist(w, r)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//neTypeUpper := strings.ToUpper(neType)
|
||||||
|
neTypeLower := strings.ToLower(neType)
|
||||||
|
action := vars["action"]
|
||||||
|
|
||||||
|
neId := services.GetUriParamString(r, "ne_id", ",", false, false)
|
||||||
|
|
||||||
|
// neInfo := new(dborm.NeInfo)
|
||||||
|
neInfo, err := dborm.XormGetNeInfo(neType, neId)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("Failed to get ne_info:", err)
|
||||||
|
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Debug("neInfo:", neInfo)
|
||||||
|
|
||||||
|
sshHost := fmt.Sprintf("%s@%s", config.GetYamlConfig().NE.User, neInfo.Ip)
|
||||||
|
switch neTypeLower {
|
||||||
|
case "omc":
|
||||||
|
actionCmd := fmt.Sprintf("sudo %s/bin/omcsvc.sh %s", config.GetYamlConfig().NE.OmcDir, action)
|
||||||
|
cmd := exec.Command("ssh", sshHost, actionCmd)
|
||||||
|
out, err := cmd.CombinedOutput()
|
||||||
|
log.Debugf("Exec output: %v", string(out))
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Faile to execute ssh %s omc:", action, err)
|
||||||
|
services.ResponseInternalServerError500ProcessError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case "ims":
|
||||||
|
actionCmd := fmt.Sprintf("sudo ims-%s", action)
|
||||||
|
cmd := exec.Command("ssh", sshHost, actionCmd)
|
||||||
|
out, err := cmd.CombinedOutput()
|
||||||
|
log.Debugf("Exec output: %v", string(out))
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Faile to execute ssh sudo ims-%s command:", action, err)
|
||||||
|
services.ResponseInternalServerError500ProcessError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
actionCmd := fmt.Sprintf("sudo systemctl %s %s.service", action, neTypeLower)
|
||||||
|
cmd := exec.Command("ssh", sshHost, actionCmd)
|
||||||
|
out, err := cmd.CombinedOutput()
|
||||||
|
log.Debugf("Exec output: %v", string(out))
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Faile to execute ssh sudo systemctl command:", err)
|
||||||
|
services.ResponseInternalServerError500ProcessError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
services.ResponseStatusOK204NoContent(w)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PostNeInstanceAction(w http.ResponseWriter, r *http.Request) {
|
||||||
|
log.Debug("PostNeInstanceAction processing... ")
|
||||||
|
|
||||||
|
_, err := services.CheckFrontValidRequest(w, r)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Request error:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
neType := vars["elementTypeValue"]
|
||||||
|
if neType == "" {
|
||||||
|
log.Error("elementTypeValue is empty")
|
||||||
|
services.ResponseNotFound404UriNotExist(w, r)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//neTypeUpper := strings.ToUpper(neType)
|
||||||
|
//neTypeLower := strings.ToLower(neType)
|
||||||
|
action := vars["action"]
|
||||||
|
|
||||||
|
neId := services.GetUriParamString(r, "ne_id", ",", false, false)
|
||||||
|
|
||||||
|
// neInfo := new(dborm.NeInfo)
|
||||||
|
neInfo, err := dborm.XormGetNeInfo(neType, neId)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("Failed to get ne_info:", err)
|
||||||
|
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Debug("neInfo:", neInfo)
|
||||||
|
|
||||||
|
sshHost := fmt.Sprintf("%s@%s", config.GetYamlConfig().NE.User, neInfo.Ip)
|
||||||
|
switch action {
|
||||||
|
case "poweron":
|
||||||
|
actionCmd := "sudo poweron"
|
||||||
|
cmd := exec.Command("ssh", sshHost, actionCmd)
|
||||||
|
out, err := cmd.CombinedOutput()
|
||||||
|
log.Debugf("Exec output: %v", string(out))
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Faile to execute ssh %s omc:", action, err)
|
||||||
|
services.ResponseInternalServerError500ProcessError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case "poweroff":
|
||||||
|
actionCmd := "sudo poweroff"
|
||||||
|
cmd := exec.Command("ssh", sshHost, actionCmd)
|
||||||
|
out, err := cmd.CombinedOutput()
|
||||||
|
log.Debugf("Exec output: %v", string(out))
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Faile to execute ssh sudo poweroff:", err)
|
||||||
|
services.ResponseInternalServerError500ProcessError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case "reboot":
|
||||||
|
actionCmd := "sudo reboot"
|
||||||
|
cmd := exec.Command("ssh", sshHost, actionCmd)
|
||||||
|
out, err := cmd.CombinedOutput()
|
||||||
|
log.Debugf("Exec output: %v", string(out))
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Faile to execute ssh sudo reboot:", err)
|
||||||
|
services.ResponseInternalServerError500ProcessError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
log.Error("Faile to execute ssh sudo systemctl command:", err)
|
||||||
|
services.ResponseInternalServerError500ProcessError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
services.ResponseStatusOK204NoContent(w)
|
||||||
|
}
|
||||||
|
|||||||
@@ -19,10 +19,8 @@ import (
|
|||||||
var (
|
var (
|
||||||
// parameter config management
|
// parameter config management
|
||||||
ParamConfigUri = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/config/{paraName}"
|
ParamConfigUri = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/config/{paraName}"
|
||||||
ParamConfigUrl = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/config/{paraName}"
|
|
||||||
|
|
||||||
CustomParamConfigUri = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/config/{paraName}"
|
CustomParamConfigUri = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/config/{paraName}"
|
||||||
CustomParamConfigUrl = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/config/{paraName}"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetParamConfigFromNF(w http.ResponseWriter, r *http.Request) {
|
func GetParamConfigFromNF(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
@@ -172,7 +172,10 @@ func init() {
|
|||||||
Register("POST", cm.CustomUriNeInfo, cm.PostNeInfo, nil)
|
Register("POST", cm.CustomUriNeInfo, cm.PostNeInfo, nil)
|
||||||
Register("PUT", cm.CustomUriNeInfo, cm.PutNeInfo, nil)
|
Register("PUT", cm.CustomUriNeInfo, cm.PutNeInfo, nil)
|
||||||
Register("DELETE", cm.CustomUriNeInfo, cm.DeleteNeInfo, nil)
|
Register("DELETE", cm.CustomUriNeInfo, cm.DeleteNeInfo, nil)
|
||||||
|
//ne service action handle
|
||||||
|
Register("POST", cm.UriNeService, cm.PostNeServiceAction, nil)
|
||||||
|
//ne service action handle
|
||||||
|
Register("POST", cm.UriNeInstance, cm.PostNeInstanceAction, nil)
|
||||||
// Post MML command to NF
|
// Post MML command to NF
|
||||||
Register("POST", mml.UriMML, mml.PostMMLToNF, nil)
|
Register("POST", mml.UriMML, mml.PostMMLToNF, nil)
|
||||||
Register("POST", mml.UriMMLDiscard, mml.PostMMLToNF, nil)
|
Register("POST", mml.UriMMLDiscard, mml.PostMMLToNF, nil)
|
||||||
|
|||||||
Reference in New Issue
Block a user