You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2015/01/27 19:58:41 UTC

ambari git commit: AMBARI-9275. Cannot delete registered-version with invalid repo URLs (Yurii Shylov via ncole)

Repository: ambari
Updated Branches:
  refs/heads/trunk 59711d336 -> 14852dc8a


AMBARI-9275. Cannot delete registered-version with invalid repo URLs (Yurii Shylov via ncole)


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

Branch: refs/heads/trunk
Commit: 14852dc8a75d137b362668d546dfb0af141f354b
Parents: 59711d3
Author: Nate Cole <nc...@hortonworks.com>
Authored: Tue Jan 27 13:58:31 2015 -0500
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Tue Jan 27 13:58:31 2015 -0500

----------------------------------------------------------------------
 .../RepositoryVersionResourceProvider.java      | 21 ++++++++++++--------
 .../RepositoryVersionResourceProviderTest.java  | 10 +++++++++-
 2 files changed, 22 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/14852dc8/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 5422bdf..b72f872 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
@@ -18,18 +18,14 @@
 package org.apache.ambari.server.controller.internal;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Set;
-import java.util.regex.Pattern;
 
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.ObjectNotFoundException;
-import org.apache.ambari.server.StaticallyInject;
 import org.apache.ambari.server.api.resources.RepositoryResourceDefinition;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
@@ -49,12 +45,14 @@ import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
 import org.apache.ambari.server.orm.entities.OperatingSystemEntity;
 import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
 import org.apache.ambari.server.state.OperatingSystemInfo;
+import org.apache.ambari.server.state.RepositoryVersionState;
 import org.apache.ambari.server.state.StackId;
 import org.apache.ambari.server.state.StackInfo;
 import org.apache.ambari.server.state.stack.upgrade.RepositoryVersionHelper;
 import org.apache.commons.lang.ObjectUtils;
 import org.apache.commons.lang.StringUtils;
 
+import com.google.common.collect.Lists;
 import com.google.gson.Gson;
 import com.google.inject.Inject;
 
@@ -294,10 +292,17 @@ public class RepositoryVersionResourceProvider extends AbstractResourceProvider
       final List<ClusterVersionEntity> clusterVersionEntities =
           clusterVersionDAO.findByStackAndVersion(entity.getStack(), entity.getVersion());
 
-      if (!clusterVersionEntities.isEmpty()) {
-        final ClusterVersionEntity firstClusterVersion = clusterVersionEntities.get(0);
-        throw new SystemException("Repository version can't be deleted as it is " +
-          firstClusterVersion.getState().name() + " on cluster " + firstClusterVersion.getClusterEntity().getClusterName());
+      final List<RepositoryVersionState> forbiddenToDeleteStates = Lists.newArrayList(
+          RepositoryVersionState.CURRENT,
+          RepositoryVersionState.INSTALLED,
+          RepositoryVersionState.INSTALLING,
+          RepositoryVersionState.UPGRADED,
+          RepositoryVersionState.UPGRADING);
+      for (ClusterVersionEntity clusterVersionEntity : clusterVersionEntities) {
+        if (clusterVersionEntity.getRepositoryVersion().getId().equals(id) && forbiddenToDeleteStates.contains(clusterVersionEntity.getState())) {
+          throw new SystemException("Repository version can't be deleted as it is " +
+              clusterVersionEntity.getState().name() + " on cluster " + clusterVersionEntity.getClusterEntity().getClusterName());
+        }
       }
 
       entitiesToBeRemoved.add(entity);

http://git-wip-us.apache.org/repos/asf/ambari/blob/14852dc8/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java
index 3516ffe..4efdb0c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java
@@ -44,6 +44,7 @@ import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
 import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
 import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
 import org.apache.ambari.server.state.OperatingSystemInfo;
+import org.apache.ambari.server.state.RepositoryVersionState;
 import org.apache.ambari.server.state.StackInfo;
 import org.apache.ambari.server.state.stack.UpgradePack;
 import org.junit.After;
@@ -160,7 +161,14 @@ public class RepositoryVersionResourceProviderTest {
           notEmptyList.add(null);
           return notEmptyList;
         } else {
-          return new ArrayList<ClusterVersionEntity>();
+          final List<ClusterVersionEntity> clusterVersions = new ArrayList<ClusterVersionEntity>();
+          final RepositoryVersionEntity repositoryVersion = new RepositoryVersionEntity();
+          repositoryVersion.setId(1L);
+          final ClusterVersionEntity installFailedVersion = new ClusterVersionEntity();
+          installFailedVersion.setState(RepositoryVersionState.INSTALL_FAILED);
+          installFailedVersion.setRepositoryVersion(repositoryVersion);
+          clusterVersions.add(installFailedVersion);
+          return clusterVersions;
         }
       }
     });