| .. This work is licensed under a Creative Commons Attribution 4.0 International License. |
| .. http://creativecommons.org/licenses/by/4.0 |
| |
| .. _ves-openapi-manager-use-cases: |
| |
| VES OpenAPI Manager validation use-cases |
| ======================================== |
| The main VES OpenAPI Manager use case is to verify if the schemaReferences declared in *VES_EVENT* type artifacts are |
| present in the local DCAE run-time externalSchemaRepo and show validation results to user in SDC UI. |
| |
| The general flow of VES OpenAPI Manager is available here :ref:`ves-openapi-manager-flow`. |
| |
| Based on the referenced flow, there are few possible behaviours of VES OpenAPI Manager. In this section two main flows: |
| successful and unsuccessful validation will be described step by step. |
| |
| Validation prerequisites |
| ------------------------ |
| Validation phase takes place only when specific conditions are met. |
| |
| 1) VES OpenAPI Manager is properly configured: client is connected to SDC and mapping file is present and pointed in configuration. Configuration is described in detail here: :ref:`ves-openapi-manager-deployment`. |
| 2) Distribution of a Service Model takes place in SDC. |
| 3) Service contains an *VES_EVENT* type artifact. |
| 4) Artifact content is correctly downloaded. |
| |
| Validation description |
| ---------------------- |
| When *schemaReference* field from artifact is being validated, only the part of the URI that indicates public openAPI |
| description file location is taken into consideration. |
| |
| For example when *schemaReference* with value |
| *https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml#/components/schemas/NotifyNewAlarm* |
| is found in artifact, then only the part before # sign (public openAPI description file location URI part) is being |
| validated. This way part which would be validated is |
| *https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml*. |
| |
| Mapping file must have a predefined JSON format of list of objects (mappings) with publicURL and localURL fields. |
| Example with 3 mappings: |
| |
| .. literalinclude:: resources/schema-map-example.json |
| :language: json |
| |
| When *schemaReference* is split, it's compared to each publicURL from mapping file. If there is no publicURL in mapping |
| file which matches schemaReference, then schemaReference is marked as invalid. This process is executed for all |
| stndDefined events defined in *VES_EVENT* artifact, which declare a schemaReference. All invalid references are returned |
| to user via SDC UI when validation of a complete artifact ends. |
| |
| Based on returned information with invalid references user can take action and e.g. add mappings and schemas to DCAE |
| run-time environment by editing ConfigMaps which store them. |
| |
| +-----------------------------------------+-------------------------+ |
| | ConfigMap name | Content | |
| +=========================================+=========================+ |
| | dcae-external-repo-configmap-schema-map | Mapping file | |
| +-----------------------------------------+-------------------------+ |
| | dcae-external-repo-configmap-sa88-rel16 | OpenAPI schemas content,| |
| | | example stores 3GPP | |
| | | sa88-rel16 schemas | |
| +-----------------------------------------+-------------------------+ |
| |
| |
| Successful validation case |
| -------------------------- |
| There are few ways to get a successful validation status - *DEPLOY_OK*. |
| |
| 1) When artifact *VES_EVENT* does not contain *stndDefined* events definitions. Only *stndDefined* event are validated. |
| 2) When artifact *VES_EVENT* contains *stndDefined* events definitions but *schemaReference* fields are not present. |
| 3) When artifact *VES_EVENT* contains *stndDefined* events definitions and each *schemaReference* of the event is present in the mapping file. |
| |
| |
| *VES_EVENT* artifact may contain more than one event definition. Examples of valid artifacts with single events are |
| below. |
| |
| Example of valid artifact without *stndDefined* event definition (case 1): |
| |
| .. literalinclude:: resources/artifact-no-stndDefined.yaml |
| :language: yaml |
| |
| Example of valid artifact with *stndDefined* event definition, but without schemaReference field (case 2): |
| |
| .. literalinclude:: resources/artifact-stndDefined-no-schemaReference.yaml |
| :language: yaml |
| |
| Example of artifact with *stndDefined* event definition (case 3): |
| |
| .. literalinclude:: resources/artifact-stndDefined.yaml |
| :language: yaml |
| |
| which is valid when mapping file contains a mapping of schemaReference field. |
| Example of mapping file content which makes example artifact valid: |
| |
| .. literalinclude:: resources/schema-map.json |
| :language: json |
| |
| Unsuccessful validation case |
| ---------------------------- |
| Another case is an unsuccessful validation case which sends status *DEPLOY_ERROR* with error message containing listed |
| *schemaReference* that are missing from mapping file. Fail case might occur: |
| |
| 1) When artifact *VES_EVENT* contains *stndDefined* events definitions and any of *schemaReference* is not present in mapping file. |
| |
| Example of artifact with *stndDefined* event definition: |
| |
| .. literalinclude:: resources/artifact-stndDefined.yaml |
| :language: yaml |
| |
| which is invalid when mapping file does not contain a mapping of schemaReference field. |
| Example of mapping file which makes example artifact invalid: |
| |
| .. literalinclude:: resources/schema-map-invalid.json |
| :language: json |
| |
| Validation results |
| ------------------ |
| There are two ways to receive validation results. |
| |
| 1) Via SDC UI. Results are available in *Service->Distributions* view. To see results in SDC UI user has to wait up to few minutes. |
| 2) In VES OpenAPI Manager logs. They are printed right after validation. |