summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorqingshuting <qingshuting1@huawei.com>2023-04-11 10:27:07 +0800
committerqingshuting <qingshuting1@huawei.com>2023-04-11 14:33:46 +0800
commit06df715942fde695e9e3abbd10d5575595de1cdf (patch)
treeb6c328409073a145012397e9cd739c634982fd43
parent05f1fe6cca8856c82d67f93e670c41609332bcdc (diff)
[DCAEGEN2-3386] Create a publisher topic for IBN usecase
Issue-ID: DCAEGEN2-3386 Signed-off-by: qingshuting <qingshuting1@huawei.com> Change-Id: I672878a7547bc0f37296a5c24028040eb57cea8c
-rw-r--r--components/slice-analysis-ms/ChangeLog.md3
-rw-r--r--components/slice-analysis-ms/pom.xml4
-rw-r--r--components/slice-analysis-ms/src/main/docker/config/sliceanalysisms/config_all.json11
-rw-r--r--components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/dmaap/UUIDmaapClient.java63
-rw-r--r--components/slice-analysis-ms/src/test/java/org/onap/slice/analysis/ms/dmaap/NotificationProducerTest.java3
-rw-r--r--components/slice-analysis-ms/src/test/java/org/onap/slice/analysis/ms/dmaap/UUIDmaapClientTest.java97
-rw-r--r--components/slice-analysis-ms/src/test/resources/config_all.json11
-rw-r--r--components/slice-analysis-ms/version.properties3
8 files changed, 190 insertions, 5 deletions
diff --git a/components/slice-analysis-ms/ChangeLog.md b/components/slice-analysis-ms/ChangeLog.md
index a85827e5..93b15721 100644
--- a/components/slice-analysis-ms/ChangeLog.md
+++ b/components/slice-analysis-ms/ChangeLog.md
@@ -3,6 +3,9 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).
+## [1.2.2] - 2023/04/11
+ - [DCAEGEN2-3386](https://jira.onap.org/browse/DCAEGEN2-3386) - create publisher topics for IBN usecase
+
## [1.2.1] - 2023/03/02
- [DCAEGEN2-3358](https://jira.onap.org/browse/DCAEGEN2-3358) - slice-analysis-ms fails to start
diff --git a/components/slice-analysis-ms/pom.xml b/components/slice-analysis-ms/pom.xml
index 6d4e8fcc..719fac4f 100644
--- a/components/slice-analysis-ms/pom.xml
+++ b/components/slice-analysis-ms/pom.xml
@@ -7,7 +7,7 @@
* Copyright (C) 2020-2022 Wipro Limited.
* Copyright (C) 2022 Huawei Canada Limited.
* Copyright (C) 2022 CTC, Inc.
- * Copyright (C) 2022 Huawei Technologies Co., Ltd.
+ * Copyright (C) 2022-2023 Huawei Technologies Co., Ltd. All rights reserved.
* Copyright (C) 2023 Deutsche Telekom AG. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -37,7 +37,7 @@
</parent>
<groupId>org.onap.dcaegen2.services.components</groupId>
<artifactId>slice-analysis-ms</artifactId>
- <version>1.2.1-SNAPSHOT</version>
+ <version>1.2.2-SNAPSHOT</version>
<name>dcaegen2-services-slice-analysis-ms</name>
<description>Network slice PM analyser</description>
<packaging>jar</packaging>
diff --git a/components/slice-analysis-ms/src/main/docker/config/sliceanalysisms/config_all.json b/components/slice-analysis-ms/src/main/docker/config/sliceanalysisms/config_all.json
index 9e233536..a79b0c02 100644
--- a/components/slice-analysis-ms/src/main/docker/config/sliceanalysisms/config_all.json
+++ b/components/slice-analysis-ms/src/main/docker/config/sliceanalysisms/config_all.json
@@ -75,6 +75,17 @@
"client_id": "sdnr-sliceanalysis-1"
},
"aaf_username": null
+ },
+ "CCVPN_CL_DCAE_EVENT": {
+ "aaf_password": null,
+ "type": "message-router",
+ "dmaap_info": {
+ "topic_url": "http://message-router.onap.svc.cluster.local:3904/events/unauthenticated.CCVPN_CL_DCAE_EVENT",
+ "client_role": "sliceanalysis-subscriber",
+ "location": "onap",
+ "client_id": "sdnr-sliceanalysis-1"
+ },
+ "aaf_username": null
}
},
"postgres.password": "postgres",
diff --git a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/dmaap/UUIDmaapClient.java b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/dmaap/UUIDmaapClient.java
new file mode 100644
index 00000000..50e2b2f0
--- /dev/null
+++ b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/dmaap/UUIDmaapClient.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * ============LICENSE_START=======================================================
+ * slice-analysis-ms
+ * ================================================================================
+ * Copyright (C) 2023 Huawei Technologies Co., Ltd. All rights reserved.
+ * ==============================================================================
+ * 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 java.io.IOException;
+import java.util.Map;
+
+import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.api.MessageRouterPublisher;
+import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterPublishRequest;
+import org.onap.slice.analysis.ms.models.Configuration;
+import org.onap.slice.analysis.ms.utils.DcaeDmaapUtil;
+
+/**
+ * Client class to handle intent analysis server interactions
+ */
+public class UUIDmaapClient {
+
+ private Configuration configuration;
+
+ public UUIDmaapClient(Configuration configuration) {
+ this.configuration = configuration;
+ }
+
+ /**
+ * Method stub for sending notification to UUI intent analysis server.
+ */
+ @SuppressWarnings("unchecked")
+ public boolean sendNotificationToPolicy(String msg) {
+ Map<String, Object> streamsPublishes = configuration.getStreamsPublishes();
+ String topicUrl = ((Map<String, String>) ((Map<String, Object>) streamsPublishes.get("CCVPN_CL_DCAE_EVENT"))
+ .get("dmaap_info")).get("topic_url");
+ try {
+ MessageRouterPublisher publisher = DcaeDmaapUtil.buildPublisher();
+ MessageRouterPublishRequest request = DcaeDmaapUtil.buildPublisherRequest("CCVPN_CL_DCAE_EVENT", topicUrl);
+
+ NotificationProducer notificationProducer = new NotificationProducer(publisher, request);
+ notificationProducer.sendNotification(msg);
+ } catch (IOException e) {
+ return false;
+ }
+ return true;
+ }
+
+}
diff --git a/components/slice-analysis-ms/src/test/java/org/onap/slice/analysis/ms/dmaap/NotificationProducerTest.java b/components/slice-analysis-ms/src/test/java/org/onap/slice/analysis/ms/dmaap/NotificationProducerTest.java
index d39c0af6..03a57b9e 100644
--- a/components/slice-analysis-ms/src/test/java/org/onap/slice/analysis/ms/dmaap/NotificationProducerTest.java
+++ b/components/slice-analysis-ms/src/test/java/org/onap/slice/analysis/ms/dmaap/NotificationProducerTest.java
@@ -4,6 +4,7 @@
* ================================================================================
* Copyright (C) 2020 Wipro Limited.
* Copyright (C) 2022 CTC, Inc.
+ * Copyright (C) 2023 Huawei Technologies Co., Ltd. All rights reserved.
* ==============================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -61,9 +62,7 @@ public class NotificationProducerTest {
.builder().items(expectedItems.map(JsonPrimitive::new))
.build();
Flux<MessageRouterPublishResponse> responses = Flux.just(expectedResponse);
-// Flux<JsonPrimitive> singleMessage = Flux.just("msg").map(JsonPrimitive::new);
when(publisher.put(any(), any())).thenReturn(responses);
-
notificationProducer.sendNotification("msg");
}
}
diff --git a/components/slice-analysis-ms/src/test/java/org/onap/slice/analysis/ms/dmaap/UUIDmaapClientTest.java b/components/slice-analysis-ms/src/test/java/org/onap/slice/analysis/ms/dmaap/UUIDmaapClientTest.java
new file mode 100644
index 00000000..97795e5f
--- /dev/null
+++ b/components/slice-analysis-ms/src/test/java/org/onap/slice/analysis/ms/dmaap/UUIDmaapClientTest.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * ============LICENSE_START=======================================================
+ * slice-analysis-ms
+ * ================================================================================
+ * Copyright (C) 2023 Huawei Technologies Co., Ltd. All rights reserved.
+ * ==============================================================================
+ * 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 java.util.HashMap;
+import java.util.Map;
+
+import com.google.gson.JsonPrimitive;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.api.MessageRouterPublisher;
+import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.ImmutableMessageRouterPublishResponse;
+import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterPublishRequest;
+import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterPublishResponse;
+import org.onap.slice.analysis.ms.models.Configuration;
+import org.onap.slice.analysis.ms.utils.DcaeDmaapUtil;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.modules.junit4.PowerMockRunnerDelegate;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+import reactor.core.publisher.Flux;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+@RunWith(PowerMockRunner.class)
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*"})
+@PowerMockRunnerDelegate(SpringRunner.class)
+@PrepareForTest({ DcaeDmaapUtil.class})
+@SpringBootTest(classes = PolicyDmaapClientTest.class)
+public class UUIDmaapClientTest {
+
+ @Mock
+ Configuration configurationMock;
+
+ @InjectMocks
+ UUIDmaapClient uuiDmaapClientTest;
+
+ @Before
+ public void setup() {
+ uuiDmaapClientTest = new UUIDmaapClient(configurationMock);
+ }
+
+ @Test
+ public void sendNotificationToPolicyTest() {
+ Map<String, Object> streamsPublishes = new HashMap<>();
+ Map<String, String> topics = new HashMap<>();
+ Map<String, Object> dmaapInfo = new HashMap<>();
+ topics.put("topic_url", "http://message-router.onap.svc.cluster.local:3904/events/unauthenticated.CCVPN_CL_DCAE_EVENT");
+ dmaapInfo.put("dmaap_info", topics);
+ streamsPublishes.put("CCVPN_CL_DCAE_EVENT", dmaapInfo);
+ Mockito.when(configurationMock.getStreamsPublishes()).thenReturn(streamsPublishes);
+
+ PowerMockito.mockStatic(DcaeDmaapUtil.class);
+ MessageRouterPublisher publisher = PowerMockito.mock(MessageRouterPublisher.class);
+ PowerMockito.when(DcaeDmaapUtil.buildPublisher()).thenReturn(publisher);
+
+ MessageRouterPublishRequest request = PowerMockito.mock(MessageRouterPublishRequest.class);
+ PowerMockito.when(DcaeDmaapUtil.buildPublisherRequest(any(),any())).thenReturn(request);
+
+ io.vavr.collection.List<String> expectedItems = io.vavr.collection.List.of("test1", "test2", "test3");
+ MessageRouterPublishResponse expectedResponse = ImmutableMessageRouterPublishResponse
+ .builder().items(expectedItems.map(JsonPrimitive::new))
+ .build();
+ Flux<MessageRouterPublishResponse> responses = Flux.just(expectedResponse);
+ when(publisher.put(any(), any())).thenReturn(responses);
+
+ uuiDmaapClientTest.sendNotificationToPolicy("msg");
+ }
+}
diff --git a/components/slice-analysis-ms/src/test/resources/config_all.json b/components/slice-analysis-ms/src/test/resources/config_all.json
index fc18cc14..61aab019 100644
--- a/components/slice-analysis-ms/src/test/resources/config_all.json
+++ b/components/slice-analysis-ms/src/test/resources/config_all.json
@@ -75,6 +75,17 @@
"client_id": "sdnr-sliceanalysis-1"
},
"aaf_username": null
+ },
+ "CCVPN_CL_DCAE_EVENT": {
+ "aaf_password": null,
+ "type": "message-router",
+ "dmaap_info": {
+ "topic_url": "http://message-router.onap.svc.cluster.local:3904/events/unauthenticated.CCVPN_CL_DCAE_EVENT",
+ "client_role": "sliceanalysis-subscriber",
+ "location": "onap",
+ "client_id": "sdnr-sliceanalysis-1"
+ },
+ "aaf_username": null
}
},
"postgres.password": "postgres",
diff --git a/components/slice-analysis-ms/version.properties b/components/slice-analysis-ms/version.properties
index 8a256ccb..8f2e3857 100644
--- a/components/slice-analysis-ms/version.properties
+++ b/components/slice-analysis-ms/version.properties
@@ -7,6 +7,7 @@
# Copyright (C) 2022 CTC, Inc.
# Copyright (c) 2022 Wipro Limited.
# Copyright (C) 2023 Deutsche Telekom AG. All rights reserved.
+# Copyright (C) 2023 Huawei Technologies Co., Ltd. All rights reserved.
# ==============================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -24,7 +25,7 @@
###############################################################################
major=1
minor=2
-patch=1
+patch=2
base_version=${major}.${minor}.${patch}
release_version=${base_version}
snapshot_version=${base_version}-SNAPSHOT