You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by aj...@apache.org on 2016/04/14 22:53:10 UTC

ambari git commit: AMBARI-15870. Add dryrun method on request object (ajit)

Repository: ambari
Updated Branches:
  refs/heads/trunk 6bd2de218 -> f2b3c2a76


AMBARI-15870. Add dryrun method on request object (ajit)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f2b3c2a7
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f2b3c2a7
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f2b3c2a7

Branch: refs/heads/trunk
Commit: f2b3c2a76f24b9509e21eb8c7f435a5694c268cc
Parents: 6bd2de2
Author: Ajit Kumar <aj...@apache.org>
Authored: Thu Apr 14 12:57:24 2016 -0700
Committer: Ajit Kumar <aj...@apache.org>
Committed: Thu Apr 14 13:52:46 2016 -0700

----------------------------------------------------------------------
 .../VersionDefinitionResourceDefinition.java    |  3 +-
 .../server/controller/internal/RequestImpl.java | 40 +++++++++++---------
 .../VersionDefinitionResourceProvider.java      | 14 +------
 .../ambari/server/controller/spi/Request.java   | 22 +++++++----
 .../controller/internal/RequestImplTest.java    | 15 +++++++-
 .../internal/RequestResourceProviderTest.java   |  2 +
 .../VersionDefinitionResourceProviderTest.java  |  2 +-
 7 files changed, 57 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/f2b3c2a7/ambari-server/src/main/java/org/apache/ambari/server/api/resources/VersionDefinitionResourceDefinition.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/VersionDefinitionResourceDefinition.java b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/VersionDefinitionResourceDefinition.java
index 12b91e3..30afa69 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/VersionDefinitionResourceDefinition.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/VersionDefinitionResourceDefinition.java
@@ -22,6 +22,7 @@ import java.util.Collections;
 import java.util.Set;
 
 import org.apache.ambari.server.controller.internal.VersionDefinitionResourceProvider;
+import org.apache.ambari.server.controller.spi.Request;
 import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.spi.Resource.Type;
 
@@ -51,7 +52,7 @@ public class VersionDefinitionResourceDefinition extends BaseResourceDefinition
 
   @Override
   public Collection<String> getCreateDirectives() {
-    return Collections.singleton(VersionDefinitionResourceProvider.DIRECTIVE_DRY_RUN);
+    return Collections.singleton(Request.DIRECTIVE_DRY_RUN);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/f2b3c2a7/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestImpl.java
index f27f621..36ad4c3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestImpl.java
@@ -18,13 +18,12 @@
 
 package org.apache.ambari.server.controller.internal;
 
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
 import org.apache.ambari.server.controller.spi.PageRequest;
 import org.apache.ambari.server.controller.spi.Request;
 import org.apache.ambari.server.controller.spi.ResourceProvider;
@@ -52,25 +51,29 @@ public class RequestImpl implements Request {
    * Request Info properties.  These are properties that are specific to the request
    * but not to any resource.
    */
-  private Map<String, String> requestInfoProperties;
+  private final Map<String, String> requestInfoProperties;
 
   /**
    * Map of property to temporal info.
    */
-  private Map<String, TemporalInfo> m_mapTemporalInfo = new HashMap<String, TemporalInfo>();
+  private final Map<String, TemporalInfo> m_mapTemporalInfo;
 
   /**
    * An optional page request which a concrete {@link ResourceProvider} can use
    * to return a slice of results.
    */
-  private PageRequest m_pageRequest = null;
+  private final PageRequest m_pageRequest;
 
   /**
    * An optional sort request which a concrete {@link ResourceProvider} can use
    * to return sorted results.
    */
-  private SortRequest m_sortRequest = null;
+  private final SortRequest m_sortRequest;
 
+  /**
+   * Is it a dry run request?
+   */
+  private final boolean dryRun;
 
   // ----- Constructors ------------------------------------------------------
 
@@ -100,22 +103,22 @@ public class RequestImpl implements Request {
   public RequestImpl(Set<String> propertyIds, Set<Map<String, Object>> properties,
                      Map<String, String> requestInfoProperties, Map<String, TemporalInfo> mapTemporalInfo,
                      SortRequest sortRequest, PageRequest pageRequest) {
+
     this.propertyIds = propertyIds == null ?
-        Collections.unmodifiableSet(new HashSet<String>()) :
-        Collections.unmodifiableSet(propertyIds);
+        ImmutableSet.<String>of() : ImmutableSet.copyOf(propertyIds);
 
     this.properties = properties == null ?
-        Collections.unmodifiableSet(new HashSet<Map<String, Object>>()) :
-        Collections.unmodifiableSet(properties);
+        ImmutableSet.<Map<String,Object>>of() : ImmutableSet.copyOf(properties);
 
     this.requestInfoProperties = requestInfoProperties == null ?
-        Collections.unmodifiableMap(new HashMap<String, String>()) :
-        Collections.unmodifiableMap(requestInfoProperties);
+        ImmutableMap.<String, String>of() : ImmutableMap.copyOf(requestInfoProperties);
 
-    setTemporalInfo(mapTemporalInfo);
 
+    m_mapTemporalInfo = mapTemporalInfo;
     m_sortRequest = sortRequest;
     m_pageRequest = pageRequest;
+
+    this.dryRun = this.requestInfoProperties.containsKey(DIRECTIVE_DRY_RUN) && Boolean.parseBoolean(this.requestInfoProperties.get(DIRECTIVE_DRY_RUN));
   }
 
   // ----- Request -----------------------------------------------------------
@@ -140,10 +143,6 @@ public class RequestImpl implements Request {
     return m_mapTemporalInfo == null ? null : m_mapTemporalInfo.get(id);
   }
 
-  private void setTemporalInfo(Map<String, TemporalInfo> mapTemporalInfo) {
-    m_mapTemporalInfo = mapTemporalInfo;
-  }
-
   @Override
   public PageRequest getPageRequest() {
     return m_pageRequest;
@@ -155,6 +154,11 @@ public class RequestImpl implements Request {
   }
 
   @Override
+  public boolean isDryRunRequest() {
+    return dryRun;
+  }
+
+  @Override
   public boolean equals(Object o) {
     if (this == o) {
       return true;

http://git-wip-us.apache.org/repos/asf/ambari/blob/f2b3c2a7/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProvider.java
index f8f8290..97eda0a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProvider.java
@@ -99,8 +99,6 @@ public class VersionDefinitionResourceProvider extends AbstractAuthorizedResourc
   protected static final String VERSION_DEF_STACK_SERVICES           = "VersionDefinition/stack_services";
   protected static final String SHOW_AVAILABLE                       = "VersionDefinition/show_available";
 
-  public static final String DIRECTIVE_DRY_RUN                       = "dry_run";
-
   public static final String SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID  = new OperatingSystemResourceDefinition().getPluralName();
 
   @Inject
@@ -193,14 +191,7 @@ public class VersionDefinitionResourceProvider extends AbstractAuthorizedResourc
           VERSION_DEF_DEFINITION_URL));
     }
 
-    Map<String, String> requestInfo = request.getRequestInfoProperties();
-
-    final boolean dryRun;
-    if (requestInfo.containsKey(DIRECTIVE_DRY_RUN)) {
-      dryRun = Boolean.parseBoolean(requestInfo.get(DIRECTIVE_DRY_RUN));
-    } else {
-      dryRun = false;
-    }
+    final boolean dryRun = request.isDryRunRequest();
 
     XmlHolder xmlHolder = createResources(new Command<XmlHolder>() {
       @Override
@@ -357,7 +348,6 @@ public class VersionDefinitionResourceProvider extends AbstractAuthorizedResourc
 
   /**
    * In the case of a patch, check if there is a parent repo.
-   * @param entity the entity to check
    */
   private void checkForParent(XmlHolder holder) throws AmbariException {
     RepositoryVersionEntity entity = holder.entity;
@@ -486,8 +476,6 @@ public class VersionDefinitionResourceProvider extends AbstractAuthorizedResourc
   /**
    * Transforms a XML version defintion to an entity
    *
-   * @param definitionUrl the String URL for loading
-   * @return constructed entity
    * @throws AmbariException if some properties are missing or json has incorrect structure
    */
   protected void toRepositoryVersionEntity(XmlHolder holder) throws AmbariException {

http://git-wip-us.apache.org/repos/asf/ambari/blob/f2b3c2a7/ambari-server/src/main/java/org/apache/ambari/server/controller/spi/Request.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/spi/Request.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/spi/Request.java
index 50eed9a..f8f2e96 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/spi/Request.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/spi/Request.java
@@ -29,7 +29,9 @@ public interface Request {
   /**
    * Constant for request info property which contains the raw request body.
    */
-  public static final String REQUEST_INFO_BODY_PROPERTY = "RAW_REQUEST_BODY";
+  String REQUEST_INFO_BODY_PROPERTY = "RAW_REQUEST_BODY";
+
+  String DIRECTIVE_DRY_RUN = "dry_run";
 
   /**
    * Get the set of property ids being requested.  Used for requests to get
@@ -38,7 +40,7 @@ public interface Request {
    *
    * @return the set of property ids being requested
    */
-  public Set<String> getPropertyIds();
+  Set<String> getPropertyIds();
 
   /**
    * Get the property values of the request.  Used
@@ -49,13 +51,13 @@ public interface Request {
    *
    * @return the set of properties being requested
    */
-  public Set<Map<String, Object>> getProperties();
+  Set<Map<String, Object>> getProperties();
 
   /**
    * Get any request info properties of the request.  These are optional properties
    * that are specific to the request but not related to any resource.
    */
-  public Map<String, String> getRequestInfoProperties();
+  Map<String, String> getRequestInfoProperties();
 
   /**
    * Get the {@link TemporalInfo temporal information} for the given property
@@ -64,7 +66,7 @@ public interface Request {
    * @param id the property id
    * @return the temporal information for the given property id; null if noe exists
    */
-  public TemporalInfo getTemporalInfo(String id);
+  TemporalInfo getTemporalInfo(String id);
 
   /**
    * Obtain the pagination request information. This structure can be used for
@@ -73,7 +75,7 @@ public interface Request {
    *
    * @return the page request information.
    */
-  public PageRequest getPageRequest();
+  PageRequest getPageRequest();
 
   /**
    * Obtain information to order the results by. This structure can be used for
@@ -82,5 +84,11 @@ public interface Request {
    *
    * @return the sort request information.
    */
-  public SortRequest getSortRequest();
+  SortRequest getSortRequest();
+
+  /**
+   * Is this a dry run request.
+   * @return true - if request is dry run request, false otherwise.
+   */
+  boolean isDryRunRequest();
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/f2b3c2a7/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestImplTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestImplTest.java
index 93fe36f..e1ebc19 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestImplTest.java
@@ -18,7 +18,9 @@
 
 package org.apache.ambari.server.controller.internal;
 
+import java.util.Collections;
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 
 import junit.framework.Assert;
@@ -33,7 +35,7 @@ import org.junit.Test;
  */
 public class RequestImplTest {
 
-  private static final Set<String> propertyIds = new HashSet<String>();
+  private static final Set<String> propertyIds = new HashSet<>();
 
   static {
     propertyIds.add(PropertyHelper.getPropertyId("c1", "p1"));
@@ -258,4 +260,15 @@ public class RequestImplTest {
     Assert.assertTrue(validPropertyIds.contains("StackServiceComponents/is_master"));
     Assert.assertTrue(validPropertyIds.contains("StackServiceComponents/is_client"));
   }
+
+  @Test
+  public void testDryRunRequest() {
+    Request dryRunRequest = PropertyHelper.getCreateRequest(Collections.<Map<String,Object>>emptySet(), Collections.singletonMap(Request.DIRECTIVE_DRY_RUN, "true"));
+    Request nonDryRunReqest1 = PropertyHelper.getCreateRequest(Collections.<Map<String,Object>>emptySet(), Collections.singletonMap(Request.DIRECTIVE_DRY_RUN, "false"));
+    Request nonDryRunReqest2 = PropertyHelper.getCreateRequest(Collections.<Map<String,Object>>emptySet(), Collections.<String, String>emptyMap());
+
+    Assert.assertTrue(dryRunRequest.isDryRunRequest());
+    Assert.assertFalse(nonDryRunReqest1.isDryRunRequest());
+    Assert.assertFalse(nonDryRunReqest2.isDryRunRequest());
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/f2b3c2a7/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
index ea4afde..42e75a7 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
@@ -1085,12 +1085,14 @@ public class RequestResourceProviderTest {
     // Both action and command are specified
     requestInfoProperties.put(RequestResourceProvider.COMMAND_ID, "HDFS_SERVICE_CHECK");
     requestInfoProperties.put(RequestResourceProvider.ACTION_ID, "a1");
+    request = PropertyHelper.getCreateRequest(propertySet, requestInfoProperties);
     try {
       provider.createResources(request);
     } catch (UnsupportedOperationException ex) {
       Assert.assertTrue(ex.getMessage().contains("Both command and action cannot be specified"));
     }
     requestInfoProperties.remove(RequestResourceProvider.ACTION_ID);
+    request = PropertyHelper.getCreateRequest(propertySet, requestInfoProperties);
 
     provider.createResources(request);
     Assert.assertTrue(actionRequest.hasCaptured());

http://git-wip-us.apache.org/repos/asf/ambari/blob/f2b3c2a7/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProviderTest.java
index 633815e..3637cab 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProviderTest.java
@@ -328,7 +328,7 @@ public class VersionDefinitionResourceProviderTest {
         file.toURI().toURL().toString());
     propertySet.add(properties);
 
-    Map<String, String> info = Collections.singletonMap(VersionDefinitionResourceProvider.DIRECTIVE_DRY_RUN, "true");
+    Map<String, String> info = Collections.singletonMap(Request.DIRECTIVE_DRY_RUN, "true");
 
     final Request createRequest = PropertyHelper.getCreateRequest(propertySet, info);
     RequestStatus status = versionProvider.createResources(createRequest);