Split UI endpoints into multiple resources. + Corrected the allocator object and injecting the client.
Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/359eccb3 Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/359eccb3 Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/359eccb3 Branch: refs/heads/master Commit: 359eccb328171436d25da181946024410cdc4afc Parents: ab9b2fe Author: Sudheesh Katkam <[email protected]> Authored: Mon Jun 9 11:32:58 2014 -0700 Committer: Jacques Nadeau <[email protected]> Committed: Tue Jun 10 18:59:40 2014 -0700 ---------------------------------------------------------------------- .../drill/exec/server/rest/DrillRestServer.java | 11 +++- .../drill/exec/server/rest/DrillRoot.java | 10 ---- .../exec/server/rest/MetricsResources.java | 24 ++++++++ .../exec/server/rest/ProfileResources.java | 17 ++++++ .../drill/exec/server/rest/QueryResources.java | 59 +++++++++++--------- .../drill/exec/server/rest/StatusResources.java | 38 +++++++++++++ .../src/main/resources/rest/generic.ftl | 2 +- .../java-exec/src/main/resources/rest/index.ftl | 4 -- .../src/main/resources/rest/profile/list.ftl | 6 +- .../src/main/resources/rest/profile/profile.ftl | 10 +--- .../src/main/resources/rest/query/list.ftl | 23 ++++++++ .../src/main/resources/rest/query/query.ftl | 4 -- .../src/main/resources/rest/query/result.ftl | 8 +-- .../src/main/resources/rest/status.ftl | 4 -- 14 files changed, 152 insertions(+), 68 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/359eccb3/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/DrillRestServer.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/DrillRestServer.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/DrillRestServer.java index 2a94e1c..c3c7b04 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/DrillRestServer.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/DrillRestServer.java @@ -17,7 +17,10 @@ */ package org.apache.drill.exec.server.rest; +import org.apache.drill.common.config.DrillConfig; import org.apache.drill.exec.client.DrillClient; +import org.apache.drill.exec.coord.ClusterCoordinator; +import org.apache.drill.exec.memory.BufferAllocator; import org.apache.drill.exec.store.StoragePluginRegistry; import org.apache.drill.exec.store.sys.PStoreProvider; import org.apache.drill.exec.work.WorkManager; @@ -39,6 +42,7 @@ public class DrillRestServer extends ResourceConfig { public DrillRestServer(final WorkManager workManager) { register(DrillRoot.class); + register(StatusResources.class); register(StorageResources.class); register(ProfileResources.class); register(QueryResources.class); @@ -60,7 +64,10 @@ public class DrillRestServer extends ResourceConfig { register(provider); } - + final DrillConfig config = workManager.getContext().getConfig(); + final BufferAllocator allocator = workManager.getContext().getAllocator(); + final ClusterCoordinator coordinator = workManager.getContext().getClusterCoordinator(); + final DrillClient client = new DrillClient(config, coordinator, allocator); register(new AbstractBinder() { @Override protected void configure() { @@ -68,7 +75,7 @@ public class DrillRestServer extends ResourceConfig { bind(workManager.getContext().getConfig().getMapper()).to(ObjectMapper.class); bind(workManager.getContext().getPersistentStoreProvider()).to(PStoreProvider.class); bind(workManager.getContext().getStorage()).to(StoragePluginRegistry.class); - bind(new DrillClient()).to(DrillClient.class); + bind(client).to(DrillClient.class); } }); } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/359eccb3/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/DrillRoot.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/DrillRoot.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/DrillRoot.java index b1cb18b..c2fabcb 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/DrillRoot.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/DrillRoot.java @@ -21,7 +21,6 @@ import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; - import org.glassfish.jersey.server.mvc.Viewable; @Path("/") @@ -35,13 +34,4 @@ public class DrillRoot { return new Viewable("/rest/index.ftl", status); } - @GET - @Path("/status") - @Produces(MediaType.TEXT_HTML) - public Viewable getStatus() { - String status = "Running!"; - return new Viewable("/rest/status.ftl", status); - } - - } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/359eccb3/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/MetricsResources.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/MetricsResources.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/MetricsResources.java new file mode 100644 index 0000000..f7b6b7f --- /dev/null +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/MetricsResources.java @@ -0,0 +1,24 @@ +/** + * 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.drill.exec.server.rest; + +import javax.ws.rs.Path; + +@Path("/metrics") +public class MetricsResources { +} http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/359eccb3/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/ProfileResources.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/ProfileResources.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/ProfileResources.java index d66cdbc..386db46 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/ProfileResources.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/ProfileResources.java @@ -1,3 +1,20 @@ +/** + * 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.drill.exec.server.rest; import java.io.IOException; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/359eccb3/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/QueryResources.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/QueryResources.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/QueryResources.java index 84fc581..f444a02 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/QueryResources.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/QueryResources.java @@ -1,3 +1,20 @@ +/** + * 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.drill.exec.server.rest; import java.util.LinkedList; @@ -33,6 +50,8 @@ public class QueryResources { @Inject WorkManager work; + @Inject + DrillClient client; @GET @Produces(MediaType.TEXT_HTML) @@ -43,31 +62,21 @@ public class QueryResources { @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces(MediaType.TEXT_HTML) - public Viewable submitQuery(@FormParam("query") String query, @FormParam("queryType") String queryType) - throws Exception { - try (DrillClient client = new DrillClient(work.getContext().getConfig(), work.getContext().getClusterCoordinator())) { - - client.connect(); - - UserBitShared.QueryType type = UserBitShared.QueryType.SQL; - switch (queryType) { - case "SQL": - type = UserBitShared.QueryType.SQL; - break; - case "LOGICAL": - type = UserBitShared.QueryType.LOGICAL; - break; - case "PHYSICAL": - type = UserBitShared.QueryType.PHYSICAL; - break; - } + public Viewable submitQuery(@FormParam("query") String query, @FormParam("queryType") String queryType) throws Exception { + UserBitShared.QueryType type = UserBitShared.QueryType.SQL; + switch (queryType){ + case "SQL" : type = UserBitShared.QueryType.SQL; break; + case "LOGICAL" : type = UserBitShared.QueryType.LOGICAL; break; + case "PHYSICAL" : type = UserBitShared.QueryType.PHYSICAL; break; + } - Listener listener = new Listener(new RecordBatchLoader(work.getContext().getAllocator())); - client.runQuery(type, query, listener); - List<LinkedList<String>> result = listener.waitForCompletion(); + client.connect(); + Listener listener = new Listener(new RecordBatchLoader(work.getContext().getAllocator())); + client.runQuery(type, query, listener); + List<LinkedList<String>> result = listener.waitForCompletion(); + client.close(); - return new Viewable("/rest/query/result.ftl", result); - } + return new Viewable("/rest/query/result.ftl", result); } private static class Listener implements UserResultsListener { @@ -122,9 +131,9 @@ public class QueryResources { public List<LinkedList<String>> waitForCompletion() throws Exception { latch.await(); - if (exception != null) + if (exception != null) { throw exception; - System.out.println(); + } return output; } } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/359eccb3/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StatusResources.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StatusResources.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StatusResources.java new file mode 100644 index 0000000..c98c8e6 --- /dev/null +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StatusResources.java @@ -0,0 +1,38 @@ +/** + * 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.drill.exec.server.rest; + +import org.glassfish.jersey.server.mvc.Viewable; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +@Path("/status") +public class StatusResources { + static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(StatusResources.class); + + @GET + @Produces(MediaType.TEXT_HTML) + public Viewable getStatus() { + String status = "Running!"; + return new Viewable("/rest/status/status.ftl", status); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/359eccb3/exec/java-exec/src/main/resources/rest/generic.ftl ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/resources/rest/generic.ftl b/exec/java-exec/src/main/resources/rest/generic.ftl index 41700d0..aad0794 100644 --- a/exec/java-exec/src/main/resources/rest/generic.ftl +++ b/exec/java-exec/src/main/resources/rest/generic.ftl @@ -53,7 +53,7 @@ </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> - <li><a href="/"><font color="red" id="statusFontColor">Status</font></a></li> + <li><a href="/status">Status</a></li> <li><a href="/query">Query</a></li> <li><a href="/profiles">Profiles</a></li> <li><a href="/storage">Storage</a></li> http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/359eccb3/exec/java-exec/src/main/resources/rest/index.ftl ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/resources/rest/index.ftl b/exec/java-exec/src/main/resources/rest/index.ftl index a6b3075..c6e4a4e 100644 --- a/exec/java-exec/src/main/resources/rest/index.ftl +++ b/exec/java-exec/src/main/resources/rest/index.ftl @@ -18,10 +18,6 @@ <div class="page-header"> </div> <p class="lead"> Read about Apache Drill <a href="http://incubator.apache.org/drill/drill_overview.html" rel="nofollow">here</a>.</p> - <script> - var elem = document.getElementById("statusFontColor"); - elem.style.color = "green"; - </script> </#macro> <@page_html/> http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/359eccb3/exec/java-exec/src/main/resources/rest/profile/list.ftl ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/resources/rest/profile/list.ftl b/exec/java-exec/src/main/resources/rest/profile/list.ftl index 613a0e9..ebd9f7a 100644 --- a/exec/java-exec/src/main/resources/rest/profile/list.ftl +++ b/exec/java-exec/src/main/resources/rest/profile/list.ftl @@ -52,7 +52,7 @@ <tr> <td>${query.getValue()}</td> <td> - <a href="/query/${query.getKey()}"> + <a href="/profile/${query.getKey()}"> <div style="height:100%;width:100%"> ${query.getKey()} </div> @@ -63,10 +63,6 @@ </tbody> </table> </div> - <script> - var elem = document.getElementById("statusFontColor"); - elem.style.color = "green"; - </script> </#macro> <@page_html/> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/359eccb3/exec/java-exec/src/main/resources/rest/profile/profile.ftl ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/resources/rest/profile/profile.ftl b/exec/java-exec/src/main/resources/rest/profile/profile.ftl index 470f7ab..d4035ae 100644 --- a/exec/java-exec/src/main/resources/rest/profile/profile.ftl +++ b/exec/java-exec/src/main/resources/rest/profile/profile.ftl @@ -45,21 +45,17 @@ <button type="submit" class="btn btn-default">Re-run query</button> </form> <div class="page-header"> - <h2>Physical plan</h2> + <h2>Physical Plan</h2> </div> <div class="well"> - <p><font face="courier">${model.plan}</font></p> + <p><pre>${model.plan}</pre></p> </div> <div class="page-header"> <h2>Complete Profile</h2> </div> <div class="well"> - <p><font face="courier">${model.toString()}</font></p> + <p><pre>${model.toString()}</pre></p> </div> - <script> - var elem = document.getElementById("statusFontColor"); - elem.style.color = "green"; - </script> </#macro> <@page_html/> http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/359eccb3/exec/java-exec/src/main/resources/rest/query/list.ftl ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/resources/rest/query/list.ftl b/exec/java-exec/src/main/resources/rest/query/list.ftl new file mode 100644 index 0000000..9b64d18 --- /dev/null +++ b/exec/java-exec/src/main/resources/rest/query/list.ftl @@ -0,0 +1,23 @@ +<#-- 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. --> + +<#include "*/generic.ftl"> +<#macro page_head> +</#macro> + +<#macro page_body> + <a href="/queries">back</a><br/> + <div class="page-header"> + </div> + <h3>Under Construction.</h3> +</#macro> + +<@page_html/> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/359eccb3/exec/java-exec/src/main/resources/rest/query/query.ftl ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/resources/rest/query/query.ftl b/exec/java-exec/src/main/resources/rest/query/query.ftl index a92696b..32e18de 100644 --- a/exec/java-exec/src/main/resources/rest/query/query.ftl +++ b/exec/java-exec/src/main/resources/rest/query/query.ftl @@ -45,10 +45,6 @@ </div> <button type="submit" class="btn btn-default">Submit</button> </form> - <script> - var elem = document.getElementById("statusFontColor"); - elem.style.color = "green"; - </script> </#macro> <@page_html/> http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/359eccb3/exec/java-exec/src/main/resources/rest/query/result.ftl ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/resources/rest/query/result.ftl b/exec/java-exec/src/main/resources/rest/query/result.ftl index a44be9c..e608650 100644 --- a/exec/java-exec/src/main/resources/rest/query/result.ftl +++ b/exec/java-exec/src/main/resources/rest/query/result.ftl @@ -16,25 +16,21 @@ <#macro page_body> <a href="/queries">back</a><br/> <div class="page-header"> - <h2>Result</h2> </div> + <h2>Result</h2> <div class="table-responsive"> <table class="table"> <tbody> <#list model as rows> <tr> <#list rows as row> - <td>${row}</td> + <td style="border:none;"><pre>${row}</pre></td> </#list> </tr> </#list> </tbody> </table> </div> - <!-- <script> - var elem = document.getElementById("statusFontColor"); - elem.style.color = "green"; - </script> --> </#macro> <@page_html/> http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/359eccb3/exec/java-exec/src/main/resources/rest/status.ftl ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/resources/rest/status.ftl b/exec/java-exec/src/main/resources/rest/status.ftl index 1d4e3d3..bda01ec 100644 --- a/exec/java-exec/src/main/resources/rest/status.ftl +++ b/exec/java-exec/src/main/resources/rest/status.ftl @@ -20,10 +20,6 @@ <strong>${model}</strong> </div> </div> - <script> - var elem = document.getElementById("statusFontColor"); - elem.style.color = "green"; - </script> </#macro> <@page_html/>
