aboutsummaryrefslogtreecommitdiffstats
path: root/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/BbsActionsTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/BbsActionsTask.java')
-rw-r--r--prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/BbsActionsTask.java131
1 files changed, 3 insertions, 128 deletions
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/BbsActionsTask.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/BbsActionsTask.java
index 7485de8a..d0b8187c 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/BbsActionsTask.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/BbsActionsTask.java
@@ -20,134 +20,9 @@
package org.onap.dcaegen2.services.prh.tasks;
-import static org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpMethod.PUT;
-
-import com.google.gson.JsonObject;
-import io.netty.buffer.ByteBuf;
-import io.vavr.collection.HashMap;
-import io.vavr.collection.Map;
-import java.util.Arrays;
-import java.util.List;
-import java.util.function.Function;
-import org.onap.dcaegen2.services.prh.configuration.Config;
-import org.onap.dcaegen2.services.prh.exceptions.AaiFailureException;
import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
-import org.onap.dcaegen2.services.prh.model.bbs.ImmutableLogicalLink;
-import org.onap.dcaegen2.services.prh.model.bbs.ImmutableRelationship;
-import org.onap.dcaegen2.services.prh.model.bbs.ImmutableRelationshipWrapper;
-import org.onap.dcaegen2.services.prh.model.bbs.RelationshipWrapper;
-import org.onap.dcaegen2.services.prh.model.utils.GsonSerializer;
-import org.onap.dcaegen2.services.prh.model.utils.HttpUtils;
-import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpResponse;
-import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.ImmutableHttpRequest;
-import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.RequestBody;
-import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.RxHttpClient;
-import org.onap.dcaegen2.services.sdk.rest.services.uri.URI.URIBuilder;
-import org.onap.dcaegen2.services.sdk.security.ssl.SslFactory;
-import org.reactivestreams.Publisher;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;
-@Component
-public class BbsActionsTask {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(BbsActionsTask.class);
- private static final String ATTACHMENT_POINT = "attachmentPoint";
- private static final String LOGICAL_LINK_URI = "/network/logical-links/logical-link/";
- private static final String PNF_URI = "/network/pnfs/pnf/";
-
- private final RxHttpClient httpClient;
- private final Config config;
-
- @Autowired
- BbsActionsTask(Config config) {
- this(config, RxHttpClient.create(new SslFactory().createInsecureClientContext()));
- }
-
- BbsActionsTask(Config config, RxHttpClient httpClient) {
- this.config = config;
- this.httpClient = httpClient;
- }
-
- public Mono<ConsumerDmaapModel> execute(ConsumerDmaapModel consumerDmaapModel) {
- config.initFileStreamReader();
-
- JsonObject additionalFields = consumerDmaapModel.getAdditionalFields();
- if (additionalFields == null || !additionalFields.has(ATTACHMENT_POINT)) {
- return Mono.just(consumerDmaapModel);
- }
- String linkName = additionalFields.get(ATTACHMENT_POINT).getAsString();
- if (linkName.isEmpty()) {
- LOGGER.warn("Attachment point is empty! Ignore related actions.");
- return Mono.just(consumerDmaapModel);
- }
- String pnfName = consumerDmaapModel.getCorrelationId();
- return createLogicalLinkInAai(linkName, pnfName).flatMap(handleResponse(consumerDmaapModel));
- }
-
- private Function<HttpResponse, Mono<ConsumerDmaapModel>> handleResponse(ConsumerDmaapModel consumerDmaapModel) {
- return response -> HttpUtils.isSuccessfulResponseCode(response.statusCode())
- ? Mono.just(consumerDmaapModel)
- : Mono.error(new AaiFailureException(
- "Incorrect response when performing BBS-related actions: " + response.statusCode()));
- }
-
- private Mono<HttpResponse> createLogicalLinkInAai(String linkName, String pnfName) {
- ImmutableHttpRequest request = buildLogicalLinkRequest(linkName, pnfName);
-
- return httpClient.call(request);
- }
-
- private ImmutableHttpRequest buildLogicalLinkRequest(String linkName, String pnfName) {
- String uri = buildLogicalLinkUri(linkName);
- ImmutableLogicalLink logicalLink = buildModel(linkName, pnfName);
- Publisher<ByteBuf> jsonPayload = RequestBody.fromString(GsonSerializer.createJsonBody(logicalLink));
-
- // FIXME: AAI headers for PUT are different than PATCH (taken from prh_endpoints.json)
- Map<String, String> aaiHeaders = HashMap
- .ofAll(config.getAaiClientConfiguration().aaiHeaders())
- .replaceValue("Content-Type", "application/json");
-
- return ImmutableHttpRequest
- .builder()
- .method(PUT)
- .url(uri)
- .body(jsonPayload)
- .customHeaders(aaiHeaders)
- .build();
- }
-
- private ImmutableLogicalLink buildModel(String linkName, String pnfName) {
- List<RelationshipWrapper> relationships = buildRelationLink(pnfName);
-
- return ImmutableLogicalLink
- .builder()
- .linkName(linkName)
- .linkType(ATTACHMENT_POINT)
- .relationshipList(relationships)
- .build();
- }
-
- private List<RelationshipWrapper> buildRelationLink(String pnfName) {
- return Arrays.asList(ImmutableRelationshipWrapper
- .builder()
- .relationship(ImmutableRelationship
- .builder()
- .relatedLink(PNF_URI + pnfName)
- .build())
- .build());
- }
-
- private String buildLogicalLinkUri(String linkName) {
- return new URIBuilder()
- .scheme(config.getAaiClientConfiguration().aaiProtocol())
- .host(config.getAaiClientConfiguration().aaiHost())
- .port(config.getAaiClientConfiguration().aaiPort())
- .path(config.getAaiClientConfiguration().aaiBasePath() + LOGICAL_LINK_URI + linkName)
- .build()
- .toString();
- }
-} \ No newline at end of file
+public interface BbsActionsTask {
+ Mono<ConsumerDmaapModel> execute(ConsumerDmaapModel consumerDmaapModel);
+}