aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShadi Haidar <sh1986@att.com>2019-02-15 20:28:32 -0500
committerShadi Haidar <sh1986@att.com>2019-03-05 14:57:45 -0500
commit13a84cadc80b9d1219ac04aa19cbde5352418760 (patch)
tree60b1a8bf6c8a4dbfe01823cd3cb9ea003ec44a43
parent045758aee25a2421e76ddd16df2d22edc6cc69f2 (diff)
Add health and service endpoints
Added two new APIs to chcek internal health and to check dependencies/external interfaces, which is postgres like existing /dcae-service-types does Issue-ID: DCAEGEN2-1134 Change-Id: If0d3bf8ed0cfa7cb8870e91ef32060ffa844f93a Signed-off-by: Shadi Haidar <sh1986@att.com>
-rw-r--r--pom.xml2
-rw-r--r--src/gen/java/io/swagger/api/HealthCheckApi.java35
-rw-r--r--src/gen/java/io/swagger/api/ServiceHealthCheckApi.java138
-rw-r--r--src/main/java/org/onap/dcae/inventory/InventoryApplication.java4
-rw-r--r--swagger_inventory.yaml27
-rw-r--r--version.properties22
6 files changed, 215 insertions, 13 deletions
diff --git a/pom.xml b/pom.xml
index 594a846..f416b91 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property.
<groupId>org.onap.dcaegen2.platform</groupId>
<artifactId>inventory-api</artifactId>
- <version>3.1.1</version>
+ <version>3.2.0</version>
<name>dcaegen2-platform-inventory-api</name>
<!--internal <version>3.0.0</version>-->
diff --git a/src/gen/java/io/swagger/api/HealthCheckApi.java b/src/gen/java/io/swagger/api/HealthCheckApi.java
new file mode 100644
index 0000000..54b2b9e
--- /dev/null
+++ b/src/gen/java/io/swagger/api/HealthCheckApi.java
@@ -0,0 +1,35 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * dcae-inventory
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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 io.swagger.api;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.*;
+
+@Path("/healthcheck")
+public class HealthCheckApi {
+
+ @GET
+ @Path("/")
+ public Response dcaeServiceTypesGet() throws NotFoundException {
+ return Response.ok("OK", MediaType.TEXT_PLAIN).build();
+ }
+
+}
diff --git a/src/gen/java/io/swagger/api/ServiceHealthCheckApi.java b/src/gen/java/io/swagger/api/ServiceHealthCheckApi.java
new file mode 100644
index 0000000..fc82ace
--- /dev/null
+++ b/src/gen/java/io/swagger/api/ServiceHealthCheckApi.java
@@ -0,0 +1,138 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * dcae-inventory
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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 io.swagger.api;
+
+import io.swagger.api.factories.DcaeServiceTypesApiServiceFactory;
+
+import io.swagger.annotations.ApiParam;
+
+import io.swagger.model.InlineResponse200;
+import io.swagger.model.DCAEServiceType;
+import io.swagger.model.DCAEServiceTypeRequest;
+
+import javax.validation.Valid;
+import javax.ws.rs.core.*;
+import javax.ws.rs.*;
+
+@Path("/servicehealth")
+@Consumes({"application/json", "application/vnd.dcae.inventory.v1+json"})
+@Produces({"application/json", "application/vnd.dcae.inventory.v1+json"})
+@io.swagger.annotations.Api(description = "the dcae-service-types API")
+@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaJerseyServerCodegen", date = "2016-04-18T20:16:22.119Z")
+public class ServiceHealthCheckApi {
+ private final DcaeServiceTypesApiService delegate = DcaeServiceTypesApiServiceFactory.getDcaeServiceTypesApi();
+
+ @Context
+ UriInfo uriInfo;
+
+ public static Link buildLinkForGet(UriInfo uriInfo, String rel, String typeName, Boolean onlyLatest, Boolean onlyActive,
+ String vnfType, String serviceId, String serviceLocation, String asdcServiceId,
+ String asdcResourceId, Integer offset, String application, String component, String owner) {
+ UriBuilder ub = uriInfo.getBaseUriBuilder().path(ServiceHealthCheckApi.class)
+ .path(ServiceHealthCheckApi.class, "dcaeServiceTypesGet");
+
+ if (typeName != null) {
+ ub.queryParam("typeName", typeName);
+ }
+ if (onlyLatest != null) {
+ ub.queryParam("onlyLatest", onlyLatest);
+ }
+ if (onlyActive != null) {
+ ub.queryParam("onlyActive", onlyActive);
+ }
+ if (vnfType != null) {
+ ub.queryParam("vnfType", vnfType);
+ }
+ if (serviceId != null) {
+ ub.queryParam("serviceId", serviceId);
+ }
+ if (serviceLocation != null) {
+ ub.queryParam("serviceLocation", serviceLocation);
+ }
+ if (asdcServiceId != null) {
+ ub.queryParam("asdcServiceId", asdcServiceId);
+ }
+ if (asdcResourceId != null) {
+ ub.queryParam("asdcResourceId", asdcResourceId);
+ }
+ if (offset != null) {
+ ub.queryParam("offset", offset);
+ }
+ if (application != null) {
+ ub.queryParam("application", application);
+ }
+ if (component != null) {
+ ub.queryParam("component", component);
+ }
+ if (owner != null) {
+ ub.queryParam("owner", owner);
+ }
+
+ Link.Builder lb = Link.fromUri(ub.build());
+ lb.rel(rel);
+ return lb.build();
+ }
+
+ @GET
+ @Path("/")
+ @Consumes({"application/json", "application/vnd.dcae.inventory.v1+json"})
+ @Produces({"application/json", "application/vnd.dcae.inventory.v1+json"})
+ @io.swagger.annotations.ApiOperation(value = "", notes = "Get a list of `DCAEServiceType` objects.", response = InlineResponse200.class, tags = {})
+ @io.swagger.annotations.ApiResponses(value = {
+ @io.swagger.annotations.ApiResponse(code = 200, message = "List of `DCAEServiceType` objects", response = InlineResponse200.class)})
+ public Response dcaeServiceTypesGet(
+ @ApiParam(value = "Filter by service type name. Wildcards matches with asterick(s) allowed.") @QueryParam("typeName") String typeName,
+ @ApiParam(value = "If set to true, query returns just the latest versions of DCAE service types. If set to false, then all versions are returned. Default is true")
+ @DefaultValue("true") @QueryParam("onlyLatest") Boolean onlyLatest,
+ @ApiParam(value = "If set to true, query returns only *active* DCAE service types. If set to false, then all DCAE service types are returned. Default is true")
+ @DefaultValue("true") @QueryParam("onlyActive") Boolean onlyActive,
+ @ApiParam(value = "Filter by associated vnf type. No wildcards, matches are explicit. This field is treated case insensitive.")
+ @QueryParam("vnfType") String vnfType,
+ @ApiParam(value = "Filter by assocaited service id. Instances with service id null or empty is always returned.")
+ @QueryParam("serviceId") String serviceId,
+ @ApiParam(value = "Filter by associated service location. Instances with service location null or empty is always returned.")
+ @QueryParam("serviceLocation") String serviceLocation,
+ @ApiParam(value = "Filter by associated asdc design service id. Setting this to `NONE` will return instances that have asdc service id set to null")
+ @QueryParam("asdcServiceId") String asdcServiceId,
+ @ApiParam(value = "Filter by associated asdc design resource id. Setting this to `NONE` will return instances that have asdc resource id set to null")
+ @QueryParam("asdcResourceId") String asdcResourceId,
+ @ApiParam(value = "Query resultset offset used for pagination (zero-based)") @QueryParam("offset") Integer offset,
+ @Context SecurityContext securityContext,
+ @ApiParam(value = "Filter by associated application.") @QueryParam("application") String application,
+ @ApiParam(value = "Filter by associated component or sub-application module.") @QueryParam("component") String component,
+ @ApiParam(value = "Filter by associated owner.") @QueryParam("owner") String owner
+ )
+ throws NotFoundException {
+ return delegate.dcaeServiceTypesGet(typeName, onlyLatest, onlyActive, vnfType, serviceId, serviceLocation,
+ asdcServiceId, asdcResourceId, offset, uriInfo, securityContext, application, component, owner);
+ }
+
+ public static Link buildLinkForGet(UriInfo uriInfo, String rel, String typeId) {
+ // This same method can be used for PUTs as well
+
+ UriBuilder ub = uriInfo.getBaseUriBuilder().path(ServiceHealthCheckApi.class)
+ .path(ServiceHealthCheckApi.class, "dcaeServiceTypesTypeIdGet");
+ Link.Builder lb = Link.fromUri(ub.build(typeId));
+ lb.rel(rel);
+ return lb.build();
+ }
+
+}
diff --git a/src/main/java/org/onap/dcae/inventory/InventoryApplication.java b/src/main/java/org/onap/dcae/inventory/InventoryApplication.java
index 259ce93..173d66b 100644
--- a/src/main/java/org/onap/dcae/inventory/InventoryApplication.java
+++ b/src/main/java/org/onap/dcae/inventory/InventoryApplication.java
@@ -37,6 +37,8 @@ import io.dropwizard.setup.Environment;
import io.swagger.api.DcaeServiceTypesApi;
import io.swagger.api.DcaeServicesApi;
import io.swagger.api.DcaeServicesGroupbyApi;
+import io.swagger.api.HealthCheckApi;
+import io.swagger.api.ServiceHealthCheckApi;
import io.swagger.api.factories.DcaeServicesApiServiceFactory;
import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.jaxrs.listing.ApiListingResource;
@@ -178,6 +180,8 @@ public class InventoryApplication extends Application<InventoryConfiguration> {
environment.jersey().register(new DcaeServicesApi());
environment.jersey().register(new DcaeServiceTypesApi());
environment.jersey().register(new DcaeServicesGroupbyApi());
+ environment.jersey().register(new HealthCheckApi());
+ environment.jersey().register(new ServiceHealthCheckApi());
// https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5
environment.jersey().register(new ApiListingResource());
diff --git a/swagger_inventory.yaml b/swagger_inventory.yaml
index c06368d..f8de1dd 100644
--- a/swagger_inventory.yaml
+++ b/swagger_inventory.yaml
@@ -17,7 +17,7 @@
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
swagger: '2.0'
info:
- version: "3.1.1"
+ version: "3.2.0"
title: DCAE Inventory API
description: |
DCAE Inventory is a web service that provides the following:
@@ -356,6 +356,31 @@ paths:
description: "Unknown DCAE service"
schema:
$ref: "#/definitions/ApiResponseMessage"
+ /servicehealth:
+ get:
+ summary: "Check for external dependencies for inventory."
+ description: "Get a list of `DCAEServiceType` objects."
+ operationId: "dcaeServiceTypesGet"
+ consumes:
+ - "application/json"
+ - "application/vnd.dcae.inventory.v1+json"
+ produces:
+ - "application/json"
+ - "application/vnd.dcae.inventory.v1+json"
+ responses:
+ 200:
+ description: "List of `DCAEServiceType` objects"
+ schema:
+ $ref: "#/definitions/InlineResponse200"
+ /healthcheck:
+ get:
+ summary: ""
+ description: "Basic test to check inventory internals, that process and web api are running."
+ produces:
+ - "text/plain"
+ responses:
+ 200:
+ description: "OK response to indicate success"
definitions:
DCAEServiceTypeRequest:
type: "object"
diff --git a/version.properties b/version.properties
index 2f59e59..8eed1b7 100644
--- a/version.properties
+++ b/version.properties
@@ -1,11 +1,11 @@
-# Versioning variables
-# Note that these variables cannot be structured (e.g. : version.release or version.snapshot etc... )
-# because they are used in Jenkins, whose plug-in doesn't support
-major=3
-minor=1
-patch=1
-base_version=${major}.${minor}.${patch}
-# Release must be completed with git revision # in Jenkins
-
-release_version=${base_version}
-snapshot_version=${base_version}-SNAPSHOT
+# Versioning variables
+# Note that these variables cannot be structured (e.g. : version.release or version.snapshot etc... )
+# because they are used in Jenkins, whose plug-in doesn't support
+major=3
+minor=2
+patch=0
+base_version=${major}.${minor}.${patch}
+# Release must be completed with git revision # in Jenkins
+
+release_version=${base_version}
+snapshot_version=${base_version}-SNAPSHOT