diff options
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.java | 131 |
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); +} |