summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuangrong Fu <fu.guangrong@zte.com.cn>2017-10-14 16:38:26 +0800
committerGuangrong Fu <fu.guangrong@zte.com.cn>2017-10-14 17:38:54 +0800
commit530fcc3970550c2ddbe62f51c59b9705cbaa244b (patch)
treead6b1be923651fb7952b692781ca5a77b116a39a
parente540d3894d2f662a843e5c51535d44b876b9889f (diff)
Add DMaaP Configuration APIs for Testing
Change-Id: I4f2d75ba8148f3118a731d0b2d68f13c6b941bb0 Issue-ID: HOLMES-59 Signed-off-by: Guangrong Fu <fu.guangrong@zte.com.cn>
-rw-r--r--engine-d/src/main/java/org/onap/holmes/engine/db/CorrelationRuleDao.java2
-rw-r--r--engine-d/src/main/java/org/onap/holmes/engine/db/mapper/CorrelationRuleMapper.java48
-rw-r--r--engine-d/src/main/java/org/onap/holmes/engine/dmaappolling/SubscriberAction.java8
-rw-r--r--engine-d/src/main/java/org/onap/holmes/engine/request/DmaapConfigRequest.java31
-rw-r--r--engine-d/src/main/java/org/onap/holmes/engine/resources/DmaapConfigurationService.java106
-rw-r--r--engine-d/src/main/java/org/onap/holmes/engine/resources/EngineResources.java4
-rw-r--r--engine-d/src/main/resources/swagger.json5
-rw-r--r--engine-d/src/test/java/org/onap/holmes/engine/EngineDActiveAppTest.java6
-rw-r--r--engine-d/src/test/java/org/onap/holmes/engine/db/mapper/CorrelationRuleMapperTest.java57
9 files changed, 149 insertions, 118 deletions
diff --git a/engine-d/src/main/java/org/onap/holmes/engine/db/CorrelationRuleDao.java b/engine-d/src/main/java/org/onap/holmes/engine/db/CorrelationRuleDao.java
index 4e01778..8cd61ef 100644
--- a/engine-d/src/main/java/org/onap/holmes/engine/db/CorrelationRuleDao.java
+++ b/engine-d/src/main/java/org/onap/holmes/engine/db/CorrelationRuleDao.java
@@ -17,8 +17,8 @@ package org.onap.holmes.engine.db;
import java.util.List;
-import org.onap.holmes.engine.db.mapper.CorrelationRuleMapper;
import org.onap.holmes.common.api.entity.CorrelationRule;
+import org.onap.holmes.common.utils.CorrelationRuleMapper;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
diff --git a/engine-d/src/main/java/org/onap/holmes/engine/db/mapper/CorrelationRuleMapper.java b/engine-d/src/main/java/org/onap/holmes/engine/db/mapper/CorrelationRuleMapper.java
deleted file mode 100644
index a682824..0000000
--- a/engine-d/src/main/java/org/onap/holmes/engine/db/mapper/CorrelationRuleMapper.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Copyright 2017 ZTE Corporation.
- *
- * 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.
- */
-package org.onap.holmes.engine.db.mapper;
-
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.Properties;
-import org.onap.holmes.common.api.entity.CorrelationRule;
-import org.skife.jdbi.v2.StatementContext;
-import org.skife.jdbi.v2.tweak.ResultSetMapper;
-
-public class CorrelationRuleMapper implements ResultSetMapper<CorrelationRule> {
-
- public CorrelationRule map(int i, ResultSet resultSet, StatementContext statementContext)
- throws SQLException {
- CorrelationRule correlationRule = new CorrelationRule();
- correlationRule.setName(resultSet.getString("name"));
- correlationRule.setRid(resultSet.getString("rid"));
- correlationRule.setDescription(resultSet.getString("description"));
- correlationRule.setEnabled(resultSet.getInt("enable"));
- correlationRule.setTemplateID(resultSet.getInt("templateID"));
- correlationRule.setEngineID(resultSet.getString("engineID"));
- correlationRule.setEngineType(resultSet.getString("engineType"));
- correlationRule.setCreator(resultSet.getString("creator"));
- correlationRule.setCreateTime(resultSet.getDate("createTime"));
- correlationRule.setModifier(resultSet.getString("updator"));
- correlationRule.setUpdateTime(resultSet.getDate("updateTime"));
- correlationRule.setParams((Properties) resultSet.getObject("params"));
- correlationRule.setContent(resultSet.getString("content"));
- correlationRule.setVendor(resultSet.getString("vendor"));
- correlationRule.setPackageName(resultSet.getString("package"));
- return correlationRule;
- }
-
-}
diff --git a/engine-d/src/main/java/org/onap/holmes/engine/dmaappolling/SubscriberAction.java b/engine-d/src/main/java/org/onap/holmes/engine/dmaappolling/SubscriberAction.java
index ef585d5..da83683 100644
--- a/engine-d/src/main/java/org/onap/holmes/engine/dmaappolling/SubscriberAction.java
+++ b/engine-d/src/main/java/org/onap/holmes/engine/dmaappolling/SubscriberAction.java
@@ -35,19 +35,19 @@ public class SubscriberAction {
private ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
public void addSubscriber(Subscriber subscriber) {
- if (!pollingRequests.containsKey(subscriber.getUrl())) {
+ if (!pollingRequests.containsKey(subscriber.getTopic())) {
DMaaPPollingRequest pollingTask = new DMaaPPollingRequest(subscriber, droolsEngine);
ScheduledFuture future = service
.scheduleAtFixedRate(pollingTask, 0, subscriber.getPeriod(), TimeUnit.MILLISECONDS);
- pollingRequests.put(subscriber.getUrl(), future);
+ pollingRequests.put(subscriber.getTopic(), future);
}
}
public void removeSubscriber(Subscriber subscriber) {
- ScheduledFuture future = pollingRequests.get(subscriber.getUrl());
+ ScheduledFuture future = pollingRequests.get(subscriber.getTopic());
if (future != null) {
future.cancel(true);
}
- pollingRequests.remove(subscriber.getUrl());
+ pollingRequests.remove(subscriber.getTopic());
}
}
diff --git a/engine-d/src/main/java/org/onap/holmes/engine/request/DmaapConfigRequest.java b/engine-d/src/main/java/org/onap/holmes/engine/request/DmaapConfigRequest.java
new file mode 100644
index 0000000..6fa1928
--- /dev/null
+++ b/engine-d/src/main/java/org/onap/holmes/engine/request/DmaapConfigRequest.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2017 ZTE Corporation.
+ *
+ * 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.
+ */
+
+package org.onap.holmes.engine.request;
+
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class DmaapConfigRequest {
+ @NotNull
+ private String name;
+
+ @NotNull
+ private String url;
+}
diff --git a/engine-d/src/main/java/org/onap/holmes/engine/resources/DmaapConfigurationService.java b/engine-d/src/main/java/org/onap/holmes/engine/resources/DmaapConfigurationService.java
new file mode 100644
index 0000000..9fa1874
--- /dev/null
+++ b/engine-d/src/main/java/org/onap/holmes/engine/resources/DmaapConfigurationService.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2017 ZTE Corporation.
+ *
+ * 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.
+ */
+
+package org.onap.holmes.engine.resources;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import lombok.extern.slf4j.Slf4j;
+import org.jvnet.hk2.annotations.Service;
+import org.onap.holmes.common.dcae.DcaeConfigurationsCache;
+import org.onap.holmes.common.dcae.entity.SecurityInfo;
+import org.onap.holmes.common.dropwizard.ioc.utils.ServiceLocatorHolder;
+import org.onap.holmes.dsa.dmaappolling.Subscriber;
+import org.onap.holmes.engine.dmaappolling.SubscriberAction;
+import org.onap.holmes.engine.request.DmaapConfigRequest;
+
+@Service
+@Slf4j
+//@Api(tags = {"DMaaP Configurations"})
+@Path("/dmaap")
+public class DmaapConfigurationService {
+ @PUT
+ @Produces(MediaType.APPLICATION_JSON)
+ @ApiOperation(value = "Subscribe to a new topic. "
+ + "If the topic already exists, it is replaced with the new configuration.")
+ @Path("/sub")
+ public String addSubInfo(
+ @ApiParam (value = "A JSON object with the fields named <b>name</b>"
+ + " and <b>url</b>. Both fields are required.") DmaapConfigRequest config,
+ @Context HttpServletRequest request){
+ String url = config.getUrl();
+ if (url.startsWith("http://")) {
+ Subscriber subscriber = new Subscriber();
+ subscriber.setTopic(config.getName());
+ subscriber.setUrl(url);
+
+ SubscriberAction subscriberAction = ServiceLocatorHolder.getLocator()
+ .getService(SubscriberAction.class);
+ subscriberAction.removeSubscriber(subscriber);
+ subscriberAction.addSubscriber(subscriber);
+
+ log.info("New configurations applied. Topic Name: " + config.getName() + ", URL: " + url + ".");
+
+ return "{\"message\": \"Succeeded!\", \"topic\": \"" + config.getName() + "\"}";
+ }
+ return "{\"message\": \"Only the HTTP protocol is supported!\"}";
+ }
+
+ @DELETE
+ @Path("/sub/{topic}")
+ @ApiOperation(value = "Unsubscribe a topic from DMaaP.")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String removeSubInfo(@PathParam("topic") String topic){
+ Subscriber subscriber = new Subscriber();
+ subscriber.setTopic(topic);
+
+ SubscriberAction subscriberAction = ServiceLocatorHolder.getLocator()
+ .getService(SubscriberAction.class);
+ subscriberAction.removeSubscriber(subscriber);
+
+ return "{\"message\": \"Topic unsubscribed.\"}";
+ }
+
+ @PUT
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/pub")
+ @ApiOperation(value = "Add/Update a publishing topic. "
+ + "If the topic already exists, it is replaced with the new configuration.")
+ public String updatePubInfo(
+ @ApiParam (value = "A JSON object with the fields named <b>name</b>"
+ + " and <b>url</b>. Both fields are required.") DmaapConfigRequest config,
+ @Context HttpServletRequest request){
+ String url = config.getUrl();
+ if (url.startsWith("http://")) {
+ SecurityInfo securityInfo = new SecurityInfo();
+ SecurityInfo.DmaapInfo dmaapInfo = new SecurityInfo().new DmaapInfo();
+ dmaapInfo.setTopicUrl(config.getUrl());
+ securityInfo.setDmaapInfo(dmaapInfo);
+ DcaeConfigurationsCache.addPubSecInfo(config.getName(), securityInfo);
+ return "{\"message\": \"Succeeded!\", \"topic\": \"" + config.getName() + "\"}";
+ }
+ return "{\"message\": \"Only the HTTP protocol is supported!\"}";
+ }
+}
diff --git a/engine-d/src/main/java/org/onap/holmes/engine/resources/EngineResources.java b/engine-d/src/main/java/org/onap/holmes/engine/resources/EngineResources.java
index 45754e2..9724355 100644
--- a/engine-d/src/main/java/org/onap/holmes/engine/resources/EngineResources.java
+++ b/engine-d/src/main/java/org/onap/holmes/engine/resources/EngineResources.java
@@ -57,8 +57,8 @@ public class EngineResources {
@Produces(MediaType.APPLICATION_JSON)
@Timed
public CorrelationRuleResponse deployRule(
- @ApiParam(value = "The request entity of the HTTP call, which comprises two "
- + "fields: \"content\" and \"engineid\". "
+ @ApiParam(value = "The request entity of the HTTP call, which comprises three "
+ + "fields: \"content\" , \"loopcontrolname\" and \"engineid\". "
+ "The \"content\" should be a valid Drools rule string and the \"engineid\" "
+ "has to be \"engine-d\" in the Amsterdam release.", required = true) DeployRuleRequest deployRuleRequest,
@Context HttpServletRequest httpRequest) {
diff --git a/engine-d/src/main/resources/swagger.json b/engine-d/src/main/resources/swagger.json
index 4dd3f6d..7d227fd 100644
--- a/engine-d/src/main/resources/swagger.json
+++ b/engine-d/src/main/resources/swagger.json
@@ -63,7 +63,7 @@
"parameters" : [ {
"in" : "body",
"name" : "body",
- "description" : "The request entity of the HTTP call, which comprises two fields: \"content\" and \"engineid\". The \"content\" should be a valid Drools rule string and the \"engineid\" has to be \"engine-d\" in the Amsterdam release.",
+ "description" : "The request entity of the HTTP call, which comprises three fields: \"content\" , \"loopcontrolname\" and \"engineid\". The \"content\" should be a valid Drools rule string and the \"engineid\" has to be \"engine-d\" in the Amsterdam release.",
"required" : true,
"schema" : {
"$ref" : "#/definitions/DeployRuleRequest"
@@ -121,6 +121,9 @@
},
"engineid" : {
"type" : "string"
+ },
+ "loopcontrolname" : {
+ "type" : "string"
}
}
}
diff --git a/engine-d/src/test/java/org/onap/holmes/engine/EngineDActiveAppTest.java b/engine-d/src/test/java/org/onap/holmes/engine/EngineDActiveAppTest.java
index 362211b..2c6cdb7 100644
--- a/engine-d/src/test/java/org/onap/holmes/engine/EngineDActiveAppTest.java
+++ b/engine-d/src/test/java/org/onap/holmes/engine/EngineDActiveAppTest.java
@@ -15,13 +15,9 @@
*/
package org.onap.holmes.engine;
-/**
- * Created by Administrator on 2017/2/20.
- */
-
public class EngineDActiveAppTest {
public static void main(String[] args) throws Exception {
- String filePath = "C:\\correlation-engine.yml";
+ String filePath = "C:\\engine-d.yml";
new EngineDActiveApp().run(new String[]{"server", filePath});
}
}
diff --git a/engine-d/src/test/java/org/onap/holmes/engine/db/mapper/CorrelationRuleMapperTest.java b/engine-d/src/test/java/org/onap/holmes/engine/db/mapper/CorrelationRuleMapperTest.java
deleted file mode 100644
index acf62c6..0000000
--- a/engine-d/src/test/java/org/onap/holmes/engine/db/mapper/CorrelationRuleMapperTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * Copyright 2017 ZTE Corporation.
- *
- * 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.
- */
-
-package org.onap.holmes.engine.db.mapper;
-
-import org.junit.Test;
-import org.powermock.api.easymock.PowerMock;
-
-import java.sql.Date;
-import java.sql.ResultSet;
-import java.util.Properties;
-
-import static org.easymock.EasyMock.expect;
-
-public class CorrelationRuleMapperTest {
-
- @Test
- public void map() throws Exception {
- CorrelationRuleMapper mapper = new CorrelationRuleMapper();
- ResultSet resultSet = PowerMock.createMock(ResultSet.class);
-
- expect(resultSet.getString("name")).andReturn("");
- expect(resultSet.getString("rid")).andReturn("");
- expect(resultSet.getString("description")).andReturn("");
- expect(resultSet.getInt("enable")).andReturn(0);
- expect(resultSet.getInt("templateID")).andReturn(0);
- expect(resultSet.getString("engineID")).andReturn("");
- expect(resultSet.getString("engineType")).andReturn("");
- expect(resultSet.getString("creator")).andReturn("");
- expect(resultSet.getDate("createTime")).andReturn(new Date(System.currentTimeMillis()));
- expect(resultSet.getString("updator")).andReturn("");
- expect(resultSet.getDate("updateTime")).andReturn(new Date(System.currentTimeMillis()));
- expect(resultSet.getObject("params")).andReturn(new Properties());
- expect(resultSet.getString("content")).andReturn("");
- expect(resultSet.getString("vendor")).andReturn("");
- expect(resultSet.getString("package")).andReturn("");
-
- PowerMock.replayAll();
-
- mapper.map(0, resultSet, null);
-
- PowerMock.verify();
- }
-}