Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

If you want to use 5G with HTTP/2 agents, you require a 5G profile configuration. You can select the profile that you configure in the HTTP/2 Server agent configuration.

...

5G Profile - Advanced parameters tab

In this tab, you can add settings in a JSON configuration in accordance with 6.2.6.2.3 "Type: NFProfile" as defined in 3 the specification GPP TS 29.510, https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3345. See the example below:

Note
titleNote!

Values set in the Advanced Parameters tab will override those set in the General tab.

...

Info
titleExample - HTTP/2 Server agent with 5G custom enabeldenabled

The example workflow consists of HTTP/2 Server Agent with 5G Profile enabled and Analysis Agent to construct the NRFSpecificationUDR. When the workflow starts, the HTTP/2 Server Agent will route the NRFSpecificationUDR to the Analysis agent to construct the NRFSpecificationUDR as shown below. The constructed UDR is then routed back to the HTTP/2 Server Agent in order to perform the NF (Network Function) registration, heartbeat and de-registration.


Code Block
consume {
    if (instanceOf(input, NRFSpecificationUDR)) {
        nrf.NRFSpecificationUDR udr = udrCreate(nrf.NRFSpecificationUDR);
        udr.registerCycleUDR = constructRegUdr();
        udr.heartbeatCycleUDR = constructHbUDR();
        udr.deregisterCycleUDR = constructDeRegUDR();
        
        udr.heartBeatFieldName = "heartBeatTimer";
        udr.nfInstanceIdFieldName = "nfInstanceId";
        udr.nfTypeFieldName = "nfType";
        udr.nfProfileChangesSupportIndFieldName = "nfProfileChangesSupportInd";
        
        udrRoute(udr);
    }
}

RequestCycle constructRegUdr() {
    // construct register UDR
    NFProfile nfUdr = udrCreate(NFProfile);
    nfUdr.nfInstanceId = "94d7f196-9d03-11eb-a8b3-0242ac130003";
    nfUdr.heartBeatTimer = 5;
    nfUdr.fqdn = "domain.my";
    nfUdr.nfType = "CHF";
    nfUdr.nfStatus = "REGISTERED";
    nfUdr.nfProfileChangesSupportInd = false;
    list<string> ipv4List = listCreate(string);
    listAdd(ipv4List, "10.60.10.111");
    list<string> ipv6List = listCreate(string);
    listAdd(ipv6List, "2001:db8:85a3::8a2e:370:7334");
    nfUdr.ipv4Addresses = ipv4List;
    nfUdr.ipv6Addresses = ipv6List;
    
    string jsonString = jsonEncodeUdr(nfUdr);
    bytearray ba;
    strToBA(ba, jsonString);
    http.RequestCycle regUDR = udrCreate(http.RequestCycle);
        
    map<string,list<string>> headersMap = mapCreate(string, list<string>);
    list<string> contentList = listCreate(string);
    listAdd(contentList, "application/json");
    mapSet(headersMap, "Content-Type", contentList);
        
    regUDR.headers = headersMap;
   
    regUDR.method = "PUT";
    regUDR.requestTimeout = 10000;
    regUDR.body = ba;
    regUDR.openAPIUDR = nfUdr;
    regUDR.path = "/nnrf-nfm/v1/nf-instances/94d7f196-9d03-11eb-a8b3-0242ac130003";
    return regUDR;
}

RequestCycle constructHbUDR() {
    // construct heartbeat UDR
    PatchItem patchUDR = udrCreate(PatchItem);
    patchUDR.op = "replace";
    patchUDR.path = "/nfstatus1";
    patchUDR.value = "REGISTERED";
    
    string jsonString = "[" + jsonEncodeUdr(patchUDR) + "]";
    bytearray ba;
    strToBA(ba, jsonString);
        
    http.RequestCycle hbUDR = udrCreate(http.RequestCycle);
        
    map<string,list<string>> hbHeadersMap = mapCreate(string, list<string>);
    list<string> hbContentList = listCreate(string);
    listAdd(hbContentList, "application/json-patch+json");
    mapSet(hbHeadersMap, "Content-Type", hbContentList);
        
    hbUDR.headers = hbHeadersMap;
    hbUDR.method = "PATCH";
    hbUDR.requestTimeout = 10000;
    hbUDR.body = ba;
    hbUDR.openAPIUDR = patchUDR;
    hbUDR.path = "/nnrf-nfm/v1/nf-instances/94d7f196-9d03-11eb-a8b3-0242ac130003";
    return hbUDR;
}

RequestCycle constructDeRegUDR() {
    // construct de-regsitration UDR    
    http.RequestCycle udr = udrCreate(http.RequestCycle);
     
    udr.method = "DELETE";
    udr.requestTimeout = 10000;
    udr.path = "/nnrf-nfm/v1/nf-instances/94d7f196-9d03-11eb-a8b3-0242ac130003";
    return udr;
}


...