AMBARI-21766 - When Matching New VDFs for Parent Repos only Consider STANDARD 
Types (jonathanhurley)


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

Branch: refs/heads/branch-feature-logsearch-ui
Commit: d2e0c42a1d6f67ade14e867d069d73b2567d685b
Parents: 6f9f87c
Author: Jonathan Hurley <jhur...@hortonworks.com>
Authored: Mon Aug 21 11:52:03 2017 -0400
Committer: Jonathan Hurley <jhur...@hortonworks.com>
Committed: Tue Aug 22 11:34:06 2017 -0400

----------------------------------------------------------------------
 .../VersionDefinitionResourceProvider.java      |  4 +++-
 .../server/orm/dao/RepositoryVersionDAO.java    | 20 ++++++++++++++++++++
 .../orm/entities/RepositoryVersionEntity.java   |  3 +++
 .../orm/dao/RepositoryVersionDAOTest.java       | 12 ++++++++++++
 4 files changed, 38 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/d2e0c42a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProvider.java
index 162c8df..394a0bf 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProvider.java
@@ -437,7 +437,9 @@ public class VersionDefinitionResourceProvider extends 
AbstractAuthorizedResourc
       return;
     }
 
-    List<RepositoryVersionEntity> entities = 
s_repoVersionDAO.findByStack(entity.getStackId());
+    List<RepositoryVersionEntity> entities = 
s_repoVersionDAO.findByStackAndType(
+        entity.getStackId(), RepositoryType.STANDARD);
+
     if (entities.isEmpty()) {
       throw new IllegalArgumentException(String.format("Patch %s was uploaded, 
but there are no repositories for %s",
           entity.getVersion(), entity.getStackId().toString()));

http://git-wip-us.apache.org/repos/asf/ambari/blob/d2e0c42a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
index d59d229..c83375b 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
@@ -134,6 +134,26 @@ public class RepositoryVersionDAO extends 
CrudDAO<RepositoryVersionEntity, Long>
   }
 
   /**
+   * Retrieves repository version by stack.
+   *
+   * @param stackId
+   *          stack id stack with major version (like HDP-2.2)
+   * @param type
+   *          the repository type
+   *
+   * @return null if there is no suitable repository version
+   */
+  @RequiresSession
+  public List<RepositoryVersionEntity> findByStackAndType(StackId stackId, 
RepositoryType type) {
+    final TypedQuery<RepositoryVersionEntity> query = 
entityManagerProvider.get().createNamedQuery(
+        "repositoryVersionByStackAndType", RepositoryVersionEntity.class);
+    query.setParameter("stackName", stackId.getStackName());
+    query.setParameter("stackVersion", stackId.getStackVersion());
+    query.setParameter("type", type);
+    return daoUtils.selectList(query);
+  }
+  
+  /**
    * Validates and creates an object.
    * The version must be unique within this stack name (e.g., HDP, HDPWIN, 
BIGTOP).
    * @param stackEntity Stack entity.

http://git-wip-us.apache.org/repos/asf/ambari/blob/d2e0c42a/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 c746363..c7c6ff4 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
@@ -80,6 +80,9 @@ import com.google.inject.Provider;
         name = "repositoryVersionByStack",
         query = "SELECT repoversion FROM RepositoryVersionEntity repoversion 
WHERE repoversion.stack.stackName=:stackName AND 
repoversion.stack.stackVersion=:stackVersion"),
     @NamedQuery(
+        name = "repositoryVersionByStackAndType",
+        query = "SELECT repoversion FROM RepositoryVersionEntity repoversion 
WHERE repoversion.stack.stackName=:stackName AND 
repoversion.stack.stackVersion=:stackVersion AND repoversion.type=:type"),
+    @NamedQuery(
         name = "repositoryVersionByStackNameAndVersion",
         query = "SELECT repoversion FROM RepositoryVersionEntity repoversion 
WHERE repoversion.stack.stackName=:stackName AND repoversion.version=:version"),
     @NamedQuery(

http://git-wip-us.apache.org/repos/asf/ambari/blob/d2e0c42a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java
index d596084..c16a6f7 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java
@@ -28,6 +28,7 @@ import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
 import org.apache.ambari.server.orm.entities.StackEntity;
+import org.apache.ambari.server.state.RepositoryType;
 import org.apache.ambari.server.state.StackId;
 import org.junit.After;
 import org.junit.Assert;
@@ -199,6 +200,17 @@ public class RepositoryVersionDAOTest {
         "1.0.1.0-1234"));
   }
 
+  @Test
+  public void testFindByStackAndType() {
+    createSingleRecord();
+
+    Assert.assertEquals(1,
+        repositoryVersionDAO.findByStackAndType(HDP_206, 
RepositoryType.STANDARD).size());
+
+    Assert.assertEquals(0,
+        repositoryVersionDAO.findByStackAndType(HDP_206, 
RepositoryType.MAINT).size());
+  }
+
   @After
   public void after() throws AmbariException, SQLException {
     H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);

Reply via email to