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