Initial commit for AAI-UI(sparky-backend)
[aai/sparky-be.git] / src / main / java / org / openecomp / sparky / dal / aai / config / ActiveInventoryRestConfig.java
diff --git a/src/main/java/org/openecomp/sparky/dal/aai/config/ActiveInventoryRestConfig.java b/src/main/java/org/openecomp/sparky/dal/aai/config/ActiveInventoryRestConfig.java
new file mode 100644 (file)
index 0000000..d609f16
--- /dev/null
@@ -0,0 +1,283 @@
+/**
+ * ============LICENSE_START===================================================
+ * SPARKY (AAI UI service)
+ * ============================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * 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=====================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+
+package org.openecomp.sparky.dal.aai.config;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Properties;
+
+import org.openecomp.sparky.dal.aai.enums.RestAuthenticationMode;
+import org.openecomp.sparky.util.ConfigHelper;
+
+/**
+ * The Class ActiveInventoryRestConfig.
+ */
+public class ActiveInventoryRestConfig {
+
+  private String host;
+
+  private String port;
+
+  private int connectTimeoutInMs;
+
+  private int readTimeoutInMs;
+
+  private int numRequestRetries;
+
+  private int numResolverWorkers;
+
+  private boolean useCacheOnly;
+
+  private boolean cacheEnabled;
+
+  private boolean cacheFailures;
+
+  private String storageFolderOverride;
+
+  int numCacheWorkers;
+
+  private long maxTimeToLiveInMs;
+
+  private String resourceBasePath;
+
+  private List<String> shallowEntities;
+  
+  private RestAuthenticationMode authenticationMode;
+
+  public List<String> getShallowEntities() {
+    return shallowEntities;
+  }
+
+  /**
+   * Instantiates a new active inventory rest config.
+   *
+   * @param props the props
+   */
+  public ActiveInventoryRestConfig(Properties props) {
+
+    if (props == null) {
+      return;
+    }
+
+    Properties restProps = ConfigHelper.getConfigWithPrefix("aai.rest", props);
+
+    resourceBasePath = restProps.getProperty("resourceBasePath", "/aai/v7");
+    host = restProps.getProperty("host", "localhost");
+    port = restProps.getProperty("port", "8443");
+    numRequestRetries = Integer.parseInt(restProps.getProperty("numRequestRetries", "5"));
+    numResolverWorkers = Integer.parseInt(restProps.getProperty("numResolverWorkers", "15"));
+
+    connectTimeoutInMs = Integer.parseInt(restProps.getProperty("connectTimeoutInMs", "5000"));
+    readTimeoutInMs = Integer.parseInt(restProps.getProperty("readTimeoutInMs", "10000"));
+
+    String shallowEntitiesProperty = restProps.getProperty("shallowEntities", "");
+    shallowEntities = Arrays.asList(shallowEntitiesProperty.split(","));
+
+    Properties cacheProps = ConfigHelper.getConfigWithPrefix("aai.rest.cache", props);
+    cacheEnabled = Boolean.parseBoolean(cacheProps.getProperty("enabled", "false"));
+    storageFolderOverride = cacheProps.getProperty("storageFolderOverride", null);
+    cacheFailures = Boolean.parseBoolean(cacheProps.getProperty("cacheFailures", "false"));
+    useCacheOnly = Boolean.parseBoolean(cacheProps.getProperty("useCacheOnly", "false"));
+    numCacheWorkers = Integer.parseInt(cacheProps.getProperty("numWorkers", "5"));
+
+
+    if (storageFolderOverride != null && storageFolderOverride.length() == 0) {
+      storageFolderOverride = null;
+    }
+    /*
+     * The expectation of this parameter is that if the value > 0, then the cached resources will be
+     * served back instead of dipping AAI/DataLayer as long as the current resource age from the
+     * cached instance is < maxTimeToLiveInMs.
+     */
+    maxTimeToLiveInMs = Long.parseLong(cacheProps.getProperty("maxTimeToLiveInMs", "-1"));
+    authenticationMode = RestAuthenticationMode.getRestAuthenticationMode(restProps.getProperty("authenticationMode", RestAuthenticationMode.SSL_CERT.getAuthenticationModeLabel()));
+
+    /*
+     * In any kind of error scenario, set the authentication mode to SSL_CERT as our default.
+     * This is an arbitrary default, but was chosen based on the way this code worked before
+     * introduction of the SSL Basic Auth settings.
+     */
+    if ( authenticationMode == RestAuthenticationMode.UNKNOWN_MODE) {
+      authenticationMode = RestAuthenticationMode.SSL_CERT;
+    }
+    
+  }
+
+  public RestAuthenticationMode getAuthenticationMode() {
+    return authenticationMode;
+  }
+
+  public void setAuthenticationMode(RestAuthenticationMode authenticationMode) {
+    this.authenticationMode = authenticationMode;
+  }
+
+  public int getNumCacheWorkers() {
+    return numCacheWorkers;
+  }
+
+  public void setNumCacheWorkers(int numCacheWorkers) {
+    this.numCacheWorkers = numCacheWorkers;
+  }
+
+  /**
+   * Should cache failures.
+   *
+   * @return true, if successful
+   */
+  public boolean shouldCacheFailures() {
+    return cacheFailures;
+  }
+
+  public void setShouldCacheFailures(boolean enabled) {
+    this.cacheFailures = enabled;
+  }
+
+  /**
+   * Checks if is shallow entity.
+   *
+   * @param entityType the entity type
+   * @return true, if is shallow entity
+   */
+  public boolean isShallowEntity(String entityType) {
+    if (entityType == null) {
+      return false;
+    }
+
+    for (String entity : shallowEntities) {
+      if (entityType.equalsIgnoreCase(entity)) {
+        return true;
+      }
+    }
+
+    return false;
+  }
+
+  public boolean isUseCacheOnly() {
+    return useCacheOnly;
+  }
+
+  public void setUseCacheOnly(boolean useCacheOnly) {
+    this.useCacheOnly = useCacheOnly;
+  }
+
+  public int getNumResolverWorkers() {
+    return numResolverWorkers;
+  }
+
+  public void setNumResolverWorkers(int numResolverWorkers) {
+    this.numResolverWorkers = numResolverWorkers;
+  }
+
+  public long getMaxTimeToLiveInMs() {
+    return maxTimeToLiveInMs;
+  }
+
+  public void setMaxTimeToLiveInMs(long maxTimeToLiveInMs) {
+    this.maxTimeToLiveInMs = maxTimeToLiveInMs;
+  }
+
+  public boolean isCacheEnabled() {
+    return cacheEnabled;
+  }
+
+  public void setCacheEnabled(boolean cacheEnabled) {
+    this.cacheEnabled = cacheEnabled;
+  }
+
+  public String getStorageFolderOverride() {
+    return storageFolderOverride;
+  }
+
+  public void setStorageFolderOverride(String storageFolderOverride) {
+    this.storageFolderOverride = storageFolderOverride;
+  }
+
+  public String getHost() {
+    return host;
+  }
+
+  public String getPort() {
+    return port;
+  }
+
+  public String getResourceBasePath() {
+    return resourceBasePath;
+  }
+
+  public void setHost(String host) {
+    this.host = host;
+  }
+
+  public void setPort(String port) {
+    this.port = port;
+  }
+
+  /* (non-Javadoc)
+   * @see java.lang.Object#toString()
+   */
+  public void setResourceBasePath(String resourceBasePath) {
+    this.resourceBasePath = resourceBasePath;
+  }
+
+  @Override
+  public String toString() {
+    return "ActiveInventoryRestConfig [host=" + host + ", port=" + port + ", connectTimeoutInMs="
+        + connectTimeoutInMs + ", readTimeoutInMs=" + readTimeoutInMs + ", numRequestRetries="
+        + numRequestRetries + ", numResolverWorkers=" + numResolverWorkers + ", useCacheOnly="
+        + useCacheOnly + ", cacheEnabled=" + cacheEnabled + ", cacheFailures=" + cacheFailures
+        + ", storageFolderOverride=" + storageFolderOverride + ", numCacheWorkers="
+        + numCacheWorkers + ", maxTimeToLiveInMs=" + maxTimeToLiveInMs + ", resourceBasePath="
+        + resourceBasePath + ", shallowEntities=" + shallowEntities + ", authenticationMode="
+        + authenticationMode + "]";
+  }
+
+  public int getConnectTimeoutInMs() {
+    return connectTimeoutInMs;
+  }
+
+  public void setConnectTimeoutInMs(int connectTimeoutInMs) {
+    this.connectTimeoutInMs = connectTimeoutInMs;
+  }
+
+  public int getReadTimeoutInMs() {
+    return readTimeoutInMs;
+  }
+
+  public void setReadTimeoutInMs(int readTimeoutInMs) {
+    this.readTimeoutInMs = readTimeoutInMs;
+  }
+
+  public int getNumRequestRetries() {
+    return numRequestRetries;
+  }
+
+  public void setNumRequestRetries(int numRequestRetries) {
+    this.numRequestRetries = numRequestRetries;
+  }
+
+}