Some improvements if NBI V2.0 37/111637/5
authorPatrikBuhr <patrik.buhr@est.tech>
Fri, 21 Aug 2020 09:35:17 +0000 (11:35 +0200)
committerPatrik Buhr <patrik.buhr@est.tech>
Tue, 25 Aug 2020 13:32:57 +0000 (13:32 +0000)
Improved generated swagger API.
Furter alignments to  https://opensource.zalando.com/restful-api-guidelines/#118
Improved unitttest for faulty JSON in configuration.

Changed names: "NonRT-RIC" to "Non-RT RIC" and "NearRT-RIC" to "Near-RT RIC"

Change-Id: I4ca0d45605a770b5c33e34019671e088e3fe979d
Issue-ID: CCSDK-2498
Signed-off-by: PatrikBuhr <patrik.buhr@est.tech>
23 files changed:
a1-policy-management/api/api.yaml
a1-policy-management/api/api_generated.yaml
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/SwaggerConfig.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1ClientFactory.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/SdncOscA1Client.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v1/PolicyController.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v1/PolicyInfo.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v1/RicInfo.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v1/RicRepositoryController.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/JsonObject.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/JsonSchema.java [deleted file]
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyController.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyInfo.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicySchemaList.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicInfo.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicInfoList.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicRepositoryController.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ServiceController.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/repository/Ric.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RicSupervision.java
a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RicSynchronizationTask.java
a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/ApplicationTestV2.java
a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshConfigTaskTest.java

index b41d4fc..ac10f4b 100644 (file)
@@ -76,7 +76,7 @@ paths:
       parameters:
       - name: id
         in: query
-        description: The ID of the policy instance.
+        description: The identity of the policy instance.
         required: true
         allowEmptyValue: false
         schema:
@@ -110,7 +110,7 @@ paths:
       parameters:
       - name: id
         in: query
-        description: The ID of the policy instance.
+        description: The identity of the policy instance.
         required: true
         allowEmptyValue: false
         schema:
@@ -184,7 +184,7 @@ paths:
       parameters:
       - name: id
         in: query
-        description: The ID of the policy instance.
+        description: The identity of the policy instance.
         required: true
         allowEmptyValue: false
         schema:
@@ -268,7 +268,7 @@ paths:
       parameters:
       - name: id
         in: query
-        description: The ID of the policy type to get the definition for.
+        description: The identity of the policy type to get the definition for.
         required: true
         allowEmptyValue: false
         schema:
@@ -386,7 +386,7 @@ paths:
       parameters:
       - name: id
         in: query
-        description: The ID of the policy.
+        description: The identity of the policy.
         required: true
         allowEmptyValue: false
         schema:
@@ -461,7 +461,7 @@ paths:
       parameters:
       - name: managedElementId
         in: query
-        description: The ID of the Managed Element
+        description: The identity of the Managed Element
         required: true
         allowEmptyValue: false
         schema:
index 06bbf33..fd7b312 100644 (file)
@@ -1,27 +1,22 @@
 swagger: '2.0'
 info:
-  description: |
-    The O-RAN NonRT-RIC PolicyAgent provides a REST API for management of policices. 
-    It provides support for: 
-    -Supervision of clients (R-APPs) to eliminate stray policies in case of failure 
-    -Consistency monitoring of the SMO view of policies and the actual situation in the NearRT-RICs 
-    -Consistency monitoring of NearRT-RIC capabilities (policy types)-Policy configuration. 
-    This includes:-One REST API towards all NearRT-RICs in the network 
-    -Query functions that can find all policies in a NearRT-RIC, all policies owned by a service (R-APP), 
-    all policies of a type etc. 
-    -Maps O1 resources (ManagedElement) as defined in O1 to the controlling NearRT-RIC of A1 policices.
+  description: |-
+    The O-RAN Non-RT RIC Policy Management Service provides a REST API for management of A1 policices. 
+    It provides support for:<ul><li>A1 Policy creation and modification.</li><li>Maintaining a view of supported Near-RT RIC policy types </li><li>Supervision of using services (R-APPs). When a service is unavailble, its policies are removed. </li> <li>Monitoring and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs </li></ul>
   version: 1.1.0
   title: A1 Policy management service
   contact:
     name: Ericsson Software Technology
     email: nonrtric@est.tech
+  x-api-id: 60f9a0e7-343f-43bf-9194-d8d65688d465
+  x-audience: external-partner
 host: 'localhost:8081'
 basePath: /
 tags:
   - name: A1 Policy Management Version 1.0
     description: Policy Controller
   - name: A1 Policy Management Version 2.0 (in progress)
-    description: Policy Controller
+    description: Policy management
 paths:
   /policies:
     get:
@@ -34,7 +29,7 @@ paths:
       parameters:
         - name: ric
           in: query
-          description: The name of the NearRT-RIC to get policies for.
+          description: The name of the Near-RT RIC to get policies for.
           required: false
           type: string
           allowEmptyValue: false
@@ -62,7 +57,7 @@ paths:
         '403':
           description: Forbidden
         '404':
-          description: NearRT-RIC or type not found
+          description: Near-RT RIC or type not found
           schema:
             type: string
       deprecated: false
@@ -117,7 +112,7 @@ paths:
             type: object
         - name: ric
           in: query
-          description: The name of the NearRT-RIC where the policy will be created.
+          description: The name of the Near-RT RIC where the policy will be created.
           required: true
           type: string
           allowEmptyValue: false
@@ -129,7 +124,7 @@ paths:
           allowEmptyValue: false
         - name: transient
           in: query
-          description: If the policy is transient or not (boolean defaulted to false). A policy is transient if it will be forgotten when the service needs to reconnect to the NearRT-RIC.
+          description: If the policy is transient or not (boolean defaulted to false). A policy is transient if it will be forgotten when the service needs to reconnect to the Near-RT RIC.
           required: false
           type: boolean
           default: false
@@ -151,11 +146,11 @@ paths:
         '403':
           description: Forbidden
         '404':
-          description: NearRT-RIC or policy type is not found
+          description: Near-RT RIC or policy type is not found
           schema:
             type: string
         '423':
-          description: NearRT-RIC is not operational
+          description: Near-RT RIC is not operational
           schema:
             type: string
       deprecated: false
@@ -187,7 +182,7 @@ paths:
           schema:
             type: string
         '423':
-          description: NearRT-RIC is not operational
+          description: Near-RT RIC is not operational
           schema:
             type: string
       deprecated: false
@@ -195,14 +190,14 @@ paths:
     get:
       tags:
         - A1 Policy Management Version 1.0
-      summary: 'Query policies, only IDs returned'
+      summary: 'Query policies, only policy identities returned'
       operationId: getPolicyIdsUsingGET_1
       produces:
         - '*/*'
       parameters:
         - name: ric
           in: query
-          description: The name of the NearRT-RIC to get policies for.
+          description: The name of the Near-RT RIC to get policies for.
           required: false
           type: string
           allowEmptyValue: false
@@ -220,7 +215,7 @@ paths:
           allowEmptyValue: false
       responses:
         '200':
-          description: Policy ids
+          description: Policy identitiess
           schema:
             type: array
             items:
@@ -230,7 +225,7 @@ paths:
         '403':
           description: Forbidden
         '404':
-          description: NearRT-RIC or type not found
+          description: Near-RT RIC or type not found
           schema:
             type: string
       deprecated: false
@@ -274,7 +269,7 @@ paths:
       parameters:
         - name: ric
           in: query
-          description: The name of the NearRT-RIC to get the definitions for.
+          description: The name of the Near-RT RIC to get the definitions for.
           required: false
           type: string
           allowEmptyValue: false
@@ -290,7 +285,7 @@ paths:
         '403':
           description: Forbidden
         '404':
-          description: NearRT-RIC is not found
+          description: Near-RT RIC is not found
           schema:
             type: string
       deprecated: false
@@ -334,7 +329,7 @@ paths:
       parameters:
         - name: ric
           in: query
-          description: The name of the NearRT-RIC to get types for.
+          description: The name of the Near-RT RIC to get types for.
           required: false
           type: string
           allowEmptyValue: false
@@ -350,7 +345,7 @@ paths:
         '403':
           description: Forbidden
         '404':
-          description: NearRT-RIC is not found
+          description: Near-RT RIC is not found
           schema:
             type: string
       deprecated: false
@@ -371,7 +366,7 @@ paths:
           allowEmptyValue: false
       responses:
         '200':
-          description: NearRT-RIC is found
+          description: Near-RT RIC is found
           schema:
             type: string
         '401':
@@ -379,7 +374,7 @@ paths:
         '403':
           description: Forbidden
         '404':
-          description: NearRT-RIC is not found
+          description: Near-RT RIC is not found
           schema:
             type: string
       deprecated: false
@@ -387,7 +382,7 @@ paths:
     get:
       tags:
         - A1 Policy Management Version 1.0
-      summary: Query NearRT-RIC information
+      summary: Query Near-RT RIC information
       operationId: getRicsUsingGET
       produces:
         - '*/*'
@@ -569,8 +564,8 @@ paths:
     get:
       tags:
         - A1 Policy Management Version 2.0 (in progress)
-      summary: Query policies
-      description: 'If several query parameters are defined, the policies matching all conditions are returned'
+      summary: Query for existing A1 policies
+      description: 'Returns a list of A1 policies matching given search criteria. <br>If several query parameters are defined, the policies matching all conditions are returned.'
       operationId: getPoliciesUsingGET
       produces:
         - application/json
@@ -583,7 +578,7 @@ paths:
           allowEmptyValue: false
         - name: ric_id
           in: query
-          description: The identity of the NearRT-RIC to get policies for.
+          description: The identity of the Near-RT RIC to get policies for.
           required: false
           type: string
           allowEmptyValue: false
@@ -603,7 +598,7 @@ paths:
         '403':
           description: Forbidden
         '404':
-          description: 'NearRT-RIC, policy type or service not found'
+          description: 'Near-RT RIC, policy type or service not found'
           schema:
             $ref: '#/definitions/error_information'
       deprecated: false
@@ -666,7 +661,7 @@ paths:
           allowEmptyValue: false
         - name: ric_id
           in: query
-          description: The identity of the NearRT-RIC where the policy will be created.
+          description: The identity of the Near-RT RIC where the policy will be created.
           required: true
           type: string
           allowEmptyValue: false
@@ -678,7 +673,7 @@ paths:
           allowEmptyValue: false
         - name: transient
           in: query
-          description: If the policy is transient or not (boolean defaulted to false). A policy is transient if it will not be recreated in the NearRT-RIC when it has been lost (for instance due to a restart)
+          description: If the policy is transient or not (boolean defaulted to false). A policy is transient if it will not be recreated in the Near-RT RIC when it has been lost (for instance due to a restart)
           required: false
           type: boolean
           default: false
@@ -694,11 +689,11 @@ paths:
         '403':
           description: Forbidden
         '404':
-          description: NearRT-RIC or policy type is not found
+          description: Near-RT RIC or policy type is not found
           schema:
             $ref: '#/definitions/error_information'
         '423':
-          description: NearRT-RIC is not operational
+          description: Near-RT RIC is not operational
           schema:
             $ref: '#/definitions/error_information'
       deprecated: false
@@ -730,7 +725,7 @@ paths:
           schema:
             $ref: '#/definitions/error_information'
         '423':
-          description: NearRT-RIC is not operational
+          description: Near-RT RIC is not operational
           schema:
             $ref: '#/definitions/error_information'
       deprecated: false
@@ -738,7 +733,8 @@ paths:
     get:
       tags:
         - A1 Policy Management Version 2.0 (in progress)
-      summary: 'Query policies, only IDs returned'
+      summary: 'Query policies, only policy identities are returned'
+      description: 'Returns a list of A1 policies matching given search criteria. <br>If several query parameters are defined, the policies matching all conditions are returned.'
       operationId: getPolicyIdsUsingGET
       produces:
         - application/json
@@ -751,7 +747,7 @@ paths:
           allowEmptyValue: false
         - name: ric_id
           in: query
-          description: The identity of the NearRT-RIC to get policies for.
+          description: The identity of the Near-RT RIC to get policies for.
           required: false
           type: string
           allowEmptyValue: false
@@ -763,7 +759,7 @@ paths:
           allowEmptyValue: false
       responses:
         '200':
-          description: Policy ids
+          description: Policy identities
           schema:
             $ref: '#/definitions/policy_id_list_v2'
         '401':
@@ -771,7 +767,7 @@ paths:
         '403':
           description: Forbidden
         '404':
-          description: NearRT-RIC or type not found
+          description: Near-RT RIC or type not found
           schema:
             $ref: '#/definitions/error_information'
       deprecated: false
@@ -792,7 +788,7 @@ paths:
           allowEmptyValue: false
         - name: ric_id
           in: query
-          description: The identity of the NearRT-RIC to get the definitions for.
+          description: The identity of the Near-RT RIC to get the definitions for.
           required: false
           type: string
           allowEmptyValue: false
@@ -806,7 +802,7 @@ paths:
         '403':
           description: Forbidden
         '404':
-          description: NearRT-RIC is not found
+          description: Near-RT RIC is not found
           schema:
             $ref: '#/definitions/error_information'
       deprecated: false
@@ -850,7 +846,7 @@ paths:
       parameters:
         - name: ric_id
           in: query
-          description: The identity of the NearRT-RIC to get types for.
+          description: The identity of the Near-RT RIC to get types for.
           required: false
           type: string
           allowEmptyValue: false
@@ -864,7 +860,7 @@ paths:
         '403':
           description: Forbidden
         '404':
-          description: NearRT-RIC is not found
+          description: Near-RT RIC is not found
           schema:
             $ref: '#/definitions/error_information'
       deprecated: false
@@ -872,26 +868,27 @@ paths:
     get:
       tags:
         - A1 Policy Management Version 2.0 (in progress)
-      summary: Returns info for the NearRT-RIC with the given identity or managing one Mananged Element
+      summary: Returns info for a Near-RT RIC
+      description: Either a Near-RT RIC identity or a Mananged Element identity can be specified.<br>The intention with Mananged Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).
       operationId: getRicUsingGET_1
       produces:
         - application/json
       parameters:
         - name: managed_element_id
           in: query
-          description: 'The identity of a Managed Element. If given, the NearRT-RIC managing the ME is returned.'
+          description: 'The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned.'
           required: false
           type: string
           allowEmptyValue: false
         - name: ric_id
           in: query
-          description: The identity of a NearRT-RIC to get information for.
+          description: The identity of a Near-RT RIC to get information for.
           required: false
           type: string
           allowEmptyValue: false
       responses:
         '200':
-          description: NearRT-RIC is found
+          description: Near-RT RIC is found
           schema:
             $ref: '#/definitions/ric_info_v2'
         '401':
@@ -899,7 +896,7 @@ paths:
         '403':
           description: Forbidden
         '404':
-          description: NearRT-RIC is not found
+          description: Near-RT RIC is not found
           schema:
             $ref: '#/definitions/error_information'
       deprecated: false
@@ -907,14 +904,15 @@ paths:
     get:
       tags:
         - A1 Policy Management Version 2.0 (in progress)
-      summary: Query NearRT-RIC information
+      summary: Query Near-RT RIC information
+      description: The call returns all Near-RT RICs that supports a given policy type identity
       operationId: getRicsUsingGET_1
       produces:
         - application/json
       parameters:
         - name: policytype_id
           in: query
-          description: 'The identity of a policy type. If given, all NearRT-RICs supporteing the policy type are returned'
+          description: 'The identity of a policy type. If given, all Near-RT RICs supporteing the policy type are returned'
           required: false
           type: string
           allowEmptyValue: false
@@ -937,6 +935,7 @@ paths:
       tags:
         - A1 Policy Management Version 2.0 (in progress)
       summary: Returns service information
+      description: Either information about a registered service with given identity or all registered services are returned.
       operationId: getServicesUsingGET
       produces:
         - application/json
@@ -965,6 +964,7 @@ paths:
       tags:
         - A1 Policy Management Version 2.0 (in progress)
       summary: Register a service
+      description: 'Registering a service is needed to:<ul><li>Get callbacks.</li><li>Activate supervision of the service. If a service is inactive, its policies will be deleted.</li></ul>'
       operationId: putServiceUsingPUT
       consumes:
         - application/json
@@ -1000,14 +1000,14 @@ paths:
     delete:
       tags:
         - A1 Policy Management Version 2.0 (in progress)
-      summary: Delete a service
+      summary: Unregister a service
       operationId: deleteServiceUsingDELETE
       produces:
         - '*/*'
       parameters:
         - name: service_id
           in: query
-          description: The name of the service
+          description: The idenitity of the service
           required: true
           type: string
           allowEmptyValue: false
@@ -1015,7 +1015,7 @@ paths:
         '200':
           description: Not used
         '204':
-          description: Service deleted
+          description: Service unregistered
           schema:
             type: object
         '401':
@@ -1104,7 +1104,7 @@ definitions:
   json_object:
     type: object
     title: json_object
-    description: A JSON object. The schema is defined by the Policy Type
+    description: A JSON object defining the configuration of the policy. The schema is defined by the Policy Type.
   policy_id_list_v2:
     type: object
     properties:
@@ -1139,7 +1139,7 @@ definitions:
         description: 'timestamp, last modification time'
       ric:
         type: string
-        description: identity of the target NearRT-RIC
+        description: identity of the target Near-RT RIC
       service:
         type: string
         description: the name of the service owning the policy
@@ -1164,7 +1164,7 @@ definitions:
         description: name of the policy type
       ric_id:
         type: string
-        description: identity of the target NearRT-RIC
+        description: identity of the target Near-RT RIC
       service_id:
         type: string
         description: the name of the service owning the policy
@@ -1175,7 +1175,7 @@ definitions:
     properties:
       policy_schemas:
         type: array
-        description: Policy type json schemas
+        description: 'Policy type json schemas. The schema is a json object following http://json-schema.org/draft-07/schema'
         items:
           type: object
     title: policy_schema_list_v2
@@ -1195,11 +1195,11 @@ definitions:
     properties:
       rics:
         type: array
-        description: List of NearRT-RIC information
+        description: List of Near-RT RIC information
         items:
           $ref: '#/definitions/ric_info_v2'
     title: ric_info_list_v2
-    description: List of NearRT-RIC information
+    description: List of Near-RT RIC information
   ric_info_v1:
     type: object
     properties:
@@ -1215,7 +1215,7 @@ definitions:
           type: string
       ricName:
         type: string
-        description: identity of the NearRT-RIC
+        description: identity of the Near-RT RIC
       state:
         type: string
         description: state info
@@ -1235,22 +1235,22 @@ definitions:
           type: string
       ric_id:
         type: string
-        description: identity of the NearRT-RIC
+        description: identity of the Near-RT RIC
       state:
         type: string
         description: |-
-          State for the NearRT-RIC, values: 
-          UNAVAILABLE: The NearRT-RIC is not avialable, information may be inconsistent 
+          State for the Near-RT RIC, values: 
+          UNAVAILABLE: The Near-RT RIC is not avialable, information may be inconsistent 
           AVAILABLE: The normal state. Policies can be configured. +
-          SYNCHRONIZING: The Policy Management Service is synchronizing the view of the NearRT-RIC. Policies cannot be configured. 
-          CONSISTENCY_CHECK: A consistency check between the Policy Management Service and the NearRT-RIC. Policies cannot be configured.
+          SYNCHRONIZING: The Policy Management Service is synchronizing the view of the Near-RT RIC. Policies cannot be configured. 
+          CONSISTENCY_CHECK: A consistency check between the Policy Management Service and the Near-RT RIC. Policies cannot be configured.
         enum:
           - UNAVAILABLE
           - AVAILABLE
           - SYNCHRONIZING
           - CONSISTENCY_CHECK
     title: ric_info_v2
-    description: Information for a NearRT-RIC
+    description: Information for a Near-RT RIC
   service_list_v2:
     type: object
     properties:
index 4b68428..a563659 100644 (file)
@@ -22,6 +22,9 @@ package org.onap.ccsdk.oran.a1policymanagementservice;
 
 import com.google.common.base.Predicates;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
@@ -32,6 +35,8 @@ import springfox.documentation.builders.PathSelectors;
 import springfox.documentation.builders.RequestHandlerSelectors;
 import springfox.documentation.service.ApiInfo;
 import springfox.documentation.service.Contact;
+import springfox.documentation.service.StringVendorExtension;
+import springfox.documentation.service.VendorExtension;
 import springfox.documentation.spi.DocumentationType;
 import springfox.documentation.spring.web.plugins.Docket;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
@@ -48,16 +53,16 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
 public class SwaggerConfig extends WebMvcConfigurationSupport {
 
     static final String API_TITLE = "A1 Policy management service";
-    static final String DESCRIPTION =
-        "The O-RAN NonRT-RIC PolicyAgent provides a REST API for management of policices. \n"
-            + "It provides support for: \n"
-            + "-Supervision of clients (R-APPs) to eliminate stray policies in case of failure \n"
-            + "-Consistency monitoring of the SMO view of policies and the actual situation in the NearRT-RICs \n"
-            + "-Consistency monitoring of NearRT-RIC capabilities (policy types)" + "-Policy configuration. \n"
-            + "This includes:" + "-One REST API towards all NearRT-RICs in the network \n"
-            + "-Query functions that can find all policies in a NearRT-RIC, all policies owned by a service (R-APP), \n"
-            + "all policies of a type etc. \n"
-            + "-Maps O1 resources (ManagedElement) as defined in O1 to the controlling NearRT-RIC of A1 policices.\n";
+    static final String DESCRIPTION = //
+        "The O-RAN Non-RT RIC Policy Management Service provides a REST API for management of A1 policices. \n" //
+            + "It provides support for:" //
+            + "<ul>" //
+            + "<li>A1 Policy creation and modification.</li>" //
+            + "<li>Maintaining a view of supported Near-RT RIC policy types </li>" //
+            + "<li>Supervision of using services (R-APPs). When a service is unavailble, its policies are removed. </li> " //
+            + "<li>Monitoring and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs </li>" //
+            + "</ul>"//
+    ;
     static final String VERSION = "1.1.0";
     @SuppressWarnings("squid:S1075") // Refactor your code to get this URI from a customizable parameter.
     static final String RESOURCES_PATH = "classpath:/META-INF/resources/";
@@ -90,9 +95,20 @@ public class SwaggerConfig extends WebMvcConfigurationSupport {
             .description(DESCRIPTION) //
             .version(VERSION) //
             .contact(contact()) //
+            .extensions(vendorExtentions()) //
             .build();
     }
 
+    @SuppressWarnings("rawtypes") // VendorExtension is a raw type. References to generic type VendorExtension<T>
+                                  // should be parameterizedJava(16777788)
+    private static List<VendorExtension> vendorExtentions() {
+        final String URN = "60f9a0e7-343f-43bf-9194-d8d65688d465";
+        List<VendorExtension> extentions = new ArrayList<>();
+        extentions.add(new StringVendorExtension("x-api-id", URN));
+        extentions.add(new StringVendorExtension("x-audience", "external-partner"));
+        return extentions;
+    }
+
     private static Contact contact() {
         return new Contact("Ericsson Software Technology", "", "nonrtric@est.tech");
     }
index 2b49357..31a706b 100644 (file)
@@ -60,9 +60,9 @@ public class A1ClientFactory {
      * means that after the first successful creation it won't have to try which
      * protocol to use, but can create the client directly.
      *
-     * @param ric The NearRT-RIC to get a client for.
+     * @param ric The Near-RT RIC to get a client for.
      * @return a client with the correct protocol, or a ServiceException if none of
-     *         the protocols are supported by the NearRT-RIC.
+     *         the protocols are supported by the Near-RT RIC.
      */
     public Mono<A1Client> createA1Client(Ric ric) {
         return getProtocolVersion(ric) //
@@ -91,7 +91,7 @@ public class A1ClientFactory {
         String controllerName = ric.getConfig().controllerName();
         if (controllerName.isEmpty()) {
             ric.setProtocolVersion(A1ProtocolType.UNKNOWN);
-            throw new ServiceException("No controller configured for NearRT-RIC: " + ric.id());
+            throw new ServiceException("No controller configured for Near-RT RIC: " + ric.id());
         }
         try {
             return this.appConfig.getControllerConfig(controllerName);
@@ -125,8 +125,8 @@ public class A1ClientFactory {
                 .onErrorResume(notUsed -> fetchVersion(ric, A1ProtocolType.SDNC_ONAP)) //
                 .doOnNext(ric::setProtocolVersion)
                 .doOnNext(
-                    version -> logger.debug("Established protocol version:{} for NearRT-RIC: {}", version, ric.id())) //
-                .doOnError(notUsed -> logger.warn("Could not get protocol version from NearRT-RIC: {}", ric.id())) //
+                    version -> logger.debug("Established protocol version:{} for Near-RT RIC: {}", version, ric.id())) //
+                .doOnError(notUsed -> logger.warn("Could not get protocol version from Near-RT RIC: {}", ric.id())) //
                 .onErrorResume(
                     notUsed -> Mono.error(new ServiceException("Protocol negotiation failed for " + ric.id())));
         } else {
index dffb9dd..4ad08ce 100644 (file)
@@ -83,7 +83,7 @@ public class SdncOscA1Client implements A1Client {
      *
      * @param protocolType the southbound protocol of the controller. Supported
      *        protocols are SDNC_OSC_STD_V1_1 and SDNC_OSC_OSC_V1
-     * @param ricConfig the configuration of the NearRT-RIC to communicate
+     * @param ricConfig the configuration of the Near-RT RIC to communicate
      *        with
      * @param controllerConfig the configuration of the SDNC controller to use
      *
@@ -101,7 +101,7 @@ public class SdncOscA1Client implements A1Client {
      *
      * @param protocolType the southbound protocol of the controller. Supported
      *        protocols are SDNC_OSC_STD_V1_1 and SDNC_OSC_OSC_V1
-     * @param ricConfig the configuration of the NearRT-RIC to communicate
+     * @param ricConfig the configuration of the Near-RT RIC to communicate
      *        with
      * @param controllerConfig the configuration of the SDNC controller to use
      * @param restClient the REST client to use
index 2c8ad7f..90666e7 100644 (file)
@@ -100,9 +100,9 @@ public class PolicyController {
     @ApiResponses(
         value = {
             @ApiResponse(code = 200, message = "Policy schemas", response = Object.class, responseContainer = "List"), //
-            @ApiResponse(code = 404, message = "NearRT-RIC is not found", response = String.class)})
+            @ApiResponse(code = 404, message = "Near-RT RIC is not found", response = String.class)})
     public ResponseEntity<String> getPolicySchemas( //
-        @ApiParam(name = "ric", required = false, value = "The name of the NearRT-RIC to get the definitions for.") //
+        @ApiParam(name = "ric", required = false, value = "The name of the Near-RT RIC to get the definitions for.") //
         @RequestParam(name = "ric", required = false) String ricName) {
         if (ricName == null) {
             Collection<PolicyType> types = this.policyTypes.getAll();
@@ -143,9 +143,9 @@ public class PolicyController {
                 message = "Policy type names",
                 response = String.class,
                 responseContainer = "List"),
-            @ApiResponse(code = 404, message = "NearRT-RIC is not found", response = String.class)})
+            @ApiResponse(code = 404, message = "Near-RT RIC is not found", response = String.class)})
     public ResponseEntity<String> getPolicyTypes( //
-        @ApiParam(name = "ric", required = false, value = "The name of the NearRT-RIC to get types for.") //
+        @ApiParam(name = "ric", required = false, value = "The name of the Near-RT RIC to get types for.") //
         @RequestParam(name = "ric", required = false) String ricName) {
         if (ricName == null) {
             Collection<PolicyType> types = this.policyTypes.getAll();
@@ -185,7 +185,7 @@ public class PolicyController {
             @ApiResponse(code = 200, message = "Not used", response = VoidResponse.class),
             @ApiResponse(code = 204, message = "Policy deleted", response = VoidResponse.class),
             @ApiResponse(code = 404, message = "Policy is not found", response = String.class),
-            @ApiResponse(code = 423, message = "NearRT-RIC is not operational", response = String.class)})
+            @ApiResponse(code = 423, message = "Near-RT RIC is not operational", response = String.class)})
     public Mono<ResponseEntity<Object>> deletePolicy( //
         @ApiParam(name = "id", required = true, value = "The identity of the policy instance.") //
         @RequestParam(name = "id", required = true) String id) {
@@ -208,27 +208,27 @@ public class PolicyController {
     }
 
     @PutMapping(path = "/policy")
-    @ApiOperation(value = "Put a policy", response = String.class)
+    @ApiOperation(value = "Put a policy", response = VoidResponse.class)
     @ApiResponses(
         value = { //
             @ApiResponse(code = 201, message = "Policy created", response = VoidResponse.class), //
             @ApiResponse(code = 200, message = "Policy updated", response = VoidResponse.class), //
-            @ApiResponse(code = 423, message = "NearRT-RIC is not operational", response = String.class), //
-            @ApiResponse(code = 404, message = "NearRT-RIC or policy type is not found", response = String.class) //
+            @ApiResponse(code = 423, message = "Near-RT RIC is not operational", response = String.class), //
+            @ApiResponse(code = 404, message = "Near-RT RIC or policy type is not found", response = String.class) //
         })
     public Mono<ResponseEntity<Object>> putPolicy( //
         @ApiParam(name = "type", required = false, value = "The name of the policy type.") //
         @RequestParam(name = "type", required = false, defaultValue = "") String typeName, //
         @ApiParam(name = "id", required = true, value = "The identity of the policy instance.") //
         @RequestParam(name = "id", required = true) String instanceId, //
-        @ApiParam(name = "ric", required = true, value = "The name of the NearRT-RIC where the policy will be " + //
+        @ApiParam(name = "ric", required = true, value = "The name of the Near-RT RIC where the policy will be " + //
             "created.") //
         @RequestParam(name = "ric", required = true) String ricName, //
         @ApiParam(name = "service", required = true, value = "The name of the service creating the policy.") //
         @RequestParam(name = "service", required = true) String service, //
         @ApiParam(name = "transient", required = false, value = "If the policy is transient or not (boolean " + //
             "defaulted to false). A policy is transient if it will be forgotten when the service needs to " + //
-            "reconnect to the NearRT-RIC.") //
+            "reconnect to the Near-RT RIC.") //
         @RequestParam(name = "transient", required = false, defaultValue = "false") boolean isTransient, //
         @RequestBody Object jsonBody) {
 
@@ -321,11 +321,11 @@ public class PolicyController {
     @ApiResponses(
         value = {
             @ApiResponse(code = 200, message = "Policies", response = PolicyInfo.class, responseContainer = "List"),
-            @ApiResponse(code = 404, message = "NearRT-RIC or type not found", response = String.class)})
+            @ApiResponse(code = 404, message = "Near-RT RIC or type not found", response = String.class)})
     public ResponseEntity<String> getPolicies( //
         @ApiParam(name = "type", required = false, value = "The name of the policy type to get policies for.") //
         @RequestParam(name = "type", required = false) String type, //
-        @ApiParam(name = "ric", required = false, value = "The name of the NearRT-RIC to get policies for.") //
+        @ApiParam(name = "ric", required = false, value = "The name of the Near-RT RIC to get policies for.") //
         @RequestParam(name = "ric", required = false) String ric, //
         @ApiParam(name = "service", required = false, value = "The name of the service to get policies for.") //
         @RequestParam(name = "service", required = false) String service) //
@@ -334,7 +334,7 @@ public class PolicyController {
             return new ResponseEntity<>("Policy type not found", HttpStatus.NOT_FOUND);
         }
         if ((ric != null && this.rics.get(ric) == null)) {
-            return new ResponseEntity<>("NearRT-RIC not found", HttpStatus.NOT_FOUND);
+            return new ResponseEntity<>("Near-RT RIC not found", HttpStatus.NOT_FOUND);
         }
 
         String filteredPolicies = policiesToJson(filter(type, ric, service));
@@ -342,14 +342,19 @@ public class PolicyController {
     }
 
     @GetMapping("/policy_ids")
-    @ApiOperation(value = "Query policies, only IDs returned")
+    @ApiOperation(value = "Query policies, only policy identities returned")
     @ApiResponses(
-        value = {@ApiResponse(code = 200, message = "Policy ids", response = String.class, responseContainer = "List"),
-            @ApiResponse(code = 404, message = "NearRT-RIC or type not found", response = String.class)})
+        value = {
+            @ApiResponse(
+                code = 200,
+                message = "Policy identitiess",
+                response = String.class,
+                responseContainer = "List"),
+            @ApiResponse(code = 404, message = "Near-RT RIC or type not found", response = String.class)})
     public ResponseEntity<String> getPolicyIds( //
         @ApiParam(name = "type", required = false, value = "The name of the policy type to get policies for.") //
         @RequestParam(name = "type", required = false) String type, //
-        @ApiParam(name = "ric", required = false, value = "The name of the NearRT-RIC to get policies for.") //
+        @ApiParam(name = "ric", required = false, value = "The name of the Near-RT RIC to get policies for.") //
         @RequestParam(name = "ric", required = false) String ric, //
         @ApiParam(name = "service", required = false, value = "The name of the service to get policies for.") //
         @RequestParam(name = "service", required = false) String service) //
@@ -358,7 +363,7 @@ public class PolicyController {
             return new ResponseEntity<>("Policy type not found", HttpStatus.NOT_FOUND);
         }
         if ((ric != null && this.rics.get(ric) == null)) {
-            return new ResponseEntity<>("NearRT-RIC not found", HttpStatus.NOT_FOUND);
+            return new ResponseEntity<>("Near-RT RIC not found", HttpStatus.NOT_FOUND);
         }
 
         String policyIdsJson = toPolicyIdsJson(filter(type, ric, service));
index 4cb91c0..c486201 100644 (file)
@@ -35,7 +35,7 @@ public class PolicyInfo {
     @ApiModelProperty(value = "name of the policy type")
     public String type;
 
-    @ApiModelProperty(value = "identity of the target NearRT-RIC")
+    @ApiModelProperty(value = "identity of the target Near-RT RIC")
     public String ric;
 
     @ApiModelProperty(value = "the configuration of the policy")
index 4257a26..467afdb 100644 (file)
@@ -30,7 +30,7 @@ import org.immutables.gson.Gson;
 @Gson.TypeAdapters
 @ApiModel(value = "ric_info_v1")
 class RicInfo {
-    @ApiModelProperty(value = "identity of the NearRT-RIC")
+    @ApiModelProperty(value = "identity of the Near-RT RIC")
     public final String ricName;
 
     @ApiModelProperty(value = "O1 identities for managed entities")
index 5036356..cd56abd 100644 (file)
@@ -64,8 +64,8 @@ public class RicRepositoryController {
     @ApiOperation(value = "Returns the name of a RIC managing one Mananged Element")
     @ApiResponses(
         value = { //
-            @ApiResponse(code = 200, message = "NearRT-RIC is found", response = String.class), //
-            @ApiResponse(code = 404, message = "NearRT-RIC is not found", response = String.class) //
+            @ApiResponse(code = 200, message = "Near-RT RIC is found", response = String.class), //
+            @ApiResponse(code = 404, message = "Near-RT RIC is not found", response = String.class) //
         })
     public ResponseEntity<String> getRic( //
         @ApiParam(name = "managedElementId", required = true, value = "The identity of the Managed Element") //
@@ -83,7 +83,7 @@ public class RicRepositoryController {
      * @return a Json array of all RIC data Example: http://localhost:8081/ric
      */
     @GetMapping("/rics")
-    @ApiOperation(value = "Query NearRT-RIC information")
+    @ApiOperation(value = "Query Near-RT RIC information")
     @ApiResponses(
         value = { //
             @ApiResponse(code = 200, message = "OK", response = RicInfo.class, responseContainer = "List"), //
index 9290ca0..2222765 100644 (file)
@@ -25,6 +25,8 @@ import io.swagger.annotations.ApiModel;
 import org.immutables.gson.Gson;
 
 @Gson.TypeAdapters
-@ApiModel(value = "json_object", description = "A JSON object. The schema is defined by the Policy Type")
+@ApiModel(
+    value = "json_object",
+    description = "A JSON object defining the configuration of the policy. The schema is defined by the Policy Type.")
 class JsonObject {
 }
diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/JsonSchema.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/JsonSchema.java
deleted file mode 100644 (file)
index ff1b8ed..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*-
- * ========================LICENSE_START=================================
- * ONAP : ccsdk oran
- * ======================================================================
- * Copyright (C) 2020 Nordix Foundation. All rights reserved.
- * ======================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================LICENSE_END===================================
- */
-
-package org.onap.ccsdk.oran.a1policymanagementservice.controllers.v2;
-
-import io.swagger.annotations.ApiModel;
-
-import org.immutables.gson.Gson;
-
-@Gson.TypeAdapters
-@ApiModel(value = "json_schema", description = "A JSON schema following http://json-schema.org/draft-07/schema")
-class JsonSchema {
-}
index 9bf6c4b..9d9aff4 100644 (file)
@@ -66,7 +66,7 @@ import org.springframework.web.reactive.function.client.WebClientResponseExcepti
 import reactor.core.publisher.Mono;
 
 @RestController("PolicyControllerV2")
-@Api(tags = Consts.V2_API_NAME)
+@Api(tags = {Consts.V2_API_NAME}, description = "Policy management")
 public class PolicyController {
 
     public static class RejectionException extends Exception {
@@ -102,12 +102,12 @@ public class PolicyController {
     @ApiResponses(
         value = { //
             @ApiResponse(code = 200, message = "Policy schemas", response = PolicySchemaList.class), //
-            @ApiResponse(code = 404, message = "NearRT-RIC is not found", response = ErrorResponse.ErrorInfo.class)})
+            @ApiResponse(code = 404, message = "Near-RT RIC is not found", response = ErrorResponse.ErrorInfo.class)})
     public ResponseEntity<Object> getPolicySchemas( //
         @ApiParam(
             name = Consts.RIC_ID_PARAM,
             required = false,
-            value = "The identity of the NearRT-RIC to get the definitions for.") //
+            value = "The identity of the Near-RT RIC to get the definitions for.") //
         @RequestParam(name = Consts.RIC_ID_PARAM, required = false) String ricId,
         @ApiParam(
             name = Consts.POLICY_TYPE_ID_PARAM,
@@ -141,12 +141,12 @@ public class PolicyController {
     @ApiOperation(value = "Query policy type identities", produces = MediaType.APPLICATION_JSON_VALUE)
     @ApiResponses(
         value = {@ApiResponse(code = 200, message = "Policy type IDs", response = PolicyTypeIdList.class),
-            @ApiResponse(code = 404, message = "NearRT-RIC is not found", response = ErrorResponse.ErrorInfo.class)})
+            @ApiResponse(code = 404, message = "Near-RT RIC is not found", response = ErrorResponse.ErrorInfo.class)})
     public ResponseEntity<Object> getPolicyTypes( //
         @ApiParam(
             name = Consts.RIC_ID_PARAM,
             required = false,
-            value = "The identity of the NearRT-RIC to get types for.") //
+            value = "The identity of the Near-RT RIC to get types for.") //
         @RequestParam(name = Consts.RIC_ID_PARAM, required = false) String ricId) {
         if (ricId == null) {
             Collection<PolicyType> types = this.policyTypes.getAll();
@@ -188,7 +188,7 @@ public class PolicyController {
             @ApiResponse(code = 404, message = "Policy is not found", response = ErrorResponse.ErrorInfo.class),
             @ApiResponse(
                 code = 423,
-                message = "NearRT-RIC is not operational",
+                message = "Near-RT RIC is not operational",
                 response = ErrorResponse.ErrorInfo.class)})
     public Mono<ResponseEntity<Object>> deletePolicy( //
         @ApiParam(name = Consts.POLICY_ID_PARAM, required = true, value = "The identity of the policy instance.") //
@@ -219,11 +219,11 @@ public class PolicyController {
             @ApiResponse(code = 200, message = "Policy updated", response = VoidResponse.class), //
             @ApiResponse(
                 code = 423,
-                message = "NearRT-RIC is not operational",
+                message = "Near-RT RIC is not operational",
                 response = ErrorResponse.ErrorInfo.class), //
             @ApiResponse(
                 code = 404,
-                message = "NearRT-RIC or policy type is not found",
+                message = "Near-RT RIC or policy type is not found",
                 response = ErrorResponse.ErrorInfo.class) //
         })
     public Mono<ResponseEntity<Object>> putPolicy( //
@@ -234,7 +234,7 @@ public class PolicyController {
         @ApiParam(
             name = Consts.RIC_ID_PARAM,
             required = true,
-            value = "The identity of the NearRT-RIC where the policy will be " + //
+            value = "The identity of the Near-RT RIC where the policy will be " + //
                 "created.") //
         @RequestParam(name = Consts.RIC_ID_PARAM, required = true) String ricId, //
         @ApiParam(
@@ -246,7 +246,7 @@ public class PolicyController {
             name = Consts.TRANSIENT_PARAM,
             required = false,
             value = "If the policy is transient or not (boolean " + //
-                "defaulted to false). A policy is transient if it will not be recreated in the NearRT-RIC " + //
+                "defaulted to false). A policy is transient if it will not be recreated in the Near-RT RIC " + //
                 "when it has been lost (for instance due to a restart)") //
         @RequestParam(name = Consts.TRANSIENT_PARAM, required = false, defaultValue = "false") boolean isTransient, //
         @RequestBody Object jsonBody) {
@@ -256,7 +256,7 @@ public class PolicyController {
         PolicyType type = policyTypes.get(policyTypeId);
         keepServiceAlive(serviceId);
         if (ric == null || type == null) {
-            return ErrorResponse.createMono("NearRT-RIC or policy type not found", HttpStatus.NOT_FOUND);
+            return ErrorResponse.createMono("Near-RT RIC or policy type not found", HttpStatus.NOT_FOUND);
         }
         Policy policy = ImmutablePolicy.builder() //
             .id(instanceId) //
@@ -329,16 +329,18 @@ public class PolicyController {
         }
     }
 
+    static final String GET_POLICIES_QUERY_DETAILS =
+        "Returns a list of A1 policies matching given search criteria. <br>" //
+            + "If several query parameters are defined, the policies matching all conditions are returned.";
+
     @GetMapping(path = Consts.V2_API_ROOT + "/policies", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ApiOperation(
-        value = "Query policies",
-        notes = "If several query parameters are defined, the policies matching all conditions are returned")
+    @ApiOperation(value = "Query for existing A1 policies", notes = GET_POLICIES_QUERY_DETAILS)
     @ApiResponses(
         value = { //
             @ApiResponse(code = 200, message = "Policies", response = PolicyInfoList.class),
             @ApiResponse(
                 code = 404,
-                message = "NearRT-RIC, policy type or service not found",
+                message = "Near-RT RIC, policy type or service not found",
                 response = ErrorResponse.ErrorInfo.class)})
     public ResponseEntity<Object> getPolicies( //
         @ApiParam(
@@ -349,7 +351,7 @@ public class PolicyController {
         @ApiParam(
             name = Consts.RIC_ID_PARAM,
             required = false,
-            value = "The identity of the NearRT-RIC to get policies for.") //
+            value = "The identity of the Near-RT RIC to get policies for.") //
         @RequestParam(name = Consts.RIC_ID_PARAM, required = false) String ric, //
         @ApiParam(
             name = Consts.SERVICE_ID_PARAM,
@@ -361,7 +363,7 @@ public class PolicyController {
             return ErrorResponse.create("Policy type not found", HttpStatus.NOT_FOUND);
         }
         if ((ric != null && this.rics.get(ric) == null)) {
-            return ErrorResponse.create("NearRT-RIC not found", HttpStatus.NOT_FOUND);
+            return ErrorResponse.create("Near-RT RIC not found", HttpStatus.NOT_FOUND);
         }
 
         String filteredPolicies = policiesToJson(filter(type, ric, service));
@@ -369,13 +371,13 @@ public class PolicyController {
     }
 
     @GetMapping(path = Consts.V2_API_ROOT + "/policy-ids", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ApiOperation(value = "Query policies, only IDs returned")
+    @ApiOperation(value = "Query policies, only policy identities are returned", notes = GET_POLICIES_QUERY_DETAILS)
     @ApiResponses(
         value = { //
-            @ApiResponse(code = 200, message = "Policy ids", response = PolicyIdList.class),
+            @ApiResponse(code = 200, message = "Policy identities", response = PolicyIdList.class),
             @ApiResponse(
                 code = 404,
-                message = "NearRT-RIC or type not found",
+                message = "Near-RT RIC or type not found",
                 response = ErrorResponse.ErrorInfo.class)})
     public ResponseEntity<Object> getPolicyIds( //
         @ApiParam(
@@ -386,7 +388,7 @@ public class PolicyController {
         @ApiParam(
             name = Consts.RIC_ID_PARAM,
             required = false,
-            value = "The identity of the NearRT-RIC to get policies for.") //
+            value = "The identity of the Near-RT RIC to get policies for.") //
         @RequestParam(name = Consts.RIC_ID_PARAM, required = false) String ricId, //
         @ApiParam(
             name = Consts.SERVICE_ID_PARAM,
@@ -398,7 +400,7 @@ public class PolicyController {
             return ErrorResponse.create("Policy type not found", HttpStatus.NOT_FOUND);
         }
         if ((ricId != null && this.rics.get(ricId) == null)) {
-            return ErrorResponse.create("NearRT-RIC not found", HttpStatus.NOT_FOUND);
+            return ErrorResponse.create("Near-RT RIC not found", HttpStatus.NOT_FOUND);
         }
 
         String policyIdsJson = toPolicyIdsJson(filter(policyTypeId, ricId, serviceId));
index 4ba3dc7..673c945 100644 (file)
@@ -42,7 +42,7 @@ public class PolicyInfo {
     @JsonProperty("policy_type_id")
     public String policyTypeId;
 
-    @ApiModelProperty(value = "identity of the target NearRT-RIC")
+    @ApiModelProperty(value = "identity of the target Near-RT RIC")
     @SerializedName("ric_id")
     @JsonProperty("ric_id")
     public String ricId;
index 66296f5..6768b76 100644 (file)
@@ -37,7 +37,8 @@ import org.immutables.gson.Gson;
 @ApiModel(value = "policy_schema_list_v2", description = "Policy type json schemas")
 public class PolicySchemaList {
 
-    @ApiModelProperty(value = "Policy type json schemas")
+    @ApiModelProperty(
+        value = "Policy type json schemas. The schema is a json object following http://json-schema.org/draft-07/schema")
     @SerializedName("policy_schemas")
     @JsonProperty("policy_schemas")
     public final Collection<Object> schemas;
index 63b4bd6..750f0df 100644 (file)
@@ -31,22 +31,22 @@ import java.util.Collection;
 import org.immutables.gson.Gson;
 
 @Gson.TypeAdapters
-@ApiModel(value = "ric_info_v2", description = "Information for a NearRT-RIC")
+@ApiModel(value = "ric_info_v2", description = "Information for a Near-RT RIC")
 public class RicInfo {
 
     @Gson.TypeAdapters
-    @ApiModel(value = "ric_state_v2", description = "Represents the states for a NearRT-RIC")
+    @ApiModel(value = "ric_state_v2", description = "Represents the states for a Near-RT RIC")
     public enum RicState {
         UNAVAILABLE, AVAILABLE, SYNCHRONIZING, CONSISTENCY_CHECK
     }
 
-    private static final String STATE_DESCRIPTION = "State for the NearRT-RIC, values: \n"
-        + "UNAVAILABLE: The NearRT-RIC is not avialable, information may be inconsistent \n"
+    private static final String STATE_DESCRIPTION = "State for the Near-RT RIC, values: \n"
+        + "UNAVAILABLE: The Near-RT RIC is not avialable, information may be inconsistent \n"
         + "AVAILABLE: The normal state. Policies can be configured. +\n"
-        + "SYNCHRONIZING: The Policy Management Service is synchronizing the view of the NearRT-RIC. Policies cannot be configured. \n"
-        + "CONSISTENCY_CHECK: A consistency check between the Policy Management Service and the NearRT-RIC. Policies cannot be configured.";
+        + "SYNCHRONIZING: The Policy Management Service is synchronizing the view of the Near-RT RIC. Policies cannot be configured. \n"
+        + "CONSISTENCY_CHECK: A consistency check between the Policy Management Service and the Near-RT RIC. Policies cannot be configured.";
 
-    @ApiModelProperty(value = "identity of the NearRT-RIC")
+    @ApiModelProperty(value = "identity of the Near-RT RIC")
     @SerializedName("ric_id")
     @JsonProperty("ric_id")
     public final String ricId;
index 7ca49be..7932dc5 100644 (file)
@@ -31,10 +31,10 @@ import java.util.Collection;
 import org.immutables.gson.Gson;
 
 @Gson.TypeAdapters
-@ApiModel(value = "ric_info_list_v2", description = "List of NearRT-RIC information")
+@ApiModel(value = "ric_info_list_v2", description = "List of Near-RT RIC information")
 public class RicInfoList {
 
-    @ApiModelProperty(value = "List of NearRT-RIC information")
+    @ApiModelProperty(value = "List of Near-RT RIC information")
     @SerializedName("rics")
     @JsonProperty("rics")
     public final Collection<RicInfo> rics;
index a0987ad..cc8a8e9 100644 (file)
@@ -46,7 +46,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 @RestController("RicRepositoryControllerV2")
-@Api(tags = Consts.V2_API_NAME)
+@Api(tags = {Consts.V2_API_NAME})
 public class RicRepositoryController {
 
     @Autowired
@@ -59,26 +59,31 @@ public class RicRepositoryController {
         .serializeNulls() //
         .create(); //
 
+    private static final String GET_RIC_BRIEF = "Returns info for a Near-RT RIC";
+    private static final String GET_RIC_DETAILS =
+        "Either a Near-RT RIC identity or a Mananged Element identity can be specified.<br>" //
+            + "The intention with Mananged Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).";
+
     /**
      * Example: http://localhost:8081/v2/ric?managed_element_id=kista_1
      */
     @GetMapping(path = Consts.V2_API_ROOT + "/ric", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ApiOperation(value = "Returns info for the NearRT-RIC with the given identity or managing one Mananged Element")
+    @ApiOperation(value = GET_RIC_BRIEF, notes = GET_RIC_DETAILS)
     @ApiResponses(
         value = { //
-            @ApiResponse(code = 200, message = "NearRT-RIC is found", response = RicInfo.class), //
-            @ApiResponse(code = 404, message = "NearRT-RIC is not found", response = ErrorResponse.ErrorInfo.class) //
+            @ApiResponse(code = 200, message = "Near-RT RIC is found", response = RicInfo.class), //
+            @ApiResponse(code = 404, message = "Near-RT RIC is not found", response = ErrorResponse.ErrorInfo.class) //
         })
     public ResponseEntity<Object> getRic( //
         @ApiParam(
             name = Consts.MANAGED_ELEMENT_ID_PARAM,
             required = false,
-            value = "The identity of a Managed Element. If given, the NearRT-RIC managing the ME is returned.") //
+            value = "The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned.") //
         @RequestParam(name = Consts.MANAGED_ELEMENT_ID_PARAM, required = false) String managedElementId,
         @ApiParam(
             name = Consts.RIC_ID_PARAM,
             required = false,
-            value = "The identity of a NearRT-RIC to get information for.") //
+            value = "The identity of a Near-RT RIC to get information for.") //
         @RequestParam(name = Consts.RIC_ID_PARAM, required = false) String ricId) {
         try {
             if (managedElementId != null && ricId != null) {
@@ -88,7 +93,7 @@ public class RicRepositoryController {
                 if (ric.isPresent()) {
                     return new ResponseEntity<>(gson.toJson(toRicInfo(ric.get())), HttpStatus.OK);
                 } else {
-                    return ErrorResponse.create("No NearRT-RIC managing the ME is found", HttpStatus.NOT_FOUND);
+                    return ErrorResponse.create("No Near-RT RIC managing the ME is found", HttpStatus.NOT_FOUND);
                 }
             } else if (ricId != null) {
                 RicInfo info = toRicInfo(this.rics.getRic(ricId));
@@ -101,11 +106,14 @@ public class RicRepositoryController {
         }
     }
 
+    static final String QUERY_RIC_INFO_DETAILS =
+        "The call returns all Near-RT RICs that supports a given policy type identity";
+
     /**
      * @return a Json array of all RIC data Example: http://localhost:8081/v2/ric
      */
     @GetMapping(path = Consts.V2_API_ROOT + "/rics", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ApiOperation(value = "Query NearRT-RIC information")
+    @ApiOperation(value = "Query Near-RT RIC information", notes = QUERY_RIC_INFO_DETAILS)
     @ApiResponses(
         value = { //
             @ApiResponse(code = 200, message = "OK", response = RicInfoList.class), //
@@ -114,7 +122,7 @@ public class RicRepositoryController {
         @ApiParam(
             name = Consts.POLICY_TYPE_ID_PARAM,
             required = false,
-            value = "The identity of a policy type. If given, all NearRT-RICs supporteing the policy type are returned") //
+            value = "The identity of a policy type. If given, all Near-RT RICs supporteing the policy type are returned") //
         @RequestParam(name = Consts.POLICY_TYPE_ID_PARAM, required = false) String supportingPolicyType) {
         if ((supportingPolicyType != null) && (this.types.get(supportingPolicyType) == null)) {
             return ErrorResponse.create("Policy type not found", HttpStatus.NOT_FOUND);
@@ -131,16 +139,18 @@ public class RicRepositoryController {
     }
 
     private RicInfo.RicState toRicState(Ric.RicState state) {
-        if (state == Ric.RicState.AVAILABLE) {
-            return RicInfo.RicState.AVAILABLE;
-        } else if (state == Ric.RicState.CONSISTENCY_CHECK) {
-            return RicInfo.RicState.CONSISTENCY_CHECK;
-        } else if (state == Ric.RicState.SYNCHRONIZING) {
-            return RicInfo.RicState.SYNCHRONIZING;
-        } else if (state == Ric.RicState.UNAVAILABLE) {
-            return RicInfo.RicState.UNAVAILABLE;
+        switch (state) {
+            case AVAILABLE:
+                return RicInfo.RicState.AVAILABLE;
+            case CONSISTENCY_CHECK:
+                return RicInfo.RicState.CONSISTENCY_CHECK;
+            case SYNCHRONIZING:
+                return RicInfo.RicState.SYNCHRONIZING;
+            case UNAVAILABLE:
+                return RicInfo.RicState.UNAVAILABLE;
+            default:
+                return RicInfo.RicState.UNAVAILABLE;
         }
-        return RicInfo.RicState.UNAVAILABLE;
     }
 
     private RicInfo toRicInfo(Ric ric) {
index 19d6816..383e4f7 100644 (file)
@@ -68,8 +68,11 @@ public class ServiceController {
         this.policies = policies;
     }
 
+    private static final String GET_SERVICE_DETAILS =
+        "Either information about a registered service with given identity or all registered services are returned.";
+
     @GetMapping(path = Consts.V2_API_ROOT + "/services", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ApiOperation(value = "Returns service information")
+    @ApiOperation(value = "Returns service information", notes = GET_SERVICE_DETAILS)
     @ApiResponses(
         value = { //
             @ApiResponse(code = 200, message = "OK", response = ServiceStatusList.class), //
@@ -78,7 +81,7 @@ public class ServiceController {
         @ApiParam(name = Consts.SERVICE_ID_PARAM, required = false, value = "The identity of the service") //
         @RequestParam(name = Consts.SERVICE_ID_PARAM, required = false) String name) {
         if (name != null && this.services.get(name) == null) {
-            return ErrorResponse.create("Service type not found", HttpStatus.NOT_FOUND);
+            return ErrorResponse.create("Service not found", HttpStatus.NOT_FOUND);
         }
 
         Collection<ServiceStatus> servicesStatus = new ArrayList<>();
@@ -110,7 +113,14 @@ public class ServiceController {
         }
     }
 
-    @ApiOperation(value = "Register a service")
+    private static final String REGISTER_SERVICE_DETAILS = "Registering a service is needed to:" //
+        + "<ul>" //
+        + "<li>Get callbacks.</li>" //
+        + "<li>Activate supervision of the service. If a service is inactive, its policies will be deleted.</li>"//
+        + "</ul>" //
+    ;
+
+    @ApiOperation(value = "Register a service", notes = REGISTER_SERVICE_DETAILS)
     @ApiResponses(
         value = { //
             @ApiResponse(code = 200, message = "Service updated"),
@@ -132,15 +142,15 @@ public class ServiceController {
         }
     }
 
-    @ApiOperation(value = "Delete a service")
+    @ApiOperation(value = "Unregister a service")
     @ApiResponses(
         value = { //
-            @ApiResponse(code = 204, message = "Service deleted"),
+            @ApiResponse(code = 204, message = "Service unregistered"),
             @ApiResponse(code = 200, message = "Not used", response = VoidResponse.class),
             @ApiResponse(code = 404, message = "Service not found", response = ErrorResponse.ErrorInfo.class)})
     @DeleteMapping(Consts.V2_API_ROOT + "/services")
     public ResponseEntity<Object> deleteService(//
-        @ApiParam(name = Consts.SERVICE_ID_PARAM, required = true, value = "The name of the service") //
+        @ApiParam(name = Consts.SERVICE_ID_PARAM, required = true, value = "The idenitity of the service") //
         @RequestParam(name = Consts.SERVICE_ID_PARAM, required = true) String serviceName) {
         try {
             Service service = removeService(serviceName);
index 154809d..05ba41d 100644 (file)
@@ -32,7 +32,7 @@ import org.onap.ccsdk.oran.a1policymanagementservice.clients.A1Client.A1Protocol
 import org.onap.ccsdk.oran.a1policymanagementservice.configuration.RicConfig;
 
 /**
- * Holds information about a NearRT-RIC.
+ * Holds information about a Near-RT RIC.
  */
 public class Ric {
 
@@ -142,7 +142,7 @@ public class Ric {
      */
     public enum RicState {
         /**
-         * The Policy Management Service's view of the NearRT-RIC may be inconsistent.
+         * The Policy Management Service's view of the Near-RT RIC may be inconsistent.
          */
         UNAVAILABLE,
         /**
@@ -150,12 +150,12 @@ public class Ric {
          */
         AVAILABLE,
         /**
-         * The Policy Management Service is synchronizing the view of the NearRT-RIC.
+         * The Policy Management Service is synchronizing the view of the Near-RT RIC.
          */
         SYNCHRONIZING,
 
         /**
-         * A consistency check between the Policy Management Service and the NearRT-RIC
+         * A consistency check between the Policy Management Service and the Near-RT RIC
          * is done
          */
         CONSISTENCY_CHECK
index 9bad36c..332af8b 100644 (file)
@@ -44,7 +44,7 @@ import reactor.core.publisher.Mono;
 
 /**
  * Regularly checks the existing rics towards the local repository to keep it
- * consistent. When the policy types or instances in the NearRT-RIC is not
+ * consistent. When the policy types or instances in the Near-RT RIC is not
  * consistent, a synchronization is performed.
  */
 @Component
index d8cd04e..f810c65 100644 (file)
@@ -43,12 +43,12 @@ import reactor.core.publisher.Mono;
 import reactor.core.publisher.SignalType;
 
 /**
- * Synchronizes the content of a NearRT-RIC with the content in the repository.
+ * Synchronizes the content of a Near-RT RIC with the content in the repository.
  * This means:
  * <p>
  * load all policy types
  * <p>
- * send all policy instances to the NearRT-RIC
+ * send all policy instances to the Near-RT RIC
  * <p>
  * if that fails remove all policy instances
  * <p>
index 3a7068d..591b29c 100644 (file)
@@ -255,7 +255,7 @@ class ApplicationTestV2 {
         Policy policy2 = addPolicy("policyId2", "typeName", "service", ric1Name);
         Ric ric2 = addRic("ric2");
 
-        getA1Client(ric1Name).putPolicy(policy2); // put it in the RIC (NearRT-RIC)
+        getA1Client(ric1Name).putPolicy(policy2); // put it in the RIC (Near-RT RIC)
         policies.remove(policy2); // Remove it from the repo -> should be deleted in the RIC
 
         String policyId = "policyId";
index 72b2060..572ba0b 100644 (file)
@@ -143,21 +143,6 @@ class RefreshConfigTaskTest {
         assertThat(logAppender.list.get(0).getFormattedMessage()).isEqualTo("Configuration refresh terminated");
     }
 
-    @Test
-    void startWithStubbedRefreshReturnError_thenErrorAndTerminationLogged() {
-        refreshTaskUnderTest = this.createTestObject(CONFIG_FILE_DOES_NOT_EXIST, null, null, false);
-        String errorMessage = "Error";
-        doReturn(Flux.error(new Exception(errorMessage))).when(refreshTaskUnderTest).createRefreshTask();
-
-        final ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(RefreshConfigTask.class, ERROR);
-
-        refreshTaskUnderTest.start();
-
-        ILoggingEvent event = logAppender.list.get(0);
-        assertThat(event.getFormattedMessage())
-            .isEqualTo("Configuration refresh terminated due to exception java.lang.Exception: " + errorMessage);
-    }
-
     @Test
     void stop_thenTaskIsDisposed() throws Exception {
         refreshTaskUnderTest = this.createTestObject(CONFIG_FILE_DOES_NOT_EXIST, null, null, false);
@@ -202,7 +187,8 @@ class RefreshConfigTaskTest {
         refreshTaskUnderTest.systemEnvironment = new Properties();
 
         // When
-        doReturn(getIncorrectJson()).when(refreshTaskUnderTest).createInputStream(any());
+        final String JUNK_JSON = "{\"junk }";
+        doReturn(getJsonSteam(JUNK_JSON)).when(refreshTaskUnderTest).createInputStream(any());
         doReturn("fileName").when(appConfig).getLocalConfigurationFilePath();
 
         final ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(RefreshConfigTask.class, ERROR);
@@ -269,7 +255,7 @@ class RefreshConfigTaskTest {
         doReturn(Mono.just(props)).when(refreshTaskUnderTest).getEnvironment(any());
         doReturn(Mono.just(cbsClient)).when(refreshTaskUnderTest).createCbsClient(props);
 
-        JsonObject configAsJson = getJsonRootObject(true);
+        JsonObject configAsJson = getJsonRootObject(getCorrectJson());
         String newBaseUrl = "newBaseUrl";
         modifyTheRicConfiguration(configAsJson, newBaseUrl);
         when(cbsClient.get(any())).thenReturn(Mono.just(configAsJson));
@@ -309,8 +295,8 @@ class RefreshConfigTaskTest {
         doReturn(Mono.just(props)).when(refreshTaskUnderTest).getEnvironment(any());
         doReturn(Mono.just(cbsClient)).when(refreshTaskUnderTest).createCbsClient(props);
 
-        JsonObject configAsJson = getJsonRootObject(false);
-        when(cbsClient.get(any())).thenReturn(Mono.just(configAsJson));
+        JsonObject emptyJsonObject = new JsonObject();
+        when(cbsClient.get(any())).thenReturn(Mono.just(emptyJsonObject));
 
         final ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(RefreshConfigTask.class, ERROR);
 
@@ -368,9 +354,9 @@ class RefreshConfigTaskTest {
                 .addProperty("baseUrl", newBaseUrl);
     }
 
-    private JsonObject getJsonRootObject(boolean valid) throws JsonIOException, JsonSyntaxException, IOException {
-        JsonObject rootObject = JsonParser
-            .parseReader(new InputStreamReader(valid ? getCorrectJson() : getIncorrectJson())).getAsJsonObject();
+    private JsonObject getJsonRootObject(InputStream inStream)
+        throws JsonIOException, JsonSyntaxException, IOException {
+        JsonObject rootObject = JsonParser.parseReader(new InputStreamReader(inStream)).getAsJsonObject();
         return rootObject;
     }
 
@@ -380,8 +366,7 @@ class RefreshConfigTaskTest {
         return new ByteArrayInputStream((string.getBytes(StandardCharsets.UTF_8)));
     }
 
-    private static InputStream getIncorrectJson() {
-        String string = "{}"; //
-        return new ByteArrayInputStream((string.getBytes(StandardCharsets.UTF_8)));
+    private static InputStream getJsonSteam(String json) {
+        return new ByteArrayInputStream((json.getBytes(StandardCharsets.UTF_8)));
     }
 }