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

ambari git commit: AMBARI-16096. Add show_available property to dry_run directive (ncole)

Repository: ambari
Updated Branches:
  refs/heads/trunk 962be15c7 -> 980420449


AMBARI-16096. Add show_available property to dry_run directive (ncole)


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

Branch: refs/heads/trunk
Commit: 980420449d7b31994f1e21f5959a78d239a4b819
Parents: 962be15
Author: Nate Cole <nc...@hortonworks.com>
Authored: Mon Apr 25 12:57:49 2016 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Tue Apr 26 09:20:43 2016 -0400

----------------------------------------------------------------------
 .../VersionDefinitionResourceProvider.java      | 20 ++++++--
 .../VersionDefinitionResourceProviderTest.java  | 54 +++++++++++++++++++-
 2 files changed, 68 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/98042044/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 a78af6e..94b9648 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
@@ -192,15 +192,16 @@ public class VersionDefinitionResourceProvider extends AbstractAuthorizedResourc
           VERSION_DEF_DEFINITION_URL));
     }
 
+    final String definitionUrl = (String) properties.get(VERSION_DEF_DEFINITION_URL);
+    final String definitionBase64 = (String) properties.get(VERSION_DEF_DEFINITION_BASE64);
+    final String definitionName = (String) properties.get(VERSION_DEF_AVAILABLE_DEFINITION);
+
     final boolean dryRun = request.isDryRunRequest();
 
     XmlHolder xmlHolder = createResources(new Command<XmlHolder>() {
       @Override
       public XmlHolder invoke() throws AmbariException {
 
-        String definitionUrl = (String) properties.get(VERSION_DEF_DEFINITION_URL);
-        String definitionBase64 = (String) properties.get(VERSION_DEF_DEFINITION_BASE64);
-        String definitionName = (String) properties.get(VERSION_DEF_AVAILABLE_DEFINITION);
 
         XmlHolder holder = null;
         if (null != definitionUrl) {
@@ -258,7 +259,9 @@ public class VersionDefinitionResourceProvider extends AbstractAuthorizedResourc
         VERSION_DEF_AVAILABLE_SERVICES,
         VERSION_DEF_STACK_SERVICES);
 
-      res = toResource(null, xmlHolder.xml, ids, false);
+      boolean fromAvailable = null != definitionName;
+
+      res = toResource(null, xmlHolder.xml, ids, fromAvailable);
 
       addSubresources(res, xmlHolder.entity);
     } else {
@@ -502,6 +505,15 @@ public class VersionDefinitionResourceProvider extends AbstractAuthorizedResourc
     holder.entity = entity;
   }
 
+  /**
+   * Converts a version definition to a resource
+   * @param id            the definition id
+   * @param xml           the version definition xml
+   * @param requestedIds  the requested ids
+   * @param fromAvailable if the resource should include the {@link #SHOW_AVAILABLE} property
+   * @return the resource
+   * @throws SystemException
+   */
   private Resource toResource(String id, VersionDefinitionXml xml, Set<String> requestedIds, boolean fromAvailable) throws SystemException {
 
     Resource resource = new ResourceImpl(Resource.Type.VersionDefinition);

http://git-wip-us.apache.org/repos/asf/ambari/blob/98042044/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 c9fa9a3..1117d24 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
@@ -319,8 +319,6 @@ public class VersionDefinitionResourceProviderTest {
     File file = new File("src/test/resources/version_definition_resource_provider.xml");
 
     final ResourceProvider versionProvider = new VersionDefinitionResourceProvider();
-    final ResourceProvider provider = injector.getInstance(ResourceProviderFactory.class)
-        .getRepositoryVersionResourceProvider();
 
     final Set<Map<String, Object>> propertySet = new LinkedHashSet<Map<String, Object>>();
     final Map<String, Object> properties = new LinkedHashMap<String, Object>();
@@ -342,9 +340,61 @@ public class VersionDefinitionResourceProviderTest {
 
     Assert.assertTrue(res.getPropertiesMap().containsKey("VersionDefinition"));
     Assert.assertEquals("2.2.0.8-5678", res.getPropertyValue("VersionDefinition/repository_version"));
+    Assert.assertNull(res.getPropertyValue("VersionDefinition/show_available"));
 
     Request getRequest = PropertyHelper.getReadRequest("VersionDefinition");
     Set<Resource> results = versionProvider.getResources(getRequest, null);
     Assert.assertEquals(0, results.size());
   }
+
+  @Test
+  public void testCreateDryRunByAvailable() throws Exception {
+    AmbariMetaInfo ami = injector.getInstance(AmbariMetaInfo.class);
+    // ensure that all of the latest repo retrieval tasks have completed
+    StackManager sm = ami.getStackManager();
+    int maxWait = 15000;
+    int waitTime = 0;
+    while (waitTime < maxWait && ! sm.haveAllRepoUrlsBeenResolved()) {
+      Thread.sleep(5);
+      waitTime += 5;
+    }
+
+    if (waitTime >= maxWait) {
+      fail("Latest Repo tasks did not complete");
+    }
+
+    Authentication authentication = TestAuthenticationFactory.createAdministrator();
+    SecurityContextHolder.getContext().setAuthentication(authentication);
+
+    final ResourceProvider versionProvider = new VersionDefinitionResourceProvider();
+
+    Request getRequest = PropertyHelper.getReadRequest("VersionDefinition");
+    Set<Resource> results = versionProvider.getResources(getRequest, null);
+    Assert.assertEquals(0, results.size());
+
+    Map<String, Object> createMap = new HashMap<>();
+    createMap.put("VersionDefinition/available", "HDP-2.2.0-2.2.1.0");
+
+    Map<String, String> infoProps = Collections.singletonMap(Request.DIRECTIVE_DRY_RUN, "true");
+
+    Request createRequest = PropertyHelper.getCreateRequest(Collections.singleton(createMap), infoProps);
+    RequestStatus status = versionProvider.createResources(createRequest);
+
+    Assert.assertEquals(1, status.getAssociatedResources().size());
+
+    Resource res = status.getAssociatedResources().iterator().next();
+    // because we aren't using subresources, but return subresource-like properties, the key is an empty string
+    Assert.assertTrue(res.getPropertiesMap().containsKey(""));
+    Map<String, Object> resMap = res.getPropertiesMap().get("");
+    Assert.assertTrue(resMap.containsKey("operating_systems"));
+
+    Assert.assertTrue(res.getPropertiesMap().containsKey("VersionDefinition"));
+    Assert.assertEquals("2.2.1.0", res.getPropertyValue("VersionDefinition/repository_version"));
+    Assert.assertNotNull(res.getPropertyValue("VersionDefinition/show_available"));
+
+    getRequest = PropertyHelper.getReadRequest("VersionDefinition");
+    results = versionProvider.getResources(getRequest, null);
+    Assert.assertEquals(0, results.size());
+
+  }
 }