You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jl...@apache.org on 2017/09/26 05:20:00 UTC
[09/50] [abbrv] ambari git commit: AMBARI-22007 - Addition of service
component after patching a service still keeps the component at base version
(jonathanhurley)
AMBARI-22007 - Addition of service component after patching a service still keeps the component at base version (jonathanhurley)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/5c0a3546
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/5c0a3546
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/5c0a3546
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 5c0a3546e70e71366c51ef4e3b3ef9f2319865d8
Parents: 25c1f21
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Wed Sep 20 16:59:48 2017 -0400
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Wed Sep 20 17:02:39 2017 -0400
----------------------------------------------------------------------
.../ambari/server/agent/CommandRepository.java | 28 +++++++++++++++
.../AmbariCustomCommandExecutionHelper.java | 1 +
.../RepositoryVersionResourceProvider.java | 6 ++--
.../DistributeRepositoriesActionListener.java | 1 +
.../listeners/upgrade/StackVersionListener.java | 5 +--
.../orm/entities/RepositoryVersionEntity.java | 37 ++++++++++++++++++++
.../stack/upgrade/RepositoryVersionHelper.java | 1 +
.../server/upgrade/UpgradeCatalog260.java | 29 +++++++++++++--
.../main/resources/Ambari-DDL-Derby-CREATE.sql | 1 +
.../main/resources/Ambari-DDL-MySQL-CREATE.sql | 1 +
.../main/resources/Ambari-DDL-Oracle-CREATE.sql | 1 +
.../resources/Ambari-DDL-Postgres-CREATE.sql | 1 +
.../resources/Ambari-DDL-SQLAnywhere-CREATE.sql | 1 +
.../resources/Ambari-DDL-SQLServer-CREATE.sql | 1 +
.../upgrade/StackVersionListenerTest.java | 5 +++
.../server/upgrade/UpgradeCatalog260Test.java | 17 ++++++---
.../src/test/python/TestVersionSelectUtil.py | 14 ++++----
17 files changed, 133 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java
index 1351713..301f475 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java
@@ -46,6 +46,13 @@ public class CommandRepository {
private String m_stackName;
/**
+ * {@code true} if Ambari believes that this repository has reported back it's
+ * version after distribution.
+ */
+ @SerializedName("resolved")
+ private boolean m_resolved;
+
+ /**
* @param version the repo version
*/
public void setRepositoryVersion(String version) {
@@ -119,6 +126,27 @@ public class CommandRepository {
}
/**
+ * Gets whether this repository has been marked as having its version
+ * resolved.
+ *
+ * @return {@code true} if this repository has been confirmed to have the
+ * right version.
+ */
+ public boolean isResolved() {
+ return m_resolved;
+ }
+
+ /**
+ * Gets whether this repository has had its version resolved.
+ *
+ * @param resolved
+ * {@code true} to mark this repository as being resolved.
+ */
+ public void setResolved(boolean resolved) {
+ m_resolved = resolved;
+ }
+
+ /**
* Minimal information required to generate repo files on the agent. These are copies
* of the repository objects from repo versions that can be changed for URL overrides, etc.
*/
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
index 822539f..38a02ef 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
@@ -1285,6 +1285,7 @@ public class AmbariCustomCommandExecutionHelper {
public Void apply(RepositoryVersionEntity rve) {
command.setRepositoryVersionId(rve.getId());
command.setRepositoryVersion(rve.getVersion());
+ command.setResolved(rve.isResolved());
command.setStackName(rve.getStackName());
// !!! a repository version entity has all the repos worked out. We shouldn't use
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/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 44ef9f7..6455805 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
@@ -87,6 +87,7 @@ public class RepositoryVersionResourceProvider extends AbstractAuthorizedResourc
public static final String REPOSITORY_VERSION_REPOSITORY_VERSION_PROPERTY_ID = PropertyHelper.getPropertyId("RepositoryVersions", "repository_version");
public static final String REPOSITORY_VERSION_DISPLAY_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("RepositoryVersions", "display_name");
public static final String REPOSITORY_VERSION_HIDDEN_PROPERTY_ID = PropertyHelper.getPropertyId("RepositoryVersions", "hidden");
+ public static final String REPOSITORY_VERSION_RESOLVED_PROPERTY_ID = PropertyHelper.getPropertyId("RepositoryVersions", "resolved");
public static final String SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID = new OperatingSystemResourceDefinition().getPluralName();
public static final String SUBRESOURCE_REPOSITORIES_PROPERTY_ID = new RepositoryResourceDefinition().getPluralName();
@@ -121,7 +122,8 @@ public class RepositoryVersionResourceProvider extends AbstractAuthorizedResourc
REPOSITORY_VERSION_PARENT_ID,
REPOSITORY_VERSION_HAS_CHILDREN,
REPOSITORY_VERSION_AVAILABLE_SERVICES,
- REPOSITORY_VERSION_STACK_SERVICES);
+ REPOSITORY_VERSION_STACK_SERVICES,
+ REPOSITORY_VERSION_RESOLVED_PROPERTY_ID);
@SuppressWarnings("serial")
public static Map<Type, String> keyPropertyIds = new ImmutableMap.Builder<Type, String>()
@@ -257,7 +259,7 @@ public class RepositoryVersionResourceProvider extends AbstractAuthorizedResourc
setResourceProperty(resource, REPOSITORY_VERSION_HIDDEN_PROPERTY_ID, entity.isHidden(), requestedIds);
setResourceProperty(resource, REPOSITORY_VERSION_REPOSITORY_VERSION_PROPERTY_ID, entity.getVersion(), requestedIds);
setResourceProperty(resource, REPOSITORY_VERSION_TYPE_PROPERTY_ID, entity.getType(), requestedIds);
-
+ setResourceProperty(resource, REPOSITORY_VERSION_RESOLVED_PROPERTY_ID, entity.isResolved(), requestedIds);
setResourceProperty(resource, REPOSITORY_VERSION_PARENT_ID, entity.getParentId(), requestedIds);
List<RepositoryVersionEntity> children = entity.getChildren();
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
index aa29894..376e20d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
@@ -124,6 +124,7 @@ public class DistributeRepositoriesActionListener {
if (null != repoVersion && StringUtils.isNotBlank(actualVersion)) {
if (!StringUtils.equals(repoVersion.getVersion(), actualVersion)) {
repoVersion.setVersion(actualVersion);
+ repoVersion.setResolved(true);
repoVersionDAO.merge(repoVersion);
repositoryVersion = actualVersion;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
index 394e9f9..0ce64bf 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
@@ -98,8 +98,9 @@ public class StackVersionListener {
if (null != rve) {
String currentRepoVersion = rve.getVersion();
if (!StringUtils.equals(currentRepoVersion, newVersion)) {
- rve.setVersion(newVersion);
- repositoryVersionDAO.merge(rve);
+ rve.setVersion(newVersion);
+ rve.setResolved(true);
+ repositoryVersionDAO.merge(rve);
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
index bf9e678..2b56b11 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
@@ -147,6 +147,16 @@ public class RepositoryVersionEntity {
@Column(name = "hidden", nullable = false, insertable = true, updatable = true)
private short isHidden = 0;
+ /**
+ * Repositories can't be trusted until they have been deployed and we've
+ * detected their actual version. Most of the time, things match up, but
+ * editing a VDF could causes the version to be misrepresented. Once we have
+ * received the correct version of the repository (normally after it's been
+ * installed), then we can set this flag to {@code true}.
+ */
+ @Column(name = "resolved", nullable = false)
+ private short resolved = 0;
+
@ManyToOne
@JoinColumn(name = "parent_id")
private RepositoryVersionEntity parent;
@@ -217,6 +227,13 @@ public class RepositoryVersionEntity {
return version;
}
+ /**
+ * Sets the version on this repository version entity. If the version is
+ * confirmed as correct, then the called should also set
+ * {@link #setResolved(boolean)}.
+ *
+ * @param version
+ */
public void setVersion(String version) {
this.version = version;
}
@@ -459,4 +476,24 @@ public class RepositoryVersionEntity {
this.isHidden = (short) (isHidden ? 1 : 0);
}
+ /**
+ * Gets whether this repository has been installed and has reported back its
+ * actual version.
+ *
+ * @return {@code true} if the version for this repository can be trusted,
+ * {@code false} otherwise.
+ */
+ public boolean isResolved() {
+ return resolved == 1;
+ }
+
+ /**
+ * Sets whether this repository has been installed and has reported back its
+ * actual version.
+ *
+ * @param resolved
+ */
+ public void setResolved(boolean resolved) {
+ this.resolved = resolved ? (short) 1 : (short) 0;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java
index c137515..f540d8d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java
@@ -320,6 +320,7 @@ public class RepositoryVersionHelper {
commandRepo.setRepositories(osEntity.getOsType(), osEntity.getRepositories());
commandRepo.setRepositoryVersion(repoVersion.getVersion());
commandRepo.setRepositoryVersionId(repoVersion.getId());
+ commandRepo.setResolved(repoVersion.isResolved());
commandRepo.setStackName(repoVersion.getStackId().getStackName());
if (!osEntity.isAmbariManagedRepos()) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
index 0b9f2c4..c92b3dc 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
@@ -34,8 +34,10 @@ import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.orm.DBAccessor;
import org.apache.ambari.server.orm.dao.ArtifactDAO;
+import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.entities.ArtifactEntity;
import org.apache.ambari.server.orm.entities.ClusterConfigEntity;
+import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
@@ -80,6 +82,7 @@ public class UpgradeCatalog260 extends AbstractUpgradeCatalog {
public static final String REPO_VERSION_TABLE = "repo_version";
public static final String REPO_VERSION_ID_COLUMN = "repo_version_id";
+ public static final String REPO_VERSION_RESOLVED_COLUMN = "resolved";
public static final String REPO_VERSION_HIDDEN_COLUMN = "hidden";
public static final String HOST_COMPONENT_DESIRED_STATE_TABLE = "hostcomponentdesiredstate";
@@ -383,14 +386,20 @@ public class UpgradeCatalog260 extends AbstractUpgradeCatalog {
}
/**
- * Updates {@value #REPO_VERSION_TABLE} table. Adds
- * {@value #REPO_VERSION_HIDDEN_COLUMN} column.
+ * Updates {@value #REPO_VERSION_TABLE} table. Adds the following columns:
+ * <ul>
+ * <li>{@value #REPO_VERSION_HIDDEN_COLUMN}
+ * <li>{@value #REPO_VERSION_RESOLVED_COLUMN}
+ * </ul>
*
* @throws java.sql.SQLException
*/
private void updateRepositoryVersionTable() throws SQLException {
dbAccessor.addColumn(REPO_VERSION_TABLE,
new DBAccessor.DBColumnInfo(REPO_VERSION_HIDDEN_COLUMN, Short.class, null, 0, false));
+
+ dbAccessor.addColumn(REPO_VERSION_TABLE,
+ new DBAccessor.DBColumnInfo(REPO_VERSION_RESOLVED_COLUMN, Short.class, null, 0, false));
}
/**
@@ -412,6 +421,7 @@ public class UpgradeCatalog260 extends AbstractUpgradeCatalog {
updateKerberosDescriptorArtifacts();
updateAmsConfigs();
updateHDFSWidgetDefinition();
+ updateExistingRepositoriesToBeResolved();
}
public int getCurrentVersionID() throws AmbariException, SQLException {
@@ -590,4 +600,19 @@ public class UpgradeCatalog260 extends AbstractUpgradeCatalog {
updateWidgetDefinitionsForService("HDFS", widgetMap, sectionLayoutMap);
}
+
+ /**
+ * Sets all existing repository versions to be resolved (we have to assume
+ * that they are good since they've been using them to run stuff).
+ *
+ * @throws AmbariException
+ */
+ protected void updateExistingRepositoriesToBeResolved() throws AmbariException {
+ RepositoryVersionDAO repositoryVersionDAO = injector.getInstance(RepositoryVersionDAO.class);
+ List<RepositoryVersionEntity> repositoryVersions = repositoryVersionDAO.findAll();
+ for (RepositoryVersionEntity repositoryVersion : repositoryVersions) {
+ repositoryVersion.setResolved(true);
+ repositoryVersionDAO.merge(repositoryVersion);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
index 74fff6c..614af1e 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
@@ -155,6 +155,7 @@ CREATE TABLE repo_version (
repositories VARCHAR(3000) NOT NULL,
repo_type VARCHAR(255) DEFAULT 'STANDARD' NOT NULL,
hidden SMALLINT NOT NULL DEFAULT 0,
+ resolved SMALLINT NOT NULL DEFAULT 0,
version_url VARCHAR(1024),
version_xml CLOB,
version_xsd VARCHAR(512),
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
index beda848..530411a 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
@@ -175,6 +175,7 @@ CREATE TABLE repo_version (
repositories MEDIUMTEXT NOT NULL,
repo_type VARCHAR(255) DEFAULT 'STANDARD' NOT NULL,
hidden SMALLINT NOT NULL DEFAULT 0,
+ resolved TINYINT(1) NOT NULL DEFAULT 0,
version_url VARCHAR(1024),
version_xml MEDIUMTEXT,
version_xsd VARCHAR(512),
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
index 4f27dfb..02f6e3e 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
@@ -156,6 +156,7 @@ CREATE TABLE repo_version (
repositories CLOB NOT NULL,
repo_type VARCHAR2(255) DEFAULT 'STANDARD' NOT NULL,
hidden NUMBER(1) DEFAULT 0 NOT NULL,
+ resolved NUMBER(1) DEFAULT 0 NOT NULL,
version_url VARCHAR(1024),
version_xml CLOB,
version_xsd VARCHAR(512),
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
index 355ee80..634db95 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
@@ -159,6 +159,7 @@ CREATE TABLE repo_version (
version_xml TEXT,
version_xsd VARCHAR(512),
parent_id BIGINT,
+ resolved SMALLINT NOT NULL DEFAULT 0,
CONSTRAINT PK_repo_version PRIMARY KEY (repo_version_id),
CONSTRAINT FK_repoversion_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id),
CONSTRAINT UQ_repo_version_display_name UNIQUE (display_name),
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
index 76d4441..f64ff80 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
@@ -154,6 +154,7 @@ CREATE TABLE repo_version (
repositories TEXT NOT NULL,
repo_type VARCHAR(255) DEFAULT 'STANDARD' NOT NULL,
hidden SMALLINT NOT NULL DEFAULT 0,
+ resolved BIT NOT NULL DEFAULT 0,
version_url VARCHAR(1024),
version_xml TEXT,
version_xsd VARCHAR(512),
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
index f54a232..7a3feaf 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
@@ -168,6 +168,7 @@ CREATE TABLE repo_version (
repositories VARCHAR(MAX) NOT NULL,
repo_type VARCHAR(255) DEFAULT 'STANDARD' NOT NULL,
hidden SMALLINT NOT NULL DEFAULT 0,
+ resolved BIT NOT NULL DEFAULT 0,
version_url VARCHAR(1024),
version_xml VARCHAR(MAX),
version_xsd VARCHAR(512),
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
index ff6fab9..68d9c56 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
@@ -306,6 +306,11 @@ public class StackVersionListenerTest extends EasyMockSupport {
RepositoryVersionDAO dao = createNiceMock(RepositoryVersionDAO.class);
RepositoryVersionEntity entity = createNiceMock(RepositoryVersionEntity.class);
expect(entity.getVersion()).andReturn("2.4.0.0").once();
+
+ // when the version gets reported back, we set this repo to resolved
+ entity.setResolved(true);
+ expectLastCall().once();
+
expect(dao.findByPK(1L)).andReturn(entity).once();
expect(dao.merge(entity)).andReturn(entity).once();
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
index d7210c6..c03b400 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
@@ -219,7 +219,8 @@ public class UpgradeCatalog260Test {
expectDropStaleTables();
Capture<DBColumnInfo> repoVersionHiddenColumnCapture = newCapture();
- expectUpdateRepositoryVersionTableTable(repoVersionHiddenColumnCapture);
+ Capture<DBColumnInfo> repoVersionResolvedColumnCapture = newCapture();
+ expectUpdateRepositoryVersionTableTable(repoVersionHiddenColumnCapture, repoVersionResolvedColumnCapture);
Capture<DBColumnInfo> unapped = newCapture();
expectRenameServiceDeletedColumn(unapped);
@@ -248,7 +249,7 @@ public class UpgradeCatalog260Test {
verifyAddSelectedCollumsToClusterconfigTable(selectedColumnInfo, selectedmappingColumnInfo, selectedTimestampColumnInfo, createTimestampColumnInfo);
verifyUpdateUpgradeTable(rvid, orchestration, revertAllowed);
verifyCreateUpgradeHistoryTable(columns);
- verifyUpdateRepositoryVersionTableTable(repoVersionHiddenColumnCapture);
+ verifyUpdateRepositoryVersionTableTable(repoVersionHiddenColumnCapture, repoVersionResolvedColumnCapture);
}
public void expectDropStaleTables() throws SQLException {
@@ -581,16 +582,24 @@ public class UpgradeCatalog260Test {
* @param hiddenColumnCapture
* @throws SQLException
*/
- public void expectUpdateRepositoryVersionTableTable(Capture<DBColumnInfo> hiddenColumnCapture) throws SQLException {
+ public void expectUpdateRepositoryVersionTableTable(Capture<DBColumnInfo> hiddenColumnCapture,
+ Capture<DBColumnInfo> repoVersionResolvedColumnCapture) throws SQLException {
dbAccessor.addColumn(eq(UpgradeCatalog260.REPO_VERSION_TABLE), capture(hiddenColumnCapture));
+ dbAccessor.addColumn(eq(UpgradeCatalog260.REPO_VERSION_TABLE), capture(repoVersionResolvedColumnCapture));
expectLastCall().once();
}
- public void verifyUpdateRepositoryVersionTableTable(Capture<DBColumnInfo> hiddenColumnCapture) {
+ public void verifyUpdateRepositoryVersionTableTable(Capture<DBColumnInfo> hiddenColumnCapture,
+ Capture<DBColumnInfo> resolvedColumnCapture) {
DBColumnInfo hiddenColumn = hiddenColumnCapture.getValue();
Assert.assertEquals(0, hiddenColumn.getDefaultValue());
Assert.assertEquals(UpgradeCatalog260.REPO_VERSION_HIDDEN_COLUMN, hiddenColumn.getName());
Assert.assertEquals(false, hiddenColumn.isNullable());
+
+ DBColumnInfo resolvedColumn = resolvedColumnCapture.getValue();
+ Assert.assertEquals(0, resolvedColumn.getDefaultValue());
+ Assert.assertEquals(UpgradeCatalog260.REPO_VERSION_RESOLVED_COLUMN, resolvedColumn.getName());
+ Assert.assertEquals(false, resolvedColumn.isNullable());
}
@Test
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/test/python/TestVersionSelectUtil.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/TestVersionSelectUtil.py b/ambari-server/src/test/python/TestVersionSelectUtil.py
index 5097fac..5195dca 100644
--- a/ambari-server/src/test/python/TestVersionSelectUtil.py
+++ b/ambari-server/src/test/python/TestVersionSelectUtil.py
@@ -40,7 +40,7 @@ class TestVersionSelectUtil(TestCase):
@patch("resource_management.core.shell.call")
@patch('os.path.exists')
@patch("resource_management.libraries.functions.stack_tools.get_stack_tool")
- def test_get_component_version(self, get_stack_tool_mock, os_path_exists_mock, call_mock, open_mock):
+ def test_get_component_version_from_symlink(self, get_stack_tool_mock, os_path_exists_mock, call_mock, open_mock):
stack_expected_version = "2.2.1.0-2175"
# Mock classes for reading from a file
@@ -79,23 +79,23 @@ class TestVersionSelectUtil(TestCase):
call_mock.side_effect = [(0, "value will come from MagicFile"), ] * 3
# Missing stack name
- version = self.module.get_component_version(None, "hadoop-hdfs-datanode")
+ version = self.module.get_component_version_from_symlink(None, "hadoop-hdfs-datanode")
self.assertEquals(version, None)
# Missing component name
- version = self.module.get_component_version("HDP", None)
+ version = self.module.get_component_version_from_symlink("HDP", None)
self.assertEquals(version, None)
# Invalid stack name
- version = self.module.get_component_version("StackDoesNotExist", "hadoop-hdfs-datanode")
+ version = self.module.get_component_version_from_symlink("StackDoesNotExist", "hadoop-hdfs-datanode")
self.assertEquals(version, None)
# Invalid component name
- version = self.module.get_component_version("HDP", "hadoop-nonexistent-component-name")
+ version = self.module.get_component_version_from_symlink("HDP", "hadoop-nonexistent-component-name")
self.assertEquals(version, None)
# Pass
- version = self.module.get_component_version("HDP", "hadoop-hdfs-namenode")
+ version = self.module.get_component_version_from_symlink("HDP", "hadoop-hdfs-namenode")
self.assertEquals(version, stack_expected_version)
- version = self.module.get_component_version("HDP", "hadoop-hdfs-datanode")
+ version = self.module.get_component_version_from_symlink("HDP", "hadoop-hdfs-datanode")
self.assertEquals(version, stack_expected_version)
@patch('__builtin__.open')