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);