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());
+
+ }
}