summaryrefslogtreecommitdiffstats
path: root/cps-ncmp-service/src/main/java
diff options
context:
space:
mode:
authormpriyank <priyank.maheshwari@est.tech>2022-06-10 12:09:20 +0100
committermpriyank <priyank.maheshwari@est.tech>2022-06-15 10:17:40 +0100
commitf174640d9aebe8b962de651d954243f434cc5eab (patch)
treeb24d1d7f9393211e25efc5d0ea317a4e5be7a6b0 /cps-ncmp-service/src/main/java
parent708d2b566a8b8cdf48e1dfe337369c946cec0e02 (diff)
NcmpEvent creation and Mapping
- Mapping class to create header and event payload based on type of operation i.e CREATE, UPDATE and DELETE. - Service class to get CmHandle public properties, create event and delegate request to event publisher. - Modification in NcmpEvent schema json to mark field as String instead of URI - Test scenarios - UPCOMING: Call the service method from relevant code to actually publish the event. Issue-ID: CPS-1037 Change-Id: I6bb7de4b27e602c4d8ee6a5528a866e5f7e8799a Signed-off-by: mpriyank <priyank.maheshwari@est.tech>
Diffstat (limited to 'cps-ncmp-service/src/main/java')
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/NcmpEventsCreator.java90
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/NcmpEventsService.java65
2 files changed, 155 insertions, 0 deletions
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/NcmpEventsCreator.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/NcmpEventsCreator.java
new file mode 100644
index 000000000..609306f08
--- /dev/null
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/NcmpEventsCreator.java
@@ -0,0 +1,90 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2022 Nordix Foundation
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.ncmp.api.impl.event;
+
+import static org.onap.ncmp.cmhandle.lcm.event.Event.CmhandleState.READY;
+import static org.onap.ncmp.cmhandle.lcm.event.Event.Operation.DELETE;
+
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.UUID;
+import lombok.extern.slf4j.Slf4j;
+import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle;
+import org.onap.ncmp.cmhandle.lcm.event.Event;
+import org.onap.ncmp.cmhandle.lcm.event.Event.Operation;
+import org.onap.ncmp.cmhandle.lcm.event.NcmpEvent;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * NcmpEventsCreator to create NcmpEvent based on relevant operation.
+ */
+@Slf4j
+@Component
+public class NcmpEventsCreator {
+
+
+ /**
+ * Populate NcmpEvent.
+ *
+ * @param cmHandleId Cm Handle Identifier
+ * @param operation Relevant Operation
+ * @param ncmpServiceCmHandle Ncmp CmHandle Data
+ * @return Populated NcmpEvent
+ */
+ public NcmpEvent populateNcmpEvent(final String cmHandleId, final Operation operation,
+ final NcmpServiceCmHandle ncmpServiceCmHandle) {
+ return createNcmpEvent(cmHandleId, operation, ncmpServiceCmHandle);
+ }
+
+ private NcmpEvent createNcmpEvent(final String cmHandleId, final Operation operation,
+ final NcmpServiceCmHandle ncmpServiceCmHandle) {
+ final NcmpEvent ncmpEvent = ncmpEventHeader(cmHandleId);
+ ncmpEvent.setEvent(ncmpEventPayload(cmHandleId, operation, ncmpServiceCmHandle));
+ return ncmpEvent;
+ }
+
+ private Event ncmpEventPayload(final String eventCorrelationId, final Operation operation,
+ final NcmpServiceCmHandle ncmpServiceCmHandle) {
+ final Event event = new Event();
+ event.setOperation(operation);
+ event.setCmHandleId(eventCorrelationId);
+
+ if (!DELETE.equals(operation)) {
+ event.setCmhandleState(READY);
+ event.setCmhandleProperties(List.of(ncmpServiceCmHandle.getPublicProperties()));
+ }
+ return event;
+ }
+
+ private NcmpEvent ncmpEventHeader(final String eventCorrelationId) {
+ final NcmpEvent ncmpEvent = new NcmpEvent();
+ ncmpEvent.setEventId(UUID.randomUUID().toString());
+ ncmpEvent.setEventCorrelationId(eventCorrelationId);
+ ncmpEvent.setEventTime(ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ")));
+ ncmpEvent.setEventSource("org.onap.ncmp");
+ ncmpEvent.setEventType("org.onap.ncmp.cmhandle-lcm-event");
+ ncmpEvent.setEventSchema("org.onap.ncmp:cmhandle-lcm-event:v1");
+ return ncmpEvent;
+ }
+
+}
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/NcmpEventsService.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/NcmpEventsService.java
new file mode 100644
index 000000000..045a67a10
--- /dev/null
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/NcmpEventsService.java
@@ -0,0 +1,65 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2022 Nordix Foundation
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.ncmp.api.impl.event;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.onap.cps.ncmp.api.impl.utils.YangDataConverter;
+import org.onap.cps.ncmp.api.inventory.InventoryPersistence;
+import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle;
+import org.onap.ncmp.cmhandle.lcm.event.Event.Operation;
+import org.onap.ncmp.cmhandle.lcm.event.NcmpEvent;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+/**
+ * NcmpEventService to map the event correctly and publish to the public topic.
+ */
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class NcmpEventsService {
+
+ private final InventoryPersistence inventoryPersistence;
+
+ private final NcmpEventsPublisher ncmpEventsPublisher;
+
+ private final NcmpEventsCreator ncmpEventsCreator;
+
+ @Value("${app.ncmp.events.topic:ncmp-events}")
+ private String topicName;
+
+ /**
+ * Publish the NcmpEvent to the public topic.
+ *
+ * @param cmHandleId Cm Handle Id
+ * @param operation Relevant operation(CREATE,UPDATE or DELETE)
+ */
+ public void publishNcmpEvent(final String cmHandleId, final Operation operation) {
+
+ final NcmpServiceCmHandle ncmpServiceCmHandle = YangDataConverter.convertYangModelCmHandleToNcmpServiceCmHandle(
+ inventoryPersistence.getYangModelCmHandle(cmHandleId));
+ final NcmpEvent ncmpEvent = ncmpEventsCreator.populateNcmpEvent(cmHandleId, operation, ncmpServiceCmHandle);
+ ncmpEventsPublisher.publishEvent(topicName, cmHandleId, ncmpEvent);
+
+ }
+}