Merge "Enable log level management via actuator, /cps/api path to use for REST controllers only only"
diff --git a/README.md b/README.md
index d5f0c66..8282d30 100644
--- a/README.md
+++ b/README.md
@@ -29,5 +29,5 @@
 ```
 
 * Browse
-  * [Swagger UI](http://localhost:8080/api/cps/swagger-ui/index.html)
-  * [Api Documentation](http://localhost:8080/api/cps/v3/api-docs)
+  * [Swagger UI](http://localhost:8080/swagger-ui/index.html)
+  * [Api Documentation](http://localhost:8080/v3/api-docs)
diff --git a/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java b/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java
index 08020ec..1b6f56a 100644
--- a/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java
+++ b/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java
@@ -33,10 +33,12 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 @RestController
+@RequestMapping("${rest.api.base-path}")
 public class AdminRestController implements CpsAdminApi {
 
     @Autowired
diff --git a/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java b/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java
index fcb8ddc..2ecbd4f 100644
--- a/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java
+++ b/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java
@@ -25,10 +25,12 @@
 import org.onap.cps.rest.api.CpsDataApi;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 @RestController
+@RequestMapping("${rest.api.base-path}")
 public class DataRestController implements CpsDataApi {
 
     @Autowired
diff --git a/cps-rest/src/main/resources/application.yml b/cps-rest/src/main/resources/application.yml
index 80c6af6..0f2ef20 100644
--- a/cps-rest/src/main/resources/application.yml
+++ b/cps-rest/src/main/resources/application.yml
@@ -1,7 +1,9 @@
 server:

     port: 8080

-    servlet:

-        context-path: /api/cps

+

+rest:

+    api:

+        base-path: /cps/api

 

 spring:

     main:

@@ -32,12 +34,16 @@
     endpoints:

         web:

             base-path: /manage

+            exposure:

+                include: health,info,loggers

     endpoint:

         health:

             show-details: always

             # kubernetes probes: liveness and readiness

             probes:

                 enabled: true

+        looging:

+            enabled: true

 

 logging:

     level:

diff --git a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy
index 60f54bf..540d622 100644
--- a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy
+++ b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy
@@ -29,6 +29,7 @@
 import org.onap.cps.spi.model.SchemaSet
 import org.spockframework.spring.SpringBean
 import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.beans.factory.annotation.Value
 import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
 import org.springframework.http.HttpStatus
 import org.springframework.http.MediaType
@@ -60,6 +61,9 @@
     @Autowired
     MockMvc mvc
 
+    @Value('${rest.api.base-path}')
+    def basePath
+
     def anchorsEndpoint = '/v1/dataspaces/my_dataspace/anchors'
     def schemaSetsEndpoint = '/v1/dataspaces/test-dataspace/schema-sets'
     def schemaSetEndpoint = schemaSetsEndpoint + '/my_schema_set'
@@ -168,7 +172,7 @@
 
     def performCreateDataspaceRequest(String dataspaceName) {
         return mvc.perform(
-                post('/v1/dataspaces').param('dataspace-name', dataspaceName)
+                post("$basePath/v1/dataspaces").param('dataspace-name', dataspaceName)
         ).andReturn().response
     }
 
@@ -191,14 +195,14 @@
 
     def performCreateSchemaSetRequest(multipartFile) {
         return mvc.perform(
-                multipart(schemaSetsEndpoint)
+                multipart("$basePath$schemaSetsEndpoint")
                         .file(multipartFile)
                         .param('schema-set-name', 'test-schema-set')
         ).andReturn().response
     }
 
-    def performDeleteRequest(String uri) {
-        return mvc.perform(delete(uri)).andReturn().response
+    def performDeleteRequest(String deleteEndpoint) {
+        return mvc.perform(delete("$basePath$deleteEndpoint")).andReturn().response
     }
 
     def 'Get existing schema set'() {
@@ -206,7 +210,7 @@
             mockCpsModuleService.getSchemaSet('test-dataspace', 'my_schema_set') >>
                     new SchemaSet(name: 'my_schema_set', dataspaceName: 'test-dataspace')
         when: 'get schema set API is invoked'
-            def response = mvc.perform(get(schemaSetEndpoint)).andReturn().response
+            def response = mvc.perform(get("$basePath$schemaSetEndpoint")).andReturn().response
         then: 'the correct schema set is returned'
             response.status == HttpStatus.OK.value()
             response.getContentAsString().contains('my_schema_set')
@@ -218,7 +222,7 @@
             requestParams.add('schema-set-name', 'my_schema-set')
             requestParams.add('anchor-name', 'my_anchor')
         when: 'post is invoked'
-            def response = mvc.perform(post(anchorsEndpoint).contentType(MediaType.APPLICATION_JSON)
+            def response = mvc.perform(post("$basePath$anchorsEndpoint").contentType(MediaType.APPLICATION_JSON)
                     .params(requestParams as MultiValueMap)).andReturn().response
         then: 'Anchor is created successfully'
             1 * mockCpsAdminService.createAnchor('my_dataspace', 'my_schema-set', 'my_anchor')
@@ -230,7 +234,7 @@
         given:
             mockCpsAdminService.getAnchors('my_dataspace') >> anchorList
         when: 'get all anchors API is invoked'
-            def response = mvc.perform(get(anchorsEndpoint)).andReturn().response
+            def response = mvc.perform(get("$basePath$anchorsEndpoint")).andReturn().response
         then: 'the correct anchor is returned'
             response.status == HttpStatus.OK.value()
             response.getContentAsString().contains('my_anchor')
diff --git a/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy b/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy
index d372d3c..edc484b 100644
--- a/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy
+++ b/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy
@@ -33,6 +33,7 @@
 import org.onap.cps.spi.exceptions.SchemaSetInUseException
 import org.spockframework.spring.SpringBean
 import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.beans.factory.annotation.Value
 import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
 import org.springframework.test.web.servlet.MockMvc
 import spock.lang.Shared
@@ -60,6 +61,9 @@
     @Autowired
     MockMvc mvc
 
+    @Value('${rest.api.base-path}')
+    def basePath
+
     @Shared
     def errorMessage = 'some error message'
     @Shared
@@ -161,7 +165,7 @@
     }
 
     def performTestRequest() {
-        return mvc.perform(get('/v1/dataspaces/dataspace-name/anchors')).andReturn().response
+        return mvc.perform(get("$basePath/v1/dataspaces/dataspace-name/anchors")).andReturn().response
     }
 
     void assertTestResponse(response, expectedStatus,