You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2013/03/06 02:27:02 UTC

svn commit: r1453117 - in /incubator/ambari/trunk: ./ ambari-server/src/main/java/org/apache/ambari/server/api/services/ ambari-server/src/main/java/org/apache/ambari/server/controller/ ambari-server/src/main/java/org/apache/ambari/server/controller/in...

Author: swagle
Date: Wed Mar  6 01:27:01 2013
New Revision: 1453117

URL: http://svn.apache.org/r1453117
Log:
AMBARI-1554. API support for current version of Stack and available versions to upgrade . (swagle)

Added:
    incubator/ambari/trunk/ambari-server/src/test/resources/stacks/HDP/0.1/metainfo.xml
Modified:
    incubator/ambari/trunk/CHANGES.txt
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/StackVersionResponse.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackVersionResourceProvider.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java
    incubator/ambari/trunk/ambari-server/src/main/resources/properties.json
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java

Modified: incubator/ambari/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1453117&r1=1453116&r2=1453117&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Wed Mar  6 01:27:01 2013
@@ -12,6 +12,9 @@ Trunk (unreleased changes):
 
  NEW FEATURES
 
+ AMBARI-1554. API support for current version of Stack and available versions 
+ to upgrade (Sumit Mohanty via swagle) 
+
  AMBARI-1511. Add ability to override configurations at the host level (ncole)
 
  AMBARI-1550. Modify existing puppet manifests to allow installing/configuring 

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java?rev=1453117&r1=1453116&r2=1453117&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java Wed Mar  6 01:27:01 2013
@@ -54,6 +54,10 @@ public class AmbariMetaInfo {
     private File stackRoot;
     private final static Logger LOG = LoggerFactory
             .getLogger(AmbariMetaInfo.class);
+    
+    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 SERVICES_FOLDER_NAME = "services";
     private static final String SERVICE_METAINFO_FILE_NAME = "metainfo.xml";
@@ -90,6 +94,7 @@ public class AmbariMetaInfo {
         return true;
       }
     };
+    
 
     /**
      * Ambari Meta Info Object
@@ -603,10 +608,8 @@ public class AmbariMetaInfo {
             for (File stack : concretStacks) {
                 if (stack.isFile())
                     continue;
-                StackInfo stackInfo = new StackInfo();
-                stackInfo.setName(stackFolder.getName());
-                stackInfo.setVersion(stack.getName());
 
+                StackInfo stackInfo = getStackInfo(stack);
                 if (LOG.isDebugEnabled()) {
                     LOG.debug("Adding new stack to known stacks"
                             + ", stackName=" + stackFolder.getName()
@@ -673,6 +676,54 @@ public class AmbariMetaInfo {
         }
     }
 
+  private StackInfo getStackInfo(File stackVersionFolder) {
+
+    StackInfo stackInfo = new StackInfo();
+
+    stackInfo.setName(stackVersionFolder.getParentFile().getName());
+    stackInfo.setVersion(stackVersionFolder.getName());
+
+    // Get metainfo from file
+    File stackMetainfoFile = new File(stackVersionFolder.getAbsolutePath()
+        + File.separator + STACK_METAINFO_FILE_NAME);
+
+    if (stackMetainfoFile.exists()) {
+      if (LOG.isDebugEnabled()) {
+        LOG.debug("Reading stack version metainfo from file "
+            + stackMetainfoFile.getAbsolutePath());
+      }
+
+      try {
+        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+        Document doc = dBuilder.parse(stackMetainfoFile);
+        doc.getDocumentElement().normalize();
+
+        NodeList stackNodes = doc
+            .getElementsByTagName(STACK_XML_MAIN_BLOCK_NAME);
+
+        for (int index = 0; index < stackNodes.getLength(); index++) {
+
+          Node node = stackNodes.item(index);
+          
+          if (node.getNodeType() == Node.ELEMENT_NODE) {
+            Element property = (Element) node;
+
+            stackInfo.setMinUpgradeVersion(getTagValue(
+                STACK_XML_PROPERTY_UPGRADE, property));
+          }
+        }
+      } catch (Exception e) {
+        e.printStackTrace();
+        return null;
+      }
+
+    }
+
+    return stackInfo;
+
+  }
+
     private List<RepositoryInfo> getRepository(File repositoryFile) throws ParserConfigurationException, IOException, SAXException {
 
         List<RepositoryInfo> repositorysInfo = new ArrayList<RepositoryInfo>();

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/StackVersionResponse.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/StackVersionResponse.java?rev=1453117&r1=1453116&r2=1453117&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/StackVersionResponse.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/StackVersionResponse.java Wed Mar  6 01:27:01 2013
@@ -25,10 +25,12 @@ import org.apache.ambari.server.state.Re
 public class StackVersionResponse {
 
   private String stackVersion;
+  private String minUpgradeVersion;
   private List<RepositoryInfo> repositories;
 
-  public StackVersionResponse(String stackVersion) {
+  public StackVersionResponse(String stackVersion, String minUpgradeVersion) {
     setStackVersion(stackVersion);
+    setMinUpgradeVersion(minUpgradeVersion);
   }
 
   public String getStackVersion() {
@@ -46,4 +48,12 @@ public class StackVersionResponse {
   public void setRepositories(List<RepositoryInfo> repositories) {
     this.repositories = repositories;
   }
+
+  public String getMinUpgradeVersion() {
+    return minUpgradeVersion;
+  }
+
+  public void setMinUpgradeVersion(String minUpgradeVersion) {
+    this.minUpgradeVersion = minUpgradeVersion;
+  }
 }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackVersionResourceProvider.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackVersionResourceProvider.java?rev=1453117&r1=1453116&r2=1453117&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackVersionResourceProvider.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackVersionResourceProvider.java Wed Mar  6 01:27:01 2013
@@ -52,7 +52,10 @@ public class StackVersionResourceProvide
       .getPropertyId("Versions", "stack_version");
 
   private static final String STACK_NAME_PROPERTY_ID = PropertyHelper
-      .getPropertyId("Versions", "stack_name");;
+      .getPropertyId("Versions", "stack_name");
+
+  private static final String STACK_MIN_VERSION_PROPERTY_ID = PropertyHelper
+      .getPropertyId("Versions", "min_upgrade_version");
 
   private static Set<String> pkPropertyIds = new HashSet<String>(
       Arrays.asList(new String[] { STACK_NAME_PROPERTY_ID,
@@ -86,6 +89,9 @@ public class StackVersionResourceProvide
 
       setResourceProperty(resource, STACK_VERSION_PROPERTY_ID,
           response.getStackVersion(), requestedIds);
+      
+      setResourceProperty(resource, STACK_MIN_VERSION_PROPERTY_ID,
+          response.getMinUpgradeVersion(), requestedIds);
 
       resources.add(resource);
     }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java?rev=1453117&r1=1453116&r2=1453117&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java Wed Mar  6 01:27:01 2013
@@ -26,6 +26,7 @@ import org.apache.ambari.server.controll
 public class StackInfo {
   private String name;
   private String version;
+  private String minUpgradeVersion;
   private List<RepositoryInfo> repositories;
   private List<ServiceInfo> services;
 
@@ -105,6 +106,14 @@ public class StackInfo {
 
   public StackVersionResponse convertToResponse() {
 
-    return new StackVersionResponse(getVersion());
+    return new StackVersionResponse(getVersion(), getMinUpgradeVersion());
+  }
+
+  public String getMinUpgradeVersion() {
+    return minUpgradeVersion;
+  }
+
+  public void setMinUpgradeVersion(String minUpgradeVersion) {
+    this.minUpgradeVersion = minUpgradeVersion;
   }
 }

Modified: incubator/ambari/trunk/ambari-server/src/main/resources/properties.json
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/resources/properties.json?rev=1453117&r1=1453116&r2=1453117&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/resources/properties.json (original)
+++ incubator/ambari/trunk/ambari-server/src/main/resources/properties.json Wed Mar  6 01:27:01 2013
@@ -107,6 +107,7 @@
      "StackVersion":[
         "Versions/stack_name",
         "Versions/stack_version",
+        "Versions/min_upgrade_version",
         "_"
     ],
     

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java?rev=1453117&r1=1453116&r2=1453117&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java Wed Mar  6 01:27:01 2013
@@ -55,6 +55,7 @@ public class AmbariMetaInfoTest {
 
   private static String STACK_NAME_HDP = "HDP";
   private static String STACK_VERSION_HDP = "0.1";
+  private static final String STACK_MINIMAL_VERSION_HDP = "0.0";
   private static String SERVICE_NAME_HDFS = "HDFS";
   private static String SERVICE_COMPONENT_NAME = "NAMENODE";
   private static final String OS_TYPE = "centos5";
@@ -71,6 +72,7 @@ public class AmbariMetaInfoTest {
   private AmbariMetaInfo metaInfo = null;
   private final static Logger LOG =
       LoggerFactory.getLogger(AmbariMetaInfoTest.class);
+
   
 
   @Rule
@@ -336,6 +338,7 @@ public class AmbariMetaInfoTest {
     StackInfo stackInfo = metaInfo.getStackInfo(STACK_NAME_HDP, STACK_VERSION_HDP);
     Assert.assertEquals(stackInfo.getName(), STACK_NAME_HDP);
     Assert.assertEquals(stackInfo.getVersion(), STACK_VERSION_HDP);
+    Assert.assertEquals(stackInfo.getMinUpgradeVersion(), STACK_MINIMAL_VERSION_HDP);
     try {
       metaInfo.getStackInfo(STACK_NAME_HDP, NON_EXT_VALUE);
     } catch (StackAccessException e) {
@@ -375,13 +378,12 @@ public class AmbariMetaInfoTest {
     Assert.assertEquals(operatingSystem.getOsType(), OS_TYPE);
     
     
-    Throwable ex = null;
     try {
       metaInfo.getOperatingSystem(STACK_NAME_HDP, STACK_VERSION_HDP, NON_EXT_VALUE);
     } catch (StackAccessException e) {
-      ex = e;
+      Assert.assertTrue(e instanceof StackAccessException);
     }
-    Assert.assertTrue(ex instanceof StackAccessException);
+    
   }
   
 }

Added: incubator/ambari/trunk/ambari-server/src/test/resources/stacks/HDP/0.1/metainfo.xml
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/resources/stacks/HDP/0.1/metainfo.xml?rev=1453117&view=auto
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/resources/stacks/HDP/0.1/metainfo.xml (added)
+++ incubator/ambari/trunk/ambari-server/src/test/resources/stacks/HDP/0.1/metainfo.xml Wed Mar  6 01:27:01 2013
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<metainfo>
+    <versions>
+	  <upgrade>0.0</upgrade>
+    </versions>
+</metainfo>