You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by di...@apache.org on 2016/09/12 14:06:12 UTC

ambari git commit: AMBARI-18324: Externalize skip repo url check to ambari.properties instead of hardcoding it in Ambari Java code (dili)

Repository: ambari
Updated Branches:
  refs/heads/trunk 2961c480e -> 623c36d2e


AMBARI-18324: Externalize skip repo url check to ambari.properties instead of hardcoding it in Ambari Java code (dili)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/623c36d2
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/623c36d2
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/623c36d2

Branch: refs/heads/trunk
Commit: 623c36d2e0832d9a0bc60bc9ff19b302d5e3cefa
Parents: 2961c48
Author: Di Li <di...@apache.org>
Authored: Mon Sep 12 10:05:31 2016 -0400
Committer: Di Li <di...@apache.org>
Committed: Mon Sep 12 10:05:31 2016 -0400

----------------------------------------------------------------------
 .../server/configuration/Configuration.java     | 25 +++++++++++++++++++-
 .../RepositoryVersionResourceProvider.java      | 15 +++++++++++-
 .../server/configuration/ConfigurationTest.java | 20 ++++++++++++++++
 3 files changed, 58 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/623c36d2/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
index 0690ca8..ee73b8d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
@@ -2300,6 +2300,14 @@ public class Configuration {
   public static final ConfigurationProperty<Integer> TASK_ID_LIST_LIMIT = new ConfigurationProperty<>(
       "task.query.parameterlist.size", 999);
 
+  /**
+   * A comma separated list of repo ids to skip the repo url check when registering a repo for the stack
+   * @return
+   */
+  @Markdown(description = "The list of repo ids to skip the repo url check when registering a repo for the stack.")
+  public static final ConfigurationProperty<String> SKIP_REPO_URL_EXISTENCE_VALIDATION_LIST = new ConfigurationProperty<>(
+      "no.repo.existence.validation.list", "HDP-UTILS");
+
   private static final Logger LOG = LoggerFactory.getLogger(
     Configuration.class);
 
@@ -4825,6 +4833,22 @@ public class Configuration {
   }
 
   /**
+   * Default to HDP-UTILS
+   * */
+  public List<String> getSkipRepoUrlExistenceValidationList(){
+    List<String> list = new ArrayList<String>();
+    String propValue = getProperty(SKIP_REPO_URL_EXISTENCE_VALIDATION_LIST);
+    for (String repo: propValue.split(",")) {
+      repo = repo.trim();
+      if (!repo.isEmpty()) {
+        list.add(repo);
+      }
+    }
+    LOG.debug("Skip Repo URL Existence Validation on :" + list);
+    return list;
+  }
+
+  /**
    * Generates a markdown table which includes:
    * <ul>
    * <li>Property key name</li>
@@ -5187,5 +5211,4 @@ public class Configuration {
     ClusterSizeType clusterSize();
     String value();
   }
-
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/623c36d2/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
index e440460..cd440f3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
@@ -32,6 +32,7 @@ import org.apache.ambari.server.ObjectNotFoundException;
 import org.apache.ambari.server.api.resources.OperatingSystemResourceDefinition;
 import org.apache.ambari.server.api.resources.RepositoryResourceDefinition;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
 import org.apache.ambari.server.controller.spi.NoSuchResourceException;
 import org.apache.ambari.server.controller.spi.Predicate;
@@ -457,11 +458,14 @@ public class RepositoryVersionResourceProvider extends AbstractAuthorizedResourc
 
     // List of all repo urls that are already added at stack
     Set<String> existingRepoUrls = new HashSet<String>();
+    Configuration configuration = new Configuration();
+    List<String> skipRepos = configuration.getSkipRepoUrlExistenceValidationList();
     List<RepositoryVersionEntity> existingRepoVersions = dao.findByStack(requiredStack);
     for (RepositoryVersionEntity existingRepoVersion : existingRepoVersions) {
       for (OperatingSystemEntity operatingSystemEntity : existingRepoVersion.getOperatingSystems()) {
         for (RepositoryEntity repositoryEntity : operatingSystemEntity.getRepositories()) {
-          if (! repositoryEntity.getRepositoryId().startsWith("HDP-UTILS") &&  // HDP-UTILS is shared between repo versions
+          boolean toSkipRepo = isToSkip(repositoryEntity.getRepositoryId(), skipRepos);
+          if (! toSkipRepo && // HDP-UTILS is shared between repo versions
                   ! existingRepoVersion.getId().equals(repositoryVersion.getId())) { // Allow modifying already defined repo version
             existingRepoUrls.add(repositoryEntity.getBaseUrl());
           }
@@ -548,4 +552,13 @@ public class RepositoryVersionResourceProvider extends AbstractAuthorizedResourc
     // This information is not associated with any particular resource
     return null;
   }
+
+  private static boolean isToSkip(String repoId, List<String> skipRepos){
+    for(String repo: skipRepos){
+      if (repoId.startsWith(repo)){
+        return true;
+      }
+    }
+    return false;
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/623c36d2/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java b/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
index f9b76f8..f429a36 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
@@ -30,6 +30,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
@@ -920,4 +921,23 @@ public class ConfigurationTest {
           StringUtils.isEmpty(markdown.description()));
     }
   }
+
+  /**
+   * Tests the default values for the {@link MetricsRetrievalService}.
+   *
+   * @throws Exception
+   */
+  @Test
+  public void testGetSkipRepoUrlExistenceValidationListDefaults() throws Exception {
+
+    final Properties ambariProperties = new Properties();
+    final Configuration configuration = new Configuration(ambariProperties);
+
+    List<String> skipRepos = configuration.getSkipRepoUrlExistenceValidationList();
+
+    // test defaults
+    Assert.assertEquals(skipRepos.size(), 1);
+    String hdpUtils = skipRepos.get(0);
+    Assert.assertTrue("HDP-UTILS".equals(hdpUtils));
+  }
 }