Return-Path: X-Original-To: apmail-ambari-commits-archive@www.apache.org Delivered-To: apmail-ambari-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0BB0D17F9E for ; Thu, 23 Oct 2014 05:33:07 +0000 (UTC) Received: (qmail 88074 invoked by uid 500); 23 Oct 2014 05:33:06 -0000 Delivered-To: apmail-ambari-commits-archive@ambari.apache.org Received: (qmail 88045 invoked by uid 500); 23 Oct 2014 05:33:06 -0000 Mailing-List: contact commits-help@ambari.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ambari-dev@ambari.apache.org Delivered-To: mailing list commits@ambari.apache.org Received: (qmail 88035 invoked by uid 99); 23 Oct 2014 05:33:06 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Oct 2014 05:33:06 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 9EA3794481C; Thu, 23 Oct 2014 05:33:06 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: srimanth@apache.org To: commits@ambari.apache.org Message-Id: <572bb1da76254bc7bd54a2a2e921de35@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: git commit: AMBARI-7914. Slider View: Need API to verify using slider-client if application name can be used (srimanth) Date: Thu, 23 Oct 2014 05:33:06 +0000 (UTC) Repository: ambari Updated Branches: refs/heads/branch-1.7.0 4b2c827c5 -> fbb17091e AMBARI-7914. Slider View: Need API to verify using slider-client if application name can be used (srimanth) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/fbb17091 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/fbb17091 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/fbb17091 Branch: refs/heads/branch-1.7.0 Commit: fbb17091ee83de2d8cb9ea22d93d7798347446f4 Parents: 4b2c827 Author: Srimanth Gunturi Authored: Wed Oct 22 19:43:19 2014 -0700 Committer: Srimanth Gunturi Committed: Wed Oct 22 19:43:19 2014 -0700 ---------------------------------------------------------------------- .../view/slider/SliderAppsViewController.java | 2 ++ .../slider/SliderAppsViewControllerImpl.java | 19 +++++++++++++++++- .../view/slider/rest/SliderAppsResource.java | 21 ++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/fbb17091/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewController.java ---------------------------------------------------------------------- diff --git a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewController.java b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewController.java index 2d82bfb..4cdecf7 100644 --- a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewController.java +++ b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewController.java @@ -104,4 +104,6 @@ public interface SliderAppsViewController { public void flexApp(String appId, Map componentsMap) throws YarnException, IOException, InterruptedException; + + public boolean appExists(String string) throws IOException, InterruptedException, YarnException; } http://git-wip-us.apache.org/repos/asf/ambari/blob/fbb17091/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java ---------------------------------------------------------------------- diff --git a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java index 88afbb8..1c87d57 100644 --- a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java +++ b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java @@ -506,6 +506,23 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController { } @Override + public boolean appExists(final String appName) throws IOException, InterruptedException, YarnException { + return invokeSliderClientRunnable(new SliderClientContextRunnable() { + @Override + public Boolean run(SliderClient sliderClient) throws YarnException, IOException { + if (appName != null) { + try { + return sliderClient.actionExists(appName, false) == SliderClient.EXIT_SUCCESS; + } catch (UnknownApplicationInstanceException e) { + return Boolean.FALSE; + } + } + return Boolean.FALSE; + } + }); + } + + @Override public SliderApp getSliderApp(final String applicationId, final Set properties) throws YarnException, IOException, InterruptedException { return invokeSliderClientRunnable(new SliderClientContextRunnable() { @@ -949,7 +966,7 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController { String key = e.getKey(); String valueString = e.getValue().getAsString(); if ("application.def".equals(key)) { - valueString = String.format(".slider/package/%1$s/%2$s", application.getName(), appZip.getName()); + valueString = String.format(".slider/package/%s/%s", application.getName(), appZip.getName()); } configsMap.put(key, valueString); } http://git-wip-us.apache.org/repos/asf/ambari/blob/fbb17091/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/SliderAppsResource.java ---------------------------------------------------------------------- diff --git a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/SliderAppsResource.java b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/SliderAppsResource.java index 39f3184..9d17bce 100644 --- a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/SliderAppsResource.java +++ b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/SliderAppsResource.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -36,7 +37,9 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.UriInfo; import org.apache.ambari.view.ViewResourceHandler; @@ -61,6 +64,24 @@ public class SliderAppsResource { @GET @Produces({ MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON }) public Response getApps(@Context HttpHeaders headers, @Context UriInfo uri) { + MultivaluedMap queryParameters = uri.getQueryParameters(); + if (queryParameters != null && queryParameters.containsKey("validateAppName")) { + List appNames = queryParameters.get("validateAppName"); + if (appNames.size() > 0) { + try { + if (sliderAppsViewController.appExists(appNames.get(0))) { + return Response.status(Status.CONFLICT).build(); + } + } catch (IOException e) { + logger.warn("Unable to validate cluster name", e); + } catch (InterruptedException e) { + logger.warn("Unable to validate cluster name", e); + } catch (YarnException e) { + logger.warn("Unable to validate cluster name", e); + } + return Response.ok().build(); + } + } return resourceHandler.handleRequest(headers, uri, null); }