aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorLianhao Lu <lianhao.lu@intel.com>2018-11-07 11:46:28 +0800
committerLianhao Lu <lianhao.lu@intel.com>2018-11-09 08:52:23 +0800
commit3bd15a55aeb69c1caad1a1f32175cb3b7797733a (patch)
treed35c28de481e537b8c03c8baea6039e0bb807200 /plugins
parentf4d9fe1838b5f5eac942c3d31d92e8304ecc36ee (diff)
S3P: added FileSystemReceptionHandler plugin
For S3P test, we need to add a new FileSystemRecpetionHandler plugin which monitors a local directory for newly come csar files. This patch added the plugin code as well as the configuration file for s3p to use. Change-Id: I8f1e65489abde15ae32c54d819bbc6e7cbdf36d0 Issue-ID: POLICY-837 Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/FileSystemReceptionHandler.java105
-rw-r--r--plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/FileSystemReceptionHandlerConfigurationParameterBuilder.java54
-rw-r--r--plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/FileSystemReceptionHandlerConfigurationParameterGroup.java78
3 files changed, 237 insertions, 0 deletions
diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/FileSystemReceptionHandler.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/FileSystemReceptionHandler.java
new file mode 100644
index 00000000..3434f816
--- /dev/null
+++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/FileSystemReceptionHandler.java
@@ -0,0 +1,105 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Intel Corp. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.reception.handling.sdc;
+
+import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE;
+
+import java.io.IOException;
+import java.io.File;
+import java.nio.file.FileSystems;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.WatchEvent;
+import java.nio.file.WatchKey;
+import java.nio.file.WatchService;
+
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+
+import org.onap.policy.common.parameters.ParameterService;
+import org.onap.policy.distribution.model.Csar;
+import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
+import org.onap.policy.distribution.reception.handling.AbstractReceptionHandler;
+
+/**
+ * Handles reception of inputs from File System which can be used to decode policies.
+ */
+public class FileSystemReceptionHandler extends AbstractReceptionHandler {
+ private boolean running = true;
+ private static final Logger LOGGER = FlexLogger.getLogger(FileSystemReceptionHandler.class);
+
+ @Override
+ protected void initializeReception(final String parameterGroupName) {
+ LOGGER.debug("FileSystemReceptionHandler init...");
+ try {
+ final FileSystemReceptionHandlerConfigurationParameterGroup handlerParameters =
+ ParameterService.get(parameterGroupName);
+ main(handlerParameters.getWatchPath());
+ } catch (final PolicyDecodingException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ @Override
+ public void destroy() {
+ // Tear down subscription etc
+ running = false;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void main(String watchPath) throws PolicyDecodingException {
+ try {
+ final WatchService watcher = FileSystems.getDefault().newWatchService();
+ final Path dir = Paths.get(watchPath);
+
+ dir.register(watcher, ENTRY_CREATE);
+ LOGGER.debug("Watch Service registered for dir: " + dir.getFileName());
+ while (running) {
+ WatchKey key;
+ try {
+ key = watcher.take();
+ } catch (final InterruptedException ex) {
+ ex.printStackTrace();
+ return;
+ }
+ for (final WatchEvent<?> event : key.pollEvents()) {
+ final WatchEvent.Kind<?> kind = event.kind();
+ final WatchEvent<Path> ev = (WatchEvent<Path>) event;
+ final Path fileName = ev.context();
+ LOGGER.debug("new CSAR found: " + kind.name() + ": " + fileName);
+ createPolicyInputAndCallHandler(dir.toString() + File.separator + fileName.toString());
+ LOGGER.debug("CSAR complete: " + kind.name() + ": " + fileName);
+ }
+ final boolean valid = key.reset();
+ if (!valid) {
+ break;
+ }
+ }
+ } catch (final Exception ex) {
+ LOGGER.error(ex);
+ }
+ }
+
+ private void createPolicyInputAndCallHandler(final String fileName) throws PolicyDecodingException {
+ final Csar csarObject = new Csar(fileName);
+ inputReceived(csarObject);
+ }
+}
diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/FileSystemReceptionHandlerConfigurationParameterBuilder.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/FileSystemReceptionHandlerConfigurationParameterBuilder.java
new file mode 100644
index 00000000..b017cae6
--- /dev/null
+++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/FileSystemReceptionHandlerConfigurationParameterBuilder.java
@@ -0,0 +1,54 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Intel Corp. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.reception.handling.sdc;
+
+import java.util.List;
+
+/**
+ * This class builds an instance of {@link FileSystemReceptionHandlerConfigurationParameterGroup} class.
+ *
+ */
+public class FileSystemReceptionHandlerConfigurationParameterBuilder {
+
+ private String watchPath;
+
+ /**
+ * Set watchPath to this {@link FileSystemReceptionHandlerConfigurationParameterBuilder} instance.
+ *
+ * @param watchPath the watchPath
+ */
+ public FileSystemReceptionHandlerConfigurationParameterBuilder setWatchPath(final String watchPath) {
+ this.watchPath = watchPath;
+ return this;
+ }
+
+
+ /**
+ * Returns the watchPath of this {@link FileSystemReceptionHandlerConfigurationParameterBuilder} instance.
+ *
+ * @return the watchPath
+ */
+ public String getWatchPath() {
+ return watchPath;
+ }
+}
+
+
diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/FileSystemReceptionHandlerConfigurationParameterGroup.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/FileSystemReceptionHandlerConfigurationParameterGroup.java
new file mode 100644
index 00000000..79f6c208
--- /dev/null
+++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/FileSystemReceptionHandlerConfigurationParameterGroup.java
@@ -0,0 +1,78 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Intel. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.reception.handling.sdc;
+
+import java.io.File;
+
+import org.onap.policy.common.parameters.GroupValidationResult;
+import org.onap.policy.common.parameters.ValidationStatus;
+import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup;
+
+/**
+ * This class handles reading, parsing and validating of the Policy SDC Service Distribution parameters from Json
+ * format, which strictly adheres to the interface:IConfiguration, defined by SDC SDK.
+ */
+public class FileSystemReceptionHandlerConfigurationParameterGroup extends ReceptionHandlerConfigurationParameterGroup {
+
+ private String watchPath;
+
+ /**
+ * The constructor for instantiating {@link FileSystemReceptionHandlerConfigurationParameterGroup} class.
+ *
+ * @param builder the SDC configuration builder
+ */
+ public FileSystemReceptionHandlerConfigurationParameterGroup(
+ final FileSystemReceptionHandlerConfigurationParameterBuilder builder) {
+ watchPath = builder.getWatchPath();
+ }
+
+ public String getWatchPath() {
+ return watchPath;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public GroupValidationResult validate() {
+ final GroupValidationResult validationResult = new GroupValidationResult(this);
+ validatePathElement(validationResult, watchPath, "watchPath");
+ return validationResult;
+ }
+
+
+ /**
+ * Validate the string element.
+ *
+ * @param validationResult the result object
+ * @param element the element to validate
+ * @param elementName the element name for error message
+ */
+ private void validatePathElement(final GroupValidationResult validationResult, final String element,
+ final String elementName) {
+ File f = new File(element);
+ if (!(f.exists() && f.isDirectory())) {
+ validationResult.setResult(elementName, ValidationStatus.INVALID,
+ elementName + " must be a valid directory");
+ }
+ }
+}
+