2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2022-2024 Nordix Foundation
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.cps.ncmp.api.impl.events.lcm;
23 import java.util.UUID;
25 import lombok.NoArgsConstructor;
26 import lombok.RequiredArgsConstructor;
28 import lombok.extern.slf4j.Slf4j;
29 import org.onap.cps.ncmp.api.impl.utils.EventDateTimeFormatter;
30 import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle;
31 import org.onap.cps.ncmp.events.lcm.v1.Event;
32 import org.onap.cps.ncmp.events.lcm.v1.LcmEvent;
33 import org.onap.cps.ncmp.events.lcm.v1.LcmEventHeader;
34 import org.onap.cps.ncmp.events.lcm.v1.Values;
35 import org.springframework.stereotype.Component;
39 * LcmEventsCreator to create LcmEvent based on relevant operation.
43 @RequiredArgsConstructor
44 public class LcmEventsCreator {
46 private final LcmEventHeaderMapper lcmEventHeaderMapper;
49 * Populate Lifecycle Management Event.
51 * @param cmHandleId cm handle identifier
52 * @param targetNcmpServiceCmHandle target ncmp service cmhandle
53 * @param existingNcmpServiceCmHandle existing ncmp service cmhandle
54 * @return Populated LcmEvent
56 public LcmEvent populateLcmEvent(final String cmHandleId, final NcmpServiceCmHandle targetNcmpServiceCmHandle,
57 final NcmpServiceCmHandle existingNcmpServiceCmHandle) {
58 return createLcmEvent(cmHandleId, targetNcmpServiceCmHandle, existingNcmpServiceCmHandle);
62 * Populate Lifecycle Management Event Header.
64 * @param cmHandleId cm handle identifier
65 * @param targetNcmpServiceCmHandle target ncmp service cmhandle
66 * @param existingNcmpServiceCmHandle existing ncmp service cmhandle
67 * @return Populated LcmEventHeader
69 public LcmEventHeader populateLcmEventHeader(final String cmHandleId,
70 final NcmpServiceCmHandle targetNcmpServiceCmHandle,
71 final NcmpServiceCmHandle existingNcmpServiceCmHandle) {
72 return createLcmEventHeader(cmHandleId, targetNcmpServiceCmHandle, existingNcmpServiceCmHandle);
75 private LcmEvent createLcmEvent(final String cmHandleId, final NcmpServiceCmHandle targetNcmpServiceCmHandle,
76 final NcmpServiceCmHandle existingNcmpServiceCmHandle) {
77 final LcmEventType lcmEventType =
78 LcmEventsCreatorHelper.determineEventType(targetNcmpServiceCmHandle, existingNcmpServiceCmHandle);
79 final LcmEvent lcmEvent = lcmEventHeader(cmHandleId, lcmEventType);
81 lcmEventPayload(cmHandleId, targetNcmpServiceCmHandle, existingNcmpServiceCmHandle, lcmEventType));
85 private LcmEventHeader createLcmEventHeader(final String cmHandleId,
86 final NcmpServiceCmHandle targetNcmpServiceCmHandle,
87 final NcmpServiceCmHandle existingNcmpServiceCmHandle) {
88 final LcmEventType lcmEventType =
89 LcmEventsCreatorHelper.determineEventType(targetNcmpServiceCmHandle, existingNcmpServiceCmHandle);
90 final LcmEvent lcmEventWithHeaderInformation = lcmEventHeader(cmHandleId, lcmEventType);
91 return lcmEventHeaderMapper.toLcmEventHeader(lcmEventWithHeaderInformation);
94 private Event lcmEventPayload(final String eventCorrelationId, final NcmpServiceCmHandle targetNcmpServiceCmHandle,
95 final NcmpServiceCmHandle existingNcmpServiceCmHandle, final LcmEventType lcmEventType) {
96 final Event event = new Event();
97 event.setCmHandleId(eventCorrelationId);
98 event.setAlternateId(targetNcmpServiceCmHandle.getAlternateId());
99 event.setModuleSetTag(targetNcmpServiceCmHandle.getModuleSetTag());
100 event.setDataProducerIdentifier(targetNcmpServiceCmHandle.getDataProducerIdentifier());
101 final CmHandleValuesHolder cmHandleValuesHolder =
102 LcmEventsCreatorHelper.determineEventValues(targetNcmpServiceCmHandle, existingNcmpServiceCmHandle,
104 event.setOldValues(cmHandleValuesHolder.getOldValues());
105 event.setNewValues(cmHandleValuesHolder.getNewValues());
110 private LcmEvent lcmEventHeader(final String eventCorrelationId, final LcmEventType lcmEventType) {
111 final LcmEvent lcmEvent = new LcmEvent();
112 lcmEvent.setEventId(UUID.randomUUID().toString());
113 lcmEvent.setEventCorrelationId(eventCorrelationId);
114 lcmEvent.setEventTime(EventDateTimeFormatter.getCurrentIsoFormattedDateTime());
115 lcmEvent.setEventSource("org.onap.ncmp");
116 lcmEvent.setEventType(lcmEventType.getEventType());
117 lcmEvent.setEventSchema("org.onap.ncmp:cmhandle-lcm-event");
118 lcmEvent.setEventSchemaVersion("1.0");
125 static class CmHandleValuesHolder {
127 private Values oldValues;
128 private Values newValues;