Skip to content
Snippets Groups Projects
Commit 1ace7e84 authored by torrespel's avatar torrespel
Browse files

Logging API realease V18.6.0

parent 8a820ec9
No related branches found
No related tags found
2 merge requests!123Ocf141 review and implement changes from 3gpp specs v18 4 0 to v18 7 0 latest rel18,!122Ocf141 review and implement changes from 3gpp specs v18 4 0 to v18 7 0 latest rel18
Pipeline #13042 failed
Showing
with 175 additions and 36 deletions
......@@ -17,6 +17,7 @@ api_invocation_logs/models/interface_description.py
api_invocation_logs/models/invalid_param.py
api_invocation_logs/models/invocation_log.py
api_invocation_logs/models/log.py
api_invocation_logs/models/o_auth_grant_type.py
api_invocation_logs/models/operation.py
api_invocation_logs/models/problem_details.py
api_invocation_logs/models/protocol.py
......
......@@ -15,7 +15,7 @@ To run the server, please execute the following from the root directory:
```
pip3 install -r requirements.txt
python3 -m openapi_server
python3 -m api_invocation_logs
```
and open your browser to here:
......
# flake8: noqa
# import models into model package
from api_invocation_logs.models.interface_description import InterfaceDescription
from api_invocation_logs.models.invalid_param import InvalidParam
from api_invocation_logs.models.invocation_log import InvocationLog
from api_invocation_logs.models.log import Log
from api_invocation_logs.models.o_auth_grant_type import OAuthGrantType
from api_invocation_logs.models.operation import Operation
from api_invocation_logs.models.problem_details import ProblemDetails
from api_invocation_logs.models.protocol import Protocol
from api_invocation_logs.models.security_method import SecurityMethod
import pprint
import typing
from api_invocation_logs import util
......
import re # noqa: E501
from datetime import date, datetime # noqa: F401
from typing import List, Dict # noqa: F401
from api_invocation_logs import util
from api_invocation_logs.models.base_model import Model
from api_invocation_logs.models.security_method import SecurityMethod # noqa: E501
from api_invocation_logs.models.o_auth_grant_type import OAuthGrantType
from api_invocation_logs.models.security_method import SecurityMethod
import re
from api_invocation_logs import util
from api_invocation_logs.models.o_auth_grant_type import OAuthGrantType # noqa: E501
from api_invocation_logs.models.security_method import SecurityMethod # noqa: E501
import re # noqa: E501
class InterfaceDescription(Model):
"""NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
......@@ -13,7 +18,7 @@ class InterfaceDescription(Model):
Do not edit the class manually.
"""
def __init__(self, ipv4_addr=None, ipv6_addr=None, fqdn=None, port=None, api_prefix=None, security_methods=None): # noqa: E501
def __init__(self, ipv4_addr=None, ipv6_addr=None, fqdn=None, port=None, api_prefix=None, security_methods=None, grant_types=None): # noqa: E501
"""InterfaceDescription - a model defined in OpenAPI
:param ipv4_addr: The ipv4_addr of this InterfaceDescription. # noqa: E501
......@@ -28,6 +33,8 @@ class InterfaceDescription(Model):
:type api_prefix: str
:param security_methods: The security_methods of this InterfaceDescription. # noqa: E501
:type security_methods: List[SecurityMethod]
:param grant_types: The grant_types of this InterfaceDescription. # noqa: E501
:type grant_types: List[OAuthGrantType]
"""
self.openapi_types = {
'ipv4_addr': str,
......@@ -35,7 +42,8 @@ class InterfaceDescription(Model):
'fqdn': str,
'port': int,
'api_prefix': str,
'security_methods': List[SecurityMethod]
'security_methods': List[SecurityMethod],
'grant_types': List[OAuthGrantType]
}
self.attribute_map = {
......@@ -44,7 +52,8 @@ class InterfaceDescription(Model):
'fqdn': 'fqdn',
'port': 'port',
'api_prefix': 'apiPrefix',
'security_methods': 'securityMethods'
'security_methods': 'securityMethods',
'grant_types': 'grantTypes'
}
self._ipv4_addr = ipv4_addr
......@@ -53,6 +62,7 @@ class InterfaceDescription(Model):
self._port = port
self._api_prefix = api_prefix
self._security_methods = security_methods
self._grant_types = grant_types
@classmethod
def from_dict(cls, dikt) -> 'InterfaceDescription':
......@@ -136,7 +146,7 @@ class InterfaceDescription(Model):
if fqdn is not None and len(fqdn) < 4:
raise ValueError("Invalid value for `fqdn`, length must be greater than or equal to `4`") # noqa: E501
if fqdn is not None and not re.search(r'^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$', fqdn): # noqa: E501
raise ValueError("Invalid value for `fqdn`, must be a follow pattern or equal to `/^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$/`") # noqa: E501
raise ValueError(r"Invalid value for `fqdn`, must be a follow pattern or equal to `/^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$/`") # noqa: E501
self._fqdn = fqdn
......@@ -214,3 +224,26 @@ class InterfaceDescription(Model):
raise ValueError("Invalid value for `security_methods`, number of items must be greater than or equal to `1`") # noqa: E501
self._security_methods = security_methods
@property
def grant_types(self) -> List[OAuthGrantType]:
"""Gets the grant_types of this InterfaceDescription.
:return: The grant_types of this InterfaceDescription.
:rtype: List[OAuthGrantType]
"""
return self._grant_types
@grant_types.setter
def grant_types(self, grant_types: List[OAuthGrantType]):
"""Sets the grant_types of this InterfaceDescription.
:param grant_types: The grant_types of this InterfaceDescription.
:type grant_types: List[OAuthGrantType]
"""
if grant_types is not None and len(grant_types) < 1:
raise ValueError("Invalid value for `grant_types`, number of items must be greater than or equal to `1`") # noqa: E501
self._grant_types = grant_types
from datetime import date, datetime # noqa: F401
from typing import List, Dict # noqa: F401
from api_invocation_logs import util
from api_invocation_logs.models.base_model import Model
from api_invocation_logs import util
class InvalidParam(Model):
......
import re # noqa: E501
from datetime import date, datetime # noqa: F401
from typing import List, Dict # noqa: F401
from api_invocation_logs import util
from api_invocation_logs.models.base_model import Model
from api_invocation_logs.models.log import Log # noqa: E501
from api_invocation_logs.models.log import Log
import re
from api_invocation_logs import util
from api_invocation_logs.models.log import Log # noqa: E501
import re # noqa: E501
class InvocationLog(Model):
"""NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
......@@ -153,6 +156,6 @@ class InvocationLog(Model):
:type supported_features: str
"""
if supported_features is not None and not re.search(r'^[A-Fa-f0-9]*$', supported_features): # noqa: E501
raise ValueError("Invalid value for `supported_features`, must be a follow pattern or equal to `/^[A-Fa-f0-9]*$/`") # noqa: E501
raise ValueError(r"Invalid value for `supported_features`, must be a follow pattern or equal to `/^[A-Fa-f0-9]*$/`") # noqa: E501
self._supported_features = supported_features
from datetime import date, datetime # noqa: F401
from typing import List, Dict # noqa: F401
from api_invocation_logs import util
from api_invocation_logs.models.base_model import Model
from api_invocation_logs.models.interface_description import InterfaceDescription
from api_invocation_logs.models.operation import Operation
from api_invocation_logs.models.protocol import Protocol
from api_invocation_logs import util
from api_invocation_logs.models.interface_description import InterfaceDescription # noqa: E501
from api_invocation_logs.models.operation import Operation # noqa: E501
from api_invocation_logs.models.protocol import Protocol # noqa: E501
class Log(Model):
"""NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
......
from datetime import date, datetime # noqa: F401
from typing import List, Dict # noqa: F401
from api_invocation_logs.models.base_model import Model
from api_invocation_logs import util
class OAuthGrantType(Model):
"""NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
Do not edit the class manually.
"""
def __init__(self): # noqa: E501
"""OAuthGrantType - a model defined in OpenAPI
"""
self.openapi_types = {
}
self.attribute_map = {
}
@classmethod
def from_dict(cls, dikt) -> 'OAuthGrantType':
"""Returns the dict as a model
:param dikt: A dict.
:type: dict
:return: The OAuthGrantType of this OAuthGrantType. # noqa: E501
:rtype: OAuthGrantType
"""
return util.deserialize_model(dikt, cls)
from datetime import date, datetime # noqa: F401
from typing import List, Dict # noqa: F401
from api_invocation_logs import util
from api_invocation_logs.models.base_model import Model
from api_invocation_logs import util
class Operation(Model):
......
import re # noqa: E501
from datetime import date, datetime # noqa: F401
from typing import List, Dict # noqa: F401
from api_invocation_logs import util
from api_invocation_logs.models.base_model import Model
from api_invocation_logs.models.invalid_param import InvalidParam # noqa: E501
from api_invocation_logs.models.invalid_param import InvalidParam
import re
from api_invocation_logs import util
from api_invocation_logs.models.invalid_param import InvalidParam # noqa: E501
import re # noqa: E501
class ProblemDetails(Model):
"""NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
......@@ -259,6 +262,6 @@ class ProblemDetails(Model):
:type supported_features: str
"""
if supported_features is not None and not re.search(r'^[A-Fa-f0-9]*$', supported_features): # noqa: E501
raise ValueError("Invalid value for `supported_features`, must be a follow pattern or equal to `/^[A-Fa-f0-9]*$/`") # noqa: E501
raise ValueError(r"Invalid value for `supported_features`, must be a follow pattern or equal to `/^[A-Fa-f0-9]*$/`") # noqa: E501
self._supported_features = supported_features
from datetime import date, datetime # noqa: F401
from typing import List, Dict # noqa: F401
from api_invocation_logs import util
from api_invocation_logs.models.base_model import Model
from api_invocation_logs import util
class Protocol(Model):
......
from datetime import date, datetime # noqa: F401
from typing import List, Dict # noqa: F401
from api_invocation_logs import util
from api_invocation_logs.models.base_model import Model
from api_invocation_logs import util
class SecurityMethod(Model):
......
openapi: 3.0.0
info:
description: "API for invocation logs. \n© 2022, 3GPP Organizational Partners (ARIB,\
description: "API for invocation logs. \n© 2024, 3GPP Organizational Partners (ARIB,\
\ ATIS, CCSA, ETSI, TSDSI, TTA, TTC). \nAll rights reserved.\n"
title: CAPIF_Logging_API_Invocation_API
version: 1.3.0-alpha.1
version: 1.3.0
externalDocs:
description: 3GPP TS 29.222 V18.0.0 Common API Framework for 3GPP Northbound APIs
description: 3GPP TS 29.222 V18.6.0 Common API Framework for 3GPP Northbound APIs
url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/
servers:
- url: "{apiRoot}/api-invocation-logs/v1"
......@@ -192,6 +192,9 @@ components:
invocationTime: 2000-01-23T04:56:07.000+00:00
srcInterface:
ipv6Addr: ipv6Addr
grantTypes:
- CLIENT_CREDENTIALS
- CLIENT_CREDENTIALS
securityMethods:
- PSK
- PSK
......@@ -209,6 +212,9 @@ components:
apiVersion: apiVersion
destInterface:
ipv6Addr: ipv6Addr
grantTypes:
- CLIENT_CREDENTIALS
- CLIENT_CREDENTIALS
securityMethods:
- PSK
- PSK
......@@ -223,6 +229,9 @@ components:
invocationTime: 2000-01-23T04:56:07.000+00:00
srcInterface:
ipv6Addr: ipv6Addr
grantTypes:
- CLIENT_CREDENTIALS
- CLIENT_CREDENTIALS
securityMethods:
- PSK
- PSK
......@@ -240,6 +249,9 @@ components:
apiVersion: apiVersion
destInterface:
ipv6Addr: ipv6Addr
grantTypes:
- CLIENT_CREDENTIALS
- CLIENT_CREDENTIALS
securityMethods:
- PSK
- PSK
......@@ -286,6 +298,9 @@ components:
invocationTime: 2000-01-23T04:56:07.000+00:00
srcInterface:
ipv6Addr: ipv6Addr
grantTypes:
- CLIENT_CREDENTIALS
- CLIENT_CREDENTIALS
securityMethods:
- PSK
- PSK
......@@ -303,6 +318,9 @@ components:
apiVersion: apiVersion
destInterface:
ipv6Addr: ipv6Addr
grantTypes:
- CLIENT_CREDENTIALS
- CLIENT_CREDENTIALS
securityMethods:
- PSK
- PSK
......@@ -499,6 +517,9 @@ components:
description: Represents the description of an API's interface.
example:
ipv6Addr: ipv6Addr
grantTypes:
- CLIENT_CREDENTIALS
- CLIENT_CREDENTIALS
securityMethods:
- PSK
- PSK
......@@ -508,12 +529,9 @@ components:
ipv4Addr: ipv4Addr
nullable: true
oneOf:
- required:
- ipv4Addr
- required:
- ipv6Addr
- required:
- fqdn
- required: ["fqdn"]
- required: ["ipv4Addr"]
- required: ["ipv6Addr"]
properties:
ipv4Addr:
description: |
......@@ -552,6 +570,12 @@ components:
minItems: 1
title: securityMethods
type: array
grantTypes:
items:
$ref: '#/components/schemas/OAuthGrantType'
minItems: 1
title: grantTypes
type: array
title: InterfaceDescription
type: object
SecurityMethod:
......@@ -593,3 +617,20 @@ components:
minimum: 0
title: Port
type: integer
OAuthGrantType:
anyOf:
- enum:
- CLIENT_CREDENTIALS
- AUTHORIZATION_CODE
- AUTHORIZATION_CODE_WITH_PKCE
type: string
- description: |
This string provides forward-compatibility with future extensions to the enumeration and is not used to encode content defined in the present version of this API.
type: string
description: "Indicates the supported authorization flow (e.g. client credentials\
\ flow, authorization code flow, etc.) to the API invoker. \nPossible\
\ values are:\n- CLIENT_CREDENTIALS: Indicate that the grant type is is client\
\ credentials flow.\n- AUTHORIZATION_CODE: Indicate that the grant type is\
\ authorization code.\n- AUTHORIZATION_CODE_WITH_PKCE: Indicate that the grant\
\ type is authorization code with PKCE.\n"
title: OAuthGrantType
import logging
import connexion
from api_invocation_logs.encoder import JSONEncoder
from flask_testing import TestCase
from api_invocation_logs.encoder import JSONEncoder
class BaseTestCase(TestCase):
......
import unittest
from api_invocation_logs.test import BaseTestCase
from flask import json
from api_invocation_logs.models.invocation_log import InvocationLog # noqa: E501
from api_invocation_logs.models.problem_details import ProblemDetails # noqa: E501
from api_invocation_logs.test import BaseTestCase
class TestDefaultController(BaseTestCase):
"""DefaultController integration test stubs"""
......@@ -12,7 +15,7 @@ class TestDefaultController(BaseTestCase):
"""
invocation_log = {"supportedFeatures":"supportedFeatures","apiInvokerId":"apiInvokerId","aefId":"aefId","logs":[{"apiName":"apiName","invocationTime":"2000-01-23T04:56:07.000+00:00","srcInterface":{"ipv6Addr":"ipv6Addr","securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":39500,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"fwdInterface":"fwdInterface","resourceName":"resourceName","uri":"uri","inputParameters":"","invocationLatency":0,"result":"result","protocol":"HTTP_1_1","apiVersion":"apiVersion","destInterface":{"ipv6Addr":"ipv6Addr","securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":39500,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"operation":"GET","apiId":"apiId","outputParameters":""},{"apiName":"apiName","invocationTime":"2000-01-23T04:56:07.000+00:00","srcInterface":{"ipv6Addr":"ipv6Addr","securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":39500,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"fwdInterface":"fwdInterface","resourceName":"resourceName","uri":"uri","inputParameters":"","invocationLatency":0,"result":"result","protocol":"HTTP_1_1","apiVersion":"apiVersion","destInterface":{"ipv6Addr":"ipv6Addr","securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":39500,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"operation":"GET","apiId":"apiId","outputParameters":""}]}
invocation_log = {"supportedFeatures":"supportedFeatures","apiInvokerId":"apiInvokerId","aefId":"aefId","logs":[{"apiName":"apiName","invocationTime":"2000-01-23T04:56:07.000+00:00","srcInterface":{"ipv6Addr":"ipv6Addr","grantTypes":["CLIENT_CREDENTIALS","CLIENT_CREDENTIALS"],"securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":39500,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"fwdInterface":"fwdInterface","resourceName":"resourceName","uri":"uri","inputParameters":"","invocationLatency":0,"result":"result","protocol":"HTTP_1_1","apiVersion":"apiVersion","destInterface":{"ipv6Addr":"ipv6Addr","grantTypes":["CLIENT_CREDENTIALS","CLIENT_CREDENTIALS"],"securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":39500,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"operation":"GET","apiId":"apiId","outputParameters":""},{"apiName":"apiName","invocationTime":"2000-01-23T04:56:07.000+00:00","srcInterface":{"ipv6Addr":"ipv6Addr","grantTypes":["CLIENT_CREDENTIALS","CLIENT_CREDENTIALS"],"securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":39500,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"fwdInterface":"fwdInterface","resourceName":"resourceName","uri":"uri","inputParameters":"","invocationLatency":0,"result":"result","protocol":"HTTP_1_1","apiVersion":"apiVersion","destInterface":{"ipv6Addr":"ipv6Addr","grantTypes":["CLIENT_CREDENTIALS","CLIENT_CREDENTIALS"],"securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":39500,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"operation":"GET","apiId":"apiId","outputParameters":""}]}
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
......
import sys
if sys.version_info < (3, 7):
import typing
def is_generic(klass):
""" Determine whether klass is a generic class """
......
import sys
from setuptools import setup, find_packages
NAME = "api_invocation_logs"
......@@ -30,7 +31,7 @@ setup(
entry_points={
'console_scripts': ['api_invocation_logs=api_invocation_logs.__main__:main']},
long_description="""\
API for invocation logs. © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
API for invocation logs. © 2024, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
"""
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment