You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jl...@apache.org on 2017/05/19 03:35:35 UTC
[12/13] ambari git commit: AMBARI-21055: Search from Storm Ambari
View Broken. (Sanket Shah via Sriharsha Chintalapani)
AMBARI-21055: Search from Storm Ambari View Broken. (Sanket Shah via
Sriharsha Chintalapani)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/71ed2814
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/71ed2814
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/71ed2814
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 71ed28140cd5d91fedb4e1403a8fa9aa3482ccf0
Parents: 3499004
Author: Sriharsha Chintalapani <ha...@hortonworks.com>
Authored: Thu May 18 14:04:38 2017 -0700
Committer: Sriharsha Chintalapani <ha...@hortonworks.com>
Committed: Thu May 18 14:04:38 2017 -0700
----------------------------------------------------------------------
.../ambari/storm/StormDetailsServlet.java | 81 ++++++++++++++++++++
.../storm/src/main/resources/WEB-INF/web.xml | 8 ++
.../resources/scripts/components/SearchLogs.jsx | 38 +++++----
3 files changed, 110 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/71ed2814/contrib/views/storm/src/main/java/org/apache/ambari/storm/StormDetailsServlet.java
----------------------------------------------------------------------
diff --git a/contrib/views/storm/src/main/java/org/apache/ambari/storm/StormDetailsServlet.java b/contrib/views/storm/src/main/java/org/apache/ambari/storm/StormDetailsServlet.java
new file mode 100644
index 0000000..42c3277
--- /dev/null
+++ b/contrib/views/storm/src/main/java/org/apache/ambari/storm/StormDetailsServlet.java
@@ -0,0 +1,81 @@
+/**
+ * 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.
+ */
+
+package org.apache.ambari.view.storm;
+
+import org.apache.ambari.view.ViewContext;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+import java.io.*;
+
+/**
+ * Simple servlet for proxying requests with doAs impersonation.
+ */
+public class StormDetailsServlet extends HttpServlet {
+
+ private ViewContext viewContext;
+ private static final String STORM_HOST = "storm.host";
+ private static final String STORM_PORT = "storm.port";
+ private static final String STORM_SSL_ENABLED = "storm.sslEnabled";
+ private String stormURL;
+
+ @Override
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+
+ ServletContext context = config.getServletContext();
+ viewContext = (ViewContext) context.getAttribute(ViewContext.CONTEXT_ATTRIBUTE);
+ String sslEnabled = viewContext.getProperties().get(STORM_SSL_ENABLED);
+ String hostname = viewContext.getProperties().get(STORM_HOST);
+ String port = viewContext.getProperties().get(STORM_PORT);
+ stormURL = (sslEnabled.equals("true") ? "https" : "http") + "://" + hostname + ":" + port;
+ }
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ String hostDetails = "{\"hostdata\":\""+stormURL+"\"}";
+ InputStream resultStream = new ByteArrayInputStream(hostDetails.getBytes(StandardCharsets.UTF_8));
+ this.setResponse(request, response, resultStream);
+ }
+
+ /**
+ * Set response to the get/post request
+ * @param request HttpServletRequest
+ * @param response HttpServletResponse
+ * @param resultStream InputStream
+ */
+ public void setResponse(HttpServletRequest request, HttpServletResponse response, InputStream resultStream) throws IOException{
+ Scanner scanner = new Scanner(resultStream).useDelimiter("\\A");
+ String result = scanner.hasNext() ? scanner.next() : "";
+ Boolean notFound = result == "" || result.indexOf("\"exception\":\"NotFoundException\"") != -1;
+ response.setContentType(request.getContentType());
+ response.setStatus(notFound ? HttpServletResponse.SC_NOT_FOUND : HttpServletResponse.SC_OK);
+ PrintWriter writer = response.getWriter();
+ writer.print(result);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/71ed2814/contrib/views/storm/src/main/resources/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/contrib/views/storm/src/main/resources/WEB-INF/web.xml b/contrib/views/storm/src/main/resources/WEB-INF/web.xml
index e406de1..cc89ac7 100644
--- a/contrib/views/storm/src/main/resources/WEB-INF/web.xml
+++ b/contrib/views/storm/src/main/resources/WEB-INF/web.xml
@@ -30,8 +30,16 @@ limitations under the License. Kerberos, LDAP, Custom. Binary/Htt
<servlet-name>ProxyServlet</servlet-name>
<servlet-class>org.apache.ambari.view.storm.ProxyServlet</servlet-class>
</servlet>
+ <servlet>
+ <servlet-name>StormDetailsServlet</servlet-name>
+ <servlet-class>org.apache.ambari.view.storm.StormDetailsServlet</servlet-class>
+ </servlet>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>/proxy</url-pattern>
</servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>StormDetailsServlet</servlet-name>
+ <url-pattern>/storm_details</url-pattern>
+ </servlet-mapping>
</web-app>
http://git-wip-us.apache.org/repos/asf/ambari/blob/71ed2814/contrib/views/storm/src/main/resources/scripts/components/SearchLogs.jsx
----------------------------------------------------------------------
diff --git a/contrib/views/storm/src/main/resources/scripts/components/SearchLogs.jsx b/contrib/views/storm/src/main/resources/scripts/components/SearchLogs.jsx
index b37170c..1581a16 100644
--- a/contrib/views/storm/src/main/resources/scripts/components/SearchLogs.jsx
+++ b/contrib/views/storm/src/main/resources/scripts/components/SearchLogs.jsx
@@ -25,7 +25,7 @@ define(['react',
getInitialState: function() {
return null;
},
- render: function() {
+ render: function() {
return (
<div className="col-md-3 pull-right searchbar">
<div className="input-group">
@@ -60,26 +60,30 @@ define(['react',
var searchBoxEl = document.getElementById('searchBox');
var searchArchivedLogsEl = document.getElementById('searchArchivedLogs');
var deepSearchEl = document.getElementById('deepSearch');
+ var topologyId = this.props.id;
- var url = App.baseURL.split('?url=')[1]+'/';
- if(deepSearchEl.checked == true){
- url += "deep_search_result.html";
- }else{
- url += "search_result.html";
- }
- url += '?search='+searchBoxEl.value+'&id='+ this.props.id +'&count=1';
- if(searchArchivedLogsEl.checked == true){
+ $.get(App.baseURL.replace('proxy?url=', 'storm_details'))
+ .success(function(response){
+ var url = JSON.parse(response).hostdata+'/';
if(deepSearchEl.checked == true){
- url += "&search-archived=on";
+ url += "deep_search_result.html";
}else{
- url += "&searchArchived=checked";
+ url += "search_result.html";
}
- }
- window.open(url, '_blank');
+ url += '?search='+searchBoxEl.value+'&id='+ topologyId +'&count=1';
+ if(searchArchivedLogsEl.checked == true){
+ if(deepSearchEl.checked == true){
+ url += "&search-archived=on";
+ }else{
+ url += "&searchArchived=checked";
+ }
+ }
+ window.open(url, '_blank');
- searchBoxEl.value = '';
- searchArchivedLogsEl.checked = false;
- deepSearchEl.checked = false;
+ searchBoxEl.value = '';
+ searchArchivedLogsEl.checked = false;
+ deepSearchEl.checked = false;
+ });
},
- });
+ });
});