summaryrefslogtreecommitdiffstats
path: root/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceFactory.java')
-rw-r--r--controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceFactory.java122
1 files changed, 122 insertions, 0 deletions
diff --git a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceFactory.java b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceFactory.java
new file mode 100644
index 000000000..91e36c01d
--- /dev/null
+++ b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceFactory.java
@@ -0,0 +1,122 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright 2017-2018 ZTE, Inc. and others.
+ *
+ * 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.policy.msb.client;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Properties;
+
+import org.onap.msb.sdk.discovery.common.RouteException;
+import org.onap.msb.sdk.discovery.entity.MicroServiceFullInfo;
+import org.onap.msb.sdk.discovery.entity.NodeInfo;
+import org.onap.msb.sdk.httpclient.msb.MSBServiceClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MsbServiceFactory implements Serializable {
+ private static final long serialVersionUID = 4638414146278012425L;
+ private static final Logger logger = LoggerFactory.getLogger(MsbServiceFactory.class);
+ private static final String MSB_PROPERTY_FILE = "msb.policy.properties";
+ private static final String MSB_IP = "msb.ip";
+ private static final String MSB_PORT = "msb.port";
+ private transient MSBServiceClient msbClient;
+ private Properties properties;
+
+ /**
+ * Construct an instance.
+ *
+ * @throws MsbServiceException if an error occurs
+ * @throws IOException if an IO error occurs
+ */
+ public MsbServiceFactory() throws MsbServiceException, IOException {
+ this.init();
+ this.msbClient = new MSBServiceClient(properties.getProperty(MSB_IP),
+ Integer.parseInt(properties.getProperty(MSB_PORT)));
+ }
+
+ public MsbServiceFactory(MSBServiceClient msbClient) {
+ this.msbClient = msbClient;
+ }
+
+ private void init() throws MsbServiceException, IOException {
+ properties = new Properties();
+ String propertyFilePath = System.getProperty(MSB_PROPERTY_FILE);
+ if (propertyFilePath == null) {
+ throw new MsbServiceException("No msb.policy.properties specified.");
+ }
+ Path file = Paths.get(propertyFilePath);
+ if (!file.toFile().exists()) {
+ throw new MsbServiceException("No msb.policy.properties specified.");
+ }
+
+ if (!Files.isReadable(file)) {
+ throw new MsbServiceException("Repository is NOT readable: " + file.toAbsolutePath());
+ }
+ try (InputStream is = new FileInputStream(file.toFile())) {
+ properties.load(is);
+ }
+ }
+
+
+ public Node getNode(String serviceName, String version) {
+ return this.build(serviceName, version);
+ }
+
+ /**
+ * Get the node for the given actor.
+ *
+ * @param actor the actor
+ * @return the node
+ */
+ public Node getNode(String actor) {
+ Node node = null;
+ switch (actor) {
+ case "AAI":
+ node = this.build("aai-search", "v11");
+ return node;
+ case "SO":
+ node = this.build("so", "v2");
+ return node;
+ case "VFC":
+ node = this.build("nfvo-nslcm", "v1");
+ return node;
+ default:
+ logger.info("MSBServiceManager: policy has an unknown actor.");
+ }
+ return node;
+ }
+
+ private Node build(String serviceName, String version) {
+ Node node = new Node();
+ node.setName(serviceName);
+ try {
+ MicroServiceFullInfo serviceInfo = msbClient.queryMicroServiceInfo(serviceName, version);
+ for (NodeInfo nodeInfo : serviceInfo.getNodes()) {
+ node.setIp(nodeInfo.getIp());
+ node.setPort(nodeInfo.getPort());
+ }
+ } catch (RouteException e) {
+ logger.info("MSBServiceManager:", e);
+ }
+ return node;
+ }
+}