You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mr...@apache.org on 2018/09/28 21:20:48 UTC
[ambari] 17/20: [AMBARI-23223] Stack Mpack link broken in stacks api
This is an automated email from the ASF dual-hosted git repository.
mradhakrishnan pushed a commit to branch AMBARI-24711
in repository https://gitbox.apache.org/repos/asf/ambari.git
commit ffe161fcdff875b5b6ec1828659ff77ad17c0ecf
Author: Madhuvanthi Radhakrishnan <mr...@hortonworks.com>
AuthorDate: Thu Mar 15 12:16:42 2018 -0700
[AMBARI-23223] Stack Mpack link broken in stacks api
---
.../controller/AmbariManagementControllerImpl.java | 18 +++--
.../controller/internal/MpackResourceProvider.java | 76 +++++++++++-----------
.../internal/StackVersionResourceProvider.java | 14 ++--
3 files changed, 60 insertions(+), 48 deletions(-)
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 29e42d9..6061640 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
@@ -4736,14 +4736,24 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
String stackName = request.getStackName();
String stackVersion = request.getStackVersion();
String propertyName = request.getPropertyName();
+ Set<PropertyInfo> configs;
- Set<PropertyInfo> properties;
+ //properties : cluster-env
+ //TODO: Remove after getting rid of cluster-env
if (propertyName != null) {
- properties = ambariMetaInfo.getStackPropertiesByName(stackName, stackVersion, propertyName);
+ configs = ambariMetaInfo.getStackPropertiesByName(stackName, stackVersion, propertyName);
} else {
- properties = ambariMetaInfo.getStackProperties(stackName, stackVersion);
+ configs = ambariMetaInfo.getStackProperties(stackName, stackVersion);
}
- for (PropertyInfo property: properties) {
+
+ //settings : stackSettings
+ if(configs.size() == 0){
+ if (propertyName != null) {
+ configs = ambariMetaInfo.getStackSettingsByName(stackName, stackVersion, propertyName);
+ } else
+ configs = ambariMetaInfo.getStackSettings(stackName, stackVersion);
+ }
+ for (PropertyInfo property: configs) {
response.add(property.convertToResponse());
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MpackResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MpackResourceProvider.java
index 3169eda..57e987d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MpackResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MpackResourceProvider.java
@@ -31,7 +31,6 @@ import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.ArrayList;
import java.util.List;
-
import com.google.inject.Inject;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.StaticallyInject;
@@ -247,50 +246,53 @@ public class MpackResourceProvider extends AbstractControllerResourceProvider {
} else {
// Fetch a particular mpack based on id
Map<String, Object> propertyMap = new HashMap<>(PredicateHelper.getProperties(predicate));
- if (propertyMap.containsKey(STACK_NAME_PROPERTY_ID) && propertyMap.containsKey(STACK_VERSION_PROPERTY_ID)) {
+ if (propertyMap.containsKey(MPACK_RESOURCE_ID)) {
+ Object objMpackId = propertyMap.get(MPACK_RESOURCE_ID);
+ if (objMpackId != null) {
+ mpackId = Long.valueOf((String) objMpackId);
+ }
+ MpackResponse response = getManagementController().getMpack(mpackId);
+ Resource resource = new ResourceImpl(Resource.Type.Mpack);
+ if (null != response) {
+ resource.setProperty(MPACK_RESOURCE_ID, response.getId());
+ resource.setProperty(MPACK_ID, response.getMpackId());
+ resource.setProperty(MPACK_NAME, response.getMpackName());
+ resource.setProperty(MPACK_VERSION, response.getMpackVersion());
+ resource.setProperty(MPACK_URI, response.getMpackUri());
+ resource.setProperty(MPACK_DESCRIPTION, response.getDescription());
+ resource.setProperty(REGISTRY_ID, response.getRegistryId());
+ List<Module> modules = getManagementController().getModules(response.getId());
+ resource.setProperty(MODULES, modules);
+ results.add(resource);
+ }
+ } //Fetch an mpack based on a stackVersion query
+ else if (propertyMap.containsKey(STACK_NAME_PROPERTY_ID)
+ && propertyMap.containsKey(STACK_VERSION_PROPERTY_ID)) {
String stackName = (String) propertyMap.get(STACK_NAME_PROPERTY_ID);
String stackVersion = (String) propertyMap.get(STACK_VERSION_PROPERTY_ID);
StackEntity stackEntity = stackDAO.find(stackName, stackVersion);
mpackId = stackEntity.getMpackId();
- if (mpackId != null) {
- MpackResponse response = getManagementController().getMpack(mpackId);
- Resource resource = new ResourceImpl(Resource.Type.Mpack);
- if (null != response) {
- resource.setProperty(MPACK_RESOURCE_ID, response.getId());
- resource.setProperty(MPACK_ID, response.getMpackId());
- resource.setProperty(MPACK_NAME, response.getMpackName());
- resource.setProperty(MPACK_VERSION, response.getMpackVersion());
- resource.setProperty(MPACK_URI, response.getMpackUri());
- resource.setProperty(MPACK_DESCRIPTION, response.getDescription());
- resource.setProperty(REGISTRY_ID, response.getRegistryId());
- resource.setProperty(STACK_NAME_PROPERTY_ID, stackName);
- resource.setProperty(STACK_VERSION_PROPERTY_ID, stackVersion);
- results.add(resource);
- }
+ MpackResponse response = getManagementController().getMpack(mpackId);
+ Resource resource = new ResourceImpl(Resource.Type.Mpack);
+ if (null != response) {
+ resource.setProperty(MPACK_RESOURCE_ID, response.getId());
+ resource.setProperty(MPACK_ID, response.getMpackId());
+ resource.setProperty(MPACK_NAME, response.getMpackName());
+ resource.setProperty(MPACK_VERSION, response.getMpackVersion());
+ resource.setProperty(MPACK_URI, response.getMpackUri());
+ resource.setProperty(MPACK_DESCRIPTION, response.getDescription());
+ resource.setProperty(REGISTRY_ID, response.getRegistryId());
+ resource.setProperty(STACK_NAME_PROPERTY_ID, stackName);
+ resource.setProperty(STACK_VERSION_PROPERTY_ID, stackVersion);
+ results.add(resource);
}
return results;
}
-
- if (propertyMap.containsKey(MPACK_RESOURCE_ID)) {
- Object objMpackId = propertyMap.get(MPACK_RESOURCE_ID);
- if (objMpackId != null)
- mpackId = Long.valueOf((String) objMpackId);
-
- MpackResponse response = getManagementController().getMpack(mpackId);
- Resource resource = new ResourceImpl(Resource.Type.Mpack);
- if (null != response) {
- resource.setProperty(MPACK_RESOURCE_ID, response.getId());
- resource.setProperty(MPACK_ID, response.getMpackId());
- resource.setProperty(MPACK_NAME, response.getMpackName());
- resource.setProperty(MPACK_VERSION, response.getMpackVersion());
- resource.setProperty(MPACK_URI, response.getMpackUri());
- resource.setProperty(MPACK_DESCRIPTION, response.getDescription());
- resource.setProperty(REGISTRY_ID, response.getRegistryId());
- List<Module> modules = getManagementController().getModules(response.getId());
- resource.setProperty(MODULES, modules);
- results.add(resource);
- }
+ if (null == mpackId) {
+ throw new IllegalArgumentException(
+ "Either the management pack ID or the stack name and version are required when searching");
}
+
if (results.isEmpty()) {
throw new NoSuchResourceException(
"The requested resource doesn't exist: " + predicate);
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackVersionResourceProvider.java
index d1e8a42..e678d1a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackVersionResourceProvider.java
@@ -60,7 +60,7 @@ public class StackVersionResourceProvider extends ReadOnlyResourceProvider {
public static final String UPGRADE_PACKS_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "upgrade_packs";
public static final String STACK_MIN_JDK = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "min_jdk";
public static final String STACK_MAX_JDK = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "max_jdk";
- public static final String MPACK_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "mpack_id";
+ public static final String MPACK_RESOURCE_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "id";
public static final Set<String> PROPERTY_IDS = new HashSet<>();
@@ -68,7 +68,7 @@ public class StackVersionResourceProvider extends ReadOnlyResourceProvider {
protected static StackDAO stackDAO;
private static Set<String> pkPropertyIds = new HashSet<>(
- Arrays.asList(new String[]{STACK_NAME_PROPERTY_ID, STACK_VERSION_PROPERTY_ID, MPACK_ID}));
+ Arrays.asList(new String[]{STACK_NAME_PROPERTY_ID, STACK_VERSION_PROPERTY_ID, MPACK_RESOURCE_ID}));
/**
* The key property ids for a mpack resource.
@@ -77,7 +77,7 @@ public class StackVersionResourceProvider extends ReadOnlyResourceProvider {
static {
// properties
- PROPERTY_IDS.add(MPACK_ID);
+ PROPERTY_IDS.add(MPACK_RESOURCE_ID);
PROPERTY_IDS.add(STACK_VERSION_PROPERTY_ID);
PROPERTY_IDS.add(STACK_NAME_PROPERTY_ID);
PROPERTY_IDS.add(STACK_MIN_VERSION_PROPERTY_ID);
@@ -91,7 +91,7 @@ public class StackVersionResourceProvider extends ReadOnlyResourceProvider {
PROPERTY_IDS.add(STACK_MAX_JDK);
// keys
- KEY_PROPERTY_IDS.put(Resource.Type.Mpack, MPACK_ID);
+ KEY_PROPERTY_IDS.put(Resource.Type.Mpack, MPACK_RESOURCE_ID);
KEY_PROPERTY_IDS.put(Resource.Type.Stack, STACK_NAME_PROPERTY_ID);
KEY_PROPERTY_IDS.put(Resource.Type.StackVersion, STACK_VERSION_PROPERTY_ID);
@@ -115,9 +115,9 @@ public class StackVersionResourceProvider extends ReadOnlyResourceProvider {
requests.add(getRequest(Collections.emptyMap()));
} else {
Map<String, Object> propertyMap = new HashMap<>(PredicateHelper.getProperties(predicate));
- if (propertyMap.containsKey(MPACK_ID)) {
+ if (propertyMap.containsKey(MPACK_RESOURCE_ID)) {
Resource resource = new ResourceImpl(Resource.Type.StackVersion);
- Long mpackId = Long.valueOf((String) propertyMap.get(MPACK_ID));
+ Long mpackId = Long.valueOf((String) propertyMap.get(MPACK_RESOURCE_ID));
StackEntity stackEntity = stackDAO.findByMpack(mpackId);
requests.add(new StackVersionRequest(stackEntity.getStackName(), stackEntity.getStackVersion()));
resource.setProperty(STACK_NAME_PROPERTY_ID,
@@ -126,7 +126,7 @@ public class StackVersionResourceProvider extends ReadOnlyResourceProvider {
resource.setProperty(STACK_VERSION_PROPERTY_ID,
(String)stackEntity.getStackVersion());
- resource.setProperty(MPACK_ID, mpackId);
+ resource.setProperty(MPACK_RESOURCE_ID, mpackId);
resources.add(resource);