Przeglądaj źródła

AMBARI-2182. Expose -active- attribute for Stack resource. (smohanty)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/trunk@1485074 13f79535-47bb-0310-9956-ffa450edef68
Sumit Mohanty 12 lat temu
rodzic
commit
eb6c15ae47

+ 2 - 0
CHANGES.txt

@@ -873,6 +873,8 @@ Trunk (unreleased changes):
 
  BUG FIXES
 
+ AMBARI-2182. Expose "active" attribute for Stack resource. (smohanty)
+
  AMBARI-2181. keys/pass.txt file is readable by everyone. (smohanty)
 
  AMBARI-2177. HBase Smoke Test shows success even if it fails. (smohanty)

+ 4 - 0
ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java

@@ -52,6 +52,7 @@ public class AmbariMetaInfo {
   private static final String STACK_METAINFO_FILE_NAME = "metainfo.xml";
   private static final String STACK_XML_MAIN_BLOCK_NAME = "metainfo";
   private static final String STACK_XML_PROPERTY_UPGRADE = "upgrade";
+  private static final String STACK_XML_PROPERTY_ACTIVE = "active";
   private static final String SERVICES_FOLDER_NAME = "services";
   private static final String SERVICE_METAINFO_FILE_NAME = "metainfo.xml";
   private static final String SERVICE_CONFIG_FOLDER_NAME = "configuration";
@@ -709,6 +710,9 @@ public class AmbariMetaInfo {
 
             stackInfo.setMinUpgradeVersion(getTagValue(
                 STACK_XML_PROPERTY_UPGRADE, property));
+
+            stackInfo.setActive(Boolean.parseBoolean(getTagValue(
+                STACK_XML_PROPERTY_ACTIVE, property)));
           }
         }
       } catch (Exception e) {

+ 12 - 1
ambari-server/src/main/java/org/apache/ambari/server/controller/StackVersionResponse.java

@@ -26,11 +26,14 @@ public class StackVersionResponse {
 
   private String stackVersion;
   private String minUpgradeVersion;
+  private boolean active;
   private List<RepositoryInfo> repositories;
 
-  public StackVersionResponse(String stackVersion, String minUpgradeVersion) {
+  public StackVersionResponse(String stackVersion, String minUpgradeVersion,
+                              boolean active) {
     setStackVersion(stackVersion);
     setMinUpgradeVersion(minUpgradeVersion);
+    setActive(active);
   }
 
   public String getStackVersion() {
@@ -56,4 +59,12 @@ public class StackVersionResponse {
   public void setMinUpgradeVersion(String minUpgradeVersion) {
     this.minUpgradeVersion = minUpgradeVersion;
   }
+
+  public boolean isActive() {
+    return active;
+  }
+
+  public void setActive(boolean active) {
+    this.active = active;
+  }
 }

+ 6 - 0
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackVersionResourceProvider.java

@@ -57,6 +57,9 @@ public class StackVersionResourceProvider extends ReadOnlyResourceProvider {
   private static final String STACK_MIN_VERSION_PROPERTY_ID = PropertyHelper
       .getPropertyId("Versions", "min_upgrade_version");
 
+  private static final String STACK_ACTIVE_PROPERTY_ID = PropertyHelper
+      .getPropertyId("Versions", "active");
+
   private static Set<String> pkPropertyIds = new HashSet<String>(
       Arrays.asList(new String[] { STACK_NAME_PROPERTY_ID,
           STACK_VERSION_PROPERTY_ID }));
@@ -93,6 +96,9 @@ public class StackVersionResourceProvider extends ReadOnlyResourceProvider {
       setResourceProperty(resource, STACK_MIN_VERSION_PROPERTY_ID,
           response.getMinUpgradeVersion(), requestedIds);
 
+      setResourceProperty(resource, STACK_ACTIVE_PROPERTY_ID,
+          response.isActive(), requestedIds);
+
       resources.add(resource);
     }
 

+ 12 - 2
ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java

@@ -27,6 +27,7 @@ public class StackInfo {
   private String name;
   private String version;
   private String minUpgradeVersion;
+  private boolean active;
   private List<RepositoryInfo> repositories;
   private List<ServiceInfo> services;
 
@@ -66,7 +67,8 @@ public class StackInfo {
 
   @Override
   public String toString() {
-    StringBuilder sb = new StringBuilder("Stack name:" + name + "\nversion:" + version );//TODO add repository
+    StringBuilder sb = new StringBuilder("Stack name:" + name + "\nversion:" +
+      version + "\nactive:" + active);
     if (services != null) {
       sb.append("\n\t\tService:");
       for (ServiceInfo service : services) {
@@ -106,7 +108,7 @@ public class StackInfo {
 
   public StackVersionResponse convertToResponse() {
 
-    return new StackVersionResponse(getVersion(), getMinUpgradeVersion());
+    return new StackVersionResponse(getVersion(), getMinUpgradeVersion(), isActive());
   }
 
   public String getMinUpgradeVersion() {
@@ -116,4 +118,12 @@ public class StackInfo {
   public void setMinUpgradeVersion(String minUpgradeVersion) {
     this.minUpgradeVersion = minUpgradeVersion;
   }
+
+  public boolean isActive() {
+    return active;
+  }
+
+  public void setActive(boolean active) {
+    this.active = active;
+  }
 }

+ 1 - 0
ambari-server/src/main/resources/properties.json

@@ -118,6 +118,7 @@
         "Versions/stack_name",
         "Versions/stack_version",
         "Versions/min_upgrade_version",
+        "Versions/active",
         "_"
     ],
     "OperatingSystem":[

+ 17 - 15
ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java

@@ -56,21 +56,7 @@ import org.apache.ambari.server.security.authorization.Users;
 import org.apache.ambari.server.serveraction.ServerAction;
 import org.apache.ambari.server.serveraction.ServerActionManager;
 import org.apache.ambari.server.serveraction.ServerActionManagerImpl;
-import org.apache.ambari.server.state.Cluster;
-import org.apache.ambari.server.state.Clusters;
-import org.apache.ambari.server.state.Config;
-import org.apache.ambari.server.state.ConfigFactory;
-import org.apache.ambari.server.state.ConfigImpl;
-import org.apache.ambari.server.state.Host;
-import org.apache.ambari.server.state.HostState;
-import org.apache.ambari.server.state.Service;
-import org.apache.ambari.server.state.ServiceComponent;
-import org.apache.ambari.server.state.ServiceComponentFactory;
-import org.apache.ambari.server.state.ServiceComponentHost;
-import org.apache.ambari.server.state.ServiceComponentHostFactory;
-import org.apache.ambari.server.state.ServiceFactory;
-import org.apache.ambari.server.state.StackId;
-import org.apache.ambari.server.state.State;
+import org.apache.ambari.server.state.*;
 import org.apache.ambari.server.state.svccomphost.ServiceComponentHostStartEvent;
 import org.apache.ambari.server.utils.StageUtils;
 import org.junit.After;
@@ -5290,6 +5276,22 @@ public class AmbariManagementControllerTest {
     }
   }
 
+  @Test
+  public void testGetStackVersionActiveAttr() throws Exception {
+
+    for (StackInfo stackInfo: ambariMetaInfo.getStackInfos(STACK_NAME)) {
+      if (stackInfo.getVersion().equalsIgnoreCase(STACK_VERSION)) {
+        stackInfo.setActive(true);
+      }
+    }
+
+    StackVersionRequest requestWithParams = new StackVersionRequest(STACK_NAME, STACK_VERSION);
+    Set<StackVersionResponse> responsesWithParams = controller.getStackVersions(Collections.singleton(requestWithParams));
+    Assert.assertEquals(1, responsesWithParams.size());
+    for (StackVersionResponse responseWithParams: responsesWithParams) {
+      Assert.assertTrue(responseWithParams.isActive());
+    }
+  }
 
   @Test
   public void testGetRepositories() throws Exception {