summaryrefslogtreecommitdiffstats
path: root/engine-d/src/main/java
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 /engine-d/src/main/java
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>
Diffstat (limited to 'engine-d/src/main/java')
-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
6 files changed, 144 insertions, 55 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) {