Browse Source

AMBARI-1593. Change host override JSON to include version tag

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/trunk@1454527 13f79535-47bb-0310-9956-ffa450edef68
Nate Cole 12 years ago
parent
commit
d1b0c3db00

+ 4 - 0
CHANGES.txt

@@ -12,6 +12,10 @@ Trunk (unreleased changes):
 
  NEW FEATURES
 
+ AMBARI-1593. Change host override JSON to include version tag (ncole)
+
+ AMBARI-1545. Integrate Frontend Security work to enable security on HDFS
+
  AMBARI-1555. Upgrade should validate that the from->to version is an allowed 
  combination. (Sumit Mohanty via swagle)
 

+ 39 - 5
ambari-server/src/main/java/org/apache/ambari/server/state/DesiredConfig.java

@@ -31,7 +31,7 @@ public class DesiredConfig {
 
   private String versionTag;
   private String serviceName;
-  private List<String> hostOverrides = null;
+  private List<HostOverride> hostOverrides = null;
 
   /**
    * Sets the version tag
@@ -72,7 +72,7 @@ public class DesiredConfig {
    * Sets the host overrides for the desired config.  Cluster-based desired configs only.
    * @param overrides the host names
    */
-  public void setHostOverrides(List<String> overrides) {
+  public void setHostOverrides(List<HostOverride> overrides) {
     hostOverrides = overrides;
   }
 
@@ -82,10 +82,44 @@ public class DesiredConfig {
    */
   @JsonSerialize(include = Inclusion.NON_EMPTY)
   @JsonProperty("host_overrides")
-  public List<String> getHostOverrides() {
+  public List<HostOverride> getHostOverrides() {
     return hostOverrides;
   }
 
+  /**
+   * Used to represent an override on a host.
+   */
+  public static class HostOverride {
+    private String hostName;
+    private String versionOverrideTag;
+
+    /**
+     * @param name the host name
+     * @param tag the config tag
+     */
+    public HostOverride(String name, String tag) {
+      hostName = name;
+      versionOverrideTag = tag;
+    }
+
+    /**
+     * @return the override host name
+     */
+    @JsonProperty("host_name")
+    public String getName() {
+      return hostName;
+    }
+
+    /**
+     * @return the override version tag
+     */
+    @JsonProperty("tag")
+    public String getVersionTag() {
+      return versionOverrideTag;
+    }
+
+  }
+
   @Override
   public String toString() {
     StringBuilder sb = new StringBuilder();
@@ -96,11 +130,11 @@ public class DesiredConfig {
     if (null != hostOverrides && hostOverrides.size() > 0) {
       sb.append(", hosts=[");
       int i = 0;
-      for (String h : hostOverrides)
+      for (DesiredConfig.HostOverride h : hostOverrides)
       {
         if (i++ != 0)
           sb.append(",");
-        sb.append(h);
+        sb.append(h.getName());
       }
 
       sb.append(']');

+ 7 - 4
ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java

@@ -552,6 +552,7 @@ public class ClusterImpl implements Cluster {
     }
   }
 
+  @Override
   public Collection<Config> getAllConfigs() {
     readWriteLock.readLock().lock();
     try {
@@ -582,6 +583,7 @@ public class ClusterImpl implements Cluster {
     }
   }
 
+  @Override
   public void debugDump(StringBuilder sb) {
     loadServices();
     readWriteLock.readLock().lock();
@@ -719,7 +721,7 @@ public class ClusterImpl implements Cluster {
     }
 
     Collection<ClusterConfigMappingEntity> entities = clusterEntity.getConfigMappingEntities();
-    
+
     for (ClusterConfigMappingEntity e : entities) {
       if (e.isSelected() > 0 && e.getType().equals(config.getType())) {
         e.setSelected(0);
@@ -734,7 +736,7 @@ public class ClusterImpl implements Cluster {
     entity.setType(config.getType());
     entity.setVersion(config.getVersionTag());
     entities.add(entity);
-    
+
     clusterEntity.setConfigMappingEntities(entities);
 
     clusterDAO.merge(clusterEntity);
@@ -755,9 +757,10 @@ public class ClusterImpl implements Cluster {
             hostConfigMappingDAO.findSelectedHostsByType(clusterEntity.getClusterId().longValue(),
                 e.getType());
 
-        List<String> hosts = new ArrayList<String>();
+        List<DesiredConfig.HostOverride> hosts = new ArrayList<DesiredConfig.HostOverride>();
         for (HostConfigMappingEntity mappingEntity : hostMappings) {
-          hosts.add (mappingEntity.getHostName());
+          hosts.add (new DesiredConfig.HostOverride(mappingEntity.getHostName(),
+              mappingEntity.getVersion()));
         }
 
         c.setHostOverrides(hosts);

+ 17 - 5
ambari-server/src/test/java/org/apache/ambari/server/state/DesiredConfigTest.java

@@ -33,16 +33,28 @@ public class DesiredConfigTest {
     DesiredConfig dc = new DesiredConfig();
     dc.setServiceName("service");
     dc.setVersion("global");
-    
+
     Assert.assertEquals("Expected service 'service'", "service", dc.getServiceName());
     Assert.assertEquals("Expected version 'global'", "global", dc.getVersion());
     Assert.assertNull("Expected null host overrides", dc.getHostOverrides());
-    
-    List<String> hosts = Arrays.asList("h1", "h2", "h3");
+
+    List<DesiredConfig.HostOverride> hosts = Arrays.asList(
+        new DesiredConfig.HostOverride("h1", "v2"),
+        new DesiredConfig.HostOverride("h2", "v3"));
     dc.setHostOverrides(hosts);
-    
+
     Assert.assertNotNull("Expected host overrides to be set", dc.getHostOverrides());
     Assert.assertEquals("Expected host override equality", hosts, dc.getHostOverrides());
   }
-  
+
+  @Test
+  public void testHostOverride() throws Exception {
+    DesiredConfig.HostOverride override = new DesiredConfig.HostOverride("h1", "v1");
+
+    Assert.assertNotNull(override.getName());
+    Assert.assertNotNull(override.getVersionTag());
+    Assert.assertEquals("Expected override host 'h1'", "h1", override.getName());
+    Assert.assertEquals("Expected override version 'v1'", "v1", override.getVersionTag());
+  }
+
 }