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 <[email protected]> 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);
