summaryrefslogtreecommitdiffstats
path: root/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/dmaap/AaiEventNotificationCallback.java
diff options
context:
space:
mode:
Diffstat (limited to 'components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/dmaap/AaiEventNotificationCallback.java')
-rw-r--r--components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/dmaap/AaiEventNotificationCallback.java96
1 files changed, 96 insertions, 0 deletions
diff --git a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/dmaap/AaiEventNotificationCallback.java b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/dmaap/AaiEventNotificationCallback.java
new file mode 100644
index 00000000..dc2cd775
--- /dev/null
+++ b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/dmaap/AaiEventNotificationCallback.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * ============LICENSE_START=======================================================
+ * slice-analysis-ms
+ * ================================================================================
+ * Copyright (C) 2022 Huawei Canada Limited.
+ * ==============================================================================
+ * 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 org.onap.slice.analysis.ms.dmaap;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import org.onap.slice.analysis.ms.models.Configuration;
+import org.onap.slice.analysis.ms.service.ccvpn.BandwidthEvaluator;
+import org.onap.slice.analysis.ms.service.ccvpn.Event;
+import org.onap.slice.analysis.ms.service.ccvpn.SimpleEvent;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * Handles AAI-EVENT from dmaap
+ */
+@Component
+public class AaiEventNotificationCallback implements NotificationCallback {
+
+ private static final String EVENT_HEADER = "event-header";
+ private static final String ACTION = "action";
+ private static final String ENTITY_TYPE = "entity-type";
+ private static final String SOURCE_NAME = "source-name";
+ private static final String ENTITY = "entity";
+ private final JsonParser parser = new JsonParser();
+ private Configuration configuration;
+ private String aaiNotifTargetAction;
+ private String aaiNotifTargetSource;
+ private String aaiNotifTargetEntity;
+
+ @Autowired
+ BandwidthEvaluator bandwidthEvaluator;
+
+ @PostConstruct
+ public void init(){
+ configuration = Configuration.getInstance();
+ aaiNotifTargetAction = configuration.getAaiNotifTargetAction();
+ aaiNotifTargetSource = configuration.getAaiNotifTargetSource();
+ aaiNotifTargetEntity = configuration.getAaiNotifTargetEntity();
+ }
+
+ @Override
+ public void activateCallBack(String msg) {
+ handleNotification(msg);
+ }
+
+ private void handleNotification(String msg) {
+ JsonElement jsonElement = parser.parse(msg);
+ if (jsonElement.isJsonObject()){
+ //handle a single AAI_EVENT
+ handleMsgJsonObject(jsonElement.getAsJsonObject());
+ } else if (jsonElement.isJsonArray()){
+ //handle a series of AAI_EVENT
+ JsonArray jsonArray = jsonElement.getAsJsonArray();
+ for (int i=0,e=jsonArray.size(); i<e; i++){
+ handleMsgJsonObject(jsonArray.get(i).getAsJsonObject());
+ }
+ }
+ }
+
+ private void handleMsgJsonObject(JsonObject jsonObject){
+ JsonObject header = jsonObject.get(EVENT_HEADER).getAsJsonObject();
+ if (header.has(ACTION) && header.get(ACTION).getAsString().equals(aaiNotifTargetAction)) {
+ if (header.has(ENTITY_TYPE) && header.get(ENTITY_TYPE).getAsString().equals(aaiNotifTargetEntity)){
+ if (header.has(SOURCE_NAME) && header.get(SOURCE_NAME).getAsString().equals(aaiNotifTargetSource)) {
+ JsonObject body = jsonObject.get(ENTITY).getAsJsonObject();
+ Event event = new SimpleEvent<>(SimpleEvent.Type.ONDEMAND_CHECK, body);
+ bandwidthEvaluator.post(event);
+ }
+ }
+ }
+ }
+}