From 2effa31635f1b8349c02b4c1c546bfc67e8797d3 Mon Sep 17 00:00:00 2001 From: elinuxhenrik Date: Thu, 8 Dec 2022 10:50:56 +0100 Subject: [PATCH] First version ov eventservice Issue-ID: NONRTRIC-814 Signed-off-by: elinuxhenrik Change-Id: I311b844a425c8ff81b4c288f6ccf58947cbb767d --- .../docs/diagrams/Information model for CAPIF.svg | 271 +++++++++++---------- capifcore/docs/diagrams/classdiagram.plantuml | 12 + .../eventsapi/generator_settings_server.yaml | 10 +- .../internal/eventsapi/eventsapi-server.gen.go | 51 ++++ capifcore/internal/eventservice/eventservice.go | 150 ++++++++++++ .../internal/eventservice/eventservice_test.go | 204 ++++++++++++++++ capifcore/internal/restclient/HTTPClient.go | 80 ++++++ capifcore/internal/restclient/HTTPClient_test.go | 116 +++++++++ capifcore/internal/restclient/mocks/HTTPClient.go | 52 ++++ 9 files changed, 823 insertions(+), 123 deletions(-) create mode 100644 capifcore/internal/eventservice/eventservice.go create mode 100644 capifcore/internal/eventservice/eventservice_test.go create mode 100644 capifcore/internal/restclient/HTTPClient.go create mode 100644 capifcore/internal/restclient/HTTPClient_test.go create mode 100644 capifcore/internal/restclient/mocks/HTTPClient.go diff --git a/capifcore/docs/diagrams/Information model for CAPIF.svg b/capifcore/docs/diagrams/Information model for CAPIF.svg index d24fe23..ee13f50 100644 --- a/capifcore/docs/diagrams/Information model for CAPIF.svg +++ b/capifcore/docs/diagrams/Information model for CAPIF.svg @@ -1,125 +1,128 @@ -Provider ServicePublish ServiceInvoker ManagementDiscover ServiceSecurity ServiceEvent ServiceAccess Control PolicyLogging ServiceAuditing ServiveRouting ServiceAPIProviderEnrolmentDetailsstring apiProvDomIdstring apiProvDomInfo[]APIProviderFunctionDetails apiProvFuncsSupportedFeatures suppFeatsstring regSec (required)Id provided by CAPIF CoreAPIProviderFunctionDetailsstring apiProvFuncIdstring apiProvFuncInfoApiProviderFuncRole apiProviderFuncRole (required)RegistrationInformation regInfo (required)Id provided by CAPIF CoreApiProviderFuncRoleAEF: API provider function is API Exposing Function.APF: API provider function is API Publishing Function.AMF: API Provider function is API Management Function.RegistrationInformationstring apiProvCertstring apiProvPubKey (required)ServiceAPIDescriptionstring apiIdstring description[]AefProfile aefProfilesSupportedFeatures apiSuppFeatSupportedFeatures supportedFeaturesstring apiName (required)Id provided by CAPIF CoreapfId matchingAPIProviderFunctionDetails::apiProvFuncIdmust be provided when publishingAefProfileDataFormat dataFormatstring domainName[]InterfaceDescription interfaceDescriptionsProtocol protocol[]SecurityMethod securityMethodsstring aefId (required)[]Version versions (required)DataFormatJSONProtocolHTTP_1_1HTTP_2AefProfile::aefId should matchAPIProviderFunctionDetails::apiProvFuncIdInterfaceDescriptionstring ipv4Addressstring ipv6Addressint port[]SecurityMethod securityMethodsSecurity methods supported by the interface,it take precedence over the security methodsprovided in AefProfile, for this specific interface.Version[]CustomOperation custOperationsDateTime expiry[]Resource resourcesstring apiVersion (required)CustomOperationstring description[]Operation operationsCommunicationType commType (required)string custOpName (required)OperationGETPOSTPUTPATCHDELETESecurityMethodPSKPKIOAUTHResourcestring descriptionstring resourceName (required)string uri (required)CommunicationType commType (required)CommunicationTypeREQUEST_RESPONSESUBSCRIBE_NOTIFYAPIInvokerEnrolmentDetailsstring apiInvokerIdstring apiInvokerInformationAPIList apiListSupportedFeatures supportedFeaturesOnboardingInformation onboardingInformation (required)Id provided byCAPIF CoreOnboardingInformationstring apiInvokerCertificatestring onboardingSecretstring ApiInvokerPublicKey (required)Secret providedby CAPIF CoreDiscoveredAPIs[]ServiceAPIDescription serviceAPIDescriptionsAccessTokenReqstring client_secretstring scopestring grant_type (required)string client_id (required)AccessTokenRspstring scopestring access_token (required)string token_type (required)DurationSec expires_in (required)ServiceSecuritySupportedFeatures supportedFeatures[]SecurityInformation securityInfo (required)SecurityInformationstring aefIdstring apiIdstring authenticationInfostring authorizationInfoInterfaceDescription interfaceDetails[]SecurityMethod prefSecurityMethods[]SecurityMethod selSecurityMethodsEventSubscriptionReportingInformation eventReq[]CAPIFEventFilter eventFiltersSupportedFeatures supportedFeatures[]CAPIFEvent events (required)Uri notificationDestination (required)CAPIFEventFilter[]string aefIds[]string apiIds[]string apiInvokerIdsCAPIFEventSERVICE_API_AVAILABLESERVICE_API_UNAVAILABLESERVICE_API_UPDATEAPI_INVOKER_ONBOARDEDAPI_INVOKER_OFFBOARDEDSERVICE_API_INVOCATION_SUCCESSSERVICE_API_INVOCATION_FAILUREACCESS_CONTROL_POLICY_UPDATEACCESS_CONTROL_POLICY_UNAVAILABLEAPI_INVOKER_AUTHORIZATION_REVOKEDAPI_INVOKER_UPDATEDAPI_TOPOLOGY_HIDING_CREATEDAPI_TOPOLOGY_HIDING_REVOKEDReportingInformationDurationSec grpRepTimebool immRepUinteger maxReportNbrNotificationFlag notifFlagNotificationMethod notifMethodPartitioningCriteria partitionCriteriaDurationSec repPeriodSamplingRation sampRatioCAPIFEventDetailAccessControlPolicyListExt accCtrlPolList[]string apiIds[]string apiInvokerIds[]ServiceAPIDescription serviceAPIDescriptionsAccessControlPolicyListExtAccessControlPolicyList accessControlPolicyListstring apiIdAccessControlPolicyList[]ApiInvokerPolicy apiInvokerPoliciesApiInvokerPolicy[]TimeRangeList allowedInvocationTimeRangeListint allowedInvocationsPerSecondint allowedTotalInvocationsstring apiInvokerId (required)TimeRangeListDateTime startTimeDateTime stopTimeInvocationLogSupportedFeatures supportedFeaturesstring aefId (required)string apiInvokerId (required)[]Log logs (required)LogInterfaceDescription destInterfacestring fwdInterfaceinterface inputParametersDurationMs invocationLatencyDateTime invocationTimeOperation operationinterface outputParametersInterfaceDescription srcInterfaceUri uristring apiId (required)string apiName (required)string apiVersion (required)Protocol protocol (required)string resourceName (required)string result (required)GetApiInvocationLogsParamsstring aefIdstring apiInvokerIdDateTime timeRangeStartDateTime timeRangeEndstring apiIdstring apiNamestring apiVersionProtocol protocolOperation operationstring resultstring resourceNameInterfaceDescription srcInterfaceRoutingInfo[]RoutingRule routingRules (required)RoutingRule[]Ipv4AddressRange ipv4AddrRanges[]Ipv6AddressRange ipv6AddrRangesAefProfile aefProfile (required)GetServiceApisServiceApiIdParamsSupportedFeatures suppFeatstring aefId (required)A call withGetServiceApisServiceApiIdParamsreturns a RoutingInfoAPIList containing servicesavailable for the invoker.Provided by capifcoreServices can only be discoveredfor an onboarded invoker throughAPIInvokerEnrolmentDetails::apiInvokerIdAccessTokenReq::client_id andAccessTokenReq::client_secretmust match registered invokerFunction provided inAccessTokenReq:scopemust be registered for a providerAPI provided inAccessTokenReq:scopemust be publishedA call withGetApiInvocationLogsParamsreturns an InvocationLog11..N111111..N11..N0..10..111..N0..10..N11..N11..N1..N1..N0..10..N110..N0..N1111..N110..N0..N11..N0..10..N11..N0..10..N0..N0..N11..N0..N0..N0..N0..N0..N0..N0..N0..N0..N0..N0..N0..N11..N0..10..N0..10..N0..10..N0..10..N0..10..10..10..10..10..111..N11Provider ServicePublish ServiceInvoker ManagementDiscover ServiceSecurity ServiceEvent ServiceAccess Control PolicyLogging ServiceAuditing ServiveRouting ServiceAPIProviderEnrolmentDetailsstring apiProvDomIdstring apiProvDomInfo[]APIProviderFunctionDetails apiProvFuncsSupportedFeatures suppFeatsstring regSec (required)Id provided by CAPIF CoreAPIProviderFunctionDetailsstring apiProvFuncIdstring apiProvFuncInfoApiProviderFuncRole apiProviderFuncRole (required)RegistrationInformation regInfo (required)Id provided by CAPIF CoreApiProviderFuncRoleAEF: API provider function is API Exposing Function.APF: API provider function is API Publishing Function.AMF: API Provider function is API Management Function.RegistrationInformationstring apiProvCertstring apiProvPubKey (required)ServiceAPIDescriptionstring apiIdstring description[]AefProfile aefProfilesSupportedFeatures apiSuppFeatSupportedFeatures supportedFeaturesstring apiName (required)Id provided by CAPIF CoreapfId matchingAPIProviderFunctionDetails::apiProvFuncIdmust be provided when publishingAefProfileDataFormat dataFormatstring domainName[]InterfaceDescription interfaceDescriptionsProtocol protocol[]SecurityMethod securityMethodsstring aefId (required)[]Version versions (required)DataFormatJSONProtocolHTTP_1_1HTTP_2AefProfile::aefId should matchAPIProviderFunctionDetails::apiProvFuncIdInterfaceDescriptionstring ipv4Addressstring ipv6Addressint port[]SecurityMethod securityMethodsSecurity methods supported by the interface,it take precedence over the security methodsprovided in AefProfile, for this specific interface.Version[]CustomOperation custOperationsDateTime expiry[]Resource resourcesstring apiVersion (required)CustomOperationstring description[]Operation operationsCommunicationType commType (required)string custOpName (required)OperationGETPOSTPUTPATCHDELETESecurityMethodPSKPKIOAUTHResourcestring descriptionstring resourceName (required)string uri (required)CommunicationType commType (required)CommunicationTypeREQUEST_RESPONSESUBSCRIBE_NOTIFYAPIInvokerEnrolmentDetailsstring apiInvokerIdstring apiInvokerInformationAPIList apiListSupportedFeatures supportedFeaturesOnboardingInformation onboardingInformation (required)Id provided byCAPIF CoreOnboardingInformationstring apiInvokerCertificatestring onboardingSecretstring ApiInvokerPublicKey (required)Secret providedby CAPIF CoreDiscoveredAPIs[]ServiceAPIDescription serviceAPIDescriptionsAccessTokenReqstring client_secretstring scopestring grant_type (required)string client_id (required)AccessTokenRspstring scopestring access_token (required)string token_type (required)DurationSec expires_in (required)ServiceSecuritySupportedFeatures supportedFeatures[]SecurityInformation securityInfo (required)SecurityInformationstring aefIdstring apiIdstring authenticationInfostring authorizationInfoInterfaceDescription interfaceDetails[]SecurityMethod prefSecurityMethods[]SecurityMethod selSecurityMethodsEventSubscriptionReportingInformation eventReq[]CAPIFEventFilter eventFiltersSupportedFeatures supportedFeatures[]CAPIFEvent events (required)Uri notificationDestination (required)CAPIFEventFilter[]string aefIds[]string apiIds[]string apiInvokerIdsCAPIFEventSERVICE_API_AVAILABLESERVICE_API_UNAVAILABLESERVICE_API_UPDATEAPI_INVOKER_ONBOARDEDAPI_INVOKER_OFFBOARDEDSERVICE_API_INVOCATION_SUCCESSSERVICE_API_INVOCATION_FAILUREACCESS_CONTROL_POLICY_UPDATEACCESS_CONTROL_POLICY_UNAVAILABLEAPI_INVOKER_AUTHORIZATION_REVOKEDAPI_INVOKER_UPDATEDAPI_TOPOLOGY_HIDING_CREATEDAPI_TOPOLOGY_HIDING_REVOKEDReportingInformationDurationSec grpRepTimebool immRepUinteger maxReportNbrNotificationFlag notifFlagNotificationMethod notifMethodPartitioningCriteria partitionCriteriaDurationSec repPeriodSamplingRation sampRatioEventNotificationCAPIFEventDetail eventDetailCAPIFEvent events (required)string subscriptionId (required)CAPIFEventDetailAccessControlPolicyListExt accCtrlPolList[]string apiIds[]string apiInvokerIds[]ServiceAPIDescription serviceAPIDescriptionsAccessControlPolicyListExtAccessControlPolicyList accessControlPolicyListstring apiIdsubscriptionId generatedby CAPIF Core whensubscription was createdAccessControlPolicyList[]ApiInvokerPolicy apiInvokerPoliciesApiInvokerPolicy[]TimeRangeList allowedInvocationTimeRangeListint allowedInvocationsPerSecondint allowedTotalInvocationsstring apiInvokerId (required)TimeRangeListDateTime startTimeDateTime stopTimeInvocationLogSupportedFeatures supportedFeaturesstring aefId (required)string apiInvokerId (required)[]Log logs (required)LogInterfaceDescription destInterfacestring fwdInterfaceinterface inputParametersDurationMs invocationLatencyDateTime invocationTimeOperation operationinterface outputParametersInterfaceDescription srcInterfaceUri uristring apiId (required)string apiName (required)string apiVersion (required)Protocol protocol (required)string resourceName (required)string result (required)GetApiInvocationLogsParamsstring aefIdstring apiInvokerIdDateTime timeRangeStartDateTime timeRangeEndstring apiIdstring apiNamestring apiVersionProtocol protocolOperation operationstring resultstring resourceNameInterfaceDescription srcInterfaceRoutingInfo[]RoutingRule routingRules (required)RoutingRule[]Ipv4AddressRange ipv4AddrRanges[]Ipv6AddressRange ipv6AddrRangesAefProfile aefProfile (required)GetServiceApisServiceApiIdParamsSupportedFeatures suppFeatstring aefId (required)A call withGetServiceApisServiceApiIdParamsreturns a RoutingInfoAPIList containing servicesavailable for the invoker.Provided by capifcoreServices can only be discoveredfor an onboarded invoker throughAPIInvokerEnrolmentDetails::apiInvokerIdAccessTokenReq::client_id andAccessTokenReq::client_secretmust match registered invokerFunction provided inAccessTokenReq:scopemust be registered for a providerAPI provided inAccessTokenReq:scopemust be publishedA call withGetApiInvocationLogsParamsreturns an InvocationLog11..N111111..N11..N0..10..111..N0..10..N11..N11..N1..N1..N0..10..N110..N0..N1111..N110..N0..N11..N0..10..N11..N0..10..N0..N0..N11..N0..N0..N0..N0..N0..10..N110..N0..N0..N0..N0..N0..N0..N0..N11..N0..10..N0..10..N0..10..N0..10..N0..10..10..10..10..10..111..N11