1
0
Files
build.ems/docs/06-5GC OMC restful internal intefaces.md
2023-09-07 10:47:34 +08:00

24 KiB
Raw Blame History

EMS restful interfaces


1. 状态管理

  • URI:

    /api/rest/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/systemState?ne_id=0
    

    说明:

    ** elementTypeValue=all/smf/amf/..
    ** all: 表示所有配置的NFems前端->后端)
    ** smf查询smf网元
    ** 参数ne_id指网元标识指定ne_id条件表示查询该网元系统状态ems前端->后端需要带该参数)
    
  • Method:

    GET

  • Return:

    
        "data": [
            {
                "AMF_0": {
                    "error": {
                        "errorCode": "1",
                        "errorInfo": "Internal server error, NF connnect refused"
                    },
                    "ipAddress": "192.168.2.188"
                }
            },
            {
                "SMF_0": {
                    "ipAddress": "192.168.1.232",
                    "systemState": {
                        "capability": 10000,
                        "cpuUsage": {
                            "nfCpuUsage": 2,
                            "sysCpuUsage": 52
                        },
                        "diskSpace": {
                            "partitionInfo": [
                                {
                                    "total": 1920,
                                    "used": 0
                                },
                                {
                                    "total": 393,
                                    "used": 13
                                },
                                {
                                    "total": 48700,
                                    "used": 32431
                                },
                                {
                                    "total": 1965,
                                    "used": 0
                                },
                                {
                                    "total": 5,
                                    "used": 0
                                },
                                {
                                    "total": 1965,
                                    "used": 0
                                },
                                {
                                    "total": 55,
                                    "used": 55
                                },
                                {
                                    "total": 63,
                                    "used": 63
                                },
                                {
                                    "total": 91,
                                    "used": 91
                                },
                                {
                                    "total": 49,
                                    "used": 49
                                },
                                {
                                    "total": 55,
                                    "used": 55
                                },
                                {
                                    "total": 73,
                                    "used": 73
                                },
                                {
                                    "total": 91,
                                    "used": 91
                                },
                                {
                                    "total": 1475,
                                    "used": 206
                                },
                                {
                                    "total": 49,
                                    "used": 49
                                },
                                {
                                    "total": 393,
                                    "used": 13
                                },
                                {
                                    "total": 393,
                                    "used": 0
                                },
                                {
                                    "total": 73,
                                    "used": 73
                                },
                                {
                                    "total": 63,
                                    "used": 63
                                }
                            ],
                            "partitionNum": 19
                        },
                        "expiryDate": "2025-02-28",
                        "memUsage": {
                            "nfUsedMem": 163992,
                            "sysMemUsage": 1345,
                            "totalMem": 4025608
                        },
                        "serialNum": "13740126",
                        "version": "1.5.3.2"
                    }
                }
            },
            {
                "SMF_1": {
                    "ipAddress": "192.168.1.173",
                    "systemState": {
                        "capability": 10000,
                        "cpuUsage": {
                            "nfCpuUsage": 0,
                            "sysCpuUsage": 69
                        },
                        "diskSpace": {
                            "partitionInfo": [
                                {
                                    "total": 3966,
                                    "used": 0
                                },
                                {
                                    "total": 797,
                                    "used": 0
                                },
                                {
                                    "total": 200559,
                                    "used": 5968
                                },
                                {
                                    "total": 3987,
                                    "used": 0
                                },
                                {
                                    "total": 5,
                                    "used": 0
                                },
                                {
                                    "total": 3987,
                                    "used": 0
                                },
                                {
                                    "total": 797,
                                    "used": 0
                                }
                            ],
                            "partitionNum": 7
                        },
                        "expiryDate": "2024-12-31",
                        "memUsage": {
                            "nfUsedMem": 212136,
                            "sysMemUsage": 720,
                            "totalMem": 8167360
                        },
                        "serialNum": "13740272",
                        "version": "1.5.3.3"
                    }
                }
            }
        ]
    }
    

2. 数据库管理(内部接口)

2.1 查询(select)

  • URI:

    /api/rest/databaseManagement/{apiVersion}/{databaseName}/{tableName}?SQL={SQL}|WHERE={WHERE}
    
  • Method:

    GET

  • Params:

    参数关键字大小写敏感

    • WHERE

      WHERE=id=1 and parent_id=0

      说明:

      ** 表名为tableName带的表名
      
    • SQL

      SQL=select count(*) from sysmenu&SQL=SELECT * FROM menu

      说明:

      ** 支持多个SQL查询
      ** SQL只能是查询语句
      ** tableName带的表名忽略
      ** 特殊字符需要转义,如"%"需转义为"%25"
      
  • Return:

    {
        "data": [
            {
                "tableName1": [
                    {
                        "column1": value1,
                        "column2": value2,
                        "column3": value3,
                        ...
                    }
                ]
            },
            {
                "tableName2": [
                    {
                        "column1": value11,
                        "column2": value12,
                        "column3": value13,
                        ...
                    },
                    {
                        "column1": value21,
                        "column2": value22,
                        "column3": value23,
                        ...
                    }
                ]
            }
        ]
    }
    
  • Example:

    • WHERE:

      /api/rest/databaseManagement/v1/omc_db/menu?WHERE=id=1
      
      {
          "data": [
              {
                  "menu": [
                      {
                          "href": "111",
                          "icon": "11",
                          "id": 1,
                          "parent_id": 0,
                          "remark": "0",
                          "title": "test"
                      }
                  ]
              }
          ]
      }
      
    • SQL:

      /api/rest/databaseManagement/v1/omc_db/menu?SQL=select count(*) from sysmenu&SQL=SELECT * FROM menu
      
      {
          "data": [
              {
                  "sysmenu": [
                      {
                          "count(*)": 4
                      }
                  ]
              },
              {
                  "menu": [
                      {
                          "href": "111",
                          "icon": "11",
                          "id": 1,
                          "parent_id": 0,
                          "remark": "0",
                          "title": "test"
                      },
                      {
                          "href": "31",
                          "icon": "313",
                          "id": 2,
                          "parent_id": 1,
                          "remark": "0",
                          "title": "test1"
                      }
                  ]
              }
          ]
      }
      

2.2 增加insert

  • URI:

    /api/rest/databaseManagement/{apiVersion}/{databaseName}/{tableName}
    
  • Method:

    POST

  • Body:

    参数关键字大小写敏感

    {
        "menu": [
            {
                "id": 3,
                "title": "test3",
                "icon": "113",
                "href": "1113",
                "parent_id": 2,
                "remark": "0"
            }
        ]
    }
    

    说明:

    ** 支持多条插入数据
    ** 支持多个表插入数据
    ** tableName带的表名忽略
    
  • Return:

    {
        "data": {
            "affected rows": 1
        }
    }
    

2.3 修改update

  • URI:

    /api/rest/databaseManagement/{apiVersion}/{databaseName}/{tablename}?WHERE={where}
    
  • Method:

    PUT

  • Params:

    • WHERE
      参数关键字大小写敏感
      exp: WHERE=id=1
      
  • Body:

    {
        "menu": [
            {
                "title": "test3",
                "icon": "113",
                "href": "1113",
            }
        ]
    }
    
    
  • Return:

    {
        "data": [
            {
                "tableName1": [
                    {
                        "column1": value1,
                        "column2": value2,
                        "column3": value3,
                        ...
                    }
                ]
            },
            {
                "tableName2": [
                    {
                        "column1": value11,
                        "column2": value12,
                        "column3": value13,
                        ...
                    },
                    {
                        "column1": value21,
                        "column2": value22,
                        "column3": value23,
                        ...
                    }
                ]
            }
        ]
    }
    

2.4 删除delete

  • URI:

    /api/rest/databaseManagement/{apiVersion}/{databaseName}/{tablename}?WHERE={where}
    
  • Method:

    DELETE

  • Params:

    • WHERE
      参数关键字大小写敏感
      exp: WHERE=id=1
      
  • Body:

    NA

  • Return:

    Code: 200/204

3. 配置管理

3.1 参数配置表

  • 类型定义type

    • string

      filter指定字符串长度"filter": "6~100" , 字符串的长度范围,如果单个数字表示最大长度

    • ipv4

      filter忽略

    • ipv6

      filter忽略

    • int

      filter指定整型数的范围"filter": "100~999"

    • enum

      "filter": '{"0": "http", "1": "https"}'

    • bool

      "filter": '{"0": "false", "1": "true"}'

    • regex

      filter为正则表达式

  • Example

    UDM:
    system:
        display: "System"
        list:
        - name: "serviceIP"
            type: "ipv4"
            value: "172.16.5.140"
            access: "read-write"
            filter: ''
            display: "Service IP"
            comment: ""
        - name: "servicePort"
            type: "int"
            value: "8080"
            access: "read-write"
            filter: "0~65535" 
            display: "Service Port"
            comment: "0~65535"
    subsSmfSelection:
        display: "Subs Smf Selection"
        array:
        - name: "index"
            type: "int"
            value: "0"
            access: "read-write"
            filter: '0~15'
            display: "Index"
            comment: "0~15"
        - name: "name"
            type: "string"
            value: 'def_ambr'
            access: "read-write"
            filter: '^.{1,32}$'
            display: "Name"
            comment: "0~32"
        - name: "snssai"
            type: "string"
            value: '1-000001'
            access: "read-write"
            filter: '^\d{1,3}[A-Fa-f0-9]{6}$'
            display: "Snssai"
            comment: ""
        - name: "dnnList"
            type: "int"
            value: '0'
            access: "read-write"
            filter: '0~3'
            display: "Dnn List"
            comment: ""
            array:
            - name: "index"
                type: "int"
                value: "0"
                access: "read-write"
                filter: '0~15'
                display: "index"
                comment: "0~15"
            - name: "dnn"
                type: "string"
                value: 'cmnet'
                access: "read-write"
                filter: '^.{1,32}$'
                display: "Dnn"
                comment: "0~32"
            - name: "defaultDnnInd"
                type: "bool"
                value: 'true'
                access: "read-write"
                filter: 'false;true;'
                display: "default Dnn Indicator"
                comment: ""  
    

    完整文件具体请参考 udm_param_config.yaml

3.2 获取参数

  • URI

    /api/rest/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/config/{paraName}?ne_id=0&loc={index0}/{paraName1}/{index1}/...
    

    说明

    apiVersion: "v1"
    elementTypeValue: udm, smf, amf... 网元类型
    udm paraName: system, subsUEAmbr, subsSmfSelection ...
    非array的参数忽略loc
    
  • Params

    • loc 多层表的定位信息
    • ne_id 网元标识 (ems前端->后端需要带该参数)
  • Method

    GET

  • Return

    /api/rest/systemManagement/v1/elementType/udm/objectType/config/system
    
    {
        "data": [
            {
                "serviceIP": "172.16.5.140",
                "servicePort": "8080",
                "...": "..."
            }
        ]
    }
    
    /api/rest/systemManagement/v1/elementType/udm/objectType/config/subsSmfSelection?loc=1/dnnList
    
    {
        "data": [
            {
                "index": "0",
                "dnn": "cmnet",
                "...": "..."
            },
            {
                "index": "1",
                "dnn": "ims",
                "...": "..."
            }     
        ]
    }
    

3.3 配置参数

  • URI

    /api/rest/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/config/{paraName}?ne_id=0&loc={index0}/{paraName1}/{index1}
    
  • Params

    • loc 多层表的定位信息
    • ne_id 网元标识 (ems前端->后端需要带该参数)
  • Method

    POST/PUT/DELETE

    说明:

    单层表不支持POST/DELETE操作
    
  • Body

    {
        "serviceIP": "172.16.5.140",
        "servicePort": "8080",
        "...": "..."
    }
    

    说明:

    DELETE操作忽略Body
    

3.4 创建网元

  • URI

    /api/rest/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/neInfo
    
  • Params

    N/A

  • Method

    POST

  • Body

    {
    
    }
    

4 跟踪管理

4.1 订阅管理

  • 创建订阅

    • URI

      /api/rest/traceManagement/{apiVersion}/subscriptions
      
    • Method

      POST

    • Body

      {
          "id": "1",
          "filter": "...",
          "callbackUrl": "https://x.x.x.x:x/api/rest/traceManagement/v1/events"
      }
      
    • Return

      {}

  • 查询订阅

    • URI 查询单个订阅:

      /api/rest/traceManagement/{apiVersion}/subscriptions/{id}
      

      查询所有订阅:

      /api/rest/traceManagement/{apiVersion}/subscriptions
      
    • Method

      GET

    • Body

      null

    • Return

      {
          "data": [
              {
                  "id": "1",
                  "filter": "...",
                  "callbackUrl": "https://x.x.x.x:x/api/rest/traceManagement/v1/events"
              }
          ]
      }
      
  • 删除订阅

    • URI

      /api/rest/traceManagement/{apiVersion}/subscriptions/{id}
      
    • Method

      DELETE

    • Body

      null

4.2 事件上报

  • 事件上报

    • URI

      /api/rest/traceManagement/{apiVersion}/events
      
    • Method

      POST

    • Body

      {
          "data": [
              {    
                  "id": ["1", "2"],
                  "key1": "",   
                  "key2": "...",
                  "content": "content0......"
              },
              {    
                  "id": ["1", "3"],
                  "key1": "",  
                  "key2": "...",
                  "content": "content1......"
              }  
          ]
      }
      

5 性能管理

5.1 任务管理

  • URI

    /api/rest/performanceManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/measureTask?id={taskId1}&id={taskId2}
    
  • Method

    POST/PUT/DELETE/PATCH

  • Params

    taskId=1&taskId=2

    • POST: 增加测量任务激活任务不带id参数id在body
    • PUT 修改测量任务激活任务不带id参数id在body
    • DELETE删除测量任务不需要带body带id参数可带多个
    • PATCH: 暂停测量任务不需要带body带id参数可带多个
  • Relation NF

    OMC -> NF/NF -> OMC

  • Body

    下发测量任务的报文结构

    type MeasureTask struct {
        Tasks []struct {
            Id int `json:"Id"`
    
            StartTime string `json:"StartTime"`
            EndTime   string `json:"EndTime"`
    
            Schedule struct {
                Type    string `json:"Type"` // 计划类型Weekly/Monthly
                Days    []int  `json:"Days"` // Weekly: [0,1,...5,6]0~6表示星期日~星期六, Monthly: [1,2,3,...,30,31]一个月的几天
                Periods []struct {
                    Start string `json:"Start"` // 零点或者零点加测量粒度的整数倍 00:15:00
                    End   string `json:"End"`   // 零点加测量粒度的整数倍 08:45:00, 16:15:00
                } `json:"Periods"`
            } `json:"Schedule"`
    
            GranulOption string `json:"GranulOption"` // 测量粒度选项15M/30M/60M/24H
    
            KPISet []struct {
                Code string   `json:"Code"` // 统计编码 如SMFHA01
                KPIs []string `json:"KPIs`  // 指标项集合 ["SMF.AttCreatePduSession", "SMF.AttCreatePduSession._Dnn"]
            } `json:"KPISet"`
        } `json:"Task"`
    }
    
  • Return

5.2 测量数据上报

  • URI

    /api/rest/performanceManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/measureReport
    
  • Method

    POST

  • Body

    网元返回测量数据的报文结构

    type MeasureReport struct {
        Id        int    `json:"Id"`
        Timestamp string `json:"TimeStamp"`
    
        Report struct {
            Period struct {
                StartTime string `json:"StartTime"`
                EndTime   string `json:"EndTime"`
            } `json:"Period"`
    
            Datas []struct {
                Code string `json:"Code"` // 统计编码 如SMFHA01
                KPIs []struct {
                    KPIID     string `json:"KPIID"` // 指标项, 如: SMF.AttCreatePduSession._Dnn
                    KPIValues []struct {
                        Name  string `json:"Name"` // 单个的写"Total", 或者指标项有多个测量项如Dnn的名称写对应的Dnn"cmnet"/"ims"
                        Value int    `json:"Value"`
                    } `json:"KPIValues"`
                } `json:"KPIs"`
            } `json:"Datas"`
        } `json:"Report"`
    }
    

5.3 黄金指标上报

  • URI

    /api/rest/performanceManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/kpiReport/{index}
    
  • Method

    GET

  • Body

    type KpiReport struct {
        Timestamp string `json:"TimeStamp"`
        Task      struct {
            Period struct {
                StartTime string `json:"StartTime"`
                EndTime   string `json:"EndTime"`
            } `json:"Period"`
            NE struct {
                NEName string `json:"NEName"`
                RmUID  string `json:"rmUID"`
                NeType string `json:"NeType"`
                KPIs   []struct {
                    KPIID string `json:"KPIID"`
                    Value int    `json:"Value"`
                    Err   string `json:"Err"`
                } `json:"KPIs"`
            } `json:"NE"`
        } `json:"Task"`
    }
    

6 故障管理

6.1 告警上报

  • URI

    /api/rest/faultManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/alarms
    
  • Method

    POST

  • Relation NF

    NF->OMC

  • Body

    type Alarm struct {
        AlarmSeq          int    `json:"alarmSeq"`
        AlarmId           string `json:"alarmId"`
        NeId              string `json:"neId"`
        AlarmCode         int    `json:"alarmCode"`
        AlarmTitle        string `json:"alarmTitle"`
        EventTime         string `json:"eventTime"`
        AlarmType         string `json:"alarmType"`
        OrigSeverity      string `json:"origSeverity"`
        PVFlag            string `json:"pvFlag"`
        NeName            string `json:"neName"`
        NeType            string `json:"neType"`
        ObjectName        string `json:"objectName"`
        LocationInfo      string `json:"locationInfo"`
        Province          string `json:"province"`
        AlarmStatus       int    `json:"alarmStatus"`
        SpecificProblem   string `json:"specificProblem"`
        SpecificProblemID string `json:"specificProblemID"`
        AddInfo           string `json:"addInfo"`
    }
    

6.2 获取网元告警

  • URI

    /api/rest/faultManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/alarms
    
  • Method

    GET

  • Relationship

    OMC->NF

  • Body

    n/a

  • Return

    type Alarms struct {
        Alarms []struct {
            AlarmSeq          int    `json:"alarmSeq"`
            AlarmId           string `json:"alarmId"`
            NeId              string `json:"neId"`
            AlarmCode         int    `json:"alarmCode"`
            AlarmTitle        string `json:"alarmTitle"`
            EventTime         string `json:"eventTime"`
            AlarmType         string `json:"alarmType"`
            OrigSeverity      string `json:"origSeverity"`
            PVFlag            string `json:"pvFlag"`
            NeName            string `json:"neName"`
            NeType            string `json:"neType"`
            ObjectName        string `json:"objectName"`
            LocationInfo      string `json:"locationInfo"`
            Province          string `json:"province"`
            AlarmStatus       int    `json:"alarmStatus"`
            SpecificProblem   string `json:"specificProblem"`
            SpecificProblemID string `json:"specificProblemID"`
            AddInfo           string `json:"addInfo"`
        } `json:"Alarms"`
    }