## **Release 2.0.0** ### **New Features** #### **Upgrade code to 3GPP CAPIF release 18** - New endpoints included in new release 18 with new logic. - Supported Features now are mandatory for all POST and PUT Requests as is described on TS 29.222. To keep in mind: - All POST/PUT request now must include ***Supported Features*** attribute, default can me set to ``0`` to keep all features inactive. - On subscription to Event, if you need ***eventDetails*** information on notification you must activate ***Enhanced Event Report*** feature by setting properly the ***Supported Features*** flag. #### **Vendor Extensibility** - Publish API: - On publishing a service API, **SupportedFeatures** is read and checked whether VendExt feature is enabled. - When VendExt is enabled, vendor-specific fields are searched and stored in the db inside the ServiceAPIDescription object - Vendor-specific fields are added according to the specific format: ``` "vendorSpecific-urn:<organization>:<field name>": { "key1": "value1", ... "keyN": "valueN", } e.g. "vendorSpecific-urn:etsi:mec:capifext:transport-info": { "name": "trasport1", "description": "Transport Info 1", "type": "REST_HTTP", "protocol": "HTTP", "version": "2", "security": { "grantTypes": "OAUTH2_CLIENT_CREDENTIALS", "tokenEndpoint": "https://token-endpoint/" } } where organization is "etsi:mec" and field name "capifext:transport-info" ``` - Discover API: - On Discover request **SupportedFeatures** is read and checked whether VendSpecQueryParams feature is enabled. - When VendSpecQueryParams is enabled, vendor-specific query parameters are parsed - Vendor specific query parameters are added on the GET request according to the following format: ``` https://{{CAPIF_HOSTNAME}}:{{CAPIF_PORT}}/{{DISCOVER_URL}}? ... vend-spec-<query parameter name>={ "target": <string that contains the JSON pointer to the attribute in the resource representation>, "value": <query parameter value> } e.g. https://{{CAPIF_HOSTNAME}}:{{CAPIF_PORT}}/{{DISCOVER_URL}}? ... vend-spec-type={ "target": "/vendorSpecific-urn:etsi:mec:capifext:transport-info", "value": "REST_HTTP" } ``` #### **Api Status feature** - New logic to support ***API Status*** feature on Publish and Events Services. - Events API: - Event internal notifications between services improved to accomplish specification. - On event subscription **SupportedFeatures** is read and stored in db to accomplish specification. - Also **SupportedFeatures** is checked before send event notification, in order to accomplish specification, sending **eventDetails** and related information according to ***enhanced_event_report*** and ***apiStatusMonitoring*** supported features activated. #### Remote Scripts New scripts developed to help on remote deployment, configuration and testing. All this script are stored under helm/scripts in capif repository. ***variables.sh*** contains all configuration that will be used on remote operation. This file must be filled carefully before run remote scripts. - Deployment Scripts: - ***install_vault.sh***: Deploy Vault component from k8s cluster, only needed if vault is not previously deployed. If it’s deployed you can setup vault token on variables.sh. - ***install_monitoring.sh***: Deploy monitoring on k8s cluster. - ***install_capif.sh***: Deploy OpenCAPIF on k8s cluster. It will be deployed on configured namespace with domain and hostnames configured under variables.sh. - ***uninstall_vault.sh***: Rollback Vault component from k8s cluster. - ***uninstall_monitoring.sh***: Rollback monitoring components from k8s cluster. - ***uninstall_capif.sh***: Rollback OpenCAPIF from k8s cluster. - Manage remote users: - ***create_remote_users.sh***: This script create users setup by parameters on deployed OpenCAPIF. Those users are created by administrator. - ***remove_remote_users.sh***: This script removes user from deployed OpenCAPIF. - ***remove_remote_users_by_prefix.sh***:: This script removes users by prefix. - Configuration of bastion machine, this simplify DNS fixed resolution: - ***get_ingress.sh***: This create a configuration for dns fixed resolution for ingress configured in namespace passed by parameters. - ***set_ingress.sh***: This scripts adds to /etc/hosts the fixed DNS resolution for ingress setup for namespace passed by parameters. - Execute robot tests over remote deployment. - ***run_remote_capif_tests.sh***: This scripts launch Robot Test docker image on current machine to reach deployed OpenCAPIF. Is useful to launch with “--include smoke” in order to ensure all is deployed properly. - Just for testing, next scripts upload dummy information to deployed OpenCAPIF: - ***populate_create_remote_dummy_users.sh***: : Create Dummy providers and invokers, publish service APIs and creates security context for invokers. - ***populate_remove_remote_dummy_users.sh***: Remove dummy information created. ### **Testing** - New Vendor Extensibility test suite with 9 tests. [Api Events Service](./testing/testplan/vendor_extensibility/README.md) - New [API Status feature](./testing/testplan/api_status/README.md) test suite with 20 tests. - Improved [Events test suite](./testing/testplan/api_events_service/README.md) with 8 new tests. - Test plan updated with default supported features for all request set to "0" (all inactive by default) [See common operations](./testing/testplan/common_operations/README.md). ### **Technical Debt Solved** #### **Issues** - Solved issue to get ready REDIS on deployment: REDIS scheduled on start to allow receive notification since service is deployed. - Solved problem removing service APIs published is provider register more than one APF. - Solved Superadmin problem deleting service API published through helper service if provider is not present. - Increased the overall stability, fixing some corner cases. - Location headers now are filled in same way at all services that needs it. - Security issues solved. - Base docker images present on ETSI registry. - Robot image uploaded to ETSI Registry. #### Local Scripts - All scripts were reviewed and improved. - New scripts to manage users on local deployment added: - create_users.sh: helps developer to create new users in local deployment. - remove_users.sh: helps developer to remove users from db in local deployment.