Commit 7973c3e7 authored by Tien-Thinh Nguyen's avatar Tien-Thinh Nguyen

add both service NFManagement and NFDiscovery

parent c4ccac02
/**
* NRF NFDiscovery Service
* NRF NFDiscovery Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
#include "DiscNFInstancesStoreApi.h"
#include "Helpers.h"
#include "nrf_config.hpp"
#include "logger.hpp"
extern oai::nrf::nrf_config nrf_cfg;
namespace oai {
namespace nrf {
namespace api {
using namespace oai::nrf::helpers;
using namespace oai::nrf::model;
DiscNFInstancesStoreApi::DiscNFInstancesStoreApi(std::shared_ptr<Pistache::Rest::Router> rtr) {
router = rtr;
}
void DiscNFInstancesStoreApi::init() {
setupRoutes();
}
void DiscNFInstancesStoreApi::setupRoutes() {
using namespace Pistache::Rest;
Routes::Get(*router, base + nrf_cfg.sbi_api_version + "/nf-instances", Routes::bind(&DiscNFInstancesStoreApi::search_nf_instances_handler, this));
// Default handler, called when a route is not found
router->addCustomHandler(Routes::bind(&DiscNFInstancesStoreApi::nf_instances_store_api_default_handler, this));
}
void DiscNFInstancesStoreApi::search_nf_instances_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response) {
// Getting the query params
auto targetNfTypeQuery = request.query().get("target-nf-type");
Pistache::Optional<std::string> targetNfType;
if(!targetNfTypeQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(targetNfTypeQuery.get(), valueQuery_instance)){
targetNfType = Pistache::Some(valueQuery_instance);
}
}
auto requesterNfTypeQuery = request.query().get("requester-nf-type");
Pistache::Optional<std::string> requesterNfType;
if(!requesterNfTypeQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(requesterNfTypeQuery.get(), valueQuery_instance)){
requesterNfType = Pistache::Some(valueQuery_instance);
}
}
auto requesterNfInstanceIdQuery = request.query().get("requester-nf-instance-id");
Pistache::Optional<std::string> requesterNfInstanceId;
if(!requesterNfInstanceIdQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(requesterNfInstanceIdQuery.get(), valueQuery_instance)){
requesterNfInstanceId = Pistache::Some(valueQuery_instance);
}
}
auto serviceNamesQuery = request.query().get("service-names");
Pistache::Optional<std::vector<ServiceName>> serviceNames;
if(!serviceNamesQuery.isEmpty()){
std::vector<ServiceName> valueQuery_instance;
if(fromStringValue(serviceNamesQuery.get(), valueQuery_instance)){
serviceNames = Pistache::Some(valueQuery_instance);
}
}
auto requesterNfInstanceFqdnQuery = request.query().get("requester-nf-instance-fqdn");
Pistache::Optional<std::string> requesterNfInstanceFqdn;
if(!requesterNfInstanceFqdnQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(requesterNfInstanceFqdnQuery.get(), valueQuery_instance)){
requesterNfInstanceFqdn = Pistache::Some(valueQuery_instance);
}
}
auto targetPlmnListQuery = request.query().get("target-plmn-list");
Pistache::Optional<std::vector<PlmnId>> targetPlmnList;
if(!targetPlmnListQuery.isEmpty()){
std::vector<PlmnId> valueQuery_instance;
if(fromStringValue(targetPlmnListQuery.get(), valueQuery_instance)){
targetPlmnList = Pistache::Some(valueQuery_instance);
}
}
auto requesterPlmnListQuery = request.query().get("requester-plmn-list");
Pistache::Optional<std::vector<PlmnId>> requesterPlmnList;
if(!requesterPlmnListQuery.isEmpty()){
std::vector<PlmnId> valueQuery_instance;
if(fromStringValue(requesterPlmnListQuery.get(), valueQuery_instance)){
requesterPlmnList = Pistache::Some(valueQuery_instance);
}
}
auto targetNfInstanceIdQuery = request.query().get("target-nf-instance-id");
Pistache::Optional<std::string> targetNfInstanceId;
if(!targetNfInstanceIdQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(targetNfInstanceIdQuery.get(), valueQuery_instance)){
targetNfInstanceId = Pistache::Some(valueQuery_instance);
}
}
auto targetNfFqdnQuery = request.query().get("target-nf-fqdn");
Pistache::Optional<std::string> targetNfFqdn;
if(!targetNfFqdnQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(targetNfFqdnQuery.get(), valueQuery_instance)){
targetNfFqdn = Pistache::Some(valueQuery_instance);
}
}
auto hnrfUriQuery = request.query().get("hnrf-uri");
Pistache::Optional<std::string> hnrfUri;
if(!hnrfUriQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(hnrfUriQuery.get(), valueQuery_instance)){
hnrfUri = Pistache::Some(valueQuery_instance);
}
}
auto snssaisQuery = request.query().get("snssais");
Pistache::Optional<std::vector<Snssai>> snssais;
if(!snssaisQuery.isEmpty()){
std::vector<Snssai> valueQuery_instance;
if(fromStringValue(snssaisQuery.get(), valueQuery_instance)){
snssais = Pistache::Some(valueQuery_instance);
}
}
auto requesterSnssaisQuery = request.query().get("requester-snssais");
Pistache::Optional<std::vector<Snssai>> requesterSnssais;
if(!requesterSnssaisQuery.isEmpty()){
std::vector<Snssai> valueQuery_instance;
if(fromStringValue(requesterSnssaisQuery.get(), valueQuery_instance)){
requesterSnssais = Pistache::Some(valueQuery_instance);
}
}
auto plmnSpecificSnssaiListQuery = request.query().get("plmn-specific-snssai-list");
Pistache::Optional<std::vector<PlmnSnssai>> plmnSpecificSnssaiList;
if(!plmnSpecificSnssaiListQuery.isEmpty()){
std::vector<PlmnSnssai> valueQuery_instance;
if(fromStringValue(plmnSpecificSnssaiListQuery.get(), valueQuery_instance)){
plmnSpecificSnssaiList = Pistache::Some(valueQuery_instance);
}
}
auto dnnQuery = request.query().get("dnn");
Pistache::Optional<std::string> dnn;
if(!dnnQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(dnnQuery.get(), valueQuery_instance)){
dnn = Pistache::Some(valueQuery_instance);
}
}
auto nsiListQuery = request.query().get("nsi-list");
Pistache::Optional<std::vector<std::string>> nsiList;
if(!nsiListQuery.isEmpty()){
std::vector<std::string> valueQuery_instance;
if(fromStringValue(nsiListQuery.get(), valueQuery_instance)){
nsiList = Pistache::Some(valueQuery_instance);
}
}
auto smfServingAreaQuery = request.query().get("smf-serving-area");
Pistache::Optional<std::string> smfServingArea;
if(!smfServingAreaQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(smfServingAreaQuery.get(), valueQuery_instance)){
smfServingArea = Pistache::Some(valueQuery_instance);
}
}
auto taiQuery = request.query().get("tai");
Pistache::Optional<Tai> tai;
if(!taiQuery.isEmpty()){
Tai valueQuery_instance;
if(fromStringValue(taiQuery.get(), valueQuery_instance)){
tai = Pistache::Some(valueQuery_instance);
}
}
auto amfRegionIdQuery = request.query().get("amf-region-id");
Pistache::Optional<std::string> amfRegionId;
if(!amfRegionIdQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(amfRegionIdQuery.get(), valueQuery_instance)){
amfRegionId = Pistache::Some(valueQuery_instance);
}
}
auto amfSetIdQuery = request.query().get("amf-set-id");
Pistache::Optional<std::string> amfSetId;
if(!amfSetIdQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(amfSetIdQuery.get(), valueQuery_instance)){
amfSetId = Pistache::Some(valueQuery_instance);
}
}
auto guamiQuery = request.query().get("guami");
Pistache::Optional<Guami> guami;
if(!guamiQuery.isEmpty()){
Guami valueQuery_instance;
if(fromStringValue(guamiQuery.get(), valueQuery_instance)){
guami = Pistache::Some(valueQuery_instance);
}
}
auto supiQuery = request.query().get("supi");
Pistache::Optional<std::string> supi;
if(!supiQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(supiQuery.get(), valueQuery_instance)){
supi = Pistache::Some(valueQuery_instance);
}
}
auto ueIpv4AddressQuery = request.query().get("ue-ipv4-address");
Pistache::Optional<std::string> ueIpv4Address;
if(!ueIpv4AddressQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(ueIpv4AddressQuery.get(), valueQuery_instance)){
ueIpv4Address = Pistache::Some(valueQuery_instance);
}
}
auto ipDomainQuery = request.query().get("ip-domain");
Pistache::Optional<std::string> ipDomain;
if(!ipDomainQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(ipDomainQuery.get(), valueQuery_instance)){
ipDomain = Pistache::Some(valueQuery_instance);
}
}
auto ueIpv6PrefixQuery = request.query().get("ue-ipv6-prefix");
Pistache::Optional<Ipv6Prefix> ueIpv6Prefix;
if(!ueIpv6PrefixQuery.isEmpty()){
Ipv6Prefix valueQuery_instance;
if(fromStringValue(ueIpv6PrefixQuery.get(), valueQuery_instance)){
ueIpv6Prefix = Pistache::Some(valueQuery_instance);
}
}
auto pgwIndQuery = request.query().get("pgw-ind");
Pistache::Optional<bool> pgwInd;
if(!pgwIndQuery.isEmpty()){
bool valueQuery_instance;
if(fromStringValue(pgwIndQuery.get(), valueQuery_instance)){
pgwInd = Pistache::Some(valueQuery_instance);
}
}
auto pgwQuery = request.query().get("pgw");
Pistache::Optional<std::string> pgw;
if(!pgwQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(pgwQuery.get(), valueQuery_instance)){
pgw = Pistache::Some(valueQuery_instance);
}
}
auto gpsiQuery = request.query().get("gpsi");
Pistache::Optional<std::string> gpsi;
if(!gpsiQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(gpsiQuery.get(), valueQuery_instance)){
gpsi = Pistache::Some(valueQuery_instance);
}
}
auto externalGroupIdentityQuery = request.query().get("external-group-identity");
Pistache::Optional<std::string> externalGroupIdentity;
if(!externalGroupIdentityQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(externalGroupIdentityQuery.get(), valueQuery_instance)){
externalGroupIdentity = Pistache::Some(valueQuery_instance);
}
}
auto dataSetQuery = request.query().get("data-set");
Pistache::Optional<DataSetId> dataSet;
if(!dataSetQuery.isEmpty()){
DataSetId valueQuery_instance;
if(fromStringValue(dataSetQuery.get(), valueQuery_instance)){
dataSet = Pistache::Some(valueQuery_instance);
}
}
auto routingIndicatorQuery = request.query().get("routing-indicator");
Pistache::Optional<std::string> routingIndicator;
if(!routingIndicatorQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(routingIndicatorQuery.get(), valueQuery_instance)){
routingIndicator = Pistache::Some(valueQuery_instance);
}
}
auto groupIdListQuery = request.query().get("group-id-list");
Pistache::Optional<std::vector<std::string>> groupIdList;
if(!groupIdListQuery.isEmpty()){
std::vector<std::string> valueQuery_instance;
if(fromStringValue(groupIdListQuery.get(), valueQuery_instance)){
groupIdList = Pistache::Some(valueQuery_instance);
}
}
auto dnaiListQuery = request.query().get("dnai-list");
Pistache::Optional<std::vector<std::string>> dnaiList;
if(!dnaiListQuery.isEmpty()){
std::vector<std::string> valueQuery_instance;
if(fromStringValue(dnaiListQuery.get(), valueQuery_instance)){
dnaiList = Pistache::Some(valueQuery_instance);
}
}
auto pduSessionTypesQuery = request.query().get("pdu-session-types");
Pistache::Optional<std::vector<PduSessionType>> pduSessionTypes;
if(!pduSessionTypesQuery.isEmpty()){
std::vector<PduSessionType> valueQuery_instance;
if(fromStringValue(pduSessionTypesQuery.get(), valueQuery_instance)){
pduSessionTypes = Pistache::Some(valueQuery_instance);
}
}
auto eventIdListQuery = request.query().get("event-id-list");
Pistache::Optional<std::vector<EventId>> eventIdList;
if(!eventIdListQuery.isEmpty()){
std::vector<EventId> valueQuery_instance;
if(fromStringValue(eventIdListQuery.get(), valueQuery_instance)){
eventIdList = Pistache::Some(valueQuery_instance);
}
}
auto nwdafEventListQuery = request.query().get("nwdaf-event-list");
Pistache::Optional<std::vector<NwdafEvent>> nwdafEventList;
if(!nwdafEventListQuery.isEmpty()){
std::vector<NwdafEvent> valueQuery_instance;
if(fromStringValue(nwdafEventListQuery.get(), valueQuery_instance)){
nwdafEventList = Pistache::Some(valueQuery_instance);
}
}
auto supportedFeaturesQuery = request.query().get("supported-features");
Pistache::Optional<std::string> supportedFeatures;
if(!supportedFeaturesQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(supportedFeaturesQuery.get(), valueQuery_instance)){
supportedFeatures = Pistache::Some(valueQuery_instance);
}
}
auto upfIwkEpsIndQuery = request.query().get("upf-iwk-eps-ind");
Pistache::Optional<bool> upfIwkEpsInd;
if(!upfIwkEpsIndQuery.isEmpty()){
bool valueQuery_instance;
if(fromStringValue(upfIwkEpsIndQuery.get(), valueQuery_instance)){
upfIwkEpsInd = Pistache::Some(valueQuery_instance);
}
}
auto chfSupportedPlmnQuery = request.query().get("chf-supported-plmn");
Pistache::Optional<PlmnId> chfSupportedPlmn;
if(!chfSupportedPlmnQuery.isEmpty()){
PlmnId valueQuery_instance;
if(fromStringValue(chfSupportedPlmnQuery.get(), valueQuery_instance)){
chfSupportedPlmn = Pistache::Some(valueQuery_instance);
}
}
auto preferredLocalityQuery = request.query().get("preferred-locality");
Pistache::Optional<std::string> preferredLocality;
if(!preferredLocalityQuery.isEmpty()){
std::string valueQuery_instance;
if(fromStringValue(preferredLocalityQuery.get(), valueQuery_instance)){
preferredLocality = Pistache::Some(valueQuery_instance);
}
}
auto accessTypeQuery = request.query().get("access-type");
Pistache::Optional<AccessType> accessType;
if(!accessTypeQuery.isEmpty()){
AccessType valueQuery_instance;
if(fromStringValue(accessTypeQuery.get(), valueQuery_instance)){
accessType = Pistache::Some(valueQuery_instance);
}
}
auto limitQuery = request.query().get("limit");
Pistache::Optional<int32_t> limit;
if(!limitQuery.isEmpty()){
int32_t valueQuery_instance;
if(fromStringValue(limitQuery.get(), valueQuery_instance)){
limit = Pistache::Some(valueQuery_instance);
}
}
auto requiredFeaturesQuery = request.query().get("required-features");
Pistache::Optional<std::vector<std::string>> requiredFeatures;
if(!requiredFeaturesQuery.isEmpty()){
std::vector<std::string> valueQuery_instance;
if(fromStringValue(requiredFeaturesQuery.get(), valueQuery_instance)){
requiredFeatures = Pistache::Some(valueQuery_instance);
}
}
auto complexQueryQuery = request.query().get("complex-query");
Pistache::Optional<ComplexQuery> complexQuery;
if(!complexQueryQuery.isEmpty()){
ComplexQuery valueQuery_instance;
if(fromStringValue(complexQueryQuery.get(), valueQuery_instance)){
complexQuery = Pistache::Some(valueQuery_instance);
}
}
auto maxPayloadSizeQuery = request.query().get("max-payload-size");
Pistache::Optional<int32_t> maxPayloadSize;
if(!maxPayloadSizeQuery.isEmpty()){
int32_t valueQuery_instance;
if(fromStringValue(maxPayloadSizeQuery.get(), valueQuery_instance)){
maxPayloadSize = Pistache::Some(valueQuery_instance);
}
}
auto atsssCapabilityQuery = request.query().get("atsss-capability");
Pistache::Optional<AtsssCapability> atsssCapability;
if(!atsssCapabilityQuery.isEmpty()){
AtsssCapability valueQuery_instance;
if(fromStringValue(atsssCapabilityQuery.get(), valueQuery_instance)){
atsssCapability = Pistache::Some(valueQuery_instance);
}
}
auto upfUeIpAddrIndQuery = request.query().get("upf-ue-ip-addr-ind");
Pistache::Optional<bool> upfUeIpAddrInd;
if(!upfUeIpAddrIndQuery.isEmpty()){
bool valueQuery_instance;
if(fromStringValue(upfUeIpAddrIndQuery.get(), valueQuery_instance)){
upfUeIpAddrInd = Pistache::Some(valueQuery_instance);
}
}
// Getting the header params
auto ifNoneMatch = request.headers().tryGetRaw("If-None-Match");
try {
this->search_nf_instances(targetNfType, requesterNfType, requesterNfInstanceId, serviceNames, requesterNfInstanceFqdn, targetPlmnList, requesterPlmnList, targetNfInstanceId, targetNfFqdn, hnrfUri, snssais, requesterSnssais, plmnSpecificSnssaiList, dnn, nsiList, smfServingArea, tai, amfRegionId, amfSetId, guami, supi, ueIpv4Address, ipDomain, ueIpv6Prefix, pgwInd, pgw, gpsi, externalGroupIdentity, dataSet, routingIndicator, groupIdList, dnaiList, pduSessionTypes, eventIdList, nwdafEventList, supportedFeatures, upfIwkEpsInd, chfSupportedPlmn, preferredLocality, accessType, limit, requiredFeatures, complexQuery, maxPayloadSize, atsssCapability, upfUeIpAddrInd, ifNoneMatch, response);
} catch (nlohmann::detail::exception &e) {
//send a 400 error
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (Pistache::Http::HttpError &e) {
response.send(static_cast<Pistache::Http::Code>(e.code()), e.what());
return;
} catch (std::exception &e) {
//send a 500 error
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
}
}
void DiscNFInstancesStoreApi::nf_instances_store_api_default_handler(const Pistache::Rest::Request &, Pistache::Http::ResponseWriter response) {
response.send(Pistache::Http::Code::Not_Found, "The requested method does not exist");
}
}
}
}
/**
* NRF NFDiscovery Service
* NRF NFDiscovery Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/*
* NFInstancesStoreApi.h
*
*
*/
#ifndef DiscNFInstancesStoreApi_H_
#define DiscNFInstancesStoreApi_H_
#include <pistache/http.h>
#include <pistache/router.h>
#include <pistache/http_headers.h>
#include <pistache/optional.h>
#include "AccessType.h"
#include "AtsssCapability.h"
#include "ComplexQuery.h"
#include "DataSetId.h"
#include "EventId.h"
#include "Guami.h"
#include "Ipv6Prefix.h"
#include "NFType.h"
#include "NwdafEvent.h"
#include "PduSessionType.h"
#include "PlmnId.h"
#include "PlmnSnssai.h"
#include "ProblemDetails.h"
#include "SearchResult.h"
#include "ServiceName.h"
#include "Snssai.h"
#include "Tai.h"
#include <string>
#include <set>
namespace oai {
namespace nrf {
namespace api {
using namespace oai::nrf::model;
class DiscNFInstancesStoreApi {
public:
DiscNFInstancesStoreApi(std::shared_ptr<Pistache::Rest::Router>);
virtual ~DiscNFInstancesStoreApi() {}
void init();
const std::string base = "/nnrf-disc/";
private:
void setupRoutes();
void search_nf_instances_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void nf_instances_store_api_default_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
std::shared_ptr<Pistache::Rest::Router> router;
/// <summary>
/// Search a collection of NF Instances
/// </summary>
/// <remarks>
///
/// </remarks>
/// <param name="targetNfType">Type of the target NF</param>
/// <param name="requesterNfType">Type of the requester NF</param>
/// <param name="requesterNfInstanceId">NfInstanceId of the requester NF (optional, default to &quot;&quot;)</param>
/// <param name="serviceNames">Names of the services offered by the NF (optional, default to std::vector&lt;ServiceName&gt;())</param>
/// <param name="requesterNfInstanceFqdn">FQDN of the requester NF (optional, default to &quot;&quot;)</param>
/// <param name="targetPlmnList">Id of the PLMN of the target NF (optional, default to std::vector&lt;PlmnId&gt;())</param>
/// <param name="requesterPlmnList">Id of the PLMN where the NF issuing the Discovery request is located (optional, default to std::vector&lt;PlmnId&gt;())</param>
/// <param name="targetNfInstanceId">Identity of the NF instance being discovered (optional, default to &quot;&quot;)</param>
/// <param name="targetNfFqdn">FQDN of the NF instance being discovered (optional, default to &quot;&quot;)</param>
/// <param name="hnrfUri">Uri of the home NRF (optional, default to &quot;&quot;)</param>
/// <param name="snssais">Slice info of the target NF (optional, default to std::vector&lt;Snssai&gt;())</param>
/// <param name="requesterSnssais">Slice info of the requester NF (optional, default to std::vector&lt;Snssai&gt;())</param>
/// <param name="plmnSpecificSnssaiList">PLMN specific Slice info of the target NF (optional, default to std::vector&lt;PlmnSnssai&gt;())</param>
/// <param name="dnn">Dnn supported by the BSF, SMF or UPF (optional, default to &quot;&quot;)</param>
/// <param name="nsiList">NSI IDs that are served by the services being discovered (optional, default to std::vector&lt;std::string&gt;())</param>
/// <param name="smfServingArea"> (optional, default to &quot;&quot;)</param>
/// <param name="tai">Tracking Area Identity (optional, default to Tai())</param>
/// <param name="amfRegionId">AMF Region Identity (optional, default to &quot;&quot;)</param>
/// <param name="amfSetId">AMF Set Identity (optional, default to &quot;&quot;)</param>
/// <param name="guami">Guami used to search for an appropriate AMF (optional, default to Guami())</param>
/// <param name="supi">SUPI of the user (optional, default to &quot;&quot;)</param>
/// <param name="ueIpv4Address">IPv4 address of the UE (optional, default to &quot;&quot;)</param>
/// <param name="ipDomain">IP domain of the UE, which supported by BSF (optional, default to &quot;&quot;)</param>
/// <param name="ueIpv6Prefix">IPv6 prefix of the UE (optional, default to Ipv6Prefix())</param>
/// <param name="pgwInd">Combined PGW-C and SMF or a standalone SMF (optional, default to false)</param>
/// <param name="pgw">PGW FQDN of a combined PGW-C and SMF (optional, default to &quot;&quot;)</param>
/// <param name="gpsi">GPSI of the user (optional, default to &quot;&quot;)</param>
/// <param name="externalGroupIdentity">external group identifier of the user (optional, default to &quot;&quot;)</param>
/// <param name="dataSet">data set supported by the NF (optional, default to DataSetId())</param>
/// <param name="routingIndicator">routing indicator in SUCI (optional, default to &quot;&quot;)</param>
/// <param name="groupIdList">Group IDs of the NFs being discovered (optional, default to std::vector&lt;std::string&gt;())</param>
/// <param name="dnaiList">Data network access identifiers of the NFs being discovered (optional, default to std::vector&lt;std::string&gt;())</param>
/// <param name="pduSessionTypes">list of PDU Session Type required to be supported by the target NF (optional, default to std::vector&lt;PduSessionType&gt;())</param>
/// <param name="eventIdList">Analytics event(s) requested to be supported by the Nnwdaf_AnalyticsInfo service (optional, default to std::vector&lt;EventId&gt;())</param>
/// <param name="nwdafEventList">Analytics event(s) requested to be supported by the Nnwdaf_EventsSubscription service. (optional, default to std::vector&lt;NwdafEvent&gt;())</param>
/// <param name="supportedFeatures">Features required to be supported by the target NF (optional, default to &quot;&quot;)</param>
/// <param name="upfIwkEpsInd">UPF supporting interworking with EPS or not (optional, default to false)</param>
/// <param name="chfSupportedPlmn">PLMN ID supported by a CHF (optional, default to PlmnId())</param>
/// <param name="preferredLocality">preferred target NF location (optional, default to &quot;&quot;)</param>
/// <param name="accessType">AccessType supported by the target NF (optional, default to AccessType())</param>
/// <param name="limit">Maximum number of NFProfiles to return in the response (optional, default to 0)</param>
/// <param name="requiredFeatures">Features required to be supported by the target NF (optional, default to std::vector&lt;std::string&gt;())</param>
/// <param name="complexQuery">the complex query condition expression (optional, default to ComplexQuery())</param>
/// <param name="maxPayloadSize">Maximum payload size of the response expressed in kilo octets (optional, default to 0)</param>
/// <param name="atsssCapability">ATSSS Capability (optional, default to AtsssCapability())</param>
/// <param name="upfUeIpAddrInd">UPF supporting allocating UE IP addresses/prefixes (optional, default to false)</param>
/// <param name="ifNoneMatch">Validator for conditional requests, as described in IETF RFC 7232, 3.2 (optional, default to &quot;&quot;)</param>
virtual void search_nf_instances(const Pistache::Optional<std::string> &targetNfType, const Pistache::Optional<std::string> &requesterNfType, const Pistache::Optional<std::string> &requesterNfInstanceId, const Pistache::Optional<std::vector<ServiceName>> &serviceNames, const Pistache::Optional<std::string> &requesterNfInstanceFqdn, const Pistache::Optional<std::vector<PlmnId>> &targetPlmnList, const Pistache::Optional<std::vector<PlmnId>> &requesterPlmnList, const Pistache::Optional<std::string> &targetNfInstanceId, const Pistache::Optional<std::string> &targetNfFqdn, const Pistache::Optional<std::string> &hnrfUri, const Pistache::Optional<std::vector<Snssai>> &snssais, const Pistache::Optional<std::vector<Snssai>> &requesterSnssais, const Pistache::Optional<std::vector<PlmnSnssai>> &plmnSpecificSnssaiList, const Pistache::Optional<std::string> &dnn, const Pistache::Optional<std::vector<std::string>> &nsiList, const Pistache::Optional<std::string> &smfServingArea, const Pistache::Optional<Tai> &tai, const Pistache::Optional<std::string> &amfRegionId, const Pistache::Optional<std::string> &amfSetId, const Pistache::Optional<Guami> &guami, const Pistache::Optional<std::string> &supi, const Pistache::Optional<std::string> &ueIpv4Address, const Pistache::Optional<std::string> &ipDomain, const Pistache::Optional<Ipv6Prefix> &ueIpv6Prefix, const Pistache::Optional<bool> &pgwInd, const Pistache::Optional<std::string> &pgw, const Pistache::Optional<std::string> &gpsi, const Pistache::Optional<std::string> &externalGroupIdentity, const Pistache::Optional<DataSetId> &dataSet, const Pistache::Optional<std::string> &routingIndicator, const Pistache::Optional<std::vector<std::string>> &groupIdList, const Pistache::Optional<std::vector<std::string>> &dnaiList, const Pistache::Optional<std::vector<PduSessionType>> &pduSessionTypes, const Pistache::Optional<std::vector<EventId>> &eventIdList, const Pistache::Optional<std::vector<NwdafEvent>> &nwdafEventList, const Pistache::Optional<std::string> &supportedFeatures, const Pistache::Optional<bool> &upfIwkEpsInd, const Pistache::Optional<PlmnId> &chfSupportedPlmn, const Pistache::Optional<std::string> &preferredLocality, const Pistache::Optional<AccessType> &accessType, const Pistache::Optional<int32_t> &limit, const Pistache::Optional<std::vector<std::string>> &requiredFeatures, const Pistache::Optional<ComplexQuery> &complexQuery, const Pistache::Optional<int32_t> &maxPayloadSize, const Pistache::Optional<AtsssCapability> &atsssCapability, const Pistache::Optional<bool> &upfUeIpAddrInd, const Pistache::Optional<Pistache::Http::Header::Raw> &ifNoneMatch, Pistache::Http::ResponseWriter &response) = 0;
};
}
}
}
#endif /* NFInstancesStoreApi_H_ */
......@@ -13,6 +13,7 @@
#include "NFInstancesStoreApi.h"
#include "Helpers.h"
#include "nrf_config.hpp"
#include "logger.hpp"
extern oai::nrf::nrf_config nrf_cfg;
......@@ -45,10 +46,10 @@ void NFInstancesStoreApi::get_nf_instances_handler(const Pistache::Rest::Request
// Getting the query params
auto nfTypeQuery = request.query().get("nf-type");
Pistache::Optional<NFType> nfType;
Pistache::Optional<std::string> nfType;
if(!nfTypeQuery.isEmpty()){
NFType valueQuery_instance;
if(fromStringValue(nfTypeQuery.get(), valueQuery_instance)){
std::string valueQuery_instance;
if(helpers::fromStringValue(nfTypeQuery.get(), valueQuery_instance)){
nfType = Pistache::Some(valueQuery_instance);
}
}
......@@ -56,7 +57,7 @@ void NFInstancesStoreApi::get_nf_instances_handler(const Pistache::Rest::Request
Pistache::Optional<int32_t> limit;
if(!limitQuery.isEmpty()){
int32_t valueQuery_instance;
if(fromStringValue(limitQuery.get(), valueQuery_instance)){
if(helpers::fromStringValue(limitQuery.get(), valueQuery_instance)){
limit = Pistache::Some(valueQuery_instance);
}
}
......
......@@ -76,7 +76,7 @@ private:
/// </remarks>
/// <param name="nfType">Type of NF (optional, default to NFType())</param>
/// <param name="limit">How many items to return at one time (optional, default to 0)</param>
virtual void get_nf_instances(const Pistache::Optional<NFType> &nfType, const Pistache::Optional<int32_t> &limit, Pistache::Http::ResponseWriter &response) = 0;
virtual void get_nf_instances(const Pistache::Optional<std::string> &nfType, const Pistache::Optional<int32_t> &limit, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Discover communication options supported by NRF for NF Instances
......
/**
* NRF NFDiscovery Service
* NRF NFDiscovery Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* NRF NFDiscovery Service
* NRF NFDiscovery Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/*
* CompleteStoredSearchDocumentApiImpl.h
*
*
*/
* CompleteStoredSearchDocumentApiImpl.h
*
*
*/
#ifndef COMPLETE_STORED_SEARCH_DOCUMENT_API_IMPL_H_
#define COMPLETE_STORED_SEARCH_DOCUMENT_API_IMPL_H_
#include <pistache/endpoint.h>
#include <pistache/http.h>
#include <pistache/router.h>
......@@ -33,7 +32,6 @@
#include "nrf_app.hpp"
#include <string>
namespace oai {
namespace nrf {
namespace api {
......@@ -60,6 +58,4 @@ class CompleteStoredSearchDocumentApiImpl :
}
}
#endif
/**
* NRF NFDiscovery Service
* NRF NFDiscovery Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
#include "DiscNFInstancesStoreApiImpl.h"
#include <set>
namespace oai {
namespace nrf {
namespace api {
using namespace oai::nrf::model;
DiscNFInstancesStoreApiImpl::DiscNFInstancesStoreApiImpl(
std::shared_ptr<Pistache::Rest::Router> rtr,
oai::nrf::nrf_app *nrf_app_inst, std::string address)
:
DiscNFInstancesStoreApi(rtr),
m_nrf_app(nrf_app_inst),
m_address(address) {
}
void DiscNFInstancesStoreApiImpl::search_nf_instances(
const Pistache::Optional<std::string> &targetNfType,
const Pistache::Optional<std::string> &requesterNfType,
const Pistache::Optional<std::string> &requesterNfInstanceId,
const Pistache::Optional<std::vector<ServiceName>> &serviceNames,
const Pistache::Optional<std::string> &requesterNfInstanceFqdn,
const Pistache::Optional<std::vector<PlmnId>> &targetPlmnList,
const Pistache::Optional<std::vector<PlmnId>> &requesterPlmnList,
const Pistache::Optional<std::string> &targetNfInstanceId,
const Pistache::Optional<std::string> &targetNfFqdn,
const Pistache::Optional<std::string> &hnrfUri,
const Pistache::Optional<std::vector<Snssai>> &snssais,
const Pistache::Optional<std::vector<Snssai>> &requesterSnssais,
const Pistache::Optional<std::vector<PlmnSnssai>> &plmnSpecificSnssaiList,
const Pistache::Optional<std::string> &dnn,
const Pistache::Optional<std::vector<std::string>> &nsiList,
const Pistache::Optional<std::string> &smfServingArea,
const Pistache::Optional<Tai> &tai,
const Pistache::Optional<std::string> &amfRegionId,
const Pistache::Optional<std::string> &amfSetId,
const Pistache::Optional<Guami> &guami,
const Pistache::Optional<std::string> &supi,
const Pistache::Optional<std::string> &ueIpv4Address,
const Pistache::Optional<std::string> &ipDomain,
const Pistache::Optional<Ipv6Prefix> &ueIpv6Prefix,
const Pistache::Optional<bool> &pgwInd,
const Pistache::Optional<std::string> &pgw,
const Pistache::Optional<std::string> &gpsi,
const Pistache::Optional<std::string> &externalGroupIdentity,
const Pistache::Optional<DataSetId> &dataSet,
const Pistache::Optional<std::string> &routingIndicator,
const Pistache::Optional<std::vector<std::string>> &groupIdList,
const Pistache::Optional<std::vector<std::string>> &dnaiList,
const Pistache::Optional<std::vector<PduSessionType>> &pduSessionTypes,
const Pistache::Optional<std::vector<EventId>> &eventIdList,
const Pistache::Optional<std::vector<NwdafEvent>> &nwdafEventList,
const Pistache::Optional<std::string> &supportedFeatures,
const Pistache::Optional<bool> &upfIwkEpsInd,
const Pistache::Optional<PlmnId> &chfSupportedPlmn,
const Pistache::Optional<std::string> &preferredLocality,
const Pistache::Optional<AccessType> &accessType,
const Pistache::Optional<int32_t> &limit,
const Pistache::Optional<std::vector<std::string>> &requiredFeatures,
const Pistache::Optional<ComplexQuery> &complexQuery,
const Pistache::Optional<int32_t> &maxPayloadSize,
const Pistache::Optional<AtsssCapability> &atsssCapability,
const Pistache::Optional<bool> &upfUeIpAddrInd,
const Pistache::Optional<Pistache::Http::Header::Raw> &ifNoneMatch,
Pistache::Http::ResponseWriter &response) {
response.send(Pistache::Http::Code::Ok, "Do some magic\n");
}
}
}
}
/**
* NRF NFDiscovery Service
* NRF NFDiscovery Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/*
* NFInstancesStoreApiImpl.h
*
*
*/
#ifndef DISC_NF_INSTANCES_STORE_API_IMPL_H_
#define DISC_NF_INSTANCES_STORE_API_IMPL_H_
#include <pistache/endpoint.h>
#include <pistache/http.h>
#include <pistache/router.h>
#include <memory>
#include <DiscNFInstancesStoreApi.h>
#include <pistache/optional.h>
#include "AccessType.h"
#include "AtsssCapability.h"
#include "ComplexQuery.h"
#include "DataSetId.h"
#include "EventId.h"
#include "Guami.h"
#include "Ipv6Prefix.h"
#include "NFType.h"
#include "NwdafEvent.h"
#include "PduSessionType.h"
#include "PlmnId.h"
#include "PlmnSnssai.h"
#include "ProblemDetails.h"
#include "SearchResult.h"
#include "ServiceName.h"
#include "Snssai.h"
#include "Tai.h"
#include "nrf_app.hpp"
#include <string>
#include <set>
namespace oai {
namespace nrf {
namespace api {
using namespace oai::nrf::model;
class DiscNFInstancesStoreApiImpl : public oai::nrf::api::DiscNFInstancesStoreApi {
public:
DiscNFInstancesStoreApiImpl(std::shared_ptr<Pistache::Rest::Router>,
oai::nrf::nrf_app *nrf_app_inst, std::string address);
~DiscNFInstancesStoreApiImpl() {
}
void search_nf_instances(
const Pistache::Optional<std::string> &targetNfType,
const Pistache::Optional<std::string> &requesterNfType,
const Pistache::Optional<std::string> &requesterNfInstanceId,
const Pistache::Optional<std::vector<ServiceName>> &serviceNames,
const Pistache::Optional<std::string> &requesterNfInstanceFqdn,
const Pistache::Optional<std::vector<PlmnId>> &targetPlmnList,
const Pistache::Optional<std::vector<PlmnId>> &requesterPlmnList,
const Pistache::Optional<std::string> &targetNfInstanceId,
const Pistache::Optional<std::string> &targetNfFqdn,
const Pistache::Optional<std::string> &hnrfUri,
const Pistache::Optional<std::vector<Snssai>> &snssais,
const Pistache::Optional<std::vector<Snssai>> &requesterSnssais,
const Pistache::Optional<std::vector<PlmnSnssai>> &plmnSpecificSnssaiList,
const Pistache::Optional<std::string> &dnn,
const Pistache::Optional<std::vector<std::string>> &nsiList,
const Pistache::Optional<std::string> &smfServingArea,
const Pistache::Optional<Tai> &tai,
const Pistache::Optional<std::string> &amfRegionId,
const Pistache::Optional<std::string> &amfSetId,
const Pistache::Optional<Guami> &guami,
const Pistache::Optional<std::string> &supi,
const Pistache::Optional<std::string> &ueIpv4Address,
const Pistache::Optional<std::string> &ipDomain,
const Pistache::Optional<Ipv6Prefix> &ueIpv6Prefix,
const Pistache::Optional<bool> &pgwInd,
const Pistache::Optional<std::string> &pgw,
const Pistache::Optional<std::string> &gpsi,
const Pistache::Optional<std::string> &externalGroupIdentity,
const Pistache::Optional<DataSetId> &dataSet,
const Pistache::Optional<std::string> &routingIndicator,
const Pistache::Optional<std::vector<std::string>> &groupIdList,
const Pistache::Optional<std::vector<std::string>> &dnaiList,
const Pistache::Optional<std::vector<PduSessionType>> &pduSessionTypes,
const Pistache::Optional<std::vector<EventId>> &eventIdList,
const Pistache::Optional<std::vector<NwdafEvent>> &nwdafEventList,
const Pistache::Optional<std::string> &supportedFeatures,
const Pistache::Optional<bool> &upfIwkEpsInd,
const Pistache::Optional<PlmnId> &chfSupportedPlmn,
const Pistache::Optional<std::string> &preferredLocality,
const Pistache::Optional<AccessType> &accessType,
const Pistache::Optional<int32_t> &limit,
const Pistache::Optional<std::vector<std::string>> &requiredFeatures,
const Pistache::Optional<ComplexQuery> &complexQuery,
const Pistache::Optional<int32_t> &maxPayloadSize,
const Pistache::Optional<AtsssCapability> &atsssCapability,
const Pistache::Optional<bool> &upfUeIpAddrInd,
const Pistache::Optional<Pistache::Http::Header::Raw> &ifNoneMatch,
Pistache::Http::ResponseWriter &response);
private:
oai::nrf::nrf_app *m_nrf_app;
std::string m_address;
};
}
}
}
#endif
......@@ -26,7 +26,7 @@ NFInstancesStoreApiImpl::NFInstancesStoreApiImpl(
m_nrf_app(nrf_app_inst),
m_address(address) {
}
void NFInstancesStoreApiImpl::get_nf_instances(const Pistache::Optional<NFType> &nfType, const Pistache::Optional<int32_t> &limit, Pistache::Http::ResponseWriter &response) {
void NFInstancesStoreApiImpl::get_nf_instances(const Pistache::Optional<std::string> &nfType, const Pistache::Optional<int32_t> &limit, Pistache::Http::ResponseWriter &response) {
response.send(Pistache::Http::Code::Ok, "Do some magic\n");
}
void NFInstancesStoreApiImpl::options_nf_instances(Pistache::Http::ResponseWriter &response) {
......
......@@ -64,7 +64,7 @@ public:
std::string address);
~NFInstancesStoreApiImpl() {}
void get_nf_instances(const Pistache::Optional<NFType> &nfType, const Pistache::Optional<int32_t> &limit, Pistache::Http::ResponseWriter &response);
void get_nf_instances(const Pistache::Optional<std::string> &nfType, const Pistache::Optional<int32_t> &limit, Pistache::Http::ResponseWriter &response);
void options_nf_instances(Pistache::Http::ResponseWriter &response);
private:
oai::nrf::nrf_app *m_nrf_app;
......
......@@ -134,6 +134,24 @@ bool fromStringValue(const std::string &inStr, oai::nrf::model::AtsssCapability
return true;
}
bool fromStringValue(const std::string &inStr, oai::nrf::model::Tai &value) {
//TODO
return true;
}
bool fromStringValue(const std::string &inStr, oai::nrf::model::Guami &value) {
//TODO
return true;
}
bool fromStringValue(const std::string &inStr, oai::nrf::model::Ipv6Prefix &value) {
//TODO
return true;
}
bool fromStringValue(const std::string &inStr, oai::nrf::model::DataSetId &value) {
//TODO
return true;
}
}
}
}
......@@ -33,6 +33,10 @@
#include "AccessType.h"
#include "ComplexQuery.h"
#include "AtsssCapability.h"
#include "Tai.h"
#include "Guami.h"
#include "DataSetId.h"
#include "Ipv6Prefix.h"
namespace oai {
namespace nrf {
......@@ -61,6 +65,12 @@ namespace helpers {
bool fromStringValue(const std::string &inStr, oai::nrf::model::AccessType &value);
bool fromStringValue(const std::string &inStr, oai::nrf::model::ComplexQuery &value);
bool fromStringValue(const std::string &inStr, oai::nrf::model::AtsssCapability &value);
bool fromStringValue(const std::string &inStr, oai::nrf::model::Tai &value);
bool fromStringValue(const std::string &inStr, oai::nrf::model::Guami &value);
bool fromStringValue(const std::string &inStr, oai::nrf::model::Ipv6Prefix &value);
bool fromStringValue(const std::string &inStr, oai::nrf::model::DataSetId &value);
template<typename T>
bool fromStringValue(const std::vector<std::string> &inStr, std::vector<T> &value){
......
......@@ -639,11 +639,11 @@ void NFProfile::unsetAllowedPlmns()
{
m_AllowedPlmnsIsSet = false;
}
std::vector<NFType>& NFProfile::getAllowedNfTypes()
std::vector<std::string>& NFProfile::getAllowedNfTypes()
{
return m_AllowedNfTypes;
}
void NFProfile::setAllowedNfTypes(std::vector<NFType> const& value)
void NFProfile::setAllowedNfTypes(std::vector<std::string> const& value)
{
m_AllowedNfTypes = value;
m_AllowedNfTypesIsSet = true;
......@@ -758,23 +758,6 @@ void NFProfile::unsetLocality()
{
m_LocalityIsSet = false;
}
int32_t NFProfile::getPriority() const
{
return m_Priority;
}
void NFProfile::setPriority(int32_t const value)
{
m_Priority = value;
m_PriorityIsSet = true;
}
bool NFProfile::priorityIsSet() const
{
return m_PriorityIsSet;
}
void NFProfile::unsetPriority()
{
m_PriorityIsSet = false;
}
UdrInfo NFProfile::getUdrInfo() const
{
return m_UdrInfo;
......
......@@ -156,8 +156,8 @@ public:
/// <summary>
///
/// </summary>
std::vector<NFType>& getAllowedNfTypes();
void setAllowedNfTypes(std::vector<NFType> const& value);
std::vector<std::string>& getAllowedNfTypes();
void setAllowedNfTypes(std::vector<std::string> const& value);
bool allowedNfTypesIsSet() const;
void unsetAllowedNfTypes();
/// <summary>
......@@ -204,12 +204,6 @@ public:
void unsetLocality();
/// <summary>
///
/// </summary>
int32_t getPriority() const;
void setPriority(int32_t const value);
bool priorityIsSet() const;
void unsetPriority();
/// <summary>
///
/// </summary>
UdrInfo getUdrInfo() const;
......@@ -430,14 +424,12 @@ protected:
bool m_Ipv6AddressesIsSet;
std::vector<PlmnId> m_AllowedPlmns;
bool m_AllowedPlmnsIsSet;
std::vector<NFType> m_AllowedNfTypes;
std::vector<std::string> m_AllowedNfTypes;
bool m_AllowedNfTypesIsSet;
std::vector<std::string> m_AllowedNfDomains;
bool m_AllowedNfDomainsIsSet;
std::vector<Snssai> m_AllowedNssais;
bool m_AllowedNssaisIsSet;
int32_t m_Priority;
bool m_PriorityIsSet;
int32_t m_Capacity;
bool m_CapacityIsSet;
int32_t m_Load;
......
......@@ -330,11 +330,11 @@ void NFService::unsetAllowedPlmns()
{
m_AllowedPlmnsIsSet = false;
}
std::vector<NFType>& NFService::getAllowedNfTypes()
std::vector<std::string>& NFService::getAllowedNfTypes()
{
return m_AllowedNfTypes;
}
void NFService::setAllowedNfTypes(std::vector<NFType> const& value)
void NFService::setAllowedNfTypes(std::vector<std::string> const& value)
{
m_AllowedNfTypes = value;
m_AllowedNfTypesIsSet = true;
......@@ -432,23 +432,7 @@ void NFService::unsetLoad()
{
m_LoadIsSet = false;
}
int32_t NFService::getPriority() const
{
return m_Priority;
}
void NFService::setPriority(int32_t const value)
{
m_Priority = value;
m_PriorityIsSet = true;
}
bool NFService::priorityIsSet() const
{
return m_PriorityIsSet;
}
void NFService::unsetPriority()
{
m_PriorityIsSet = false;
}
std::string NFService::getRecoveryTime() const
{
return m_RecoveryTime;
......
......@@ -120,8 +120,8 @@ public:
/// <summary>
///
/// </summary>
std::vector<NFType>& getAllowedNfTypes();
void setAllowedNfTypes(std::vector<NFType> const& value);
std::vector<std::string>& getAllowedNfTypes();
void setAllowedNfTypes(std::vector<std::string> const& value);
bool allowedNfTypesIsSet() const;
void unsetAllowedNfTypes();
/// <summary>
......@@ -140,12 +140,6 @@ public:
void unsetAllowedNssais();
/// <summary>
///
/// </summary>
int32_t getPriority() const;
void setPriority(int32_t const value);
bool priorityIsSet() const;
void unsetPriority();
/// <summary>
///
/// </summary>
int32_t getCapacity() const;
......@@ -213,7 +207,7 @@ protected:
bool m_DefaultNotificationSubscriptionsIsSet;
std::vector<PlmnId> m_AllowedPlmns;
bool m_AllowedPlmnsIsSet;
std::vector<NFType> m_AllowedNfTypes;
std::vector<std::string> m_AllowedNfTypes;
bool m_AllowedNfTypesIsSet;
std::vector<std::string> m_AllowedNfDomains;
bool m_AllowedNfDomainsIsSet;
......@@ -225,8 +219,6 @@ protected:
bool m_CapacityIsSet;
int32_t m_Load;
bool m_LoadIsSet;
int32_t m_Priority;
bool m_PriorityIsSet;
std::string m_RecoveryTime;
bool m_RecoveryTimeIsSet;
ChfServiceInfo m_ChfServiceInfo;
......
......@@ -86,6 +86,7 @@ void NRFApiServer::init(size_t thr) {
m_nfInstanceIDDocumentApiImpl->init();
m_subscriptionIDDocumentApiImpl->init();
m_subscriptionsCollectionApiImpl->init();
m_discNFInstancesStoreApiImpl->init();
}
void NRFApiServer::start() {
Logger::nrf_sbi().info("HTTP1 server started");
......
......@@ -46,10 +46,10 @@
#include "CompleteStoredSearchDocumentApiImpl.h"
#include "NFInstancesStoreApiImpl.h"
#include "StoredSearchDocumentApiImpl.h"
#include "NFInstanceIDDocumentApiImpl.h"
#include "SubscriptionIDDocumentApiImpl.h"
#include "SubscriptionsCollectionApiImpl.h"
#include "DiscNFInstancesStoreApiImpl.h"
#include "nrf_app.hpp"
using namespace oai::nrf::api;
......@@ -73,6 +73,9 @@ class NRFApiServer {
SubscriptionIDDocumentApiImpl>(m_router, nrf_app_inst, m_address);
m_subscriptionsCollectionApiImpl = std::make_shared<
SubscriptionsCollectionApiImpl>(m_router, nrf_app_inst, m_address);
m_discNFInstancesStoreApiImpl = std::make_shared<
DiscNFInstancesStoreApiImpl>(m_router, nrf_app_inst, m_address);
}
void init(size_t thr = 1);
void start();
......@@ -87,6 +90,7 @@ class NRFApiServer {
std::shared_ptr<NFInstanceIDDocumentApiImpl> m_nfInstanceIDDocumentApiImpl;
std::shared_ptr<SubscriptionIDDocumentApiImpl> m_subscriptionIDDocumentApiImpl;
std::shared_ptr<SubscriptionsCollectionApiImpl> m_subscriptionsCollectionApiImpl;
std::shared_ptr<DiscNFInstancesStoreApiImpl> m_discNFInstancesStoreApiImpl;
std::string m_address;
};
......
......@@ -61,7 +61,7 @@ class nrf_profile : public std::enable_shared_from_this<nrf_profile> {
std::string nf_status;
/*
std::vector<PlmnId> m_PlmnList;
bool m_PlmnListIsSet;
std::vector<Snssai> m_SNssais;
......@@ -130,7 +130,7 @@ class nrf_profile : public std::enable_shared_from_this<nrf_profile> {
bool m_NfServicesIsSet;
std::vector<DefaultNotificationSubscription> m_DefaultNotificationSubscriptions;
bool m_DefaultNotificationSubscriptionsIsSet;
*/
};
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment