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 2016/04/08 01:36:56 UTC
ambari git commit: AMBARI-15764. Add services element to
compatible_repository_versions endpoint (ncole)
Repository: ambari
Updated Branches:
refs/heads/trunk 7c211e3ee -> 129041f54
AMBARI-15764. Add services element to compatible_repository_versions endpoint (ncole)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/129041f5
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/129041f5
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/129041f5
Branch: refs/heads/trunk
Commit: 129041f548923abab41191e63a892d23193a7d52
Parents: 7c211e3
Author: Nate Cole <nc...@hortonworks.com>
Authored: Thu Apr 7 12:35:15 2016 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Thu Apr 7 19:36:14 2016 -0400
----------------------------------------------------------------------
.../ambari/server/api/query/QueryImpl.java | 19 +++---
.../AmbariManagementControllerImpl.java | 2 +
.../server/controller/RepositoryRequest.java | 15 +++++
.../server/controller/RepositoryResponse.java | 16 +++++
...atibleRepositoryVersionResourceProvider.java | 43 ++++++++++++-
.../internal/RepositoryResourceProvider.java | 12 +++-
.../ambari/server/api/query/QueryImplTest.java | 2 -
.../AmbariManagementControllerTest.java | 3 +-
...leRepositoryVersionResourceProviderTest.java | 63 ++++++++++++++++++--
.../RepositoryResourceProviderTest.java | 33 +++++++++-
10 files changed, 191 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/129041f5/ambari-server/src/main/java/org/apache/ambari/server/api/query/QueryImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/query/QueryImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/api/query/QueryImpl.java
index ba3a774..18fd94b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/query/QueryImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/query/QueryImpl.java
@@ -367,11 +367,6 @@ public class QueryImpl implements Query, ResourceInstance {
Resource.Type resourceType = getResourceDefinition().getType();
Predicate queryPredicate = createPredicate(getKeyValueMap(), processUserPredicate(userPredicate));
- Predicate updated = clusterController.getAmendedPredicate(resourceType, queryPredicate);
- if (null != updated) {
- queryPredicate = updated;
- }
-
// must occur after processing user predicate and prior to creating request
finalizeProperties();
@@ -900,13 +895,23 @@ public class QueryImpl implements Query, ResourceInstance {
}
}
+ Predicate p = null;
+
if (setPredicates.size() == 1) {
- return setPredicates.iterator().next();
+ p = setPredicates.iterator().next();
} else if (setPredicates.size() > 1) {
- return new AndPredicate(setPredicates.toArray(new Predicate[setPredicates.size()]));
+ p = new AndPredicate(setPredicates.toArray(new Predicate[setPredicates.size()]));
} else {
return null;
}
+
+ Resource.Type type = getResourceDefinition().getType();
+ Predicate override = clusterController.getAmendedPredicate(type, p);
+ if (null != override) {
+ p = override;
+ }
+
+ return p;
}
private Predicate createPredicate() {
http://git-wip-us.apache.org/repos/asf/ambari/blob/129041f5/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 1793ef2..9870441 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
@@ -3743,6 +3743,8 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
if (repositoryResponse.getStackVersion() == null) {
repositoryResponse.setStackVersion(stackVersion);
}
+
+ repositoryResponse.setClusterVersionId(request.getClusterVersionId());
}
response.addAll(repositories);
} catch (StackAccessException e) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/129041f5/ambari-server/src/main/java/org/apache/ambari/server/controller/RepositoryRequest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/RepositoryRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/RepositoryRequest.java
index b674e79..84929bf 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/RepositoryRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/RepositoryRequest.java
@@ -23,6 +23,7 @@ public class RepositoryRequest extends OperatingSystemRequest {
private String repoId;
private String baseUrl;
private boolean verify = true;
+ private Long clusterVersionId = null;
public RepositoryRequest(String stackName, String stackVersion, String osType, String repoId) {
super(stackName, stackVersion, osType);
@@ -69,6 +70,20 @@ public class RepositoryRequest extends OperatingSystemRequest {
verify = verifyUrl;
}
+ /**
+ * @param id the cluster version id for the request
+ */
+ public void setClusterVersionId(Long id) {
+ clusterVersionId = id;
+ }
+
+ /**
+ * @return the cluster version id for the request
+ */
+ public Long getClusterVersionId() {
+ return clusterVersionId;
+ }
+
@Override
public String toString() {
return "RepositoryRequest [repoId=" + repoId + ", baseUrl=" + baseUrl
http://git-wip-us.apache.org/repos/asf/ambari/blob/129041f5/ambari-server/src/main/java/org/apache/ambari/server/controller/RepositoryResponse.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/RepositoryResponse.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/RepositoryResponse.java
index 6221826..30bd0db 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/RepositoryResponse.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/RepositoryResponse.java
@@ -31,6 +31,7 @@ public class RepositoryResponse {
private String latestBaseUrl;
private Long repositoryVersionId;
private String versionDefinitionId;
+ private Long clusterVersionId;
public RepositoryResponse(String baseUrl, String osType, String repoId,
String repoName, String mirrorsList, String defaultBaseUrl, String latestBaseUrl) {
@@ -142,4 +143,19 @@ public class RepositoryResponse {
public String getVersionDefinitionId() {
return versionDefinitionId;
}
+
+ /**
+ * @param id the cluster version id for the response
+ */
+ public void setClusterVersionId(Long id) {
+ clusterVersionId = id;
+ }
+
+ /**
+ * @return the cluster version id for the response
+ */
+ public Long getClusterVersionId() {
+ return clusterVersionId;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/129041f5/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProvider.java
index 87e73c5..9303dcc 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProvider.java
@@ -26,6 +26,7 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.StaticallyInject;
import org.apache.ambari.server.api.resources.OperatingSystemResourceDefinition;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
@@ -44,7 +45,11 @@ import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
import org.apache.ambari.server.controller.utilities.PredicateBuilder;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
+import org.apache.ambari.server.state.ServiceInfo;
import org.apache.ambari.server.state.StackId;
+import org.apache.ambari.server.state.StackInfo;
+import org.apache.ambari.server.state.repository.ManifestServiceInfo;
+import org.apache.ambari.server.state.repository.VersionDefinitionXml;
import org.apache.ambari.server.state.stack.UpgradePack;
import com.google.common.collect.Sets;
@@ -66,6 +71,8 @@ public class CompatibleRepositoryVersionResourceProvider extends ReadOnlyResourc
public static final String REPOSITORY_VERSION_REPOSITORY_VERSION_PROPERTY_ID = "CompatibleRepositoryVersions/repository_version";
public static final String REPOSITORY_VERSION_DISPLAY_NAME_PROPERTY_ID = "CompatibleRepositoryVersions/display_name";
public static final String REPOSITORY_UPGRADES_SUPPORTED_TYPES_ID = "CompatibleRepositoryVersions/upgrade_types";
+ public static final String REPOSITORY_VERSION_SERVICES = "CompatibleRepositoryVersions/services";
+ public static final String REPOSITORY_VERSION_STACK_SERVICES = "CompatibleRepositoryVersions/stack_services";
public static final String SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID = new OperatingSystemResourceDefinition().getPluralName();
private static final String REPOSITORY_STACK_VALUE = "stack_value";
@@ -79,7 +86,9 @@ public class CompatibleRepositoryVersionResourceProvider extends ReadOnlyResourc
REPOSITORY_VERSION_STACK_NAME_PROPERTY_ID,
REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID,
SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID,
- REPOSITORY_UPGRADES_SUPPORTED_TYPES_ID);
+ REPOSITORY_UPGRADES_SUPPORTED_TYPES_ID,
+ REPOSITORY_VERSION_SERVICES,
+ REPOSITORY_VERSION_STACK_SERVICES);
static Map<Type, String> keyPropertyIds = new HashMap<Type, String>() {
{
@@ -192,6 +201,38 @@ public class CompatibleRepositoryVersionResourceProvider extends ReadOnlyResourc
setResourceProperty(resource, REPOSITORY_VERSION_DISPLAY_NAME_PROPERTY_ID, repositoryVersionEntity.getDisplayName(), requestedIds);
setResourceProperty(resource, REPOSITORY_VERSION_REPOSITORY_VERSION_PROPERTY_ID, repositoryVersionEntity.getVersion(), requestedIds);
setResourceProperty(resource, REPOSITORY_UPGRADES_SUPPORTED_TYPES_ID, entity.getSupportedTypes(), requestedIds);
+
+ final VersionDefinitionXml xml;
+ try {
+ xml = repositoryVersionEntity.getRepositoryXml();
+ } catch (Exception e) {
+ throw new SystemException(String.format("Could not load xml for Repository %s", repositoryVersionEntity.getId()), e);
+ }
+
+ final StackInfo stack;
+ try {
+ stack = s_ambariMetaInfo.get().getStack(repositoryVersionEntity.getStackName(), repositoryVersionEntity.getStackVersion());
+ } catch (AmbariException e) {
+ throw new SystemException(String.format("Could not load stack %s for Repository %s",
+ repositoryVersionEntity.getStackId().toString(), repositoryVersionEntity.getId()));
+ }
+
+ final List<ManifestServiceInfo> stackServices;
+
+ if (null != xml) {
+ setResourceProperty(resource, REPOSITORY_VERSION_SERVICES, xml.getAvailableServices(stack), requestedIds);
+ stackServices = xml.getStackServices(stack);
+ } else {
+ stackServices = new ArrayList<>();
+
+ for (ServiceInfo si : stack.getServices()) {
+ stackServices.add(new ManifestServiceInfo(si.getName(), si.getDisplayName(), si.getComment(),
+ Collections.singleton(si.getVersion())));
+ }
+ }
+
+ setResourceProperty(resource, REPOSITORY_VERSION_STACK_SERVICES, stackServices, requestedIds);
+
resources.add(resource);
}
return resources;
http://git-wip-us.apache.org/repos/asf/ambari/blob/129041f5/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryResourceProvider.java
index 1622a4d..18d597e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryResourceProvider.java
@@ -49,6 +49,7 @@ public class RepositoryResourceProvider extends AbstractControllerResourceProvid
public static final String REPOSITORY_REPO_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("Repositories", "repo_name");
public static final String REPOSITORY_STACK_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("Repositories", "stack_name");
public static final String REPOSITORY_STACK_VERSION_PROPERTY_ID = PropertyHelper.getPropertyId("Repositories", "stack_version");
+ public static final String REPOSITORY_CLUSTER_STACK_VERSION_PROPERTY_ID = PropertyHelper.getPropertyId("Repositories", "cluster_version_id");
public static final String REPOSITORY_OS_TYPE_PROPERTY_ID = PropertyHelper.getPropertyId("Repositories", "os_type");
public static final String REPOSITORY_BASE_URL_PROPERTY_ID = PropertyHelper.getPropertyId("Repositories", "base_url");
public static final String REPOSITORY_REPO_ID_PROPERTY_ID = PropertyHelper.getPropertyId("Repositories", "repo_id");
@@ -84,6 +85,7 @@ public class RepositoryResourceProvider extends AbstractControllerResourceProvid
add(REPOSITORY_LATEST_BASE_URL_PROPERTY_ID);
add(REPOSITORY_REPOSITORY_VERSION_ID_PROPERTY_ID);
add(REPOSITORY_VERSION_DEFINITION_ID_PROPERTY_ID);
+ add(REPOSITORY_CLUSTER_STACK_VERSION_PROPERTY_ID);
}
};
@@ -92,7 +94,7 @@ public class RepositoryResourceProvider extends AbstractControllerResourceProvid
{
put(Resource.Type.Stack, REPOSITORY_STACK_NAME_PROPERTY_ID);
put(Resource.Type.StackVersion, REPOSITORY_STACK_VERSION_PROPERTY_ID);
- put(Resource.Type.ClusterStackVersion, REPOSITORY_STACK_VERSION_PROPERTY_ID);
+ put(Resource.Type.ClusterStackVersion, REPOSITORY_CLUSTER_STACK_VERSION_PROPERTY_ID);
put(Resource.Type.OperatingSystem, REPOSITORY_OS_TYPE_PROPERTY_ID);
put(Resource.Type.Repository, REPOSITORY_REPO_ID_PROPERTY_ID);
put(Resource.Type.RepositoryVersion, REPOSITORY_REPOSITORY_VERSION_ID_PROPERTY_ID);
@@ -166,6 +168,10 @@ public class RepositoryResourceProvider extends AbstractControllerResourceProvid
setResourceProperty(resource, REPOSITORY_MIRRORS_LIST_PROPERTY_ID, response.getMirrorsList(), requestedIds);
setResourceProperty(resource, REPOSITORY_DEFAULT_BASE_URL_PROPERTY_ID, response.getDefaultBaseUrl(), requestedIds);
setResourceProperty(resource, REPOSITORY_LATEST_BASE_URL_PROPERTY_ID, response.getLatestBaseUrl(), requestedIds);
+ if (null != response.getClusterVersionId()) {
+ setResourceProperty(resource, REPOSITORY_CLUSTER_STACK_VERSION_PROPERTY_ID, response.getClusterVersionId(), requestedIds);
+ }
+
if (null != response.getRepositoryVersionId()) {
setResourceProperty(resource, REPOSITORY_REPOSITORY_VERSION_ID_PROPERTY_ID, response.getRepositoryVersionId(), requestedIds);
}
@@ -229,6 +235,10 @@ public class RepositoryResourceProvider extends AbstractControllerResourceProvid
request.setVersionDefinitionId(properties.get(REPOSITORY_VERSION_DEFINITION_ID_PROPERTY_ID).toString());
}
+ if (properties.containsKey(REPOSITORY_CLUSTER_STACK_VERSION_PROPERTY_ID)) {
+ request.setClusterVersionId(Long.parseLong(properties.get(REPOSITORY_CLUSTER_STACK_VERSION_PROPERTY_ID).toString()));
+ }
+
if (properties.containsKey(REPOSITORY_BASE_URL_PROPERTY_ID)) {
request.setBaseUrl((String) properties.get(REPOSITORY_BASE_URL_PROPERTY_ID));
http://git-wip-us.apache.org/repos/asf/ambari/blob/129041f5/ambari-server/src/test/java/org/apache/ambari/server/api/query/QueryImplTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/query/QueryImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/query/QueryImplTest.java
index 6bbb4bd..068e8d0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/query/QueryImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/query/QueryImplTest.java
@@ -977,7 +977,6 @@ public class QueryImplTest {
expect(mockClusterController.getResources(eq(Resource.Type.Configuration), isA(Request.class), (Predicate)eq(null))).andReturn(mockSubQueryResponse).atLeastOnce();
expect(mockClusterController.getIterable(eq(Resource.Type.Host), isA(QueryResponse.class), isA(Request.class),(Predicate)eq(null), (PageRequest)eq(null), (SortRequest)eq(null))).andReturn(Collections.singleton(mockResource)).atLeastOnce();
expect(mockClusterController.getIterable(eq(Resource.Type.Configuration), isA(QueryResponse.class), isA(Request.class),(Predicate)eq(null), (PageRequest)eq(null), (SortRequest)eq(null))).andReturn(Collections.singleton(mockResource)).atLeastOnce();
- expect(mockClusterController.getAmendedPredicate(eq(Resource.Type.Host), (Predicate)eq(null))).andReturn((Predicate)null).atLeastOnce();
expect(mockQueryResponse.getResources()).andReturn(Collections.singleton(mockResource)).atLeastOnce();
expect(mockSubQueryResponse.getResources()).andReturn(Collections.singleton(mockResource)).atLeastOnce();
@@ -1058,7 +1057,6 @@ public class QueryImplTest {
expect(mockClusterController.populateResources(eq(Resource.Type.Host), eq(Collections.singleton(mockResource)), isA(Request.class), (Predicate)eq(null))).andReturn(Collections.<Resource>emptySet()).times(1);
// expect call to activate property providers for Configuration sub-resource
expect(mockClusterController.populateResources(eq(Resource.Type.Configuration), eq(Collections.singleton(mockResource)), isA(Request.class), (Predicate)eq(null))).andReturn(Collections.<Resource>emptySet()).times(1);
- expect(mockClusterController.getAmendedPredicate(eq(Resource.Type.Host), (Predicate)eq(null))).andReturn((Predicate)null).atLeastOnce();
expect(mockQueryResponse.getResources()).andReturn(Collections.singleton(mockResource)).atLeastOnce();
expect(mockSubQueryResponse.getResources()).andReturn(Collections.singleton(mockResource)).atLeastOnce();
http://git-wip-us.apache.org/repos/asf/ambari/blob/129041f5/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 c79f9d2..caaf6a9 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
@@ -7232,11 +7232,12 @@ public class AmbariManagementControllerTest {
Assert.assertEquals(REPOS_CNT, responses.size());
RepositoryRequest requestWithParams = new RepositoryRequest(STACK_NAME, STACK_VERSION, OS_TYPE, REPO_ID);
+ requestWithParams.setClusterVersionId(525L);
Set<RepositoryResponse> responsesWithParams = controller.getRepositories(Collections.singleton(requestWithParams));
Assert.assertEquals(1, responsesWithParams.size());
for (RepositoryResponse responseWithParams: responsesWithParams) {
Assert.assertEquals(responseWithParams.getRepoId(), REPO_ID);
-
+ Assert.assertEquals(525L, responseWithParams.getClusterVersionId().longValue());
}
RepositoryRequest invalidRequest = new RepositoryRequest(STACK_NAME, STACK_VERSION, OS_TYPE, NON_EXT_VALUE);
http://git-wip-us.apache.org/repos/asf/ambari/blob/129041f5/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProviderTest.java
index 40d9b0b..066e0d0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProviderTest.java
@@ -19,6 +19,9 @@
package org.apache.ambari.server.controller.internal;
import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
@@ -50,6 +53,9 @@ import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.security.TestAuthenticationFactory;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.StackInfo;
+import org.apache.ambari.server.state.repository.AvailableService;
+import org.apache.ambari.server.state.repository.ManifestServiceInfo;
+import org.apache.ambari.server.state.repository.VersionDefinitionXml;
import org.apache.ambari.server.state.stack.UpgradePack;
import org.apache.ambari.server.state.stack.upgrade.UpgradeType;
import org.easymock.EasyMock;
@@ -70,6 +76,8 @@ public class CompatibleRepositoryVersionResourceProviderTest {
private static Injector injector;
private static String jsonStringRedhat6 = "[{\"OperatingSystems\":{\"os_type\":\"redhat6\"},\"repositories\":[]}]";
+ private static StackId stackId11 = new StackId("HDP", "1.1");
+ private static StackId stackId22 = new StackId("HDP", "2.2");
@Before
public void before() throws Exception {
@@ -91,7 +99,7 @@ public class CompatibleRepositoryVersionResourceProviderTest {
hdp22Stack.setStackName("HDP");
hdp22Stack.setStackVersion("2.2");
- RepositoryVersionEntity entity2 = new RepositoryVersionEntity();
+ RepositoryVersionEntity entity2 = new ExtendedRepositoryVersionEntity();
entity2.setDisplayName("name2");
entity2.setOperatingSystems(jsonStringRedhat6);
entity2.setStack(hdp22Stack);
@@ -100,9 +108,6 @@ public class CompatibleRepositoryVersionResourceProviderTest {
final RepositoryVersionDAO repoVersionDAO = EasyMock.createMock(RepositoryVersionDAO.class);
- StackId stackId11 = new StackId("HDP", "1.1");
- StackId stackId22 = new StackId("HDP", "2.2");
-
expect(repoVersionDAO.findByStack(stackId11)).andReturn(Collections.singletonList(entity1)).atLeastOnce();
expect(repoVersionDAO.findByStack(stackId22)).andReturn(Collections.singletonList(entity2)).atLeastOnce();
replay(repoVersionDAO);
@@ -277,6 +282,46 @@ public class CompatibleRepositoryVersionResourceProviderTest {
versionToUpgradeTypesMap.put("1.1", Arrays.asList(UpgradeType.ROLLING));
versionToUpgradeTypesMap.put("2.2", Arrays.asList(UpgradeType.NON_ROLLING, UpgradeType.ROLLING));
assertEquals(versionToUpgradeTypesMap.size(), checkUpgradeTypes(resources, versionToUpgradeTypesMap));
+
+ // !!! verify we can get services
+ RepositoryVersionDAO dao = injector.getInstance(RepositoryVersionDAO.class);
+ List<RepositoryVersionEntity> entities = dao.findByStack(stackId22);
+ assertEquals(1, entities.size());
+ RepositoryVersionEntity entity = entities.get(0);
+ assertTrue(ExtendedRepositoryVersionEntity.class.isInstance(entity));
+
+ VersionDefinitionXml mockXml = EasyMock.createMock(VersionDefinitionXml.class);
+ AvailableService mockAvailable = EasyMock.createMock(AvailableService.class);
+ ManifestServiceInfo mockStackService = EasyMock.createMock(ManifestServiceInfo.class);
+
+ expect(mockXml.getAvailableServices((StackInfo)EasyMock.anyObject())).andReturn(Collections.singletonList(mockAvailable)).atLeastOnce();
+ expect(mockXml.getStackServices((StackInfo)EasyMock.anyObject())).andReturn(Collections.singletonList(mockStackService)).atLeastOnce();
+
+ replay(mockXml);
+
+ ((ExtendedRepositoryVersionEntity) entity).m_xml = mockXml;
+
+ getRequest = PropertyHelper.getReadRequest(
+ CompatibleRepositoryVersionResourceProvider.REPOSITORY_VERSION_ID_PROPERTY_ID,
+ CompatibleRepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_NAME_PROPERTY_ID,
+ CompatibleRepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID,
+ CompatibleRepositoryVersionResourceProvider.REPOSITORY_UPGRADES_SUPPORTED_TYPES_ID,
+ CompatibleRepositoryVersionResourceProvider.REPOSITORY_VERSION_SERVICES);
+ predicateStackName = new PredicateBuilder().property(CompatibleRepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_NAME_PROPERTY_ID).equals("HDP").toPredicate();
+ predicateStackVersion = new PredicateBuilder().property(CompatibleRepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID).equals("1.1").toPredicate();
+
+ resources = compatibleProvider.getResources(getRequest, new AndPredicate(predicateStackName, predicateStackVersion));
+ assertEquals(2, resources.size());
+
+ for (Resource r : resources) {
+ Object stackId = r.getPropertyValue(CompatibleRepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID);
+ assertNotNull(stackId);
+ if (stackId.toString().equals("2.2")) {
+ assertNotNull(r.getPropertyValue(CompatibleRepositoryVersionResourceProvider.REPOSITORY_VERSION_SERVICES));
+ } else {
+ assertNull(r.getPropertyValue(CompatibleRepositoryVersionResourceProvider.REPOSITORY_VERSION_SERVICES));
+ }
+ }
}
@Test
@@ -351,4 +396,14 @@ public class CompatibleRepositoryVersionResourceProviderTest {
return count;
}
+ private static class ExtendedRepositoryVersionEntity extends RepositoryVersionEntity {
+ private VersionDefinitionXml m_xml = null;
+
+ @Override
+ public VersionDefinitionXml getRepositoryXml() throws Exception {
+ return m_xml;
+ }
+
+ }
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/129041f5/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java
index 48eeaf8..3a7b19b 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java
@@ -62,7 +62,7 @@ public class RepositoryResourceProviderTest {
allResponse.add(rr);
// set expectations
- expect(managementController.getRepositories(EasyMock.<Set<RepositoryRequest>>anyObject())).andReturn(allResponse).times(1);
+ expect(managementController.getRepositories(EasyMock.<Set<RepositoryRequest>>anyObject())).andReturn(allResponse).times(2);
// replay
replay(managementController);
@@ -76,6 +76,7 @@ public class RepositoryResourceProviderTest {
propertyIds.add(RepositoryResourceProvider.REPOSITORY_BASE_URL_PROPERTY_ID);
propertyIds.add(RepositoryResourceProvider.REPOSITORY_OS_TYPE_PROPERTY_ID);
propertyIds.add(RepositoryResourceProvider.REPOSITORY_REPO_ID_PROPERTY_ID);
+ propertyIds.add(RepositoryResourceProvider.REPOSITORY_CLUSTER_STACK_VERSION_PROPERTY_ID);
Predicate predicate =
new PredicateBuilder().property(RepositoryResourceProvider.REPOSITORY_STACK_NAME_PROPERTY_ID).equals(VAL_STACK_NAME)
@@ -109,6 +110,36 @@ public class RepositoryResourceProviderTest {
o = resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_REPO_ID_PROPERTY_ID);
Assert.assertEquals(o, VAL_REPO_ID);
+ o = resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_CLUSTER_STACK_VERSION_PROPERTY_ID);
+ Assert.assertNull(o);
+ }
+
+ // !!! check that the stack version id is returned
+ rr.setClusterVersionId(525L);
+ resources = provider.getResources(request, predicate);
+ Assert.assertEquals(allResponse.size(), resources.size());
+
+ for (Resource resource : resources) {
+ Object o = resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_STACK_NAME_PROPERTY_ID);
+ Assert.assertEquals(VAL_STACK_NAME, o);
+
+ o = resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_STACK_VERSION_PROPERTY_ID);
+ Assert.assertEquals(VAL_STACK_VERSION, o);
+
+ o = resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_REPO_NAME_PROPERTY_ID);
+ Assert.assertEquals(o, VAL_REPO_NAME);
+
+ o = resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_BASE_URL_PROPERTY_ID);
+ Assert.assertEquals(o, VAL_BASE_URL);
+
+ o = resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_OS_TYPE_PROPERTY_ID);
+ Assert.assertEquals(o, VAL_OS);
+
+ o = resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_REPO_ID_PROPERTY_ID);
+ Assert.assertEquals(o, VAL_REPO_ID);
+
+ o = resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_CLUSTER_STACK_VERSION_PROPERTY_ID);
+ Assert.assertEquals(525L, o);
}
// verify