Repository: ambari
Updated Branches:
  refs/heads/trunk 7819edfd1 -> bbb042f32


AMBARI-12811: Disable old APIs to manage baseurl values (Nahappan Somasundaram 
via jluniya)


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

Branch: refs/heads/trunk
Commit: bbb042f32d5b7bb3937d6426f16243fd27effb45
Parents: 7819edf
Author: Jayush Luniya <jlun...@hortonworks.com>
Authored: Wed Aug 26 08:48:49 2015 -0700
Committer: Jayush Luniya <jlun...@hortonworks.com>
Committed: Wed Aug 26 08:48:49 2015 -0700

----------------------------------------------------------------------
 ambari-server/conf/unix/ambari.properties       |  3 ++
 .../server/configuration/Configuration.java     |  9 +++++
 .../AmbariManagementControllerImpl.java         | 23 +++++++++--
 .../AmbariManagementControllerTest.java         | 42 ++++++++++++++++++++
 4 files changed, 73 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/bbb042f3/ambari-server/conf/unix/ambari.properties
----------------------------------------------------------------------
diff --git a/ambari-server/conf/unix/ambari.properties 
b/ambari-server/conf/unix/ambari.properties
index 75e0fe1..43faa2f 100644
--- a/ambari-server/conf/unix/ambari.properties
+++ b/ambari-server/conf/unix/ambari.properties
@@ -92,3 +92,6 @@ skip.service.checks=false
 
 rolling.upgrade.min.stack=HDP-2.2
 rolling.upgrade.max.stack=
+
+# stack version for deprecating base url in metainfo table
+baseurl.api.metainfo.deprecate.min.version=2.2

http://git-wip-us.apache.org/repos/asf/ambari/blob/bbb042f3/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 0b0ee95..67fb08e 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
@@ -438,6 +438,12 @@ public class Configuration {
   public static final String ALERTS_EXECUTION_SCHEDULER_THREADS_KEY = 
"alerts.execution.scheduler.maxThreads";
   public static final String ALERTS_EXECUTION_SCHEDULER_THREADS_DEFAULT = "2";
 
+  /**
+   * Repository Base URL is no longer stored in metainfo table starting HDP 
version 2.2. It is in repo_version table.
+   */
+  public static final String BASEURL_API_DEPRECATED_STACK_VERSION = 
"baseurl.api.metainfo.deprecate.min.version";
+  public static final String BASEURL_API_DEPRECATED_STACK_VERSION_DEFAULT = 
"2.2";
+
   private static final Logger LOG = LoggerFactory.getLogger(
       Configuration.class);
 
@@ -636,6 +642,9 @@ public class Configuration {
     configsMap.put(PROXY_ALLOWED_HOST_PORTS, properties.getProperty(
         PROXY_ALLOWED_HOST_PORTS, PROXY_ALLOWED_HOST_PORTS_DEFAULT));
 
+    configsMap.put(BASEURL_API_DEPRECATED_STACK_VERSION, 
properties.getProperty(
+            BASEURL_API_DEPRECATED_STACK_VERSION, 
BASEURL_API_DEPRECATED_STACK_VERSION_DEFAULT));
+
     File passFile = new File(configsMap.get(SRVR_KSTR_DIR_KEY) + File.separator
         + configsMap.get(SRVR_CRT_PASS_FILE_KEY));
     String password = null;

http://git-wip-us.apache.org/repos/asf/ambari/blob/bbb042f3/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index ef6fc58..fe7f369 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -160,6 +160,7 @@ import 
org.apache.ambari.server.state.svccomphost.ServiceComponentHostStartEvent
 import 
org.apache.ambari.server.state.svccomphost.ServiceComponentHostStopEvent;
 import 
org.apache.ambari.server.state.svccomphost.ServiceComponentHostUpgradeEvent;
 import org.apache.ambari.server.utils.StageUtils;
+import org.apache.ambari.server.utils.VersionUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MultiMap;
 import org.apache.commons.io.IOUtils;
@@ -3501,14 +3502,28 @@ public class AmbariManagementControllerImpl implements 
AmbariManagementControlle
   @Override
   public void updateRepositories(Set<RepositoryRequest> requests) throws 
AmbariException {
     for (RepositoryRequest rr : requests) {
-      if (null == rr.getStackName() || rr.getStackName().isEmpty()) {
-        throw new AmbariException("Stack name must be specified.");
-      }
-
       if (null == rr.getStackVersion() || rr.getStackVersion().isEmpty()) {
         throw new AmbariException("Stack version must be specified.");
       }
 
+      //
+      // If stack version is 2.2.0.0 or greater, error out.
+      //
+      String stackVersion = rr.getStackVersion();
+      String baseUrlDeprecatedStackVersion = 
configs.getConfigsMap().get(Configuration.BASEURL_API_DEPRECATED_STACK_VERSION);
+      try {
+        if (VersionUtils.compareVersions(stackVersion, 
baseUrlDeprecatedStackVersion) >= 0) {
+          throw new AmbariException("Stack version (" + stackVersion + ") is 
not supported");
+        }
+      }
+      catch (NumberFormatException e) {
+        throw new AmbariException("Stack version (" + stackVersion + ") is not 
supported");
+      }
+
+      if (null == rr.getStackName() || rr.getStackName().isEmpty()) {
+        throw new AmbariException("Stack name must be specified.");
+      }
+
       if (null == rr.getOsType() || rr.getOsType().isEmpty()) {
         throw new AmbariException("OS type must be specified.");
       }

http://git-wip-us.apache.org/repos/asf/ambari/blob/bbb042f3/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
index 599a1f7..a2c5a6b 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
@@ -8481,6 +8481,48 @@ public class AmbariManagementControllerTest {
       LOG.error("Can not complete test. " + exceptionMsg);
     }
 
+    //
+    // HDP stack version 2.2 and above are not supported since the base_url 
information is stored in repo_version table
+    //
+
+    // Test with stack version 2.2
+    requests.clear();
+    request = new RepositoryRequest(STACK_NAME, "2.2", OS_TYPE, REPO_ID);
+    request.setBaseUrl(baseUrl);
+    requests.add(request);
+    try {
+      controller.updateRepositories(requests);
+    } catch (Exception e) {
+      String exceptionMsg = e.getMessage();
+      assertTrue(exceptionMsg.contains("is not supported"));
+      LOG.error("Can not complete test. " + exceptionMsg);
+    }
+
+    // Test with stack version 2.3 (minor version bumped up)
+    requests.clear();
+    request = new RepositoryRequest(STACK_NAME, "2.3", OS_TYPE, REPO_ID);
+    request.setBaseUrl(baseUrl);
+    requests.add(request);
+    try {
+      controller.updateRepositories(requests);
+    } catch (Exception e) {
+      String exceptionMsg = e.getMessage();
+      assertTrue(exceptionMsg.contains("is not supported"));
+      LOG.error("Can not complete test. " + exceptionMsg);
+    }
+
+    // Test with stack version 3.2 (major version bumped up)
+    requests.clear();
+    request = new RepositoryRequest(STACK_NAME, "3.2", OS_TYPE, REPO_ID);
+    request.setBaseUrl(baseUrl);
+    requests.add(request);
+    try {
+      controller.updateRepositories(requests);
+    } catch (Exception e) {
+      String exceptionMsg = e.getMessage();
+      assertTrue(exceptionMsg.contains("is not supported"));
+      LOG.error("Can not complete test. " + exceptionMsg);
+    }
   }
 
   @Test

Reply via email to